LandsatCalibrationPilot.sml

  Download

More scripts: Advanced

Syntax Highlighing:

comments, key words, predefined symbols, class members & methods, functions & classes
            
##################################################################################################################
# DiskFile    : LandsatCalibrationPilot.sml
# Programmer  : Ralf Koller
# Created     : 09.10.2003
# Revisions   : 1.0 rc2
# Coming next : 1)  Slimming the code when the feature passing arrays to functions is implented by microimages
#               2)  A refined master selection routine... So far the routine is vulnerable to clouds in scene
#                   according to them the spread could be stilted...
#               3)  The possibility to choose the number of input scenes
#               4)  Adding the possibilty to select between (D)ark (O)bject (S)ubstraction 1-3
#               5)  The possibility to write the console output directly into a textfile
#               6)  If a under number of PIFs was found, the possibility to reenter their number via a pop-up
#               7)  The Implementation of a calibration routine for Landsat TM 4 sensors
#               8)  So far only congruent scenes get calibrated, but a future aim is to implent the BRDF correction
#                   so that it will be possible to normalize each part of a mosaiced scene too. Additionaly a auto-
#                   selection between PIF (for congruent) and BRDF (for mosaiced scenes) routines will be also pro-
#                   vided and if necessary the user will be able to select how many steps to perform. So it will be
#                   also possible to perform only the radiance raster computation or only a reflectance raster 
#                   output
#               9)  To pipeline all the routines into a externe c programm to slim and fasten up the whole compu-
#                   tation processes
#               10) The possibility to process scenes with a different cell size
#               11) To lookup the necessary calibration values directly out of the headerfiles
#
##################################################################################################################
#
# Function    : At first the script computes age adjusted radiance and atmosphere corrected (DOS 1) reflectance
#               rasters. In the next step four soil brightness index rasters are computed and the spreads are
#               compared. The scene with the widest spread becomes the master scene (In a mixed setup - MSS to-
#               gether with TM and/or ETM - only TM and ETM are able to become the new master). Now each scene
#               gets sorted and the dark and bright histogram tails which are similar to the invariant features
#               soil and water, are written to PIF masks. Only pixels which are available in all scenes or scene
#               pairs are taken into account. In the next step a user defined number of pseudo invariant features
#               is chosen randomly. Those are taken into account for the calculation of the regression coefficents,
#               correlation coefficents, the level of confidence and the standard deviation of the regression co-
#               efficients. So there is still the possibilty to rerun the regression calculation in a statistic
#               programm like SPSS or R in the case that the control values indicate a further investigation. In
#               the end the reflectance scene of the master is transfered into the output scene. Additionally the
#               slave scenes are adjusted via the regression coefficents and are also written into the userdefined
#               outputfiles. In the case MSS scenes were processed with a TM or ETM master scene only MSS band 1,
#               2 and 4 got normalized. Band 3 is just a simple not normalized reflectance band...
#
##################################################################################################################
#
# Usage       : - You have to enter 4 scenes. In the case you have less than 4 scenes just double enter one of
#                 them. If the double entered scene becomes the slave scene, everything should be ok, other-
#                 wise let me know and i'll send you a modified version of the script.
#               - All used scenes must have the same cell and image size while covering the same area
#
##################################################################################################################
#
# Credits     : Main Code Assistance - Wolfgang Riedl (Siemens A&D ATS 14 - Germany)
#               Shell Sort Algorithm - Dan Glasser (Tech Support - Microimages Inc. - Usa)
#
##################################################################################################################
##################################################################################################################
# 
# References  : Price, J.C. (1987): Calibration of Satellite Radiometers and the Comparison of Vegetation
#               Indices. In: Remote Sensing Of Environment, 21, p. 15-27
#
#               Samimi, C. (2003): Das Weidepotential im Gutu Distrikt (Zimbabwe) - M�glichkeiten und Grenzen
#               Modellierung unter Verwendung von Landsat TM-5. In: Karlsruher Schriften zur Geographie und 
#               Geo�kologie, 19
#
#               Fedosejevs, G., Teillet, P.M. (1995): On the dark target approach to atmospheric correction of
#               remotely sensed data. In: Canadian Journal of Remote Sensing, 21, 4, p. 374-387
#		     
#               Teillet, P.M., Helder, D.L., Markham, B.L., Barker, J.L., Thome, K.J., Morfitt, R., Schott, J.R., 
#               Palluconi, F.D. (2001): A Lifetime Radiometric Calibration Record for the Landsat Thematic Mapper.
#               In: Proceedings of the 23rd Canadian Symposium on Remote Sensing. Quebec.
#
#               Song, C., Woodcock, C.E., Seto, K. C., Lenney M.P., Macomber S. A. (2001): Classification and
#               Change Detection Using Landsat TM Data: When and How to Correct Atmospheric Effects?. In: Remote
#               Sensing of Environment, 75, p. 230-244
#
#               Muramatsu, K., Furumi, S., Fujiwara, N. Hayashi, A., Daigo, M., Ochiai, F. (2000): Pattern 
#               decomposition method in the albedo space for Landsat TM and MSS data analysis. In: International
#               Journal of Remote Sensing, 21, 1, p. 99-119
#
#               Schott, J.R., Salvaggio, C., Volchok, W.J. (1988): Radiometric Scene Normalization Using Pseudo
#               Invariant Features. In: Remote Sensing Of Environment, 26, p. 1-16
#
#
#               ETM zones see: 
#               http://ltpwww.gsfc.nasa.gov/IAS/handbook/handbook_htmls/chapter6/chapter6.html#section6.4.2
#
##################################################################################################################
##################################################################################################################
#
# DISCLAIMER  : The usage of the script is for free but a commercial adoption isn't permitted. Please be so kind
#               to contact me and inform me if you have used or are using the script. Suggestions for optimization
#               purpose and submission of bug reports are also welcome. Thanks a lot... r.
#
# Contact     : Ralf Koller  ( [email protected] )
#               Student of Geography - FAU Erlangen-Nuernberg - Germany
#               Supervising: PD Dr. Cyrus Samimi
#
##################################################################################################################
$warnings 3
##############################################
######### Global Variable Declaration ########
##############################################
class XMLDOC docmain;                                               # class instance for XML text containing main dialog specification
class XMLNODE nodemain;                                             # XMLNODE for main dialog window
class GUI_DLG dlgmain;                                              # dialog class for main dialog window
class XMLDOC docs1;                                                 # class instance for XML text contain Scene 1 dialog specification
class XMLNODE nodes1;                                               # XMLNODE for Scene 1 dialog
class GUI_DLG dlgs1;	                                            # dialog class for Scene 1 dialog
class XMLDOC docs2;                                                 # class instance for XML text contain Scene 2 dialog specification
class XMLNODE nodes2;                                               # XMLNODE for Scene 2 dialog
class GUI_DLG dlgs2;	                                            # dialog class for Scene 2 dialog
class XMLDOC docs3;                                                 # class instance for XML text contain Scene 3 dialog specification
class XMLNODE nodes3;                                               # XMLNODE for Scene 3 dialog
class GUI_DLG dlgs3;	                                            # dialog class for Scene 3 dialog
class XMLDOC docs4;                                                 # class instance for XML text contain Scene 4 dialog specification
class XMLNODE nodes4;                                               # XMLNODE for Scene 4 dialog
class GUI_DLG dlgs4;	                                            # dialog class for Scene 4 dialog
class DATETIME s1yyyymmdd;
class DATETIME s2yyyymmdd;
class DATETIME s3yyyymmdd;
class DATETIME s4yyyymmdd;
array accumulate[12];                                               # Norm Year Value Array
array accumulateLY[12];                                             # Leap Year Value Array
numeric ESMSS11, ESMSS12, ESMSS13, ESMSS14;
numeric ESMSS41, ESMSS42, ESMSS43, ESMSS44;
numeric ESMSS51, ESMSS52, ESMSS53, ESMSS54;
numeric ESTM1, ESTM2, ESTM3, ESTM4, ESTM5, ESTM7; 
numeric ESETM1, ESETM2, ESETM3, ESETM4, ESETM5, ESETM7;
numeric QCALMAX, QCALMIN;
numeric B1LGLMINBef2000, B2LGLMINBef2000, B3LGLMINBef2000, B4LGLMINBef2000, B5LGLMINBef2000, B7LGLMINBef2000;
numeric B1LGLMAXBef2000, B2LGLMAXBef2000, B3LGLMAXBef2000, B4LGLMAXBef2000, B5LGLMAXBef2000, B7LGLMAXBef2000;
numeric B1HGLMINBef2000, B2HGLMINBef2000, B3HGLMINBef2000, B4HGLMINBef2000, B5HGLMINBef2000, B7HGLMINBef2000;
numeric B1HGLMAXBef2000, B2HGLMAXBef2000, B3HGLMAXBef2000, B4HGLMAXBef2000, B5HGLMAXBef2000, B7HGLMAXBef2000;
numeric B1LGLMINAFT2000, B2LGLMINAFT2000, B3LGLMINAFT2000, B4LGLMINAFT2000, B5LGLMINAFT2000, B7LGLMINAFT2000;
numeric B1LGLMAXAFT2000, B2LGLMAXAFT2000, B3LGLMAXAFT2000, B4LGLMAXAFT2000, B5LGLMAXAFT2000, B7LGLMAXAFT2000;
numeric B1HGLMINAFT2000, B2HGLMINAFT2000, B3HGLMINAFT2000, B4HGLMINAFT2000, B5HGLMINAFT2000, B7HGLMINAFT2000;
numeric B1HGLMAXAFT2000, B2HGLMAXAFT2000, B3HGLMAXAFT2000, B4HGLMAXAFT2000, B5HGLMAXAFT2000, B7HGLMAXAFT2000;
numeric L1B1gain, L1B2gain, L1B3gain, L1B4gain;
numeric L1B1bias; 
numeric L2B1bef75gain, L2B2bef75gain, L2B3bef75gain, L2B4bef75gain;
numeric L2B1bef75bias, L2B2bef75bias, L2B3bef75bias, L2B4bef75bias;
numeric L2B1aft75gain, L2B2aft75gain, L2B3aft75gain, L2B4aft75gain;
numeric L2B1aft75bias, L2B2aft75bias, L2B3aft75bias, L2B4aft75bias;
numeric L2B1aft79gain, L2B2aft79gain, L2B3aft79gain, L2B4aft79gain;
numeric L2B1aft79bias, L2B2aft79bias, L2B3aft79bias, L2B4aft79bias;
numeric L3B1bef78gain, L3B2bef78gain, L3B3bef78gain, L3B4bef78gain;
numeric L3B1bef78bias, L3B2bef78bias, L3B3bef78bias, L3B4bef78bias;
numeric L3B17879gain, L3B27879gain, L3B37879gain, L3B47879gain;
numeric L3B17879bias, L3B27879bias, L3B37879bias, L3B47879bias;
numeric L3B1aft79gain, L3B2aft79gain, L3B3aft79gain, L3B4aft79gain;
numeric L3B1aft79bias, L3B2aft79bias, L3B3aft79bias, L3B4aft79bias;
numeric L4B1bef83gain, L4B2bef83gain, L4B3bef83gain, L4B4bef83gain;
numeric L4B1bef83bias, L4B2bef83bias, L4B3bef83bias, L4B4bef83bias;
numeric L4B1aft83gain, L4B2aft83gain, L4B3aft83gain, L4B4aft83gain;
numeric L4B1aft83bias, L4B2aft83bias, L4B3aft83bias, L4B4aft83bias;
numeric L5B1bef84gain, L5B2bef84gain, L5B3bef84gain, L5B4bef84gain;
numeric L5B1bef84bias, L5B2bef84bias, L5B3bef84bias, L5B4bef84bias;
numeric L5B1aft84gain, L5B2aft84gain, L5B3aft84gain, L5B4aft84gain;
numeric L5B1aft84bias, L5B2aft84bias, L5B3aft84bias, L5B4aft84bias;
numeric biasnewTMb1, biasnewTMb2, biasnewTMb3, biasnewTMb4, biasnewTMb5, biasnewTMb7;
numeric i, j, m, n, o;
numeric ETMlins, ETMcols, TMlins, TMcols, MSSlins, MSScols;                                 # number of lines and columns in input raster set
numeric Scene1Lin, Scene2Lin, Scene3Lin, Scene4Lin;                                         # vertical size of a input raster cell
numeric Scene1Col, Scene2Col, Scene3Col, Scene4Col;                                         # horizontal size of a input raster cell
numeric sensors1, sensors2, sensors3, sensors4;				                    # sensor identification number (Differencing TM and 5 MSS sensor models)
string xmlmain$, xmls1$, xmls2$, xmls3$, xmls4$;                                            # string IDs for main and parameter windows
numeric err, err1, err2, err3, err4;						            # error numeric variables
numeric ret, ret1, ret2, ret3, ret4;						            # return numeric variables
numeric createMETA;
numeric earSurCat1, earSurCat2, earSurCat3, earSurCat4;		                            # Earth Surface Categories Identification numers
numeric s1aq, s2aq, s3aq, s4aq;                             	                            # numeric input for Aquisition Date of the scene
numeric s1ele, s2ele, s3ele, s4ele;   				                            # numeric input for sun elevation
numeric s1zenith, s2zenith, s3zenith, s4zenith;                                             # sun zenith
numeric s1zenithSIMPLE, s2zenithSIMPLE, s3zenithSIMPLE, s4zenithSIMPLE;
numeric s1leap, s2leap, s3leap, s4leap;
numeric s1jul, s2jul, s3jul, s4jul;                                                         # Julian date
numeric s1year, s2year, s3year, s4year;                                                     # Year number extracted from sxaqui
numeric s1month, s2month, s3month, s4month;                                                 # Month number extracted from sxaqui
numeric s1day, s2day, s3day, s4day;                                                         # Day number extracted from sxaqui
numeric dist1, dist2, dist3, dist4;                                                         # Earth Sundistance
numeric pifDarkVAL, pifBrightVAL, minPifVAL, histoTailInputVAL;                             # numeric input for PIF normalization
numeric sbi1min, sbi1max, sbi1mean, sbi1sd;                    			                    # numeric values for SBI 1 raster statistics
numeric sbi2min, sbi2max, sbi2mean, sbi2sd;                    			                    # numeric values for SBI 2 raster statistics
numeric sbi3min, sbi3max, sbi3mean, sbi3sd;                      			                # numeric values for SBI 3 raster statistics
numeric sbi4min, sbi4max, sbi4mean, sbi4sd;                         		                # numeric values for SBI 4 raster statistics
numeric sbi1spread, sbi2spread, sbi3spread, sbi4spread;				                        # sbi max min differences
numeric slaveMaster = 0; 						                                         	# Master 1=scene1 2=scene2 3=scene3 4=scene4
		                               
##############################################
######### Global Constant Declaration ########
##############################################
accumulate[1] = 0;                                                                          # Norm Year Values
accumulate[2] = 31;
accumulate[3] = 59;
accumulate[4] = 90;
accumulate[5] = 120;
accumulate[6] = 151;
accumulate[7] = 181;
accumulate[8] = 212;
accumulate[9] = 243;
accumulate[10] = 273;
accumulate[11] = 304;
accumulate[12] = 334;
accumulateLY[1] = 0;                                                                        # Leap Year Values
accumulateLY[2] = 31;
accumulateLY[3] = 60;
accumulateLY[4] = 91;
accumulateLY[5] = 121;
accumulateLY[6] = 152;
accumulateLY[7] = 182;
accumulateLY[8] = 213;
accumulateLY[9] = 244;
accumulateLY[10] = 274;
accumulateLY[11] = 305;
accumulateLY[12] = 335;
biasnewTMb1 = 2.523;												                        #Lifetime Biases for Landsat TM5
biasnewTMb2 = 2.417;
biasnewTMb3 = 1.452;
biasnewTMb4 = 1.854;
biasnewTMb5 = 3.423;
biasnewTMb7 = 2.633;
ESMSS11 = 1844.114888;                                                                      # ES Values for Landsat MSS1, MSS2, MSS3 - Price 1988
ESMSS12 = 1573.937919;
ESMSS13 = 1288.052988;
ESMSS14 = 901.6370916;				
ESMSS41 = 1834.69011;                                                                        # ES Values for Landsat MSS4 - Price 1988
ESMSS42 = 1595.929068;
ESMSS43 = 1266.061839;
ESMSS44 = 867.0795724;
ESMSS51 = 1834.69011;                                                                        # ES Values for Landsat MSS5 - Price 1988
ESMSS52 = 1595.929068;
ESMSS53 = 1262.920247;
ESMSS54 = 863.9379797;
ESTM1 = 1959.2;                                                                             # ES Values for Landsat TM - Fedosejevs 1995
ESTM2 = 1827.4;
ESTM3 = 1550.0;
ESTM4 = 1040.8;
ESTM5 = 220.75;
ESTM7 = 74.960;
ESETM1 = 1969.000;						                                            		# ES Values for Landsat ETM - User Handbook
ESETM2 = 1840.000;
ESETM3 = 1551.000;
ESETM4 = 1044.000;
ESETM5 = 225.700;
ESETM7 = 82.07;
QCALMAX = 255;							                                                   	# Maximum digital value for Landsat ETM
QCALMIN = 1;									                                            # Minimum digital value for Landsat ETM
B1LGLMINBef2000 = -6.2;							                                            # LOW GAIN BEFORE 2000 (LMIN)
B2LGLMINBef2000 = -6.0;
B3LGLMINBef2000 = -4.5;
B4LGLMINBef2000 = -4.5;
B5LGLMINBef2000 = -1.0;
B7LGLMINBef2000 = -0.35;
B1LGLMAXBef2000 = 297.5;							                                        # LOW GAIN BEFORE 2000 (LMAX)
B2LGLMAXBef2000 = 303.4;
B3LGLMAXBef2000 = 235.5;
B4LGLMAXBef2000 = 235.0;
B5LGLMAXBef2000 = 47.7;
B7LGLMAXBef2000 = 16.6;
B1HGLMINBef2000 = -6.2;							                                            #HIGH GAIN BEFORE 2000 (LMIN)
B2HGLMINBef2000 = -6.0;
B3HGLMINBef2000 = -4.5;
B4HGLMINBef2000 = -4.5;
B5HGLMINBef2000 = -1.0;
B7HGLMINBef2000 = -0.35;
B1HGLMAXBef2000 = 194.3;							                                         #HIGH GAIN BEFORE 2000 (LMAX)
B2HGLMAXBef2000 = 202.4;
B3HGLMAXBef2000 = 158.6;
B4HGLMAXBef2000 = 157.5;
B5HGLMAXBef2000 = 31.76;
B7HGLMAXBef2000 = 10.932;
B1LGLMINAFT2000 = -6.2;							                                              #LOW GAIN AFTER 2000 (LMIN)
B2LGLMINAFT2000 = -6.4;
B3LGLMINAFT2000 = -5.0;
B4LGLMINAFT2000 = -5.1;
B5LGLMINAFT2000 = -1.0;
B7LGLMINAFT2000 = -0.35;
B1LGLMAXAFT2000 = 293.7;							                                          #LOW GAIN AFTER 2000 (LMAX)
B2LGLMAXAFT2000 = 300.9;
B3LGLMAXAFT2000 = 234.4;
B4LGLMAXAFT2000 = 241.1;
B5LGLMAXAFT2000 = 47.57;
B7LGLMAXAFT2000 = 16.54;
B1HGLMINAFT2000 = -6.2;						                                                  #HIGH GAIN AFTER 2000 (LMIN)
B2HGLMINAFT2000 = -6.4;
B3HGLMINAFT2000 = -5.0;
B4HGLMINAFT2000 = -5.1;
B5HGLMINAFT2000 = -1.0;
B7HGLMINAFT2000 = -0.35;
B1HGLMAXAFT2000 = 191.6;							                                          #HIGH GAIN AFTER 2000 (LMAX)
B2HGLMAXAFT2000 = 196.5;
B3HGLMAXAFT2000 = 152.9;
B4HGLMAXAFT2000 = 157.4;
B5HGLMAXAFT2000 = 31.06;
B7HGLMAXAFT2000 = 10.80;
L1B1gain = 1.95;  	                                                                          # Landsat1 Gain and bias calibration constants
L1B2gain = 1.57;	 
L1B3gain = 1.39;  
L1B4gain = 2.43;	 
L1B1bias = 0.0;
L2B1bef75gain = 1.57;                                                                         # Landsat2 Gain and bias calibration constants before 16.Juli7
L2B2bef75gain = 1.17;
L2B3bef75gain = 1.05;
L2B4bef75gain = 2.12;
L2B1bef75bias = 10;
L2B2bef75bias = 7;
L2B3bef75bias = 7;
L2B4bef75bias = 5;
L2B1aft75gain = 2.01;                                                                        # Landsat2 Gain and bias calibration constants after 16.Juli75
L2B2aft75gain = 1.34;
L2B3aft75gain = 1.15;
L2B4aft75gain = 2.01;
L2B1aft75bias = 8;
L2B2aft75bias = 6;
L2B3aft75bias = 6;
L2B4aft75bias = 4;
L2B1aft79gain = 2.01;                                                                        # Landsat2 Gain and bias calibration constants after 1.Feb79
L2B2aft79gain = 1.34;
L2B3aft79gain = 1.15;
L2B4aft79gain = 1.01;
L2B1aft79bias = 8;
L2B2aft79bias = 6;
L2B3aft79bias = 6;
L2B4aft79bias = 4;
L3B1bef78gain = 1.70;                                                                         # Landsat3 Gain and bias calibration constants Before1Jun78
L3B2bef78gain = 1.35;
L3B3bef78gain = 1.12;
L3B4bef78gain = 2.32;
L3B1bef78bias = 4;
L3B2bef78bias = 3;
L3B3bef78bias = 3;
L3B4bef78bias = 1;
L3B17879gain = 2.01;                                                                        # Landsat3 Gain and bias calibration constants 2Jun78 to 1Feb7
L3B27879gain = 1.39;
L3B37879gain = 1.15;
L3B47879gain = 2.02;
L3B17879bias = 4;
L3B27879bias = 3;
L3B37879bias = 3;
L3B47879bias = 1;
L3B1aft79gain = 2.01;                                                                       # Landsat3 Gain and bias calibration constants after 1.Feb79
L3B2aft79gain = 1.39;
L3B3aft79gain = 1.15;
L3B4aft79gain = 1.00;
L3B1aft79bias = 4;
L3B2aft79bias = 3;
L3B3aft79bias = 3;
L3B4aft79bias = 1;
L4B1bef83gain = 1.80;	                                                                  # Landsat4 Gain and bias calibration constants Before 1april83
L4B2bef83gain = 1.39;
L4B3bef83gain = 0.99;
L4B4bef83gain = 1.02;
L4B1bef83bias = 2;
L4B2bef83bias = 4;
L4B3bef83bias = 4;
L4B4bef83bias = 3;
L4B1aft83gain = 1.84;                                                                        # Landsat4 Gain and bias calibration constants after 1 april83
L4B2aft83gain = 1.26;
L4B3aft83gain = 1.08;
L4B4aft83gain = 0.88;
L4B1aft83bias = 4;
L4B2aft83bias = 4;
L4B3aft83bias = 5;
L4B4aft83bias = 4;
L5B1bef84gain = 2.08;	                                                                       # Landsat5 Gain and bias calibration constants before 9 Nov 84
L5B2bef84gain = 1.39;
L5B3bef84gain = 1.22;
L5B4bef84gain = 0.94;
L5B1bef84bias = 3;
L5B2bef84bias = 3;
L5B3bef84bias = 4;
L5B4bef84bias = 4;
L5B1aft84gain = 2.08;                                                                           # Landsat5 Gain and bias calibration constants after 9 Nov 84
L5B2aft84gain = 1.39;
L5B3aft84gain = 1.13;
L5B4aft84gain = 0.94;
L5B1aft84bias = 3;
L5B2aft84bias = 3;
L5B3aft84bias = 5;
L5B4aft84bias = 4;
#####################################################################
#####################################################################
################  Procedure Definitions  ############################ 
#####################################################################
#####################################################################
#####################################
### Callback procedure to initally disable OK-
### button on main dialog window when it opens
#####################################
proc OnOpenMain () {
	dlgmain.SetOkEnabled( 0 );
	}
##################################
### Procedure to select SZENE 1
##################################
proc SELECTS1 () 
{
	sensors1 = dlgmain.GetCtrlByID( "comps1" ).GetValueNum();
	if ( sensors1 == 7 )
	{
		raster ETM1BAND1, ETM1BAND2, ETM1BAND3, ETM1BAND4, ETM1BAND5, ETM1BAND7;  		# szene 1 ETM input bands
		GetInputRasters(ETM1BAND1, ETM1BAND2, ETM1BAND3, ETM1BAND4, ETM1BAND5, ETM1BAND7);
		ETMlins = NumLins(ETM1BAND1);
		ETMcols = NumCols(ETM1BAND1);
		Scene1Lin = LinScale(ETM1BAND1);
		Scene1Col = ColScale(ETM1BAND1);
	}
	else if ( sensors1 == 6 )
	{
		raster TM1BAND1, TM1BAND2, TM1BAND3, TM1BAND4, TM1BAND5, TM1BAND7; 	  		# szene 1 TM input bands
		GetInputRasters(TM1BAND1, TM1BAND2, TM1BAND3, TM1BAND4, TM1BAND5, TM1BAND7);
		TMlins = NumLins(TM1BAND1);
		TMcols = NumCols(TM1BAND1);
		Scene1Lin = LinScale(TM1BAND1);
		Scene1Col = ColScale(TM1BAND1);
	}
	else
	{
		raster MSS1BAND1, MSS1BAND2, MSS1BAND3, MSS1BAND4;                 	  		# szene 1 MSS input bands
		GetInputRasters(MSS1BAND1, MSS1BAND2, MSS1BAND3, MSS1BAND4);
		MSSlins = NumLins(MSS1BAND1);
		MSScols = NumCols(MSS1BAND1);
		Scene1Lin = LinScale(MSS1BAND1);
		Scene1Col = ColScale(MSS1BAND1);
	}
}
##################################
### Procedure to select SZENE 2
##################################
proc SELECTS2 () 
{
    sensors2 = dlgmain.GetCtrlByID( "comps2" ).GetValueNum();
    if ( sensors2 == 7 )
    {
	   raster ETM2BAND1, ETM2BAND2, ETM2BAND3, ETM2BAND4, ETM2BAND5, ETM2BAND7;  		# szene 2 ETM input bands
	   GetInputRasters(ETM2BAND1, ETM2BAND2, ETM2BAND3, ETM2BAND4, ETM2BAND5, ETM2BAND7);
           Scene2Lin = LinScale(ETM2BAND1);
	   Scene2Col = ColScale(ETM2BAND1);
           if ( ETMlins == 0 )
	   {
            ETMlins = NumLins(ETM2BAND1);
            ETMcols = NumCols(ETM2BAND1);
	   }
    }
    else if ( sensors2 == 6 )
    {
	   raster TM2BAND1, TM2BAND2, TM2BAND3, TM2BAND4, TM2BAND5, TM2BAND7; 	  		# szene 2 TM input bands
	   GetInputRasters(TM2BAND1, TM2BAND2, TM2BAND3, TM2BAND4, TM2BAND5, TM2BAND7);
	   Scene2Lin = LinScale(TM2BAND1);
	   Scene2Col = ColScale(TM2BAND1);
	   if (TMlins == 0)
	   {
	    TMlins = NumLins(TM2BAND1);
	    TMcols = NumCols(TM2BAND1);
	   }
    }
    else
    {
	   raster MSS2BAND1, MSS2BAND2, MSS2BAND3, MSS2BAND4;                 	  		# szene 2 MSS input bands
	   GetInputRasters(MSS2BAND1, MSS2BAND2, MSS2BAND3, MSS2BAND4);
	   Scene2Lin = LinScale(MSS2BAND1);
	   Scene2Col = ColScale(MSS2BAND1);
	   if ( MSSlins == 0 )
	   {
	    MSSlins = NumLins(MSS2BAND1);
	    MSScols = NumCols(MSS2BAND1);
	   }
	}
}
##################################
### Procedure to select SZENE 3
##################################
proc SELECTS3 () 
{
	sensors3 = dlgmain.GetCtrlByID( "comps3" ).GetValueNum();
       if (sensors3 == 7)
       {
           raster ETM3BAND1, ETM3BAND2, ETM3BAND3, ETM3BAND4, ETM3BAND5, ETM3BAND7;  		# szene 3 ETM input bands
	   GetInputRasters(ETM3BAND1, ETM3BAND2, ETM3BAND3, ETM3BAND4, ETM3BAND5, ETM3BAND7);
           Scene3Lin = LinScale(ETM3BAND1);
	   Scene3Col = ColScale(ETM3BAND1);
	   if (ETMlins == 0)
	   {
	     ETMlins = NumLins(ETM3BAND1);
             ETMcols = NumCols(ETM3BAND1);
	   }
       }
       
       else if ( sensors3 == 6 )
       {
           raster TM3BAND1, TM3BAND2, TM3BAND3, TM3BAND4, TM3BAND5, TM3BAND7; 	  		# szene 3 TM input bands
	   GetInputRasters(TM3BAND1, TM3BAND2, TM3BAND3, TM3BAND4, TM3BAND5, TM3BAND7);
	   Scene3Lin = LinScale(TM3BAND1);
	   Scene3Col = ColScale(TM3BAND1);
	   if (TMlins == 0)
	   {
	     TMlins = NumLins(TM3BAND1);
	     TMcols = NumCols(TM3BAND1);
	   }
	}
	
	else
	{
	   raster MSS3BAND1, MSS3BAND2, MSS3BAND3, MSS3BAND4;                 	  		# szene 3 MSS input bands
	   GetInputRasters(MSS3BAND1, MSS3BAND2, MSS3BAND3, MSS3BAND4);
	   Scene3Lin = LinScale(MSS3BAND1);
	   Scene3Col = ColScale(MSS3BAND1);
	   if (MSSlins == 0)
	   {
	     MSSlins = NumLins(MSS3BAND1);
	     MSScols = NumCols(MSS3BAND1);
	   }
	}
}
##################################
### Procedure to select SZENE 4
##################################
proc SELECTS4 () 
{
	sensors4 = dlgmain.GetCtrlByID( "comps4" ).GetValueNum();
	if ( sensors4 == 7 )
    	{
	   raster ETM4BAND1, ETM4BAND2, ETM4BAND3, ETM4BAND4, ETM4BAND5, ETM4BAND7;  		# szene 4 ETM input bands
	   GetInputRasters(ETM4BAND1, ETM4BAND2, ETM4BAND3, ETM4BAND4, ETM4BAND5, ETM4BAND7);
           Scene4Lin = LinScale(ETM4BAND1);
	   Scene4Col = ColScale(ETM4BAND1);
	   if ( ETMlins == 0 )
	   {
	     ETMlins = NumLins(ETM4BAND1);
             ETMcols = NumCols(ETM4BAND1);
	   }
	}
	else if ( sensors4 == 6 )
	{
	   raster TM4BAND1, TM4BAND2, TM4BAND3, TM4BAND4, TM4BAND5, TM4BAND7; 	  		# szene 4 TM input bands
	   GetInputRasters(TM4BAND1, TM4BAND2, TM4BAND3, TM4BAND4, TM4BAND5, TM4BAND7);
	   Scene4Lin = LinScale(TM4BAND1);
	   Scene4Col = ColScale(TM4BAND1);
	   if ( TMlins == 0 )
	   {
	     TMlins = NumLins(TM4BAND1);
	     TMcols = NumCols(TM4BAND1);
	   }
	}
	else
	{
	   raster MSS4BAND1, MSS4BAND2, MSS4BAND3, MSS4BAND4;                 	  		# szene 4 MSS input bands
	   GetInputRasters(MSS4BAND1, MSS4BAND2, MSS4BAND3, MSS4BAND4);
           Scene4Lin = LinScale(MSS4BAND1);
	   Scene4Col = ColScale(MSS4BAND1);
	   if ( MSSlins == 0 )
	   {
	     MSSlins = NumLins(MSS4BAND1);
	     MSScols = NumCols(MSS4BAND1);
	   }
	}
}
###################################################################################################
###### Procedure to prompt for values for SZENE 1
###################################################################################################
proc SPECS1 () {
if ( sensors1 == 7 )
{
	xmls1$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs1" title = "Scene 1" >
		      <groupbox Name = " Parameters Landsat ETM-7: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s1aqui" Width ="17" HorizResize = "fixed" Default="19990415" Precision="0" MinVal="19990415"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s1elevation" Width ="17" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
				<pane Orientation = "Horizontal">
				<combobox id = "esc1" Width = "14" HorizResize = "Fixed" Default = "4" HorizAlign = "Right">
					<item Value="8">Desert(hs)</item>                              #hs = high sun ms=mid sun ls=low sun
					<item Value="7">Desert(ms)</item>
					<item Value="6">Desert Ice(ls)</item>
					<item Value="5">Ice(hs)</item>
					<item Value="4">Land(hs)</item>
					<item Value="3">Land Ocean(ls)</item>
					<item Value="2">Water</item>
					<item Value="1">Night(volcanos)</item>
				</combobox>
				<label> : Earth Surface Categories</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err1 = docs1.Parse(xmls1$);
	if ( err1 < 0 ) {
		PopupError( err1 );
		Exit( );
		}
	nodes1 = docs1.GetElementByID( "dlgs1" );
	if ( nodes1 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs1.SetXMLNode( nodes1 );
	ret1 = dlgs1.DoModal();
	if (ret1 == -1)
	{
		Exit();
	}
	
	earSurCat1 = dlgs1.GetCtrlByID( "esc1" ).GetValueNum();
	s1aq = dlgs1.GetCtrlByID("s1aqui").GetValueNum();
	s1ele = dlgs1.GetCtrlByID("s1elevation").GetValueNum();	
}
else if ( sensors1 == 6 ) 
{
	xmls1$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs1" title = "Scene 1" >
			<groupbox Name = " Parameters Landsat TM-5: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s1aqui" Width ="12" HorizResize = "fixed" Default="19840301" Precision="0" MinVal="19840301"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s1elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
			<groupbox Name = " Gain Headervalues: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="ss1TMg1" Width ="12" HorizResize = "fixed" Default="0.6024314" Precision="7" MinVal="-100"/>
					<label> : Band 1 (W/m^2sr�m)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss1TMg2" Width ="12" HorizResize = "fixed" Default="1.1750981" Precision="7" MinVal="-100"/>
					<label> : Band 2</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss1TMg3" Width ="12" HorizResize = "fixed" Default="0.8057647" Precision="7" MinVal="-100"/>
					<label> : Band 3</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss1TMg4" Width ="12" HorizResize = "fixed" Default="0.8145490" Precision="7" MinVal="-100"/>
					<label> : Band 4</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss1TMg5" Width ="12" HorizResize = "fixed" Default="0.1080784" Precision="7" MinVal="-100"/>
					<label> : Band 5</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss1TMg7" Width ="12" HorizResize = "fixed" Default="0.0569804" Precision="7" MinVal="-100"/>
					<label> : Band 7</label>
				</pane>
			</groupbox>
			<groupbox Name = " Bias Headervalues: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="ss1TMb1" Width ="12" HorizResize = "fixed" Default="-1.5200000" Precision="7" MinVal="-100"/>
					<label> : Band 1 (W/m^2sr�m)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss1TMb2" Width ="12" HorizResize = "fixed" Default="-2.8399999" Precision="7" MinVal="-100"/>
					<label> : Band 2</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss1TMb3" Width ="12" HorizResize = "fixed" Default="-1.1700000" Precision="7" MinVal="-100"/>
					<label> : Band 3</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss1TMb4" Width ="12" HorizResize = "fixed" Default="-1.5100000" Precision="7" MinVal="-100"/>
					<label> : Band 4</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss1TMb5" Width ="12" HorizResize = "fixed" Default="-0.3700000" Precision="7" MinVal="-100"/>
					<label> : Band 5</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss1TMb7" Width ="12" HorizResize = "fixed" Default="-0.1500000" Precision="7" MinVal="-100"/>
					<label> : Band 7</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err1 = docs1.Parse(xmls1$);
	if ( err1 < 0 ) {
		PopupError( err1 );	# pop up an error dialog
		Exit( );
		}
	nodes1 = docs1.GetElementByID( "dlgs1" );
	if ( nodes1 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs1.SetXMLNode( nodes1 );
	ret1 = dlgs1.DoModal();
	if (ret1 == -1)
	{
		Exit();
	}
	numeric s1TMg1, s1TMg2, s1TMg3, s1TMg4, s1TMg5, s1TMg7;
	numeric s1TMb1, s1TMb2, s1TMb3, s1TMb4, s1TMb5, s1TMb7;
	s1aq = dlgs1.GetCtrlByID("s1aqui").GetValueNum();
	s1ele = dlgs1.GetCtrlByID("s1elevation").GetValueNum();
	s1TMg1 = dlgs1.GetCtrlByID("ss1TMg1").GetValueNum();
	s1TMg2 = dlgs1.GetCtrlByID("ss1TMg2").GetValueNum();
	s1TMg3 = dlgs1.GetCtrlByID("ss1TMg3").GetValueNum();
	s1TMg4 = dlgs1.GetCtrlByID("ss1TMg4").GetValueNum();
	s1TMg5 = dlgs1.GetCtrlByID("ss1TMg5").GetValueNum();
	s1TMg7 = dlgs1.GetCtrlByID("ss1TMg7").GetValueNum();
	s1TMb1 = dlgs1.GetCtrlByID("ss1TMb1").GetValueNum();
	s1TMb2 = dlgs1.GetCtrlByID("ss1TMb2").GetValueNum();
	s1TMb3 = dlgs1.GetCtrlByID("ss1TMb3").GetValueNum();
	s1TMb4 = dlgs1.GetCtrlByID("ss1TMb4").GetValueNum();
	s1TMb5 = dlgs1.GetCtrlByID("ss1TMb5").GetValueNum();
	s1TMb7 = dlgs1.GetCtrlByID("ss1TMb7").GetValueNum();
}
else if ( sensors1 == 5 )
{
	xmls1$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs1" title = "Scene 1" >
			<groupbox Name = " Parameters Landsat MSS-5: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s1aqui" Width ="12" HorizResize = "fixed" Default="19840301" Precision="0" MinVal="19840301"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s1elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err1 = docs1.Parse(xmls1$);
	if ( err1 < 0 ) {
		PopupError( err1 );	# pop up an error dialog
		Exit( );
		}
	nodes1 = docs1.GetElementByID( "dlgs1" );
	if ( nodes1 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs1.SetXMLNode( nodes1 );
	ret1 = dlgs1.DoModal();
	if (ret1 == -1)
	{
		Exit();
	}
	s1aq = dlgs1.GetCtrlByID("s1aqui").GetValueNum();
	s1ele = dlgs1.GetCtrlByID("s1elevation").GetValueNum();
}
else if ( sensors1 == 4 )
{
	xmls1$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs1" title = "Scene 1" >
			<groupbox Name = " Parameters Landsat MSS-4: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s1aqui" Width ="12" HorizResize = "fixed" Default="19820716" Precision="0" MinVal="19820716"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s1elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err1 = docs1.Parse(xmls1$);
	if ( err1 < 0 ) {
		PopupError( err1 );
		Exit( );
		}
	nodes1 = docs1.GetElementByID( "dlgs1" );
	if ( nodes1 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs1.SetXMLNode( nodes1 );
	ret1 = dlgs1.DoModal();
	if (ret1 == -1)
	{
		Exit();
	}
	s1aq = dlgs1.GetCtrlByID("s1aqui").GetValueNum();
	s1ele = dlgs1.GetCtrlByID("s1elevation").GetValueNum();
}
else if ( sensors1 == 3 )
{
	xmls1$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs1" title = "Scene 1" >
			<groupbox Name = " Parameters Landsat MSS-3: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s1aqui" Width ="12" HorizResize = "fixed" Default="19780305" Precision="0" MinVal="19780305" MaxVal="19830331"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s1elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err1 = docs1.Parse(xmls1$);
	if ( err1 < 0 ) {
		PopupError( err1 );	# pop up an error dialog
		Exit( );
		}
	nodes1 = docs1.GetElementByID( "dlgs1" );
	if ( nodes1 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs1.SetXMLNode( nodes1 );
	ret1 = dlgs1.DoModal();
	if (ret1 == -1)
	{
		Exit();
	}
	s1aq = dlgs1.GetCtrlByID("s1aqui").GetValueNum();
	s1ele = dlgs1.GetCtrlByID("s1elevation").GetValueNum();
}
else if ( sensors1 == 2 )
{
	xmls1$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs1" title = "Scene 1" >
			<groupbox Name = " Parameters Landsat MSS-2: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s1aqui" Width ="12" HorizResize = "fixed" Default="19750122" Precision="0" MinVal="19750122" MaxVal="19820225"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s1elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err = docs1.Parse(xmls1$);
	if ( err1 < 0 ) {
		PopupError( err1 );	# pop up an error dialog
		Exit( );
		}
	nodes1 = docs1.GetElementByID( "dlgs1" );
	if ( nodes1 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs1.SetXMLNode( nodes1 );
	ret1 = dlgs1.DoModal();
	if (ret1 == -1)
	{
		Exit();
	}
	s1aq = dlgs1.GetCtrlByID("s1aqui").GetValueNum();
	s1ele = dlgs1.GetCtrlByID("s1elevation").GetValueNum();
}
else if ( sensors1 == 1 )
{
	xmls1$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs1" title = "Scene 1" >
			<groupbox Name = " Parameters Landsat MSS-1: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s1aqui" Width ="12" HorizResize = "fixed" Default="19720723" Precision="0" MinVal="19720723" MaxVal="19780106"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s1elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err1 = docs1.Parse(xmls1$);
	if ( err1 < 0 ) {
		PopupError( err1 );	# pop up an error dialog
		Exit( );
		}
	nodes1 = docs1.GetElementByID( "dlgs1" );
	if ( nodes1 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs1.SetXMLNode( nodes1 );
	ret1 = dlgs1.DoModal();
	if (ret1 == -1)
	{
		Exit();
	}
	s1aq = dlgs1.GetCtrlByID("s1aqui").GetValueNum();
	s1ele = dlgs1.GetCtrlByID("s1elevation").GetValueNum();
}
}
###################################################################################################
###### Procedure to prompt for values for SZENE 2
###################################################################################################
proc SPECS2 () {
if ( sensors2 == 7 )
{
	xmls2$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs2" title = "Scene 2" >
		      <groupbox Name = " Parameters Landsat ETM-7: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s2aqui" Width ="17" HorizResize = "fixed" Default="19990415" Precision="0" MinVal="19990415"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s2elevation" Width ="17" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
				<pane Orientation = "Horizontal">
				<combobox id = "esc2" Width = "14" HorizResize = "Fixed" Default = "4" HorizAlign = "Right">
					<item Value="8">Desert(hs)</item>                              #hs = high sun ms=mid sun ls=low sun
					<item Value="7">Desert(ms)</item>
					<item Value="6">Desert Ice(ls)</item>
					<item Value="5">Ice(hs)</item>
					<item Value="4">Land(hs)</item>
					<item Value="3">Land Ocean(ls)</item>
					<item Value="2">Water</item>
					<item Value="1">Night(volcanos)</item>
				</combobox>
				<label> : Earth Surface Categories</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err2 = docs2.Parse(xmls2$);
	if ( err2 < 0 ) {
		PopupError( err2 );
		Exit( );
		}
	nodes2 = docs2.GetElementByID( "dlgs2" );
	if ( nodes2 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs2.SetXMLNode( nodes2 );
	ret2 = dlgs2.DoModal();
	if (ret2 == -1)
	{
		Exit();
	}
	earSurCat2 = dlgs2.GetCtrlByID( "esc2" ).GetValueNum();
	s2aq = dlgs2.GetCtrlByID("s2aqui").GetValueNum();
	s2ele = dlgs2.GetCtrlByID("s2elevation").GetValueNum();
}
else if ( sensors2 == 6 ) 
{
	xmls2$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs2" title = "Scene 2" >
			<groupbox Name = " Parameters Landsat TM-5: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s2aqui" Width ="12" HorizResize = "fixed" Default="19840301" Precision="0" MinVal="19840301"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s2elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
			<groupbox Name = " Gain Headervalues: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="ss2TMg1" Width ="12" HorizResize = "fixed" Default="0.6024314" Precision="7" MinVal="-100"/>
					<label> : Band 1 (W/m^2sr�m)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss2TMg2" Width ="12" HorizResize = "fixed" Default="1.1750981" Precision="7" MinVal="-100"/>
					<label> : Band 2</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss2TMg3" Width ="12" HorizResize = "fixed" Default="0.8057647" Precision="7" MinVal="-100"/>
					<label> : Band 3</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss2TMg4" Width ="12" HorizResize = "fixed" Default="0.8145490" Precision="7" MinVal="-100"/>
					<label> : Band 4</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss2TMg5" Width ="12" HorizResize = "fixed" Default="0.1080784" Precision="7" MinVal="-100"/>
					<label> : Band 5</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss2TMg7" Width ="12" HorizResize = "fixed" Default="0.0569804" Precision="7" MinVal="-100"/>
					<label> : Band 7</label>
				</pane>
			</groupbox>
			<groupbox Name = " Bias Headervalues: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="ss2TMb1" Width ="12" HorizResize = "fixed" Default="-1.5200000" Precision="7" MinVal="-100"/>
					<label> : Band 1 (W/m^2sr�m)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss2TMb2" Width ="12" HorizResize = "fixed" Default="-2.8399999" Precision="7" MinVal="-100"/>
					<label> : Band 2</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss2TMb3" Width ="12" HorizResize = "fixed" Default="-1.1700000" Precision="7" MinVal="-100"/>
					<label> : Band 3</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss2TMb4" Width ="12" HorizResize = "fixed" Default="-1.5100000" Precision="7" MinVal="-100"/>
					<label> : Band 4</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss2TMb5" Width ="12" HorizResize = "fixed" Default="-0.3700000" Precision="7" MinVal="-100"/>
					<label> : Band 5</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss2TMb7" Width ="12" HorizResize = "fixed" Default="-0.1500000" Precision="7" MinVal="-100"/>
					<label> : Band 7</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err2 = docs2.Parse(xmls2$);
	if ( err2 < 0 ) {
		PopupError( err2 );
		Exit( );
		}
	nodes2 = docs2.GetElementByID( "dlgs2" );
	if ( nodes2 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs2.SetXMLNode( nodes2 );
	ret2 = dlgs2.DoModal();
	if (ret2 == -1)
	{
		Exit();
	}
	numeric s2TMg1, s2TMg2, s2TMg3, s2TMg4, s2TMg5, s2TMg7;
    numeric s2TMb1, s2TMb2, s2TMb3, s2TMb4, s2TMb5, s2TMb7;
    
	s2aq = dlgs2.GetCtrlByID("s2aqui").GetValueNum();
	s2ele = dlgs2.GetCtrlByID("s2elevation").GetValueNum();
	s2TMg1 = dlgs2.GetCtrlByID("ss2TMg1").GetValueNum();
	s2TMg2 = dlgs2.GetCtrlByID("ss2TMg2").GetValueNum();
	s2TMg3 = dlgs2.GetCtrlByID("ss2TMg3").GetValueNum();
	s2TMg4 = dlgs2.GetCtrlByID("ss2TMg4").GetValueNum();
	s2TMg5 = dlgs2.GetCtrlByID("ss2TMg5").GetValueNum();
	s2TMg7 = dlgs2.GetCtrlByID("ss2TMg7").GetValueNum();
	s2TMb1 = dlgs2.GetCtrlByID("ss2TMb1").GetValueNum();
	s2TMb2 = dlgs2.GetCtrlByID("ss2TMb2").GetValueNum();
	s2TMb3 = dlgs2.GetCtrlByID("ss2TMb3").GetValueNum();
	s2TMb4 = dlgs2.GetCtrlByID("ss2TMb4").GetValueNum();
	s2TMb5 = dlgs2.GetCtrlByID("ss2TMb5").GetValueNum();
	s2TMb7 = dlgs2.GetCtrlByID("ss2TMb7").GetValueNum();
}
else if ( sensors2 == 5 )
{
	xmls2$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs2" title = "Scene 2" >
			<groupbox Name = " Parameters Landsat MSS-5: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s2aqui" Width ="12" HorizResize = "fixed" Default="19840301" Precision="0" MinVal="19840301"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s2elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err2 = docs2.Parse(xmls2$);
	if ( err2 < 0 ) {
		PopupError( err2 );
		Exit( );
		}
	nodes2 = docs2.GetElementByID( "dlgs2" );
	if ( nodes2 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs2.SetXMLNode( nodes2 );
	ret2 = dlgs2.DoModal();
	if (ret2 == -1)
	{
		Exit();
	}
	s2aq = dlgs2.GetCtrlByID("s2aqui").GetValueNum();
	s2ele = dlgs2.GetCtrlByID("s2elevation").GetValueNum();
}
else if ( sensors2 == 4 )
{
	xmls2$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs2" title = "Scene 2" >
			<groupbox Name = " Parameters Landsat MSS-4: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s2aqui" Width ="12" HorizResize = "fixed" Default="19820716" Precision="0"MinVal="19820716"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s2elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err2 = docs2.Parse(xmls2$);
	if ( err2 < 0 ) {
		PopupError( err2 );
		Exit( );
		}
	nodes2 = docs2.GetElementByID( "dlgs2" );
	if ( nodes2 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs2.SetXMLNode( nodes2 );
	ret2 = dlgs2.DoModal();
	if (ret2 == -1)
	{
		Exit();
	}
	s2aq = dlgs2.GetCtrlByID("s2aqui").GetValueNum();
	s2ele = dlgs2.GetCtrlByID("s2elevation").GetValueNum();
}
else if ( sensors2 == 3 )
{
	xmls2$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs2" title = "Scene 2" >
			<groupbox Name = " Parameters Landsat MSS-3: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s2aqui" Width ="12" HorizResize = "fixed" Default="19780305" Precision="0" MinVal="19780305" MaxVal="19830331"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s2elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err2 = docs2.Parse(xmls2$);
	if ( err2 < 0 ) {
		PopupError( err2 );
		Exit( );
		}
	nodes2 = docs2.GetElementByID( "dlgs2" );
	if ( nodes2 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs2.SetXMLNode( nodes2 );
	ret2 = dlgs2.DoModal();
	if (ret2 == -1)
	{
		Exit();
	}
	s2aq = dlgs2.GetCtrlByID("s2aqui").GetValueNum();
	s2ele = dlgs2.GetCtrlByID("s2elevation").GetValueNum();
}
else if ( sensors2 == 2 )
{
	xmls2$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs2" title = "Scene 2" >
			<groupbox Name = " Parameters Landsat MSS-2: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s2aqui" Width ="12" HorizResize = "fixed" Default="19750122" Precision="0" MinVal="19750122" MaxVal="19820225/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s2elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err2 = docs2.Parse(xmls2$);
	if ( err2 < 0 ) {
		PopupError( err );
		Exit( );
		}
	nodes2 = docs2.GetElementByID( "dlgs2" );
	if ( nodes2 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs2.SetXMLNode( nodes2 );
	ret2 = dlgs2.DoModal();
	if (ret2 == -1)
	{
		Exit();
	}
	s2aq = dlgs2.GetCtrlByID("s2aqui").GetValueNum();
	s2ele = dlgs2.GetCtrlByID("s2elevation").GetValueNum();
}
else if ( sensors2 == 1 )
{
	xmls2$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs2" title = "Scene 2" >
			<groupbox Name = " Parameters Landsat MSS-1: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s2aqui" Width ="12" HorizResize = "fixed" Default="19720723" Precision="0" MinVal="19720723" MaxVal="19780106"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s2elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err2 = docs2.Parse(xmls2$);
	if ( err2 < 0 ) {
		PopupError( err2 );	# pop up an error dialog
		Exit( );
		}
	nodes2 = docs2.GetElementByID( "dlgs2" );
	if ( nodes2 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs2.SetXMLNode( nodes2 );
	ret2 = dlgs2.DoModal();
	if (ret2 == -1)
	{
		Exit();
	}
	s2aq = dlgs2.GetCtrlByID("s2aqui").GetValueNum();
	s2ele = dlgs2.GetCtrlByID("s2elevation").GetValueNum();
}
}
###################################################################################################
###### Procedure to prompt for values for SZENE 3
###################################################################################################
proc SPECS3 () {
if ( sensors3 == 7 )
{
	xmls3$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs3" title = "Scene 3" >
		      <groupbox Name = " Parameters Landsat ETM-7: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s3aqui" Width ="17" HorizResize = "fixed" Default="19990415" Precision="0" MinVal="19990415"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s3elevation" Width ="17" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
				<pane Orientation = "Horizontal">
				<combobox id = "esc3" Width = "14" HorizResize = "Fixed" Default = "4" HorizAlign = "Right">
					<item Value="8">Desert(hs)</item>                              #hs = high sun ms=mid sun ls=low sun
					<item Value="7">Desert(ms)</item>
					<item Value="6">Desert Ice(ls)</item>
					<item Value="5">Ice(hs)</item>
					<item Value="4">Land(hs)</item>
					<item Value="3">Land Ocean(ls)</item>
					<item Value="2">Water</item>
					<item Value="1">Night(volcanos)</item>
				</combobox>
				<label> : Earth Surface Categories</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err3 = docs3.Parse(xmls3$);
	if ( err3 < 0 ) {
		PopupError( err3 );
		Exit( );
		}
	nodes3 = docs3.GetElementByID( "dlgs3" );
	if ( nodes3 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs3.SetXMLNode( nodes3 );
	ret3 = dlgs3.DoModal();
	if (ret3 == -1)
	{
		Exit();
	}
	earSurCat3 = dlgs3.GetCtrlByID( "esc3" ).GetValueNum();
	s3aq = dlgs3.GetCtrlByID("s3aqui").GetValueNum();
	s3ele = dlgs3.GetCtrlByID("s3elevation").GetValueNum();	
}
else if ( sensors3 == 6 ) 
{
	xmls3$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs3" title = "Scene 3" >
			<groupbox Name = " Parameters Landsat TM-5: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s3aqui" Width ="12" HorizResize = "fixed" Default="19840301" Precision="0" MinVal="19840301"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s3elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
			<groupbox Name = " Gain Headervalues: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="ss3TMg1" Width ="12" HorizResize = "fixed" Default="0.6024314" Precision="7" MinVal="-100"/>
					<label> : Band 1 (W/m^2sr�m)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss3TMg2" Width ="12" HorizResize = "fixed" Default="1.1750981" Precision="7" MinVal="-100"/>
					<label> : Band 2</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss3TMg3" Width ="12" HorizResize = "fixed" Default="0.8057647" Precision="7" MinVal="-100"/>
					<label> : Band 3</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss3TMg4" Width ="12" HorizResize = "fixed" Default="0.8145490" Precision="7" MinVal="-100"/>
					<label> : Band 4</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss3TMg5" Width ="12" HorizResize = "fixed" Default="0.1080784" Precision="7" MinVal="-100"/>
					<label> : Band 5</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss3TMg7" Width ="12" HorizResize = "fixed" Default="0.0569804" Precision="7" MinVal="-100"/>
					<label> : Band 7</label>
				</pane>
			</groupbox>
			<groupbox Name = " Bias Headervalues: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="ss3TMb1" Width ="12" HorizResize = "fixed" Default="-1.5200000" Precision="7" MinVal="-100"/>
					<label> : Band 1 (W/m^2sr�m)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss3TMb2" Width ="12" HorizResize = "fixed" Default="-2.8399999" Precision="7" MinVal="-100"/>
					<label> : Band 2</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss3TMb3" Width ="12" HorizResize = "fixed" Default="-1.1700000" Precision="7" MinVal="-100"/>
					<label> : Band 3</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss3TMb4" Width ="12" HorizResize = "fixed" Default="-1.5100000" Precision="7" MinVal="-100"/>
					<label> : Band 4</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss3TMb5" Width ="12" HorizResize = "fixed" Default="-0.3700000" Precision="7" MinVal="-100"/>
					<label> : Band 5</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss3TMb7" Width ="12" HorizResize = "fixed" Default="-0.1500000" Precision="7" MinVal="-100"/>
					<label> : Band 7</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err3 = docs3.Parse(xmls3$);
	if ( err3 < 0 ) {
		PopupError( err3 );
		Exit( );
		}
	nodes3 = docs3.GetElementByID( "dlgs3" );
	if ( nodes3 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs3.SetXMLNode( nodes3 );
	ret3 = dlgs3.DoModal();
	if (ret3 == -1)
	{
		Exit();
	}
	numeric s3TMg1, s3TMg2, s3TMg3, s3TMg4, s3TMg5, s3TMg7;
	numeric s3TMb1, s3TMb2, s3TMb3, s3TMb4, s3TMb5, s3TMb7;
	s3aq = dlgs3.GetCtrlByID("s3aqui").GetValueNum();
	s3ele = dlgs3.GetCtrlByID("s3elevation").GetValueNum();
	s3TMg1 = dlgs3.GetCtrlByID("ss3TMg1").GetValueNum();
	s3TMg2 = dlgs3.GetCtrlByID("ss3TMg2").GetValueNum();
	s3TMg3 = dlgs3.GetCtrlByID("ss3TMg3").GetValueNum();
	s3TMg4 = dlgs3.GetCtrlByID("ss3TMg4").GetValueNum();
	s3TMg5 = dlgs3.GetCtrlByID("ss3TMg5").GetValueNum();
	s3TMg7 = dlgs3.GetCtrlByID("ss3TMg7").GetValueNum();
	s3TMb1 = dlgs3.GetCtrlByID("ss3TMb1").GetValueNum();
	s3TMb2 = dlgs3.GetCtrlByID("ss3TMb2").GetValueNum();
	s3TMb3 = dlgs3.GetCtrlByID("ss3TMb3").GetValueNum();
	s3TMb4 = dlgs3.GetCtrlByID("ss3TMb4").GetValueNum();
	s3TMb5 = dlgs3.GetCtrlByID("ss3TMb5").GetValueNum();
	s3TMb7 = dlgs3.GetCtrlByID("ss3TMb7").GetValueNum();
}
else if ( sensors3 == 5 )
{
	xmls3$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs3" title = "Scene 3" >
			<groupbox Name = " Parameters Landsat MSS-5: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s3aqui" Width ="12" HorizResize = "fixed" Default="19840301" Precision="0" MinVal="19840301"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s3elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err3 = docs3.Parse(xmls3$);
	if ( err3 < 0 ) {
		PopupError( err3 );
		Exit( );
		}
	nodes3 = docs3.GetElementByID( "dlgs3" );
	if ( nodes3 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs3.SetXMLNode( nodes3 );
	ret3 = dlgs3.DoModal();
	if (ret3 == -1)
	{
		Exit();
	}
	s3aq = dlgs3.GetCtrlByID("s3aqui").GetValueNum();
	s3ele = dlgs3.GetCtrlByID("s3elevation").GetValueNum();
}
else if ( sensors3 == 4 )
{
	xmls3$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs3" title = "Scene 3" >
			<groupbox Name = " Parameters Landsat MSS-4: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s3aqui" Width ="12" HorizResize = "fixed" Default="19820716" Precision="0" MinVal="19820716"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s3elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err3 = docs3.Parse(xmls3$);
	if ( err3 < 0 ) {
		PopupError( err3 );
		Exit( );
		}
	nodes3 = docs3.GetElementByID( "dlgs3" );
	if ( nodes3 == 0 ) {
		PopupMessage( "Could not find dialognode in XML document" );
		Exit();
		}
	dlgs3.SetXMLNode( nodes3 );
	ret3 = dlgs3.DoModal();
	if (ret3 == -1)
	{
		Exit();
	}
	s3aq = dlgs3.GetCtrlByID("s3aqui").GetValueNum();
	s3ele = dlgs3.GetCtrlByID("s3elevation").GetValueNum();
}
else if ( sensors3 == 3 )
{
	xmls3$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs3" title = "Scene 3" >
			<groupbox Name = " Parameters Landsat MSS-3: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s3aqui" Width ="12" HorizResize = "fixed" Default="19780305" Precision="0" MinVal="19780305" MaxVal="19830331"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s3elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err3 = docs3.Parse(xmls3$);
	if ( err3 < 0 ) {
		PopupError( err3 );
		Exit( );
		}
	nodes3 = docs3.GetElementByID( "dlgs3" );
	if ( nodes3 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs3.SetXMLNode( nodes3 );
	ret3 = dlgs3.DoModal();
	if (ret3 == -1)
	{
		Exit();
	}
	s3aq = dlgs3.GetCtrlByID("s3aqui").GetValueNum();
	s3ele = dlgs3.GetCtrlByID("s3elevation").GetValueNum();
}
else if ( sensors3 == 2 )
{
	xmls3$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs3" title = "Scene 3" >
			<groupbox Name = " Parameters Landsat MSS-2: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s3aqui" Width ="12" HorizResize = "fixed" Default="19750122" Precision="0" MinVal="19750122" MaxVal="19820225"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s3elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err3 = docs3.Parse(xmls3$);
	if ( err3 < 0 ) {
		PopupError( err3 );
		Exit( );
		}
	nodes3 = docs3.GetElementByID( "dlgs3" );
	if ( nodes3 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs3.SetXMLNode( nodes3 );
	ret3 = dlgs3.DoModal();
	if (ret3 == -1)
	{
		Exit();
	}
	s3aq = dlgs3.GetCtrlByID("s3aqui").GetValueNum();
	s3ele = dlgs3.GetCtrlByID("s3elevation").GetValueNum();
}
else if ( sensors3 == 1 )
{
	xmls3$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs3" title = "Scene 3" >
			<groupbox Name = " Parameters Landsat MSS-1: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s3aqui" Width ="12" HorizResize = "fixed" Default="19720723" Precision="0" MinVal="19720723" MaxVal="19780106"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s3elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err3 = docs3.Parse(xmls3$);
	if ( err3 < 0 ) {
		PopupError( err3 );
		Exit( );
		}
	nodes3 = docs3.GetElementByID( "dlgs3" );
	if ( nodes3 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs3.SetXMLNode( nodes3 );
	ret3 = dlgs3.DoModal();
	if (ret3 == -1)
	{
		Exit();
	}
	s3aq = dlgs3.GetCtrlByID("s3aqui").GetValueNum();
	s3ele = dlgs3.GetCtrlByID("s3elevation").GetValueNum();
}
}
###################################################################################################
##### Procedure to prompt for values for SZENE 4
###################################################################################################
proc SPECS4 () {
if ( sensors4 == 7 )
{
	xmls4$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs4" title = "Scene 4" >
		      <groupbox Name = " Parameters Landsat ETM-7: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s4aqui" Width ="17" HorizResize = "fixed" Default="19990415" Precision="0" MinVal="19990415"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s4elevation" Width ="17" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
				<pane Orientation = "Horizontal">
				<combobox id = "esc4" Width = "14" HorizResize = "Fixed" Default = "4" HorizAlign = "Right">
					<item Value="8">Desert(hs)</item>                              #hs = high sun ms=mid sun ls=low sun
					<item Value="7">Desert(ms)</item>
					<item Value="6">Desert Ice(ls)</item>
					<item Value="5">Ice(hs)</item>
					<item Value="4">Land(hs)</item>
					<item Value="3">Land Ocean(ls)</item>
					<item Value="2">Water</item>
					<item Value="1">Night(volcanos)</item>
				</combobox>
				<label> : Earth Surface Categories</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err4 = docs4.Parse(xmls4$);
	if ( err4 < 0 ) {
		PopupError( err4 );
		Exit( );
		}
	nodes4 = docs4.GetElementByID( "dlgs4" );
	if ( nodes4 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs4.SetXMLNode( nodes4 );
	ret4 = dlgs4.DoModal();
	if (ret4 == -1)
	{
		Exit();
	}
	earSurCat4 = dlgs4.GetCtrlByID( "esc4" ).GetValueNum();
	s4aq = dlgs4.GetCtrlByID("s4aqui").GetValueNum();
	s4ele = dlgs4.GetCtrlByID("s4elevation").GetValueNum();
	dlgmain.GetCtrlByID("rasrefdoss1").SetEnabled(1);
}
else if ( sensors4 == 6 ) 
{
	xmls4$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs4" title = "Scene 4" >
			<groupbox Name = " Parameters Landsat TM-5: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s4aqui" Width ="12" HorizResize = "fixed" Default="19840301" Precision="0" MinVal="19840301"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s4elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
			<groupbox Name = " Gain Headervalues: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="ss4TMg1" Width ="12" HorizResize = "fixed" Default="0.6024314" Precision="7" MinVal="-100"/>
					<label> : Band 1 (W/m^2sr�m)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss4TMg2" Width ="12" HorizResize = "fixed" Default="1.1750981" Precision="7" MinVal="-100"/>
					<label> : Band 2</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss4TMg3" Width ="12" HorizResize = "fixed" Default="0.8057647" Precision="7" MinVal="-100"/>
					<label> : Band 3</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss4TMg4" Width ="12" HorizResize = "fixed" Default="0.8145490" Precision="7" MinVal="-100"/>
					<label> : Band 4</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss4TMg5" Width ="12" HorizResize = "fixed" Default="0.1080784" Precision="7" MinVal="-100"/>
					<label> : Band 5</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss4TMg7" Width ="12" HorizResize = "fixed" Default="0.0569804" Precision="7" MinVal="-100"/>
					<label> : Band 7</label>
				</pane>
			</groupbox>
			<groupbox Name = " Bias Headervalues: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="ss4TMb1" Width ="12" HorizResize = "fixed" Default="-1.5200000" Precision="7" MinVal="-100"/>
					<label> : Band 1 (W/m^2sr�m)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss4TMb2" Width ="12" HorizResize = "fixed" Default="-2.8399999" Precision="7" MinVal="-100"/>
					<label> : Band 2</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss4TMb3" Width ="12" HorizResize = "fixed" Default="-1.1700000" Precision="7" MinVal="-100"/>
					<label> : Band 3</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss4TMb4" Width ="12" HorizResize = "fixed" Default="-1.5100000" Precision="7" MinVal="-100"/>
					<label> : Band 4</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss4TMb5" Width ="12" HorizResize = "fixed" Default="-0.3700000" Precision="7" MinVal="-100"/>
					<label> : Band 5</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="ss4TMb7" Width ="12" HorizResize = "fixed" Default="-0.1500000" Precision="7" MinVal="-100"/>
					<label> : Band 7</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err4 = docs4.Parse(xmls4$);
	if ( err4 < 0 ) {
		PopupError( err4 );
		Exit( );
		}
	nodes4 = docs4.GetElementByID( "dlgs4" );
	if ( nodes4 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs4.SetXMLNode( nodes4 );
	ret4 = dlgs4.DoModal();
	if (ret4 == -1)
	{
		Exit();
	}
	numeric s4TMg1, s4TMg2, s4TMg3, s4TMg4, s4TMg5, s4TMg7;
	numeric s4TMb1, s4TMb2, s4TMb3, s4TMb4, s4TMb5, s4TMb7;
	s4aq = dlgs4.GetCtrlByID("s4aqui").GetValueNum();
	s4ele = dlgs4.GetCtrlByID("s4elevation").GetValueNum();
	s4TMg1 = dlgs4.GetCtrlByID("ss4TMg1").GetValueNum();
	s4TMg2 = dlgs4.GetCtrlByID("ss4TMg2").GetValueNum();
	s4TMg3 = dlgs4.GetCtrlByID("ss4TMg3").GetValueNum();
	s4TMg4 = dlgs4.GetCtrlByID("ss4TMg4").GetValueNum();
	s4TMg5 = dlgs4.GetCtrlByID("ss4TMg5").GetValueNum();
	s4TMg7 = dlgs4.GetCtrlByID("ss4TMg7").GetValueNum();
	s4TMb1 = dlgs4.GetCtrlByID("ss4TMb1").GetValueNum();
	s4TMb2 = dlgs4.GetCtrlByID("ss4TMb2").GetValueNum();
	s4TMb3 = dlgs4.GetCtrlByID("ss4TMb3").GetValueNum();
	s4TMb4 = dlgs4.GetCtrlByID("ss4TMb4").GetValueNum();
	s4TMb5 = dlgs4.GetCtrlByID("ss4TMb5").GetValueNum();
	s4TMb7 = dlgs4.GetCtrlByID("ss4TMb7").GetValueNum();
	dlgmain.GetCtrlByID("rasrefdoss1").SetEnabled(1);
}
else if ( sensors4 == 5 )
{
	xmls4$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs4" title = "Scene 4" >
			<groupbox Name = " Parameters Landsat MSS-5: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s4aqui" Width ="12" HorizResize = "fixed" Default="19840301" Precision="0" MinVal="19840301"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s4elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err4 = docs4.Parse(xmls4$);
	if ( err4 < 0 ) {
		PopupError( err4 );	# pop up an error dialog
		Exit( );
		}
	nodes4 = docs4.GetElementByID( "dlgs4" );
	if ( nodes4 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs4.SetXMLNode( nodes4 );
	ret4 = dlgs4.DoModal();
	if (ret4 == -1)
	{
		Exit();
	}
	s4aq = dlgs4.GetCtrlByID("s4aqui").GetValueNum();
	s4ele = dlgs4.GetCtrlByID("s4elevation").GetValueNum();
	dlgmain.GetCtrlByID("rasrefdoss1").SetEnabled(1);
}
else if ( sensors4 == 4 )
{
	xmls4$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs4" title = "Scene 4" >
			<groupbox Name = " Parameters Landsat MSS-4: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s4aqui" Width ="12" HorizResize = "fixed" Default="19820716" Precision="0" MinVal="19820716"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s4elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err4 = docs4.Parse(xmls4$);
	if ( err4 < 0 ) {
		PopupError( err4 );	# pop up an error dialog
		Exit( );
		}
	nodes4 = docs4.GetElementByID( "dlgs4" );
	if ( nodes4 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs4.SetXMLNode( nodes4 );
	ret4 = dlgs4.DoModal();
	if (ret4 == -1)
	{
		Exit();
	}
	s4aq = dlgs4.GetCtrlByID("s4aqui").GetValueNum();
	s4ele = dlgs4.GetCtrlByID("s4elevation").GetValueNum();
	dlgmain.GetCtrlByID("rasrefdoss1").SetEnabled(1);
}
else if ( sensors4 == 3 )
{
	xmls4$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs4" title = "Scene 4" >
				<groupbox Name = " Parameters Landsat MSS-3: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s4aqui" Width ="12" HorizResize = "fixed" Default="19780305" Precision="0" MinVal="19780305" MaxVal="19830331"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s4elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err4 = docs4.Parse(xmls4$);
	if ( err4 < 0 ) {
		PopupError( err4 );	# pop up an error dialog
		Exit( );
		}
	nodes4 = docs4.GetElementByID( "dlgs4" );
	if ( nodes4 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs4.SetXMLNode( nodes4 );
	ret4 = dlgs4.DoModal();
	if (ret4 == -1)
	{
		Exit();
	}
	s4aq = dlgs4.GetCtrlByID("s4aqui").GetValueNum();
	s4ele = dlgs4.GetCtrlByID("s4elevation").GetValueNum();
	dlgmain.GetCtrlByID("rasrefdoss1").SetEnabled(1);
}
else if ( sensors4 == 2 )
{
	xmls4$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs4" title = "Scene 4" >
			<groupbox Name = " Parameters Landsat MSS-2: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s4aqui" Width ="12" HorizResize = "fixed" Default="19750122" Precision="0" MinVal="19750122" MaxVal="19820225"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s4elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err4 = docs4.Parse(xmls4$);
	if ( err4 < 0 ) {
		PopupError( err4 );	# pop up an error dialog
		Exit( );
		}
	nodes4 = docs4.GetElementByID( "dlgs4" );
	if ( nodes4 ==0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs4.SetXMLNode( nodes4 );
	ret4 = dlgs4.DoModal();
	if (ret4 == -1)
	{
		Exit();
	}
	s4aq = dlgs4.GetCtrlByID("s4aqui").GetValueNum();
	s4ele = dlgs4.GetCtrlByID("s4elevation").GetValueNum();
	dlgmain.GetCtrlByID("rasrefdoss1").SetEnabled(1);
}
else if ( sensors4 == 1 )
{
	xmls4$ = '<?xml version="1.0"?>
	<root>
		<dialog id = "dlgs4" title = "Scene 4" >
			<groupbox Name = " Parameters Landsat MSS-1: " ExtraBorder = "2">
				<pane Orientation="horizontal">
					<editnumber id="s4aqui" Width ="12" HorizResize = "fixed" Default="19720723" Precision="0" MinVal="19720723" MaxVal="19780106"/>
					<label> : Aquisition Date (YYYYMMDD)</label>
				</pane>
				<pane Orientation="horizontal">
					<editnumber id="s4elevation" Width ="12" HorizResize = "fixed" Default="0.00" Precision="2" MinVal="0.00"/>
					<label> : Sunelevation</label>
				</pane>
			</groupbox>
		</dialog>
	</root>';
	err4 = docs4.Parse(xmls4$);
	if ( err4 < 0 ) {
		PopupError( err4 );
		Exit( );
		}
	nodes4 = docs4.GetElementByID( "dlgs4" );
	if ( nodes4 == 0 ) {
		PopupMessage( "Could not find dialog node in XML document" );
		Exit();
		}
	dlgs4.SetXMLNode( nodes4 );
	ret4 = dlgs4.DoModal();
	if (ret4 == -1)
	{
		Exit();
	}
	s4aq = dlgs4.GetCtrlByID("s4aqui").GetValueNum();
	s4ele = dlgs4.GetCtrlByID("s4elevation").GetValueNum();
	dlgmain.GetCtrlByID("rasrefdoss1").SetEnabled(1);
}
}
#######################################
### Procedure to select reflectance output files SZENE 1 DOS 1 corrected
#######################################
proc OUTREFDOSS1()
{
if ( sensors1 == 7 ) 
    { 
	raster REFS1ETM1, REFS1ETM2, REFS1ETM3, REFS1ETM4, REFS1ETM5, REFS1ETM7;
	GetOutputRaster(REFS1ETM1, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM1BAND1, REFS1ETM1, "georef");
	GetOutputRaster(REFS1ETM2, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM1BAND2, REFS1ETM2, "georef");
	GetOutputRaster(REFS1ETM3, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM1BAND3, REFS1ETM3, "georef");
	GetOutputRaster(REFS1ETM4, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM1BAND4, REFS1ETM4, "georef");
	GetOutputRaster(REFS1ETM5, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM1BAND5, REFS1ETM5, "georef");
	GetOutputRaster(REFS1ETM7, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM1BAND7, REFS1ETM7, "georef");
	
	dlgmain.GetCtrlByID("rasrefdoss2").SetEnabled(1);
    }
else if ( sensors1 == 6 ) 
    { 
	raster REFS1TM1, REFS1TM2, REFS1TM3, REFS1TM4, REFS1TM5, REFS1TM7;
	GetOutputRaster(REFS1TM1, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM1BAND1, REFS1TM1, "georef");
	GetOutputRaster(REFS1TM2, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM1BAND2, REFS1TM2, "georef");
	GetOutputRaster(REFS1TM3, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM1BAND3, REFS1TM3, "georef");
	GetOutputRaster(REFS1TM4, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM1BAND4, REFS1TM4, "georef");
	GetOutputRaster(REFS1TM5, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM1BAND5, REFS1TM5, "georef");
	GetOutputRaster(REFS1TM7, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM1BAND7, REFS1TM7, "georef");
	
	dlgmain.GetCtrlByID("rasrefdoss2").SetEnabled(1);
    }
else 
    {
	raster REFS1MSS1, REFS1MSS2, REFS1MSS3, REFS1MSS4;
	GetOutputRaster(REFS1MSS1, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS1BAND1, REFS1MSS1, "georef");
	GetOutputRaster(REFS1MSS2, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS1BAND2, REFS1MSS2, "georef");
	GetOutputRaster(REFS1MSS3, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS1BAND3, REFS1MSS3, "georef");
	GetOutputRaster(REFS1MSS4, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS1BAND4, REFS1MSS4, "georef");
	
	dlgmain.GetCtrlByID("rasrefdoss2").SetEnabled(1);
	}
}
#######################################
### Procedure to select reflectance output files SZENE 2 DOS 1 corrected
#######################################
proc OUTREFDOSS2()
{
if ( sensors2 == 7 ) 
    { 
	raster REFS2ETM1, REFS2ETM2, REFS2ETM3, REFS2ETM4, REFS2ETM5, REFS2ETM7;
	GetOutputRaster(REFS2ETM1, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM2BAND1, REFS2ETM1, "georef");
	GetOutputRaster(REFS2ETM2, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM2BAND2, REFS2ETM2, "georef");
	GetOutputRaster(REFS2ETM3, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM2BAND3, REFS2ETM3, "georef");
	GetOutputRaster(REFS2ETM4, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM2BAND4, REFS2ETM4, "georef");
	GetOutputRaster(REFS2ETM5, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM2BAND5, REFS2ETM5, "georef");
	GetOutputRaster(REFS2ETM7, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM2BAND7, REFS2ETM7, "georef");
	
	dlgmain.GetCtrlByID("rasrefdoss3").SetEnabled(1);
    }
else if ( sensors2 == 6 ) 
    { 
	raster REFS2TM1, REFS2TM2, REFS2TM3, REFS2TM4, REFS2TM5, REFS2TM7;
	GetOutputRaster(REFS2TM1, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM2BAND1, REFS2TM1, "georef");
	GetOutputRaster(REFS2TM2, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM2BAND2, REFS2TM2, "georef");
	GetOutputRaster(REFS2TM3, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM2BAND3, REFS2TM3, "georef");
	GetOutputRaster(REFS2TM4, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM2BAND4, REFS2TM4, "georef");
	GetOutputRaster(REFS2TM5, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM2BAND5, REFS2TM5, "georef");
	GetOutputRaster(REFS2TM7, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM2BAND7, REFS2TM7, "georef");
	
	dlgmain.GetCtrlByID("rasrefdoss3").SetEnabled(1);
    }
else 
    {
	raster REFS2MSS1, REFS2MSS2, REFS2MSS3, REFS2MSS4;
	GetOutputRaster(REFS2MSS1, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS2BAND1, REFS2MSS1, "georef");
	GetOutputRaster(REFS2MSS2, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS2BAND2, REFS2MSS2, "georef");
	GetOutputRaster(REFS2MSS3, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS2BAND3, REFS2MSS3, "georef");
	GetOutputRaster(REFS2MSS4, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS2BAND4, REFS2MSS4, "georef");
	
	dlgmain.GetCtrlByID("rasrefdoss3").SetEnabled(1);
	}
}
#######################################
### Procedure to select reflectance output files SZENE 3 DOS 1 corrected
#######################################
proc OUTREFDOSS3()
{
if ( sensors3 == 7 ) 
    { 
	raster REFS3ETM1, REFS3ETM2, REFS3ETM3, REFS3ETM4, REFS3ETM5, REFS3ETM7;
	GetOutputRaster(REFS3ETM1, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM3BAND1, REFS3ETM1, "georef");
	GetOutputRaster(REFS3ETM2, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM3BAND2, REFS3ETM2, "georef");
	GetOutputRaster(REFS3ETM3, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM3BAND3, REFS3ETM3, "georef");
	GetOutputRaster(REFS3ETM4, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM3BAND4, REFS3ETM4, "georef");
	GetOutputRaster(REFS3ETM5, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM3BAND5, REFS3ETM5, "georef");
	GetOutputRaster(REFS3ETM7, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM3BAND7, REFS3ETM7, "georef");
	
	dlgmain.GetCtrlByID("rasrefdoss4").SetEnabled(1);
    }
else if ( sensors3 == 6 ) 
    { 
	raster REFS3TM1, REFS3TM2, REFS3TM3, REFS3TM4, REFS3TM5, REFS3TM7;
	GetOutputRaster(REFS3TM1, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM3BAND1, REFS3TM1, "georef");
	GetOutputRaster(REFS3TM2, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM3BAND2, REFS3TM2, "georef");
	GetOutputRaster(REFS3TM3, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM3BAND3, REFS3TM3, "georef");
	GetOutputRaster(REFS3TM4, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM3BAND4, REFS3TM4, "georef");
	GetOutputRaster(REFS3TM5, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM3BAND5, REFS3TM5, "georef");
	GetOutputRaster(REFS3TM7, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM3BAND7, REFS3TM7, "georef");
	
	dlgmain.GetCtrlByID("rasrefdoss4").SetEnabled(1);
    }
else 
    {
	raster REFS3MSS1, REFS3MSS2, REFS3MSS3, REFS3MSS4;
	GetOutputRaster(REFS3MSS1, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS3BAND1, REFS3MSS1, "georef");
	GetOutputRaster(REFS3MSS2, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS3BAND2, REFS3MSS2, "georef");
	GetOutputRaster(REFS3MSS3, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS3BAND3, REFS3MSS3, "georef");
	GetOutputRaster(REFS3MSS4, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS3BAND4, REFS3MSS4, "georef");
	dlgmain.GetCtrlByID("rasrefdoss4").SetEnabled(1);
	}
}
#######################################
### Procedure to select reflectance output files SZENE 4 DOS 1 corrected
#######################################
proc OUTREFDOSS4()
{
    if ( sensors4 == 7 ) 
    { 
	raster REFS4ETM1, REFS4ETM2, REFS4ETM3, REFS4ETM4, REFS4ETM5, REFS4ETM7;
	GetOutputRaster(REFS4ETM1, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM4BAND1, REFS4ETM1, "georef");
	GetOutputRaster(REFS4ETM2, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM4BAND2, REFS4ETM2, "georef");
	GetOutputRaster(REFS4ETM3, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM4BAND3, REFS4ETM3, "georef");
	GetOutputRaster(REFS4ETM4, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM4BAND4, REFS4ETM4, "georef");
	GetOutputRaster(REFS4ETM5, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM4BAND5, REFS4ETM5, "georef");
	GetOutputRaster(REFS4ETM7, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM4BAND7, REFS4ETM7, "georef");
	
	dlgmain.GetCtrlByID("raspifglob").SetEnabled(1);
    }
else if ( sensors4 == 6 ) 
    { 
	raster REFS4TM1, REFS4TM2, REFS4TM3, REFS4TM4, REFS4TM5, REFS4TM7;
	GetOutputRaster(REFS4TM1, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM4BAND1, REFS4TM1, "georef");
	GetOutputRaster(REFS4TM2, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM4BAND2, REFS4TM2, "georef");
	GetOutputRaster(REFS4TM3, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM4BAND3, REFS4TM3, "georef");
	GetOutputRaster(REFS4TM4, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM4BAND4, REFS4TM4, "georef");
	GetOutputRaster(REFS4TM5, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM4BAND5, REFS4TM5, "georef");
	GetOutputRaster(REFS4TM7, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM4BAND7, REFS4TM7, "georef");
	
	dlgmain.GetCtrlByID("raspifglob").SetEnabled(1);
    }
else 
    {
	raster REFS4MSS1, REFS4MSS2, REFS4MSS3, REFS4MSS4;
	GetOutputRaster(REFS4MSS1, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS4BAND1, REFS4MSS1, "georef");
	GetOutputRaster(REFS4MSS2, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS4BAND2, REFS4MSS2, "georef");
	GetOutputRaster(REFS4MSS3, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS4BAND3, REFS4MSS3, "georef");
	GetOutputRaster(REFS4MSS4, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS4BAND4, REFS4MSS4, "georef");
	dlgmain.GetCtrlByID("raspifglob").SetEnabled(1);
	}
}
#######################################
### Procedure to select PIF output masks
#######################################
proc OUTCOMPIFS1()
{
    if ( sensors1 == 7 )
	{
	raster PIFMASK, PIFdarkMASK, PIFbrightMASK;
	GetOutputRaster(PIFMASK, ETMlins, ETMcols, "8-bit unsigned");
	CopySubobjects(ETM1BAND1, PIFMASK, "georef");
	GetOutputRaster(PIFdarkMASK, ETMlins, ETMcols, "8-bit unsigned");
	CopySubobjects(ETM1BAND1, PIFdarkMASK, "georef");
	GetOutputRaster(PIFbrightMASK, ETMlins, ETMcols, "8-bit unsigned");
	CopySubobjects(ETM1BAND1, PIFbrightMASK, "georef");
	
	dlgmain.GetCtrlByID("raspifs1").SetEnabled(1);
	}
    
    else if ( sensors1 == 6 ) 
	{
	raster PIFMASK, PIFdarkMASK, PIFbrightMASK;
	GetOutputRaster(PIFMASK, TMlins, TMcols, "8-bit unsigned");
	CopySubobjects(TM1BAND1, PIFMASK, "georef");
	GetOutputRaster(PIFdarkMASK, TMlins, TMcols, "8-bit unsigned");
	CopySubobjects(TM1BAND1, PIFdarkMASK, "georef");
	GetOutputRaster(PIFbrightMASK, TMlins, TMcols, "8-bit unsigned");
	CopySubobjects(TM1BAND1, PIFbrightMASK, "georef");
	
	dlgmain.GetCtrlByID("raspifs1").SetEnabled(1);
	}
    
    else 
	{
	raster PIFMASK, PIFdarkMASK, PIFbrightMASK;
	GetOutputRaster(PIFMASK, MSSlins, MSScols, "8-bit unsigned");
	CopySubobjects(MSS1BAND1, PIFMASK, "georef");
	GetOutputRaster(PIFdarkMASK, MSSlins, MSScols, "8-bit unsigned");
	CopySubobjects(MSS1BAND1, PIFdarkMASK, "georef");
	GetOutputRaster(PIFbrightMASK, MSSlins, MSScols, "8-bit unsigned");
	CopySubobjects(MSS1BAND1, PIFbrightMASK, "georef");
	
	dlgmain.GetCtrlByID("raspifs1").SetEnabled(1);
	}
}
proc OUTPIFS1()
{
    if ( sensors1 == 7 ) 
	{
	raster S1MASK, S1darkMASK, S1brightMASK;
	GetOutputRaster(S1MASK, ETMlins, ETMcols, "8-bit unsigned");
	CopySubobjects(ETM1BAND1, S1MASK, "georef");
	GetOutputRaster(S1darkMASK, ETMlins, ETMcols, "8-bit unsigned");
	CopySubobjects(ETM1BAND1, S1darkMASK, "georef");
	GetOutputRaster(S1brightMASK, ETMlins, ETMcols, "8-bit unsigned");
	CopySubobjects(ETM1BAND1, S1brightMASK, "georef");
	
	dlgmain.GetCtrlByID("raspifs2").SetEnabled(1);
	}
    else if ( sensors1 == 6 ) 
	{
	raster S1MASK, S1darkMASK, S1brightMASK;
	GetOutputRaster(S1MASK, TMlins, TMcols, "8-bit unsigned");
	CopySubobjects(TM1BAND1, S1MASK, "georef");
	GetOutputRaster(S1darkMASK, TMlins, TMcols, "8-bit unsigned");
	CopySubobjects(TM1BAND1, S1darkMASK, "georef");
	GetOutputRaster(S1brightMASK, TMlins, TMcols, "8-bit unsigned");
	CopySubobjects(TM1BAND1, S1brightMASK, "georef");
	
	dlgmain.GetCtrlByID("raspifs2").SetEnabled(1);
	}
    
    else 
	{
	raster S1MASK, S1darkMASK, S1brightMASK;
	GetOutputRaster(S1MASK, MSSlins, MSScols, "8-bit unsigned");
	CopySubobjects(MSS1BAND1, S1MASK, "georef");
	GetOutputRaster(S1darkMASK, MSSlins, MSScols, "8-bit unsigned");
	CopySubobjects(MSS1BAND1, S1darkMASK, "georef");
	GetOutputRaster(S1brightMASK, MSSlins, MSScols, "8-bit unsigned");
	CopySubobjects(MSS1BAND1, S1brightMASK, "georef");
	
	dlgmain.GetCtrlByID("raspifs2").SetEnabled(1);
	}
}
proc OUTPIFS2()
{
    if ( sensors2 == 7 ) 
	{
	raster S2MASK, S2darkMASK, S2brightMASK;
	GetOutputRaster(S2MASK, ETMlins, ETMcols, "8-bit unsigned");
	CopySubobjects(ETM2BAND1, S2MASK, "georef");
	GetOutputRaster(S2darkMASK, ETMlins, ETMcols, "8-bit unsigned");
	CopySubobjects(ETM2BAND1, S2darkMASK, "georef");
	GetOutputRaster(S2brightMASK, ETMlins, ETMcols, "8-bit unsigned");
	CopySubobjects(ETM2BAND1, S2brightMASK, "georef");
	
	dlgmain.GetCtrlByID("raspifs3").SetEnabled(1);
	}
    else if ( sensors2 == 6 ) 
	{
	raster S2MASK, S2darkMASK, S2brightMASK;
	GetOutputRaster(S2MASK, TMlins, TMcols, "8-bit unsigned");
	CopySubobjects(TM2BAND1, S2MASK, "georef");
	GetOutputRaster(S2darkMASK, TMlins, TMcols, "8-bit unsigned");
	CopySubobjects(TM2BAND1, S2darkMASK, "georef");
	GetOutputRaster(S2brightMASK, TMlins, TMcols, "8-bit unsigned");
	CopySubobjects(TM2BAND1, S2brightMASK, "georef");
	
	dlgmain.GetCtrlByID("raspifs3").SetEnabled(1);
	}
    else 
	{
	raster S2MASK, S2darkMASK, S2brightMASK;
	GetOutputRaster(S2MASK, MSSlins, MSScols, "8-bit unsigned");
	CopySubobjects(MSS2BAND1, S2MASK, "georef");
	GetOutputRaster(S2darkMASK, MSSlins, MSScols, "8-bit unsigned");
	CopySubobjects(MSS2BAND1, S2darkMASK, "georef");
	GetOutputRaster(S2brightMASK, MSSlins, MSScols, "8-bit unsigned");
	CopySubobjects(MSS2BAND1, S2brightMASK, "georef");
	
	dlgmain.GetCtrlByID("raspifs3").SetEnabled(1);
	}
}
proc OUTPIFS3()
{
    if ( sensors3 == 7 ) 
	{
	raster S3MASK, S3darkMASK, S3brightMASK;
	GetOutputRaster(S3MASK, ETMlins, ETMcols, "8-bit unsigned");
	CopySubobjects(ETM3BAND1, S3MASK, "georef");
	GetOutputRaster(S3darkMASK, ETMlins, ETMcols, "8-bit unsigned");
	CopySubobjects(ETM3BAND1, S3darkMASK, "georef");
	GetOutputRaster(S3brightMASK, ETMlins, ETMcols, "8-bit unsigned");
	CopySubobjects(ETM3BAND1, S3brightMASK, "georef");
	
	dlgmain.GetCtrlByID("raspifs4").SetEnabled(1);
	}
    else if ( sensors3 == 6 ) 
	{
	raster S3MASK, S3darkMASK, S3brightMASK;
	GetOutputRaster(S3MASK, TMlins, TMcols, "8-bit unsigned");
	CopySubobjects(TM3BAND1, S3MASK, "georef");
	GetOutputRaster(S3darkMASK, TMlins, TMcols, "8-bit unsigned");
	CopySubobjects(TM3BAND1, S3darkMASK, "georef");
	GetOutputRaster(S3brightMASK, TMlins, TMcols, "8-bit unsigned");
	CopySubobjects(TM3BAND1, S3brightMASK, "georef");
	
	dlgmain.GetCtrlByID("raspifs4").SetEnabled(1);
	}
    
    else 
	{
	raster S3MASK, S3darkMASK, S3brightMASK;
	GetOutputRaster(S3MASK, MSSlins, MSScols, "8-bit unsigned");
	CopySubobjects(MSS3BAND1, S3MASK, "georef");
	GetOutputRaster(S3darkMASK, MSSlins, MSScols, "8-bit unsigned");
	CopySubobjects(MSS3BAND1, S3darkMASK, "georef");
	GetOutputRaster(S3brightMASK, MSSlins, MSScols, "8-bit unsigned");
	CopySubobjects(MSS3BAND1, S3brightMASK, "georef");
	
	dlgmain.GetCtrlByID("raspifs4").SetEnabled(1);
	}
}
proc OUTPIFS4()
{
if ( sensors4 == 7 ) 
	{
	raster S4MASK, S4darkMASK, S4brightMASK;
	GetOutputRaster(S4MASK, ETMlins, ETMcols, "8-bit unsigned");
	CopySubobjects(ETM4BAND1, S4MASK, "georef");
	GetOutputRaster(S4darkMASK, ETMlins, ETMcols, "8-bit unsigned");
	CopySubobjects(ETM4BAND1, S4darkMASK, "georef");
	GetOutputRaster(S4brightMASK, ETMlins, ETMcols, "8-bit unsigned");
	CopySubobjects(ETM4BAND1, S4brightMASK, "georef");
	
	dlgmain.GetCtrlByID("rasnorms1").SetEnabled(1);
	}
    else if ( sensors4 == 6 ) 
	{
	raster S4MASK, S4darkMASK, S4brightMASK;
	GetOutputRaster(S4MASK, TMlins, TMcols, "8-bit unsigned");
	CopySubobjects(TM4BAND1, S4MASK, "georef");
	GetOutputRaster(S4darkMASK, TMlins, TMcols, "8-bit unsigned");
	CopySubobjects(TM4BAND1, S4darkMASK, "georef");
	GetOutputRaster(S4brightMASK, TMlins, TMcols, "8-bit unsigned");
	CopySubobjects(TM4BAND1, S4brightMASK, "georef");
	
	dlgmain.GetCtrlByID("rasnorms1").SetEnabled(1);
	}
    
    else 
	{
	raster S4MASK, S4darkMASK, S4brightMASK;
	GetOutputRaster(S4MASK, MSSlins, MSScols, "8-bit unsigned");
	CopySubobjects(MSS4BAND1, S4MASK, "georef");
	GetOutputRaster(S4darkMASK, MSSlins, MSScols, "8-bit unsigned");
	CopySubobjects(MSS4BAND1, S4darkMASK, "georef");
	GetOutputRaster(S4brightMASK, MSSlins, MSScols, "8-bit unsigned");
	CopySubobjects(MSS4BAND1, S4brightMASK, "georef");
	
	dlgmain.GetCtrlByID("rasnorms1").SetEnabled(1);
	}
}
	
#######################################
### Procedure to select output files SZENE 1
#######################################
proc OUTS1 () {
if ( sensors1 == 7 ) 
    { 
	raster OUT1ETM1, OUT1ETM2, OUT1ETM3, OUT1ETM4, OUT1ETM5, OUT1ETM7;
	GetOutputRaster(OUT1ETM1, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM1BAND1, OUT1ETM1, "georef");
	GetOutputRaster(OUT1ETM2, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM1BAND2, OUT1ETM2, "georef");
	GetOutputRaster(OUT1ETM3, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM1BAND3, OUT1ETM3, "georef");
	GetOutputRaster(OUT1ETM4, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM1BAND4, OUT1ETM4, "georef");
	GetOutputRaster(OUT1ETM5, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM1BAND5, OUT1ETM5, "georef");
	GetOutputRaster(OUT1ETM7, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM1BAND7, OUT1ETM7, "georef");
	
	dlgmain.GetCtrlByID("rasnorms2").SetEnabled(1);
    }
else if ( sensors1 == 6 ) 
    { 
	raster OUT1TM1, OUT1TM2, OUT1TM3, OUT1TM4, OUT1TM5, OUT1TM7;
	GetOutputRaster(OUT1TM1, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM1BAND1, OUT1TM1, "georef");
	GetOutputRaster(OUT1TM2, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM1BAND2, OUT1TM2, "georef");
	GetOutputRaster(OUT1TM3, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM1BAND3, OUT1TM3, "georef");
	GetOutputRaster(OUT1TM4, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM1BAND4, OUT1TM4, "georef");
	GetOutputRaster(OUT1TM5, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM1BAND5, OUT1TM5, "georef");
	GetOutputRaster(OUT1TM7, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM1BAND7, OUT1TM7, "georef");
	
	dlgmain.GetCtrlByID("rasnorms2").SetEnabled(1);
    }
else 
    {
	raster OUT1MSS1, OUT1MSS2, OUT1MSS3, OUT1MSS4;
	GetOutputRaster(OUT1MSS1, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS1BAND1, OUT1MSS1, "georef");
	GetOutputRaster(OUT1MSS2, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS1BAND2, OUT1MSS2, "georef");
	GetOutputRaster(OUT1MSS3, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS1BAND3, OUT1MSS3, "georef");
	GetOutputRaster(OUT1MSS4, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS1BAND4, OUT1MSS4, "georef");
	
	dlgmain.GetCtrlByID("rasnorms2").SetEnabled(1);
	}
}
#######################################
### Procedure to select output files SZENE 2
#######################################
proc OUTS2 () {
if ( sensors2 == 7 ) 
    {
	raster OUT2ETM1, OUT2ETM2, OUT2ETM3, OUT2ETM4, OUT2ETM5, OUT2ETM7;
	GetOutputRaster(OUT2ETM1, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM2BAND1, OUT2ETM1, "georef");
	GetOutputRaster(OUT2ETM2, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM2BAND2, OUT2ETM2, "georef");
	GetOutputRaster(OUT2ETM3, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM2BAND3, OUT2ETM3, "georef");
	GetOutputRaster(OUT2ETM4, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM2BAND4, OUT2ETM4, "georef");
	GetOutputRaster(OUT2ETM5, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM2BAND5, OUT2ETM5, "georef");
	GetOutputRaster(OUT2ETM7, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM2BAND7, OUT2ETM7, "georef");
	
	dlgmain.GetCtrlByID("rasnorms3").SetEnabled(1);
    }
else if ( sensors2 == 6 )
    {
	raster OUT2TM1, OUT2TM2, OUT2TM3, OUT2TM4, OUT2TM5, OUT2TM7;
	GetOutputRaster(OUT2TM1, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM2BAND1, OUT2TM1, "georef");
	GetOutputRaster(OUT2TM2, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM2BAND2, OUT2TM2, "georef");
	GetOutputRaster(OUT2TM3, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM2BAND3, OUT2TM3, "georef");
	GetOutputRaster(OUT2TM4, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM2BAND4, OUT2TM4, "georef");
	GetOutputRaster(OUT2TM5, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM2BAND5, OUT2TM5, "georef");
	GetOutputRaster(OUT2TM7, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM2BAND7, OUT2TM7, "georef");
	
	dlgmain.GetCtrlByID("rasnorms3").SetEnabled(1);
    }
    
else 
    {
	raster OUT2MSS1, OUT2MSS2, OUT2MSS3, OUT2MSS4;
	GetOutputRaster(OUT2MSS1, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS2BAND1, OUT2MSS1, "georef");
	GetOutputRaster(OUT2MSS2, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS2BAND2, OUT2MSS2, "georef");
	GetOutputRaster(OUT2MSS3, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS2BAND3, OUT2MSS3, "georef");
	GetOutputRaster(OUT2MSS4, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS2BAND4, OUT2MSS4, "georef");
	
	dlgmain.GetCtrlByID("rasnorms3").SetEnabled(1);
    }
}
#######################################
### Procedure to select output files SZENE 3
#######################################
proc OUTS3 () {
if ( sensors3 == 7 ) 
    {
	raster OUT3ETM1, OUT3ETM2, OUT3ETM3, OUT3ETM4, OUT3ETM5, OUT3ETM7;
	GetOutputRaster(OUT3ETM1, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM3BAND1, OUT3ETM1, "georef");
	GetOutputRaster(OUT3ETM2, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM3BAND2, OUT3ETM2, "georef");
	GetOutputRaster(OUT3ETM3, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM3BAND3, OUT3ETM3, "georef");
	GetOutputRaster(OUT3ETM4, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM3BAND4, OUT3ETM4, "georef");
	GetOutputRaster(OUT3ETM5, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM3BAND5, OUT3ETM5, "georef");
	GetOutputRaster(OUT3ETM7, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM3BAND7, OUT3ETM7, "georef");
	
	dlgmain.GetCtrlByID("rasnorms4").SetEnabled(1);
    }
else if ( sensors3 == 6 )
    {
	raster OUT3TM1, OUT3TM2, OUT3TM3, OUT3TM4, OUT3TM5, OUT3TM7;
	GetOutputRaster(OUT3TM1, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM3BAND1, OUT3TM1, "georef");
	GetOutputRaster(OUT3TM2, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM3BAND2, OUT3TM2, "georef");
	GetOutputRaster(OUT3TM3, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM3BAND3, OUT3TM3, "georef");
	GetOutputRaster(OUT3TM4, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM3BAND4, OUT3TM4, "georef");
	GetOutputRaster(OUT3TM5, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM3BAND5, OUT3TM5, "georef");
	GetOutputRaster(OUT3TM7, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM3BAND7, OUT3TM7, "georef");
	
	dlgmain.GetCtrlByID("rasnorms4").SetEnabled(1);
    }
    
else 
	{
	raster OUT3MSS1, OUT3MSS2, OUT3MSS3, OUT3MSS4;
	GetOutputRaster(OUT3MSS1, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS3BAND1, OUT3MSS1, "georef");
	GetOutputRaster(OUT3MSS2, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS3BAND2, OUT3MSS2, "georef");
	GetOutputRaster(OUT3MSS3, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS3BAND3, OUT3MSS3, "georef");
	GetOutputRaster(OUT3MSS4, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS3BAND4, OUT3MSS4, "georef");
	
	dlgmain.GetCtrlByID("rasnorms4").SetEnabled(1);
    }
}
#######################################
### Procedure to select output files SZENE 4
#######################################
proc OUTS4 () {
if ( sensors4 == 7 ) 
    {
	raster OUT4ETM1, OUT4ETM2, OUT4ETM3, OUT4ETM4, OUT4ETM5, OUT4ETM7;
	GetOutputRaster(OUT4ETM1, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM4BAND1, OUT4ETM1, "georef");
	GetOutputRaster(OUT4ETM2, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM4BAND2, OUT4ETM2, "georef");
	GetOutputRaster(OUT4ETM3, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM4BAND3, OUT4ETM3, "georef");
	GetOutputRaster(OUT4ETM4, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM4BAND4, OUT4ETM4, "georef");
	GetOutputRaster(OUT4ETM5, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM4BAND5, OUT4ETM5, "georef");
	GetOutputRaster(OUT4ETM7, ETMlins, ETMcols, "32-bit float");
	CopySubobjects(ETM4BAND7, OUT4ETM7, "georef");
	
	dlgmain.SetOkEnabled(1);
    }
else if ( sensors4 == 6 )
    {
	raster OUT4TM1, OUT4TM2, OUT4TM3, OUT4TM4, OUT4TM5, OUT4TM7;
	GetOutputRaster(OUT4TM1, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM4BAND1, OUT4TM1, "georef");
	GetOutputRaster(OUT4TM2, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM4BAND2, OUT4TM2, "georef");
	GetOutputRaster(OUT4TM3, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM4BAND3, OUT4TM3, "georef");
	GetOutputRaster(OUT4TM4, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM4BAND4, OUT4TM4, "georef");
	GetOutputRaster(OUT4TM5, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM4BAND5, OUT4TM5, "georef");
	GetOutputRaster(OUT4TM7, TMlins, TMcols, "32-bit float");
	CopySubobjects(TM4BAND7, OUT4TM7, "georef");
	
	dlgmain.SetOkEnabled(1);
    }
else
    {
	raster OUT4MSS1, OUT4MSS2, OUT4MSS3, OUT4MSS4;
	GetOutputRaster(OUT4MSS1, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS4BAND1, OUT4MSS1, "georef");
	GetOutputRaster(OUT4MSS2, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS4BAND2, OUT4MSS2, "georef");
	GetOutputRaster(OUT4MSS3, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS4BAND3, OUT4MSS3, "georef");
	GetOutputRaster(OUT4MSS4, MSSlins, MSScols, "32-bit float");
	CopySubobjects(MSS4BAND4, OUT4MSS4, "georef");
	
	dlgmain.SetOkEnabled(1);
	}
}
##################################
### Function for Julian Date aquisition
##################################
func LeapYear(date)
{ 
    if ( (date/4)   != round(date/4) )   return false;
    if ( (date/100) != round(date/100) ) return true;
    if ( (date/400) != round(date/400) ) return false;
    return true;
}
func julD(day, month, year)
{
    if ( LeapYear(year) )
	{
        return (day + accumulateLY[month]);
	}    
    else
    {
        return (day + accumulate[month]);
    }
}
##################################
### Function for the calculation of the relative DNmin1000 value
##################################
func DNminCALC(extentLIN, extentCOL, pixel)
{
    numeric DNminCALClvl, extentLIN, extentCOL, pixel, DNminCALClevel, DNminCALClvl;
    DNminCALClevel = (1000*pixel)/((185000/extentLIN)*(185000/extentCOL));
    DNminCALClvl = round(DNminCALClevel);
    return DNminCALClvl;
}
######################################################################
######################################################################
####################  Main Program  ##################################
######################################################################
######################################################################
clear();
#################################################
### Set up main dialog window
#################################################
xmlmain$ = '<?xml version="1.0"?>
<root>
	<dialog id = "maindlg" title="Landsat Calibration Pilot" OnOpen = "OnOpenMain()" >
		<groupbox Name = "Input Scenes:" ExtraBorder = "2">
			<pane Orientation = "Horizontal">
				<combobox id = "comps1" Default = "6" Width = "8" HorizAlign = "Right" HorizResize = "Fixed">
					<item Value="7">ETM-7</item>				
					<item Value="6">TM-5</item>
					<item Value="5">MSS-5</item>
					<item Value="4">MSS-4</item>
					<item Value="3">MSS-3</item>
					<item Value="2">MSS-2</item>
					<item Value="1">MSS-1</item>
				</combobox>
				<pushbutton Name = "Band Selection Scene 1" OnPressed = "SELECTS1()" />
				<pushbutton Name = "Parameters" OnPressed = "SPECS1()" />
			</pane>
			<pane Orientation = "Horizontal">
				<combobox id = "comps2" Default = "6" Width = "8" HorizAlign = "Right" HorizResize = "Fixed">
					<item Value="7">ETM-7</item>
					<item Value="6">TM-5</item>
					<item Value="5">MSS-5</item>
					<item Value="4">MSS-4</item>
					<item Value="3">MSS-3</item>
					<item Value="2">MSS-2</item>
					<item Value="1">MSS-1</item>
				</combobox>
				<pushbutton Name = "Band Selection Scene 2" OnPressed = "SELECTS2()" />
				<pushbutton Name = "Parameters" OnPressed = "SPECS2()" />
			</pane>
			<pane Orientation = "Horizontal">
				<combobox id = "comps3" Default ="6" Width = "8" HorizAlign = "Right" HorizResize = "Fixed">
					<item Value="7">ETM-7</item>
					<item Value="6">TM-5</item>
					<item Value="5">MSS-5</item>
					<item Value="4">MSS-4</item>
					<item Value="3">MSS-3</item>
					<item Value="2">MSS-2</item>
					<item Value="1">MSS-1</item>
				</combobox>
				<pushbutton Name = "Band Selection Scene 3" OnPressed = "SELECTS3()" />
				<pushbutton Name = "Parameters" OnPressed = "SPECS3()" />
			</pane>
			<pane Orientation = "Horizontal">
				<combobox id = "comps4" Default = "6" Width = "8" HorizAlign = "Right" HorizResize = "Fixed">
					<item Value="7">ETM-7</item>
					<item Value="6">TM-5</item>
					<item Value="5">MSS-5</item>
					<item Value="4">MSS-4</item>
					<item Value="3">MSS-3</item>
					<item Value="2">MSS-2</item>
					<item Value="1">MSS-1</item>
				</combobox>
				<pushbutton Name = "Band Selection Scene 4" OnPressed = "SELECTS4()" />
				<pushbutton Name = "Parameters" OnPressed = "SPECS4()" />
			</pane>
		</groupbox>
		<groupbox Name = "Pseudo Invariant Feature:" ExtraBorder = "2">
			<pane Orientation = "horizontal">
				<editnumber id = "pifDark" Width = "10" HorizResize = "fixed" Default = "12" Precision = "0" MinVal = "1" MaxVal="50"/>
				<label>Number of dark PIFs to search for</label>
			</pane>
			<pane Orientation = "horizontal">
				<editnumber id = "pifBright" Width = "10" HorizResize = "fixed" Default = "12" Precision = "0" MinVal = "1" MaxVal="50"/>
				<label>Number of bright PIFs to search for</label>
			</pane>
			<pane Orientation = "horizontal">
				<editnumber id = "minPif" Width = "10" HorizResize = "fixed" Default = "24" Precision = "0" MinVal = "2" MaxVal="100"/>
				<label>Number of random PIFs to calculate regression</label>
			</pane>
			<pane Orientation = "horizontal">
				<editnumber id = "histoTailInput" Width = "10" HorizResize = "fixed" Default = "0.50" Precision = "2" MinVal = "0.01" MaxVal="5.00"/>
				<label>Percentage of Histogram Tail defining PIFs</label>
			</pane>
		</groupbox>
		<groupbox Orientation = "vertical" Name = " Reflectance Output Scenes DOS1 corrected: " ExtraBorder="2">
				<pane Orientation = "Horizontal">
					<pushbutton id = "rasrefdoss1" Name = "Band Selection - Scene 1" Enabled = "0" OnPressed = "OUTREFDOSS1()"/>
				</pane>
				<pane Orientation = "Horizontal">
					<pushbutton id = "rasrefdoss2" Name = "Band Selection - Scene 2" Enabled = "0" OnPressed = "OUTREFDOSS2()"/>
				</pane>
				<pane Orientation = "Horizontal">
					<pushbutton id = "rasrefdoss3" Name = "Band Selection - Scene 3" Enabled = "0" OnPressed = "OUTREFDOSS3()"/>
				</pane>
				<pane Orientation = "Horizontal">
					<pushbutton id = "rasrefdoss4" Name = "Band Selection - Scene 4" Enabled = "0" OnPressed = "OUTREFDOSS4()"/>
				</pane>
		</groupbox>
		<groupbox Name = " PIF Masks: " ExtraBorder="2">
			<pane Orientation = "Horizontal">
				<pushbutton id = "raspifglob" Name = "Output File - All Scenes" Enabled = "0" OnPressed = "OUTCOMPIFS1()"/>
			</pane>
			<pane Orientation = "Horizontal">
				<pushbutton id = "raspifs1" Name = "Output File - Scene 1" Enabled = "0" OnPressed = "OUTPIFS1()"/>
			</pane>
			<pane Orientation = "Horizontal">
				<pushbutton id = "raspifs2" Name = "Output File - Scene 2" Enabled = "0" OnPressed = "OUTPIFS2()"/>
			</pane>
			<pane Orientation = "Horizontal">
				<pushbutton id = "raspifs3" Name = "Output File - Scene 3" Enabled = "0" OnPressed = "OUTPIFS3()"/>
			</pane>
			<pane Orientation = "Horizontal">
				<pushbutton id = "raspifs4" Name = "Output File - Scene 4" Enabled = "0" OnPressed = "OUTPIFS4()"/>
			</pane>
		</groupbox>
		<groupbox Name = " Relative Normalized Output Scenes: " ExtraBorder="2">
			<pane Orientation = "Horizontal">
				<pushbutton id = "rasnorms1" Name = "Band Selection - Scene 1" Enabled = "0" OnPressed = "OUTS1()"/>
			</pane>
			<pane Orientation = "Horizontal">
				<pushbutton id = "rasnorms2" Name = "Band Selection - Scene 2" Enabled = "0" OnPressed = "OUTS2()"/>
			</pane>
			<pane Orientation = "Horizontal">
				<pushbutton id = "rasnorms3" Name = "Band Selection - Scene 3" Enabled = "0" OnPressed = "OUTS3()"/>
			</pane>
			<pane Orientation = "Horizontal">
				<pushbutton id = "rasnorms4" Name = "Band Selection - Scene 4" Enabled = "0" OnPressed = "OUTS4()"/>
			</pane>
		</groupbox>
	</dialog>
</root>';
err = docmain.Parse(xmlmain$);
if ( err < 0 ) {
	PopupError( err );	# pop up an error dialog
	Exit( );
	}
nodemain = docmain.GetElementByID( "maindlg" );
if ( nodemain == 0 ) {
	PopupMessage( "Could not find main dialog node in XML document" );
	Exit();
	}
dlgmain.SetXMLNode(nodemain);
ret = dlgmain.DoModal();
if (ret == -1)
{
	Exit();
}
######################################
###### Begin processing.
###### Calculate Radiance.
######################################
pifDarkVAL = dlgmain.GetCtrlByID("pifDark").GetValueNum();
pifBrightVAL = dlgmain.GetCtrlByID("pifBright").GetValueNum();
minPifVAL = dlgmain.GetCtrlByID("minPif").GetValueNum();
histoTailInputVAL = dlgmain.GetCtrlByID("histoTailInput").GetValueNum();
printf( "Entered PIF-Selection values passed to variables...\n\n" );
printf( "Starting off calculating...\n\n" );
s1zenith = ((2 * pi * (90 - s1ele)) / 360);                                        # sunzenith calculation via 90degree minus sunelevation
s2zenith = ((2 * pi * (90 - s2ele)) / 360);
s3zenith = ((2 * pi * (90 - s3ele)) / 360);
s4zenith = ((2 * pi * (90 - s4ele)) / 360);
s1zenithSIMPLE = 90 - s1ele;
s2zenithSIMPLE = 90 - s2ele;
s3zenithSIMPLE = 90 - s3ele;
s4zenithSIMPLE = 90 - s4ele;
printf("Sun zenith angle (Scene 1): %6f\n", s1zenithSIMPLE);
printf("Sun zenith angle (Scene 2): %6f\n", s2zenithSIMPLE);
printf("Sun zenith angle (Scene 3): %6f\n", s3zenithSIMPLE);
printf("Sun zenith angle (Scene 4): %6f\n\n", s4zenithSIMPLE);
printf( "Sun zenith calculated...\n\n" );
s1yyyymmdd.SetDateYYYYMMDD(s1aq);
s1year = s1yyyymmdd.GetYear();
s1month = s1yyyymmdd.GetMonth();
s1day = s1yyyymmdd.GetDayOfMonth();
s2yyyymmdd.SetDateYYYYMMDD(s2aq);
s2year = s2yyyymmdd.GetYear();
s2month = s2yyyymmdd.GetMonth();
s2day = s2yyyymmdd.GetDayOfMonth();
s3yyyymmdd.SetDateYYYYMMDD(s3aq);
s3year = s3yyyymmdd.GetYear();
s3month = s3yyyymmdd.GetMonth();
s3day = s3yyyymmdd.GetDayOfMonth();
s4yyyymmdd.SetDateYYYYMMDD(s4aq);
s4year = s4yyyymmdd.GetYear();
s4month = s4yyyymmdd.GetMonth();
s4day = s4yyyymmdd.GetDayOfMonth();
s1leap = LeapYear(s1year);				                                           #Leap Year = 1 Else = 0
s2leap = LeapYear(s2year);
s3leap = LeapYear(s3year);
s4leap = LeapYear(s4year);
s1jul = julD(s1day, s1month, s1year);                                              #julD(day, month, year)
s2jul = julD(s2day, s2month, s2year);
s3jul = julD(s3day, s3month, s3year);
s4jul = julD(s4day, s4month, s4year);
printf("Julian Date (Scene 1): %3i\n", s1jul);
printf("Julian Date (Scene 2): %3i\n", s2jul);
printf("Julian Date (Scene 3): %3i\n", s3jul);
printf("Julian Date (Scene 4): %3i\n\n", s4jul);
printf( "Julian Date calculated and year, month and day count extracted from aquisition date...\n\n" );
dist1 = 1 / (1 - 0.01674 * cos(0.9856 * (s1jul - 4)));
dist2 = 1 / (1 - 0.01674 * cos(0.9856 * (s2jul - 4)));
dist3 = 1 / (1 - 0.01674 * cos(0.9856 * (s3jul - 4)));
dist4 = 1 / (1 - 0.01674 * cos(0.9856 * (s4jul - 4)));
printf("Earth-Sun distance (Scene 1): %12f\n", dist1);
printf("Earth-Sun distance (Scene 2): %12f\n", dist2);
printf("Earth-Sun distance (Scene 3): %12f\n", dist3);
printf("Earth-Sun distance (Scene 4): %12f\n\n", dist4);
printf( "Earth Sundistance Calculated...\n\n" );
printf( "Computing Radiance...\n\n" );
###########################
### Radiance Scene 1
###########################
if ( sensors1 == 7 )
{
raster RADS1ETM1, RADS1ETM2, RADS1ETM3, RADS1ETM4, RADS1ETM5, RADS1ETM7;
CreateTempRaster(RADS1ETM1, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS1ETM2, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS1ETM3, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS1ETM4, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS1ETM5, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS1ETM7, ETMlins, ETMcols,"32-bit float");
  for i = 1 to ETMlins
  {
	for j = 1 to ETMcols
	{	
		if ( s1aq < 20000701)					# Before 1. July 2000
		{
			if ( earSurCat1 == 8 )				# Desert(hs)
			{
			RADS1ETM1[i,j] = (B1LGLMAXBef2000-B1LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND1[i,j]-QCALMIN)+B1LGLMINBef2000;
			RADS1ETM2[i,j] = (B2LGLMAXBef2000-B2LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND2[i,j]-QCALMIN)+B2LGLMINBef2000;
			RADS1ETM3[i,j] = (B3LGLMAXBef2000-B3LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND3[i,j]-QCALMIN)+B3LGLMINBef2000;
			RADS1ETM4[i,j] = (B4LGLMAXBef2000-B4LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND4[i,j]-QCALMIN)+B4LGLMINBef2000;
			RADS1ETM5[i,j] = (B5LGLMAXBef2000-B5LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND5[i,j]-QCALMIN)+B5LGLMINBef2000;
			RADS1ETM7[i,j] = (B7LGLMAXBef2000-B7LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND7[i,j]-QCALMIN)+B7LGLMINBef2000;
			}
			else if ( earSurCat1 == 7 )			# Desert(ms)
			{
			RADS1ETM1[i,j] = (B1LGLMAXBef2000-B1LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND1[i,j]-QCALMIN)+B1LGLMINBef2000;
			RADS1ETM2[i,j] = (B2LGLMAXBef2000-B2LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND2[i,j]-QCALMIN)+B2LGLMINBef2000;
			RADS1ETM3[i,j] = (B3LGLMAXBef2000-B3LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND3[i,j]-QCALMIN)+B3LGLMINBef2000;
			RADS1ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS1ETM5[i,j] = (B5LGLMAXBef2000-B5LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND5[i,j]-QCALMIN)+B5LGLMINBef2000;
			RADS1ETM7[i,j] = (B7LGLMAXBef2000-B7LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND7[i,j]-QCALMIN)+B7LGLMINBef2000;
			}
			else if ( earSurCat1 == 6 )			# Desert Ice(ls)
			{
			RADS1ETM1[i,j] = (B1LGLMAXBef2000-B1LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND1[i,j]-QCALMIN)+B1LGLMINBef2000;
			RADS1ETM2[i,j] = (B2LGLMAXBef2000-B2LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND2[i,j]-QCALMIN)+B2LGLMINBef2000;
			RADS1ETM3[i,j] = (B3LGLMAXBef2000-B3LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND3[i,j]-QCALMIN)+B3LGLMINBef2000;
			RADS1ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS1ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS1ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat1 == 5 )			# Ice(hs)
			{
			RADS1ETM1[i,j] = (B1LGLMAXBef2000-B1LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND1[i,j]-QCALMIN)+B1LGLMINBef2000;
			RADS1ETM2[i,j] = (B2LGLMAXBef2000-B2LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND2[i,j]-QCALMIN)+B2LGLMINBef2000;
			RADS1ETM3[i,j] = (B3LGLMAXBef2000-B3LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND3[i,j]-QCALMIN)+B3LGLMINBef2000;
			RADS1ETM4[i,j] = (B4LGLMAXBef2000-B4LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND4[i,j]-QCALMIN)+B4LGLMINBef2000;
			RADS1ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS1ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat1 == 4 )			# Land(hs)
			{
			RADS1ETM1[i,j] = (B1HGLMAXBef2000-B1HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND1[i,j]-QCALMIN)+B1HGLMINBef2000;
			RADS1ETM2[i,j] = (B2HGLMAXBef2000-B2HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND2[i,j]-QCALMIN)+B2HGLMINBef2000;
			RADS1ETM3[i,j] = (B3HGLMAXBef2000-B3HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND3[i,j]-QCALMIN)+B3HGLMINBef2000;
			RADS1ETM4[i,j] = (B4LGLMAXBef2000-B4LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND4[i,j]-QCALMIN)+B4LGLMINBef2000;
			RADS1ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS1ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat1 == 3 )			# Land Ocean(ls
			{
			RADS1ETM1[i,j] = (B1HGLMAXBef2000-B1HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND1[i,j]-QCALMIN)+B1HGLMINBef2000;
			RADS1ETM2[i,j] = (B2HGLMAXBef2000-B2HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND2[i,j]-QCALMIN)+B2HGLMINBef2000;
			RADS1ETM3[i,j] = (B3HGLMAXBef2000-B3HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND3[i,j]-QCALMIN)+B3HGLMINBef2000;
			RADS1ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS1ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS1ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat1 == 2 )			# Water
			{
			RADS1ETM1[i,j] = (B1HGLMAXBef2000-B1HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND1[i,j]-QCALMIN)+B1HGLMINBef2000;
			RADS1ETM2[i,j] = (B2HGLMAXBef2000-B2HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND2[i,j]-QCALMIN)+B2HGLMINBef2000;
			RADS1ETM3[i,j] = (B3HGLMAXBef2000-B3HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND3[i,j]-QCALMIN)+B3HGLMINBef2000;
			RADS1ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS1ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS1ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat1 == 1 )			# Night(volcanos
			{
			RADS1ETM1[i,j] = (B1HGLMAXBef2000-B1HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND1[i,j]-QCALMIN)+B1HGLMINBef2000;
			RADS1ETM2[i,j] = (B2HGLMAXBef2000-B2HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND2[i,j]-QCALMIN)+B2HGLMINBef2000;
			RADS1ETM3[i,j] = (B3HGLMAXBef2000-B3HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND3[i,j]-QCALMIN)+B3HGLMINBef2000;
			RADS1ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS1ETM5[i,j] = (B5LGLMAXBef2000-B5LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND5[i,j]-QCALMIN)+B5LGLMINBef2000;
			RADS1ETM7[i,j] = (B7LGLMAXBef2000-B7LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM1BAND7[i,j]-QCALMIN)+B7LGLMINBef2000;
			}
		}
		else								# After 1. July 2000
		{
			if ( earSurCat1 == 8 )				# Desert(hs)
			{
			RADS1ETM1[i,j] = (B1LGLMAXAFT2000-B1LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND1[i,j]-QCALMIN)+B1LGLMINAFT2000;
			RADS1ETM2[i,j] = (B2LGLMAXAFT2000-B2LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND2[i,j]-QCALMIN)+B2LGLMINAFT2000;
			RADS1ETM3[i,j] = (B3LGLMAXAFT2000-B3LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND3[i,j]-QCALMIN)+B3LGLMINAFT2000;
			RADS1ETM4[i,j] = (B4LGLMAXAFT2000-B4LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND4[i,j]-QCALMIN)+B4LGLMINAFT2000;
			RADS1ETM5[i,j] = (B5LGLMAXAFT2000-B5LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND5[i,j]-QCALMIN)+B5LGLMINAFT2000;
			RADS1ETM7[i,j] = (B7LGLMAXAFT2000-B7LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND7[i,j]-QCALMIN)+B7LGLMINAFT2000;
			}
			else if ( earSurCat1 == 7 )			# Desert(ms)
			{
			RADS1ETM1[i,j] = (B1LGLMAXAFT2000-B1LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND1[i,j]-QCALMIN)+B1LGLMINAFT2000;
			RADS1ETM2[i,j] = (B2LGLMAXAFT2000-B2LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND2[i,j]-QCALMIN)+B2LGLMINAFT2000;
			RADS1ETM3[i,j] = (B3LGLMAXAFT2000-B3LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND3[i,j]-QCALMIN)+B3LGLMINAFT2000;
			RADS1ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS1ETM5[i,j] = (B5LGLMAXAFT2000-B5LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND5[i,j]-QCALMIN)+B5LGLMINAFT2000;
			RADS1ETM7[i,j] = (B7LGLMAXAFT2000-B7LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND7[i,j]-QCALMIN)+B7LGLMINAFT2000;
			}
			else if ( earSurCat1 == 6 )			# Desert Ice(ls)
			{
			RADS1ETM1[i,j] = (B1LGLMAXAFT2000-B1LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND1[i,j]-QCALMIN)+B1LGLMINAFT2000;
			RADS1ETM2[i,j] = (B2LGLMAXAFT2000-B2LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND2[i,j]-QCALMIN)+B2LGLMINAFT2000;
			RADS1ETM3[i,j] = (B3LGLMAXAFT2000-B3LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND3[i,j]-QCALMIN)+B3LGLMINAFT2000;
			RADS1ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS1ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS1ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat1 == 5 )			# Ice(hs)
			{
			RADS1ETM1[i,j] = (B1LGLMAXAFT2000-B1LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND1[i,j]-QCALMIN)+B1LGLMINAFT2000;
			RADS1ETM2[i,j] = (B2LGLMAXAFT2000-B2LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND2[i,j]-QCALMIN)+B2LGLMINAFT2000;
			RADS1ETM3[i,j] = (B3LGLMAXAFT2000-B3LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND3[i,j]-QCALMIN)+B3LGLMINAFT2000;
			RADS1ETM4[i,j] = (B4LGLMAXAFT2000-B4LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND4[i,j]-QCALMIN)+B4LGLMINAFT2000;
			RADS1ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS1ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat1 == 4 )			# Land(hs)
			{
			RADS1ETM1[i,j] = (B1HGLMAXAFT2000-B1HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND1[i,j]-QCALMIN)+B1HGLMINAFT2000;
			RADS1ETM2[i,j] = (B2HGLMAXAFT2000-B2HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND2[i,j]-QCALMIN)+B2HGLMINAFT2000;
			RADS1ETM3[i,j] = (B3HGLMAXAFT2000-B3HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND3[i,j]-QCALMIN)+B3HGLMINAFT2000;
			RADS1ETM4[i,j] = (B4LGLMAXAFT2000-B4LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND4[i,j]-QCALMIN)+B4LGLMINAFT2000;
			RADS1ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS1ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat1 == 3 )			# Land Ocean(ls
			{
			RADS1ETM1[i,j] = (B1HGLMAXAFT2000-B1HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND1[i,j]-QCALMIN)+B1HGLMINAFT2000;
			RADS1ETM2[i,j] = (B2HGLMAXAFT2000-B2HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND2[i,j]-QCALMIN)+B2HGLMINAFT2000;
			RADS1ETM3[i,j] = (B3HGLMAXAFT2000-B3HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND3[i,j]-QCALMIN)+B3HGLMINAFT2000;
			RADS1ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS1ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS1ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat1 == 2 )			# Water
			{
			RADS1ETM1[i,j] = (B1HGLMAXAFT2000-B1HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND1[i,j]-QCALMIN)+B1HGLMINAFT2000;
			RADS1ETM2[i,j] = (B2HGLMAXAFT2000-B2HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND2[i,j]-QCALMIN)+B2HGLMINAFT2000;
			RADS1ETM3[i,j] = (B3HGLMAXAFT2000-B3HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND3[i,j]-QCALMIN)+B3HGLMINAFT2000;
			RADS1ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS1ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS1ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat1 == 1 )			# Night(volcanos
			{
			RADS1ETM1[i,j] = (B1HGLMAXAFT2000-B1HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND1[i,j]-QCALMIN)+B1HGLMINAFT2000;
			RADS1ETM2[i,j] = (B2HGLMAXAFT2000-B2HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND2[i,j]-QCALMIN)+B2HGLMINAFT2000;
			RADS1ETM3[i,j] = (B3HGLMAXAFT2000-B3HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND3[i,j]-QCALMIN)+B3HGLMINAFT2000;
			RADS1ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS1ETM5[i,j] = (B5LGLMAXAFT2000-B5LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND5[i,j]-QCALMIN)+B5LGLMINAFT2000;
			RADS1ETM7[i,j] = (B7LGLMAXAFT2000-B7LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM1BAND7[i,j]-QCALMIN)+B7LGLMINAFT2000;
			}
		}
	 }
   }
CloseRaster(ETM1BAND1);
CloseRaster(ETM1BAND2);
CloseRaster(ETM1BAND3);
CloseRaster(ETM1BAND4);
CloseRaster(ETM1BAND5);
CloseRaster(ETM1BAND7);
printf("Radiance calculation for Scene 1 (ETM) is done...\n");
}
else if ( sensors1 == 6 )
{
    raster RADS1TM1, RADS1TM2, RADS1TM3, RADS1TM4, RADS1TM5, RADS1TM7;
    CreateTempRaster(RADS1TM1, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS1TM2, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS1TM3, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS1TM4, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS1TM5, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS1TM7, TMlins, TMcols,"32-bit float");
	   for i = 1 to TMlins
	   {
	        for j = 1 to TMcols
	        {
		     if (s1leap == 0)
		     {
		         numeric gainnewTMS1b1, gainnewTMS1b2, gainnewTMS1b3, gainnewTMS1b4, gainnewTMS1b5, gainnewTMS1b7;
	             gainnewTMS1b1 = ((0.145658 * exp(-0.955113 * ((s1year + (s1jul / 365)) - 1984.2082))) + 1.243000);
	             gainnewTMS1b2 = ((0.058651 * exp(-0.835952 * ((s1year + (s1jul / 365)) - 1984.2082))) + 0.656100);
                 gainnewTMS1b3 = ((0.111858 * exp(-1.002090 * ((s1year + (s1jul / 365)) - 1984.2082))) + 0.905000);
                 gainnewTMS1b4 = ((0.107650 * exp(-1.277190 * ((s1year + (s1jul / 365)) - 1984.2082))) + 1.082000);
                 gainnewTMS1b5 = ((0.243364 * exp(-1.207080 * ((s1year + (s1jul / 365)) - 1984.2082))) + 7.944000);
                 gainnewTMS1b7 = ((0.403551 * exp(-0.999127 * ((s1year + (s1jul / 365)) - 1984.2082))) + 14.52000);
                 RADS1TM1[i,j] = ((s1TMg1 * ((gainnewTMS1b1 * ((s1TMg1 * TM1BAND1[i,j]) + s1TMb1)) + biasnewTMb1)) + s1TMb1);
                 RADS1TM2[i,j] = ((s1TMg2 * ((gainnewTMS1b2 * ((s1TMg2 * TM1BAND2[i,j]) + s1TMb2)) + biasnewTMb2)) + s1TMb2);
                 RADS1TM3[i,j] = ((s1TMg3 * ((gainnewTMS1b3 * ((s1TMg3 * TM1BAND3[i,j]) + s1TMb3)) + biasnewTMb3)) + s1TMb3);
                 RADS1TM4[i,j] = ((s1TMg4 * ((gainnewTMS1b4 * ((s1TMg4 * TM1BAND4[i,j]) + s1TMb4)) + biasnewTMb4)) + s1TMb4);
                 RADS1TM5[i,j] = ((s1TMg5 * ((gainnewTMS1b5 * ((s1TMg5 * TM1BAND5[i,j]) + s1TMb5)) + biasnewTMb5)) + s1TMb5);
                 RADS1TM7[i,j] = ((s1TMg7 * ((gainnewTMS1b7 * ((s1TMg7 * TM1BAND7[i,j]) + s1TMb7)) + biasnewTMb7)) + s1TMb7);
		     }
			
		     else if (s1leap == 1)
		     { 
	             numeric gainnewTMS1b1, gainnewTMS1b2, gainnewTMS1b3, gainnewTMS1b4, gainnewTMS1b5, gainnewTMS1b7;
	             gainnewTMS1b1 = ((0.145658 * exp(-0.955113 * ((s1year + (s1jul / 366)) - 1984.2082))) + 1.243000);
	             gainnewTMS1b2 = ((0.058651 * exp(-0.835952 * ((s1year + (s1jul / 366)) - 1984.2082))) + 0.656100);
                 gainnewTMS1b3 = ((0.111858 * exp(-1.002090 * ((s1year + (s1jul / 366)) - 1984.2082))) + 0.905000);
                 gainnewTMS1b4 = ((0.107650 * exp(-1.277190 * ((s1year + (s1jul / 366)) - 1984.2082))) + 1.082000);
                 gainnewTMS1b5 = ((0.243364 * exp(-1.207080 * ((s1year + (s1jul / 366)) - 1984.2082))) + 7.944000);
                 gainnewTMS1b7 = ((0.403551 * exp(-0.999127 * ((s1year + (s1jul / 366)) - 1984.2082))) + 14.52000);
                 RADS1TM1[i,j] = ((s1TMg1 * ((gainnewTMS1b1 * ((s1TMg1 * TM1BAND1[i,j]) + s1TMb1)) + biasnewTMb1)) + s1TMb1);
                 RADS1TM2[i,j] = ((s1TMg2 * ((gainnewTMS1b2 * ((s1TMg2 * TM1BAND2[i,j]) + s1TMb2)) + biasnewTMb2)) + s1TMb2);
                 RADS1TM3[i,j] = ((s1TMg3 * ((gainnewTMS1b3 * ((s1TMg3 * TM1BAND3[i,j]) + s1TMb3)) + biasnewTMb3)) + s1TMb3);
                 RADS1TM4[i,j] = ((s1TMg4 * ((gainnewTMS1b4 * ((s1TMg4 * TM1BAND4[i,j]) + s1TMb4)) + biasnewTMb4)) + s1TMb4);
                 RADS1TM5[i,j] = ((s1TMg5 * ((gainnewTMS1b5 * ((s1TMg5 * TM1BAND5[i,j]) + s1TMb5)) + biasnewTMb5)) + s1TMb5);
                 RADS1TM7[i,j] = ((s1TMg7 * ((gainnewTMS1b7 * ((s1TMg7 * TM1BAND7[i,j]) + s1TMb7)) + biasnewTMb7)) + s1TMb7);
		     }
	       }
	 }
CloseRaster(TM1BAND1);
CloseRaster(TM1BAND2);
CloseRaster(TM1BAND3);
CloseRaster(TM1BAND4);
CloseRaster(TM1BAND5);
CloseRaster(TM1BAND7);
printf("Radiance calculation for Scene 1 (TM) is done...\n");
}
else if ( sensors1 == 5 )                                               # MSS 5 - Calib Werte nach Price J.C.1987
{
	raster RADS1MSS1, RADS1MSS2, RADS1MSS3, RADS1MSS4;
	CreateTempRaster(RADS1MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS1MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS1MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS1MSS4, MSSlins, MSScols,"32-bit float");
	for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
         if ( s1aq <= 19841109)                                          # Before 9 November 1984
         {
          RADS1MSS1[i,j] = L5B1bef84gain * MSS1BAND1[i,j] + L5B1bef84bias;
          RADS1MSS2[i,j] = L5B2bef84gain * MSS1BAND2[i,j] + L5B2bef84bias;
          RADS1MSS3[i,j] = L5B3bef84gain * MSS1BAND3[i,j] + L5B3bef84bias;
          RADS1MSS4[i,j] = L5B4bef84gain * MSS1BAND4[i,j] + L5B4bef84bias;
         }
         else                                                             # after 9 November 1984
         {
          RADS1MSS1[i,j] = L5B1aft84gain * MSS1BAND1[i,j] + L5B1aft84bias;
          RADS1MSS2[i,j] = L5B2aft84gain * MSS1BAND2[i,j] + L5B2aft84bias;
          RADS1MSS3[i,j] = L5B3aft84gain * MSS1BAND3[i,j] + L5B3aft84bias;
          RADS1MSS4[i,j] = L5B4aft84gain * MSS1BAND4[i,j] + L5B4aft84bias;
         }
	   }
	}
CloseRaster(MSS1BAND1);
CloseRaster(MSS1BAND2);
CloseRaster(MSS1BAND3);
CloseRaster(MSS1BAND4);
printf("Radiance calculation for Scene 1 (MSS) is done...\n");
}
else if ( sensors1 == 4 )                                               # MSS 4
{
	raster RADS1MSS1, RADS1MSS2, RADS1MSS3, RADS1MSS4;
	CreateTempRaster(RADS1MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS1MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS1MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS1MSS4, MSSlins, MSScols,"32-bit float");
	for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
	      if ( s1aq <= 19830401)                                        # Before 1 April 1983
          {
          RADS1MSS1[i,j]= L4B1bef83gain * MSS1BAND1[i,j] + L4B1bef83bias;
          RADS1MSS2[i,j] = L4B2bef83gain * MSS1BAND2[i,j] + L4B2bef83bias;
          RADS1MSS3[i,j] = L4B3bef83gain * MSS1BAND3[i,j] + L4B3bef83gain;
          RADS1MSS4[i,j] = L4B4bef83gain * MSS1BAND4[i,j] + L4B4bef83bias;
          }
          else                                                             # After 1 April 1983
          {
          RADS1MSS1[i,j] = L4B1aft83gain * MSS1BAND1[i,j] + L4B1aft83bias;
          RADS1MSS2[i,j] = L4B2aft83gain * MSS1BAND2[i,j] + L4B2aft83bias;
          RADS1MSS3[i,j] = L4B3aft83gain * MSS1BAND3[i,j] + L4B3aft83bias;
          RADS1MSS4[i,j] = L4B4aft83gain * MSS1BAND4[i,j] + L4B4aft83bias;
          }
	  }
	}
CloseRaster(MSS1BAND1);
CloseRaster(MSS1BAND2);
CloseRaster(MSS1BAND3);
CloseRaster(MSS1BAND4);
printf("Radiance calculation for Scene 1 (MSS) is done...\n");
}
else if ( sensors1 == 3 )                                               # MSS 3
{
	raster RADS1MSS1, RADS1MSS2, RADS1MSS3, RADS1MSS4;
	CreateTempRaster(RADS1MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS1MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS1MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS1MSS4, MSSlins, MSScols,"32-bit float");
    
    for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
		  if ( s1aq <= 19780601 )                                                  # Before 1 Juni 1978
          {
          RADS1MSS1[i,j] = L3B1bef78gain * MSS1BAND1[i,j] + L3B1bef78bias;
          RADS1MSS2[i,j] = L3B2bef78gain * MSS1BAND2[i,j] + L3B2bef78bias;
          RADS1MSS3[i,j] = L3B3bef78gain * MSS1BAND3[i,j] + L3B3bef78bias;
          RADS1MSS4[i,j] = L3B4bef78gain * MSS1BAND4[i,j] + L3B4bef78bias;
          }
          else if ( s1aq >= 19780602 and s1aq <= 19790201 )                        # 2 Juni 1978  bis  1 Februar 1979
          {
          RADS1MSS1[i,j] = L3B17879gain * MSS1BAND1[i,j] + L3B17879bias;
          RADS1MSS2[i,j] = L3B27879gain * MSS1BAND2[i,j] + L3B27879bias;
          RADS1MSS3[i,j] = L3B37879gain * MSS1BAND3[i,j] + L3B37879bias;
          RADS1MSS4[i,j] = L3B47879gain * MSS1BAND4[i,j] + L3B47879bias;
          }
          else if ( s1aq > 19790201 )                                             # After 1 Februar 1979
          {
          RADS1MSS1[i,j] = L3B1aft79gain * MSS1BAND1[i,j] + L3B1aft79bias;
          RADS1MSS2[i,j] = L3B2aft79gain * MSS1BAND2[i,j] + L3B2aft79bias;
          RADS1MSS3[i,j] = L3B3aft79gain * MSS1BAND3[i,j] + L3B3aft79bias;
          RADS1MSS4[i,j] = L3B4aft79gain * MSS1BAND4[i,j] + L3B4aft79bias;
          }
	   }
    }
CloseRaster(MSS1BAND1);
CloseRaster(MSS1BAND2);
CloseRaster(MSS1BAND3);
CloseRaster(MSS1BAND4);
printf("Radiance calculation for Scene 1 (MSS) is done...\n");
}
else if ( sensors1 == 2 )                                               # MSS 2
{
	raster RADS1MSS1, RADS1MSS2, RADS1MSS3, RADS1MSS4;
	CreateTempRaster(RADS1MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS1MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS1MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS1MSS4, MSSlins, MSScols,"32-bit float");
	for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
	      if ( s1aq <= 19750716 )                                        # Before 16 Juli 1975
          {
          RADS1MSS1[i,j] = L2B1bef75gain * MSS1BAND1[i,j] + L2B1bef75bias;
          RADS1MSS2[i,j] = L2B2bef75gain * MSS1BAND2[i,j] + L2B2bef75bias;
          RADS1MSS3[i,j] = L2B3bef75gain * MSS1BAND3[i,j] + L2B3bef75bias;
          RADS1MSS4[i,j] = L2B4bef75gain * MSS1BAND4[i,j] + L2B4bef75bias;
          }
          else if ( s1aq > 19750716 and s1aq <= 19790201 )
          {
          RADS1MSS1[i,j] = L2B1aft75gain * MSS1BAND1[i,j] + L2B1aft75bias;                     # After 16. Juli 1975
          RADS1MSS2[i,j] = L2B2aft75gain * MSS1BAND2[i,j] + L2B2aft75bias;
          RADS1MSS3[i,j] = L2B3aft75gain * MSS1BAND3[i,j] + L2B3aft75bias;
          RADS1MSS4[i,j] = L2B4aft75gain * MSS1BAND4[i,j] + L2B4aft75bias;
          }
          else if ( s1aq > 19790201 )
          {
          RADS1MSS1[i,j] = L2B1aft79gain * MSS1BAND1[i,j] + L2B1aft79bias;                    # After 1. Februar 1979
          RADS1MSS2[i,j] = L2B2aft79gain * MSS1BAND2[i,j] + L2B2aft79bias;
          RADS1MSS3[i,j] = L2B3aft79gain * MSS1BAND3[i,j] + L2B3aft79bias;
          RADS1MSS4[i,j] = L2B4aft79gain * MSS1BAND4[i,j] + L2B4aft79bias;
          }
	   }  
    }
CloseRaster(MSS1BAND1);
CloseRaster(MSS1BAND2);
CloseRaster(MSS1BAND3);
CloseRaster(MSS1BAND4);
printf("Radiance calculation for Scene 1 (MSS) is done...\n");
}    
else if ( sensors1 == 1 )                                               # MSS 1
{
	raster RADS1MSS1, RADS1MSS2, RADS1MSS3, RADS1MSS4;
	CreateTempRaster(RADS1MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS1MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS1MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS1MSS4, MSSlins, MSScols,"32-bit float");
	for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
	      RADS1MSS1[i,j] = L1B1gain * MSS1BAND1[i,j] + L1B1bias;
          RADS1MSS2[i,j] = L1B2gain * MSS1BAND2[i,j] + L1B1bias;
          RADS1MSS3[i,j] = L1B3gain * MSS1BAND3[i,j] + L1B1bias;
          RADS1MSS4[i,j] = L1B4gain * MSS1BAND4[i,j] + L1B1bias;
	   }
	}
CloseRaster(MSS1BAND1);
CloseRaster(MSS1BAND2);
CloseRaster(MSS1BAND3);
CloseRaster(MSS1BAND4);
printf("Radiance calculation for Scene 1 (MSS) is done...\n");
}
	
###########################
### Radiance Scene 2
###########################
if ( sensors2 == 7 )
{
raster RADS2ETM1, RADS2ETM2, RADS2ETM3, RADS2ETM4, RADS2ETM5, RADS2ETM7;
CreateTempRaster(RADS2ETM1, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS2ETM2, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS2ETM3, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS2ETM4, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS2ETM5, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS2ETM7, ETMlins, ETMcols,"32-bit float");
  for i = 1 to ETMlins
  {
	for j = 1 to ETMcols
	{
		if ( s2aq < 20000701)					# Before 1. July 2000
		{
			if ( earSurCat2 == 8 )				# Desert(hs)
			{
			RADS2ETM1[i,j] = (B1LGLMAXBef2000-B1LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND1[i,j]-QCALMIN)+B1LGLMINBef2000;
			RADS2ETM2[i,j] = (B2LGLMAXBef2000-B2LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND2[i,j]-QCALMIN)+B2LGLMINBef2000;
			RADS2ETM3[i,j] = (B3LGLMAXBef2000-B3LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND3[i,j]-QCALMIN)+B3LGLMINBef2000;
			RADS2ETM4[i,j] = (B4LGLMAXBef2000-B4LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND4[i,j]-QCALMIN)+B4LGLMINBef2000;
			RADS2ETM5[i,j] = (B5LGLMAXBef2000-B5LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND5[i,j]-QCALMIN)+B5LGLMINBef2000;
			RADS2ETM7[i,j] = (B7LGLMAXBef2000-B7LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND7[i,j]-QCALMIN)+B7LGLMINBef2000;
			}
			else if ( earSurCat2 == 7 )			# Desert(ms)
			{
			RADS2ETM1[i,j] = (B1LGLMAXBef2000-B1LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND1[i,j]-QCALMIN)+B1LGLMINBef2000;
			RADS2ETM2[i,j] = (B2LGLMAXBef2000-B2LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND2[i,j]-QCALMIN)+B2LGLMINBef2000;
			RADS2ETM3[i,j] = (B3LGLMAXBef2000-B3LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND3[i,j]-QCALMIN)+B3LGLMINBef2000;
			RADS2ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS2ETM5[i,j] = (B5LGLMAXBef2000-B5LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND5[i,j]-QCALMIN)+B5LGLMINBef2000;
			RADS2ETM7[i,j] = (B7LGLMAXBef2000-B7LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND7[i,j]-QCALMIN)+B7LGLMINBef2000;
			}
			else if ( earSurCat2 == 6 )			# Desert Ice(ls)
			{
			RADS2ETM1[i,j] = (B1LGLMAXBef2000-B1LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND1[i,j]-QCALMIN)+B1LGLMINBef2000;
			RADS2ETM2[i,j] = (B2LGLMAXBef2000-B2LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND2[i,j]-QCALMIN)+B2LGLMINBef2000;
			RADS2ETM3[i,j] = (B3LGLMAXBef2000-B3LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND3[i,j]-QCALMIN)+B3LGLMINBef2000;
			RADS2ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS2ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS2ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat2 == 5 )			# Ice(hs)
			{
			RADS2ETM1[i,j] = (B1LGLMAXBef2000-B1LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND1[i,j]-QCALMIN)+B1LGLMINBef2000;
			RADS2ETM2[i,j] = (B2LGLMAXBef2000-B2LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND2[i,j]-QCALMIN)+B2LGLMINBef2000;
			RADS2ETM3[i,j] = (B3LGLMAXBef2000-B3LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND3[i,j]-QCALMIN)+B3LGLMINBef2000;
			RADS2ETM4[i,j] = (B4LGLMAXBef2000-B4LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND4[i,j]-QCALMIN)+B4LGLMINBef2000;
			RADS2ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS2ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat2 == 4 )			# Land(hs)
			{
			RADS2ETM1[i,j] = (B1HGLMAXBef2000-B1HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND1[i,j]-QCALMIN)+B1HGLMINBef2000;
			RADS2ETM2[i,j] = (B2HGLMAXBef2000-B2HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND2[i,j]-QCALMIN)+B2HGLMINBef2000;
			RADS2ETM3[i,j] = (B3HGLMAXBef2000-B3HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND3[i,j]-QCALMIN)+B3HGLMINBef2000;
			RADS2ETM4[i,j] = (B4LGLMAXBef2000-B4LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND4[i,j]-QCALMIN)+B4LGLMINBef2000;
			RADS2ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS2ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat2 == 3 )			# Land Ocean(ls
			{
			RADS2ETM1[i,j] = (B1HGLMAXBef2000-B1HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND1[i,j]-QCALMIN)+B1HGLMINBef2000;
			RADS2ETM2[i,j] = (B2HGLMAXBef2000-B2HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND2[i,j]-QCALMIN)+B2HGLMINBef2000;
			RADS2ETM3[i,j] = (B3HGLMAXBef2000-B3HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND3[i,j]-QCALMIN)+B3HGLMINBef2000;
			RADS2ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS2ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS2ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat2 == 2 )			# Water
			{
			RADS2ETM1[i,j] = (B1HGLMAXBef2000-B1HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND1[i,j]-QCALMIN)+B1HGLMINBef2000;
			RADS2ETM2[i,j] = (B2HGLMAXBef2000-B2HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND2[i,j]-QCALMIN)+B2HGLMINBef2000;
			RADS2ETM3[i,j] = (B3HGLMAXBef2000-B3HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND3[i,j]-QCALMIN)+B3HGLMINBef2000;
			RADS2ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS2ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS2ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat2 == 1 )			# Night(volcanos
			{
			RADS2ETM1[i,j] = (B1HGLMAXBef2000-B1HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND1[i,j]-QCALMIN)+B1HGLMINBef2000;
			RADS2ETM2[i,j] = (B2HGLMAXBef2000-B2HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND2[i,j]-QCALMIN)+B2HGLMINBef2000;
			RADS2ETM3[i,j] = (B3HGLMAXBef2000-B3HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND3[i,j]-QCALMIN)+B3HGLMINBef2000;
			RADS2ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS2ETM5[i,j] = (B5LGLMAXBef2000-B5LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND5[i,j]-QCALMIN)+B5LGLMINBef2000;
			RADS2ETM7[i,j] = (B7LGLMAXBef2000-B7LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM2BAND7[i,j]-QCALMIN)+B7LGLMINBef2000;
			}
		}
		else								# After 1. July 2000
		{
			if ( earSurCat2 == 8 )				# Desert(hs)
			{
			RADS2ETM1[i,j] = (B1LGLMAXAFT2000-B1LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND1[i,j]-QCALMIN)+B1LGLMINAFT2000;
			RADS2ETM2[i,j] = (B2LGLMAXAFT2000-B2LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND2[i,j]-QCALMIN)+B2LGLMINAFT2000;
			RADS2ETM3[i,j] = (B3LGLMAXAFT2000-B3LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND3[i,j]-QCALMIN)+B3LGLMINAFT2000;
			RADS2ETM4[i,j] = (B4LGLMAXAFT2000-B4LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND4[i,j]-QCALMIN)+B4LGLMINAFT2000;
			RADS2ETM5[i,j] = (B5LGLMAXAFT2000-B5LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND5[i,j]-QCALMIN)+B5LGLMINAFT2000;
			RADS2ETM7[i,j] = (B7LGLMAXAFT2000-B7LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND7[i,j]-QCALMIN)+B7LGLMINAFT2000;
			}
			else if ( earSurCat2 == 7 )			# Desert(ms)
			{
			RADS2ETM1[i,j] = (B1LGLMAXAFT2000-B1LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND1[i,j]-QCALMIN)+B1LGLMINAFT2000;
			RADS2ETM2[i,j] = (B2LGLMAXAFT2000-B2LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND2[i,j]-QCALMIN)+B2LGLMINAFT2000;
			RADS2ETM3[i,j] = (B3LGLMAXAFT2000-B3LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND3[i,j]-QCALMIN)+B3LGLMINAFT2000;
			RADS2ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS2ETM5[i,j] = (B5LGLMAXAFT2000-B5LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND5[i,j]-QCALMIN)+B5LGLMINAFT2000;
			RADS2ETM7[i,j] = (B7LGLMAXAFT2000-B7LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND7[i,j]-QCALMIN)+B7LGLMINAFT2000;
			}
			else if ( earSurCat2 == 6 )			# Desert Ice(ls)
			{
			RADS2ETM1[i,j] = (B1LGLMAXAFT2000-B1LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND1[i,j]-QCALMIN)+B1LGLMINAFT2000;
			RADS2ETM2[i,j] = (B2LGLMAXAFT2000-B2LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND2[i,j]-QCALMIN)+B2LGLMINAFT2000;
			RADS2ETM3[i,j] = (B3LGLMAXAFT2000-B3LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND3[i,j]-QCALMIN)+B3LGLMINAFT2000;
			RADS2ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS2ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS2ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat2 == 5 )			# Ice(hs)
			{
			RADS2ETM1[i,j] = (B1LGLMAXAFT2000-B1LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND1[i,j]-QCALMIN)+B1LGLMINAFT2000;
			RADS2ETM2[i,j] = (B2LGLMAXAFT2000-B2LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND2[i,j]-QCALMIN)+B2LGLMINAFT2000;
			RADS2ETM3[i,j] = (B3LGLMAXAFT2000-B3LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND3[i,j]-QCALMIN)+B3LGLMINAFT2000;
			RADS2ETM4[i,j] = (B4LGLMAXAFT2000-B4LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND4[i,j]-QCALMIN)+B4LGLMINAFT2000;
			RADS2ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS2ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat2 == 4 )			# Land(hs)
			{
			RADS2ETM1[i,j] = (B1HGLMAXAFT2000-B1HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND1[i,j]-QCALMIN)+B1HGLMINAFT2000;
			RADS2ETM2[i,j] = (B2HGLMAXAFT2000-B2HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND2[i,j]-QCALMIN)+B2HGLMINAFT2000;
			RADS2ETM3[i,j] = (B3HGLMAXAFT2000-B3HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND3[i,j]-QCALMIN)+B3HGLMINAFT2000;
			RADS2ETM4[i,j] = (B4LGLMAXAFT2000-B4LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND4[i,j]-QCALMIN)+B4LGLMINAFT2000;
			RADS2ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS2ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat2 == 3 )			# Land Ocean(ls)
			{
			RADS2ETM1[i,j] = (B1HGLMAXAFT2000-B1HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND1[i,j]-QCALMIN)+B1HGLMINAFT2000;
			RADS2ETM2[i,j] = (B2HGLMAXAFT2000-B2HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND2[i,j]-QCALMIN)+B2HGLMINAFT2000;
			RADS2ETM3[i,j] = (B3HGLMAXAFT2000-B3HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND3[i,j]-QCALMIN)+B3HGLMINAFT2000;
			RADS2ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS2ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS2ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat2 == 2 )			# Water
			{
			RADS2ETM1[i,j] = (B1HGLMAXAFT2000-B1HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND1[i,j]-QCALMIN)+B1HGLMINAFT2000;
			RADS2ETM2[i,j] = (B2HGLMAXAFT2000-B2HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND2[i,j]-QCALMIN)+B2HGLMINAFT2000;
			RADS2ETM3[i,j] = (B3HGLMAXAFT2000-B3HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND3[i,j]-QCALMIN)+B3HGLMINAFT2000;
			RADS2ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS2ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS2ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat2 == 1 )			# Night(volcanos)
			{
			RADS2ETM1[i,j] = (B1HGLMAXAFT2000-B1HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND1[i,j]-QCALMIN)+B1HGLMINAFT2000;
			RADS2ETM2[i,j] = (B2HGLMAXAFT2000-B2HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND2[i,j]-QCALMIN)+B2HGLMINAFT2000;
			RADS2ETM3[i,j] = (B3HGLMAXAFT2000-B3HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND3[i,j]-QCALMIN)+B3HGLMINAFT2000;
			RADS2ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS2ETM5[i,j] = (B5LGLMAXAFT2000-B5LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND5[i,j]-QCALMIN)+B5LGLMINAFT2000;
			RADS2ETM7[i,j] = (B7LGLMAXAFT2000-B7LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM2BAND7[i,j]-QCALMIN)+B7LGLMINAFT2000;
			}
		}
	}
  }
CloseRaster(ETM2BAND1);
CloseRaster(ETM2BAND2);
CloseRaster(ETM2BAND3);
CloseRaster(ETM2BAND4);
CloseRaster(ETM2BAND5);
CloseRaster(ETM2BAND7);
printf("Radiance calculation for Scene 2 (ETM) is done...\n");
}
else if ( sensors2 == 6 )
{
    raster RADS2TM1, RADS2TM2, RADS2TM3, RADS2TM4, RADS2TM5, RADS2TM7;
    CreateTempRaster(RADS2TM1, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS2TM2, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS2TM3, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS2TM4, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS2TM5, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS2TM7, TMlins, TMcols,"32-bit float");
	   for i = 1 to TMlins
	   {
	        for j = 1 to TMcols
	        {
		     if (s2leap == 0)
		     {
		     numeric gainnewTMS2b1, gainnewTMS2b2, gainnewTMS2b3, gainnewTMS2b4, gainnewTMS2b5, gainnewTMS2b7;
	             gainnewTMS2b1 = ((0.145658 * exp(-0.955113 * ((s2year + (s2jul / 365)) - 1984.2082))) + 1.243000);
	             gainnewTMS2b2 = ((0.058651 * exp(-0.835952 * ((s2year + (s2jul / 365)) - 1984.2082))) + 0.656100);
                 gainnewTMS2b3 = ((0.111858 * exp(-1.002090 * ((s2year + (s2jul / 365)) - 1984.2082))) + 0.905000);
                 gainnewTMS2b4 = ((0.107650 * exp(-1.277190 * ((s2year + (s2jul / 365)) - 1984.2082))) + 1.082000);
                 gainnewTMS2b5 = ((0.243364 * exp(-1.207080 * ((s2year + (s2jul / 365)) - 1984.2082))) + 7.944000);
                 gainnewTMS2b7 = ((0.403551 * exp(-0.999127 * ((s2year + (s2jul / 365)) - 1984.2082))) + 14.52000);
                 RADS2TM1[i,j] = ((s2TMg1 * ((gainnewTMS2b1 * ((s2TMg1 * TM2BAND1[i,j]) + s2TMb1)) + biasnewTMb1)) + s2TMb1);
                 RADS2TM2[i,j] = ((s2TMg2 * ((gainnewTMS2b2 * ((s2TMg2 * TM2BAND2[i,j]) + s2TMb2)) + biasnewTMb2)) + s2TMb2);
                 RADS2TM3[i,j] = ((s2TMg3 * ((gainnewTMS2b3 * ((s2TMg3 * TM2BAND3[i,j]) + s2TMb3)) + biasnewTMb3)) + s2TMb3);
                 RADS2TM4[i,j] = ((s2TMg4 * ((gainnewTMS2b4 * ((s2TMg4 * TM2BAND4[i,j]) + s2TMb4)) + biasnewTMb4)) + s2TMb4);
                 RADS2TM5[i,j] = ((s2TMg5 * ((gainnewTMS2b5 * ((s2TMg5 * TM2BAND5[i,j]) + s2TMb5)) + biasnewTMb5)) + s2TMb5);
                 RADS2TM7[i,j] = ((s2TMg7 * ((gainnewTMS2b7 * ((s2TMg7 * TM2BAND7[i,j]) + s2TMb7)) + biasnewTMb7)) + s2TMb7);
		     }
		     else if (s2leap == 1)
		     {
		     numeric gainnewTMS2b1, gainnewTMS2b2, gainnewTMS2b3, gainnewTMS2b4, gainnewTMS2b5, gainnewTMS2b7;
	             gainnewTMS2b1 = ((0.145658 * exp(-0.955113 * ((s2year + (s2jul / 366)) - 1984.2082))) + 1.243000);
	             gainnewTMS2b2 = ((0.058651 * exp(-0.835952 * ((s2year + (s2jul / 366)) - 1984.2082))) + 0.656100);
                 gainnewTMS2b3 = ((0.111858 * exp(-1.002090 * ((s2year + (s2jul / 366)) - 1984.2082))) + 0.905000);
                 gainnewTMS2b4 = ((0.107650 * exp(-1.277190 * ((s2year + (s2jul / 366)) - 1984.2082))) + 1.082000);
                 gainnewTMS2b5 = ((0.243364 * exp(-1.207080 * ((s2year + (s2jul / 366)) - 1984.2082))) + 7.944000);
                 gainnewTMS2b7 = ((0.403551 * exp(-0.999127 * ((s2year + (s2jul / 366)) - 1984.2082))) + 14.52000);
                 RADS2TM1[i,j] = ((s2TMg1 * ((gainnewTMS2b1 * ((s2TMg1 * TM2BAND1[i,j]) + s2TMb1)) + biasnewTMb1)) + s2TMb1);
                 RADS2TM2[i,j] = ((s2TMg2 * ((gainnewTMS2b2 * ((s2TMg2 * TM2BAND2[i,j]) + s2TMb2)) + biasnewTMb2)) + s2TMb2);
                 RADS2TM3[i,j] = ((s2TMg3 * ((gainnewTMS2b3 * ((s2TMg3 * TM2BAND3[i,j]) + s2TMb3)) + biasnewTMb3)) + s2TMb3);
                 RADS2TM4[i,j] = ((s2TMg4 * ((gainnewTMS2b4 * ((s2TMg4 * TM2BAND4[i,j]) + s2TMb4)) + biasnewTMb4)) + s2TMb4);
                 RADS2TM5[i,j] = ((s2TMg5 * ((gainnewTMS2b5 * ((s2TMg5 * TM2BAND5[i,j]) + s2TMb5)) + biasnewTMb5)) + s2TMb5);
                 RADS2TM7[i,j] = ((s2TMg7 * ((gainnewTMS2b7 * ((s2TMg7 * TM2BAND7[i,j]) + s2TMb7)) + biasnewTMb7)) + s2TMb7);
		     }
             }
	 }
CloseRaster(TM2BAND1);
CloseRaster(TM2BAND2);
CloseRaster(TM2BAND3);
CloseRaster(TM2BAND4);
CloseRaster(TM2BAND5);
CloseRaster(TM2BAND7);
printf("Radiance calculation for Scene 2 (TM) is done...\n");
}
else if ( sensors2 == 5 )                                               # MSS 5 - Calib Werte nach Price J.C.1987
{
	raster RADS2MSS1, RADS2MSS2, RADS2MSS3, RADS2MSS4;
	CreateTempRaster(RADS2MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS2MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS2MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS2MSS4, MSSlins, MSScols,"32-bit float");
	for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
         if ( s2aq <= 19841109)                                          # Before 9 November 1984
         {
          RADS2MSS1[i,j] = L5B1bef84gain * MSS2BAND1[i,j] + L5B1bef84bias;
          RADS2MSS2[i,j] = L5B2bef84gain * MSS2BAND2[i,j] + L5B2bef84bias;
          RADS2MSS3[i,j] = L5B3bef84gain * MSS2BAND3[i,j] + L5B3bef84bias;
          RADS2MSS4[i,j] = L5B4bef84gain * MSS2BAND4[i,j] + L5B4bef84bias;
         }
         else                                                             # after 9 November 1984
         {
          RADS2MSS1[i,j] = L5B1aft84gain * MSS2BAND1[i,j] + L5B1aft84bias;
          RADS2MSS2[i,j] = L5B2aft84gain * MSS2BAND2[i,j] + L5B2aft84bias;
          RADS2MSS3[i,j] = L5B3aft84gain * MSS2BAND3[i,j] + L5B3aft84bias;
          RADS2MSS4[i,j] = L5B4aft84gain * MSS2BAND4[i,j] + L5B4aft84bias;
         }
	   }
	}
CloseRaster(MSS2BAND1);
CloseRaster(MSS2BAND2);
CloseRaster(MSS2BAND3);
CloseRaster(MSS2BAND4);
printf("Radiance calculation for Scene 2 (MSS) is done...\n");
}
else if ( sensors2 == 4 )                                               # MSS 4
{
	raster RADS2MSS1, RADS2MSS2, RADS2MSS3, RADS2MSS4;
	CreateTempRaster(RADS2MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS2MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS2MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS2MSS4, MSSlins, MSScols,"32-bit float");
	for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
	      if ( s2aq <= 19830401)                                        # Before 1 April 1983
          {
          RADS2MSS1[i,j] = L4B1bef83gain * MSS2BAND1[i,j] + L4B1bef83bias;
          RADS2MSS2[i,j] = L4B2bef83gain * MSS2BAND2[i,j] + L4B2bef83bias;
          RADS2MSS3[i,j] = L4B3bef83gain * MSS2BAND3[i,j] + L4B3bef83gain;
          RADS2MSS4[i,j] = L4B4bef83gain * MSS2BAND4[i,j] + L4B4bef83bias;
          }
          else                                                             # After 1 April 1983
          {
          RADS2MSS1[i,j] = L4B1aft83gain * MSS2BAND1[i,j] + L4B1aft83bias;
          RADS2MSS2[i,j] = L4B2aft83gain * MSS2BAND2[i,j] + L4B2aft83bias;
          RADS2MSS3[i,j] = L4B3aft83gain * MSS2BAND3[i,j] + L4B3aft83bias;
          RADS2MSS4[i,j] = L4B4aft83gain * MSS2BAND4[i,j] + L4B4aft83bias;
          }
	  }
	}
CloseRaster(MSS2BAND1);
CloseRaster(MSS2BAND2);
CloseRaster(MSS2BAND3);
CloseRaster(MSS2BAND4);
printf("Radiance calculation for Scene 2 (MSS) is done...\n");
}
else if ( sensors2 == 3 )                                               # MSS 3
{
	raster RADS2MSS1, RADS2MSS2, RADS2MSS3, RADS2MSS4;
	CreateTempRaster(RADS2MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS2MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS2MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS2MSS4, MSSlins, MSScols,"32-bit float");
    
    for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
		  if ( s2aq <= 19780601 )                                                  # Before 1 Juni 1978
          {
          RADS2MSS1[i,j] = L3B1bef78gain * MSS2BAND1[i,j] + L3B1bef78bias;
          RADS2MSS2[i,j] = L3B2bef78gain * MSS2BAND2[i,j] + L3B2bef78bias;
          RADS2MSS3[i,j] = L3B3bef78gain * MSS2BAND3[i,j] + L3B3bef78bias;
          RADS2MSS4[i,j] = L3B4bef78gain * MSS2BAND4[i,j] + L3B4bef78bias;
          }
          else if ( s2aq >= 19780602 and s2aq <= 19790201 )                        # 2 Juni 1978  bis  1 Februar 1979
          {
          RADS2MSS1[i,j] = L3B17879gain * MSS2BAND1[i,j] + L3B17879bias;
          RADS2MSS2[i,j] = L3B27879gain * MSS2BAND2[i,j] + L3B27879bias;
          RADS2MSS3[i,j] = L3B37879gain * MSS2BAND3[i,j] + L3B37879bias;
          RADS2MSS4[i,j] = L3B47879gain * MSS2BAND4[i,j] + L3B47879bias;
          }
          else if ( s2aq > 19790201 )                                             # After 1 Februar 1979
          {
          RADS2MSS1[i,j] = L3B1aft79gain * MSS2BAND1[i,j] + L3B1aft79bias;
          RADS2MSS2[i,j] = L3B2aft79gain * MSS2BAND2[i,j] + L3B2aft79bias;
          RADS2MSS3[i,j] = L3B3aft79gain * MSS2BAND3[i,j] + L3B3aft79bias;
          RADS2MSS4[i,j] = L3B4aft79gain * MSS2BAND4[i,j] + L3B4aft79bias;
          }
	   }
    }
CloseRaster(MSS2BAND1);
CloseRaster(MSS2BAND2);
CloseRaster(MSS2BAND3);
CloseRaster(MSS2BAND4);
printf("Radiance calculation for Scene 2 (MSS) is done...\n");
}
else if ( sensors2 == 2 )                                               # MSS 2
{
	raster RADS2MSS1, RADS2MSS2, RADS2MSS3, RADS2MSS4;
	CreateTempRaster(RADS2MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS2MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS2MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS2MSS4, MSSlins, MSScols,"32-bit float");
	for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
	      if ( s2aq <= 19750716 )                                        # Before 16 Juli 1975
          {
          RADS2MSS1[i,j] = L2B1bef75gain * MSS2BAND1[i,j] + L2B1bef75bias;
          RADS2MSS2[i,j] = L2B2bef75gain * MSS2BAND2[i,j] + L2B2bef75bias;
          RADS2MSS3[i,j] = L2B3bef75gain * MSS2BAND3[i,j] + L2B3bef75bias;
          RADS2MSS4[i,j] = L2B4bef75gain * MSS2BAND4[i,j] + L2B4bef75bias;
          }
          else if ( s2aq > 19750716 and s2aq <= 19790201 )
          {
          RADS2MSS1[i,j] = L2B1aft75gain * MSS2BAND1[i,j] + L2B1aft75bias;                     # After 16. Juli 1975
          RADS2MSS2[i,j] = L2B2aft75gain * MSS2BAND2[i,j] + L2B2aft75bias;
          RADS2MSS3[i,j] = L2B3aft75gain * MSS2BAND3[i,j] + L2B3aft75bias;
          RADS2MSS4[i,j] = L2B4aft75gain * MSS2BAND4[i,j] + L2B4aft75bias;
          }
          else if ( s2aq > 19790201 )
          {
          RADS2MSS1[i,j] = L2B1aft79gain * MSS2BAND1[i,j] + L2B1aft79bias;                    # After 1. Februar 1979
          RADS2MSS2[i,j] = L2B2aft79gain * MSS2BAND2[i,j] + L2B2aft79bias;
          RADS2MSS3[i,j] = L2B3aft79gain * MSS2BAND3[i,j] + L2B3aft79bias;
          RADS2MSS4[i,j] = L2B4aft79gain * MSS2BAND4[i,j] + L2B4aft79bias;
          }
	   }  
    }
CloseRaster(MSS2BAND1);
CloseRaster(MSS2BAND2);
CloseRaster(MSS2BAND3);
CloseRaster(MSS2BAND4);
printf("Radiance calculation for Scene 2 (MSS) is done...\n");
}    
else if ( sensors2 == 1 )                                               # MSS 1
{
	raster RADS2MSS1, RADS2MSS2, RADS2MSS3, RADS2MSS4;
	CreateTempRaster(RADS2MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS2MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS2MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS2MSS4, MSSlins, MSScols,"32-bit float");
	for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
		  RADS2MSS1[i,j] = L1B1gain * MSS2BAND1[i,j] + L1B1bias;
          RADS2MSS2[i,j] = L1B2gain * MSS2BAND2[i,j] + L1B1bias;
          RADS2MSS3[i,j] = L1B3gain * MSS2BAND3[i,j] + L1B1bias;
          RADS2MSS4[i,j] = L1B4gain * MSS2BAND4[i,j] + L1B1bias;
	   }
	}
CloseRaster(MSS2BAND1);
CloseRaster(MSS2BAND2);
CloseRaster(MSS2BAND3);
CloseRaster(MSS2BAND4);
printf("Radiance calculation for Scene 2 (MSS) is done...\n");
}
###########################
### Radiance Scene 3
###########################
if ( sensors3 == 7 )
{
raster RADS3ETM1, RADS3ETM2, RADS3ETM3, RADS3ETM4, RADS3ETM5, RADS3ETM7;
CreateTempRaster(RADS3ETM1, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS3ETM2, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS3ETM3, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS3ETM4, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS3ETM5, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS3ETM7, ETMlins, ETMcols,"32-bit float");
  for i = 1 to ETMlins
  {
	for j = 1 to ETMcols
	{
		if ( s3aq < 20000701)					# Before 1. July 2000
		{
			if ( earSurCat3 == 8 )				# Desert(hs)
			{
			RADS3ETM1[i,j] = (B1LGLMAXBef2000-B1LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND1[i,j]-QCALMIN)+B1LGLMINBef2000;
			RADS3ETM2[i,j] = (B2LGLMAXBef2000-B2LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND2[i,j]-QCALMIN)+B2LGLMINBef2000;
			RADS3ETM3[i,j] = (B3LGLMAXBef2000-B3LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND3[i,j]-QCALMIN)+B3LGLMINBef2000;
			RADS3ETM4[i,j] = (B4LGLMAXBef2000-B4LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND4[i,j]-QCALMIN)+B4LGLMINBef2000;
			RADS3ETM5[i,j] = (B5LGLMAXBef2000-B5LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND5[i,j]-QCALMIN)+B5LGLMINBef2000;
			RADS3ETM7[i,j] = (B7LGLMAXBef2000-B7LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND7[i,j]-QCALMIN)+B7LGLMINBef2000;
			}
			else if ( earSurCat3 == 7 )			# Desert(ms)
			{
			RADS3ETM1[i,j] = (B1LGLMAXBef2000-B1LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND1[i,j]-QCALMIN)+B1LGLMINBef2000;
			RADS3ETM2[i,j] = (B2LGLMAXBef2000-B2LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND2[i,j]-QCALMIN)+B2LGLMINBef2000;
			RADS3ETM3[i,j] = (B3LGLMAXBef2000-B3LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND3[i,j]-QCALMIN)+B3LGLMINBef2000;
			RADS3ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS3ETM5[i,j] = (B5LGLMAXBef2000-B5LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND5[i,j]-QCALMIN)+B5LGLMINBef2000;
			RADS3ETM7[i,j] = (B7LGLMAXBef2000-B7LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND7[i,j]-QCALMIN)+B7LGLMINBef2000;
			}
			else if ( earSurCat3 == 6 )			# Desert Ice(ls)
			{
			RADS3ETM1[i,j] = (B1LGLMAXBef2000-B1LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND1[i,j]-QCALMIN)+B1LGLMINBef2000;
			RADS3ETM2[i,j] = (B2LGLMAXBef2000-B2LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND2[i,j]-QCALMIN)+B2LGLMINBef2000;
			RADS3ETM3[i,j] = (B3LGLMAXBef2000-B3LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND3[i,j]-QCALMIN)+B3LGLMINBef2000;
			RADS3ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS3ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS3ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat3 == 5 )			# Ice(hs)
			{
			RADS3ETM1[i,j] = (B1LGLMAXBef2000-B1LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND1[i,j]-QCALMIN)+B1LGLMINBef2000;
			RADS3ETM2[i,j] = (B2LGLMAXBef2000-B2LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND2[i,j]-QCALMIN)+B2LGLMINBef2000;
			RADS3ETM3[i,j] = (B3LGLMAXBef2000-B3LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND3[i,j]-QCALMIN)+B3LGLMINBef2000;
			RADS3ETM4[i,j] = (B4LGLMAXBef2000-B4LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND4[i,j]-QCALMIN)+B4LGLMINBef2000;
			RADS3ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS3ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat3 == 4 )			# Land(hs)
			{
			RADS3ETM1[i,j] = (B1HGLMAXBef2000-B1HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND1[i,j]-QCALMIN)+B1HGLMINBef2000;
			RADS3ETM2[i,j] = (B2HGLMAXBef2000-B2HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND2[i,j]-QCALMIN)+B2HGLMINBef2000;
			RADS3ETM3[i,j] = (B3HGLMAXBef2000-B3HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND3[i,j]-QCALMIN)+B3HGLMINBef2000;
			RADS3ETM4[i,j] = (B4LGLMAXBef2000-B4LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND4[i,j]-QCALMIN)+B4LGLMINBef2000;
			RADS3ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS3ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat3 == 3 )			# Land Ocean(ls
			{
			RADS3ETM1[i,j] = (B1HGLMAXBef2000-B1HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND1[i,j]-QCALMIN)+B1HGLMINBef2000;
			RADS3ETM2[i,j] = (B2HGLMAXBef2000-B2HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND2[i,j]-QCALMIN)+B2HGLMINBef2000;
			RADS3ETM3[i,j] = (B3HGLMAXBef2000-B3HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND3[i,j]-QCALMIN)+B3HGLMINBef2000;
			RADS3ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS3ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS3ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat3 == 2 )			# Water
			{
			RADS3ETM1[i,j] = (B1HGLMAXBef2000-B1HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND1[i,j]-QCALMIN)+B1HGLMINBef2000;
			RADS3ETM2[i,j] = (B2HGLMAXBef2000-B2HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND2[i,j]-QCALMIN)+B2HGLMINBef2000;
			RADS3ETM3[i,j] = (B3HGLMAXBef2000-B3HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND3[i,j]-QCALMIN)+B3HGLMINBef2000;
			RADS3ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS3ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS3ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat3 == 1 )			# Night(volcanos
			{
			RADS3ETM1[i,j] = (B1HGLMAXBef2000-B1HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND1[i,j]-QCALMIN)+B1HGLMINBef2000;
			RADS3ETM2[i,j] = (B2HGLMAXBef2000-B2HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND2[i,j]-QCALMIN)+B2HGLMINBef2000;
			RADS3ETM3[i,j] = (B3HGLMAXBef2000-B3HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND3[i,j]-QCALMIN)+B3HGLMINBef2000;
			RADS3ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS3ETM5[i,j] = (B5LGLMAXBef2000-B5LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND5[i,j]-QCALMIN)+B5LGLMINBef2000;
			RADS3ETM7[i,j] = (B7LGLMAXBef2000-B7LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM3BAND7[i,j]-QCALMIN)+B7LGLMINBef2000;
			}
		}
		else								# After 1. July 2000
		{
			if ( earSurCat3 == 8 )				# Desert(hs)
			{
			RADS3ETM1[i,j] = (B1LGLMAXAFT2000-B1LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND1[i,j]-QCALMIN)+B1LGLMINAFT2000;
			RADS3ETM2[i,j] = (B2LGLMAXAFT2000-B2LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND2[i,j]-QCALMIN)+B2LGLMINAFT2000;
			RADS3ETM3[i,j] = (B3LGLMAXAFT2000-B3LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND3[i,j]-QCALMIN)+B3LGLMINAFT2000;
			RADS3ETM4[i,j] = (B4LGLMAXAFT2000-B4LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND4[i,j]-QCALMIN)+B4LGLMINAFT2000;
			RADS3ETM5[i,j] = (B5LGLMAXAFT2000-B5LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND5[i,j]-QCALMIN)+B5LGLMINAFT2000;
			RADS3ETM7[i,j] = (B7LGLMAXAFT2000-B7LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND7[i,j]-QCALMIN)+B7LGLMINAFT2000;
			}
			else if ( earSurCat3 == 7 )			# Desert(ms)
			{
			RADS3ETM1[i,j] = (B1LGLMAXAFT2000-B1LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND1[i,j]-QCALMIN)+B1LGLMINAFT2000;
			RADS3ETM2[i,j] = (B2LGLMAXAFT2000-B2LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND2[i,j]-QCALMIN)+B2LGLMINAFT2000;
			RADS3ETM3[i,j] = (B3LGLMAXAFT2000-B3LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND3[i,j]-QCALMIN)+B3LGLMINAFT2000;
			RADS3ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS3ETM5[i,j] = (B5LGLMAXAFT2000-B5LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND5[i,j]-QCALMIN)+B5LGLMINAFT2000;
			RADS3ETM7[i,j] = (B7LGLMAXAFT2000-B7LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND7[i,j]-QCALMIN)+B7LGLMINAFT2000;
			}
			else if ( earSurCat3 == 6 )			# Desert Ice(ls)
			{
			RADS3ETM1[i,j] = (B1LGLMAXAFT2000-B1LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND1[i,j]-QCALMIN)+B1LGLMINAFT2000;
			RADS3ETM2[i,j] = (B2LGLMAXAFT2000-B2LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND2[i,j]-QCALMIN)+B2LGLMINAFT2000;
			RADS3ETM3[i,j] = (B3LGLMAXAFT2000-B3LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND3[i,j]-QCALMIN)+B3LGLMINAFT2000;
			RADS3ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS3ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS3ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat3 == 5 )			# Ice(hs)
			{
			RADS3ETM1[i,j] = (B1LGLMAXAFT2000-B1LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND1[i,j]-QCALMIN)+B1LGLMINAFT2000;
			RADS3ETM2[i,j] = (B2LGLMAXAFT2000-B2LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND2[i,j]-QCALMIN)+B2LGLMINAFT2000;
			RADS3ETM3[i,j] = (B3LGLMAXAFT2000-B3LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND3[i,j]-QCALMIN)+B3LGLMINAFT2000;
			RADS3ETM4[i,j] = (B4LGLMAXAFT2000-B4LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND4[i,j]-QCALMIN)+B4LGLMINAFT2000;
			RADS3ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS3ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat3 == 4 )			# Land(hs)
			{
			RADS3ETM1[i,j] = (B1HGLMAXAFT2000-B1HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND1[i,j]-QCALMIN)+B1HGLMINAFT2000;
			RADS3ETM2[i,j] = (B2HGLMAXAFT2000-B2HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND2[i,j]-QCALMIN)+B2HGLMINAFT2000;
			RADS3ETM3[i,j] = (B3HGLMAXAFT2000-B3HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND3[i,j]-QCALMIN)+B3HGLMINAFT2000;
			RADS3ETM4[i,j] = (B4LGLMAXAFT2000-B4LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND4[i,j]-QCALMIN)+B4LGLMINAFT2000;
			RADS3ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS3ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat3 == 3 )			# Land Ocean(ls
			{
			RADS3ETM1[i,j] = (B1HGLMAXAFT2000-B1HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND1[i,j]-QCALMIN)+B1HGLMINAFT2000;
			RADS3ETM2[i,j] = (B2HGLMAXAFT2000-B2HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND2[i,j]-QCALMIN)+B2HGLMINAFT2000;
			RADS3ETM3[i,j] = (B3HGLMAXAFT2000-B3HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND3[i,j]-QCALMIN)+B3HGLMINAFT2000;
			RADS3ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS3ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS3ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat3 == 2 )			# Water
			{
			RADS3ETM1[i,j] = (B1HGLMAXAFT2000-B1HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND1[i,j]-QCALMIN)+B1HGLMINAFT2000;
			RADS3ETM2[i,j] = (B2HGLMAXAFT2000-B2HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND2[i,j]-QCALMIN)+B2HGLMINAFT2000;
			RADS3ETM3[i,j] = (B3HGLMAXAFT2000-B3HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND3[i,j]-QCALMIN)+B3HGLMINAFT2000;
			RADS3ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS3ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS3ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat3 == 1 )			# Night(volcanos
			{
			RADS3ETM1[i,j] = (B1HGLMAXAFT2000-B1HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND1[i,j]-QCALMIN)+B1HGLMINAFT2000;
			RADS3ETM2[i,j] = (B2HGLMAXAFT2000-B2HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND2[i,j]-QCALMIN)+B2HGLMINAFT2000;
			RADS3ETM3[i,j] = (B3HGLMAXAFT2000-B3HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND3[i,j]-QCALMIN)+B3HGLMINAFT2000;
			RADS3ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS3ETM5[i,j] = (B5LGLMAXAFT2000-B5LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND5[i,j]-QCALMIN)+B5LGLMINAFT2000;
			RADS3ETM7[i,j] = (B7LGLMAXAFT2000-B7LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM3BAND7[i,j]-QCALMIN)+B7LGLMINAFT2000;
			}
		}
	 }
  }
  
CloseRaster(ETM3BAND1);
CloseRaster(ETM3BAND2);
CloseRaster(ETM3BAND3);
CloseRaster(ETM3BAND4);
CloseRaster(ETM3BAND5);
CloseRaster(ETM3BAND7);
printf("Radiance calculation for Scene 3 (ETM) is done...\n");
}
else if ( sensors3 == 6 )
{
    raster RADS3TM1, RADS3TM2, RADS3TM3, RADS3TM4, RADS3TM5, RADS3TM7;
    CreateTempRaster(RADS3TM1, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS3TM2, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS3TM3, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS3TM4, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS3TM5, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS3TM7, TMlins, TMcols,"32-bit float");
	   for i = 1 to TMlins
	   {
	        for j = 1 to TMcols
	        {
      	     if (s3leap == 0)
		     {
		     numeric gainnewTMS3b1, gainnewTMS3b2, gainnewTMS3b3, gainnewTMS3b4, gainnewTMS3b5, gainnewTMS3b7;
	             gainnewTMS3b1 = ((0.145658 * exp(-0.955113 * ((s3year + (s3jul / 365)) - 1984.2082))) + 1.243000);
	             gainnewTMS3b2 = ((0.058651 * exp(-0.835952 * ((s3year + (s3jul / 365)) - 1984.2082))) + 0.656100);
                 gainnewTMS3b3 = ((0.111858 * exp(-1.002090 * ((s3year + (s3jul / 365)) - 1984.2082))) + 0.905000);
                 gainnewTMS3b4 = ((0.107650 * exp(-1.277190 * ((s3year + (s3jul / 365)) - 1984.2082))) + 1.082000);
                 gainnewTMS3b5 = ((0.243364 * exp(-1.207080 * ((s3year + (s3jul / 365)) - 1984.2082))) + 7.944000);
                 gainnewTMS3b7 = ((0.403551 * exp(-0.999127 * ((s3year + (s3jul / 365)) - 1984.2082))) + 14.52000);
                 RADS3TM1[i,j] = ((s3TMg1 * ((gainnewTMS3b1 * ((s3TMg1 * TM3BAND1[i,j]) + s3TMb1)) + biasnewTMb1)) + s3TMb1);
                 RADS3TM2[i,j] = ((s3TMg2 * ((gainnewTMS3b2 * ((s3TMg2 * TM3BAND2[i,j]) + s3TMb2)) + biasnewTMb2)) + s3TMb2);
                 RADS3TM3[i,j] = ((s3TMg3 * ((gainnewTMS3b3 * ((s3TMg3 * TM3BAND3[i,j]) + s3TMb3)) + biasnewTMb3)) + s3TMb3);
                 RADS3TM4[i,j] = ((s3TMg4 * ((gainnewTMS3b4 * ((s3TMg4 * TM3BAND4[i,j]) + s3TMb4)) + biasnewTMb4)) + s3TMb4);
                 RADS3TM5[i,j] = ((s3TMg5 * ((gainnewTMS3b5 * ((s3TMg5 * TM3BAND5[i,j]) + s3TMb5)) + biasnewTMb5)) + s3TMb5);
                 RADS3TM7[i,j] = ((s3TMg7 * ((gainnewTMS3b7 * ((s3TMg7 * TM3BAND7[i,j]) + s3TMb7)) + biasnewTMb7)) + s3TMb7);
		     }
		     else if (s3leap == 1)
		     {
		     numeric gainnewTMS3b1, gainnewTMS3b2, gainnewTMS3b3, gainnewTMS3b4, gainnewTMS3b5, gainnewTMS3b7;
	             gainnewTMS3b1 = ((0.145658 * exp(-0.955113 * ((s3year + (s3jul / 366)) - 1984.2082))) + 1.243000);
	             gainnewTMS3b2 = ((0.058651 * exp(-0.835952 * ((s3year + (s3jul / 366)) - 1984.2082))) + 0.656100);
                 gainnewTMS3b3 = ((0.111858 * exp(-1.002090 * ((s3year + (s3jul / 366)) - 1984.2082))) + 0.905000);
                 gainnewTMS3b4 = ((0.107650 * exp(-1.277190 * ((s3year + (s3jul / 366)) - 1984.2082))) + 1.082000);
                 gainnewTMS3b5 = ((0.243364 * exp(-1.207080 * ((s3year + (s3jul / 366)) - 1984.2082))) + 7.944000);
                 gainnewTMS3b7 = ((0.403551 * exp(-0.999127 * ((s3year + (s3jul / 366)) - 1984.2082))) + 14.52000);
                 RADS3TM1[i,j] = ((s3TMg1 * ((gainnewTMS3b1 * ((s3TMg1 * TM3BAND1[i,j]) + s3TMb1)) + biasnewTMb1)) + s3TMb1);
                 RADS3TM2[i,j] = ((s3TMg2 * ((gainnewTMS3b2 * ((s3TMg2 * TM3BAND2[i,j]) + s3TMb2)) + biasnewTMb2)) + s3TMb2);
                 RADS3TM3[i,j] = ((s3TMg3 * ((gainnewTMS3b3 * ((s3TMg3 * TM3BAND3[i,j]) + s3TMb3)) + biasnewTMb3)) + s3TMb3);
                 RADS3TM4[i,j] = ((s3TMg4 * ((gainnewTMS3b4 * ((s3TMg4 * TM3BAND4[i,j]) + s3TMb4)) + biasnewTMb4)) + s3TMb4);
                 RADS3TM5[i,j] = ((s3TMg5 * ((gainnewTMS3b5 * ((s3TMg5 * TM3BAND5[i,j]) + s3TMb5)) + biasnewTMb5)) + s3TMb5);
                 RADS3TM7[i,j] = ((s3TMg7 * ((gainnewTMS3b7 * ((s3TMg7 * TM3BAND7[i,j]) + s3TMb7)) + biasnewTMb7)) + s3TMb7);
		     }
	       }
	 }
CloseRaster(TM3BAND1);
CloseRaster(TM3BAND2);
CloseRaster(TM3BAND3);
CloseRaster(TM3BAND4);
CloseRaster(TM3BAND5);
CloseRaster(TM3BAND7);
printf("Radiance calculation for Scene 3 (TM) is done...\n");
}
else if ( sensors3 == 5 )                                               # MSS 5 - Calib Werte nach Price J.C.1987
{
	raster RADS3MSS1, RADS3MSS2, RADS3MSS3, RADS3MSS4;
	CreateTempRaster(RADS3MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS3MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS3MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS3MSS4, MSSlins, MSScols,"32-bit float");
	for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
         if ( s3aq <= 19841109)                                          # Before 9 November 1984
         {
          RADS3MSS1[i,j] = L5B1bef84gain * MSS3BAND1[i,j] + L5B1bef84bias;
          RADS3MSS2[i,j] = L5B2bef84gain * MSS3BAND2[i,j] + L5B2bef84bias;
          RADS3MSS3[i,j] = L5B3bef84gain * MSS3BAND3[i,j] + L5B3bef84bias;
          RADS3MSS4[i,j] = L5B4bef84gain * MSS3BAND4[i,j] + L5B4bef84bias;
         }
         else                                                             # after 9 November 1984
         {
          RADS3MSS1[i,j] = L5B1aft84gain * MSS3BAND1[i,j] + L5B1aft84bias;
          RADS3MSS2[i,j] = L5B2aft84gain * MSS3BAND2[i,j] + L5B2aft84bias;
          RADS3MSS3[i,j] = L5B3aft84gain * MSS3BAND3[i,j] + L5B3aft84bias;
          RADS3MSS4[i,j] = L5B4aft84gain * MSS3BAND4[i,j] + L5B4aft84bias;
         }
	   }
	}
CloseRaster(MSS3BAND1);
CloseRaster(MSS3BAND2);
CloseRaster(MSS3BAND3);
CloseRaster(MSS3BAND4);
printf("Radiance calculation for Scene 3 (MSS) is done...\n");
}
else if ( sensors3 == 4 )                                               # MSS 4
{
	raster RADS3MSS1, RADS3MSS2, RADS3MSS3, RADS3MSS4;
	CreateTempRaster(RADS3MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS3MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS3MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS3MSS4, MSSlins, MSScols,"32-bit float");
	for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
	      if ( s3aq <= 19830401)                                        # Before 1 April 1983
          {
          RADS3MSS1[i,j] = L4B1bef83gain * MSS3BAND1[i,j] + L4B1bef83bias;
          RADS3MSS2[i,j] = L4B2bef83gain * MSS3BAND2[i,j] + L4B2bef83bias;
          RADS3MSS3[i,j] = L4B3bef83gain * MSS3BAND3[i,j] + L4B3bef83gain;
          RADS3MSS4[i,j] = L4B4bef83gain * MSS3BAND4[i,j] + L4B4bef83bias;
          }
          else                                                             # After 1 April 1983
          {
          RADS3MSS1[i,j] = L4B1aft83gain * MSS3BAND1[i,j] + L4B1aft83bias;
          RADS3MSS2[i,j] = L4B2aft83gain * MSS3BAND2[i,j] + L4B2aft83bias;
          RADS3MSS3[i,j] = L4B3aft83gain * MSS3BAND3[i,j] + L4B3aft83bias;
          RADS3MSS4[i,j] = L4B4aft83gain * MSS3BAND4[i,j] + L4B4aft83bias;
          }
	  }
	}
CloseRaster(MSS3BAND1);
CloseRaster(MSS3BAND2);
CloseRaster(MSS3BAND3);
CloseRaster(MSS3BAND4);
printf("Radiance calculation for Scene 3 (MSS) is done...\n");
}
else if ( sensors3 == 3 )                                               # MSS 3
{
	raster RADS3MSS1, RADS3MSS2, RADS3MSS3, RADS3MSS4;
	CreateTempRaster(RADS3MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS3MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS3MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS3MSS4, MSSlins, MSScols,"32-bit float");
    
    for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
		  if ( s3aq <= 19780601 )                                                  # Before 1 Juni 1978
          {
          RADS3MSS1[i,j] = L3B1bef78gain * MSS3BAND1[i,j] + L3B1bef78bias;
          RADS3MSS2[i,j] = L3B2bef78gain * MSS3BAND2[i,j] + L3B2bef78bias;
          RADS3MSS3[i,j] = L3B3bef78gain * MSS3BAND3[i,j] + L3B3bef78bias;
          RADS3MSS4[i,j] = L3B4bef78gain * MSS3BAND4[i,j] + L3B4bef78bias;
          }
          else if ( s3aq >= 19780602 and s3aq <= 19790201 )                        # 2 Juni 1978  bis  1 Februar 1979
          {
          RADS3MSS1[i,j] = L3B17879gain * MSS3BAND1[i,j] + L3B17879bias;
          RADS3MSS2[i,j] = L3B27879gain * MSS3BAND2[i,j] + L3B27879bias;
          RADS3MSS3[i,j] = L3B37879gain * MSS3BAND3[i,j] + L3B37879bias;
          RADS3MSS4[i,j] = L3B47879gain * MSS3BAND4[i,j] + L3B47879bias;
          }
          else if ( s3aq > 19790201 )                                             # After 1 Februar 1979
          {
          RADS3MSS1[i,j] = L3B1aft79gain * MSS3BAND1[i,j] + L3B1aft79bias;
          RADS3MSS2[i,j] = L3B2aft79gain * MSS3BAND2[i,j] + L3B2aft79bias;
          RADS3MSS3[i,j] = L3B3aft79gain * MSS3BAND3[i,j] + L3B3aft79bias;
          RADS3MSS4[i,j] = L3B4aft79gain * MSS3BAND4[i,j] + L3B4aft79bias;
          }
	   }
    }
CloseRaster(MSS3BAND1);
CloseRaster(MSS3BAND2);
CloseRaster(MSS3BAND3);
CloseRaster(MSS3BAND4);
printf("Radiance calculation for Scene 3 (MSS) is done...\n");
}
else if ( sensors3 == 2 )                                               # MSS 2
{
	raster RADS3MSS1, RADS3MSS2, RADS3MSS3, RADS3MSS4;
	CreateTempRaster(RADS3MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS3MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS3MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS3MSS4, MSSlins, MSScols,"32-bit float");
	for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
	      if ( s3aq <= 19750716 )                                        # Before 16 Juli 1975
          {
          RADS3MSS1[i,j] = L2B1bef75gain * MSS3BAND1[i,j] + L2B1bef75bias;
          RADS3MSS2[i,j] = L2B2bef75gain * MSS3BAND2[i,j] + L2B2bef75bias;
          RADS3MSS3[i,j] = L2B3bef75gain * MSS3BAND3[i,j] + L2B3bef75bias;
          RADS3MSS4[i,j] = L2B4bef75gain * MSS3BAND4[i,j] + L2B4bef75bias;
          }
          else if ( s3aq > 19750716 and s3aq <= 19790201 )
          {
          RADS3MSS1[i,j] = L2B1aft75gain * MSS3BAND1[i,j] + L2B1aft75bias;                     # After 16. Juli 1975
          RADS3MSS2[i,j] = L2B2aft75gain * MSS3BAND2[i,j] + L2B2aft75bias;
          RADS3MSS3[i,j] = L2B3aft75gain * MSS3BAND3[i,j] + L2B3aft75bias;
          RADS3MSS4[i,j] = L2B4aft75gain * MSS3BAND4[i,j] + L2B4aft75bias;
          }
          else if ( s3aq > 19790201 )
          {
          RADS3MSS1[i,j] = L2B1aft79gain * MSS3BAND1[i,j] + L2B1aft79bias;                    # After 1. Februar 1979
          RADS3MSS2[i,j] = L2B2aft79gain * MSS3BAND2[i,j] + L2B2aft79bias;
          RADS3MSS3[i,j] = L2B3aft79gain * MSS3BAND3[i,j] + L2B3aft79bias;
          RADS3MSS4[i,j] = L2B4aft79gain * MSS3BAND4[i,j] + L2B4aft79bias;
          }
	   }  
    }
CloseRaster(MSS3BAND1);
CloseRaster(MSS3BAND2);
CloseRaster(MSS3BAND3);
CloseRaster(MSS3BAND4);
printf("Radiance calculation for Scene 3 (MSS) is done...\n");
}    
else if ( sensors3 == 1 )                                               # MSS 1
{
	raster RADS3MSS1, RADS3MSS2, RADS3MSS3, RADS3MSS4;
	CreateTempRaster(RADS3MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS3MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS3MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS3MSS4, MSSlins, MSScols,"32-bit float");
	for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
	    RADS3MSS1[i,j] = L1B1gain * MSS3BAND1[i,j] + L1B1bias;
          RADS3MSS2[i,j] = L1B2gain * MSS3BAND2[i,j] + L1B1bias;
          RADS3MSS3[i,j] = L1B3gain * MSS3BAND3[i,j] + L1B1bias;
          RADS3MSS4[i,j] = L1B4gain * MSS3BAND4[i,j] + L1B1bias;
	   }
	}
CloseRaster(MSS3BAND1);
CloseRaster(MSS3BAND2);
CloseRaster(MSS3BAND3);
CloseRaster(MSS3BAND4);
printf("Radiance calculation for Scene 3 (MSS) is done...\n");
}
###########################
### Radiance Scene 4
###########################
if ( sensors4 == 7 )
{
raster RADS4ETM1, RADS4ETM2, RADS4ETM3, RADS4ETM4, RADS4ETM5, RADS4ETM7;
CreateTempRaster(RADS4ETM1, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS4ETM2, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS4ETM3, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS4ETM4, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS4ETM5, ETMlins, ETMcols,"32-bit float");
CreateTempRaster(RADS4ETM7, ETMlins, ETMcols,"32-bit float");
  for i = 1 to ETMlins
  {
	for j = 1 to ETMcols
	{
		if ( s4aq < 20000701)					# Before 1. July 2000
		{
			if ( earSurCat4 == 8 )				# Desert(hs)
			{
			RADS4ETM1[i,j] = (B1LGLMAXBef2000-B1LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND1[i,j]-QCALMIN)+B1LGLMINBef2000;
			RADS4ETM2[i,j] = (B2LGLMAXBef2000-B2LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND2[i,j]-QCALMIN)+B2LGLMINBef2000;
			RADS4ETM3[i,j] = (B3LGLMAXBef2000-B3LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND3[i,j]-QCALMIN)+B3LGLMINBef2000;
			RADS4ETM4[i,j] = (B4LGLMAXBef2000-B4LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND4[i,j]-QCALMIN)+B4LGLMINBef2000;
			RADS4ETM5[i,j] = (B5LGLMAXBef2000-B5LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND5[i,j]-QCALMIN)+B5LGLMINBef2000;
			RADS4ETM7[i,j] = (B7LGLMAXBef2000-B7LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND7[i,j]-QCALMIN)+B7LGLMINBef2000;
			}
			else if ( earSurCat4 == 7 )			# Desert(ms)
			{
			RADS4ETM1[i,j] = (B1LGLMAXBef2000-B1LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND1[i,j]-QCALMIN)+B1LGLMINBef2000;
			RADS4ETM2[i,j] = (B2LGLMAXBef2000-B2LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND2[i,j]-QCALMIN)+B2LGLMINBef2000;
			RADS4ETM3[i,j] = (B3LGLMAXBef2000-B3LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND3[i,j]-QCALMIN)+B3LGLMINBef2000;
			RADS4ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS4ETM5[i,j] = (B5LGLMAXBef2000-B5LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND5[i,j]-QCALMIN)+B5LGLMINBef2000;
			RADS4ETM7[i,j] = (B7LGLMAXBef2000-B7LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND7[i,j]-QCALMIN)+B7LGLMINBef2000;
			}
			else if ( earSurCat4 == 6 )			# Desert Ice(ls)
			{
			RADS4ETM1[i,j] = (B1LGLMAXBef2000-B1LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND1[i,j]-QCALMIN)+B1LGLMINBef2000;
			RADS4ETM2[i,j] = (B2LGLMAXBef2000-B2LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND2[i,j]-QCALMIN)+B2LGLMINBef2000;
			RADS4ETM3[i,j] = (B3LGLMAXBef2000-B3LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND3[i,j]-QCALMIN)+B3LGLMINBef2000;
			RADS4ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS4ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS4ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat4 == 5 )			# Ice(hs)
			{
			RADS4ETM1[i,j] = (B1LGLMAXBef2000-B1LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND1[i,j]-QCALMIN)+B1LGLMINBef2000;
			RADS4ETM2[i,j] = (B2LGLMAXBef2000-B2LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND2[i,j]-QCALMIN)+B2LGLMINBef2000;
			RADS4ETM3[i,j] = (B3LGLMAXBef2000-B3LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND3[i,j]-QCALMIN)+B3LGLMINBef2000;
			RADS4ETM4[i,j] = (B4LGLMAXBef2000-B4LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND4[i,j]-QCALMIN)+B4LGLMINBef2000;
			RADS4ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS4ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat4 == 4 )			# Land(hs)
			{
			RADS4ETM1[i,j] = (B1HGLMAXBef2000-B1HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND1[i,j]-QCALMIN)+B1HGLMINBef2000;
			RADS4ETM2[i,j] = (B2HGLMAXBef2000-B2HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND2[i,j]-QCALMIN)+B2HGLMINBef2000;
			RADS4ETM3[i,j] = (B3HGLMAXBef2000-B3HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND3[i,j]-QCALMIN)+B3HGLMINBef2000;
			RADS4ETM4[i,j] = (B4LGLMAXBef2000-B4LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND4[i,j]-QCALMIN)+B4LGLMINBef2000;
			RADS4ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS4ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat4 == 3 )			# Land Ocean(ls
			{
			RADS4ETM1[i,j] = (B1HGLMAXBef2000-B1HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND1[i,j]-QCALMIN)+B1HGLMINBef2000;
			RADS4ETM2[i,j] = (B2HGLMAXBef2000-B2HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND2[i,j]-QCALMIN)+B2HGLMINBef2000;
			RADS4ETM3[i,j] = (B3HGLMAXBef2000-B3HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND3[i,j]-QCALMIN)+B3HGLMINBef2000;
			RADS4ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS4ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS4ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat4 == 2 )			# Water
			{
			RADS4ETM1[i,j] = (B1HGLMAXBef2000-B1HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND1[i,j]-QCALMIN)+B1HGLMINBef2000;
			RADS4ETM2[i,j] = (B2HGLMAXBef2000-B2HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND2[i,j]-QCALMIN)+B2HGLMINBef2000;
			RADS4ETM3[i,j] = (B3HGLMAXBef2000-B3HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND3[i,j]-QCALMIN)+B3HGLMINBef2000;
			RADS4ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS4ETM5[i,j] = (B5HGLMAXBef2000-B5HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND5[i,j]-QCALMIN)+B5HGLMINBef2000;
			RADS4ETM7[i,j] = (B7HGLMAXBef2000-B7HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND7[i,j]-QCALMIN)+B7HGLMINBef2000;
			}
			else if ( earSurCat4 == 1 )			# Night(volcanos
			{
			RADS4ETM1[i,j] = (B1HGLMAXBef2000-B1HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND1[i,j]-QCALMIN)+B1HGLMINBef2000;
			RADS4ETM2[i,j] = (B2HGLMAXBef2000-B2HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND2[i,j]-QCALMIN)+B2HGLMINBef2000;
			RADS4ETM3[i,j] = (B3HGLMAXBef2000-B3HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND3[i,j]-QCALMIN)+B3HGLMINBef2000;
			RADS4ETM4[i,j] = (B4HGLMAXBef2000-B4HGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND4[i,j]-QCALMIN)+B4HGLMINBef2000;
			RADS4ETM5[i,j] = (B5LGLMAXBef2000-B5LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND5[i,j]-QCALMIN)+B5LGLMINBef2000;
			RADS4ETM7[i,j] = (B7LGLMAXBef2000-B7LGLMINBef2000)/(QCALMAX-QCALMIN)*(ETM4BAND7[i,j]-QCALMIN)+B7LGLMINBef2000;
			}
		}
		else								# After 1. July 2000
		{
			if ( earSurCat4 == 8 )				# Desert(hs)
			{
			RADS4ETM1[i,j] = (B1LGLMAXAFT2000-B1LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND1[i,j]-QCALMIN)+B1LGLMINAFT2000;
			RADS4ETM2[i,j] = (B2LGLMAXAFT2000-B2LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND2[i,j]-QCALMIN)+B2LGLMINAFT2000;
			RADS4ETM3[i,j] = (B3LGLMAXAFT2000-B3LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND3[i,j]-QCALMIN)+B3LGLMINAFT2000;
			RADS4ETM4[i,j] = (B4LGLMAXAFT2000-B4LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND4[i,j]-QCALMIN)+B4LGLMINAFT2000;
			RADS4ETM5[i,j] = (B5LGLMAXAFT2000-B5LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND5[i,j]-QCALMIN)+B5LGLMINAFT2000;
			RADS4ETM7[i,j] = (B7LGLMAXAFT2000-B7LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND7[i,j]-QCALMIN)+B7LGLMINAFT2000;
			}
			else if ( earSurCat4 == 7 )			# Desert(ms)
			{
			RADS4ETM1[i,j] = (B1LGLMAXAFT2000-B1LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND1[i,j]-QCALMIN)+B1LGLMINAFT2000;
			RADS4ETM2[i,j] = (B2LGLMAXAFT2000-B2LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND2[i,j]-QCALMIN)+B2LGLMINAFT2000;
			RADS4ETM3[i,j] = (B3LGLMAXAFT2000-B3LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND3[i,j]-QCALMIN)+B3LGLMINAFT2000;
			RADS4ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS4ETM5[i,j] = (B5LGLMAXAFT2000-B5LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND5[i,j]-QCALMIN)+B5LGLMINAFT2000;
			RADS4ETM7[i,j] = (B7LGLMAXAFT2000-B7LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND7[i,j]-QCALMIN)+B7LGLMINAFT2000;
			}
			else if ( earSurCat4 == 6 )			# Desert Ice(ls)
			{
			RADS4ETM1[i,j] = (B1LGLMAXAFT2000-B1LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND1[i,j]-QCALMIN)+B1LGLMINAFT2000;
			RADS4ETM2[i,j] = (B2LGLMAXAFT2000-B2LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND2[i,j]-QCALMIN)+B2LGLMINAFT2000;
			RADS4ETM3[i,j] = (B3LGLMAXAFT2000-B3LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND3[i,j]-QCALMIN)+B3LGLMINAFT2000;
			RADS4ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS4ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS4ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat4 == 5 )			# Ice(hs)
			{
			RADS4ETM1[i,j] = (B1LGLMAXAFT2000-B1LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND1[i,j]-QCALMIN)+B1LGLMINAFT2000;
			RADS4ETM2[i,j] = (B2LGLMAXAFT2000-B2LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND2[i,j]-QCALMIN)+B2LGLMINAFT2000;
			RADS4ETM3[i,j] = (B3LGLMAXAFT2000-B3LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND3[i,j]-QCALMIN)+B3LGLMINAFT2000;
			RADS4ETM4[i,j] = (B4LGLMAXAFT2000-B4LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND4[i,j]-QCALMIN)+B4LGLMINAFT2000;
			RADS4ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS4ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat4 == 4 )			# Land(hs)
			{
			RADS4ETM1[i,j] = (B1HGLMAXAFT2000-B1HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND1[i,j]-QCALMIN)+B1HGLMINAFT2000;
			RADS4ETM2[i,j] = (B2HGLMAXAFT2000-B2HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND2[i,j]-QCALMIN)+B2HGLMINAFT2000;
			RADS4ETM3[i,j] = (B3HGLMAXAFT2000-B3HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND3[i,j]-QCALMIN)+B3HGLMINAFT2000;
			RADS4ETM4[i,j] = (B4LGLMAXAFT2000-B4LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND4[i,j]-QCALMIN)+B4LGLMINAFT2000;
			RADS4ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS4ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat4 == 3 )			# Land Ocean(ls
			{
			RADS4ETM1[i,j] = (B1HGLMAXAFT2000-B1HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND1[i,j]-QCALMIN)+B1HGLMINAFT2000;
			RADS4ETM2[i,j] = (B2HGLMAXAFT2000-B2HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND2[i,j]-QCALMIN)+B2HGLMINAFT2000;
			RADS4ETM3[i,j] = (B3HGLMAXAFT2000-B3HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND3[i,j]-QCALMIN)+B3HGLMINAFT2000;
			RADS4ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS4ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS4ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat4 == 2 )			# Water
			{
			RADS4ETM1[i,j] = (B1HGLMAXAFT2000-B1HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND1[i,j]-QCALMIN)+B1HGLMINAFT2000;
			RADS4ETM2[i,j] = (B2HGLMAXAFT2000-B2HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND2[i,j]-QCALMIN)+B2HGLMINAFT2000;
			RADS4ETM3[i,j] = (B3HGLMAXAFT2000-B3HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND3[i,j]-QCALMIN)+B3HGLMINAFT2000;
			RADS4ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS4ETM5[i,j] = (B5HGLMAXAFT2000-B5HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND5[i,j]-QCALMIN)+B5HGLMINAFT2000;
			RADS4ETM7[i,j] = (B7HGLMAXAFT2000-B7HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND7[i,j]-QCALMIN)+B7HGLMINAFT2000;
			}
			else if ( earSurCat4 == 1 )			# Night(volcanos
			{
			RADS4ETM1[i,j] = (B1HGLMAXAFT2000-B1HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND1[i,j]-QCALMIN)+B1HGLMINAFT2000;
			RADS4ETM2[i,j] = (B2HGLMAXAFT2000-B2HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND2[i,j]-QCALMIN)+B2HGLMINAFT2000;
			RADS4ETM3[i,j] = (B3HGLMAXAFT2000-B3HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND3[i,j]-QCALMIN)+B3HGLMINAFT2000;
			RADS4ETM4[i,j] = (B4HGLMAXAFT2000-B4HGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND4[i,j]-QCALMIN)+B4HGLMINAFT2000;
			RADS4ETM5[i,j] = (B5LGLMAXAFT2000-B5LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND5[i,j]-QCALMIN)+B5LGLMINAFT2000;
			RADS4ETM7[i,j] = (B7LGLMAXAFT2000-B7LGLMINAFT2000)/(QCALMAX-QCALMIN)*(ETM4BAND7[i,j]-QCALMIN)+B7LGLMINAFT2000;
			}
		}
	}
  }
CloseRaster(ETM4BAND1);
CloseRaster(ETM4BAND2);
CloseRaster(ETM4BAND3);
CloseRaster(ETM4BAND4);
CloseRaster(ETM4BAND5);
CloseRaster(ETM4BAND7);
printf("Radiance calculation for Scene 4 (ETM) is done...\n\n");
}
else if ( sensors4 == 6 )
{
    raster RADS4TM1, RADS4TM2, RADS4TM3, RADS4TM4, RADS4TM5, RADS4TM7;
    CreateTempRaster(RADS4TM1, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS4TM2, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS4TM3, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS4TM4, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS4TM5, TMlins, TMcols,"32-bit float");
    CreateTempRaster(RADS4TM7, TMlins, TMcols,"32-bit float");
	   for i = 1 to TMlins
	   {
	        for j = 1 to TMcols
	        {
		     if (s4leap == 0)
		     {
		     numeric gainnewTMS4b1, gainnewTMS4b2, gainnewTMS4b3, gainnewTMS4b4, gainnewTMS4b5, gainnewTMS4b7;
	             gainnewTMS4b1 = ((0.145658 * exp(-0.955113 * ((s4year + (s4jul / 365)) - 1984.2082))) + 1.243000);
	             gainnewTMS4b2 = ((0.058651 * exp(-0.835952 * ((s4year + (s4jul / 365)) - 1984.2082))) + 0.656100);
                 gainnewTMS4b3 = ((0.111858 * exp(-1.002090 * ((s4year + (s4jul / 365)) - 1984.2082))) + 0.905000);
                 gainnewTMS4b4 = ((0.107650 * exp(-1.277190 * ((s4year + (s4jul / 365)) - 1984.2082))) + 1.082000);
                 gainnewTMS4b5 = ((0.243364 * exp(-1.207080 * ((s4year + (s4jul / 365)) - 1984.2082))) + 7.944000);
                 gainnewTMS4b7 = ((0.403551 * exp(-0.999127 * ((s4year + (s4jul / 365)) - 1984.2082))) + 14.52000);
                 RADS4TM1[i,j] = ((s4TMg1 * ((gainnewTMS4b1 * ((s4TMg1 * TM4BAND1[i,j]) + s4TMb1)) + biasnewTMb1)) + s4TMb1);
                 RADS4TM2[i,j] = ((s4TMg2 * ((gainnewTMS4b2 * ((s4TMg2 * TM4BAND2[i,j]) + s4TMb2)) + biasnewTMb2)) + s4TMb2);
                 RADS4TM3[i,j] = ((s4TMg3 * ((gainnewTMS4b3 * ((s4TMg3 * TM4BAND3[i,j]) + s4TMb3)) + biasnewTMb3)) + s4TMb3);
                 RADS4TM4[i,j] = ((s4TMg4 * ((gainnewTMS4b4 * ((s4TMg4 * TM4BAND4[i,j]) + s4TMb4)) + biasnewTMb4)) + s4TMb4);
                 RADS4TM5[i,j] = ((s4TMg5 * ((gainnewTMS4b5 * ((s4TMg5 * TM4BAND5[i,j]) + s4TMb5)) + biasnewTMb5)) + s4TMb5);
                 RADS4TM7[i,j] = ((s4TMg7 * ((gainnewTMS4b7 * ((s4TMg7 * TM4BAND7[i,j]) + s4TMb7)) + biasnewTMb7)) + s4TMb7);
		     }
		     else if (s4leap == 1)
		     {
		     numeric gainnewTMS4b1, gainnewTMS4b2, gainnewTMS4b3, gainnewTMS4b4, gainnewTMS4b5, gainnewTMS4b7;
	           gainnewTMS4b1 = ((0.145658 * exp(-0.955113 * ((s4year + (s4jul / 366)) - 1984.2082))) + 1.243000);
	           gainnewTMS4b2 = ((0.058651 * exp(-0.835952 * ((s4year + (s4jul / 366)) - 1984.2082))) + 0.656100);
                 gainnewTMS4b3 = ((0.111858 * exp(-1.002090 * ((s4year + (s4jul / 366)) - 1984.2082))) + 0.905000);
                 gainnewTMS4b4 = ((0.107650 * exp(-1.277190 * ((s4year + (s4jul / 366)) - 1984.2082))) + 1.082000);
                 gainnewTMS4b5 = ((0.243364 * exp(-1.207080 * ((s4year + (s4jul / 366)) - 1984.2082))) + 7.944000);
                 gainnewTMS4b7 = ((0.403551 * exp(-0.999127 * ((s4year + (s4jul / 366)) - 1984.2082))) + 14.52000);
                 RADS4TM1[i,j] = ((s4TMg1 * ((gainnewTMS4b1 * ((s4TMg1 * TM4BAND1[i,j]) + s4TMb1)) + biasnewTMb1)) + s4TMb1);
                 RADS4TM2[i,j] = ((s4TMg2 * ((gainnewTMS4b2 * ((s4TMg2 * TM4BAND2[i,j]) + s4TMb2)) + biasnewTMb2)) + s4TMb2);
                 RADS4TM3[i,j] = ((s4TMg3 * ((gainnewTMS4b3 * ((s4TMg3 * TM4BAND3[i,j]) + s4TMb3)) + biasnewTMb3)) + s4TMb3);
                 RADS4TM4[i,j] = ((s4TMg4 * ((gainnewTMS4b4 * ((s4TMg4 * TM4BAND4[i,j]) + s4TMb4)) + biasnewTMb4)) + s4TMb4);
                 RADS4TM5[i,j] = ((s4TMg5 * ((gainnewTMS4b5 * ((s4TMg5 * TM4BAND5[i,j]) + s4TMb5)) + biasnewTMb5)) + s4TMb5);
                 RADS4TM7[i,j] = ((s4TMg7 * ((gainnewTMS4b7 * ((s4TMg7 * TM4BAND7[i,j]) + s4TMb7)) + biasnewTMb7)) + s4TMb7);
		     }
 	       }
	 }
CloseRaster(TM4BAND1);
CloseRaster(TM4BAND2);
CloseRaster(TM4BAND3);
CloseRaster(TM4BAND4);
CloseRaster(TM4BAND5);
CloseRaster(TM4BAND7);
printf("Radiance calculation for Scene 4 (TM) is done...\n\n");
}
else if ( sensors4 == 5 )                                               # MSS 5 - Calib Werte nach Price J.C.1987
{
	raster RADS4MSS1, RADS4MSS2, RADS4MSS3, RADS4MSS4;
	CreateTempRaster(RADS4MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS4MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS4MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS4MSS4, MSSlins, MSScols,"32-bit float");
	for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
         if ( s4aq <= 19841109 )                                          # Before 9 November 1984
         {
          RADS4MSS1[i,j] = L5B1bef84gain * MSS4BAND1[i,j] + L5B1bef84bias;
          RADS4MSS2[i,j] = L5B2bef84gain * MSS4BAND2[i,j] + L5B2bef84bias;
          RADS4MSS3[i,j] = L5B3bef84gain * MSS4BAND3[i,j] + L5B3bef84bias;
          RADS4MSS4[i,j] = L5B4bef84gain * MSS4BAND4[i,j] + L5B4bef84bias;
         }
         else                                                             # after 9 November 1984
         {
          RADS4MSS1[i,j] = L5B1aft84gain * MSS4BAND1[i,j] + L5B1aft84bias;
          RADS4MSS2[i,j] = L5B2aft84gain * MSS4BAND2[i,j] + L5B2aft84bias;
          RADS4MSS3[i,j] = L5B3aft84gain * MSS4BAND3[i,j] + L5B3aft84bias;
          RADS4MSS4[i,j] = L5B4aft84gain * MSS4BAND4[i,j] + L5B4aft84bias;
         }
	   }
	}
CloseRaster(MSS4BAND1);
CloseRaster(MSS4BAND2);
CloseRaster(MSS4BAND3);
CloseRaster(MSS4BAND4);
printf("Radiance calculation for Scene 4 (MSS) is done...\n\n");
}
else if ( sensors4 == 4 )                                               # MSS 4
{
	raster RADS4MSS1, RADS4MSS2, RADS4MSS3, RADS4MSS4;
	CreateTempRaster(RADS4MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS4MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS4MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS4MSS4, MSSlins, MSScols,"32-bit float");
	for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
	      if ( s4aq <= 19830401)                                        # Before 1 April 1983
          {
          RADS4MSS1[i,j] = L4B1bef83gain * MSS4BAND1[i,j] + L4B1bef83bias;
          RADS4MSS2[i,j] = L4B2bef83gain * MSS4BAND2[i,j] + L4B2bef83bias;
          RADS4MSS3[i,j] = L4B3bef83gain * MSS4BAND3[i,j] + L4B3bef83gain;
          RADS4MSS4[i,j] = L4B4bef83gain * MSS4BAND4[i,j] + L4B4bef83bias;
          }
          else                                                             # After 1 April 1983
          {
          RADS4MSS1[i,j] = L4B1aft83gain * MSS4BAND1[i,j] + L4B1aft83bias;
          RADS4MSS2[i,j] = L4B2aft83gain * MSS4BAND2[i,j] + L4B2aft83bias;
          RADS4MSS3[i,j] = L4B3aft83gain * MSS4BAND3[i,j] + L4B3aft83bias;
          RADS4MSS4[i,j] = L4B4aft83gain * MSS4BAND4[i,j] + L4B4aft83bias;
          }
	  }
	}
CloseRaster(MSS4BAND1);
CloseRaster(MSS4BAND2);
CloseRaster(MSS4BAND3);
CloseRaster(MSS4BAND4);
printf("Radiance calculation for Scene 4 (MSS) is done...\n\n");
}
else if ( sensors4 == 3 )                                               # MSS 3
{
	raster RADS4MSS1, RADS4MSS2, RADS4MSS3, RADS4MSS4;
	CreateTempRaster(RADS4MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS4MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS4MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS4MSS4, MSSlins, MSScols,"32-bit float");
    
    for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
		  if ( s4aq <= 19780601 )                                                  # Before 1 Juni 1978
          {
          RADS4MSS1[i,j] = L3B1bef78gain * MSS4BAND1[i,j] + L3B1bef78bias;
          RADS4MSS2[i,j] = L3B2bef78gain * MSS4BAND2[i,j] + L3B2bef78bias;
          RADS4MSS3[i,j] = L3B3bef78gain * MSS4BAND3[i,j] + L3B3bef78bias;
          RADS4MSS4[i,j] = L3B4bef78gain * MSS4BAND4[i,j] + L3B4bef78bias;
          }
          else if ( s4aq >= 19780602 and s4aq <= 19790201 )                        # 2 Juni 1978  bis  1 Februar 1979
          {
          RADS4MSS1[i,j] = L3B17879gain * MSS4BAND1[i,j] + L3B17879bias;
          RADS4MSS2[i,j] = L3B27879gain * MSS4BAND2[i,j] + L3B27879bias;
          RADS4MSS3[i,j] = L3B37879gain * MSS4BAND3[i,j] + L3B37879bias;
          RADS4MSS4[i,j] = L3B47879gain * MSS4BAND4[i,j] + L3B47879bias;
          }
          else if ( s1aq > 19790201 )                                             # After 1 Februar 1979
          {
          RADS4MSS1[i,j] = L3B1aft79gain * MSS4BAND1[i,j] + L3B1aft79bias;
          RADS4MSS2[i,j] = L3B2aft79gain * MSS4BAND2[i,j] + L3B2aft79bias;
          RADS4MSS3[i,j] = L3B3aft79gain * MSS4BAND3[i,j] + L3B3aft79bias;
          RADS4MSS4[i,j] = L3B4aft79gain * MSS4BAND4[i,j] + L3B4aft79bias;
          }
	   }
    }
CloseRaster(MSS4BAND1);
CloseRaster(MSS4BAND2);
CloseRaster(MSS4BAND3);
CloseRaster(MSS4BAND4);
printf("Radiance calculation for Scene 4 (MSS) is done...\n\n");
}
else if ( sensors4 == 2 )                                               # MSS 2
{
	raster RADS4MSS1, RADS4MSS2, RADS4MSS3, RADS4MSS4;
	CreateTempRaster(RADS4MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS4MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS4MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS4MSS4, MSSlins, MSScols,"32-bit float");
	for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
	      if ( s4aq <= 19750716 )                                        # Before 16 Juli 1975
          {
          RADS4MSS1[i,j] = L2B1bef75gain * MSS4BAND1[i,j] + L2B1bef75bias;
          RADS4MSS2[i,j] = L2B2bef75gain * MSS4BAND2[i,j] + L2B2bef75bias;
          RADS4MSS3[i,j] = L2B3bef75gain * MSS4BAND3[i,j] + L2B3bef75bias;
          RADS4MSS4[i,j] = L2B4bef75gain * MSS4BAND4[i,j] + L2B4bef75bias;
          }
          else if ( s4aq > 19750716 and s4aq <= 19790201 )
          {
          RADS4MSS1[i,j] = L2B1aft75gain * MSS4BAND1[i,j] + L2B1aft75bias;                     # After 16. Juli 1975
          RADS4MSS2[i,j] = L2B2aft75gain * MSS4BAND2[i,j] + L2B2aft75bias;
          RADS4MSS3[i,j] = L2B3aft75gain * MSS4BAND3[i,j] + L2B3aft75bias;
          RADS4MSS4[i,j] = L2B4aft75gain * MSS4BAND4[i,j] + L2B4aft75bias;
          }
          else if ( s4aq > 19790201 )
          {
          RADS4MSS1[i,j] = L2B1aft79gain * MSS4BAND1[i,j] + L2B1aft79bias;                    # After 1. Februar 1979
          RADS4MSS2[i,j] = L2B2aft79gain * MSS4BAND2[i,j] + L2B2aft79bias;
          RADS4MSS3[i,j] = L2B3aft79gain * MSS4BAND3[i,j] + L2B3aft79bias;
          RADS4MSS4[i,j] = L2B4aft79gain * MSS4BAND4[i,j] + L2B4aft79bias;
          }
	   }  
    }
CloseRaster(MSS4BAND1);
CloseRaster(MSS4BAND2);
CloseRaster(MSS4BAND3);
CloseRaster(MSS4BAND4);
printf("Radiance calculation for Scene 4 (MSS) is done...\n\n");
}    
else if ( sensors4 == 1 )                                               # MSS 1
{
	raster RADS4MSS1, RADS4MSS2, RADS4MSS3, RADS4MSS4;
	CreateTempRaster(RADS4MSS1, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS4MSS2, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS4MSS3, MSSlins, MSScols,"32-bit float");
    CreateTempRaster(RADS4MSS4, MSSlins, MSScols,"32-bit float");
	for i = 1 to MSSlins
	{
	   for j = 1 to MSScols
	   {
		  RADS4MSS1[i,j] = L1B1gain * MSS4BAND1[i,j] + L1B1bias;
          RADS4MSS2[i,j] = L1B2gain * MSS4BAND2[i,j] + L1B1bias;
          RADS4MSS3[i,j] = L1B3gain * MSS4BAND3[i,j] + L1B1bias;
          RADS4MSS4[i,j] = L1B4gain * MSS4BAND4[i,j] + L1B1bias;
	   }
	}
CloseRaster(MSS4BAND1);
CloseRaster(MSS4BAND2);
CloseRaster(MSS4BAND3);
CloseRaster(MSS4BAND4);
printf("Radiance calculation for Scene 4 (MSS) is done...\n\n");
}
printf("The computation of radiance rasters is done...\n\n\n");
######################################
###### Begin processing.
###### Calculate Refelectance.
######################################
printf( "Starting of to compute the reflectance rasters...\n\n" );
#############################
#### Reflectance Scene 1
#############################
if ( sensors1 == 7 )
{
raster REFS1ETM1, REFS1ETM2, REFS1ETM3, REFS1ETM4, REFS1ETM5, REFS1ETM7;
numeric radsurfETMS1b1, radsurfETMS1b2, radsurfETMS1b3, radsurfETMS1b4, radsurfETMS1b5, radsurfETMS1b7;
numeric valueS1ETM1, valueS1ETM2, valueS1ETM3, valueS1ETM4, valueS1ETM5, valueS1ETM7;
numeric dosS1ETM1nullValCount = 0;
numeric dosS1ETM2nullValCount = 0;
numeric dosS1ETM3nullValCount = 0;
numeric dosS1ETM4nullValCount = 0;
numeric dosS1ETM5nullValCount = 0;
numeric dosS1ETM7nullValCount = 0;
numeric dosS1ETM1realArrayCount = 1;
numeric dosS1ETM2realArrayCount = 1;
numeric dosS1ETM3realArrayCount = 1;
numeric dosS1ETM4realArrayCount = 1;
numeric dosS1ETM5realArrayCount = 1;
numeric dosS1ETM7realArrayCount = 1;
numeric countS1REFnullETM1 = 0;
numeric countS1REFnullETM2 = 0;
numeric countS1REFnullETM3 = 0;
numeric countS1REFnullETM4 = 0;
numeric countS1REFnullETM5 = 0;
numeric countS1REFnullETM7 = 0;
numeric countS1REFoneETM1 = 0;
numeric countS1REFoneETM2 = 0;
numeric countS1REFoneETM3 = 0;
numeric countS1REFoneETM4 = 0;
numeric countS1REFoneETM5 = 0;
numeric countS1REFoneETM7 = 0;
radsurfETMS1b1 = ESETM1 / (dist1^2);
radsurfETMS1b2 = ESETM2 / (dist1^2);
radsurfETMS1b3 = ESETM3 / (dist1^2);
radsurfETMS1b4 = ESETM4 / (dist1^2);
radsurfETMS1b5 = ESETM5 / (dist1^2);
radsurfETMS1b7 = ESETM7 / (dist1^2);
printf("Surface Radiance ETM Band 1 in W/m^2�m (Scene 1): %12f\n", radsurfETMS1b1);
printf("Surface Radiance ETM Band 2 in W/m^2�m (Scene 1): %12f\n", radsurfETMS1b2);
printf("Surface Radiance ETM Band 3 in W/m^2�m (Scene 1): %12f\n", radsurfETMS1b3);
printf("Surface Radiance ETM Band 4 in W/m^2�m (Scene 1): %12f\n", radsurfETMS1b4);
printf("Surface Radiance ETM Band 5 in W/m^2�m (Scene 1): %12f\n", radsurfETMS1b5);
printf("Surface Radiance ETM Band 7 in W/m^2�m (Scene 1): %12f\n\n", radsurfETMS1b7);
for i = 1 to ETMlins
{
    for j = 1 to ETMcols
    {       
		if (IsNull(RADS1ETM1[i,j]) == 1)
		{
		dosS1ETM1nullValCount = dosS1ETM1nullValCount + 1;
		}
		if (IsNull(RADS1ETM2[i,j]) == 1)
		{
		dosS1ETM2nullValCount = dosS1ETM2nullValCount + 1;
		}		 
		if (IsNull(RADS1ETM3[i,j]) == 1)
		{
		dosS1ETM3nullValCount = dosS1ETM3nullValCount + 1;
		}		 
		if (IsNull(RADS1ETM4[i,j]) == 1)
		{
		dosS1ETM4nullValCount = dosS1ETM4nullValCount + 1;
		}		 
		if (IsNull(RADS1ETM5[i,j]) == 1)
		{
		dosS1ETM5nullValCount = dosS1ETM5nullValCount + 1;
		}		 
		if (IsNull(RADS1ETM7[i,j]) == 1)
		{
		dosS1ETM7nullValCount = dosS1ETM7nullValCount + 1;
		}		 	 
    }
}
numeric dosS1ETM1realSize = (ETMlins * ETMcols) - dosS1ETM1nullValCount;
numeric dosS1ETM2realSize = (ETMlins * ETMcols) - dosS1ETM2nullValCount;
numeric dosS1ETM3realSize = (ETMlins * ETMcols) - dosS1ETM3nullValCount;
numeric dosS1ETM4realSize = (ETMlins * ETMcols) - dosS1ETM4nullValCount;
numeric dosS1ETM5realSize = (ETMlins * ETMcols) - dosS1ETM5nullValCount;
numeric dosS1ETM7realSize = (ETMlins * ETMcols) - dosS1ETM7nullValCount;
array allValuesDosS1ETM1[dosS1ETM1realSize];
array allValuesDosS1ETM2[dosS1ETM2realSize];
array allValuesDosS1ETM3[dosS1ETM3realSize];
array allValuesDosS1ETM4[dosS1ETM4realSize];
array allValuesDosS1ETM5[dosS1ETM5realSize];
array allValuesDosS1ETM7[dosS1ETM7realSize];
numeric DNminCALCS1ETM1 = DNminCALC(Scene1Lin, Scene1Col, dosS1ETM1realSize);
numeric DNminCALCS1ETM2 = DNminCALC(Scene1Lin, Scene1Col, dosS1ETM2realSize);
numeric DNminCALCS1ETM3 = DNminCALC(Scene1Lin, Scene1Col, dosS1ETM3realSize);
numeric DNminCALCS1ETM4 = DNminCALC(Scene1Lin, Scene1Col, dosS1ETM4realSize);
numeric DNminCALCS1ETM5 = DNminCALC(Scene1Lin, Scene1Col, dosS1ETM5realSize);
numeric DNminCALCS1ETM7 = DNminCALC(Scene1Lin, Scene1Col, dosS1ETM7realSize);
for i = 1 to ETMlins
{
    for j = 1 to ETMcols
    {     
		if (IsNull(RADS1ETM1[i,j]) == 0)
		{
		  allValuesDosS1ETM1[dosS1ETM1realArrayCount] = RADS1ETM1[i,j];		 
		  dosS1ETM1realArrayCount = dosS1ETM1realArrayCount + 1;
		}
		if (IsNull(RADS1ETM2[i,j]) == 0)
		{
		  allValuesDosS1ETM2[dosS1ETM2realArrayCount] = RADS1ETM2[i,j];		 
		  dosS1ETM2realArrayCount = dosS1ETM2realArrayCount + 1;
		}
		if (IsNull(RADS1ETM3[i,j]) == 0)
		{
		  allValuesDosS1ETM3[dosS1ETM3realArrayCount] = RADS1ETM3[i,j];		 
		  dosS1ETM3realArrayCount = dosS1ETM3realArrayCount + 1;
		}
		if (IsNull(RADS1ETM4[i,j]) == 0)
		{
		  allValuesDosS1ETM4[dosS1ETM4realArrayCount] = RADS1ETM4[i,j];		 
		  dosS1ETM4realArrayCount = dosS1ETM4realArrayCount + 1;
		}
		if (IsNull(RADS1ETM5[i,j]) == 0)
		{
		  allValuesDosS1ETM5[dosS1ETM5realArrayCount] = RADS1ETM5[i,j];		 
		  dosS1ETM5realArrayCount = dosS1ETM5realArrayCount + 1;
		}
		if (IsNull(RADS1ETM7[i,j]) == 0)
		{
		  allValuesDosS1ETM7[dosS1ETM7realArrayCount] = RADS1ETM7[i,j];		 
		  dosS1ETM7realArrayCount = dosS1ETM7realArrayCount + 1;
		}
    }
}
########################### Scene 1 - Dn1000 - Band 1
numeric lastDOSS1ETM1 = dosS1ETM1realSize;
numeric hDOSS1ETM1 = 1;
while ( (hDOSS1ETM1 * 3 + 1) < lastDOSS1ETM1 - 1 )
{
    hDOSS1ETM1 = 3 * hDOSS1ETM1 + 1;
}
while ( hDOSS1ETM1 > 0 )
{
    for i = hDOSS1ETM1 - 1 to lastDOSS1ETM1               # for each of the h sets of elements
    {
        numeric keyDOSS1ETM1 = allValuesDosS1ETM1[i];
        numeric jDOSS1ETM1 = i;
        while (jDOSS1ETM1 >= hDOSS1ETM1 && allValuesDosS1ETM1[jDOSS1ETM1 - hDOSS1ETM1] > keyDOSS1ETM1)
        {
            allValuesDosS1ETM1[jDOSS1ETM1] = allValuesDosS1ETM1[jDOSS1ETM1 - hDOSS1ETM1];
            jDOSS1ETM1 = jDOSS1ETM1 - hDOSS1ETM1;
        }
        allValuesDosS1ETM1[jDOSS1ETM1] = keyDOSS1ETM1;
    }
    hDOSS1ETM1 = floor(hDOSS1ETM1/3);
}
numeric minValueDosS1ETM1 = allValuesDosS1ETM1[1];
numeric dn1000S1ETM1 = 10000;
numeric actualCountDosS1ETM1 = 0;
for i = 1 to dosS1ETM1realSize 
{
    if (allValuesDosS1ETM1[i] == minValueDosS1ETM1)
    {
       actualCountDosS1ETM1 = actualCountDosS1ETM1 + 1;
       if (actualCountDosS1ETM1 >= DNminCALCS1ETM1)
       {
           dn1000S1ETM1 = minValueDosS1ETM1;
           go to dn1000S1ETM1jumper;
       }
    }
    else
    {
        minValueDosS1ETM1 = allValuesDosS1ETM1[i+1];
        actualCountDosS1ETM1 = 0;
    }
}
dn1000S1ETM1jumper:
if (dn1000S1ETM1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1ETM1 = allValuesDosS1ETM1[1];
}
if (dn1000S1ETM1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1ETM1 = allValuesDosS1ETM1[1];
}
printf("dn1000 Scene 1 ETM1: %12f\n", dn1000S1ETM1);
########################### Scene 1 - Dn1000 - Band 2
numeric lastDOSS1ETM2 = dosS1ETM1realSize;
numeric hDOSS1ETM2 = 1;
while ( (hDOSS1ETM2 * 3 + 1) < lastDOSS1ETM2 - 1 )
{
    hDOSS1ETM2 = 3 * hDOSS1ETM2 + 1;
}
while ( hDOSS1ETM2 > 0 )
{
    for i = hDOSS1ETM2 - 1 to lastDOSS1ETM2
    {
        numeric keyDOSS1ETM2 = allValuesDosS1ETM2[i];
        numeric jDOSS1ETM2 = i;
        while (jDOSS1ETM2 >= hDOSS1ETM2 && allValuesDosS1ETM2[jDOSS1ETM2 - hDOSS1ETM2] > keyDOSS1ETM2)
        {
            allValuesDosS1ETM2[jDOSS1ETM2] = allValuesDosS1ETM2[jDOSS1ETM2 - hDOSS1ETM2];
            jDOSS1ETM2 = jDOSS1ETM2 - hDOSS1ETM2;
        }
        allValuesDosS1ETM2[jDOSS1ETM2] = keyDOSS1ETM2;
    }
    hDOSS1ETM2 = floor(hDOSS1ETM2/3);
}
numeric minValueDosS1ETM2 = allValuesDosS1ETM2[1];
numeric dn1000S1ETM2 = 10000;
numeric actualCountDosS1ETM2 = 0;
for i = 1 to dosS1ETM2realSize 
{
    if (allValuesDosS1ETM2[i] == minValueDosS1ETM2)
    {
       actualCountDosS1ETM2 = actualCountDosS1ETM2 + 1;
       if (actualCountDosS1ETM2 >= DNminCALCS1ETM2)
       {
           dn1000S1ETM2 = minValueDosS1ETM2;
           go to dn1000S1ETM2jumper;
       }
    }
    else
    {
        minValueDosS1ETM2 = allValuesDosS1ETM2[i+1];
        actualCountDosS1ETM2 = 0;
    }
}
dn1000S1ETM2jumper:
if (dn1000S1ETM2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1ETM2 = allValuesDosS1ETM2[1];
}
if (dn1000S1ETM2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1ETM2 = allValuesDosS1ETM2[1];
}
printf("dn1000 Scene 1 ETM2: %12f\n", dn1000S1ETM2);
########################### Scene 1 - Dn1000 - Band 3
numeric lastDOSS1ETM3 = dosS1ETM3realSize;
numeric hDOSS1ETM3 = 1;
while ( (hDOSS1ETM3 * 3 + 1) < lastDOSS1ETM3 - 1 )
{
    hDOSS1ETM3 = 3 * hDOSS1ETM3 + 1;
}
while ( hDOSS1ETM3 > 0 )
{
    for i = hDOSS1ETM3 - 1 to lastDOSS1ETM3               # for each of the h sets of elements
    {
        numeric keyDOSS1ETM3 = allValuesDosS1ETM3[i];
        numeric jDOSS1ETM3 = i;
        while (jDOSS1ETM3 >= hDOSS1ETM3 && allValuesDosS1ETM3[jDOSS1ETM3 - hDOSS1ETM3] > keyDOSS1ETM3)
        {
            allValuesDosS1ETM3[jDOSS1ETM3] = allValuesDosS1ETM3[jDOSS1ETM3 - hDOSS1ETM3];
            jDOSS1ETM3 = jDOSS1ETM3 - hDOSS1ETM3;
        }
        allValuesDosS1ETM3[jDOSS1ETM3] = keyDOSS1ETM3;
    }
    hDOSS1ETM3 = floor(hDOSS1ETM3/3);
}
numeric minValueDosS1ETM3 = allValuesDosS1ETM3[1];
numeric dn1000S1ETM3 = 10000;
numeric actualCountDosS1ETM3 = 0;
for i = 1 to dosS1ETM3realSize 
{
    if (allValuesDosS1ETM3[i] == minValueDosS1ETM3)
    {
        actualCountDosS1ETM3 = actualCountDosS1ETM3 + 1;
        if (actualCountDosS1ETM3 >= DNminCALCS1ETM3)
        {
           dn1000S1ETM3 = minValueDosS1ETM3;
           go to dn1000S1ETM3jumper;
        }
    }
    else
    {
        minValueDosS1ETM3 = allValuesDosS1ETM3[i+1];
        actualCountDosS1ETM3 = 0;
    }
}
dn1000S1ETM3jumper:
if (dn1000S1ETM3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1ETM3 = allValuesDosS1ETM3[1];
}
if (dn1000S1ETM3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1ETM3 = allValuesDosS1ETM3[1];
}
	
printf("dn1000 Scene 1 ETM3: %12f\n", dn1000S1ETM3);
########################### Scene 1 - Dn1000 - Band 4
numeric lastDOSS1ETM4 = dosS1ETM4realSize;
numeric hDOSS1ETM4 = 1;
while ( (hDOSS1ETM4 * 3 + 1) < lastDOSS1ETM4 - 1 )
{
    hDOSS1ETM4 = 3 * hDOSS1ETM4 + 1;
}
while ( hDOSS1ETM4 > 0 )
{
    for i = hDOSS1ETM4 - 1 to lastDOSS1ETM4
    {
        numeric keyDOSS1ETM4 = allValuesDosS1ETM4[i];
        numeric jDOSS1ETM4 = i;
        while (jDOSS1ETM4 >= hDOSS1ETM4 && allValuesDosS1ETM4[jDOSS1ETM4 - hDOSS1ETM4] > keyDOSS1ETM4)
        {
            allValuesDosS1ETM4[jDOSS1ETM4] = allValuesDosS1ETM4[jDOSS1ETM4 - hDOSS1ETM4];
            jDOSS1ETM4 = jDOSS1ETM4 - hDOSS1ETM4;
        }
        allValuesDosS1ETM4[jDOSS1ETM4] = keyDOSS1ETM4;
    }
    hDOSS1ETM4 = floor(hDOSS1ETM4/3);
}
numeric minValueDosS1ETM4 = allValuesDosS1ETM4[1];
numeric dn1000S1ETM4 = 10000;
numeric actualCountDosS1ETM4 = 0;
for i = 1 to dosS1ETM4realSize 
{
    if (allValuesDosS1ETM4[i] == minValueDosS1ETM4)
    {
        actualCountDosS1ETM4 = actualCountDosS1ETM4 + 1;
        if (actualCountDosS1ETM4 >= DNminCALCS1ETM4)
        {
           dn1000S1ETM4 = minValueDosS1ETM4;
           go to dn1000S1ETM4jumper;
        }
    }
    else
    {
        minValueDosS1ETM4 = allValuesDosS1ETM4[i+1];
        actualCountDosS1ETM4 = 0;
    }
}
dn1000S1ETM4jumper:
if (dn1000S1ETM4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1ETM4 = allValuesDosS1ETM4[1];
}
if (dn1000S1ETM4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1ETM4 = allValuesDosS1ETM4[1];
}
	
printf("dn1000 Scene 1 ETM4: %12f\n", dn1000S1ETM4);
########################### Scene 1 - Dn1000 - Band 5
numeric lastDOSS1ETM5 = dosS1ETM5realSize;
numeric hDOSS1ETM5 = 1;
while ( (hDOSS1ETM5 * 3 + 1) < lastDOSS1ETM5 - 1 )
{
    hDOSS1ETM5 = 3 * hDOSS1ETM5 + 1;
}
while ( hDOSS1ETM5 > 0 )
{
    for i = hDOSS1ETM5 - 1 to lastDOSS1ETM5               # for each of the h sets of elements
    {
        numeric keyDOSS1ETM5 = allValuesDosS1ETM5[i];
        numeric jDOSS1ETM5 = i;
        while (jDOSS1ETM5 >= hDOSS1ETM5 && allValuesDosS1ETM5[jDOSS1ETM5 - hDOSS1ETM5] > keyDOSS1ETM5)
        {
            allValuesDosS1ETM5[jDOSS1ETM5] = allValuesDosS1ETM5[jDOSS1ETM5 - hDOSS1ETM5];
            jDOSS1ETM5 = jDOSS1ETM5 - hDOSS1ETM5;
        }
        allValuesDosS1ETM5[jDOSS1ETM5] = keyDOSS1ETM5;
    }
    hDOSS1ETM5 = floor(hDOSS1ETM5/3);
}
numeric minValueDosS1ETM5 = allValuesDosS1ETM5[1];
numeric dn1000S1ETM5 = 10000;
numeric actualCountDosS1ETM5 = 0;
for i = 1 to dosS1ETM5realSize 
{
    if (allValuesDosS1ETM5[i] == minValueDosS1ETM5)
    {
        actualCountDosS1ETM5 = actualCountDosS1ETM5 + 1;
        if (actualCountDosS1ETM5 >= DNminCALCS1ETM5)
        {
           dn1000S1ETM5 = minValueDosS1ETM5;
           go to dn1000S1ETM5jumper;
        }
    }
    else
    {
        minValueDosS1ETM5 = allValuesDosS1ETM5[i+1];
        actualCountDosS1ETM5 = 0;
    }
}
dn1000S1ETM5jumper:
if (dn1000S1ETM5 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1ETM5  = allValuesDosS1ETM5[1];
}
if (dn1000S1ETM5 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1ETM5  = allValuesDosS1ETM5[1];
}
	
printf("dn1000 Scene 1 ETM5: %12f\n", dn1000S1ETM5);
########################### Scene 1 - Dn1000 - Band 7
numeric lastDOSS1ETM7 = dosS1ETM7realSize;
numeric hDOSS1ETM7 = 1;
while ( (hDOSS1ETM7 * 3 + 1) < lastDOSS1ETM7 - 1 )
{
    hDOSS1ETM7 = 3 * hDOSS1ETM7 + 1;
}
while ( hDOSS1ETM7 > 0 )
{
    for i = hDOSS1ETM7 - 1 to lastDOSS1ETM7               # for each of the h sets of elements
    {
        numeric keyDOSS1ETM7 = allValuesDosS1ETM7[i];
        numeric jDOSS1ETM7 = i;
        while (jDOSS1ETM7 >= hDOSS1ETM7 && allValuesDosS1ETM7[jDOSS1ETM7 - hDOSS1ETM7] > keyDOSS1ETM7)
        {
            allValuesDosS1ETM7[jDOSS1ETM7] = allValuesDosS1ETM7[jDOSS1ETM7 - hDOSS1ETM7];
            jDOSS1ETM7 = jDOSS1ETM7 - hDOSS1ETM7;
        }
        allValuesDosS1ETM7[jDOSS1ETM7] = keyDOSS1ETM7;
    }
    hDOSS1ETM7 = floor(hDOSS1ETM7/3);
}
numeric minValueDosS1ETM7 = allValuesDosS1ETM7[1];
numeric dn1000S1ETM7 = 10000;
numeric actualCountDosS1ETM7 = 0;
for i = 1 to dosS1ETM7realSize 
{
    if (allValuesDosS1ETM7[i] == minValueDosS1ETM7)
    {
        actualCountDosS1ETM7 = actualCountDosS1ETM7 + 1;
        if (actualCountDosS1ETM7 >= DNminCALCS1ETM7)
        {
           dn1000S1ETM7 = minValueDosS1ETM7;
           go to dn1000S1ETM7jumper;
        }
    }
    else
    {
        minValueDosS1ETM7 = allValuesDosS1ETM7[i+1];
        actualCountDosS1ETM7 = 0;
    }
}
dn1000S1ETM7jumper:
if (dn1000S1ETM7 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1ETM7  = allValuesDosS1ETM7[1];
}
if (dn1000S1ETM7 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1ETM7  = allValuesDosS1ETM7[1];
}
	
printf("dn1000 Scene 1 ETM7: %12f\n\n", dn1000S1ETM7);
################################### Pathradiance Calculation #######################################
numeric pathRadS1ETM1 = dn1000S1ETM1 - (0.01 * (radsurfETMS1b1 * cos(s1zenith)) / pi);
numeric pathRadS1ETM2 = dn1000S1ETM2 - (0.01 * (radsurfETMS1b2 * cos(s1zenith)) / pi);
numeric pathRadS1ETM3 = dn1000S1ETM3 - (0.01 * (radsurfETMS1b3 * cos(s1zenith)) / pi);
numeric pathRadS1ETM4 = dn1000S1ETM4 - (0.01 * (radsurfETMS1b4 * cos(s1zenith)) / pi);
numeric pathRadS1ETM5 = dn1000S1ETM5 - (0.01 * (radsurfETMS1b5 * cos(s1zenith)) / pi);
numeric pathRadS1ETM7 = dn1000S1ETM7 - (0.01 * (radsurfETMS1b7 * cos(s1zenith)) / pi);
printf("Pathradiance Scene 1 Band 1: %12f\n", pathRadS1ETM1);
printf("Pathradiance Scene 1 Band 2: %12f\n", pathRadS1ETM2);
printf("Pathradiance Scene 1 Band 3: %12f\n", pathRadS1ETM3);
printf("Pathradiance Scene 1 Band 4: %12f\n", pathRadS1ETM4);
printf("Pathradiance Scene 1 Band 5: %12f\n", pathRadS1ETM5);
printf("Pathradiance Scene 1 Band 7: %12f\n\n", pathRadS1ETM7);
################################# Reflectance Calculation with athmo correction
	 for i = 1 to ETMlins
	 {
	        for j = 1 to ETMcols
	        {
                  valueS1ETM1 = (pi * (RADS1ETM1[i,j] - pathRadS1ETM1)) / (radsurfETMS1b1 * cos(s1zenith));
                  if ( valueS1ETM1 < 0 )
       		{
          			valueS1ETM1 = 0;
				countS1REFnullETM1 = countS1REFnullETM1 + 1;
       		}
			else if ( valueS1ETM1 > 1 )
			{
				valueS1ETM1 = 1;
				countS1REFoneETM1 = countS1REFoneETM1 + 1;
			}
       		
			REFS1ETM1[i,j] = valueS1ETM1;
               valueS1ETM2 = (pi * (RADS1ETM2[i,j] - pathRadS1ETM2)) / (radsurfETMS1b2 * cos(s1zenith));
                  if ( valueS1ETM2 < 0 )
       		{
          			valueS1ETM2 = 0;
				countS1REFnullETM2 = countS1REFnullETM2 + 1;
       		}
			else if ( valueS1ETM2 > 1 )
			{
				valueS1ETM2 = 1;
				countS1REFoneETM2 = countS1REFoneETM2 + 1;
			}
       		
			REFS1ETM2[i,j] = valueS1ETM2;
               valueS1ETM3 = (pi * (RADS1ETM3[i,j] - pathRadS1ETM3)) / (radsurfETMS1b3 * cos(s1zenith));
                  if ( valueS1ETM3 < 0 )
       		{
          			valueS1ETM3 = 0;
				countS1REFnullETM3 = countS1REFnullETM3 + 1;
       		}
			else if ( valueS1ETM3 > 1 )
			{
				valueS1ETM3 = 1;
				countS1REFoneETM3 = countS1REFoneETM3 + 1;
			}
       		
			REFS1ETM3[i,j] = valueS1ETM3;
               valueS1ETM4 = (pi * (RADS1ETM4[i,j] - pathRadS1ETM4)) / (radsurfETMS1b4 * cos(s1zenith));
                  if ( valueS1ETM4 < 0 )
       		{
          			valueS1ETM4 = 0;
				countS1REFnullETM4 = countS1REFnullETM4 + 1;
       		}
			else if ( valueS1ETM4 > 1 )
			{
				valueS1ETM4 = 1;
				countS1REFoneETM4 = countS1REFoneETM4 + 1;
			}
       		
			REFS1ETM4[i,j] = valueS1ETM4;
               valueS1ETM5 = (pi * (RADS1ETM5[i,j] - pathRadS1ETM5)) / (radsurfETMS1b5 * cos(s1zenith));
                  if ( valueS1ETM5 < 0 )
       		{
          			valueS1ETM5 = 0;
				countS1REFnullETM5 = countS1REFnullETM5 + 1;
       		}
			else if ( valueS1ETM5 > 1 )
			{
				valueS1ETM5 = 1;
				countS1REFoneETM5 = countS1REFoneETM5 + 1;
			}
       		
			REFS1ETM5[i,j] = valueS1ETM5;
               valueS1ETM7 = (pi * (RADS1ETM7[i,j] - pathRadS1ETM7)) / (radsurfETMS1b7 * cos(s1zenith));
                  if ( valueS1ETM7 < 0 )
       		{
          			valueS1ETM7 = 0;
				countS1REFnullETM7 = countS1REFnullETM7 + 1;
       		}
			else if ( valueS1ETM7 > 1 )
			{
				valueS1ETM7 = 1;
				countS1REFoneETM7 = countS1REFoneETM7 + 1;
			}
       		
			REFS1ETM7[i,j] = valueS1ETM7;
	        }
	 }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullETM1, countS1REFoneETM1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullETM2, countS1REFoneETM2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullETM3, countS1REFoneETM3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullETM4, countS1REFoneETM4);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 5: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullETM5, countS1REFoneETM5);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 7: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n\n", countS1REFnullETM7, countS1REFoneETM7);
CreatePyramid(REFS1ETM1);
CreatePyramid(REFS1ETM2);
CreatePyramid(REFS1ETM3);
CreatePyramid(REFS1ETM4);
CreatePyramid(REFS1ETM5);
CreatePyramid(REFS1ETM7);
        
CreateHistogram(REFS1ETM1);
CreateHistogram(REFS1ETM2);
CreateHistogram(REFS1ETM3);
CreateHistogram(REFS1ETM4);
CreateHistogram(REFS1ETM5);
CreateHistogram(REFS1ETM7);
CloseRaster(RADS1ETM1);
CloseRaster(RADS1ETM2);
CloseRaster(RADS1ETM3);
CloseRaster(RADS1ETM4);
CloseRaster(RADS1ETM5);
CloseRaster(RADS1ETM7);
printf("Reflectance calculation for Scene 1 (ETM) is done...\n\n\n");
}
else if ( sensors1 == 6 )
{
raster REFS1TM1, REFS1TM2, REFS1TM3, REFS1TM4, REFS1TM5, REFS1TM7;
numeric radsurfTMS1b1, radsurfTMS1b2, radsurfTMS1b3, radsurfTMS1b4, radsurfTMS1b5, radsurfTMS1b7;
numeric valueS1TM1, valueS1TM2, valueS1TM3, valueS1TM4, valueS1TM5, valueS1TM7;
numeric dosS1TM1nullValCount = 0;
numeric dosS1TM2nullValCount = 0;
numeric dosS1TM3nullValCount = 0;
numeric dosS1TM4nullValCount = 0;
numeric dosS1TM5nullValCount = 0;
numeric dosS1TM7nullValCount = 0;
numeric dosS1TM1realArrayCount = 1;
numeric dosS1TM2realArrayCount = 1;
numeric dosS1TM3realArrayCount = 1;
numeric dosS1TM4realArrayCount = 1;
numeric dosS1TM5realArrayCount = 1;
numeric dosS1TM7realArrayCount = 1;
numeric countS1REFnullTM1 = 0;
numeric countS1REFnullTM2 = 0;
numeric countS1REFnullTM3 = 0;
numeric countS1REFnullTM4 = 0;
numeric countS1REFnullTM5 = 0;
numeric countS1REFnullTM7 = 0;
numeric countS1REFoneTM1 = 0;
numeric countS1REFoneTM2 = 0;
numeric countS1REFoneTM3 = 0;
numeric countS1REFoneTM4 = 0;
numeric countS1REFoneTM5 = 0;
numeric countS1REFoneTM7 = 0;
radsurfTMS1b1 = ESTM1 / (dist1^2);
radsurfTMS1b2 = ESTM2 / (dist1^2);
radsurfTMS1b3 = ESTM3 / (dist1^2);
radsurfTMS1b4 = ESTM4 / (dist1^2);
radsurfTMS1b5 = ESTM5 / (dist1^2);
radsurfTMS1b7 = ESTM7 / (dist1^2);
printf("Surface Radiance TM Band 1 in W/m^2�m (Scene 1): %12f\n", radsurfTMS1b1);
printf("Surface Radiance TM Band 2 in W/m^2�m (Scene 1): %12f\n", radsurfTMS1b2);
printf("Surface Radiance TM Band 3 in W/m^2�m (Scene 1): %12f\n", radsurfTMS1b3);
printf("Surface Radiance TM Band 4 in W/m^2�m (Scene 1): %12f\n", radsurfTMS1b4);
printf("Surface Radiance TM Band 5 in W/m^2�m (Scene 1): %12f\n", radsurfTMS1b5);
printf("Surface Radiance TM Band 7 in W/m^2�m (Scene 1): %12f\n\n", radsurfTMS1b7);
for i = 1 to TMlins
{
    for j = 1 to TMcols
    {       
		if (IsNull(RADS1TM1[i,j]) == 1)
		{
		dosS1TM1nullValCount = dosS1TM1nullValCount + 1;
		}
		if (IsNull(RADS1TM2[i,j]) == 1)
		{
		dosS1TM2nullValCount = dosS1TM2nullValCount + 1;
		}		 
		if (IsNull(RADS1TM3[i,j]) == 1)
		{
		dosS1TM3nullValCount = dosS1TM3nullValCount + 1;
		}		 
		if (IsNull(RADS1TM4[i,j]) == 1)
		{
		dosS1TM4nullValCount = dosS1TM4nullValCount + 1;
		}		 
		if (IsNull(RADS1TM5[i,j]) == 1)
		{
		dosS1TM5nullValCount = dosS1TM5nullValCount + 1;
		}		 
		if (IsNull(RADS1TM7[i,j]) == 1)
		{
		dosS1TM7nullValCount = dosS1TM7nullValCount + 1;
		}		 	 
    }
}
numeric dosS1TM1realSize = (TMlins * TMcols) - dosS1TM1nullValCount;
numeric dosS1TM2realSize = (TMlins * TMcols) - dosS1TM2nullValCount;
numeric dosS1TM3realSize = (TMlins * TMcols) - dosS1TM3nullValCount;
numeric dosS1TM4realSize = (TMlins * TMcols) - dosS1TM4nullValCount;
numeric dosS1TM5realSize = (TMlins * TMcols) - dosS1TM5nullValCount;
numeric dosS1TM7realSize = (TMlins * TMcols) - dosS1TM7nullValCount;
array allValuesDosS1TM1[dosS1TM1realSize];
array allValuesDosS1TM2[dosS1TM2realSize];
array allValuesDosS1TM3[dosS1TM3realSize];
array allValuesDosS1TM4[dosS1TM4realSize];
array allValuesDosS1TM5[dosS1TM5realSize];
array allValuesDosS1TM7[dosS1TM7realSize];
numeric DNminCALCS1TM1 = DNminCALC(Scene1Lin, Scene1Col, dosS1TM1realSize);
numeric DNminCALCS1TM2 = DNminCALC(Scene1Lin, Scene1Col, dosS1TM2realSize);
numeric DNminCALCS1TM3 = DNminCALC(Scene1Lin, Scene1Col, dosS1TM3realSize);
numeric DNminCALCS1TM4 = DNminCALC(Scene1Lin, Scene1Col, dosS1TM4realSize);
numeric DNminCALCS1TM5 = DNminCALC(Scene1Lin, Scene1Col, dosS1TM5realSize);
numeric DNminCALCS1TM7 = DNminCALC(Scene1Lin, Scene1Col, dosS1TM7realSize);
for i = 1 to TMlins
{
    for j = 1 to TMcols
    {     
		if (IsNull(RADS1TM1[i,j]) == 0)
		{
		  allValuesDosS1TM1[dosS1TM1realArrayCount] = RADS1TM1[i,j];		 
		  dosS1TM1realArrayCount = dosS1TM1realArrayCount + 1;
		}
		if (IsNull(RADS1TM2[i,j]) == 0)
		{
		  allValuesDosS1TM2[dosS1TM2realArrayCount] = RADS1TM2[i,j];		 
		  dosS1TM2realArrayCount = dosS1TM2realArrayCount + 1;
		}
		if (IsNull(RADS1TM3[i,j]) == 0)
		{
		  allValuesDosS1TM3[dosS1TM3realArrayCount] = RADS1TM3[i,j];		 
		  dosS1TM3realArrayCount = dosS1TM3realArrayCount + 1;
		}
		if (IsNull(RADS1TM4[i,j]) == 0)
		{
		  allValuesDosS1TM4[dosS1TM4realArrayCount] = RADS1TM4[i,j];		 
		  dosS1TM4realArrayCount = dosS1TM4realArrayCount + 1;
		}
		if (IsNull(RADS1TM5[i,j]) == 0)
		{
		  allValuesDosS1TM5[dosS1TM5realArrayCount] = RADS1TM5[i,j];		 
		  dosS1TM5realArrayCount = dosS1TM5realArrayCount + 1;
		}
		if (IsNull(RADS1TM7[i,j]) == 0)
		{
		  allValuesDosS1TM7[dosS1TM7realArrayCount] = RADS1TM7[i,j];		 
		  dosS1TM7realArrayCount = dosS1TM7realArrayCount + 1;
		}
    }
}
########################### Scene 1 - Dn1000 - Band 1
numeric lastDOSS1TM1 = dosS1TM1realSize;
numeric hDOSS1TM1 = 1;
while ( (hDOSS1TM1 * 3 + 1) < lastDOSS1TM1 - 1 )
{
    hDOSS1TM1 = 3 * hDOSS1TM1 + 1;
}
while ( hDOSS1TM1 > 0 )
{
    for i = hDOSS1TM1 - 1 to lastDOSS1TM1               # for each of the h sets of elements
    {
        numeric keyDOSS1TM1 = allValuesDosS1TM1[i];
        numeric jDOSS1TM1 = i;
        while (jDOSS1TM1 >= hDOSS1TM1 && allValuesDosS1TM1[jDOSS1TM1 - hDOSS1TM1] > keyDOSS1TM1)
        {
            allValuesDosS1TM1[jDOSS1TM1] = allValuesDosS1TM1[jDOSS1TM1 - hDOSS1TM1];
            jDOSS1TM1 = jDOSS1TM1 - hDOSS1TM1;
        }
        allValuesDosS1TM1[jDOSS1TM1] = keyDOSS1TM1;
    }
    hDOSS1TM1 = floor(hDOSS1TM1/3);
}
numeric minValueDosS1TM1 = allValuesDosS1TM1[1];
numeric dn1000S1TM1 = 10000;
numeric actualCountDosS1TM1 = 0;
for i = 1 to dosS1TM1realSize 
{
    if (allValuesDosS1TM1[i] == minValueDosS1TM1)
    {
        actualCountDosS1TM1 = actualCountDosS1TM1 + 1;
        if (actualCountDosS1TM1 >= DNminCALCS1TM1)
        {
           dn1000S1TM1 = minValueDosS1TM1;
           go to dn1000S1TM1jumper;
        }
    }
    else
    {
        minValueDosS1TM1 = allValuesDosS1TM1[i+1];
        actualCountDosS1TM1 = 0;
    }
}
dn1000S1TM1jumper:
if (dn1000S1TM1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1TM1 = allValuesDosS1TM1[1];
}
if (dn1000S1TM1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1TM1 = allValuesDosS1TM1[1];
}
	
printf("dn1000 Scene 1 TM1: %12f\n", dn1000S1TM1);
########################### Scene 1 - Dn1000 - Band 2
numeric lastDOSS1TM2 = dosS1TM1realSize;
numeric hDOSS1TM2 = 1;
while ( (hDOSS1TM2 * 3 + 1) < lastDOSS1TM2 - 1 )
{
    hDOSS1TM2 = 3 * hDOSS1TM2 + 1;
}
while ( hDOSS1TM2 > 0 )
{
    for i = hDOSS1TM2 - 1 to lastDOSS1TM2
    {
        numeric keyDOSS1TM2 = allValuesDosS1TM2[i];
        numeric jDOSS1TM2 = i;
        while (jDOSS1TM2 >= hDOSS1TM2 && allValuesDosS1TM2[jDOSS1TM2 - hDOSS1TM2] > keyDOSS1TM2)
        {
            allValuesDosS1TM2[jDOSS1TM2] = allValuesDosS1TM2[jDOSS1TM2 - hDOSS1TM2];
            jDOSS1TM2 = jDOSS1TM2 - hDOSS1TM2;
        }
        allValuesDosS1TM2[jDOSS1TM2] = keyDOSS1TM2;
    }
    hDOSS1TM2 = floor(hDOSS1TM2/3);
}
numeric minValueDosS1TM2 = allValuesDosS1TM2[1];
numeric dn1000S1TM2 = 10000;
numeric actualCountDosS1TM2 = 0;
for i = 1 to dosS1TM2realSize 
{
    if (allValuesDosS1TM2[i] == minValueDosS1TM2)
    {
        actualCountDosS1TM2 = actualCountDosS1TM2 + 1;
        if (actualCountDosS1TM2 >= DNminCALCS1TM2)
        {
           dn1000S1TM2 = minValueDosS1TM2;
           go to dn1000S1TM2jumper;
        }
    }
    
    else
    {
        minValueDosS1TM2 = allValuesDosS1TM2[i+1];
        actualCountDosS1TM2 = 0;
    }
}
dn1000S1TM2jumper:
if (dn1000S1TM2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1TM2 = allValuesDosS1TM2[1];
}
if (dn1000S1TM2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1TM2 = allValuesDosS1TM2[1];
}
printf("dn1000 Scene 1 TM2: %12f\n", dn1000S1TM2);
########################### Scene 1 - Dn1000 - Band 3
numeric lastDOSS1TM3 = dosS1TM3realSize;
numeric hDOSS1TM3 = 1;
while ( (hDOSS1TM3 * 3 + 1) < lastDOSS1TM3 - 1 )
{
    hDOSS1TM3 = 3 * hDOSS1TM3 + 1;
}
while ( hDOSS1TM3 > 0 )
{
    for i = hDOSS1TM3 - 1 to lastDOSS1TM3               # for each of the h sets of elements
    {
        numeric keyDOSS1TM3 = allValuesDosS1TM3[i];
        numeric jDOSS1TM3 = i;
        while (jDOSS1TM3 >= hDOSS1TM3 && allValuesDosS1TM3[jDOSS1TM3 - hDOSS1TM3] > keyDOSS1TM3)
        {
            allValuesDosS1TM3[jDOSS1TM3] = allValuesDosS1TM3[jDOSS1TM3 - hDOSS1TM3];
            jDOSS1TM3 = jDOSS1TM3 - hDOSS1TM3;
        }
        allValuesDosS1TM3[jDOSS1TM3] = keyDOSS1TM3;
    }
    hDOSS1TM3 = floor(hDOSS1TM3/3);
}
numeric minValueDosS1TM3 = allValuesDosS1TM3[1];
numeric dn1000S1TM3 = 10000;
numeric actualCountDosS1TM3 = 0;
for i = 1 to dosS1TM3realSize 
{
    if (allValuesDosS1TM3[i] == minValueDosS1TM3)
    {
        actualCountDosS1TM3 = actualCountDosS1TM3 + 1;
        if (actualCountDosS1TM3 >= DNminCALCS1TM3)
        {
            dn1000S1TM3 = minValueDosS1TM3;
            go to dn1000S1TM3jumper;
        }
    }
    else
    {
        minValueDosS1TM3 = allValuesDosS1TM3[i+1];
        actualCountDosS1TM3 = 0;
    }
}
dn1000S1TM3jumper:
if (dn1000S1TM3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1TM3 = allValuesDosS1TM3[1];
}
if (dn1000S1TM3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1TM3 = allValuesDosS1TM3[1];
}
printf("dn1000 Scene 1 TM3: %12f\n", dn1000S1TM3);
########################### Scene 1 - Dn1000 - Band 4
numeric lastDOSS1TM4 = dosS1TM4realSize;
numeric hDOSS1TM4 = 1;
while ( (hDOSS1TM4 * 3 + 1) < lastDOSS1TM4 - 1 )
{
    hDOSS1TM4 = 3 * hDOSS1TM4 + 1;
}
while ( hDOSS1TM4 > 0 )
{
    for i = hDOSS1TM4 - 1 to lastDOSS1TM4
    {
        numeric keyDOSS1TM4 = allValuesDosS1TM4[i];
        numeric jDOSS1TM4 = i;
        while (jDOSS1TM4 >= hDOSS1TM4 && allValuesDosS1TM4[jDOSS1TM4 - hDOSS1TM4] > keyDOSS1TM4)
        {
            allValuesDosS1TM4[jDOSS1TM4] = allValuesDosS1TM4[jDOSS1TM4 - hDOSS1TM4];
            jDOSS1TM4 = jDOSS1TM4 - hDOSS1TM4;
        }
        allValuesDosS1TM4[jDOSS1TM4] = keyDOSS1TM4;
    }
    hDOSS1TM4 = floor(hDOSS1TM4/3);
}
numeric minValueDosS1TM4 = allValuesDosS1TM4[1];
numeric dn1000S1TM4 = 10000;
numeric actualCountDosS1TM4 = 0;
for i = 1 to dosS1TM4realSize 
{
    if (allValuesDosS1TM4[i] == minValueDosS1TM4)
    {
        actualCountDosS1TM4 = actualCountDosS1TM4 + 1;
        if (actualCountDosS1TM4 >= DNminCALCS1TM4)
        {
           dn1000S1TM4 = minValueDosS1TM4;
           go to dn1000S1TM4jumper;
        }
    }
    else
    {
        minValueDosS1TM4 = allValuesDosS1TM4[i+1];
        actualCountDosS1TM4 = 0;
    }
}
dn1000S1TM4jumper:
if (dn1000S1TM4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1TM4 = allValuesDosS1TM4[1];
}
if (dn1000S1TM4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1TM4 = allValuesDosS1TM4[1];
}
	
printf("dn1000 Scene 1 TM4: %12f\n", dn1000S1TM4);
########################### Scene 1 - Dn1000 - Band 5
numeric lastDOSS1TM5 = dosS1TM5realSize;
numeric hDOSS1TM5 = 1;
while ( (hDOSS1TM5 * 3 + 1) < lastDOSS1TM5 - 1 )
{
    hDOSS1TM5 = 3 * hDOSS1TM5 + 1;
}
while ( hDOSS1TM5 > 0 )
{
    for i = hDOSS1TM5 - 1 to lastDOSS1TM5               # for each of the h sets of elements
    {
        numeric keyDOSS1TM5 = allValuesDosS1TM5[i];
        numeric jDOSS1TM5 = i;
        while (jDOSS1TM5 >= hDOSS1TM5 && allValuesDosS1TM5[jDOSS1TM5 - hDOSS1TM5] > keyDOSS1TM5)
        {
            allValuesDosS1TM5[jDOSS1TM5] = allValuesDosS1TM5[jDOSS1TM5 - hDOSS1TM5];
            jDOSS1TM5 = jDOSS1TM5 - hDOSS1TM5;
        }
        allValuesDosS1TM5[jDOSS1TM5] = keyDOSS1TM5;
    }
    hDOSS1TM5 = floor(hDOSS1TM5/3);
}
numeric minValueDosS1TM5 = allValuesDosS1TM5[1];
numeric dn1000S1TM5 = 10000;
numeric actualCountDosS1TM5 = 0;
for i = 1 to dosS1TM5realSize 
{
    if (allValuesDosS1TM5[i] == minValueDosS1TM5)
    {
        actualCountDosS1TM5 = actualCountDosS1TM5 + 1;
        if (actualCountDosS1TM5 >= DNminCALCS1TM5)
        {
           dn1000S1TM5 = minValueDosS1TM5;
           go to dn1000S1TM5jumper;
        }
    }
    else
    {
        minValueDosS1TM5 = allValuesDosS1TM5[i+1];
        actualCountDosS1TM5 = 0;
    }
}
dn1000S1TM5jumper:
if (dn1000S1TM5 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1TM5  = allValuesDosS1TM5[1];
}
if (dn1000S1TM5 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1TM5  = allValuesDosS1TM5[1];
}
	
printf("dn1000 Scene 1 TM5: %12f\n", dn1000S1TM5);
########################### Scene 1 - Dn1000 - Band 7
numeric lastDOSS1TM7 = dosS1TM7realSize;
numeric hDOSS1TM7 = 1;
while ( (hDOSS1TM7 * 3 + 1) < lastDOSS1TM7 - 1 )
{
    hDOSS1TM7 = 3 * hDOSS1TM7 + 1;
}
while ( hDOSS1TM7 > 0 )
{
    for i = hDOSS1TM7 - 1 to lastDOSS1TM7               # for each of the h sets of elements
    {
        numeric keyDOSS1TM7 = allValuesDosS1TM7[i];
        numeric jDOSS1TM7 = i;
        while (jDOSS1TM7 >= hDOSS1TM7 && allValuesDosS1TM7[jDOSS1TM7 - hDOSS1TM7] > keyDOSS1TM7)
        {
            allValuesDosS1TM7[jDOSS1TM7] = allValuesDosS1TM7[jDOSS1TM7 - hDOSS1TM7];
            jDOSS1TM7 = jDOSS1TM7 - hDOSS1TM7;
        }
        allValuesDosS1TM7[jDOSS1TM7] = keyDOSS1TM7;
    }
    hDOSS1TM7 = floor(hDOSS1TM7/3);
}
numeric minValueDosS1TM7 = allValuesDosS1TM7[1];
numeric dn1000S1TM7 = 10000;
numeric actualCountDosS1TM7 = 0;
for i = 1 to dosS1TM7realSize 
{
    if (allValuesDosS1TM7[i] == minValueDosS1TM7)
    {
        actualCountDosS1TM7 = actualCountDosS1TM7 + 1;
        if (actualCountDosS1TM7 >= DNminCALCS1TM7)
        {
           dn1000S1TM7 = minValueDosS1TM7;
           go to dn1000S1TM7jumper;
        }
    }
    else
    {
        minValueDosS1TM7 = allValuesDosS1TM7[i+1];
        actualCountDosS1TM7 = 0;
    }
}
dn1000S1TM7jumper:
if (dn1000S1TM7 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1TM7  = allValuesDosS1TM7[1];
}
if (dn1000S1TM7 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1TM7  = allValuesDosS1TM7[1];
}
	
printf("dn1000 Scene 1 TM7: %12f\n\n", dn1000S1TM7);
################################### Pathradiance Calculation #######################################
numeric pathRadS1TM1 = dn1000S1TM1 - (0.01 * (radsurfTMS1b1 * cos(s1zenith)) / pi);
numeric pathRadS1TM2 = dn1000S1TM2 - (0.01 * (radsurfTMS1b2 * cos(s1zenith)) / pi);
numeric pathRadS1TM3 = dn1000S1TM3 - (0.01 * (radsurfTMS1b3 * cos(s1zenith)) / pi);
numeric pathRadS1TM4 = dn1000S1TM4 - (0.01 * (radsurfTMS1b4 * cos(s1zenith)) / pi);
numeric pathRadS1TM5 = dn1000S1TM5 - (0.01 * (radsurfTMS1b5 * cos(s1zenith)) / pi);
numeric pathRadS1TM7 = dn1000S1TM7 - (0.01 * (radsurfTMS1b7 * cos(s1zenith)) / pi);
printf("Pathradiance Scene 1 Band 1: %12f\n", pathRadS1TM1);
printf("Pathradiance Scene 1 Band 2: %12f\n", pathRadS1TM2);
printf("Pathradiance Scene 1 Band 3: %12f\n", pathRadS1TM3);
printf("Pathradiance Scene 1 Band 4: %12f\n", pathRadS1TM4);
printf("Pathradiance Scene 1 Band 5: %12f\n", pathRadS1TM5);
printf("Pathradiance Scene 1 Band 7: %12f\n\n", pathRadS1TM7);
################################# Reflectance Calculation with athmo correction
	 for i = 1 to TMlins
	 {
	        for j = 1 to TMcols
	        {
                  valueS1TM1 = (pi * (RADS1TM1[i,j] - pathRadS1TM1)) / (radsurfTMS1b1 * cos(s1zenith));
                  if ( valueS1TM1 < 0 )
       		{
          			valueS1TM1 = 0;
				countS1REFnullTM1 = countS1REFnullTM1 + 1;
       		}
			else if ( valueS1TM1 > 1 )
			{
				valueS1TM1 = 1;
				countS1REFoneTM1 = countS1REFoneTM1 + 1;
			}
       		
			REFS1TM1[i,j] = valueS1TM1;
               valueS1TM2 = (pi * (RADS1TM2[i,j] - pathRadS1TM2)) / (radsurfTMS1b2 * cos(s1zenith));
                  if ( valueS1TM2 < 0 )
       		{
          			valueS1TM2 = 0;
				countS1REFnullTM2 = countS1REFnullTM2 + 1;
       		}
			else if ( valueS1TM2 > 1 )
			{
				valueS1TM2 = 1;
				countS1REFoneTM2 = countS1REFoneTM2 + 1;
			}
       		
			REFS1TM2[i,j] = valueS1TM2;
               valueS1TM3 = (pi * (RADS1TM3[i,j] - pathRadS1TM3)) / (radsurfTMS1b3 * cos(s1zenith));
                  if ( valueS1TM3 < 0 )
       		{
          			valueS1TM3 = 0;
				countS1REFnullTM3 = countS1REFnullTM3 + 1;
       		}
			else if ( valueS1TM3 > 1 )
			{
				valueS1TM3 = 1;
				countS1REFoneTM3 = countS1REFoneTM3 + 1;
			}
       		
			REFS1TM3[i,j] = valueS1TM3;
               valueS1TM4 = (pi * (RADS1TM4[i,j] - pathRadS1TM4)) / (radsurfTMS1b4 * cos(s1zenith));
                  if ( valueS1TM4 < 0 )
       		{
          			valueS1TM4 = 0;
				countS1REFnullTM4 = countS1REFnullTM4 + 1;
       		}
			else if ( valueS1TM4 > 1 )
			{
				valueS1TM4 = 1;
				countS1REFoneTM4 = countS1REFoneTM4 + 1;
			}
       		
			REFS1TM4[i,j] = valueS1TM4;
               valueS1TM5 = (pi * (RADS1TM5[i,j] - pathRadS1TM5)) / (radsurfTMS1b5 * cos(s1zenith));
                  if ( valueS1TM5 < 0 )
       		{
          			valueS1TM5 = 0;
				countS1REFnullTM5 = countS1REFnullTM5 + 1;
       		}
			else if ( valueS1TM5 > 1 )
			{
				valueS1TM5 = 1;
				countS1REFoneTM5 = countS1REFoneTM5 + 1;
			}
       		
			REFS1TM5[i,j] = valueS1TM5;
               valueS1TM7 = (pi * (RADS1TM7[i,j] - pathRadS1TM7)) / (radsurfTMS1b7 * cos(s1zenith));
                  if ( valueS1TM7 < 0 )
       		{
          			valueS1TM7 = 0;
				countS1REFnullTM7 = countS1REFnullTM7 + 1;
       		}
			else if ( valueS1TM7 > 1 )
			{
				valueS1TM7 = 1;
				countS1REFoneTM7 = countS1REFoneTM7 + 1;
			}
       		
			REFS1TM7[i,j] = valueS1TM7;
	        }
	 }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullTM1, countS1REFoneTM1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullTM2, countS1REFoneTM2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullTM3, countS1REFoneTM3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullTM4, countS1REFoneTM4);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 5: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullTM5, countS1REFoneTM5);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 7: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n\n", countS1REFnullTM7, countS1REFoneTM7);
CreatePyramid(REFS1TM1);
CreatePyramid(REFS1TM2);
CreatePyramid(REFS1TM3);
CreatePyramid(REFS1TM4);
CreatePyramid(REFS1TM5);
CreatePyramid(REFS1TM7);
        
CreateHistogram(REFS1TM1);
CreateHistogram(REFS1TM2);
CreateHistogram(REFS1TM3);
CreateHistogram(REFS1TM4);
CreateHistogram(REFS1TM5);
CreateHistogram(REFS1TM7);
CloseRaster(RADS1TM1);
CloseRaster(RADS1TM2);
CloseRaster(RADS1TM3);
CloseRaster(RADS1TM4);
CloseRaster(RADS1TM5);
CloseRaster(RADS1TM7);
printf("Reflectance calculation for Scene 1 (TM) is done...\n\n\n");
}
else if ( sensors1 == 5 )                                               # MSS 5 - Calib Werte nach Price J.C.1987
{
raster REFS1MSS1, REFS1MSS2, REFS1MSS3, REFS1MSS4;
numeric radsurfMSS1b1, radsurfMSS1b2, radsurfMSS1b3, radsurfMSS1b4;
numeric valueS1MSS1, valueS1MSS2, valueS1MSS3, valueS1MSS4;
numeric dosS1MSS1nullValCount = 0;
numeric dosS1MSS2nullValCount = 0;
numeric dosS1MSS3nullValCount = 0;
numeric dosS1MSS4nullValCount = 0;
numeric dosS1MSS1realArrayCount = 1;
numeric dosS1MSS2realArrayCount = 1;
numeric dosS1MSS3realArrayCount = 1;
numeric dosS1MSS4realArrayCount = 1;
numeric countS1REFnullMSS1 = 0;
numeric countS1REFnullMSS2 = 0;
numeric countS1REFnullMSS3 = 0;
numeric countS1REFnullMSS4 = 0;
numeric countS1REFoneMSS1 = 0;
numeric countS1REFoneMSS2 = 0;
numeric countS1REFoneMSS3 = 0;
numeric countS1REFoneMSS4 = 0;
radsurfMSS1b1 = ESMSS51 / (dist1^2);
radsurfMSS1b2 = ESMSS52 / (dist1^2);
radsurfMSS1b3 = ESMSS53 / (dist1^2);
radsurfMSS1b4 = ESMSS54 / (dist1^2);
printf("Surface Radiance MSS Band 1 in W/m^2�m (Scene 1): %12f\n", radsurfMSS1b1);
printf("Surface Radiance MSS Band 2 in W/m^2�m (Scene 1): %12f\n", radsurfMSS1b2);
printf("Surface Radiance MSS Band 3 in W/m^2�m (Scene 1): %12f\n", radsurfMSS1b3);
printf("Surface Radiance MSS Band 4 in W/m^2�m (Scene 1): %12f\n\n", radsurfMSS1b4);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {       
		if (IsNull(RADS1MSS1[i,j]) == 1)
		{
		dosS1MSS1nullValCount = dosS1MSS1nullValCount + 1;
		}
		if (IsNull(RADS1MSS2[i,j]) == 1)
		{
		dosS1MSS2nullValCount = dosS1MSS2nullValCount + 1;
		}		 
		if (IsNull(RADS1MSS3[i,j]) == 1)
		{
		dosS1MSS3nullValCount = dosS1MSS3nullValCount + 1;
		}		 
		if (IsNull(RADS1MSS4[i,j]) == 1)
		{
		dosS1MSS4nullValCount = dosS1MSS4nullValCount + 1;
		}		 	 	 
    }
}
numeric dosS1MSS1realSize = (MSSlins * MSScols) - dosS1MSS1nullValCount;
numeric dosS1MSS2realSize = (MSSlins * MSScols) - dosS1MSS2nullValCount;
numeric dosS1MSS3realSize = (MSSlins * MSScols) - dosS1MSS3nullValCount;
numeric dosS1MSS4realSize = (MSSlins * MSScols) - dosS1MSS4nullValCount;
array allValuesDosS1MSS1[dosS1MSS1realSize];
array allValuesDosS1MSS2[dosS1MSS2realSize];
array allValuesDosS1MSS3[dosS1MSS3realSize];
array allValuesDosS1MSS4[dosS1MSS4realSize];
numeric DNminCALCS1MSS1 = DNminCALC(Scene1Lin, Scene1Col, dosS1MSS1realSize);
numeric DNminCALCS1MSS2 = DNminCALC(Scene1Lin, Scene1Col, dosS1MSS2realSize);
numeric DNminCALCS1MSS3 = DNminCALC(Scene1Lin, Scene1Col, dosS1MSS3realSize);
numeric DNminCALCS1MSS4 = DNminCALC(Scene1Lin, Scene1Col, dosS1MSS4realSize);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {     
		if (IsNull(RADS1MSS1[i,j]) == 0)
		{
		  allValuesDosS1MSS1[dosS1MSS1realArrayCount] = RADS1MSS1[i,j];		 
		  dosS1MSS1realArrayCount = dosS1MSS1realArrayCount + 1;
		}
		if (IsNull(RADS1MSS2[i,j]) == 0)
		{
		  allValuesDosS1MSS2[dosS1MSS2realArrayCount] = RADS1MSS2[i,j];		 
		  dosS1MSS2realArrayCount = dosS1MSS2realArrayCount + 1;
		}
		if (IsNull(RADS1MSS3[i,j]) == 0)
		{
		  allValuesDosS1MSS3[dosS1MSS3realArrayCount] = RADS1MSS3[i,j];		 
		  dosS1MSS3realArrayCount = dosS1MSS3realArrayCount + 1;
		}
		if (IsNull(RADS1MSS4[i,j]) == 0)
		{
		  allValuesDosS1MSS4[dosS1MSS4realArrayCount] = RADS1MSS4[i,j];		 
		  dosS1MSS4realArrayCount = dosS1MSS4realArrayCount + 1;
		}
    }
}
########################### Scene 1 - Dn1000 - Band 1
numeric lastDOSS1MSS1 = dosS1MSS1realSize;
numeric hDOSS1MSS1 = 1;
while ( (hDOSS1MSS1 * 3 + 1) < lastDOSS1MSS1 - 1 )
{
    hDOSS1MSS1 = 3 * hDOSS1MSS1 + 1;
}
while ( hDOSS1MSS1 > 0 )
{
    for i = hDOSS1MSS1 - 1 to lastDOSS1MSS1               # for each of the h sets of elements
    {
        numeric keyDOSS1MSS1 = allValuesDosS1MSS1[i];
        numeric jDOSS1MSS1 = i;
        while (jDOSS1MSS1 >= hDOSS1MSS1 && allValuesDosS1MSS1[jDOSS1MSS1 - hDOSS1MSS1] > keyDOSS1MSS1)
        {
            allValuesDosS1MSS1[jDOSS1MSS1] = allValuesDosS1MSS1[jDOSS1MSS1 - hDOSS1MSS1];
            jDOSS1MSS1 = jDOSS1MSS1 - hDOSS1MSS1;
        }
        allValuesDosS1MSS1[jDOSS1MSS1] = keyDOSS1MSS1;
    }
    hDOSS1MSS1 = floor(hDOSS1MSS1/3);
}
numeric minValueDosS1MSS1 = allValuesDosS1MSS1[1];
numeric dn1000S1MSS1 = 10000;
numeric actualCountDosS1MSS1 = 0;
for i = 1 to dosS1MSS1realSize 
{
    if (allValuesDosS1MSS1[i] == minValueDosS1MSS1)
    {
        actualCountDosS1MSS1 = actualCountDosS1MSS1 + 1;
        if (actualCountDosS1MSS1 >= DNminCALCS1MSS1)
        {
           dn1000S1MSS1 = minValueDosS1MSS1;
           go to dn1000S1MSS1jumper;
        }
    }
    else
    {
        minValueDosS1MSS1 = allValuesDosS1MSS1[i+1];
        actualCountDosS1MSS1 = 0;
    }
}
dn1000S1MSS1jumper:
if (dn1000S1MSS1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1MSS1 = allValuesDosS1MSS1[1];
}
if (dn1000S1MSS1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1MSS1 = allValuesDosS1MSS1[1];
}
	
printf("dn1000 Scene 1 MSS1: %12f\n", dn1000S1MSS1);
########################### Scene 1 - Dn1000 - Band 2
numeric lastDOSS1MSS2 = dosS1MSS1realSize;
numeric hDOSS1MSS2 = 1;
while ( (hDOSS1MSS2 * 3 + 1) < lastDOSS1MSS2 - 1 )
{
    hDOSS1MSS2 = 3 * hDOSS1MSS2 + 1;
}
while ( hDOSS1MSS2 > 0 )
{
    for i = hDOSS1MSS2 - 1 to lastDOSS1MSS2
    {
        numeric keyDOSS1MSS2 = allValuesDosS1MSS2[i];
        numeric jDOSS1MSS2 = i;
        while (jDOSS1MSS2 >= hDOSS1MSS2 && allValuesDosS1MSS2[jDOSS1MSS2 - hDOSS1MSS2] > keyDOSS1MSS2)
        {
            allValuesDosS1MSS2[jDOSS1MSS2] = allValuesDosS1MSS2[jDOSS1MSS2 - hDOSS1MSS2];
            jDOSS1MSS2 = jDOSS1MSS2 - hDOSS1MSS2;
        }
        allValuesDosS1MSS2[jDOSS1MSS2] = keyDOSS1MSS2;
    }
    hDOSS1MSS2 = floor(hDOSS1MSS2/3);
}
numeric minValueDosS1MSS2 = allValuesDosS1MSS2[1];
numeric dn1000S1MSS2 = 10000;
numeric actualCountDosS1MSS2 = 0;
for i = 1 to dosS1MSS2realSize 
{
    if (allValuesDosS1MSS2[i] == minValueDosS1MSS2)
    {
        actualCountDosS1MSS2 = actualCountDosS1MSS2 + 1;
        if (actualCountDosS1MSS2 >= DNminCALCS1MSS2)
        {
           dn1000S1MSS2 = minValueDosS1MSS2;
           go to dn1000S1MSS2jumper;
        }
    }
    else
    {
        minValueDosS1MSS2 = allValuesDosS1MSS2[i+1];
        actualCountDosS1MSS2 = 0;
    }
}
dn1000S1MSS2jumper:
if (dn1000S1MSS2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1MSS2 = allValuesDosS1MSS2[1];
}
if (dn1000S1MSS2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1MSS2 = allValuesDosS1MSS2[1];
}
printf("dn1000 Scene 1 MSS2: %12f\n", dn1000S1MSS2);
########################### Scene 1 - Dn1000 - Band 3
numeric lastDOSS1MSS3 = dosS1MSS3realSize;
numeric hDOSS1MSS3 = 1;
while ( (hDOSS1MSS3 * 3 + 1) < lastDOSS1MSS3 - 1 )
{
    hDOSS1MSS3 = 3 * hDOSS1MSS3 + 1;
}
while ( hDOSS1MSS3 > 0 )
{
    for i = hDOSS1MSS3 - 1 to lastDOSS1MSS3               # for each of the h sets of elements
    {
        numeric keyDOSS1MSS3 = allValuesDosS1MSS3[i];
        numeric jDOSS1MSS3 = i;
        while (jDOSS1MSS3 >= hDOSS1MSS3 && allValuesDosS1MSS3[jDOSS1MSS3 - hDOSS1MSS3] > keyDOSS1MSS3)
        {
            allValuesDosS1MSS3[jDOSS1MSS3] = allValuesDosS1MSS3[jDOSS1MSS3 - hDOSS1MSS3];
            jDOSS1MSS3 = jDOSS1MSS3 - hDOSS1MSS3;
        }
        allValuesDosS1MSS3[jDOSS1MSS3] = keyDOSS1MSS3;
    }
    hDOSS1MSS3 = floor(hDOSS1MSS3/3);
}
numeric minValueDosS1MSS3 = allValuesDosS1MSS3[1];
numeric dn1000S1MSS3 = 10000;
numeric actualCountDosS1MSS3 = 0;
for i = 1 to dosS1MSS3realSize 
{
    if (allValuesDosS1MSS3[i] == minValueDosS1MSS3)
    {
        actualCountDosS1MSS3 = actualCountDosS1MSS3 + 1;
        if (actualCountDosS1MSS3 >= DNminCALCS1MSS3)
        {
            dn1000S1MSS3 = minValueDosS1MSS3;
            go to dn1000S1MSS3jumper;
        }
    }
    else
    {
        minValueDosS1MSS3 = allValuesDosS1MSS3[i+1];
        actualCountDosS1MSS3 = 0;
    }
}
dn1000S1MSS3jumper:
if (dn1000S1MSS3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1MSS3 = allValuesDosS1MSS3[1];
}
if (dn1000S1MSS3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1MSS3 = allValuesDosS1MSS3[1];
}
printf("dn1000 Scene 1 MSS3: %12f\n", dn1000S1MSS3);
########################### Scene 1 - Dn1000 - Band 4
numeric lastDOSS1MSS4 = dosS1MSS4realSize;
numeric hDOSS1MSS4 = 1;
while ( (hDOSS1MSS4 * 3 + 1) < lastDOSS1MSS4 - 1 )
{
    hDOSS1MSS4 = 3 * hDOSS1MSS4 + 1;
}
while ( hDOSS1MSS4 > 0 )
{
    for i = hDOSS1MSS4 - 1 to lastDOSS1MSS4
    {
        numeric keyDOSS1MSS4 = allValuesDosS1MSS4[i];
        numeric jDOSS1MSS4 = i;
        while (jDOSS1MSS4 >= hDOSS1MSS4 && allValuesDosS1MSS4[jDOSS1MSS4 - hDOSS1MSS4] > keyDOSS1MSS4)
        {
            allValuesDosS1MSS4[jDOSS1MSS4] = allValuesDosS1MSS4[jDOSS1MSS4 - hDOSS1MSS4];
            jDOSS1MSS4 = jDOSS1MSS4 - hDOSS1MSS4;
        }
        allValuesDosS1MSS4[jDOSS1MSS4] = keyDOSS1MSS4;
    }
    hDOSS1MSS4 = floor(hDOSS1MSS4/3);
}
numeric minValueDosS1MSS4 = allValuesDosS1MSS4[1];
numeric dn1000S1MSS4 = 10000;
numeric actualCountDosS1MSS4 = 0;
for i = 1 to dosS1MSS4realSize 
{
    if (allValuesDosS1MSS4[i] == minValueDosS1MSS4)
    {
        actualCountDosS1MSS4 = actualCountDosS1MSS4 + 1;
        if (actualCountDosS1MSS4 >= DNminCALCS1MSS4)
        {
            dn1000S1MSS4 = minValueDosS1MSS4;
            go to dn1000S1MSS4jumper;
        }
    }
    else
    {
        minValueDosS1MSS4 = allValuesDosS1MSS4[i+1];
        actualCountDosS1MSS4 = 0;
    }
}
dn1000S1MSS4jumper:
if (dn1000S1MSS4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1MSS4 = allValuesDosS1MSS4[1];
}
if (dn1000S1MSS4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1MSS4 = allValuesDosS1MSS4[1];
}
	
printf("dn1000 Scene 1 MSS4: %12f\n", dn1000S1MSS4);
################################### Pathradiance Calculation #######################################
numeric pathRadS1MSS1 = dn1000S1MSS1 - (0.01 * (radsurfMSS1b1 * cos(s1zenith)) / pi);
numeric pathRadS1MSS2 = dn1000S1MSS2 - (0.01 * (radsurfMSS1b2 * cos(s1zenith)) / pi);
numeric pathRadS1MSS3 = dn1000S1MSS3 - (0.01 * (radsurfMSS1b3 * cos(s1zenith)) / pi);
numeric pathRadS1MSS4 = dn1000S1MSS4 - (0.01 * (radsurfMSS1b4 * cos(s1zenith)) / pi);
printf("Pathradiance Scene 1 Band 1: %12f\n", pathRadS1MSS1);
printf("Pathradiance Scene 1 Band 2: %12f\n", pathRadS1MSS2);
printf("Pathradiance Scene 1 Band 3: %12f\n", pathRadS1MSS3);
printf("Pathradiance Scene 1 Band 4: %12f\n\n", pathRadS1MSS4);
################################# Reflectance Calculation with athmo correction
	  for i = 1 to MSSlins
	  {
	     for j = 1 to MSScols
	     {          
               valueS1MSS1 = (pi * (RADS1MSS1[i,j] - pathRadS1MSS1)) / (radsurfMSS1b1 * cos(s1zenith));
                  if ( valueS1MSS1 < 0 )
       		{
          			valueS1MSS1 = 0;
				countS1REFnullMSS1 = countS1REFnullMSS1 + 1;
       		}
			else if ( valueS1MSS1 > 1 )
			{
				valueS1MSS1 = 1;
				countS1REFoneMSS1 = countS1REFoneMSS1 + 1;
			}
       		
			REFS1MSS1[i,j] = valueS1MSS1;
               valueS1MSS2 = (pi * (RADS1MSS2[i,j] - pathRadS1MSS2)) / (radsurfMSS1b2 * cos(s1zenith));
                  if ( valueS1MSS2 < 0 )
       		{
          			valueS1MSS2 = 0;
				countS1REFnullMSS2 = countS1REFnullMSS2 + 1;
       		}
			else if ( valueS1MSS2 > 1 )
			{
				valueS1MSS2 = 1;
				countS1REFoneMSS2 = countS1REFoneMSS2 + 1;
			}
       		
			REFS1MSS2[i,j] = valueS1MSS2;
               valueS1MSS3 = (pi * (RADS1MSS3[i,j] - pathRadS1MSS3)) / (radsurfMSS1b3 * cos(s1zenith));
                  if ( valueS1MSS3 < 0 )
       		{
          			valueS1MSS3 = 0;
				countS1REFnullMSS3 = countS1REFnullMSS3 + 1;
       		}
			else if ( valueS1MSS3 > 1 )
			{
				valueS1MSS3 = 1;
				countS1REFoneMSS3 = countS1REFoneMSS3 + 1;
			}
       		
			REFS1MSS3[i,j] = valueS1MSS3;
               valueS1MSS4 = (pi * (RADS1MSS4[i,j] - pathRadS1MSS4)) / (radsurfMSS1b4 * cos(s1zenith));
                  if ( valueS1MSS4 < 0 )
       		{
          			valueS1MSS4 = 0;
				countS1REFnullMSS4 = countS1REFnullMSS4 + 1;
       		}
			else if ( valueS1MSS4 > 1 )
			{
				valueS1MSS4 = 1;
				countS1REFoneMSS4 = countS1REFoneMSS4 + 1;
			}
       		
			REFS1MSS4[i,j] = valueS1MSS4;
           }
	  }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullMSS1, countS1REFoneMSS1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullMSS2, countS1REFoneMSS2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullMSS3, countS1REFoneMSS3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullMSS4, countS1REFoneMSS4);
CreatePyramid(REFS1MSS1);
CreatePyramid(REFS1MSS2);
CreatePyramid(REFS1MSS3);
CreatePyramid(REFS1MSS4);
        
CreateHistogram(REFS1MSS1);
CreateHistogram(REFS1MSS2);
CreateHistogram(REFS1MSS3);
CreateHistogram(REFS1MSS4);
CloseRaster(RADS1MSS1);
CloseRaster(RADS1MSS2);
CloseRaster(RADS1MSS3);
CloseRaster(RADS1MSS4);
printf("Reflectance calculation for Scene 1 (MSS) is done...\n\n\n");
}
else if ( sensors1 == 4 )                                               # MSS 4
{
raster REFS1MSS1, REFS1MSS2, REFS1MSS3, REFS1MSS4;
numeric radsurfMSS1b1, radsurfMSS1b2, radsurfMSS1b3, radsurfMSS1b4;
numeric valueS1MSS1, valueS1MSS2, valueS1MSS3, valueS1MSS4;
numeric dosS1MSS1nullValCount = 0;
numeric dosS1MSS2nullValCount = 0;
numeric dosS1MSS3nullValCount = 0;
numeric dosS1MSS4nullValCount = 0;
numeric dosS1MSS1realArrayCount = 1;
numeric dosS1MSS2realArrayCount = 1;
numeric dosS1MSS3realArrayCount = 1;
numeric dosS1MSS4realArrayCount = 1;
numeric countS1REFnullMSS1 = 0;
numeric countS1REFnullMSS2 = 0;
numeric countS1REFnullMSS3 = 0;
numeric countS1REFnullMSS4 = 0;
numeric countS1REFoneMSS1 = 0;
numeric countS1REFoneMSS2 = 0;
numeric countS1REFoneMSS3 = 0;
numeric countS1REFoneMSS4 = 0;
radsurfMSS1b1 = ESMSS41 / (dist1^2);
radsurfMSS1b2 = ESMSS42 / (dist1^2);
radsurfMSS1b3 = ESMSS43 / (dist1^2);
radsurfMSS1b4 = ESMSS44 / (dist1^2);
printf("Surface Radiance MSS Band 1 in W/m^2�m (Scene 1): %12f\n", radsurfMSS1b1);
printf("Surface Radiance MSS Band 2 in W/m^2�m (Scene 1): %12f\n", radsurfMSS1b2);
printf("Surface Radiance MSS Band 3 in W/m^2�m (Scene 1): %12f\n", radsurfMSS1b3);
printf("Surface Radiance MSS Band 4 in W/m^2�m (Scene 1): %12f\n\n", radsurfMSS1b4);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {       
		if (IsNull(RADS1MSS1[i,j]) == 1)
		{
		dosS1MSS1nullValCount = dosS1MSS1nullValCount + 1;
		}
		if (IsNull(RADS1MSS2[i,j]) == 1)
		{
		dosS1MSS2nullValCount = dosS1MSS2nullValCount + 1;
		}		 
		if (IsNull(RADS1MSS3[i,j]) == 1)
		{
		dosS1MSS3nullValCount = dosS1MSS3nullValCount + 1;
		}		 
		if (IsNull(RADS1MSS4[i,j]) == 1)
		{
		dosS1MSS4nullValCount = dosS1MSS4nullValCount + 1;
		}		 	 	 
    }
}
numeric dosS1MSS1realSize = (MSSlins * MSScols) - dosS1MSS1nullValCount;
numeric dosS1MSS2realSize = (MSSlins * MSScols) - dosS1MSS2nullValCount;
numeric dosS1MSS3realSize = (MSSlins * MSScols) - dosS1MSS3nullValCount;
numeric dosS1MSS4realSize = (MSSlins * MSScols) - dosS1MSS4nullValCount;
array allValuesDosS1MSS1[dosS1MSS1realSize];
array allValuesDosS1MSS2[dosS1MSS2realSize];
array allValuesDosS1MSS3[dosS1MSS3realSize];
array allValuesDosS1MSS4[dosS1MSS4realSize];
numeric DNminCALCS1MSS1 = DNminCALC(Scene1Lin, Scene1Col, dosS1MSS1realSize);
numeric DNminCALCS1MSS2 = DNminCALC(Scene1Lin, Scene1Col, dosS1MSS2realSize);
numeric DNminCALCS1MSS3 = DNminCALC(Scene1Lin, Scene1Col, dosS1MSS3realSize);
numeric DNminCALCS1MSS4 = DNminCALC(Scene1Lin, Scene1Col, dosS1MSS4realSize);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {     
		if (IsNull(RADS1MSS1[i,j]) == 0)
		{
		  allValuesDosS1MSS1[dosS1MSS1realArrayCount] = RADS1MSS1[i,j];		 
		  dosS1MSS1realArrayCount = dosS1MSS1realArrayCount + 1;
		}
		if (IsNull(RADS1MSS2[i,j]) == 0)
		{
		  allValuesDosS1MSS2[dosS1MSS2realArrayCount] = RADS1MSS2[i,j];		 
		  dosS1MSS2realArrayCount = dosS1MSS2realArrayCount + 1;
		}
		if (IsNull(RADS1MSS3[i,j]) == 0)
		{
		  allValuesDosS1MSS3[dosS1MSS3realArrayCount] = RADS1MSS3[i,j];		 
		  dosS1MSS3realArrayCount = dosS1MSS3realArrayCount + 1;
		}
		if (IsNull(RADS1MSS4[i,j]) == 0)
		{
		  allValuesDosS1MSS4[dosS1MSS4realArrayCount] = RADS1MSS4[i,j];		 
		  dosS1MSS4realArrayCount = dosS1MSS4realArrayCount + 1;
		}
    }
}
########################### Scene 1 - Dn1000 - Band 1
numeric lastDOSS1MSS1 = dosS1MSS1realSize;
numeric hDOSS1MSS1 = 1;
while ( (hDOSS1MSS1 * 3 + 1) < lastDOSS1MSS1 - 1 )
{
    hDOSS1MSS1 = 3 * hDOSS1MSS1 + 1;
}
while ( hDOSS1MSS1 > 0 )
{
    for i = hDOSS1MSS1 - 1 to lastDOSS1MSS1               # for each of the h sets of elements
    {
        numeric keyDOSS1MSS1 = allValuesDosS1MSS1[i];
        numeric jDOSS1MSS1 = i;
        while (jDOSS1MSS1 >= hDOSS1MSS1 && allValuesDosS1MSS1[jDOSS1MSS1 - hDOSS1MSS1] > keyDOSS1MSS1)
        {
            allValuesDosS1MSS1[jDOSS1MSS1] = allValuesDosS1MSS1[jDOSS1MSS1 - hDOSS1MSS1];
            jDOSS1MSS1 = jDOSS1MSS1 - hDOSS1MSS1;
        }
        allValuesDosS1MSS1[jDOSS1MSS1] = keyDOSS1MSS1;
    }
    hDOSS1MSS1 = floor(hDOSS1MSS1/3);
}
numeric minValueDosS1MSS1 = allValuesDosS1MSS1[1];
numeric dn1000S1MSS1 = 10000;
numeric actualCountDosS1MSS1 = 0;
for i = 1 to dosS1MSS1realSize 
{
    if (allValuesDosS1MSS1[i] == minValueDosS1MSS1)
    {
        actualCountDosS1MSS1 = actualCountDosS1MSS1 + 1;
        if (actualCountDosS1MSS1 >= DNminCALCS1MSS1)
        {
           dn1000S1MSS1 = minValueDosS1MSS1;
           go to dn1000S1MSS1jumper;
        }
    }
    else
    {
        minValueDosS1MSS1 = allValuesDosS1MSS1[i+1];
        actualCountDosS1MSS1 = 0;
    }
}
dn1000S1MSS1jumper:
if (dn1000S1MSS1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1MSS1 = allValuesDosS1MSS1[1];
}
if (dn1000S1MSS1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1MSS1 = allValuesDosS1MSS1[1];
}
printf("dn1000 Scene 1 MSS1: %12f\n", dn1000S1MSS1);
########################### Scene 1 - Dn1000 - Band 2
numeric lastDOSS1MSS2 = dosS1MSS1realSize;
numeric hDOSS1MSS2 = 1;
while ( (hDOSS1MSS2 * 3 + 1) < lastDOSS1MSS2 - 1 )
{
    hDOSS1MSS2 = 3 * hDOSS1MSS2 + 1;
}
while ( hDOSS1MSS2 > 0 )
{
    for i = hDOSS1MSS2 - 1 to lastDOSS1MSS2
    {
        numeric keyDOSS1MSS2 = allValuesDosS1MSS2[i];
        numeric jDOSS1MSS2 = i;
        while (jDOSS1MSS2 >= hDOSS1MSS2 && allValuesDosS1MSS2[jDOSS1MSS2 - hDOSS1MSS2] > keyDOSS1MSS2)
        {
            allValuesDosS1MSS2[jDOSS1MSS2] = allValuesDosS1MSS2[jDOSS1MSS2 - hDOSS1MSS2];
            jDOSS1MSS2 = jDOSS1MSS2 - hDOSS1MSS2;
        }
        allValuesDosS1MSS2[jDOSS1MSS2] = keyDOSS1MSS2;
    }
    hDOSS1MSS2 = floor(hDOSS1MSS2/3);
}
numeric minValueDosS1MSS2 = allValuesDosS1MSS2[1];
numeric dn1000S1MSS2 = 10000;
numeric actualCountDosS1MSS2 = 0;
for i = 1 to dosS1MSS2realSize 
{
    if (allValuesDosS1MSS2[i] == minValueDosS1MSS2)
    {
        actualCountDosS1MSS2 = actualCountDosS1MSS2 + 1;
        if (actualCountDosS1MSS2 >= DNminCALCS1MSS2)
        {
           dn1000S1MSS2 = minValueDosS1MSS2;
           go to dn1000S1MSS2jumper;
        }
    }
    else
    {
        minValueDosS1MSS2 = allValuesDosS1MSS2[i+1];
        actualCountDosS1MSS2 = 0;
    }
}
dn1000S1MSS2jumper:
if (dn1000S1MSS2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1MSS2 = allValuesDosS1MSS2[1];
}
if (dn1000S1MSS2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1MSS2 = allValuesDosS1MSS2[1];
}
printf("dn1000 Scene 1 MSS2: %12f\n", dn1000S1MSS2);
########################### Scene 1 - Dn1000 - Band 3
numeric lastDOSS1MSS3 = dosS1MSS3realSize;
numeric hDOSS1MSS3 = 1;
while ( (hDOSS1MSS3 * 3 + 1) < lastDOSS1MSS3 - 1 )
{
    hDOSS1MSS3 = 3 * hDOSS1MSS3 + 1;
}
while ( hDOSS1MSS3 > 0 )
{
    for i = hDOSS1MSS3 - 1 to lastDOSS1MSS3               # for each of the h sets of elements
    {
        numeric keyDOSS1MSS3 = allValuesDosS1MSS3[i];
        numeric jDOSS1MSS3 = i;
        while (jDOSS1MSS3 >= hDOSS1MSS3 && allValuesDosS1MSS3[jDOSS1MSS3 - hDOSS1MSS3] > keyDOSS1MSS3)
        {
            allValuesDosS1MSS3[jDOSS1MSS3] = allValuesDosS1MSS3[jDOSS1MSS3 - hDOSS1MSS3];
            jDOSS1MSS3 = jDOSS1MSS3 - hDOSS1MSS3;
        }
        allValuesDosS1MSS3[jDOSS1MSS3] = keyDOSS1MSS3;
    }
    hDOSS1MSS3 = floor(hDOSS1MSS3/3);
}
numeric minValueDosS1MSS3 = allValuesDosS1MSS3[1];
numeric dn1000S1MSS3 = 10000;
numeric actualCountDosS1MSS3 = 0;
for i = 1 to dosS1MSS3realSize 
{
    if (allValuesDosS1MSS3[i] == minValueDosS1MSS3)
    {
        actualCountDosS1MSS3 = actualCountDosS1MSS3 + 1;
        if (actualCountDosS1MSS3 >= DNminCALCS1MSS3)
        {
            dn1000S1MSS3 = minValueDosS1MSS3;
            go to dn1000S1MSS3jumper;
        }
    }
    else
    {
        minValueDosS1MSS3 = allValuesDosS1MSS3[i+1];
        actualCountDosS1MSS3 = 0;
    }
}
dn1000S1MSS3jumper:
if (dn1000S1MSS3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1MSS3 = allValuesDosS1MSS3[1];
}
if (dn1000S1MSS3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1MSS3 = allValuesDosS1MSS3[1];
}
printf("dn1000 Scene 1 MSS3: %12f\n", dn1000S1MSS3);
########################### Scene 1 - Dn1000 - Band 4
numeric lastDOSS1MSS4 = dosS1MSS4realSize;
numeric hDOSS1MSS4 = 1;
while ( (hDOSS1MSS4 * 3 + 1) < lastDOSS1MSS4 - 1 )
{
    hDOSS1MSS4 = 3 * hDOSS1MSS4 + 1;
}
while ( hDOSS1MSS4 > 0 )
{
    for i = hDOSS1MSS4 - 1 to lastDOSS1MSS4
    {
        numeric keyDOSS1MSS4 = allValuesDosS1MSS4[i];
        numeric jDOSS1MSS4 = i;
        while (jDOSS1MSS4 >= hDOSS1MSS4 && allValuesDosS1MSS4[jDOSS1MSS4 - hDOSS1MSS4] > keyDOSS1MSS4)
        {
            allValuesDosS1MSS4[jDOSS1MSS4] = allValuesDosS1MSS4[jDOSS1MSS4 - hDOSS1MSS4];
            jDOSS1MSS4 = jDOSS1MSS4 - hDOSS1MSS4;
        }
        allValuesDosS1MSS4[jDOSS1MSS4] = keyDOSS1MSS4;
    }
    hDOSS1MSS4 = floor(hDOSS1MSS4/3);
}
numeric minValueDosS1MSS4 = allValuesDosS1MSS4[1];
numeric dn1000S1MSS4 = 10000;
numeric actualCountDosS1MSS4 = 0;
for i = 1 to dosS1MSS4realSize 
{
    if (allValuesDosS1MSS4[i] == minValueDosS1MSS4)
    {
        actualCountDosS1MSS4 = actualCountDosS1MSS4 + 1;
        if (actualCountDosS1MSS4 >= DNminCALCS1MSS4)
        {
            dn1000S1MSS4 = minValueDosS1MSS4;
            go to dn1000S1MSS4jumper;
        }
    }
    else
    {
        minValueDosS1MSS4 = allValuesDosS1MSS4[i+1];
        actualCountDosS1MSS4 = 0;
    }
}
dn1000S1MSS4jumper:
if (dn1000S1MSS4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1MSS4 = allValuesDosS1MSS4[1];
}
if (dn1000S1MSS4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1MSS4 = allValuesDosS1MSS4[1];
}
	
printf("dn1000 Scene 1 MSS4: %12f\n", dn1000S1MSS4);
################################### Pathradiance Calculation #######################################
numeric pathRadS1MSS1 = dn1000S1MSS1 - (0.01 * (radsurfMSS1b1 * cos(s1zenith)) / pi);
numeric pathRadS1MSS2 = dn1000S1MSS2 - (0.01 * (radsurfMSS1b2 * cos(s1zenith)) / pi);
numeric pathRadS1MSS3 = dn1000S1MSS3 - (0.01 * (radsurfMSS1b3 * cos(s1zenith)) / pi);
numeric pathRadS1MSS4 = dn1000S1MSS4 - (0.01 * (radsurfMSS1b4 * cos(s1zenith)) / pi);
printf("Pathradiance Scene 1 Band 1: %12f\n", pathRadS1MSS1);
printf("Pathradiance Scene 1 Band 2: %12f\n", pathRadS1MSS2);
printf("Pathradiance Scene 1 Band 3: %12f\n", pathRadS1MSS3);
printf("Pathradiance Scene 1 Band 4: %12f\n\n", pathRadS1MSS4);
################################# Reflectance Calculation with athmo correction
	  for i = 1 to MSSlins
	  {
	     for j = 1 to MSScols
	     {          
               valueS1MSS1 = (pi * (RADS1MSS1[i,j] - pathRadS1MSS1)) / (radsurfMSS1b1 * cos(s1zenith));
                  if ( valueS1MSS1 < 0 )
       		{
          			valueS1MSS1 = 0;
				countS1REFnullMSS1 = countS1REFnullMSS1 + 1;
       		}
			else if ( valueS1MSS1 > 1 )
			{
				valueS1MSS1 = 1;
				countS1REFoneMSS1 = countS1REFoneMSS1 + 1;
			}
       		
			REFS1MSS1[i,j] = valueS1MSS1;
               valueS1MSS2 = (pi * (RADS1MSS2[i,j] - pathRadS1MSS2)) / (radsurfMSS1b2 * cos(s1zenith));
                  if ( valueS1MSS2 < 0 )
       		{
          			valueS1MSS2 = 0;
				countS1REFnullMSS2 = countS1REFnullMSS2 + 1;
       		}
			else if ( valueS1MSS2 > 1 )
			{
				valueS1MSS2 = 1;
				countS1REFoneMSS2 = countS1REFoneMSS2 + 1;
			}
       		
			REFS1MSS2[i,j] = valueS1MSS2;
               valueS1MSS3 = (pi * (RADS1MSS3[i,j] - pathRadS1MSS3)) / (radsurfMSS1b3 * cos(s1zenith));
                  if ( valueS1MSS3 < 0 )
       		{
          			valueS1MSS3 = 0;
				countS1REFnullMSS3 = countS1REFnullMSS3 + 1;
       		}
			else if ( valueS1MSS3 > 1 )
			{
				valueS1MSS3 = 1;
				countS1REFoneMSS3 = countS1REFoneMSS3 + 1;
			}
       		
			REFS1MSS3[i,j] = valueS1MSS3;
               valueS1MSS4 = (pi * (RADS1MSS4[i,j] - pathRadS1MSS4)) / (radsurfMSS1b4 * cos(s1zenith));
                  if ( valueS1MSS4 < 0 )
       		{
          			valueS1MSS4 = 0;
				countS1REFnullMSS4 = countS1REFnullMSS4 + 1;
       		}
			else if ( valueS1MSS4 > 1 )
			{
				valueS1MSS4 = 1;
				countS1REFoneMSS4 = countS1REFoneMSS4 + 1;
			}
       		
			REFS1MSS4[i,j] = valueS1MSS4;
           }
	  }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullMSS1, countS1REFoneMSS1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullMSS2, countS1REFoneMSS2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullMSS3, countS1REFoneMSS3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullMSS4, countS1REFoneMSS4);
CreatePyramid(REFS1MSS1);
CreatePyramid(REFS1MSS2);
CreatePyramid(REFS1MSS3);
CreatePyramid(REFS1MSS4);
        
CreateHistogram(REFS1MSS1);
CreateHistogram(REFS1MSS2);
CreateHistogram(REFS1MSS3);
CreateHistogram(REFS1MSS4);
CloseRaster(RADS1MSS1);
CloseRaster(RADS1MSS2);
CloseRaster(RADS1MSS3);
CloseRaster(RADS1MSS4);
printf("Reflectance calculation for Scene 1 (MSS) is done...\n\n\n");
}
else 																# MSS 1, 2 and 3
{
raster REFS1MSS1, REFS1MSS2, REFS1MSS3, REFS1MSS4;
numeric radsurfMSS1b1, radsurfMSS1b2, radsurfMSS1b3, radsurfMSS1b4;
numeric valueS1MSS1, valueS1MSS2, valueS1MSS3, valueS1MSS4;
numeric dosS1MSS1nullValCount = 0;
numeric dosS1MSS2nullValCount = 0;
numeric dosS1MSS3nullValCount = 0;
numeric dosS1MSS4nullValCount = 0;
numeric dosS1MSS1realArrayCount = 1;
numeric dosS1MSS2realArrayCount = 1;
numeric dosS1MSS3realArrayCount = 1;
numeric dosS1MSS4realArrayCount = 1;
numeric countS1REFnullMSS1 = 0;
numeric countS1REFnullMSS2 = 0;
numeric countS1REFnullMSS3 = 0;
numeric countS1REFnullMSS4 = 0;
numeric countS1REFoneMSS1 = 0;
numeric countS1REFoneMSS2 = 0;
numeric countS1REFoneMSS3 = 0;
numeric countS1REFoneMSS4 = 0;
radsurfMSS1b1 = ESMSS11 / (dist1^2);
radsurfMSS1b2 = ESMSS12 / (dist1^2);
radsurfMSS1b3 = ESMSS13 / (dist1^2);
radsurfMSS1b4 = ESMSS14 / (dist1^2);
printf("Surface Radiance MSS Band 1 in W/m^2�m (Scene 1): %12f\n", radsurfMSS1b1);
printf("Surface Radiance MSS Band 2 in W/m^2�m (Scene 1): %12f\n", radsurfMSS1b2);
printf("Surface Radiance MSS Band 3 in W/m^2�m (Scene 1): %12f\n", radsurfMSS1b3);
printf("Surface Radiance MSS Band 4 in W/m^2�m (Scene 1): %12f\n\n", radsurfMSS1b4);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {       
		if (IsNull(RADS1MSS1[i,j]) == 1)
		{
		dosS1MSS1nullValCount = dosS1MSS1nullValCount + 1;
		}
		if (IsNull(RADS1MSS2[i,j]) == 1)
		{
		dosS1MSS2nullValCount = dosS1MSS2nullValCount + 1;
		}		 
		if (IsNull(RADS1MSS3[i,j]) == 1)
		{
		dosS1MSS3nullValCount = dosS1MSS3nullValCount + 1;
		}		 
		if (IsNull(RADS1MSS4[i,j]) == 1)
		{
		dosS1MSS4nullValCount = dosS1MSS4nullValCount + 1;
		}		 	 	 
    }
}
numeric dosS1MSS1realSize = (MSSlins * MSScols) - dosS1MSS1nullValCount;
numeric dosS1MSS2realSize = (MSSlins * MSScols) - dosS1MSS2nullValCount;
numeric dosS1MSS3realSize = (MSSlins * MSScols) - dosS1MSS3nullValCount;
numeric dosS1MSS4realSize = (MSSlins * MSScols) - dosS1MSS4nullValCount;
array allValuesDosS1MSS1[dosS1MSS1realSize];
array allValuesDosS1MSS2[dosS1MSS2realSize];
array allValuesDosS1MSS3[dosS1MSS3realSize];
array allValuesDosS1MSS4[dosS1MSS4realSize];
numeric DNminCALCS1MSS1 = DNminCALC(Scene1Lin, Scene1Col, dosS1MSS1realSize);
numeric DNminCALCS1MSS2 = DNminCALC(Scene1Lin, Scene1Col, dosS1MSS2realSize);
numeric DNminCALCS1MSS3 = DNminCALC(Scene1Lin, Scene1Col, dosS1MSS3realSize);
numeric DNminCALCS1MSS4 = DNminCALC(Scene1Lin, Scene1Col, dosS1MSS4realSize);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {     
		if (IsNull(RADS1MSS1[i,j]) == 0)
		{
		  allValuesDosS1MSS1[dosS1MSS1realArrayCount] = RADS1MSS1[i,j];		 
		  dosS1MSS1realArrayCount = dosS1MSS1realArrayCount + 1;
		}
		if (IsNull(RADS1MSS2[i,j]) == 0)
		{
		  allValuesDosS1MSS2[dosS1MSS2realArrayCount] = RADS1MSS2[i,j];		 
		  dosS1MSS2realArrayCount = dosS1MSS2realArrayCount + 1;
		}
		if (IsNull(RADS1MSS3[i,j]) == 0)
		{
		  allValuesDosS1MSS3[dosS1MSS3realArrayCount] = RADS1MSS3[i,j];		 
		  dosS1MSS3realArrayCount = dosS1MSS3realArrayCount + 1;
		}
		if (IsNull(RADS1MSS4[i,j]) == 0)
		{
		  allValuesDosS1MSS4[dosS1MSS4realArrayCount] = RADS1MSS4[i,j];		 
		  dosS1MSS4realArrayCount = dosS1MSS4realArrayCount + 1;
		}
    }
}
########################### Scene 1 - Dn1000 - Band 1
numeric lastDOSS1MSS1 = dosS1MSS1realSize;
numeric hDOSS1MSS1 = 1;
while ( (hDOSS1MSS1 * 3 + 1) < lastDOSS1MSS1 - 1 )
{
    hDOSS1MSS1 = 3 * hDOSS1MSS1 + 1;
}
while ( hDOSS1MSS1 > 0 )
{
    for i = hDOSS1MSS1 - 1 to lastDOSS1MSS1               # for each of the h sets of elements
    {
        numeric keyDOSS1MSS1 = allValuesDosS1MSS1[i];
        numeric jDOSS1MSS1 = i;
        while (jDOSS1MSS1 >= hDOSS1MSS1 && allValuesDosS1MSS1[jDOSS1MSS1 - hDOSS1MSS1] > keyDOSS1MSS1)
        {
            allValuesDosS1MSS1[jDOSS1MSS1] = allValuesDosS1MSS1[jDOSS1MSS1 - hDOSS1MSS1];
            jDOSS1MSS1 = jDOSS1MSS1 - hDOSS1MSS1;
        }
        allValuesDosS1MSS1[jDOSS1MSS1] = keyDOSS1MSS1;
    }
    hDOSS1MSS1 = floor(hDOSS1MSS1/3);
}
numeric minValueDosS1MSS1 = allValuesDosS1MSS1[1];
numeric dn1000S1MSS1 = 10000;
numeric actualCountDosS1MSS1 = 0;
for i = 1 to dosS1MSS1realSize 
{
    if (allValuesDosS1MSS1[i] == minValueDosS1MSS1)
    {
        actualCountDosS1MSS1 = actualCountDosS1MSS1 + 1;
        if (actualCountDosS1MSS1 >= DNminCALCS1MSS1)
        {
            dn1000S1MSS1 = minValueDosS1MSS1;
            go to dn1000S1MSS1jumper;
        }
    }
    else
    {
        minValueDosS1MSS1 = allValuesDosS1MSS1[i+1];
        actualCountDosS1MSS1 = 0;
    }
}
dn1000S1MSS1jumper:
if (dn1000S1MSS1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1MSS1 = allValuesDosS1MSS1[1];
}
if (dn1000S1MSS1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1MSS1 = allValuesDosS1MSS1[1];
}
	
printf("dn1000 Scene 1 MSS1: %12f\n", dn1000S1MSS1);
########################### Scene 1 - Dn1000 - Band 2
numeric lastDOSS1MSS2 = dosS1MSS1realSize;
numeric hDOSS1MSS2 = 1;
while ( (hDOSS1MSS2 * 3 + 1) < lastDOSS1MSS2 - 1 )
{
    hDOSS1MSS2 = 3 * hDOSS1MSS2 + 1;
}
while ( hDOSS1MSS2 > 0 )
{
    for i = hDOSS1MSS2 - 1 to lastDOSS1MSS2
    {
        numeric keyDOSS1MSS2 = allValuesDosS1MSS2[i];
        numeric jDOSS1MSS2 = i;
        while (jDOSS1MSS2 >= hDOSS1MSS2 && allValuesDosS1MSS2[jDOSS1MSS2 - hDOSS1MSS2] > keyDOSS1MSS2)
        {
            allValuesDosS1MSS2[jDOSS1MSS2] = allValuesDosS1MSS2[jDOSS1MSS2 - hDOSS1MSS2];
            jDOSS1MSS2 = jDOSS1MSS2 - hDOSS1MSS2;
        }
        allValuesDosS1MSS2[jDOSS1MSS2] = keyDOSS1MSS2;
    }
    hDOSS1MSS2 = floor(hDOSS1MSS2/3);
}
numeric minValueDosS1MSS2 = allValuesDosS1MSS2[1];
numeric dn1000S1MSS2 = 10000;
numeric actualCountDosS1MSS2 = 0;
for i = 1 to dosS1MSS2realSize 
{
    if (allValuesDosS1MSS2[i] == minValueDosS1MSS2)
    {
        actualCountDosS1MSS2 = actualCountDosS1MSS2 + 1;
        if (actualCountDosS1MSS2 >= DNminCALCS1MSS2)
        {
            dn1000S1MSS2 = minValueDosS1MSS2;
            go to dn1000S1MSS2jumper;
        }
    }
    else
    {
        minValueDosS1MSS2 = allValuesDosS1MSS2[i+1];
        actualCountDosS1MSS2 = 0;
    }
}
dn1000S1MSS2jumper:
if (dn1000S1MSS2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1MSS2 = allValuesDosS1MSS2[1];
}
if (dn1000S1MSS2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1MSS2 = allValuesDosS1MSS2[1];
}
printf("dn1000 Scene 1 MSS2: %12f\n", dn1000S1MSS2);
########################### Scene 1 - Dn1000 - Band 3
numeric lastDOSS1MSS3 = dosS1MSS3realSize;
numeric hDOSS1MSS3 = 1;
while ( (hDOSS1MSS3 * 3 + 1) < lastDOSS1MSS3 - 1 )
{
    hDOSS1MSS3 = 3 * hDOSS1MSS3 + 1;
}
while ( hDOSS1MSS3 > 0 )
{
    for i = hDOSS1MSS3 - 1 to lastDOSS1MSS3               # for each of the h sets of elements
    {
        numeric keyDOSS1MSS3 = allValuesDosS1MSS3[i];
        numeric jDOSS1MSS3 = i;
        while (jDOSS1MSS3 >= hDOSS1MSS3 && allValuesDosS1MSS3[jDOSS1MSS3 - hDOSS1MSS3] > keyDOSS1MSS3)
        {
            allValuesDosS1MSS3[jDOSS1MSS3] = allValuesDosS1MSS3[jDOSS1MSS3 - hDOSS1MSS3];
            jDOSS1MSS3 = jDOSS1MSS3 - hDOSS1MSS3;
        }
        allValuesDosS1MSS3[jDOSS1MSS3] = keyDOSS1MSS3;
    }
    hDOSS1MSS3 = floor(hDOSS1MSS3/3);
}
numeric minValueDosS1MSS3 = allValuesDosS1MSS3[1];
numeric dn1000S1MSS3 = 10000;
numeric actualCountDosS1MSS3 = 0;
for i = 1 to dosS1MSS3realSize 
{
    if (allValuesDosS1MSS3[i] == minValueDosS1MSS3)
    {
        actualCountDosS1MSS3 = actualCountDosS1MSS3 + 1;
        if (actualCountDosS1MSS3 >= DNminCALCS1MSS3)
        {
            dn1000S1MSS3 = minValueDosS1MSS3;
            go to dn1000S1MSS3jumper;
        }
    }
    else
    {
        minValueDosS1MSS3 = allValuesDosS1MSS3[i+1];
        actualCountDosS1MSS3 = 0;
    }
}
dn1000S1MSS3jumper:
if (dn1000S1MSS3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1MSS3 = allValuesDosS1MSS3[1];
}
if (dn1000S1MSS3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1MSS3 = allValuesDosS1MSS3[1];
}
	
printf("dn1000 Scene 1 MSS3: %12f\n", dn1000S1MSS3);
########################### Scene 1 - Dn1000 - Band 4
numeric lastDOSS1MSS4 = dosS1MSS4realSize;
numeric hDOSS1MSS4 = 1;
while ( (hDOSS1MSS4 * 3 + 1) < lastDOSS1MSS4 - 1 )
{
    hDOSS1MSS4 = 3 * hDOSS1MSS4 + 1;
}
while ( hDOSS1MSS4 > 0 )
{
    for i = hDOSS1MSS4 - 1 to lastDOSS1MSS4
    {
        numeric keyDOSS1MSS4 = allValuesDosS1MSS4[i];
        numeric jDOSS1MSS4 = i;
        while (jDOSS1MSS4 >= hDOSS1MSS4 && allValuesDosS1MSS4[jDOSS1MSS4 - hDOSS1MSS4] > keyDOSS1MSS4)
        {
            allValuesDosS1MSS4[jDOSS1MSS4] = allValuesDosS1MSS4[jDOSS1MSS4 - hDOSS1MSS4];
            jDOSS1MSS4 = jDOSS1MSS4 - hDOSS1MSS4;
        }
        allValuesDosS1MSS4[jDOSS1MSS4] = keyDOSS1MSS4;
    }
    hDOSS1MSS4 = floor(hDOSS1MSS4/3);
}
numeric minValueDosS1MSS4 = allValuesDosS1MSS4[1];
numeric dn1000S1MSS4 = 10000;
numeric actualCountDosS1MSS4 = 0;
for i = 1 to dosS1MSS4realSize 
{
    if (allValuesDosS1MSS4[i] == minValueDosS1MSS4)
    {
        actualCountDosS1MSS4 = actualCountDosS1MSS4 + 1;
        if (actualCountDosS1MSS4 >= DNminCALCS1MSS4)
        {
            dn1000S1MSS4 = minValueDosS1MSS4;
            go to dn1000S1MSS4jumper;
        }
    }
    else
    {
        minValueDosS1MSS4 = allValuesDosS1MSS4[i+1];
        actualCountDosS1MSS4 = 0;
    }
}
dn1000S1MSS4jumper:
if (dn1000S1MSS4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S1MSS4 = allValuesDosS1MSS4[1];
}
if (dn1000S1MSS4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S1MSS4 = allValuesDosS1MSS4[1];
}
	
printf("dn1000 Scene 1 MSS4: %12f\n", dn1000S1MSS4);
################################### Pathradiance Calculation #######################################
numeric pathRadS1MSS1 = dn1000S1MSS1 - (0.01 * (radsurfMSS1b1 * cos(s1zenith)) / pi);
numeric pathRadS1MSS2 = dn1000S1MSS2 - (0.01 * (radsurfMSS1b2 * cos(s1zenith)) / pi);
numeric pathRadS1MSS3 = dn1000S1MSS3 - (0.01 * (radsurfMSS1b3 * cos(s1zenith)) / pi);
numeric pathRadS1MSS4 = dn1000S1MSS4 - (0.01 * (radsurfMSS1b4 * cos(s1zenith)) / pi);
printf("Pathradiance Scene 1 Band 1: %12f\n", pathRadS1MSS1);
printf("Pathradiance Scene 1 Band 2: %12f\n", pathRadS1MSS2);
printf("Pathradiance Scene 1 Band 3: %12f\n", pathRadS1MSS3);
printf("Pathradiance Scene 1 Band 4: %12f\n\n", pathRadS1MSS4);
################################# Reflectance Calculation with athmo correction
	  for i = 1 to MSSlins
	  {
	     for j = 1 to MSScols
	     {          
               valueS1MSS1 = (pi * (RADS1MSS1[i,j] - pathRadS1MSS1)) / (radsurfMSS1b1 * cos(s1zenith));
                  if ( valueS1MSS1 < 0 )
       		{
          			valueS1MSS1 = 0;
				countS1REFnullMSS1 = countS1REFnullMSS1 + 1;
       		}
			else if ( valueS1MSS1 > 1 )
			{
				valueS1MSS1 = 1;
				countS1REFoneMSS1 = countS1REFoneMSS1 + 1;
			}
       		
			REFS1MSS1[i,j] = valueS1MSS1;
               valueS1MSS2 = (pi * (RADS1MSS2[i,j] - pathRadS1MSS2)) / (radsurfMSS1b2 * cos(s1zenith));
                  if ( valueS1MSS2 < 0 )
       		{
          			valueS1MSS2 = 0;
				countS1REFnullMSS2 = countS1REFnullMSS2 + 1;
       		}
			else if ( valueS1MSS2 > 1 )
			{
				valueS1MSS2 = 1;
				countS1REFoneMSS2 = countS1REFoneMSS2 + 1;
			}
       		
			REFS1MSS2[i,j] = valueS1MSS2;
               valueS1MSS3 = (pi * (RADS1MSS3[i,j] - pathRadS1MSS3)) / (radsurfMSS1b3 * cos(s1zenith));
                  if ( valueS1MSS3 < 0 )
       		{
          			valueS1MSS3 = 0;
				countS1REFnullMSS3 = countS1REFnullMSS3 + 1;
       		}
			else if ( valueS1MSS3 > 1 )
			{
				valueS1MSS3 = 1;
				countS1REFoneMSS3 = countS1REFoneMSS3 + 1;
			}
       		
			REFS1MSS3[i,j] = valueS1MSS3;
               valueS1MSS4 = (pi * (RADS1MSS4[i,j] - pathRadS1MSS4)) / (radsurfMSS1b4 * cos(s1zenith));
                  if ( valueS1MSS4 < 0 )
       		{
          			valueS1MSS4 = 0;
				countS1REFnullMSS4 = countS1REFnullMSS4 + 1;
       		}
			else if ( valueS1MSS4 > 1 )
			{
				valueS1MSS4 = 1;
				countS1REFoneMSS4 = countS1REFoneMSS4 + 1;
			}
       		
			REFS1MSS4[i,j] = valueS1MSS4;
           }
	  }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullMSS1, countS1REFoneMSS1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullMSS2, countS1REFoneMSS2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullMSS3, countS1REFoneMSS3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 1 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS1REFnullMSS4, countS1REFoneMSS4);
CreatePyramid(REFS1MSS1);
CreatePyramid(REFS1MSS2);
CreatePyramid(REFS1MSS3);
CreatePyramid(REFS1MSS4);
        
CreateHistogram(REFS1MSS1);
CreateHistogram(REFS1MSS2);
CreateHistogram(REFS1MSS3);
CreateHistogram(REFS1MSS4);
CloseRaster(RADS1MSS1);
CloseRaster(RADS1MSS2);
CloseRaster(RADS1MSS3);
CloseRaster(RADS1MSS4);
printf("Reflectance calculation for Scene 1 (MSS) is done...\n\n\n");
}
#############################
#### Reflectance Scene 2
#############################
if ( sensors2 == 7 )
{
raster REFS2ETM1, REFS2ETM2, REFS2ETM3, REFS2ETM4, REFS2ETM5, REFS2ETM7;
numeric radsurfETMS2b1, radsurfETMS2b2, radsurfETMS2b3, radsurfETMS2b4, radsurfETMS2b5, radsurfETMS2b7;
numeric valueS2ETM1, valueS2ETM2, valueS2ETM3, valueS2ETM4, valueS2ETM5, valueS2ETM7;
numeric dosS2ETM1nullValCount = 0;
numeric dosS2ETM2nullValCount = 0;
numeric dosS2ETM3nullValCount = 0;
numeric dosS2ETM4nullValCount = 0;
numeric dosS2ETM5nullValCount = 0;
numeric dosS2ETM7nullValCount = 0;
numeric dosS2ETM1realArrayCount = 1;
numeric dosS2ETM2realArrayCount = 1;
numeric dosS2ETM3realArrayCount = 1;
numeric dosS2ETM4realArrayCount = 1;
numeric dosS2ETM5realArrayCount = 1;
numeric dosS2ETM7realArrayCount = 1;
numeric countS2REFnullETM1 = 0;
numeric countS2REFnullETM2 = 0;
numeric countS2REFnullETM3 = 0;
numeric countS2REFnullETM4 = 0;
numeric countS2REFnullETM5 = 0;
numeric countS2REFnullETM7 = 0;
numeric countS2REFoneETM1 = 0;
numeric countS2REFoneETM2 = 0;
numeric countS2REFoneETM3 = 0;
numeric countS2REFoneETM4 = 0;
numeric countS2REFoneETM5 = 0;
numeric countS2REFoneETM7 = 0;
radsurfETMS2b1 = ESETM1 / (dist2^2);
radsurfETMS2b2 = ESETM2 / (dist2^2);
radsurfETMS2b3 = ESETM3 / (dist2^2);
radsurfETMS2b4 = ESETM4 / (dist2^2);
radsurfETMS2b5 = ESETM5 / (dist2^2);
radsurfETMS2b7 = ESETM7 / (dist2^2);
printf("Surface Radiance ETM Band 1 in W/m^2�m (Scene 2): %12f\n", radsurfETMS2b1);
printf("Surface Radiance ETM Band 2 in W/m^2�m (Scene 2): %12f\n", radsurfETMS2b2);
printf("Surface Radiance ETM Band 3 in W/m^2�m (Scene 2): %12f\n", radsurfETMS2b3);
printf("Surface Radiance ETM Band 4 in W/m^2�m (Scene 2): %12f\n", radsurfETMS2b4);
printf("Surface Radiance ETM Band 5 in W/m^2�m (Scene 2): %12f\n", radsurfETMS2b5);
printf("Surface Radiance ETM Band 7 in W/m^2�m (Scene 2): %12f\n\n", radsurfETMS2b7);
for i = 1 to ETMlins
{
    for j = 1 to ETMcols
    {       
		if (IsNull(RADS2ETM1[i,j]) == 1)
		{
		dosS2ETM1nullValCount = dosS2ETM1nullValCount + 1;
		}
		if (IsNull(RADS2ETM2[i,j]) == 1)
		{
		dosS2ETM2nullValCount = dosS2ETM2nullValCount + 1;
		}		 
		if (IsNull(RADS2ETM3[i,j]) == 1)
		{
		dosS2ETM3nullValCount = dosS2ETM3nullValCount + 1;
		}		 
		if (IsNull(RADS2ETM4[i,j]) == 1)
		{
		dosS2ETM4nullValCount = dosS2ETM4nullValCount + 1;
		}		 
		if (IsNull(RADS2ETM5[i,j]) == 1)
		{
		dosS2ETM5nullValCount = dosS2ETM5nullValCount + 1;
		}		 
		if (IsNull(RADS2ETM7[i,j]) == 1)
		{
		dosS2ETM7nullValCount = dosS2ETM7nullValCount + 1;
		}		 	 
    }
}
numeric dosS2ETM1realSize = (ETMlins * ETMcols) - dosS2ETM1nullValCount;
numeric dosS2ETM2realSize = (ETMlins * ETMcols) - dosS2ETM2nullValCount;
numeric dosS2ETM3realSize = (ETMlins * ETMcols) - dosS2ETM3nullValCount;
numeric dosS2ETM4realSize = (ETMlins * ETMcols) - dosS2ETM4nullValCount;
numeric dosS2ETM5realSize = (ETMlins * ETMcols) - dosS2ETM5nullValCount;
numeric dosS2ETM7realSize = (ETMlins * ETMcols) - dosS2ETM7nullValCount;
array allValuesDosS2ETM1[dosS2ETM1realSize];
array allValuesDosS2ETM2[dosS2ETM2realSize];
array allValuesDosS2ETM3[dosS2ETM3realSize];
array allValuesDosS2ETM4[dosS2ETM4realSize];
array allValuesDosS2ETM5[dosS2ETM5realSize];
array allValuesDosS2ETM7[dosS2ETM7realSize];
numeric DNminCALCS2ETM1 = DNminCALC(Scene2Lin, Scene2Col, dosS2ETM1realSize);
numeric DNminCALCS2ETM2 = DNminCALC(Scene2Lin, Scene2Col, dosS2ETM2realSize);
numeric DNminCALCS2ETM3 = DNminCALC(Scene2Lin, Scene2Col, dosS2ETM3realSize);
numeric DNminCALCS2ETM4 = DNminCALC(Scene2Lin, Scene2Col, dosS2ETM4realSize);
numeric DNminCALCS2ETM5 = DNminCALC(Scene2Lin, Scene2Col, dosS2ETM5realSize);
numeric DNminCALCS2ETM7 = DNminCALC(Scene2Lin, Scene2Col, dosS2ETM7realSize);
for i = 1 to ETMlins
{
    for j = 1 to ETMcols
    {     
		if (IsNull(RADS2ETM1[i,j]) == 0)
		{
		  allValuesDosS2ETM1[dosS2ETM1realArrayCount] = RADS2ETM1[i,j];		 
		  dosS2ETM1realArrayCount = dosS2ETM1realArrayCount + 1;
		}
		if (IsNull(RADS2ETM2[i,j]) == 0)
		{
		  allValuesDosS2ETM2[dosS2ETM2realArrayCount] = RADS2ETM2[i,j];		 
		  dosS2ETM2realArrayCount = dosS2ETM2realArrayCount + 1;
		}
		if (IsNull(RADS2ETM3[i,j]) == 0)
		{
		  allValuesDosS2ETM3[dosS2ETM3realArrayCount] = RADS2ETM3[i,j];		 
		  dosS2ETM3realArrayCount = dosS2ETM3realArrayCount + 1;
		}
		if (IsNull(RADS2ETM4[i,j]) == 0)
		{
		  allValuesDosS2ETM4[dosS2ETM4realArrayCount] = RADS2ETM4[i,j];		 
		  dosS2ETM4realArrayCount = dosS2ETM4realArrayCount + 1;
		}
		if (IsNull(RADS2ETM5[i,j]) == 0)
		{
		  allValuesDosS2ETM5[dosS2ETM5realArrayCount] = RADS2ETM5[i,j];		 
		  dosS2ETM5realArrayCount = dosS2ETM5realArrayCount + 1;
		}
		if (IsNull(RADS2ETM7[i,j]) == 0)
		{
		  allValuesDosS2ETM7[dosS2ETM7realArrayCount] = RADS2ETM7[i,j];		 
		  dosS2ETM7realArrayCount = dosS2ETM7realArrayCount + 1;
		}
    }
}
########################### Scene 2 - Dn1000 - Band 1
numeric lastDOSS2ETM1 = dosS2ETM1realSize;
numeric hDOSS2ETM1 = 1;
while ( (hDOSS2ETM1 * 3 + 1) < lastDOSS2ETM1 - 1 )
{
    hDOSS2ETM1 = 3 * hDOSS2ETM1 + 1;
}
while ( hDOSS2ETM1 > 0 )
{
    for i = hDOSS2ETM1 - 1 to lastDOSS2ETM1               # for each of the h sets of elements
    {
        numeric keyDOSS2ETM1 = allValuesDosS2ETM1[i];
        numeric jDOSS2ETM1 = i;
        while (jDOSS2ETM1 >= hDOSS2ETM1 && allValuesDosS2ETM1[jDOSS2ETM1 - hDOSS2ETM1] > keyDOSS2ETM1)
        {
            allValuesDosS2ETM1[jDOSS2ETM1] = allValuesDosS2ETM1[jDOSS2ETM1 - hDOSS2ETM1];
            jDOSS2ETM1 = jDOSS2ETM1 - hDOSS2ETM1;
        }
        allValuesDosS2ETM1[jDOSS2ETM1] = keyDOSS2ETM1;
    }
    hDOSS2ETM1 = floor(hDOSS2ETM1/3);
}
numeric minValueDosS2ETM1 = allValuesDosS2ETM1[1];
numeric dn1000S2ETM1 = 10000;
numeric actualCountDosS2ETM1 = 0;
for i = 1 to dosS2ETM1realSize 
{
    if (allValuesDosS2ETM1[i] == minValueDosS2ETM1)
    {
        actualCountDosS2ETM1 = actualCountDosS2ETM1 + 1;
        if (actualCountDosS2ETM1 >= DNminCALCS2ETM1)
        {
            dn1000S2ETM1 = minValueDosS2ETM1;
            go to dn1000S2ETM1jumper;
        }
    }
    else
    {
        minValueDosS2ETM1 = allValuesDosS2ETM1[i+1];
        actualCountDosS2ETM1 = 0;
    }
}
dn1000S2ETM1jumper:
if (dn1000S2ETM1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2ETM1 = allValuesDosS2ETM1[1];
}
if (dn1000S2ETM1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2ETM1 = allValuesDosS2ETM1[1];
}
	
printf("dn1000 Scene 2 ETM1: %12f\n", dn1000S2ETM1);
########################### Scene 2 - Dn1000 - Band 2
numeric lastDOSS2ETM2 = dosS2ETM1realSize;
numeric hDOSS2ETM2 = 1;
while ( (hDOSS2ETM2 * 3 + 1) < lastDOSS2ETM2 - 1 )
{
    hDOSS2ETM2 = 3 * hDOSS2ETM2 + 1;
}
while ( hDOSS2ETM2 > 0 )
{
    for i = hDOSS2ETM2 - 1 to lastDOSS2ETM2
    {
        numeric keyDOSS2ETM2 = allValuesDosS2ETM2[i];
        numeric jDOSS2ETM2 = i;
        while (jDOSS2ETM2 >= hDOSS2ETM2 && allValuesDosS2ETM2[jDOSS2ETM2 - hDOSS2ETM2] > keyDOSS2ETM2)
        {
            allValuesDosS2ETM2[jDOSS2ETM2] = allValuesDosS2ETM2[jDOSS2ETM2 - hDOSS2ETM2];
            jDOSS2ETM2 = jDOSS2ETM2 - hDOSS2ETM2;
        }
        allValuesDosS2ETM2[jDOSS2ETM2] = keyDOSS2ETM2;
    }
    hDOSS2ETM2 = floor(hDOSS2ETM2/3);
}
numeric minValueDosS2ETM2 = allValuesDosS2ETM2[1];
numeric dn1000S2ETM2 = 10000;
numeric actualCountDosS2ETM2 = 0;
for i = 1 to dosS2ETM2realSize 
{
    if (allValuesDosS2ETM2[i] == minValueDosS2ETM2)
    {
        actualCountDosS2ETM2 = actualCountDosS2ETM2 + 1;
        if (actualCountDosS2ETM2 >= DNminCALCS2ETM2)
        {
            dn1000S2ETM2 = minValueDosS2ETM2;
            go to dn1000S2ETM2jumper;
        }
    }
    else
    {
        minValueDosS2ETM2 = allValuesDosS2ETM2[i+1];
        actualCountDosS2ETM2 = 0;
    }
}
dn1000S2ETM2jumper:
if (dn1000S2ETM2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2ETM2 = allValuesDosS2ETM2[1];
}
if (dn1000S2ETM2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2ETM2 = allValuesDosS2ETM2[1];
}
printf("dn1000 Scene 2 ETM2: %12f\n", dn1000S2ETM2);
########################### Scene 2 - Dn1000 - Band 3
numeric lastDOSS2ETM3 = dosS2ETM3realSize;
numeric hDOSS2ETM3 = 1;
while ( (hDOSS2ETM3 * 3 + 1) < lastDOSS2ETM3 - 1 )
{
    hDOSS2ETM3 = 3 * hDOSS2ETM3 + 1;
}
while ( hDOSS2ETM3 > 0 )
{
    for i = hDOSS2ETM3 - 1 to lastDOSS2ETM3               # for each of the h sets of elements
    {
        numeric keyDOSS2ETM3 = allValuesDosS2ETM3[i];
        numeric jDOSS2ETM3 = i;
        while (jDOSS2ETM3 >= hDOSS2ETM3 && allValuesDosS2ETM3[jDOSS2ETM3 - hDOSS2ETM3] > keyDOSS2ETM3)
        {
            allValuesDosS2ETM3[jDOSS2ETM3] = allValuesDosS2ETM3[jDOSS2ETM3 - hDOSS2ETM3];
            jDOSS2ETM3 = jDOSS2ETM3 - hDOSS2ETM3;
        }
        allValuesDosS2ETM3[jDOSS2ETM3] = keyDOSS2ETM3;
    }
    hDOSS2ETM3 = floor(hDOSS2ETM3/3);
}
numeric minValueDosS2ETM3 = allValuesDosS2ETM3[1];
numeric dn1000S2ETM3 = 10000;
numeric actualCountDosS2ETM3 = 0;
for i = 1 to dosS2ETM3realSize 
{
    if (allValuesDosS2ETM3[i] == minValueDosS2ETM3)
    {
        actualCountDosS2ETM3 = actualCountDosS2ETM3 + 1;
        if (actualCountDosS2ETM3 >= DNminCALCS2ETM3)
        {
            dn1000S2ETM3 = minValueDosS2ETM3;
            go to dn1000S2ETM3jumper;
        }
    }
    else
    {
        minValueDosS2ETM3 = allValuesDosS2ETM3[i+1];
        actualCountDosS2ETM3 = 0;
    }
}
dn1000S2ETM3jumper:
if (dn1000S2ETM3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2ETM3 = allValuesDosS2ETM3[1];
}
if (dn1000S2ETM3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2ETM3 = allValuesDosS2ETM3[1];
}
	
printf("dn1000 Scene 2 ETM3: %12f\n", dn1000S2ETM3);
########################### Scene 1 - Dn1000 - Band 4
numeric lastDOSS2ETM4 = dosS2ETM4realSize;
numeric hDOSS2ETM4 = 1;
while ( (hDOSS2ETM4 * 3 + 1) < lastDOSS2ETM4 - 1 )
{
    hDOSS2ETM4 = 3 * hDOSS2ETM4 + 1;
}
while ( hDOSS2ETM4 > 0 )
{
    for i = hDOSS2ETM4 - 1 to lastDOSS2ETM4
    {
        numeric keyDOSS2ETM4 = allValuesDosS2ETM4[i];
        numeric jDOSS2ETM4 = i;
        while (jDOSS2ETM4 >= hDOSS2ETM4 && allValuesDosS2ETM4[jDOSS2ETM4 - hDOSS2ETM4] > keyDOSS2ETM4)
        {
            allValuesDosS2ETM4[jDOSS2ETM4] = allValuesDosS2ETM4[jDOSS2ETM4 - hDOSS2ETM4];
            jDOSS2ETM4 = jDOSS2ETM4 - hDOSS2ETM4;
        }
        allValuesDosS2ETM4[jDOSS2ETM4] = keyDOSS2ETM4;
    }
    hDOSS2ETM4 = floor(hDOSS2ETM4/3);
}
numeric minValueDosS2ETM4 = allValuesDosS2ETM4[1];
numeric dn1000S2ETM4 = 10000;
numeric actualCountDosS2ETM4 = 0;
for i = 1 to dosS2ETM4realSize 
{
    if (allValuesDosS2ETM4[i] == minValueDosS2ETM4)
    {
        actualCountDosS2ETM4 = actualCountDosS2ETM4 + 1;
        if (actualCountDosS2ETM4 >= DNminCALCS2ETM4)
        {
            dn1000S2ETM4 = minValueDosS2ETM4;
            go to dn1000S2ETM4jumper;
        }
    }
    else
    {
        minValueDosS2ETM4 = allValuesDosS2ETM4[i+1];
        actualCountDosS2ETM4 = 0;
    }
}
dn1000S2ETM4jumper:
if (dn1000S2ETM4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2ETM4 = allValuesDosS2ETM4[1];
}
if (dn1000S2ETM4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2ETM4 = allValuesDosS2ETM4[1];
}
	
printf("dn1000 Scene 2 ETM4: %12f\n", dn1000S2ETM4);
########################### Scene 2 - Dn1000 - Band 5
numeric lastDOSS2ETM5 = dosS2ETM5realSize;
numeric hDOSS2ETM5 = 1;
while ( (hDOSS2ETM5 * 3 + 1) < lastDOSS2ETM5 - 1 )
{
    hDOSS2ETM5 = 3 * hDOSS2ETM5 + 1;
}
while ( hDOSS2ETM5 > 0 )
{
    for i = hDOSS2ETM5 - 1 to lastDOSS2ETM5               # for each of the h sets of elements
    {
        numeric keyDOSS2ETM5 = allValuesDosS2ETM5[i];
        numeric jDOSS2ETM5 = i;
        while (jDOSS2ETM5 >= hDOSS2ETM5 && allValuesDosS2ETM5[jDOSS2ETM5 - hDOSS2ETM5] > keyDOSS2ETM5)
        {
            allValuesDosS2ETM5[jDOSS2ETM5] = allValuesDosS2ETM5[jDOSS2ETM5 - hDOSS2ETM5];
            jDOSS2ETM5 = jDOSS2ETM5 - hDOSS2ETM5;
        }
        allValuesDosS2ETM5[jDOSS2ETM5] = keyDOSS2ETM5;
    }
    hDOSS2ETM5 = floor(hDOSS2ETM5/3);
}
numeric minValueDosS2ETM5 = allValuesDosS2ETM5[1];
numeric dn1000S2ETM5 = 10000;
numeric actualCountDosS2ETM5 = 0;
for i = 1 to dosS2ETM5realSize 
{
    if (allValuesDosS2ETM5[i] == minValueDosS2ETM5)
    {
        actualCountDosS2ETM5 = actualCountDosS2ETM5 + 1;
        if (actualCountDosS2ETM5 >= DNminCALCS2ETM5)
        {
            dn1000S2ETM5 = minValueDosS2ETM5;
            go to dn1000S2ETM5jumper;
        }
    }
    else
    {
        minValueDosS2ETM5 = allValuesDosS2ETM5[i+1];
        actualCountDosS2ETM5 = 0;
    }
}
dn1000S2ETM5jumper:
if (dn1000S2ETM5 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2ETM5  = allValuesDosS2ETM5[1];
}
if (dn1000S2ETM5 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2ETM5  = allValuesDosS2ETM5[1];
}
	
printf("dn1000 Scene 2 ETM5: %12f\n", dn1000S2ETM5);
########################### Scene 2 - Dn1000 - Band 7
numeric lastDOSS2ETM7 = dosS2ETM7realSize;
numeric hDOSS2ETM7 = 1;
while ( (hDOSS2ETM7 * 3 + 1) < lastDOSS2ETM7 - 1 )
{
    hDOSS2ETM7 = 3 * hDOSS2ETM7 + 1;
}
while ( hDOSS2ETM7 > 0 )
{
    for i = hDOSS2ETM7 - 1 to lastDOSS2ETM7               # for each of the h sets of elements
    {
        numeric keyDOSS2ETM7 = allValuesDosS2ETM7[i];
        numeric jDOSS2ETM7 = i;
        while (jDOSS2ETM7 >= hDOSS2ETM7 && allValuesDosS2ETM7[jDOSS2ETM7 - hDOSS2ETM7] > keyDOSS2ETM7)
        {
            allValuesDosS2ETM7[jDOSS2ETM7] = allValuesDosS2ETM7[jDOSS2ETM7 - hDOSS2ETM7];
            jDOSS2ETM7 = jDOSS2ETM7 - hDOSS2ETM7;
        }
        allValuesDosS2ETM7[jDOSS2ETM7] = keyDOSS2ETM7;
    }
    hDOSS2ETM7 = floor(hDOSS2ETM7/3);
}
numeric minValueDosS2ETM7 = allValuesDosS2ETM7[1];
numeric dn1000S2ETM7 = 10000;
numeric actualCountDosS2ETM7 = 0;
for i = 1 to dosS2ETM7realSize 
{
    if (allValuesDosS2ETM7[i] == minValueDosS2ETM7)
    {
        actualCountDosS2ETM7 = actualCountDosS2ETM7 + 1;
        if (actualCountDosS2ETM7 >= DNminCALCS2ETM7)
        {
            dn1000S2ETM7 = minValueDosS2ETM7;
            go to dn1000S2ETM7jumper;
        }
    }
    else
    {
        minValueDosS2ETM7 = allValuesDosS2ETM7[i+1];
        actualCountDosS2ETM7 = 0;
    }
}
dn1000S2ETM7jumper:
if (dn1000S2ETM7  < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2ETM7  = allValuesDosS2ETM7[1];
}
if (dn1000S2ETM7  == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2ETM7  = allValuesDosS2ETM7[1];
}
	
printf("dn1000 Scene 2 ETM7: %12f\n\n", dn1000S2ETM7);
################################### Pathradiance Calculation #######################################
numeric pathRadS2ETM1 = dn1000S2ETM1 - (0.01 * (radsurfETMS2b1 * cos(s2zenith)) / pi);
numeric pathRadS2ETM2 = dn1000S2ETM2 - (0.01 * (radsurfETMS2b2 * cos(s2zenith)) / pi);
numeric pathRadS2ETM3 = dn1000S2ETM3 - (0.01 * (radsurfETMS2b3 * cos(s2zenith)) / pi);
numeric pathRadS2ETM4 = dn1000S2ETM4 - (0.01 * (radsurfETMS2b4 * cos(s2zenith)) / pi);
numeric pathRadS2ETM5 = dn1000S2ETM5 - (0.01 * (radsurfETMS2b5 * cos(s2zenith)) / pi);
numeric pathRadS2ETM7 = dn1000S2ETM7 - (0.01 * (radsurfETMS2b7 * cos(s2zenith)) / pi);
printf("Pathradiance Scene 2 Band 1: %12f\n", pathRadS2ETM1);
printf("Pathradiance Scene 2 Band 2: %12f\n", pathRadS2ETM2);
printf("Pathradiance Scene 2 Band 3: %12f\n", pathRadS2ETM3);
printf("Pathradiance Scene 2 Band 4: %12f\n", pathRadS2ETM4);
printf("Pathradiance Scene 2 Band 5: %12f\n", pathRadS2ETM5);
printf("Pathradiance Scene 2 Band 7: %12f\n\n", pathRadS2ETM7);
################################# Reflectance Calculation with athmo correction
	 for i = 1 to ETMlins
	 {
	        for j = 1 to ETMcols
	        {
                  valueS2ETM1 = (pi * (RADS2ETM1[i,j] - pathRadS2ETM1)) / (radsurfETMS2b1 * cos(s2zenith));
                  if ( valueS2ETM1 < 0 )
       		{
          			valueS2ETM1 = 0;
				countS2REFnullETM1 = countS2REFnullETM1 + 1;
       		}
			else if ( valueS2ETM1 > 1 )
			{
				valueS2ETM1 = 1;
				countS2REFoneETM1 = countS2REFoneETM1 + 1;
			}
       		
			REFS2ETM1[i,j] = valueS2ETM1;
               valueS2ETM2 = (pi * (RADS2ETM2[i,j] - pathRadS2ETM2)) / (radsurfETMS2b2 * cos(s2zenith));
                  if ( valueS2ETM2 < 0 )
       		{
          			valueS2ETM2 = 0;
				countS2REFnullETM2 = countS2REFnullETM2 + 1;
       		}
			else if ( valueS2ETM2 > 1 )
			{
				valueS2ETM2 = 1;
				countS2REFoneETM2 = countS2REFoneETM2 + 1;
			}
       		
			REFS2ETM2[i,j] = valueS2ETM2;
               valueS2ETM3 = (pi * (RADS2ETM3[i,j] - pathRadS2ETM3)) / (radsurfETMS2b3 * cos(s2zenith));
                  if ( valueS2ETM3 < 0 )
       		{
          			valueS2ETM3 = 0;
				countS2REFnullETM3 = countS2REFnullETM3 + 1;
       		}
			else if ( valueS2ETM3 > 1 )
			{
				valueS2ETM3 = 1;
				countS2REFoneETM3 = countS2REFoneETM3 + 1;
			}
       		
			REFS2ETM3[i,j] = valueS2ETM3;
               valueS2ETM4 = (pi * (RADS2ETM4[i,j] - pathRadS2ETM4)) / (radsurfETMS2b4 * cos(s2zenith));
                  if ( valueS2ETM4 < 0 )
       		{
          			valueS2ETM4 = 0;
				countS2REFnullETM4 = countS2REFnullETM4 + 1;
       		}
			else if ( valueS2ETM4 > 1 )
			{
				valueS2ETM4 = 1;
				countS2REFoneETM4 = countS2REFoneETM4 + 1;
			}
       		
			REFS2ETM4[i,j] = valueS2ETM4;
               valueS2ETM5 = (pi * (RADS2ETM5[i,j] - pathRadS2ETM5)) / (radsurfETMS2b5 * cos(s2zenith));
                  if ( valueS2ETM5 < 0 )
       		{
          			valueS2ETM5 = 0;
				countS2REFnullETM5 = countS2REFnullETM5 + 1;
       		}
			else if ( valueS2ETM5 > 1 )
			{
				valueS2ETM5 = 1;
				countS2REFoneETM5 = countS2REFoneETM5 + 1;
			}
       		
			REFS2ETM5[i,j] = valueS2ETM5;
               valueS2ETM7 = (pi * (RADS2ETM7[i,j] - pathRadS2ETM7)) / (radsurfETMS2b7 * cos(s2zenith));
                  if ( valueS2ETM7 < 0 )
       		{
          			valueS2ETM7 = 0;
				countS2REFnullETM7 = countS2REFnullETM7 + 1;
       		}
			else if ( valueS2ETM7 > 1 )
			{
				valueS2ETM7 = 1;
				countS2REFoneETM7 = countS2REFoneETM7 + 1;
			}
       		
			REFS2ETM7[i,j] = valueS2ETM7;
	        }
	 }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullETM1, countS2REFoneETM1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullETM2, countS2REFoneETM2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullETM3, countS2REFoneETM3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullETM4, countS2REFoneETM4);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 5: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullETM5, countS2REFoneETM5);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 7: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n\n", countS2REFnullETM7, countS2REFoneETM7);
CreatePyramid(REFS2ETM1);
CreatePyramid(REFS2ETM2);
CreatePyramid(REFS2ETM3);
CreatePyramid(REFS2ETM4);
CreatePyramid(REFS2ETM5);
CreatePyramid(REFS2ETM7);
        
CreateHistogram(REFS2ETM1);
CreateHistogram(REFS2ETM2);
CreateHistogram(REFS2ETM3);
CreateHistogram(REFS2ETM4);
CreateHistogram(REFS2ETM5);
CreateHistogram(REFS2ETM7);
CloseRaster(RADS2ETM1);
CloseRaster(RADS2ETM2);
CloseRaster(RADS2ETM3);
CloseRaster(RADS2ETM4);
CloseRaster(RADS2ETM5);
CloseRaster(RADS2ETM7);
printf("Reflectance calculation for Scene 2 (ETM) is done...\n\n\n");
}
else if ( sensors2 == 6 )
{
raster REFS2TM1, REFS2TM2, REFS2TM3, REFS2TM4, REFS2TM5, REFS2TM7;
numeric radsurfTMS2b1, radsurfTMS2b2, radsurfTMS2b3, radsurfTMS2b4, radsurfTMS2b5, radsurfTMS2b7;
numeric valueS2TM1, valueS2TM2, valueS2TM3, valueS2TM4, valueS2TM5, valueS2TM7;
numeric dosS2TM1nullValCount = 0;
numeric dosS2TM2nullValCount = 0;
numeric dosS2TM3nullValCount = 0;
numeric dosS2TM4nullValCount = 0;
numeric dosS2TM5nullValCount = 0;
numeric dosS2TM7nullValCount = 0;
numeric dosS2TM1realArrayCount = 1;
numeric dosS2TM2realArrayCount = 1;
numeric dosS2TM3realArrayCount = 1;
numeric dosS2TM4realArrayCount = 1;
numeric dosS2TM5realArrayCount = 1;
numeric dosS2TM7realArrayCount = 1;
numeric countS2REFnullTM1 = 0;
numeric countS2REFnullTM2 = 0;
numeric countS2REFnullTM3 = 0;
numeric countS2REFnullTM4 = 0;
numeric countS2REFnullTM5 = 0;
numeric countS2REFnullTM7 = 0;
numeric countS2REFoneTM1 = 0;
numeric countS2REFoneTM2 = 0;
numeric countS2REFoneTM3 = 0;
numeric countS2REFoneTM4 = 0;
numeric countS2REFoneTM5 = 0;
numeric countS2REFoneTM7 = 0;
radsurfTMS2b1 = ESTM1 / (dist2^2);
radsurfTMS2b2 = ESTM2 / (dist2^2);
radsurfTMS2b3 = ESTM3 / (dist2^2);
radsurfTMS2b4 = ESTM4 / (dist2^2);
radsurfTMS2b5 = ESTM5 / (dist2^2);
radsurfTMS2b7 = ESTM7 / (dist2^2);
printf("Surface Radiance TM Band 1 in W/m^2�m (Scene 2): %12f\n", radsurfTMS2b1);
printf("Surface Radiance TM Band 2 in W/m^2�m (Scene 2): %12f\n", radsurfTMS2b2);
printf("Surface Radiance TM Band 3 in W/m^2�m (Scene 2): %12f\n", radsurfTMS2b3);
printf("Surface Radiance TM Band 4 in W/m^2�m (Scene 2): %12f\n", radsurfTMS2b4);
printf("Surface Radiance TM Band 5 in W/m^2�m (Scene 2): %12f\n", radsurfTMS2b5);
printf("Surface Radiance TM Band 7 in W/m^2�m (Scene 2): %12f\n\n", radsurfTMS2b7);
for i = 1 to TMlins
{
    for j = 1 to TMcols
    {       
		if (IsNull(RADS2TM1[i,j]) == 1)
		{
		dosS2TM1nullValCount = dosS2TM1nullValCount + 1;
		}
		if (IsNull(RADS2TM2[i,j]) == 1)
		{
		dosS2TM2nullValCount = dosS2TM2nullValCount + 1;
		}		 
		if (IsNull(RADS2TM3[i,j]) == 1)
		{
		dosS2TM3nullValCount = dosS2TM3nullValCount + 1;
		}		 
		if (IsNull(RADS2TM4[i,j]) == 1)
		{
		dosS2TM4nullValCount = dosS2TM4nullValCount + 1;
		}		 
		if (IsNull(RADS2TM5[i,j]) == 1)
		{
		dosS2TM5nullValCount = dosS2TM5nullValCount + 1;
		}		 
		if (IsNull(RADS2TM7[i,j]) == 1)
		{
		dosS2TM7nullValCount = dosS2TM7nullValCount + 1;
		}		 	 
    }
}
numeric dosS2TM1realSize = (TMlins * TMcols) - dosS2TM1nullValCount;
numeric dosS2TM2realSize = (TMlins * TMcols) - dosS2TM2nullValCount;
numeric dosS2TM3realSize = (TMlins * TMcols) - dosS2TM3nullValCount;
numeric dosS2TM4realSize = (TMlins * TMcols) - dosS2TM4nullValCount;
numeric dosS2TM5realSize = (TMlins * TMcols) - dosS2TM5nullValCount;
numeric dosS2TM7realSize = (TMlins * TMcols) - dosS2TM7nullValCount;
array allValuesDosS2TM1[dosS2TM1realSize];
array allValuesDosS2TM2[dosS2TM2realSize];
array allValuesDosS2TM3[dosS2TM3realSize];
array allValuesDosS2TM4[dosS2TM4realSize];
array allValuesDosS2TM5[dosS2TM5realSize];
array allValuesDosS2TM7[dosS2TM7realSize];
numeric DNminCALCS2TM1 = DNminCALC(Scene2Lin, Scene2Col, dosS2TM1realSize);
numeric DNminCALCS2TM2 = DNminCALC(Scene2Lin, Scene2Col, dosS2TM2realSize);
numeric DNminCALCS2TM3 = DNminCALC(Scene2Lin, Scene2Col, dosS2TM3realSize);
numeric DNminCALCS2TM4 = DNminCALC(Scene2Lin, Scene2Col, dosS2TM4realSize);
numeric DNminCALCS2TM5 = DNminCALC(Scene2Lin, Scene2Col, dosS2TM5realSize);
numeric DNminCALCS2TM7 = DNminCALC(Scene2Lin, Scene2Col, dosS2TM7realSize);
for i = 1 to TMlins
{
    for j = 1 to TMcols
    {     
		if (IsNull(RADS2TM1[i,j]) == 0)
		{
		  allValuesDosS2TM1[dosS2TM1realArrayCount] = RADS2TM1[i,j];		 
		  dosS2TM1realArrayCount = dosS2TM1realArrayCount + 1;
		}
		if (IsNull(RADS2TM2[i,j]) == 0)
		{
		  allValuesDosS2TM2[dosS2TM2realArrayCount] = RADS2TM2[i,j];		 
		  dosS2TM2realArrayCount = dosS2TM2realArrayCount + 1;
		}
		if (IsNull(RADS2TM3[i,j]) == 0)
		{
		  allValuesDosS2TM3[dosS2TM3realArrayCount] = RADS2TM3[i,j];		 
		  dosS2TM3realArrayCount = dosS2TM3realArrayCount + 1;
		}
		if (IsNull(RADS2TM4[i,j]) == 0)
		{
		  allValuesDosS2TM4[dosS2TM4realArrayCount] = RADS2TM4[i,j];		 
		  dosS2TM4realArrayCount = dosS2TM4realArrayCount + 1;
		}
		if (IsNull(RADS2TM5[i,j]) == 0)
		{
		  allValuesDosS2TM5[dosS2TM5realArrayCount] = RADS2TM5[i,j];		 
		  dosS2TM5realArrayCount = dosS2TM5realArrayCount + 1;
		}
		if (IsNull(RADS2TM7[i,j]) == 0)
		{
		  allValuesDosS2TM7[dosS2TM7realArrayCount] = RADS2TM7[i,j];		 
		  dosS2TM7realArrayCount = dosS2TM7realArrayCount + 1;
		}
    }
}
########################### Scene 2 - Dn1000 - Band 1
numeric lastDOSS2TM1 = dosS2TM1realSize;
numeric hDOSS2TM1 = 1;
while ( (hDOSS2TM1 * 3 + 1) < lastDOSS2TM1 - 1 )
{
    hDOSS2TM1 = 3 * hDOSS2TM1 + 1;
}
while ( hDOSS2TM1 > 0 )
{
    for i = hDOSS2TM1 - 1 to lastDOSS2TM1               # for each of the h sets of elements
    {
        numeric keyDOSS2TM1 = allValuesDosS2TM1[i];
        numeric jDOSS2TM1 = i;
        while (jDOSS2TM1 >= hDOSS2TM1 && allValuesDosS2TM1[jDOSS2TM1 - hDOSS2TM1] > keyDOSS2TM1)
        {
            allValuesDosS2TM1[jDOSS2TM1] = allValuesDosS2TM1[jDOSS2TM1 - hDOSS2TM1];
            jDOSS2TM1 = jDOSS2TM1 - hDOSS2TM1;
        }
        allValuesDosS2TM1[jDOSS2TM1] = keyDOSS2TM1;
    }
    hDOSS2TM1 = floor(hDOSS2TM1/3);
}
numeric minValueDosS2TM1 = allValuesDosS2TM1[1];
numeric dn1000S2TM1 = 10000;
numeric actualCountDosS2TM1 = 0;
for i = 1 to dosS2TM1realSize 
{
    if (allValuesDosS2TM1[i] == minValueDosS2TM1)
    {
        actualCountDosS2TM1 = actualCountDosS2TM1 + 1;
        if (actualCountDosS2TM1 >= DNminCALCS2TM1)
        {
            dn1000S2TM1 = minValueDosS2TM1;
            go to dn1000S2TM1jumper;
        }
    }
    else
    {
        minValueDosS2TM1 = allValuesDosS2TM1[i+1];
        actualCountDosS2TM1 = 0;
    }
}
dn1000S2TM1jumper:
if (dn1000S2TM1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2TM1 = allValuesDosS2TM1[1];
}
if (dn1000S2TM1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2TM1 = allValuesDosS2TM1[1];
}
	
printf("dn1000 Scene 2 TM1: %12f\n", dn1000S2TM1);
########################### Scene 2 - Dn1000 - Band 2
numeric lastDOSS2TM2 = dosS2TM1realSize;
numeric hDOSS2TM2 = 1;
while ( (hDOSS2TM2 * 3 + 1) < lastDOSS2TM2 - 1 )
{
    hDOSS2TM2 = 3 * hDOSS2TM2 + 1;
}
while ( hDOSS2TM2 > 0 )
{
    for i = hDOSS2TM2 - 1 to lastDOSS2TM2
    {
        numeric keyDOSS2TM2 = allValuesDosS2TM2[i];
        numeric jDOSS2TM2 = i;
        while (jDOSS2TM2 >= hDOSS2TM2 && allValuesDosS2TM2[jDOSS2TM2 - hDOSS2TM2] > keyDOSS2TM2)
        {
            allValuesDosS2TM2[jDOSS2TM2] = allValuesDosS2TM2[jDOSS2TM2 - hDOSS2TM2];
            jDOSS2TM2 = jDOSS2TM2 - hDOSS2TM2;
        }
        allValuesDosS2TM2[jDOSS2TM2] = keyDOSS2TM2;
    }
    hDOSS2TM2 = floor(hDOSS2TM2/3);
}
numeric minValueDosS2TM2 = allValuesDosS2TM2[1];
numeric dn1000S2TM2 = 10000;
numeric actualCountDosS2TM2 = 0;
for i = 1 to dosS2TM2realSize 
{
    if (allValuesDosS2TM2[i] == minValueDosS2TM2)
    {
        actualCountDosS2TM2 = actualCountDosS2TM2 + 1;
        if (actualCountDosS2TM2 >= DNminCALCS2TM2)
        {
            dn1000S2TM2 = minValueDosS2TM2;
            go to dn1000S2TM2jumper;
        }
    }
    else
    {
        minValueDosS2TM2 = allValuesDosS2TM2[i+1];
        actualCountDosS2TM2 = 0;
    }
}
dn1000S2TM2jumper:
if (dn1000S2TM2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2TM2 = allValuesDosS2TM2[1];
}
if (dn1000S2TM2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2TM2 = allValuesDosS2TM2[1];
}
printf("dn1000 Scene 2 TM2: %12f\n", dn1000S2TM2);
########################### Scene 2 - Dn1000 - Band 3
numeric lastDOSS2TM3 = dosS2TM3realSize;
numeric hDOSS2TM3 = 1;
while ( (hDOSS2TM3 * 3 + 1) < lastDOSS2TM3 - 1 )
{
    hDOSS2TM3 = 3 * hDOSS2TM3 + 1;
}
while ( hDOSS2TM3 > 0 )
{
    for i = hDOSS2TM3 - 1 to lastDOSS2TM3               # for each of the h sets of elements
    {
        numeric keyDOSS2TM3 = allValuesDosS2TM3[i];
        numeric jDOSS2TM3 = i;
        while (jDOSS2TM3 >= hDOSS2TM3 && allValuesDosS2TM3[jDOSS2TM3 - hDOSS2TM3] > keyDOSS2TM3)
        {
            allValuesDosS2TM3[jDOSS2TM3] = allValuesDosS2TM3[jDOSS2TM3 - hDOSS2TM3];
            jDOSS2TM3 = jDOSS2TM3 - hDOSS2TM3;
        }
        allValuesDosS2TM3[jDOSS2TM3] = keyDOSS2TM3;
    }
    hDOSS2TM3 = floor(hDOSS2TM3/3);
}
numeric minValueDosS2TM3 = allValuesDosS2TM3[1];
numeric dn1000S2TM3 = 10000;
numeric actualCountDosS2TM3 = 0;
for i = 1 to dosS2TM3realSize 
{
    if (allValuesDosS2TM3[i] == minValueDosS2TM3)
    {
        actualCountDosS2TM3 = actualCountDosS2TM3 + 1;
        if (actualCountDosS2TM3 >= DNminCALCS2TM3)
        {
            dn1000S2TM3 = minValueDosS2TM3;
            go to dn1000S2TM3jumper;
        }
    }
    else
    {
        minValueDosS2TM3 = allValuesDosS2TM3[i+1];
        actualCountDosS2TM3 = 0;
    }
}
dn1000S2TM3jumper:
if (dn1000S2TM3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2TM3 = allValuesDosS2TM3[1];
}
if (dn1000S2TM3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2TM3 = allValuesDosS2TM3[1];
}
printf("dn1000 Scene 2 TM3: %12f\n", dn1000S2TM3);
########################### Scene 1 - Dn1000 - Band 4
numeric lastDOSS2TM4 = dosS2TM4realSize;
numeric hDOSS2TM4 = 1;
while ( (hDOSS2TM4 * 3 + 1) < lastDOSS2TM4 - 1 )
{
    hDOSS2TM4 = 3 * hDOSS2TM4 + 1;
}
while ( hDOSS2TM4 > 0 )
{
    for i = hDOSS2TM4 - 1 to lastDOSS2TM4
    {
        numeric keyDOSS2TM4 = allValuesDosS2TM4[i];
        numeric jDOSS2TM4 = i;
        while (jDOSS2TM4 >= hDOSS2TM4 && allValuesDosS2TM4[jDOSS2TM4 - hDOSS2TM4] > keyDOSS2TM4)
        {
            allValuesDosS2TM4[jDOSS2TM4] = allValuesDosS2TM4[jDOSS2TM4 - hDOSS2TM4];
            jDOSS2TM4 = jDOSS2TM4 - hDOSS2TM4;
        }
        allValuesDosS2TM4[jDOSS2TM4] = keyDOSS2TM4;
    }
    hDOSS2TM4 = floor(hDOSS2TM4/3);
}
numeric minValueDosS2TM4 = allValuesDosS2TM4[1];
numeric dn1000S2TM4 = 10000;
numeric actualCountDosS2TM4 = 0;
for i = 1 to dosS2TM4realSize 
{
    if (allValuesDosS2TM4[i] == minValueDosS2TM4)
    {
        actualCountDosS2TM4 = actualCountDosS2TM4 + 1;
        if (actualCountDosS2TM4 >= DNminCALCS2TM4)
        {
            dn1000S2TM4 = minValueDosS2TM4;
            go to dn1000S2TM4jumper;
        }
    }
    else
    {
        minValueDosS2TM4 = allValuesDosS2TM4[i+1];
        actualCountDosS2TM4 = 0;
    }
}
dn1000S2TM4jumper:
if (dn1000S2TM4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2TM4 = allValuesDosS2TM4[1];
}
if (dn1000S2TM4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2TM4 = allValuesDosS2TM4[1];
}
	
printf("dn1000 Scene 2 TM4: %12f\n", dn1000S2TM4);
########################### Scene 2 - Dn1000 - Band 5
numeric lastDOSS2TM5 = dosS2TM5realSize;
numeric hDOSS2TM5 = 1;
while ( (hDOSS2TM5 * 3 + 1) < lastDOSS2TM5 - 1 )
{
    hDOSS2TM5 = 3 * hDOSS2TM5 + 1;
}
while ( hDOSS2TM5 > 0 )
{
    for i = hDOSS2TM5 - 1 to lastDOSS2TM5               # for each of the h sets of elements
    {
        numeric keyDOSS2TM5 = allValuesDosS2TM5[i];
        numeric jDOSS2TM5 = i;
        while (jDOSS2TM5 >= hDOSS2TM5 && allValuesDosS2TM5[jDOSS2TM5 - hDOSS2TM5] > keyDOSS2TM5)
        {
            allValuesDosS2TM5[jDOSS2TM5] = allValuesDosS2TM5[jDOSS2TM5 - hDOSS2TM5];
            jDOSS2TM5 = jDOSS2TM5 - hDOSS2TM5;
        }
        allValuesDosS2TM5[jDOSS2TM5] = keyDOSS2TM5;
    }
    hDOSS2TM5 = floor(hDOSS2TM5/3);
}
numeric minValueDosS2TM5 = allValuesDosS2TM5[1];
numeric dn1000S2TM5 = 10000;
numeric actualCountDosS2TM5 = 0;
for i = 1 to dosS2TM5realSize 
{
    if (allValuesDosS2TM5[i] == minValueDosS2TM5)
    {
        actualCountDosS2TM5 = actualCountDosS2TM5 + 1;
        if (actualCountDosS2TM5 >= DNminCALCS2TM5)
        {
            dn1000S2TM5 = minValueDosS2TM5;
            go to dn1000S2TM5jumper;
        }
    }
    else
    {
        minValueDosS2TM5 = allValuesDosS2TM5[i+1];
        actualCountDosS2TM5 = 0;
    }
}
dn1000S2TM5jumper:
if (dn1000S2TM5  < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2TM5  = allValuesDosS2TM5[1];
}
if (dn1000S2TM5  == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2TM5  = allValuesDosS2TM5[1];
}
	
printf("dn1000 Scene 2 TM5: %12f\n", dn1000S2TM5);
########################### Scene 2 - Dn1000 - Band 7
numeric lastDOSS2TM7 = dosS2TM7realSize;
numeric hDOSS2TM7 = 1;
while ( (hDOSS2TM7 * 3 + 1) < lastDOSS2TM7 - 1 )
{
    hDOSS2TM7 = 3 * hDOSS2TM7 + 1;
}
while ( hDOSS2TM7 > 0 )
{
    for i = hDOSS2TM7 - 1 to lastDOSS2TM7               # for each of the h sets of elements
    {
        numeric keyDOSS2TM7 = allValuesDosS2TM7[i];
        numeric jDOSS2TM7 = i;
        while (jDOSS2TM7 >= hDOSS2TM7 && allValuesDosS2TM7[jDOSS2TM7 - hDOSS2TM7] > keyDOSS2TM7)
        {
            allValuesDosS2TM7[jDOSS2TM7] = allValuesDosS2TM7[jDOSS2TM7 - hDOSS2TM7];
            jDOSS2TM7 = jDOSS2TM7 - hDOSS2TM7;
        }
        allValuesDosS2TM7[jDOSS2TM7] = keyDOSS2TM7;
    }
    hDOSS2TM7 = floor(hDOSS2TM7/3);
}
numeric minValueDosS2TM7 = allValuesDosS2TM7[1];
numeric dn1000S2TM7 = 10000;
numeric actualCountDosS2TM7 = 0;
for i = 1 to dosS2TM7realSize 
{
    if (allValuesDosS2TM7[i] == minValueDosS2TM7)
    {
        actualCountDosS2TM7 = actualCountDosS2TM7 + 1;
        if (actualCountDosS2TM7 >= DNminCALCS2TM7)
        {
            dn1000S2TM7 = minValueDosS2TM7;
            go to dn1000S2TM7jumper;
        }
    }
    else
    {
        minValueDosS2TM7 = allValuesDosS2TM7[i+1];
        actualCountDosS2TM7 = 0;
    }
}
dn1000S2TM7jumper:
if (dn1000S2TM7  < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2TM7  = allValuesDosS2TM7[1];
}
if (dn1000S2TM7  == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2TM7  = allValuesDosS2TM7[1];
}
	
printf("dn1000 Scene 2 TM7: %12f\n\n", dn1000S2TM7);
################################### Pathradiance Calculation #######################################
numeric pathRadS2TM1 = dn1000S2TM1 - (0.01 * (radsurfTMS2b1 * cos(s2zenith)) / pi);
numeric pathRadS2TM2 = dn1000S2TM2 - (0.01 * (radsurfTMS2b2 * cos(s2zenith)) / pi);
numeric pathRadS2TM3 = dn1000S2TM3 - (0.01 * (radsurfTMS2b3 * cos(s2zenith)) / pi);
numeric pathRadS2TM4 = dn1000S2TM4 - (0.01 * (radsurfTMS2b4 * cos(s2zenith)) / pi);
numeric pathRadS2TM5 = dn1000S2TM5 - (0.01 * (radsurfTMS2b5 * cos(s2zenith)) / pi);
numeric pathRadS2TM7 = dn1000S2TM7 - (0.01 * (radsurfTMS2b7 * cos(s2zenith)) / pi);
printf("Pathradiance Scene 2 Band 1: %12f\n", pathRadS2TM1);
printf("Pathradiance Scene 2 Band 2: %12f\n", pathRadS2TM2);
printf("Pathradiance Scene 2 Band 3: %12f\n", pathRadS2TM3);
printf("Pathradiance Scene 2 Band 4: %12f\n", pathRadS2TM4);
printf("Pathradiance Scene 2 Band 5: %12f\n", pathRadS2TM5);
printf("Pathradiance Scene 2 Band 7: %12f\n\n", pathRadS2TM7);
################################# Reflectance Calculation with athmo correction
	 for i = 1 to TMlins
	 {
	        for j = 1 to TMcols
	        {
                  valueS2TM1 = (pi * (RADS2TM1[i,j] - pathRadS2TM1)) / (radsurfTMS2b1 * cos(s2zenith));
                  if ( valueS2TM1 < 0 )
       		{
          			valueS2TM1 = 0;
				countS2REFnullTM1 = countS2REFnullTM1 + 1;
       		}
			else if ( valueS2TM1 > 1 )
			{
				valueS2TM1 = 1;
				countS2REFoneTM1 = countS2REFoneTM1 + 1;
			}
       		
			REFS2TM1[i,j] = valueS2TM1;
               valueS2TM2 = (pi * (RADS2TM2[i,j] - pathRadS2TM2)) / (radsurfTMS2b2 * cos(s2zenith));
                  if ( valueS2TM2 < 0 )
       		{
          			valueS2TM2 = 0;
				countS2REFnullTM2 = countS2REFnullTM2 + 1;
       		}
			else if ( valueS2TM2 > 1 )
			{
				valueS2TM2 = 1;
				countS2REFoneTM2 = countS2REFoneTM2 + 1;
			}
       		
			REFS2TM2[i,j] = valueS2TM2;
               valueS2TM3 = (pi * (RADS2TM3[i,j] - pathRadS2TM3)) / (radsurfTMS2b3 * cos(s2zenith));
                  if ( valueS2TM3 < 0 )
       		{
          			valueS2TM3 = 0;
				countS2REFnullTM3 = countS2REFnullTM3 + 1;
       		}
			else if ( valueS2TM3 > 1 )
			{
				valueS2TM3 = 1;
				countS2REFoneTM3 = countS2REFoneTM3 + 1;
			}
       		
			REFS2TM3[i,j] = valueS2TM3;
               valueS2TM4 = (pi * (RADS2TM4[i,j] - pathRadS2TM4)) / (radsurfTMS2b4 * cos(s2zenith));
                  if ( valueS2TM4 < 0 )
       		{
          			valueS2TM4 = 0;
				countS2REFnullTM4 = countS2REFnullTM4 + 1;
       		}
			else if ( valueS2TM4 > 1 )
			{
				valueS2TM4 = 1;
				countS2REFoneTM4 = countS2REFoneTM4 + 1;
			}
       		
			REFS2TM4[i,j] = valueS2TM4;
               valueS2TM5 = (pi * (RADS2TM5[i,j] - pathRadS2TM5)) / (radsurfTMS2b5 * cos(s2zenith));
                  if ( valueS2TM5 < 0 )
       		{
          			valueS2TM5 = 0;
				countS2REFnullTM5 = countS2REFnullTM5 + 1;
       		}
			else if ( valueS2TM5 > 1 )
			{
				valueS2TM5 = 1;
				countS2REFoneTM5 = countS2REFoneTM5 + 1;
			}
       		
			REFS2TM5[i,j] = valueS2TM5;
               valueS2TM7 = (pi * (RADS2TM7[i,j] - pathRadS2TM7)) / (radsurfTMS2b7 * cos(s2zenith));
                  if ( valueS2TM7 < 0 )
       		{
          			valueS2TM7 = 0;
				countS2REFnullTM7 = countS2REFnullTM7 + 1;
       		}
			else if ( valueS2TM7 > 1 )
			{
				valueS2TM7 = 1;
				countS2REFoneTM7 = countS2REFoneTM7 + 1;
			}
       		
			REFS2TM7[i,j] = valueS2TM7;
	        }
	 }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullTM1, countS2REFoneTM1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullTM2, countS2REFoneTM2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullTM3, countS2REFoneTM3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullTM4, countS2REFoneTM4);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 5: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullTM5, countS2REFoneTM5);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 7: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n\n", countS2REFnullTM7, countS2REFoneTM7);
CreatePyramid(REFS2TM1);
CreatePyramid(REFS2TM2);
CreatePyramid(REFS2TM3);
CreatePyramid(REFS2TM4);
CreatePyramid(REFS2TM5);
CreatePyramid(REFS2TM7);
        
CreateHistogram(REFS2TM1);
CreateHistogram(REFS2TM2);
CreateHistogram(REFS2TM3);
CreateHistogram(REFS2TM4);
CreateHistogram(REFS2TM5);
CreateHistogram(REFS2TM7);
CloseRaster(RADS2TM1);
CloseRaster(RADS2TM2);
CloseRaster(RADS2TM3);
CloseRaster(RADS2TM4);
CloseRaster(RADS2TM5);
CloseRaster(RADS2TM7);
printf("Reflectance calculation for Scene 2 (TM) is done...\n\n\n");
}
else if ( sensors2 == 5 )                                               # MSS 5 - Calib Werte nach Price J.C.1987
{
raster REFS2MSS1, REFS2MSS2, REFS2MSS3, REFS2MSS4;
numeric radsurfMSS2b1, radsurfMSS2b2, radsurfMSS2b3, radsurfMSS2b4;
numeric valueS2MSS1, valueS2MSS2, valueS2MSS3, valueS2MSS4;
numeric dosS2MSS1nullValCount = 0;
numeric dosS2MSS2nullValCount = 0;
numeric dosS2MSS3nullValCount = 0;
numeric dosS2MSS4nullValCount = 0;
numeric dosS2MSS1realArrayCount = 1;
numeric dosS2MSS2realArrayCount = 1;
numeric dosS2MSS3realArrayCount = 1;
numeric dosS2MSS4realArrayCount = 1;
numeric countS2REFnullMSS1 = 0;
numeric countS2REFnullMSS2 = 0;
numeric countS2REFnullMSS3 = 0;
numeric countS2REFnullMSS4 = 0;
numeric countS2REFoneMSS1 = 0;
numeric countS2REFoneMSS2 = 0;
numeric countS2REFoneMSS3 = 0;
numeric countS2REFoneMSS4 = 0;
radsurfMSS2b1 = ESMSS51 / (dist2^2);
radsurfMSS2b2 = ESMSS52 / (dist2^2);
radsurfMSS2b3 = ESMSS53 / (dist2^2);
radsurfMSS2b4 = ESMSS54 / (dist2^2);
printf("Surface Radiance MSS Band 1 in W/m^2�m (Scene 2): %12f\n", radsurfMSS2b1);
printf("Surface Radiance MSS Band 2 in W/m^2�m (Scene 2): %12f\n", radsurfMSS2b2);
printf("Surface Radiance MSS Band 3 in W/m^2�m (Scene 2): %12f\n", radsurfMSS2b3);
printf("Surface Radiance MSS Band 4 in W/m^2�m (Scene 2): %12f\n\n", radsurfMSS2b4);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {       
		if (IsNull(RADS2MSS1[i,j]) == 1)
		{
		dosS2MSS1nullValCount = dosS2MSS1nullValCount + 1;
		}
		if (IsNull(RADS2MSS2[i,j]) == 1)
		{
		dosS2MSS2nullValCount = dosS2MSS2nullValCount + 1;
		}		 
		if (IsNull(RADS2MSS3[i,j]) == 1)
		{
		dosS2MSS3nullValCount = dosS2MSS3nullValCount + 1;
		}		 
		if (IsNull(RADS2MSS4[i,j]) == 1)
		{
		dosS2MSS4nullValCount = dosS2MSS4nullValCount + 1;
		}		 	 	 
    }
}
numeric dosS2MSS1realSize = (MSSlins * MSScols) - dosS2MSS1nullValCount;
numeric dosS2MSS2realSize = (MSSlins * MSScols) - dosS2MSS2nullValCount;
numeric dosS2MSS3realSize = (MSSlins * MSScols) - dosS2MSS3nullValCount;
numeric dosS2MSS4realSize = (MSSlins * MSScols) - dosS2MSS4nullValCount;
array allValuesDosS2MSS1[dosS2MSS1realSize];
array allValuesDosS2MSS2[dosS2MSS2realSize];
array allValuesDosS2MSS3[dosS2MSS3realSize];
array allValuesDosS2MSS4[dosS2MSS4realSize];
numeric DNminCALCS2MSS1 = DNminCALC(Scene2Lin, Scene2Col, dosS2MSS1realSize);
numeric DNminCALCS2MSS2 = DNminCALC(Scene2Lin, Scene2Col, dosS2MSS2realSize);
numeric DNminCALCS2MSS3 = DNminCALC(Scene2Lin, Scene2Col, dosS2MSS3realSize);
numeric DNminCALCS2MSS4 = DNminCALC(Scene2Lin, Scene2Col, dosS2MSS4realSize);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {     
		if (IsNull(RADS2MSS1[i,j]) == 0)
		{
		  allValuesDosS2MSS1[dosS2MSS1realArrayCount] = RADS2MSS1[i,j];		 
		  dosS2MSS1realArrayCount = dosS2MSS1realArrayCount + 1;
		}
		if (IsNull(RADS2MSS2[i,j]) == 0)
		{
		  allValuesDosS2MSS2[dosS2MSS2realArrayCount] = RADS2MSS2[i,j];		 
		  dosS2MSS2realArrayCount = dosS2MSS2realArrayCount + 1;
		}
		if (IsNull(RADS2MSS3[i,j]) == 0)
		{
		  allValuesDosS2MSS3[dosS2MSS3realArrayCount] = RADS2MSS3[i,j];		 
		  dosS2MSS3realArrayCount = dosS2MSS3realArrayCount + 1;
		}
		if (IsNull(RADS2MSS4[i,j]) == 0)
		{
		  allValuesDosS2MSS4[dosS2MSS4realArrayCount] = RADS2MSS4[i,j];		 
		  dosS2MSS4realArrayCount = dosS2MSS4realArrayCount + 1;
		}
    }
}
########################### Scene 2 - Dn1000 - Band 1
numeric lastDOSS2MSS1 = dosS2MSS1realSize;
numeric hDOSS2MSS1 = 1;
while ( (hDOSS2MSS1 * 3 + 1) < lastDOSS2MSS1 - 1 )
{
    hDOSS2MSS1 = 3 * hDOSS2MSS1 + 1;
}
while ( hDOSS2MSS1 > 0 )
{
    for i = hDOSS2MSS1 - 1 to lastDOSS2MSS1               # for each of the h sets of elements
    {
        numeric keyDOSS2MSS1 = allValuesDosS2MSS1[i];
        numeric jDOSS2MSS1 = i;
        while (jDOSS2MSS1 >= hDOSS2MSS1 && allValuesDosS2MSS1[jDOSS2MSS1 - hDOSS2MSS1] > keyDOSS2MSS1)
        {
            allValuesDosS2MSS1[jDOSS2MSS1] = allValuesDosS2MSS1[jDOSS2MSS1 - hDOSS2MSS1];
            jDOSS2MSS1 = jDOSS2MSS1 - hDOSS2MSS1;
        }
        allValuesDosS2MSS1[jDOSS2MSS1] = keyDOSS2MSS1;
    }
    hDOSS2MSS1 = floor(hDOSS2MSS1/3);
}
numeric minValueDosS2MSS1 = allValuesDosS2MSS1[1];
numeric dn1000S2MSS1 = 10000;
numeric actualCountDosS2MSS1 = 0;
for i = 1 to dosS2MSS1realSize 
{
    if (allValuesDosS2MSS1[i] == minValueDosS2MSS1)
    {
        actualCountDosS2MSS1 = actualCountDosS2MSS1 + 1;
        if (actualCountDosS2MSS1 >= DNminCALCS2MSS1)
        {
            dn1000S2MSS1 = minValueDosS2MSS1;
            go to dn1000S2MSS1jumper;
        }
    }
    else
    {
        minValueDosS2MSS1 = allValuesDosS2MSS1[i+1];
        actualCountDosS2MSS1 = 0;
    }
}
dn1000S2MSS1jumper:
if (dn1000S2MSS1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2MSS1 = allValuesDosS2MSS1[1];
}
if (dn1000S2MSS1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2MSS1 = allValuesDosS2MSS1[1];
}
	
printf("dn1000 Scene 2 MSS1: %12f\n", dn1000S2MSS1);
########################### Scene 2 - Dn1000 - Band 2
numeric lastDOSS2MSS2 = dosS2MSS1realSize;
numeric hDOSS2MSS2 = 1;
while ( (hDOSS2MSS2 * 3 + 1) < lastDOSS2MSS2 - 1 )
{
    hDOSS2MSS2 = 3 * hDOSS2MSS2 + 1;
}
while ( hDOSS2MSS2 > 0 )
{
    for i = hDOSS2MSS2 - 1 to lastDOSS2MSS2
    {
        numeric keyDOSS2MSS2 = allValuesDosS2MSS2[i];
        numeric jDOSS2MSS2 = i;
        while (jDOSS2MSS2 >= hDOSS2MSS2 && allValuesDosS2MSS2[jDOSS2MSS2 - hDOSS2MSS2] > keyDOSS2MSS2)
        {
            allValuesDosS2MSS2[jDOSS2MSS2] = allValuesDosS2MSS2[jDOSS2MSS2 - hDOSS2MSS2];
            jDOSS2MSS2 = jDOSS2MSS2 - hDOSS2MSS2;
        }
        allValuesDosS2MSS2[jDOSS2MSS2] = keyDOSS2MSS2;
    }
    hDOSS2MSS2 = floor(hDOSS2MSS2/3);
}
numeric minValueDosS2MSS2 = allValuesDosS2MSS2[1];
numeric dn1000S2MSS2 = 10000;
numeric actualCountDosS2MSS2 = 0;
for i = 1 to dosS2MSS2realSize 
{
    if (allValuesDosS2MSS2[i] == minValueDosS2MSS2)
    {
        actualCountDosS2MSS2 = actualCountDosS2MSS2 + 1;
        if (actualCountDosS2MSS2 >= DNminCALCS2MSS2)
        {
            dn1000S2MSS2 = minValueDosS2MSS2;
            go to dn1000S2MSS2jumper;
        }
    }
    else
    {
        minValueDosS2MSS2 = allValuesDosS2MSS2[i+1];
        actualCountDosS2MSS2 = 0;
    }
}
dn1000S2MSS2jumper:
if (dn1000S2MSS2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2MSS2 = allValuesDosS2MSS2[1];
}
if (dn1000S2MSS2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2MSS2 = allValuesDosS2MSS2[1];
}
printf("dn1000 Scene 2 MSS2: %12f\n", dn1000S2MSS2);
########################### Scene 2 - Dn1000 - Band 3
numeric lastDOSS2MSS3 = dosS2MSS3realSize;
numeric hDOSS2MSS3 = 1;
while ( (hDOSS2MSS3 * 3 + 1) < lastDOSS2MSS3 - 1 )
{
    hDOSS2MSS3 = 3 * hDOSS2MSS3 + 1;
}
while ( hDOSS2MSS3 > 0 )
{
    for i = hDOSS2MSS3 - 1 to lastDOSS2MSS3               # for each of the h sets of elements
    {
        numeric keyDOSS2MSS3 = allValuesDosS2MSS3[i];
        numeric jDOSS2MSS3 = i;
        while (jDOSS2MSS3 >= hDOSS2MSS3 && allValuesDosS2MSS3[jDOSS2MSS3 - hDOSS2MSS3] > keyDOSS2MSS3)
        {
            allValuesDosS2MSS3[jDOSS2MSS3] = allValuesDosS2MSS3[jDOSS2MSS3 - hDOSS2MSS3];
            jDOSS2MSS3 = jDOSS2MSS3 - hDOSS2MSS3;
        }
        allValuesDosS2MSS3[jDOSS2MSS3] = keyDOSS2MSS3;
    }
    hDOSS2MSS3 = floor(hDOSS2MSS3/3);
}
numeric minValueDosS2MSS3 = allValuesDosS2MSS3[1];
numeric dn1000S2MSS3 = 10000;
numeric actualCountDosS2MSS3 = 0;
for i = 1 to dosS2MSS3realSize 
{
    if (allValuesDosS2MSS3[i] == minValueDosS2MSS3)
    {
        actualCountDosS2MSS3 = actualCountDosS2MSS3 + 1;
        if (actualCountDosS2MSS3 >= DNminCALCS2MSS3)
        {
            dn1000S2MSS3 = minValueDosS2MSS3;
            go to dn1000S2MSS3jumper;
        }
    }
    else
    {
        minValueDosS2MSS3 = allValuesDosS2MSS3[i+1];
        actualCountDosS2MSS3 = 0;
    }
}
dn1000S2MSS3jumper:
if (dn1000S2MSS3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2MSS3 = allValuesDosS2MSS3[1];
}
if (dn1000S2MSS3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2MSS3 = allValuesDosS2MSS3[1];
}
printf("dn1000 Scene 2 MSS3: %12f\n", dn1000S2MSS3);
########################### Scene 2 - Dn1000 - Band 4
numeric lastDOSS2MSS4 = dosS2MSS4realSize;
numeric hDOSS2MSS4 = 1;
while ( (hDOSS2MSS4 * 3 + 1) < lastDOSS2MSS4 - 1 )
{
    hDOSS2MSS4 = 3 * hDOSS2MSS4 + 1;
}
while ( hDOSS2MSS4 > 0 )
{
    for i = hDOSS2MSS4 - 1 to lastDOSS2MSS4
    {
        numeric keyDOSS2MSS4 = allValuesDosS2MSS4[i];
        numeric jDOSS2MSS4 = i;
        while (jDOSS2MSS4 >= hDOSS2MSS4 && allValuesDosS2MSS4[jDOSS2MSS4 - hDOSS2MSS4] > keyDOSS2MSS4)
        {
            allValuesDosS2MSS4[jDOSS2MSS4] = allValuesDosS2MSS4[jDOSS2MSS4 - hDOSS2MSS4];
            jDOSS2MSS4 = jDOSS2MSS4 - hDOSS2MSS4;
        }
        allValuesDosS2MSS4[jDOSS2MSS4] = keyDOSS2MSS4;
    }
    hDOSS2MSS4 = floor(hDOSS2MSS4/3);
}
numeric minValueDosS2MSS4 = allValuesDosS2MSS4[1];
numeric dn1000S2MSS4 = 10000;
numeric actualCountDosS2MSS4 = 0;
for i = 1 to dosS2MSS4realSize 
{
    if (allValuesDosS2MSS4[i] == minValueDosS2MSS4)
    {
        actualCountDosS2MSS4 = actualCountDosS2MSS4 + 1;
        if (actualCountDosS2MSS4 >= DNminCALCS2MSS4)
        {
            dn1000S2MSS4 = minValueDosS2MSS4;
            go to dn1000S2MSS4jumper;
        }
    }
    else
    {
        minValueDosS2MSS4 = allValuesDosS2MSS4[i+1];
        actualCountDosS2MSS4 = 0;
    }
}
dn1000S2MSS4jumper:
if (dn1000S2MSS4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2MSS4 = allValuesDosS2MSS4[1];
}
if (dn1000S2MSS4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2MSS4 = allValuesDosS2MSS4[1];
}
	
printf("dn1000 Scene 2 MSS4: %12f\n", dn1000S2MSS4);
################################### Pathradiance Calculation #######################################
numeric pathRadS2MSS1 = dn1000S2MSS1 - (0.01 * (radsurfMSS2b1 * cos(s2zenith)) / pi);
numeric pathRadS2MSS2 = dn1000S2MSS2 - (0.01 * (radsurfMSS2b2 * cos(s2zenith)) / pi);
numeric pathRadS2MSS3 = dn1000S2MSS3 - (0.01 * (radsurfMSS2b3 * cos(s2zenith)) / pi);
numeric pathRadS2MSS4 = dn1000S2MSS4 - (0.01 * (radsurfMSS2b4 * cos(s2zenith)) / pi);
printf("Pathradiance Scene 2 Band 1: %12f\n", pathRadS2MSS1);
printf("Pathradiance Scene 2 Band 2: %12f\n", pathRadS2MSS2);
printf("Pathradiance Scene 2 Band 3: %12f\n", pathRadS2MSS3);
printf("Pathradiance Scene 2 Band 4: %12f\n\n", pathRadS2MSS4);
################################# Reflectance Calculation with athmo correction
	  for i = 1 to MSSlins
	  {
	     for j = 1 to MSScols
	     {          
               valueS2MSS1 = (pi * (RADS2MSS1[i,j] - pathRadS2MSS1)) / (radsurfMSS2b1 * cos(s2zenith));
                  if ( valueS2MSS1 < 0 )
       		{
          			valueS2MSS1 = 0;
				countS2REFnullMSS1 = countS2REFnullMSS1 + 1;
       		}
			else if ( valueS2MSS1 > 1 )
			{
				valueS2MSS1 = 1;
				countS2REFoneMSS1 = countS2REFoneMSS1 + 1;
			}
       		
			REFS2MSS1[i,j] = valueS2MSS1;
               valueS2MSS2 = (pi * (RADS2MSS2[i,j] - pathRadS2MSS2)) / (radsurfMSS2b2 * cos(s2zenith));
                  if ( valueS2MSS2 < 0 )
       		{
          			valueS2MSS2 = 0;
				countS2REFnullMSS2 = countS2REFnullMSS2 + 1;
       		}
			else if ( valueS2MSS2 > 1 )
			{
				valueS2MSS2 = 1;
				countS2REFoneMSS2 = countS2REFoneMSS2 + 1;
			}
       		
			REFS2MSS2[i,j] = valueS2MSS2;
               valueS2MSS3 = (pi * (RADS2MSS3[i,j] - pathRadS2MSS3)) / (radsurfMSS2b3 * cos(s2zenith));
                  if ( valueS2MSS3 < 0 )
       		{
          			valueS2MSS3 = 0;
				countS2REFnullMSS3 = countS2REFnullMSS3 + 1;
       		}
			else if ( valueS2MSS3 > 1 )
			{
				valueS2MSS3 = 1;
				countS2REFoneMSS3 = countS2REFoneMSS3 + 1;
			}
       		
			REFS2MSS3[i,j] = valueS2MSS3;
               valueS2MSS4 = (pi * (RADS2MSS4[i,j] - pathRadS2MSS4)) / (radsurfMSS2b4 * cos(s2zenith));
                  if ( valueS2MSS4 < 0 )
       		{
          			valueS2MSS4 = 0;
				countS2REFnullMSS4 = countS2REFnullMSS4 + 1;
       		}
			else if ( valueS2MSS4 > 1 )
			{
				valueS2MSS4 = 1;
				countS2REFoneMSS4 = countS2REFoneMSS4 + 1;
			}
       		
			REFS2MSS4[i,j] = valueS2MSS4;
           }
	  }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullMSS1, countS2REFoneMSS1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullMSS2, countS2REFoneMSS2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullMSS3, countS2REFoneMSS3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullMSS4, countS2REFoneMSS4);
CreatePyramid(REFS2MSS1);
CreatePyramid(REFS2MSS2);
CreatePyramid(REFS2MSS3);
CreatePyramid(REFS2MSS4);
        
CreateHistogram(REFS2MSS1);
CreateHistogram(REFS2MSS2);
CreateHistogram(REFS2MSS3);
CreateHistogram(REFS2MSS4);
CloseRaster(RADS2MSS1);
CloseRaster(RADS2MSS2);
CloseRaster(RADS2MSS3);
CloseRaster(RADS2MSS4);
printf("Reflectance calculation for Scene 2 (MSS) is done...\n\n\n");
}
else if ( sensors2 == 4 )                                               # MSS 4
{
raster REFS2MSS1, REFS2MSS2, REFS2MSS3, REFS2MSS4;
numeric radsurfMSS2b1, radsurfMSS2b2, radsurfMSS2b3, radsurfMSS2b4;
numeric valueS2MSS1, valueS2MSS2, valueS2MSS3, valueS2MSS4;
numeric dosS2MSS1nullValCount = 0;
numeric dosS2MSS2nullValCount = 0;
numeric dosS2MSS3nullValCount = 0;
numeric dosS2MSS4nullValCount = 0;
numeric dosS2MSS1realArrayCount = 1;
numeric dosS2MSS2realArrayCount = 1;
numeric dosS2MSS3realArrayCount = 1;
numeric dosS2MSS4realArrayCount = 1;
numeric countS2REFnullMSS1 = 0;
numeric countS2REFnullMSS2 = 0;
numeric countS2REFnullMSS3 = 0;
numeric countS2REFnullMSS4 = 0;
numeric countS2REFoneMSS1 = 0;
numeric countS2REFoneMSS2 = 0;
numeric countS2REFoneMSS3 = 0;
numeric countS2REFoneMSS4 = 0;
radsurfMSS2b1 = ESMSS41 / (dist2^2);
radsurfMSS2b2 = ESMSS42 / (dist2^2);
radsurfMSS2b3 = ESMSS43 / (dist2^2);
radsurfMSS2b4 = ESMSS44 / (dist2^2);
printf("Surface Radiance MSS Band 1 in W/m^2�m (Scene 2): %12f\n", radsurfMSS2b1);
printf("Surface Radiance MSS Band 2 in W/m^2�m (Scene 2): %12f\n", radsurfMSS2b2);
printf("Surface Radiance MSS Band 3 in W/m^2�m (Scene 2): %12f\n", radsurfMSS2b3);
printf("Surface Radiance MSS Band 4 in W/m^2�m (Scene 2): %12f\n\n", radsurfMSS2b4);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {       
		if (IsNull(RADS2MSS1[i,j]) == 1)
		{
		dosS2MSS1nullValCount = dosS2MSS1nullValCount + 1;
		}
		if (IsNull(RADS2MSS2[i,j]) == 1)
		{
		dosS2MSS2nullValCount = dosS2MSS2nullValCount + 1;
		}		 
		if (IsNull(RADS2MSS3[i,j]) == 1)
		{
		dosS2MSS3nullValCount = dosS2MSS3nullValCount + 1;
		}		 
		if (IsNull(RADS2MSS4[i,j]) == 1)
		{
		dosS2MSS4nullValCount = dosS2MSS4nullValCount + 1;
		}		 	 	 
    }
}
numeric dosS2MSS1realSize = (MSSlins * MSScols) - dosS2MSS1nullValCount;
numeric dosS2MSS2realSize = (MSSlins * MSScols) - dosS2MSS2nullValCount;
numeric dosS2MSS3realSize = (MSSlins * MSScols) - dosS2MSS3nullValCount;
numeric dosS2MSS4realSize = (MSSlins * MSScols) - dosS2MSS4nullValCount;
array allValuesDosS2MSS1[dosS2MSS1realSize];
array allValuesDosS2MSS2[dosS2MSS2realSize];
array allValuesDosS2MSS3[dosS2MSS3realSize];
array allValuesDosS2MSS4[dosS2MSS4realSize];
numeric DNminCALCS2MSS1 = DNminCALC(Scene2Lin, Scene2Col, dosS2MSS1realSize);
numeric DNminCALCS2MSS2 = DNminCALC(Scene2Lin, Scene2Col, dosS2MSS2realSize);
numeric DNminCALCS2MSS3 = DNminCALC(Scene2Lin, Scene2Col, dosS2MSS3realSize);
numeric DNminCALCS2MSS4 = DNminCALC(Scene2Lin, Scene2Col, dosS2MSS4realSize);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {     
		if (IsNull(RADS2MSS1[i,j]) == 0)
		{
		  allValuesDosS2MSS1[dosS2MSS1realArrayCount] = RADS2MSS1[i,j];		 
		  dosS2MSS1realArrayCount = dosS2MSS1realArrayCount + 1;
		}
		if (IsNull(RADS2MSS2[i,j]) == 0)
		{
		  allValuesDosS2MSS2[dosS2MSS2realArrayCount] = RADS2MSS2[i,j];		 
		  dosS2MSS2realArrayCount = dosS2MSS2realArrayCount + 1;
		}
		if (IsNull(RADS2MSS3[i,j]) == 0)
		{
		  allValuesDosS2MSS3[dosS2MSS3realArrayCount] = RADS2MSS3[i,j];		 
		  dosS2MSS3realArrayCount = dosS2MSS3realArrayCount + 1;
		}
		if (IsNull(RADS2MSS4[i,j]) == 0)
		{
		  allValuesDosS2MSS4[dosS2MSS4realArrayCount] = RADS2MSS4[i,j];		 
		  dosS2MSS4realArrayCount = dosS2MSS4realArrayCount + 1;
		}
    }
}
########################### Scene 2 - Dn1000 - Band 1
numeric lastDOSS2MSS1 = dosS2MSS1realSize;
numeric hDOSS2MSS1 = 1;
while ( (hDOSS2MSS1 * 3 + 1) < lastDOSS2MSS1 - 1 )
{
    hDOSS2MSS1 = 3 * hDOSS2MSS1 + 1;
}
while ( hDOSS2MSS1 > 0 )
{
    for i = hDOSS2MSS1 - 1 to lastDOSS2MSS1               # for each of the h sets of elements
    {
        numeric keyDOSS2MSS1 = allValuesDosS2MSS1[i];
        numeric jDOSS2MSS1 = i;
        while (jDOSS2MSS1 >= hDOSS2MSS1 && allValuesDosS2MSS1[jDOSS2MSS1 - hDOSS2MSS1] > keyDOSS2MSS1)
        {
            allValuesDosS2MSS1[jDOSS2MSS1] = allValuesDosS2MSS1[jDOSS2MSS1 - hDOSS2MSS1];
            jDOSS2MSS1 = jDOSS2MSS1 - hDOSS2MSS1;
        }
        allValuesDosS2MSS1[jDOSS2MSS1] = keyDOSS2MSS1;
    }
    hDOSS2MSS1 = floor(hDOSS2MSS1/3);
}
numeric minValueDosS2MSS1 = allValuesDosS2MSS1[1];
numeric dn1000S2MSS1 = 10000;
numeric actualCountDosS2MSS1 = 0;
for i = 1 to dosS2MSS1realSize 
{
    if (allValuesDosS2MSS1[i] == minValueDosS2MSS1)
    {
        actualCountDosS2MSS1 = actualCountDosS2MSS1 + 1;
        if (actualCountDosS2MSS1 >= DNminCALCS2MSS1)
        {
            dn1000S2MSS1 = minValueDosS2MSS1;
            go to dn1000S2MSS1jumper;
        }
    }
    else
    {
        minValueDosS2MSS1 = allValuesDosS2MSS1[i+1];
        actualCountDosS2MSS1 = 0;
    }
}
dn1000S2MSS1jumper:
if (dn1000S2MSS1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2MSS1 = allValuesDosS2MSS1[1];
}
if (dn1000S2MSS1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2MSS1 = allValuesDosS2MSS1[1];
}
	
printf("dn1000 Scene 2 MSS1: %12f\n", dn1000S2MSS1);
########################### Scene 2 - Dn1000 - Band 2
numeric lastDOSS2MSS2 = dosS2MSS1realSize;
numeric hDOSS2MSS2 = 1;
while ( (hDOSS2MSS2 * 3 + 1) < lastDOSS2MSS2 - 1 )
{
    hDOSS2MSS2 = 3 * hDOSS2MSS2 + 1;
}
while ( hDOSS2MSS2 > 0 )
{
    for i = hDOSS2MSS2 - 1 to lastDOSS2MSS2
    {
        numeric keyDOSS2MSS2 = allValuesDosS2MSS2[i];
        numeric jDOSS2MSS2 = i;
        while (jDOSS2MSS2 >= hDOSS2MSS2 && allValuesDosS2MSS2[jDOSS2MSS2 - hDOSS2MSS2] > keyDOSS2MSS2)
        {
            allValuesDosS2MSS2[jDOSS2MSS2] = allValuesDosS2MSS2[jDOSS2MSS2 - hDOSS2MSS2];
            jDOSS2MSS2 = jDOSS2MSS2 - hDOSS2MSS2;
        }
        allValuesDosS2MSS2[jDOSS2MSS2] = keyDOSS2MSS2;
    }
    hDOSS2MSS2 = floor(hDOSS2MSS2/3);
}
numeric minValueDosS2MSS2 = allValuesDosS2MSS2[1];
numeric dn1000S2MSS2 = 10000;
numeric actualCountDosS2MSS2 = 0;
for i = 1 to dosS2MSS2realSize 
{
    if (allValuesDosS2MSS2[i] == minValueDosS2MSS2)
    {
        actualCountDosS2MSS2 = actualCountDosS2MSS2 + 1;
        if (actualCountDosS2MSS2 >= DNminCALCS2MSS2)
        {
            dn1000S2MSS2 = minValueDosS2MSS2;
            go to dn1000S2MSS2jumper;
        }
    }
    else
    {
        minValueDosS2MSS2 = allValuesDosS2MSS2[i+1];
        actualCountDosS2MSS2 = 0;
    }
}
dn1000S2MSS2jumper:
if (dn1000S2MSS2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2MSS2 = allValuesDosS2MSS2[1];
}
if (dn1000S2MSS2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2MSS2 = allValuesDosS2MSS2[1];
}
printf("dn1000 Scene 2 MSS2: %12f\n", dn1000S2MSS2);
########################### Scene 2 - Dn1000 - Band 3
numeric lastDOSS2MSS3 = dosS2MSS3realSize;
numeric hDOSS2MSS3 = 1;
while ( (hDOSS2MSS3 * 3 + 1) < lastDOSS2MSS3 - 1 )
{
    hDOSS2MSS3 = 3 * hDOSS2MSS3 + 1;
}
while ( hDOSS2MSS3 > 0 )
{
    for i = hDOSS2MSS3 - 1 to lastDOSS2MSS3               # for each of the h sets of elements
    {
        numeric keyDOSS2MSS3 = allValuesDosS2MSS3[i];
        numeric jDOSS2MSS3 = i;
        while (jDOSS2MSS3 >= hDOSS2MSS3 && allValuesDosS2MSS3[jDOSS2MSS3 - hDOSS2MSS3] > keyDOSS2MSS3)
        {
            allValuesDosS2MSS3[jDOSS2MSS3] = allValuesDosS2MSS3[jDOSS2MSS3 - hDOSS2MSS3];
            jDOSS2MSS3 = jDOSS2MSS3 - hDOSS2MSS3;
        }
        allValuesDosS2MSS3[jDOSS2MSS3] = keyDOSS2MSS3;
    }
    hDOSS2MSS3 = floor(hDOSS2MSS3/3);
}
numeric minValueDosS2MSS3 = allValuesDosS2MSS3[1];
numeric dn1000S2MSS3 = 10000;
numeric actualCountDosS2MSS3 = 0;
for i = 1 to dosS2MSS3realSize 
{
    if (allValuesDosS2MSS3[i] == minValueDosS2MSS3)
    {
        actualCountDosS2MSS3 = actualCountDosS2MSS3 + 1;
        if (actualCountDosS2MSS3 >= DNminCALCS2MSS3)
        {
            dn1000S2MSS3 = minValueDosS2MSS3;
            go to dn1000S2MSS3jumper;
        }
    }
    else
    {
        minValueDosS2MSS3 = allValuesDosS2MSS3[i+1];
        actualCountDosS2MSS3 = 0;
    }
}
dn1000S2MSS3jumper:
if (dn1000S2MSS3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2MSS3 = allValuesDosS2MSS3[1];
}
if (dn1000S2MSS3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2MSS3 = allValuesDosS2MSS3[1];
}
	
printf("dn1000 Scene 2 MSS3: %12f\n", dn1000S2MSS3);
########################### Scene 2 - Dn1000 - Band 4
numeric lastDOSS2MSS4 = dosS2MSS4realSize;
numeric hDOSS2MSS4 = 1;
while ( (hDOSS2MSS4 * 3 + 1) < lastDOSS2MSS4 - 1 )
{
    hDOSS2MSS4 = 3 * hDOSS2MSS4 + 1;
}
while ( hDOSS2MSS4 > 0 )
{
    for i = hDOSS2MSS4 - 1 to lastDOSS2MSS4
    {
        numeric keyDOSS2MSS4 = allValuesDosS2MSS4[i];
        numeric jDOSS2MSS4 = i;
        while (jDOSS2MSS4 >= hDOSS2MSS4 && allValuesDosS2MSS4[jDOSS2MSS4 - hDOSS2MSS4] > keyDOSS2MSS4)
        {
            allValuesDosS2MSS4[jDOSS2MSS4] = allValuesDosS2MSS4[jDOSS2MSS4 - hDOSS2MSS4];
            jDOSS2MSS4 = jDOSS2MSS4 - hDOSS2MSS4;
        }
        allValuesDosS2MSS4[jDOSS2MSS4] = keyDOSS2MSS4;
    }
    hDOSS2MSS4 = floor(hDOSS2MSS4/3);
}
numeric minValueDosS2MSS4 = allValuesDosS2MSS4[1];
numeric dn1000S2MSS4 = 10000;
numeric actualCountDosS2MSS4 = 0;
for i = 1 to dosS2MSS4realSize 
{
    if (allValuesDosS2MSS4[i] == minValueDosS2MSS4)
    {
        actualCountDosS2MSS4 = actualCountDosS2MSS4 + 1;
        if (actualCountDosS2MSS4 >= DNminCALCS2MSS4)
        {
            dn1000S2MSS4 = minValueDosS2MSS4;
            go to dn1000S2MSS4jumper;
        }
    }
    else
    {
        minValueDosS2MSS4 = allValuesDosS2MSS4[i+1];
        actualCountDosS2MSS4 = 0;
    }
}
dn1000S2MSS4jumper:
if (dn1000S2MSS4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2MSS4 = allValuesDosS2MSS4[1];
}
if (dn1000S2MSS4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2MSS4 = allValuesDosS2MSS4[1];
}
	
printf("dn1000 Scene 2 MSS4: %12f\n", dn1000S2MSS4);
################################### Pathradiance Calculation #######################################
numeric pathRadS2MSS1 = dn1000S2MSS1 - (0.01 * (radsurfMSS2b1 * cos(s2zenith)) / pi);
numeric pathRadS2MSS2 = dn1000S2MSS2 - (0.01 * (radsurfMSS2b2 * cos(s2zenith)) / pi);
numeric pathRadS2MSS3 = dn1000S2MSS3 - (0.01 * (radsurfMSS2b3 * cos(s2zenith)) / pi);
numeric pathRadS2MSS4 = dn1000S2MSS4 - (0.01 * (radsurfMSS2b4 * cos(s2zenith)) / pi);
printf("Pathradiance Scene 2 Band 1: %12f\n", pathRadS2MSS1);
printf("Pathradiance Scene 2 Band 2: %12f\n", pathRadS2MSS2);
printf("Pathradiance Scene 2 Band 3: %12f\n", pathRadS2MSS3);
printf("Pathradiance Scene 2 Band 4: %12f\n\n", pathRadS2MSS4);
################################# Reflectance Calculation with athmo correction
	  for i = 1 to MSSlins
	  {
	     for j = 1 to MSScols
	     {          
               valueS2MSS1 = (pi * (RADS2MSS1[i,j] - pathRadS2MSS1)) / (radsurfMSS2b1 * cos(s2zenith));
                  if ( valueS2MSS1 < 0 )
       		{
          			valueS2MSS1 = 0;
				countS2REFnullMSS1 = countS2REFnullMSS1 + 1;
       		}
			else if ( valueS2MSS1 > 1 )
			{
				valueS2MSS1 = 1;
				countS2REFoneMSS1 = countS2REFoneMSS1 + 1;
			}
       		
			REFS2MSS1[i,j] = valueS2MSS1;
               valueS2MSS2 = (pi * (RADS2MSS2[i,j] - pathRadS2MSS2)) / (radsurfMSS2b2 * cos(s2zenith));
                  if ( valueS2MSS2 < 0 )
       		{
          			valueS2MSS2 = 0;
				countS2REFnullMSS2 = countS2REFnullMSS2 + 1;
       		}
			else if ( valueS2MSS2 > 1 )
			{
				valueS2MSS2 = 1;
				countS2REFoneMSS2 = countS2REFoneMSS2 + 1;
			}
       		
			REFS2MSS2[i,j] = valueS2MSS2;
               valueS2MSS3 = (pi * (RADS2MSS3[i,j] - pathRadS2MSS3)) / (radsurfMSS2b3 * cos(s2zenith));
                  if ( valueS2MSS3 < 0 )
       		{
          			valueS2MSS3 = 0;
				countS2REFnullMSS3 = countS2REFnullMSS3 + 1;
       		}
			else if ( valueS2MSS3 > 1 )
			{
				valueS2MSS3 = 1;
				countS2REFoneMSS3 = countS2REFoneMSS3 + 1;
			}
       		
			REFS2MSS3[i,j] = valueS2MSS3;
               valueS2MSS4 = (pi * (RADS2MSS4[i,j] - pathRadS2MSS4)) / (radsurfMSS2b4 * cos(s2zenith));
                  if ( valueS2MSS4 < 0 )
       		{
          			valueS2MSS4 = 0;
				countS2REFnullMSS4 = countS2REFnullMSS4 + 1;
       		}
			else if ( valueS2MSS4 > 1 )
			{
				valueS2MSS4 = 1;
				countS2REFoneMSS4 = countS2REFoneMSS4 + 1;
			}
       		
			REFS2MSS4[i,j] = valueS2MSS4;
           }
	  }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullMSS1, countS2REFoneMSS1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullMSS2, countS2REFoneMSS2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullMSS3, countS2REFoneMSS3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullMSS4, countS2REFoneMSS4);
CreatePyramid(REFS2MSS1);
CreatePyramid(REFS2MSS2);
CreatePyramid(REFS2MSS3);
CreatePyramid(REFS2MSS4);
        
CreateHistogram(REFS2MSS1);
CreateHistogram(REFS2MSS2);
CreateHistogram(REFS2MSS3);
CreateHistogram(REFS2MSS4);
CloseRaster(RADS2MSS1);
CloseRaster(RADS2MSS2);
CloseRaster(RADS2MSS3);
CloseRaster(RADS2MSS4);
printf("Reflectance calculation for Scene 2 (MSS) is done...\n\n\n");
}
else 																# MSS 1, 2 and 3
{
raster REFS2MSS1, REFS2MSS2, REFS2MSS3, REFS2MSS4;
numeric radsurfMSS2b1, radsurfMSS2b2, radsurfMSS2b3, radsurfMSS2b4;
numeric valueS2MSS1, valueS2MSS2, valueS2MSS3, valueS2MSS4;
numeric dosS2MSS1nullValCount = 0;
numeric dosS2MSS2nullValCount = 0;
numeric dosS2MSS3nullValCount = 0;
numeric dosS2MSS4nullValCount = 0;
numeric dosS2MSS1realArrayCount = 1;
numeric dosS2MSS2realArrayCount = 1;
numeric dosS2MSS3realArrayCount = 1;
numeric dosS2MSS4realArrayCount = 1;
numeric countS2REFnullMSS1 = 0;
numeric countS2REFnullMSS2 = 0;
numeric countS2REFnullMSS3 = 0;
numeric countS2REFnullMSS4 = 0;
numeric countS2REFoneMSS1 = 0;
numeric countS2REFoneMSS2 = 0;
numeric countS2REFoneMSS3 = 0;
numeric countS2REFoneMSS4 = 0;
radsurfMSS2b1 = ESMSS11 / (dist2^2);
radsurfMSS2b2 = ESMSS12 / (dist2^2);
radsurfMSS2b3 = ESMSS13 / (dist2^2);
radsurfMSS2b4 = ESMSS14 / (dist2^2);
printf("Surface Radiance MSS Band 1 in W/m^2�m (Scene 2): %12f\n", radsurfMSS2b1);
printf("Surface Radiance MSS Band 2 in W/m^2�m (Scene 2): %12f\n", radsurfMSS2b2);
printf("Surface Radiance MSS Band 3 in W/m^2�m (Scene 2): %12f\n", radsurfMSS2b3);
printf("Surface Radiance MSS Band 4 in W/m^2�m (Scene 2): %12f\n\n", radsurfMSS2b4);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {       
		if (IsNull(RADS2MSS1[i,j]) == 1)
		{
		dosS2MSS1nullValCount = dosS2MSS1nullValCount + 1;
		}
		if (IsNull(RADS2MSS2[i,j]) == 1)
		{
		dosS2MSS2nullValCount = dosS2MSS2nullValCount + 1;
		}		 
		if (IsNull(RADS2MSS3[i,j]) == 1)
		{
		dosS2MSS3nullValCount = dosS2MSS3nullValCount + 1;
		}		 
		if (IsNull(RADS2MSS4[i,j]) == 1)
		{
		dosS2MSS4nullValCount = dosS2MSS4nullValCount + 1;
		}		 	 	 
    }
}
numeric dosS2MSS1realSize = (MSSlins * MSScols) - dosS2MSS1nullValCount;
numeric dosS2MSS2realSize = (MSSlins * MSScols) - dosS2MSS2nullValCount;
numeric dosS2MSS3realSize = (MSSlins * MSScols) - dosS2MSS3nullValCount;
numeric dosS2MSS4realSize = (MSSlins * MSScols) - dosS2MSS4nullValCount;
array allValuesDosS2MSS1[dosS2MSS1realSize];
array allValuesDosS2MSS2[dosS2MSS2realSize];
array allValuesDosS2MSS3[dosS2MSS3realSize];
array allValuesDosS2MSS4[dosS2MSS4realSize];
numeric DNminCALCS2MSS1 = DNminCALC(Scene2Lin, Scene2Col, dosS2MSS1realSize);
numeric DNminCALCS2MSS2 = DNminCALC(Scene2Lin, Scene2Col, dosS2MSS2realSize);
numeric DNminCALCS2MSS3 = DNminCALC(Scene2Lin, Scene2Col, dosS2MSS3realSize);
numeric DNminCALCS2MSS4 = DNminCALC(Scene2Lin, Scene2Col, dosS2MSS4realSize);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {     
		if (IsNull(RADS2MSS1[i,j]) == 0)
		{
		  allValuesDosS2MSS1[dosS2MSS1realArrayCount] = RADS2MSS1[i,j];		 
		  dosS2MSS1realArrayCount = dosS2MSS1realArrayCount + 1;
		}
		if (IsNull(RADS2MSS2[i,j]) == 0)
		{
		  allValuesDosS2MSS2[dosS2MSS2realArrayCount] = RADS2MSS2[i,j];		 
		  dosS2MSS2realArrayCount = dosS2MSS2realArrayCount + 1;
		}
		if (IsNull(RADS2MSS3[i,j]) == 0)
		{
		  allValuesDosS2MSS3[dosS2MSS3realArrayCount] = RADS2MSS3[i,j];		 
		  dosS2MSS3realArrayCount = dosS2MSS3realArrayCount + 1;
		}
		if (IsNull(RADS2MSS4[i,j]) == 0)
		{
		  allValuesDosS2MSS4[dosS2MSS4realArrayCount] = RADS2MSS4[i,j];		 
		  dosS2MSS4realArrayCount = dosS2MSS4realArrayCount + 1;
		}
    }
}
########################### Scene 2 - Dn1000 - Band 1
numeric lastDOSS2MSS1 = dosS2MSS1realSize;
numeric hDOSS2MSS1 = 1;
while ( (hDOSS2MSS1 * 3 + 1) < lastDOSS2MSS1 - 1 )
{
    hDOSS2MSS1 = 3 * hDOSS2MSS1 + 1;
}
while ( hDOSS2MSS1 > 0 )
{
    for i = hDOSS2MSS1 - 1 to lastDOSS2MSS1               # for each of the h sets of elements
    {
        numeric keyDOSS2MSS1 = allValuesDosS2MSS1[i];
        numeric jDOSS2MSS1 = i;
        while (jDOSS2MSS1 >= hDOSS2MSS1 && allValuesDosS2MSS1[jDOSS2MSS1 - hDOSS2MSS1] > keyDOSS2MSS1)
        {
            allValuesDosS2MSS1[jDOSS2MSS1] = allValuesDosS2MSS1[jDOSS2MSS1 - hDOSS2MSS1];
            jDOSS2MSS1 = jDOSS2MSS1 - hDOSS2MSS1;
        }
        allValuesDosS2MSS1[jDOSS2MSS1] = keyDOSS2MSS1;
    }
    hDOSS2MSS1 = floor(hDOSS2MSS1/3);
}
numeric minValueDosS2MSS1 = allValuesDosS2MSS1[1];
numeric dn1000S2MSS1 = 10000;
numeric actualCountDosS2MSS1 = 0;
for i = 1 to dosS2MSS1realSize 
{
    if (allValuesDosS2MSS1[i] == minValueDosS2MSS1)
    {
        actualCountDosS2MSS1 = actualCountDosS2MSS1 + 1;
        if (actualCountDosS2MSS1 >= DNminCALCS2MSS1)
        {
            dn1000S2MSS1 = minValueDosS2MSS1;
            go to dn1000S2MSS1jumper;
        }
    }
    else
    {
        minValueDosS2MSS1 = allValuesDosS2MSS1[i+1];
        actualCountDosS2MSS1 = 0;
    }
}
dn1000S2MSS1jumper:
if (dn1000S2MSS1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2MSS1 = allValuesDosS2MSS1[1];
}
if (dn1000S2MSS1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2MSS1 = allValuesDosS2MSS1[1];
}
	
printf("dn1000 Scene 2 MSS1: %12f\n", dn1000S2MSS1);
########################### Scene 2 - Dn1000 - Band 2
numeric lastDOSS2MSS2 = dosS2MSS1realSize;
numeric hDOSS2MSS2 = 1;
while ( (hDOSS2MSS2 * 3 + 1) < lastDOSS2MSS2 - 1 )
{
    hDOSS2MSS2 = 3 * hDOSS2MSS2 + 1;
}
while ( hDOSS2MSS2 > 0 )
{
    for i = hDOSS2MSS2 - 1 to lastDOSS2MSS2
    {
        numeric keyDOSS2MSS2 = allValuesDosS2MSS2[i];
        numeric jDOSS2MSS2 = i;
        while (jDOSS2MSS2 >= hDOSS2MSS2 && allValuesDosS2MSS2[jDOSS2MSS2 - hDOSS2MSS2] > keyDOSS2MSS2)
        {
            allValuesDosS2MSS2[jDOSS2MSS2] = allValuesDosS2MSS2[jDOSS2MSS2 - hDOSS2MSS2];
            jDOSS2MSS2 = jDOSS2MSS2 - hDOSS2MSS2;
        }
        allValuesDosS2MSS2[jDOSS2MSS2] = keyDOSS2MSS2;
    }
    hDOSS2MSS2 = floor(hDOSS2MSS2/3);
}
numeric minValueDosS2MSS2 = allValuesDosS2MSS2[1];
numeric dn1000S2MSS2 = 10000;
numeric actualCountDosS2MSS2 = 0;
for i = 1 to dosS2MSS2realSize 
{
    if (allValuesDosS2MSS2[i] == minValueDosS2MSS2)
    {
        actualCountDosS2MSS2 = actualCountDosS2MSS2 + 1;
        if (actualCountDosS2MSS2 >= DNminCALCS2MSS2)
        {
            dn1000S2MSS2 = minValueDosS2MSS2;
            go to dn1000S2MSS2jumper;
        }
    }
    else
    {
        minValueDosS2MSS2 = allValuesDosS2MSS2[i+1];
        actualCountDosS2MSS2 = 0;
    }
}
dn1000S2MSS2jumper:
if (dn1000S2MSS2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2MSS2 = allValuesDosS2MSS2[1];
}
if (dn1000S2MSS2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2MSS2 = allValuesDosS2MSS2[1];
}
printf("dn1000 Scene 2 MSS2: %12f\n", dn1000S2MSS2);
########################### Scene 2 - Dn1000 - Band 3
numeric lastDOSS2MSS3 = dosS2MSS3realSize;
numeric hDOSS2MSS3 = 1;
while ( (hDOSS2MSS3 * 3 + 1) < lastDOSS2MSS3 - 1 )
{
    hDOSS2MSS3 = 3 * hDOSS2MSS3 + 1;
}
while ( hDOSS2MSS3 > 0 )
{
    for i = hDOSS2MSS3 - 1 to lastDOSS2MSS3               # for each of the h sets of elements
    {
        numeric keyDOSS2MSS3 = allValuesDosS2MSS3[i];
        numeric jDOSS2MSS3 = i;
        while (jDOSS2MSS3 >= hDOSS2MSS3 && allValuesDosS2MSS3[jDOSS2MSS3 - hDOSS2MSS3] > keyDOSS2MSS3)
        {
            allValuesDosS2MSS3[jDOSS2MSS3] = allValuesDosS2MSS3[jDOSS2MSS3 - hDOSS2MSS3];
            jDOSS2MSS3 = jDOSS2MSS3 - hDOSS2MSS3;
        }
        allValuesDosS2MSS3[jDOSS2MSS3] = keyDOSS2MSS3;
    }
    hDOSS2MSS3 = floor(hDOSS2MSS3/3);
}
numeric minValueDosS2MSS3 = allValuesDosS2MSS3[1];
numeric dn1000S2MSS3 = 10000;
numeric actualCountDosS2MSS3 = 0;
for i = 1 to dosS2MSS3realSize 
{
    if (allValuesDosS2MSS3[i] == minValueDosS2MSS3)
    {
        actualCountDosS2MSS3 = actualCountDosS2MSS3 + 1;
        if (actualCountDosS2MSS3 >= DNminCALCS2MSS3)
        {
            dn1000S2MSS3 = minValueDosS2MSS3;
            go to dn1000S2MSS3jumper;
        }
    }
    else
    {
        minValueDosS2MSS3 = allValuesDosS2MSS3[i+1];
        actualCountDosS2MSS3 = 0;
    }
}
dn1000S2MSS3jumper:
if (dn1000S2MSS3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2MSS3 = allValuesDosS2MSS3[1];
}
if (dn1000S2MSS3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2MSS3 = allValuesDosS2MSS3[1];
}
	
printf("dn1000 Scene 2 MSS3: %12f\n", dn1000S2MSS3);
########################### Scene 1 - Dn1000 - Band 4
numeric lastDOSS2MSS4 = dosS2MSS4realSize;
numeric hDOSS2MSS4 = 1;
while ( (hDOSS2MSS4 * 3 + 1) < lastDOSS2MSS4 - 1 )
{
    hDOSS2MSS4 = 3 * hDOSS2MSS4 + 1;
}
while ( hDOSS2MSS4 > 0 )
{
    for i = hDOSS2MSS4 - 1 to lastDOSS2MSS4
    {
        numeric keyDOSS2MSS4 = allValuesDosS2MSS4[i];
        numeric jDOSS2MSS4 = i;
        while (jDOSS2MSS4 >= hDOSS2MSS4 && allValuesDosS2MSS4[jDOSS2MSS4 - hDOSS2MSS4] > keyDOSS2MSS4)
        {
            allValuesDosS2MSS4[jDOSS2MSS4] = allValuesDosS2MSS4[jDOSS2MSS4 - hDOSS2MSS4];
            jDOSS2MSS4 = jDOSS2MSS4 - hDOSS2MSS4;
        }
        allValuesDosS2MSS4[jDOSS2MSS4] = keyDOSS2MSS4;
    }
    hDOSS2MSS4 = floor(hDOSS2MSS4/3);
}
numeric minValueDosS2MSS4 = allValuesDosS2MSS4[1];
numeric dn1000S2MSS4 = 10000;
numeric actualCountDosS2MSS4 = 0;
for i = 1 to dosS2MSS4realSize 
{
    if (allValuesDosS2MSS4[i] == minValueDosS2MSS4)
    {
        actualCountDosS2MSS4 = actualCountDosS2MSS4 + 1;
        if (actualCountDosS2MSS4 >= DNminCALCS2MSS4)
        {
            dn1000S2MSS4 = minValueDosS2MSS4;
            go to dn1000S2MSS4jumper;
        }
    }
    else
    {
        minValueDosS2MSS4 = allValuesDosS2MSS4[i+1];
        actualCountDosS2MSS4 = 0;
    }
}
dn1000S2MSS4jumper:
if (dn1000S2MSS4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S2MSS4 = allValuesDosS2MSS4[1];
}
if (dn1000S2MSS4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S2MSS4 = allValuesDosS2MSS4[1];
}
	
printf("dn1000 Scene 2 MSS4: %12f\n", dn1000S2MSS4);
################################### Pathradiance Calculation #######################################
numeric pathRadS2MSS1 = dn1000S2MSS1 - (0.01 * (radsurfMSS2b1 * cos(s2zenith)) / pi);
numeric pathRadS2MSS2 = dn1000S2MSS2 - (0.01 * (radsurfMSS2b2 * cos(s2zenith)) / pi);
numeric pathRadS2MSS3 = dn1000S2MSS3 - (0.01 * (radsurfMSS2b3 * cos(s2zenith)) / pi);
numeric pathRadS2MSS4 = dn1000S2MSS4 - (0.01 * (radsurfMSS2b4 * cos(s2zenith)) / pi);
printf("Pathradiance Scene 2 Band 1: %12f\n", pathRadS2MSS1);
printf("Pathradiance Scene 2 Band 2: %12f\n", pathRadS2MSS2);
printf("Pathradiance Scene 2 Band 3: %12f\n", pathRadS2MSS3);
printf("Pathradiance Scene 2 Band 4: %12f\n\n", pathRadS2MSS4);
################################# Reflectance Calculation with athmo correction
	  for i = 1 to MSSlins
	  {
	     for j = 1 to MSScols
	     {          
               valueS2MSS1 = (pi * (RADS2MSS1[i,j] - pathRadS2MSS1)) / (radsurfMSS2b1 * cos(s2zenith));
                  if ( valueS2MSS1 < 0 )
       		{
          			valueS2MSS1 = 0;
				countS2REFnullMSS1 = countS2REFnullMSS1 + 1;
       		}
			else if ( valueS2MSS1 > 1 )
			{
				valueS2MSS1 = 1;
				countS2REFoneMSS1 = countS2REFoneMSS1 + 1;
			}
       		
			REFS2MSS1[i,j] = valueS2MSS1;
               valueS2MSS2 = (pi * (RADS2MSS2[i,j] - pathRadS2MSS2)) / (radsurfMSS2b2 * cos(s2zenith));
                  if ( valueS2MSS2 < 0 )
       		{
          			valueS2MSS2 = 0;
				countS2REFnullMSS2 = countS2REFnullMSS2 + 1;
       		}
			else if ( valueS2MSS2 > 1 )
			{
				valueS2MSS2 = 1;
				countS2REFoneMSS2 = countS2REFoneMSS2 + 1;
			}
       		
			REFS2MSS2[i,j] = valueS2MSS2;
               valueS2MSS3 = (pi * (RADS2MSS3[i,j] - pathRadS2MSS3)) / (radsurfMSS2b3 * cos(s2zenith));
                  if ( valueS2MSS3 < 0 )
       		{
          			valueS2MSS3 = 0;
				countS2REFnullMSS3 = countS2REFnullMSS3 + 1;
       		}
			else if ( valueS2MSS3 > 1 )
			{
				valueS2MSS3 = 1;
				countS2REFoneMSS3 = countS2REFoneMSS3 + 1;
			}
       		
			REFS2MSS3[i,j] = valueS2MSS3;
               valueS2MSS4 = (pi * (RADS2MSS4[i,j] - pathRadS2MSS4)) / (radsurfMSS2b4 * cos(s2zenith));
                  if ( valueS2MSS4 < 0 )
       		{
          			valueS2MSS4 = 0;
				countS2REFnullMSS4 = countS2REFnullMSS4 + 1;
       		}
			else if ( valueS2MSS4 > 1 )
			{
				valueS2MSS4 = 1;
				countS2REFoneMSS4 = countS2REFoneMSS4 + 1;
			}
       		
			REFS2MSS4[i,j] = valueS2MSS4;
           }
	  }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullMSS1, countS2REFoneMSS1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullMSS2, countS2REFoneMSS2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullMSS3, countS2REFoneMSS3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 2 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS2REFnullMSS4, countS2REFoneMSS4);
CreatePyramid(REFS2MSS1);
CreatePyramid(REFS2MSS2);
CreatePyramid(REFS2MSS3);
CreatePyramid(REFS2MSS4);
        
CreateHistogram(REFS2MSS1);
CreateHistogram(REFS2MSS2);
CreateHistogram(REFS2MSS3);
CreateHistogram(REFS2MSS4);
CloseRaster(RADS2MSS1);
CloseRaster(RADS2MSS2);
CloseRaster(RADS2MSS3);
CloseRaster(RADS2MSS4);
printf("Reflectance calculation for Scene 2 (MSS) is done...\n\n\n");
}
#############################
#### Reflectance Scene 3
#############################
if ( sensors3 == 7 )
{
raster REFS3ETM1, REFS3ETM2, REFS3ETM3, REFS3ETM4, REFS3ETM5, REFS3ETM7;
numeric radsurfETMS3b1, radsurfETMS3b2, radsurfETMS3b3, radsurfETMS3b4, radsurfETMS3b5, radsurfETMS3b7;
numeric valueS3ETM1, valueS3ETM2, valueS3ETM3, valueS3ETM4, valueS3ETM5, valueS3ETM7;
numeric dosS3ETM1nullValCount = 0;
numeric dosS3ETM2nullValCount = 0;
numeric dosS3ETM3nullValCount = 0;
numeric dosS3ETM4nullValCount = 0;
numeric dosS3ETM5nullValCount = 0;
numeric dosS3ETM7nullValCount = 0;
numeric dosS3ETM1realArrayCount = 1;
numeric dosS3ETM2realArrayCount = 1;
numeric dosS3ETM3realArrayCount = 1;
numeric dosS3ETM4realArrayCount = 1;
numeric dosS3ETM5realArrayCount = 1;
numeric dosS3ETM7realArrayCount = 1;
numeric countS3REFnullETM1 = 0;
numeric countS3REFnullETM2 = 0;
numeric countS3REFnullETM3 = 0;
numeric countS3REFnullETM4 = 0;
numeric countS3REFnullETM5 = 0;
numeric countS3REFnullETM7 = 0;
numeric countS3REFoneETM1 = 0;
numeric countS3REFoneETM2 = 0;
numeric countS3REFoneETM3 = 0;
numeric countS3REFoneETM4 = 0;
numeric countS3REFoneETM5 = 0;
numeric countS3REFoneETM7 = 0;
radsurfETMS3b1 = ESETM1 / (dist3^2);
radsurfETMS3b2 = ESETM2 / (dist3^2);
radsurfETMS3b3 = ESETM3 / (dist3^2);
radsurfETMS3b4 = ESETM4 / (dist3^2);
radsurfETMS3b5 = ESETM5 / (dist3^2);
radsurfETMS3b7 = ESETM7 / (dist3^2);
printf("Surface Radiance ETM Band 1 in W/m^2�m (Scene 3): %12f\n", radsurfETMS3b1);
printf("Surface Radiance ETM Band 2 in W/m^2�m (Scene 3): %12f\n", radsurfETMS3b2);
printf("Surface Radiance ETM Band 3 in W/m^2�m (Scene 3): %12f\n", radsurfETMS3b3);
printf("Surface Radiance ETM Band 4 in W/m^2�m (Scene 3): %12f\n", radsurfETMS3b4);
printf("Surface Radiance ETM Band 5 in W/m^2�m (Scene 3): %12f\n", radsurfETMS3b5);
printf("Surface Radiance ETM Band 7 in W/m^2�m (Scene 3): %12f\n\n", radsurfETMS3b7);
for i = 1 to ETMlins
{
    for j = 1 to ETMcols
    {       
		if (IsNull(RADS3ETM1[i,j]) == 1)
		{
		dosS3ETM1nullValCount = dosS3ETM1nullValCount + 1;
		}
		if (IsNull(RADS3ETM2[i,j]) == 1)
		{
		dosS3ETM2nullValCount = dosS3ETM2nullValCount + 1;
		}		 
		if (IsNull(RADS3ETM3[i,j]) == 1)
		{
		dosS3ETM3nullValCount = dosS3ETM3nullValCount + 1;
		}		 
		if (IsNull(RADS3ETM4[i,j]) == 1)
		{
		dosS3ETM4nullValCount = dosS3ETM4nullValCount + 1;
		}		 
		if (IsNull(RADS3ETM5[i,j]) == 1)
		{
		dosS3ETM5nullValCount = dosS3ETM5nullValCount + 1;
		}		 
		if (IsNull(RADS3ETM7[i,j]) == 1)
		{
		dosS3ETM7nullValCount = dosS3ETM7nullValCount + 1;
		}		 	 
    }
}
numeric dosS3ETM1realSize = (ETMlins * ETMcols) - dosS3ETM1nullValCount;
numeric dosS3ETM2realSize = (ETMlins * ETMcols) - dosS3ETM2nullValCount;
numeric dosS3ETM3realSize = (ETMlins * ETMcols) - dosS3ETM3nullValCount;
numeric dosS3ETM4realSize = (ETMlins * ETMcols) - dosS3ETM4nullValCount;
numeric dosS3ETM5realSize = (ETMlins * ETMcols) - dosS3ETM5nullValCount;
numeric dosS3ETM7realSize = (ETMlins * ETMcols) - dosS3ETM7nullValCount;
array allValuesDosS3ETM1[dosS3ETM1realSize];
array allValuesDosS3ETM2[dosS3ETM2realSize];
array allValuesDosS3ETM3[dosS3ETM3realSize];
array allValuesDosS3ETM4[dosS3ETM4realSize];
array allValuesDosS3ETM5[dosS3ETM5realSize];
array allValuesDosS3ETM7[dosS3ETM7realSize];
numeric DNminCALCS3ETM1 = DNminCALC(Scene3Lin, Scene3Col, dosS3ETM1realSize);
numeric DNminCALCS3ETM2 = DNminCALC(Scene3Lin, Scene3Col, dosS3ETM2realSize);
numeric DNminCALCS3ETM3 = DNminCALC(Scene3Lin, Scene3Col, dosS3ETM3realSize);
numeric DNminCALCS3ETM4 = DNminCALC(Scene3Lin, Scene3Col, dosS3ETM4realSize);
numeric DNminCALCS3ETM5 = DNminCALC(Scene3Lin, Scene3Col, dosS3ETM5realSize);
numeric DNminCALCS3ETM7 = DNminCALC(Scene3Lin, Scene3Col, dosS3ETM7realSize);
for i = 1 to ETMlins
{
    for j = 1 to ETMcols
    {     
		if (IsNull(RADS3ETM1[i,j]) == 0)
		{
		  allValuesDosS3ETM1[dosS3ETM1realArrayCount] = RADS3ETM1[i,j];		 
		  dosS3ETM1realArrayCount = dosS3ETM1realArrayCount + 1;
		}
		if (IsNull(RADS3ETM2[i,j]) == 0)
		{
		  allValuesDosS3ETM2[dosS3ETM2realArrayCount] = RADS3ETM2[i,j];		 
		  dosS3ETM2realArrayCount = dosS3ETM2realArrayCount + 1;
		}
		if (IsNull(RADS3ETM3[i,j]) == 0)
		{
		  allValuesDosS3ETM3[dosS3ETM3realArrayCount] = RADS3ETM3[i,j];		 
		  dosS3ETM3realArrayCount = dosS3ETM3realArrayCount + 1;
		}
		if (IsNull(RADS3ETM4[i,j]) == 0)
		{
		  allValuesDosS3ETM4[dosS3ETM4realArrayCount] = RADS3ETM4[i,j];		 
		  dosS3ETM4realArrayCount = dosS3ETM4realArrayCount + 1;
		}
		if (IsNull(RADS3ETM5[i,j]) == 0)
		{
		  allValuesDosS3ETM5[dosS3ETM5realArrayCount] = RADS3ETM5[i,j];		 
		  dosS3ETM5realArrayCount = dosS3ETM5realArrayCount + 1;
		}
		if (IsNull(RADS3ETM7[i,j]) == 0)
		{
		  allValuesDosS3ETM7[dosS3ETM7realArrayCount] = RADS3ETM7[i,j];		 
		  dosS3ETM7realArrayCount = dosS3ETM7realArrayCount + 1;
		}
    }
}
########################### Scene 3 - Dn1000 - Band 1
numeric lastDOSS3ETM1 = dosS3ETM1realSize;
numeric hDOSS3ETM1 = 1;
while ( (hDOSS3ETM1 * 3 + 1) < lastDOSS3ETM1 - 1 )
{
    hDOSS3ETM1 = 3 * hDOSS3ETM1 + 1;
}
while ( hDOSS3ETM1 > 0 )
{
    for i = hDOSS3ETM1 - 1 to lastDOSS3ETM1               # for each of the h sets of elements
    {
        numeric keyDOSS3ETM1 = allValuesDosS3ETM1[i];
        numeric jDOSS3ETM1 = i;
        while (jDOSS3ETM1 >= hDOSS3ETM1 && allValuesDosS3ETM1[jDOSS3ETM1 - hDOSS3ETM1] > keyDOSS3ETM1)
        {
            allValuesDosS3ETM1[jDOSS3ETM1] = allValuesDosS3ETM1[jDOSS3ETM1 - hDOSS3ETM1];
            jDOSS3ETM1 = jDOSS3ETM1 - hDOSS3ETM1;
        }
        allValuesDosS3ETM1[jDOSS3ETM1] = keyDOSS3ETM1;
    }
    hDOSS3ETM1 = floor(hDOSS3ETM1/3);
}
numeric minValueDosS3ETM1 = allValuesDosS3ETM1[1];
numeric dn1000S3ETM1 = 10000;
numeric actualCountDosS3ETM1 = 0;
for i = 1 to dosS3ETM1realSize 
{
    if (allValuesDosS3ETM1[i] == minValueDosS3ETM1)
    {
        actualCountDosS3ETM1 = actualCountDosS3ETM1 + 1;
        if (actualCountDosS3ETM1 >= DNminCALCS3ETM1)
        {
            dn1000S3ETM1 = minValueDosS3ETM1;
            go to dn1000S3ETM1jumper;
        }
    }
    else
    {
        minValueDosS3ETM1 = allValuesDosS3ETM1[i+1];
        actualCountDosS3ETM1 = 0;
    }
}
dn1000S3ETM1jumper:
if (dn1000S3ETM1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3ETM1 = allValuesDosS3ETM1[1];
}
if (dn1000S3ETM1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3ETM1 = allValuesDosS3ETM1[1];
}
	
printf("dn1000 Scene 3 ETM1: %12f\n", dn1000S3ETM1);
########################### Scene 3 - Dn1000 - Band 2
numeric lastDOSS3ETM2 = dosS3ETM1realSize;
numeric hDOSS3ETM2 = 1;
while ( (hDOSS3ETM2 * 3 + 1) < lastDOSS3ETM2 - 1 )
{
    hDOSS3ETM2 = 3 * hDOSS3ETM2 + 1;
}
while ( hDOSS3ETM2 > 0 )
{
    for i = hDOSS3ETM2 - 1 to lastDOSS3ETM2
    {
        numeric keyDOSS3ETM2 = allValuesDosS3ETM2[i];
        numeric jDOSS3ETM2 = i;
        while (jDOSS3ETM2 >= hDOSS3ETM2 && allValuesDosS3ETM2[jDOSS3ETM2 - hDOSS3ETM2] > keyDOSS3ETM2)
        {
            allValuesDosS3ETM2[jDOSS3ETM2] = allValuesDosS3ETM2[jDOSS3ETM2 - hDOSS3ETM2];
            jDOSS3ETM2 = jDOSS3ETM2 - hDOSS3ETM2;
        }
        allValuesDosS3ETM2[jDOSS3ETM2] = keyDOSS3ETM2;
    }
    hDOSS3ETM2 = floor(hDOSS3ETM2/3);
}
numeric minValueDosS3ETM2 = allValuesDosS3ETM2[1];
numeric dn1000S3ETM2 = 10000;
numeric actualCountDosS3ETM2 = 0;
for i = 1 to dosS3ETM2realSize 
{
    if (allValuesDosS3ETM2[i] == minValueDosS3ETM2)
    {
        actualCountDosS3ETM2 = actualCountDosS3ETM2 + 1;
        if (actualCountDosS3ETM2 >= DNminCALCS3ETM2)
        {
            dn1000S3ETM2 = minValueDosS3ETM2;
            go to dn1000S3ETM2jumper;
        }
    }
    else
    {
        minValueDosS3ETM2 = allValuesDosS3ETM2[i+1];
        actualCountDosS3ETM2 = 0;
    }
}
dn1000S3ETM2jumper:
if (dn1000S3ETM2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3ETM2 = allValuesDosS3ETM2[1];
}
if (dn1000S3ETM2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3ETM2 = allValuesDosS3ETM2[1];
}
printf("dn1000 Scene 3 ETM2: %12f\n", dn1000S3ETM2);
########################### Scene 1 - Dn1000 - Band 3
numeric lastDOSS3ETM3 = dosS3ETM3realSize;
numeric hDOSS3ETM3 = 1;
while ( (hDOSS3ETM3 * 3 + 1) < lastDOSS3ETM3 - 1 )
{
    hDOSS3ETM3 = 3 * hDOSS3ETM3 + 1;
}
while ( hDOSS3ETM3 > 0 )
{
    for i = hDOSS3ETM3 - 1 to lastDOSS3ETM3               # for each of the h sets of elements
    {
        numeric keyDOSS3ETM3 = allValuesDosS3ETM3[i];
        numeric jDOSS3ETM3 = i;
        while (jDOSS3ETM3 >= hDOSS3ETM3 && allValuesDosS3ETM3[jDOSS3ETM3 - hDOSS3ETM3] > keyDOSS3ETM3)
        {
            allValuesDosS3ETM3[jDOSS3ETM3] = allValuesDosS3ETM3[jDOSS3ETM3 - hDOSS3ETM3];
            jDOSS3ETM3 = jDOSS3ETM3 - hDOSS3ETM3;
        }
        allValuesDosS3ETM3[jDOSS3ETM3] = keyDOSS3ETM3;
    }
    hDOSS3ETM3 = floor(hDOSS3ETM3/3);
}
numeric minValueDosS3ETM3 = allValuesDosS3ETM3[1];
numeric dn1000S3ETM3 = 10000;
numeric actualCountDosS3ETM3 = 0;
for i = 1 to dosS3ETM3realSize 
{
    if (allValuesDosS3ETM3[i] == minValueDosS3ETM3)
    {
        actualCountDosS3ETM3 = actualCountDosS3ETM3 + 1;
        if (actualCountDosS3ETM3 >= DNminCALCS3ETM3)
        {
            dn1000S3ETM3 = minValueDosS3ETM3;
            go to dn1000S3ETM3jumper;
        }
    }
    else
    {
        minValueDosS3ETM3 = allValuesDosS3ETM3[i+1];
        actualCountDosS3ETM3 = 0;
    }
}
dn1000S3ETM3jumper:
if (dn1000S3ETM3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3ETM3 = allValuesDosS3ETM3[1];
}
if (dn1000S3ETM3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3ETM3 = allValuesDosS3ETM3[1];
}
	
printf("dn1000 Scene 3 ETM3: %12f\n", dn1000S3ETM3);
########################### Scene 3 - Dn1000 - Band 4
numeric lastDOSS3ETM4 = dosS3ETM4realSize;
numeric hDOSS3ETM4 = 1;
while ( (hDOSS3ETM4 * 3 + 1) < lastDOSS3ETM4 - 1 )
{
    hDOSS3ETM4 = 3 * hDOSS3ETM4 + 1;
}
while ( hDOSS3ETM4 > 0 )
{
    for i = hDOSS3ETM4 - 1 to lastDOSS3ETM4
    {
        numeric keyDOSS3ETM4 = allValuesDosS3ETM4[i];
        numeric jDOSS3ETM4 = i;
        while (jDOSS3ETM4 >= hDOSS3ETM4 && allValuesDosS3ETM4[jDOSS3ETM4 - hDOSS3ETM4] > keyDOSS3ETM4)
        {
            allValuesDosS3ETM4[jDOSS3ETM4] = allValuesDosS3ETM4[jDOSS3ETM4 - hDOSS3ETM4];
            jDOSS3ETM4 = jDOSS3ETM4 - hDOSS3ETM4;
        }
        allValuesDosS3ETM4[jDOSS3ETM4] = keyDOSS3ETM4;
    }
    hDOSS3ETM4 = floor(hDOSS3ETM4/3);
}
numeric minValueDosS3ETM4 = allValuesDosS3ETM4[1];
numeric dn1000S3ETM4 = 10000;
numeric actualCountDosS3ETM4 = 0;
for i = 1 to dosS3ETM4realSize 
{
    if (allValuesDosS3ETM4[i] == minValueDosS3ETM4)
    {
        actualCountDosS3ETM4 = actualCountDosS3ETM4 + 1;
        if (actualCountDosS3ETM4 >= DNminCALCS3ETM4)
        {
            dn1000S3ETM4 = minValueDosS3ETM4;
            go to dn1000S3ETM4jumper;
        }
    }
    else
    {
        minValueDosS3ETM4 = allValuesDosS3ETM4[i+1];
        actualCountDosS3ETM4 = 0;
    }
}
dn1000S3ETM4jumper:
if (dn1000S3ETM4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3ETM4 = allValuesDosS3ETM4[1];
}
if (dn1000S3ETM4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3ETM4 = allValuesDosS3ETM4[1];
}
	
printf("dn1000 Scene 3 ETM4: %12f\n", dn1000S3ETM4);
########################### Scene 3 - Dn1000 - Band 5
numeric lastDOSS3ETM5 = dosS3ETM5realSize;
numeric hDOSS3ETM5 = 1;
while ( (hDOSS3ETM5 * 3 + 1) < lastDOSS3ETM5 - 1 )
{
    hDOSS3ETM5 = 3 * hDOSS3ETM5 + 1;
}
while ( hDOSS3ETM5 > 0 )
{
    for i = hDOSS3ETM5 - 1 to lastDOSS3ETM5               # for each of the h sets of elements
    {
        numeric keyDOSS3ETM5 = allValuesDosS3ETM5[i];
        numeric jDOSS3ETM5 = i;
        while (jDOSS3ETM5 >= hDOSS3ETM5 && allValuesDosS3ETM5[jDOSS3ETM5 - hDOSS3ETM5] > keyDOSS3ETM5)
        {
            allValuesDosS3ETM5[jDOSS3ETM5] = allValuesDosS3ETM5[jDOSS3ETM5 - hDOSS3ETM5];
            jDOSS3ETM5 = jDOSS3ETM5 - hDOSS3ETM5;
        }
        allValuesDosS3ETM5[jDOSS3ETM5] = keyDOSS3ETM5;
    }
    hDOSS3ETM5 = floor(hDOSS3ETM5/3);
}
numeric minValueDosS3ETM5 = allValuesDosS3ETM5[1];
numeric dn1000S3ETM5 = 10000;
numeric actualCountDosS3ETM5 = 0;
for i = 1 to dosS3ETM5realSize 
{
    if (allValuesDosS3ETM5[i] == minValueDosS3ETM5)
    {
        actualCountDosS3ETM5 = actualCountDosS3ETM5 + 1;
        if (actualCountDosS3ETM5 >= DNminCALCS3ETM5)
        {
            dn1000S3ETM5 = minValueDosS3ETM5;
            go to dn1000S3ETM5jumper;
        }
    }
    else
    {
        minValueDosS3ETM5 = allValuesDosS3ETM5[i+1];
        actualCountDosS3ETM5 = 0;
    }
}
dn1000S3ETM5jumper:
if (dn1000S3ETM5  < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3ETM5  = allValuesDosS3ETM5[1];
}
if (dn1000S3ETM5  == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3ETM5  = allValuesDosS3ETM5[1];
}
	
printf("dn1000 Scene 3 ETM5: %12f\n", dn1000S3ETM5);
########################### Scene 3 - Dn1000 - Band 7
numeric lastDOSS3ETM7 = dosS3ETM7realSize;
numeric hDOSS3ETM7 = 1;
while ( (hDOSS3ETM7 * 3 + 1) < lastDOSS3ETM7 - 1 )
{
    hDOSS3ETM7 = 3 * hDOSS3ETM7 + 1;
}
while ( hDOSS3ETM7 > 0 )
{
    for i = hDOSS3ETM7 - 1 to lastDOSS3ETM7               # for each of the h sets of elements
    {
        numeric keyDOSS3ETM7 = allValuesDosS3ETM7[i];
        numeric jDOSS3ETM7 = i;
        while (jDOSS3ETM7 >= hDOSS3ETM7 && allValuesDosS3ETM7[jDOSS3ETM7 - hDOSS3ETM7] > keyDOSS3ETM7)
        {
            allValuesDosS3ETM7[jDOSS3ETM7] = allValuesDosS3ETM7[jDOSS3ETM7 - hDOSS3ETM7];
            jDOSS3ETM7 = jDOSS3ETM7 - hDOSS3ETM7;
        }
        allValuesDosS3ETM7[jDOSS3ETM7] = keyDOSS3ETM7;
    }
    hDOSS3ETM7 = floor(hDOSS3ETM7/3);
}
numeric minValueDosS3ETM7 = allValuesDosS3ETM7[1];
numeric dn1000S3ETM7 = 10000;
numeric actualCountDosS3ETM7 = 0;
for i = 1 to dosS3ETM7realSize 
{
    if (allValuesDosS3ETM7[i] == minValueDosS3ETM7)
    {
        actualCountDosS3ETM7 = actualCountDosS3ETM7 + 1;
        if (actualCountDosS3ETM7 >= DNminCALCS3ETM7)
        {
            dn1000S3ETM7 = minValueDosS3ETM7;
            go to dn1000S3ETM7jumper;
        }
    }
    else
    {
        minValueDosS3ETM7 = allValuesDosS3ETM7[i+1];
        actualCountDosS3ETM7 = 0;
    }
}
dn1000S3ETM7jumper:
if (dn1000S3ETM7 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3ETM7 = allValuesDosS3ETM7[1];
}
if (dn1000S3ETM7 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3ETM7 = allValuesDosS3ETM7[1];
}
	
printf("dn1000 Scene 3 ETM7: %12f\n\n", dn1000S3ETM7);
################################### Pathradiance Calculation #######################################
numeric pathRadS3ETM1 = dn1000S3ETM1 - (0.01 * (radsurfETMS3b1 * cos(s3zenith)) / pi);
numeric pathRadS3ETM2 = dn1000S3ETM2 - (0.01 * (radsurfETMS3b2 * cos(s3zenith)) / pi);
numeric pathRadS3ETM3 = dn1000S3ETM3 - (0.01 * (radsurfETMS3b3 * cos(s3zenith)) / pi);
numeric pathRadS3ETM4 = dn1000S3ETM4 - (0.01 * (radsurfETMS3b4 * cos(s3zenith)) / pi);
numeric pathRadS3ETM5 = dn1000S3ETM5 - (0.01 * (radsurfETMS3b5 * cos(s3zenith)) / pi);
numeric pathRadS3ETM7 = dn1000S3ETM7 - (0.01 * (radsurfETMS3b7 * cos(s3zenith)) / pi);
printf("Pathradiance Scene 3 Band 1: %12f\n", pathRadS3ETM1);
printf("Pathradiance Scene 3 Band 2: %12f\n", pathRadS3ETM2);
printf("Pathradiance Scene 3 Band 3: %12f\n", pathRadS3ETM3);
printf("Pathradiance Scene 3 Band 4: %12f\n", pathRadS3ETM4);
printf("Pathradiance Scene 3 Band 5: %12f\n", pathRadS3ETM5);
printf("Pathradiance Scene 3 Band 7: %12f\n\n", pathRadS3ETM7);
################################# Reflectance Calculation with athmo correction
	 for i = 1 to ETMlins
	 {
	        for j = 1 to ETMcols
	        {
                  valueS3ETM1 = (pi * (RADS3ETM1[i,j] - pathRadS3ETM1)) / (radsurfETMS3b1 * cos(s3zenith));
                  if ( valueS3ETM1 < 0 )
       		{
          			valueS3ETM1 = 0;
				countS3REFnullETM1 = countS3REFnullETM1 + 1;
       		}
			else if ( valueS3ETM1 > 1 )
			{
				valueS3ETM1 = 1;
				countS3REFoneETM1 = countS3REFoneETM1 + 1;
			}
       		
			REFS3ETM1[i,j] = valueS3ETM1;
               valueS3ETM2 = (pi * (RADS3ETM2[i,j] - pathRadS3ETM2)) / (radsurfETMS3b2 * cos(s3zenith));
                  if ( valueS3ETM2 < 0 )
       		{
          			valueS3ETM2 = 0;
				countS3REFnullETM2 = countS3REFnullETM2 + 1;
       		}
			else if ( valueS3ETM2 > 1 )
			{
				valueS3ETM2 = 1;
				countS3REFoneETM2 = countS3REFoneETM2 + 1;
			}
       		
			REFS3ETM2[i,j] = valueS3ETM2;
               valueS3ETM3 = (pi * (RADS3ETM3[i,j] - pathRadS3ETM3)) / (radsurfETMS3b3 * cos(s3zenith));
                  if ( valueS3ETM3 < 0 )
       		{
          			valueS3ETM3 = 0;
				countS3REFnullETM3 = countS3REFnullETM3 + 1;
       		}
			else if ( valueS3ETM3 > 1 )
			{
				valueS3ETM3 = 1;
				countS3REFoneETM3 = countS3REFoneETM3 + 1;
			}
       		
			REFS3ETM3[i,j] = valueS3ETM3;
               valueS3ETM4 = (pi * (RADS3ETM4[i,j] - pathRadS3ETM4)) / (radsurfETMS3b4 * cos(s3zenith));
                  if ( valueS3ETM4 < 0 )
       		{
          			valueS3ETM4 = 0;
				countS3REFnullETM4 = countS3REFnullETM4 + 1;
       		}
			else if ( valueS3ETM4 > 1 )
			{
				valueS3ETM4 = 1;
				countS3REFoneETM4 = countS3REFoneETM4 + 1;
			}
       		
			REFS3ETM4[i,j] = valueS3ETM4;
               valueS3ETM5 = (pi * (RADS3ETM5[i,j] - pathRadS3ETM5)) / (radsurfETMS3b5 * cos(s3zenith));
                  if ( valueS3ETM5 < 0 )
       		{
          			valueS3ETM5 = 0;
				countS3REFnullETM5 = countS3REFnullETM5 + 1;
       		}
			else if ( valueS3ETM5 > 1 )
			{
				valueS3ETM5 = 1;
				countS3REFoneETM5 = countS3REFoneETM5 + 1;
			}
       		
			REFS3ETM5[i,j] = valueS3ETM5;
               valueS3ETM7 = (pi * (RADS3ETM7[i,j] - pathRadS3ETM7)) / (radsurfETMS3b7 * cos(s3zenith));
                  if ( valueS3ETM7 < 0 )
       		{
          			valueS3ETM7 = 0;
				countS3REFnullETM7 = countS3REFnullETM7 + 1;
       		}
			else if ( valueS3ETM7 > 1 )
			{
				valueS3ETM7 = 1;
				countS3REFoneETM7 = countS3REFoneETM7 + 1;
			}
       		
			REFS3ETM7[i,j] = valueS3ETM7;
	        }
	 }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullETM1, countS3REFoneETM1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullETM2, countS3REFoneETM2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullETM3, countS3REFoneETM3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullETM4, countS3REFoneETM4);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 5: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullETM5, countS3REFoneETM5);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 7: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n\n", countS3REFnullETM7, countS3REFoneETM7);
CreatePyramid(REFS3ETM1);
CreatePyramid(REFS3ETM2);
CreatePyramid(REFS3ETM3);
CreatePyramid(REFS3ETM4);
CreatePyramid(REFS3ETM5);
CreatePyramid(REFS3ETM7);
        
CreateHistogram(REFS3ETM1);
CreateHistogram(REFS3ETM2);
CreateHistogram(REFS3ETM3);
CreateHistogram(REFS3ETM4);
CreateHistogram(REFS3ETM5);
CreateHistogram(REFS3ETM7);
CloseRaster(RADS3ETM1);
CloseRaster(RADS3ETM2);
CloseRaster(RADS3ETM3);
CloseRaster(RADS3ETM4);
CloseRaster(RADS3ETM5);
CloseRaster(RADS3ETM7);
printf("Reflectance calculation for Scene 3 (ETM) is done...\n\n\n");
}
else if ( sensors3 == 6 )
{	
raster REFS3TM1, REFS3TM2, REFS3TM3, REFS3TM4, REFS3TM5, REFS3TM7;
numeric radsurfTMS3b1, radsurfTMS3b2, radsurfTMS3b3, radsurfTMS3b4, radsurfTMS3b5, radsurfTMS3b7;
numeric valueS3TM1, valueS3TM2, valueS3TM3, valueS3TM4, valueS3TM5, valueS3TM7;
numeric dosS3TM1nullValCount = 0;
numeric dosS3TM2nullValCount = 0;
numeric dosS3TM3nullValCount = 0;
numeric dosS3TM4nullValCount = 0;
numeric dosS3TM5nullValCount = 0;
numeric dosS3TM7nullValCount = 0;
numeric dosS3TM1realArrayCount = 1;
numeric dosS3TM2realArrayCount = 1;
numeric dosS3TM3realArrayCount = 1;
numeric dosS3TM4realArrayCount = 1;
numeric dosS3TM5realArrayCount = 1;
numeric dosS3TM7realArrayCount = 1;
numeric countS3REFnullTM1 = 0;
numeric countS3REFnullTM2 = 0;
numeric countS3REFnullTM3 = 0;
numeric countS3REFnullTM4 = 0;
numeric countS3REFnullTM5 = 0;
numeric countS3REFnullTM7 = 0;
numeric countS3REFoneTM1 = 0;
numeric countS3REFoneTM2 = 0;
numeric countS3REFoneTM3 = 0;
numeric countS3REFoneTM4 = 0;
numeric countS3REFoneTM5 = 0;
numeric countS3REFoneTM7 = 0;
radsurfTMS3b1 = ESTM1 / (dist3^2);
radsurfTMS3b2 = ESTM2 / (dist3^2);
radsurfTMS3b3 = ESTM3 / (dist3^2);
radsurfTMS3b4 = ESTM4 / (dist3^2);
radsurfTMS3b5 = ESTM5 / (dist3^2);
radsurfTMS3b7 = ESTM7 / (dist3^2);
printf("Surface Radiance TM Band 1 in W/m^2�m (Scene 3): %12f\n", radsurfTMS3b1);
printf("Surface Radiance TM Band 2 in W/m^2�m (Scene 3): %12f\n", radsurfTMS3b2);
printf("Surface Radiance TM Band 3 in W/m^2�m (Scene 3): %12f\n", radsurfTMS3b3);
printf("Surface Radiance TM Band 4 in W/m^2�m (Scene 3): %12f\n", radsurfTMS3b4);
printf("Surface Radiance TM Band 5 in W/m^2�m (Scene 3): %12f\n", radsurfTMS3b5);
printf("Surface Radiance TM Band 7 in W/m^2�m (Scene 3): %12f\n\n", radsurfTMS3b7);
for i = 1 to TMlins
{
    for j = 1 to TMcols
    {       
		if (IsNull(RADS3TM1[i,j]) == 1)
		{
		dosS3TM1nullValCount = dosS3TM1nullValCount + 1;
		}
		if (IsNull(RADS3TM2[i,j]) == 1)
		{
		dosS3TM2nullValCount = dosS3TM2nullValCount + 1;
		}		 
		if (IsNull(RADS3TM3[i,j]) == 1)
		{
		dosS3TM3nullValCount = dosS3TM3nullValCount + 1;
		}		 
		if (IsNull(RADS3TM4[i,j]) == 1)
		{
		dosS3TM4nullValCount = dosS3TM4nullValCount + 1;
		}		 
		if (IsNull(RADS3TM5[i,j]) == 1)
		{
		dosS3TM5nullValCount = dosS3TM5nullValCount + 1;
		}		 
		if (IsNull(RADS3TM7[i,j]) == 1)
		{
		dosS3TM7nullValCount = dosS3TM7nullValCount + 1;
		}		 	 
    }
}
numeric dosS3TM1realSize = (TMlins * TMcols) - dosS3TM1nullValCount;
numeric dosS3TM2realSize = (TMlins * TMcols) - dosS3TM2nullValCount;
numeric dosS3TM3realSize = (TMlins * TMcols) - dosS3TM3nullValCount;
numeric dosS3TM4realSize = (TMlins * TMcols) - dosS3TM4nullValCount;
numeric dosS3TM5realSize = (TMlins * TMcols) - dosS3TM5nullValCount;
numeric dosS3TM7realSize = (TMlins * TMcols) - dosS3TM7nullValCount;
array allValuesDosS3TM1[dosS3TM1realSize];
array allValuesDosS3TM2[dosS3TM2realSize];
array allValuesDosS3TM3[dosS3TM3realSize];
array allValuesDosS3TM4[dosS3TM4realSize];
array allValuesDosS3TM5[dosS3TM5realSize];
array allValuesDosS3TM7[dosS3TM7realSize];
numeric DNminCALCS3TM1 = DNminCALC(Scene3Lin, Scene3Col, dosS3TM1realSize);
numeric DNminCALCS3TM2 = DNminCALC(Scene3Lin, Scene3Col, dosS3TM2realSize);
numeric DNminCALCS3TM3 = DNminCALC(Scene3Lin, Scene3Col, dosS3TM3realSize);
numeric DNminCALCS3TM4 = DNminCALC(Scene3Lin, Scene3Col, dosS3TM4realSize);
numeric DNminCALCS3TM5 = DNminCALC(Scene3Lin, Scene3Col, dosS3TM5realSize);
numeric DNminCALCS3TM7 = DNminCALC(Scene3Lin, Scene3Col, dosS3TM7realSize);
for i = 1 to TMlins
{
    for j = 1 to TMcols
    {     
		if (IsNull(RADS3TM1[i,j]) == 0)
		{
		  allValuesDosS3TM1[dosS3TM1realArrayCount] = RADS3TM1[i,j];		 
		  dosS3TM1realArrayCount = dosS3TM1realArrayCount + 1;
		}
		if (IsNull(RADS3TM2[i,j]) == 0)
		{
		  allValuesDosS3TM2[dosS3TM2realArrayCount] = RADS3TM2[i,j];		 
		  dosS3TM2realArrayCount = dosS3TM2realArrayCount + 1;
		}
		if (IsNull(RADS3TM3[i,j]) == 0)
		{
		  allValuesDosS3TM3[dosS3TM3realArrayCount] = RADS3TM3[i,j];		 
		  dosS3TM3realArrayCount = dosS3TM3realArrayCount + 1;
		}
		if (IsNull(RADS3TM4[i,j]) == 0)
		{
		  allValuesDosS3TM4[dosS3TM4realArrayCount] = RADS3TM4[i,j];		 
		  dosS3TM4realArrayCount = dosS3TM4realArrayCount + 1;
		}
		if (IsNull(RADS3TM5[i,j]) == 0)
		{
		  allValuesDosS3TM5[dosS3TM5realArrayCount] = RADS3TM5[i,j];		 
		  dosS3TM5realArrayCount = dosS3TM5realArrayCount + 1;
		}
		if (IsNull(RADS3TM7[i,j]) == 0)
		{
		  allValuesDosS3TM7[dosS3TM7realArrayCount] = RADS3TM7[i,j];		 
		  dosS3TM7realArrayCount = dosS3TM7realArrayCount + 1;
		}
    }
}
########################### Scene 3 - Dn1000 - Band 1
numeric lastDOSS3TM1 = dosS3TM1realSize;
numeric hDOSS3TM1 = 1;
while ( (hDOSS3TM1 * 3 + 1) < lastDOSS3TM1 - 1 )
{
    hDOSS3TM1 = 3 * hDOSS3TM1 + 1;
}
while ( hDOSS3TM1 > 0 )
{
    for i = hDOSS3TM1 - 1 to lastDOSS3TM1               # for each of the h sets of elements
    {
        numeric keyDOSS3TM1 = allValuesDosS3TM1[i];
        numeric jDOSS3TM1 = i;
        while (jDOSS3TM1 >= hDOSS3TM1 && allValuesDosS3TM1[jDOSS3TM1 - hDOSS3TM1] > keyDOSS3TM1)
        {
            allValuesDosS3TM1[jDOSS3TM1] = allValuesDosS3TM1[jDOSS3TM1 - hDOSS3TM1];
            jDOSS3TM1 = jDOSS3TM1 - hDOSS3TM1;
        }
        allValuesDosS3TM1[jDOSS3TM1] = keyDOSS3TM1;
    }
    hDOSS3TM1 = floor(hDOSS3TM1/3);
}
numeric minValueDosS3TM1 = allValuesDosS3TM1[1];
numeric dn1000S3TM1 = 10000;
numeric actualCountDosS3TM1 = 0;
for i = 1 to dosS3TM1realSize 
{
    if (allValuesDosS3TM1[i] == minValueDosS3TM1)
    {
        actualCountDosS3TM1 = actualCountDosS3TM1 + 1;
        if (actualCountDosS3TM1 >= DNminCALCS3TM1)
        {
            dn1000S3TM1 = minValueDosS3TM1;
            go to dn1000S3TM1jumper;
        }
    }
    else
    {
        minValueDosS3TM1 = allValuesDosS3TM1[i+1];
        actualCountDosS3TM1 = 0;
    }
}
dn1000S3TM1jumper:
if (dn1000S3TM1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3TM1 = allValuesDosS3TM1[1];
}
if (dn1000S3TM1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3TM1 = allValuesDosS3TM1[1];
}
	
printf("dn1000 Scene 3 TM1: %12f\n", dn1000S3TM1);
########################### Scene 3 - Dn1000 - Band 2
numeric lastDOSS3TM2 = dosS3TM1realSize;
numeric hDOSS3TM2 = 1;
while ( (hDOSS3TM2 * 3 + 1) < lastDOSS3TM2 - 1 )
{
    hDOSS3TM2 = 3 * hDOSS3TM2 + 1;
}
while ( hDOSS3TM2 > 0 )
{
    for i = hDOSS3TM2 - 1 to lastDOSS3TM2
    {
        numeric keyDOSS3TM2 = allValuesDosS3TM2[i];
        numeric jDOSS3TM2 = i;
        while (jDOSS3TM2 >= hDOSS3TM2 && allValuesDosS3TM2[jDOSS3TM2 - hDOSS3TM2] > keyDOSS3TM2)
        {
            allValuesDosS3TM2[jDOSS3TM2] = allValuesDosS3TM2[jDOSS3TM2 - hDOSS3TM2];
            jDOSS3TM2 = jDOSS3TM2 - hDOSS3TM2;
        }
        allValuesDosS3TM2[jDOSS3TM2] = keyDOSS3TM2;
    }
    hDOSS3TM2 = floor(hDOSS3TM2/3);
}
numeric minValueDosS3TM2 = allValuesDosS3TM2[1];
numeric dn1000S3TM2 = 10000;
numeric actualCountDosS3TM2 = 0;
for i = 1 to dosS3TM2realSize 
{
    if (allValuesDosS3TM2[i] == minValueDosS3TM2)
    {
        actualCountDosS3TM2 = actualCountDosS3TM2 + 1;
        if (actualCountDosS3TM2 >= DNminCALCS3TM2)
        {
            dn1000S3TM2 = minValueDosS3TM2;
            go to dn1000S3TM2jumper;
        }
    }
    else
    {
        minValueDosS3TM2 = allValuesDosS3TM2[i+1];
        actualCountDosS3TM2 = 0;
    }
}
dn1000S3TM2jumper:
if (dn1000S3TM2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3TM2 = allValuesDosS3TM2[1];
}
if (dn1000S3TM2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3TM2 = allValuesDosS3TM2[1];
}
printf("dn1000 Scene 3 TM2: %12f\n", dn1000S3TM2);
########################### Scene 1 - Dn1000 - Band 3
numeric lastDOSS3TM3 = dosS3TM3realSize;
numeric hDOSS3TM3 = 1;
while ( (hDOSS3TM3 * 3 + 1) < lastDOSS3TM3 - 1 )
{
    hDOSS3TM3 = 3 * hDOSS3TM3 + 1;
}
while ( hDOSS3TM3 > 0 )
{
    for i = hDOSS3TM3 - 1 to lastDOSS3TM3               # for each of the h sets of elements
    {
        numeric keyDOSS3TM3 = allValuesDosS3TM3[i];
        numeric jDOSS3TM3 = i;
        while (jDOSS3TM3 >= hDOSS3TM3 && allValuesDosS3TM3[jDOSS3TM3 - hDOSS3TM3] > keyDOSS3TM3)
        {
            allValuesDosS3TM3[jDOSS3TM3] = allValuesDosS3TM3[jDOSS3TM3 - hDOSS3TM3];
            jDOSS3TM3 = jDOSS3TM3 - hDOSS3TM3;
        }
        allValuesDosS3TM3[jDOSS3TM3] = keyDOSS3TM3;
    }
    hDOSS3TM3 = floor(hDOSS3TM3/3);
}
numeric minValueDosS3TM3 = allValuesDosS3TM3[1];
numeric dn1000S3TM3 = 10000;
numeric actualCountDosS3TM3 = 0;
for i = 1 to dosS3TM3realSize 
{
    if (allValuesDosS3TM3[i] == minValueDosS3TM3)
    {
        actualCountDosS3TM3 = actualCountDosS3TM3 + 1;
        if (actualCountDosS3TM3 >= DNminCALCS3TM3)
        {
            dn1000S3TM3 = minValueDosS3TM3;
            go to dn1000S3TM3jumper;
        }
    }
    else
    {
        minValueDosS3TM3 = allValuesDosS3TM3[i+1];
        actualCountDosS3TM3 = 0;
    }
}
dn1000S3TM3jumper:
if (dn1000S3TM3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3TM3 = allValuesDosS3TM3[1];
}
if (dn1000S3TM3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3TM3 = allValuesDosS3TM3[1];
}
	
printf("dn1000 Scene 3 TM3: %12f\n", dn1000S3TM3);
########################### Scene 3 - Dn1000 - Band 4
numeric lastDOSS3TM4 = dosS3TM4realSize;
numeric hDOSS3TM4 = 1;
while ( (hDOSS3TM4 * 3 + 1) < lastDOSS3TM4 - 1 )
{
    hDOSS3TM4 = 3 * hDOSS3TM4 + 1;
}
while ( hDOSS3TM4 > 0 )
{
    for i = hDOSS3TM4 - 1 to lastDOSS3TM4
    {
        numeric keyDOSS3TM4 = allValuesDosS3TM4[i];
        numeric jDOSS3TM4 = i;
        while (jDOSS3TM4 >= hDOSS3TM4 && allValuesDosS3TM4[jDOSS3TM4 - hDOSS3TM4] > keyDOSS3TM4)
        {
            allValuesDosS3TM4[jDOSS3TM4] = allValuesDosS3TM4[jDOSS3TM4 - hDOSS3TM4];
            jDOSS3TM4 = jDOSS3TM4 - hDOSS3TM4;
        }
        allValuesDosS3TM4[jDOSS3TM4] = keyDOSS3TM4;
    }
    hDOSS3TM4 = floor(hDOSS3TM4/3);
}
numeric minValueDosS3TM4 = allValuesDosS3TM4[1];
numeric dn1000S3TM4 = 10000;
numeric actualCountDosS3TM4 = 0;
for i = 1 to dosS3TM4realSize 
{
    if (allValuesDosS3TM4[i] == minValueDosS3TM4)
    {
        actualCountDosS3TM4 = actualCountDosS3TM4 + 1;
        if (actualCountDosS3TM4 >= DNminCALCS3TM4)
        {
            dn1000S3TM4 = minValueDosS3TM4;
            go to dn1000S3TM4jumper;
        }
    }
    else
    {
        minValueDosS3TM4 = allValuesDosS3TM4[i+1];
        actualCountDosS3TM4 = 0;
    }
}
dn1000S3TM4jumper:
if (dn1000S3TM4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3TM4 = allValuesDosS3TM4[1];
}
if (dn1000S3TM4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3TM4 = allValuesDosS3TM4[1];
}
printf("dn1000 Scene 3 TM4: %12f\n", dn1000S3TM4);
########################### Scene 3 - Dn1000 - Band 5
numeric lastDOSS3TM5 = dosS3TM5realSize;
numeric hDOSS3TM5 = 1;
while ( (hDOSS3TM5 * 3 + 1) < lastDOSS3TM5 - 1 )
{
    hDOSS3TM5 = 3 * hDOSS3TM5 + 1;
}
while ( hDOSS3TM5 > 0 )
{
    for i = hDOSS3TM5 - 1 to lastDOSS3TM5               # for each of the h sets of elements
    {
        numeric keyDOSS3TM5 = allValuesDosS3TM5[i];
        numeric jDOSS3TM5 = i;
        while (jDOSS3TM5 >= hDOSS3TM5 && allValuesDosS3TM5[jDOSS3TM5 - hDOSS3TM5] > keyDOSS3TM5)
        {
            allValuesDosS3TM5[jDOSS3TM5] = allValuesDosS3TM5[jDOSS3TM5 - hDOSS3TM5];
            jDOSS3TM5 = jDOSS3TM5 - hDOSS3TM5;
        }
        allValuesDosS3TM5[jDOSS3TM5] = keyDOSS3TM5;
    }
    hDOSS3TM5 = floor(hDOSS3TM5/3);
}
numeric minValueDosS3TM5 = allValuesDosS3TM5[1];
numeric dn1000S3TM5 = 10000;
numeric actualCountDosS3TM5 = 0;
for i = 1 to dosS3TM5realSize 
{
    if (allValuesDosS3TM5[i] == minValueDosS3TM5)
    {
        actualCountDosS3TM5 = actualCountDosS3TM5 + 1;
        if (actualCountDosS3TM5 >= DNminCALCS3TM5)
        {
            dn1000S3TM5 = minValueDosS3TM5;
            go to dn1000S3TM5jumper;
        }
    }
    else
    {
        minValueDosS3TM5 = allValuesDosS3TM5[i+1];
        actualCountDosS3TM5 = 0;
    }
}
dn1000S3TM5jumper:
if (dn1000S3TM5 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3TM5 = allValuesDosS3TM5[1];
}
if (dn1000S3TM5 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3TM5 = allValuesDosS3TM5[1];
}
	
printf("dn1000 Scene 3 TM5: %12f\n", dn1000S3TM5);
########################### Scene 3 - Dn1000 - Band 7
numeric lastDOSS3TM7 = dosS3TM7realSize;
numeric hDOSS3TM7 = 1;
while ( (hDOSS3TM7 * 3 + 1) < lastDOSS3TM7 - 1 )
{
    hDOSS3TM7 = 3 * hDOSS3TM7 + 1;
}
while ( hDOSS3TM7 > 0 )
{
    for i = hDOSS3TM7 - 1 to lastDOSS3TM7               # for each of the h sets of elements
    {
        numeric keyDOSS3TM7 = allValuesDosS3TM7[i];
        numeric jDOSS3TM7 = i;
        while (jDOSS3TM7 >= hDOSS3TM7 && allValuesDosS3TM7[jDOSS3TM7 - hDOSS3TM7] > keyDOSS3TM7)
        {
            allValuesDosS3TM7[jDOSS3TM7] = allValuesDosS3TM7[jDOSS3TM7 - hDOSS3TM7];
            jDOSS3TM7 = jDOSS3TM7 - hDOSS3TM7;
        }
        allValuesDosS3TM7[jDOSS3TM7] = keyDOSS3TM7;
    }
    hDOSS3TM7 = floor(hDOSS3TM7/3);
}
numeric minValueDosS3TM7 = allValuesDosS3TM7[1];
numeric dn1000S3TM7 = 10000;
numeric actualCountDosS3TM7 = 0;
for i = 1 to dosS3TM7realSize 
{
    if (allValuesDosS3TM7[i] == minValueDosS3TM7)
    {
        actualCountDosS3TM7 = actualCountDosS3TM7 + 1;
        if (actualCountDosS3TM7 >= DNminCALCS3TM7)
        {
            dn1000S3TM7 = minValueDosS3TM7;
            go to dn1000S3TM7jumper;
        }
    }
    else
    {
        minValueDosS3TM7 = allValuesDosS3TM7[i+1];
        actualCountDosS3TM7 = 0;
    }
}
dn1000S3TM7jumper:
if (dn1000S3TM7  < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3TM7  = allValuesDosS3TM7[1];
}
if (dn1000S3TM7  == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3TM7  = allValuesDosS3TM7[1];
}
	
printf("dn1000 Scene 3 TM7: %12f\n\n", dn1000S3TM7);
################################### Pathradiance Calculation #######################################
numeric pathRadS3TM1 = dn1000S3TM1 - (0.01 * (radsurfTMS3b1 * cos(s3zenith)) / pi);
numeric pathRadS3TM2 = dn1000S3TM2 - (0.01 * (radsurfTMS3b2 * cos(s3zenith)) / pi);
numeric pathRadS3TM3 = dn1000S3TM3 - (0.01 * (radsurfTMS3b3 * cos(s3zenith)) / pi);
numeric pathRadS3TM4 = dn1000S3TM4 - (0.01 * (radsurfTMS3b4 * cos(s3zenith)) / pi);
numeric pathRadS3TM5 = dn1000S3TM5 - (0.01 * (radsurfTMS3b5 * cos(s3zenith)) / pi);
numeric pathRadS3TM7 = dn1000S3TM7 - (0.01 * (radsurfTMS3b7 * cos(s3zenith)) / pi);
printf("Pathradiance Scene 3 Band 1: %12f\n", pathRadS3TM1);
printf("Pathradiance Scene 3 Band 2: %12f\n", pathRadS3TM2);
printf("Pathradiance Scene 3 Band 3: %12f\n", pathRadS3TM3);
printf("Pathradiance Scene 3 Band 4: %12f\n", pathRadS3TM4);
printf("Pathradiance Scene 3 Band 5: %12f\n", pathRadS3TM5);
printf("Pathradiance Scene 3 Band 7: %12f\n\n", pathRadS3TM7);
################################# Reflectance Calculation with athmo correction
	 for i = 1 to TMlins
	 {
	        for j = 1 to TMcols
	        {
                  valueS3TM1 = (pi * (RADS3TM1[i,j] - pathRadS3TM1)) / (radsurfTMS3b1 * cos(s3zenith));
                  if ( valueS3TM1 < 0 )
       		{
          			valueS3TM1 = 0;
				countS3REFnullTM1 = countS3REFnullTM1 + 1;
       		}
			else if ( valueS3TM1 > 1 )
			{
				valueS3TM1 = 1;
				countS3REFoneTM1 = countS3REFoneTM1 + 1;
			}
       		
			REFS3TM1[i,j] = valueS3TM1;
               valueS3TM2 = (pi * (RADS3TM2[i,j] - pathRadS3TM2)) / (radsurfTMS3b2 * cos(s3zenith));
                  if ( valueS3TM2 < 0 )
       		{
          			valueS3TM2 = 0;
				countS3REFnullTM2 = countS3REFnullTM2 + 1;
       		}
			else if ( valueS3TM2 > 1 )
			{
				valueS3TM2 = 1;
				countS3REFoneTM2 = countS3REFoneTM2 + 1;
			}
       		
			REFS3TM2[i,j] = valueS3TM2;
               valueS3TM3 = (pi * (RADS3TM3[i,j] - pathRadS3TM3)) / (radsurfTMS3b3 * cos(s3zenith));
                  if ( valueS3TM3 < 0 )
       		{
          			valueS3TM3 = 0;
				countS3REFnullTM3 = countS3REFnullTM3 + 1;
       		}
			else if ( valueS3TM3 > 1 )
			{
				valueS3TM3 = 1;
				countS3REFoneTM3 = countS3REFoneTM3 + 1;
			}
       		
			REFS3TM3[i,j] = valueS3TM3;
               valueS3TM4 = (pi * (RADS3TM4[i,j] - pathRadS3TM4)) / (radsurfTMS3b4 * cos(s3zenith));
                  if ( valueS3TM4 < 0 )
       		{
          			valueS3TM4 = 0;
				countS3REFnullTM4 = countS3REFnullTM4 + 1;
       		}
			else if ( valueS3TM4 > 1 )
			{
				valueS3TM4 = 1;
				countS3REFoneTM4 = countS3REFoneTM4 + 1;
			}
       		
			REFS3TM4[i,j] = valueS3TM4;
               valueS3TM5 = (pi * (RADS3TM5[i,j] - pathRadS3TM5)) / (radsurfTMS3b5 * cos(s3zenith));
                  if ( valueS3TM5 < 0 )
       		{
          			valueS3TM5 = 0;
				countS3REFnullTM5 = countS3REFnullTM5 + 1;
       		}
			else if ( valueS3TM5 > 1 )
			{
				valueS3TM5 = 1;
				countS3REFoneTM5 = countS3REFoneTM5 + 1;
			}
       		
			REFS3TM5[i,j] = valueS3TM5;
               valueS3TM7 = (pi * (RADS3TM7[i,j] - pathRadS3TM7)) / (radsurfTMS3b7 * cos(s3zenith));
                  if ( valueS3TM7 < 0 )
       		{
          			valueS3TM7 = 0;
				countS3REFnullTM7 = countS3REFnullTM7 + 1;
       		}
			else if ( valueS3TM7 > 1 )
			{
				valueS3TM7 = 1;
				countS3REFoneTM7 = countS3REFoneTM7 + 1;
			}
       		
			REFS3TM7[i,j] = valueS3TM7;
	        }
	 }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullTM1, countS3REFoneTM1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullTM2, countS3REFoneTM2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullTM3, countS3REFoneTM3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullTM4, countS3REFoneTM4);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 5: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullTM5, countS3REFoneTM5);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 7: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n\n", countS3REFnullTM7, countS3REFoneTM7);
CreatePyramid(REFS3TM1);
CreatePyramid(REFS3TM2);
CreatePyramid(REFS3TM3);
CreatePyramid(REFS3TM4);
CreatePyramid(REFS3TM5);
CreatePyramid(REFS3TM7);
        
CreateHistogram(REFS3TM1);
CreateHistogram(REFS3TM2);
CreateHistogram(REFS3TM3);
CreateHistogram(REFS3TM4);
CreateHistogram(REFS3TM5);
CreateHistogram(REFS3TM7);
CloseRaster(RADS3TM1);
CloseRaster(RADS3TM2);
CloseRaster(RADS3TM3);
CloseRaster(RADS3TM4);
CloseRaster(RADS3TM5);
CloseRaster(RADS3TM7);
printf("Reflectance calculation for Scene 3 (TM) is done...\n\n\n");
}
else if ( sensors3 == 5 )                                               # MSS 5 - Calib Werte nach Price J.C.1987
{
raster REFS3MSS1, REFS3MSS2, REFS3MSS3, REFS3MSS4;
numeric radsurfMSS3b1, radsurfMSS3b2, radsurfMSS3b3, radsurfMSS3b4;
numeric valueS3MSS1, valueS3MSS2, valueS3MSS3, valueS3MSS4;
numeric dosS3MSS1nullValCount = 0;
numeric dosS3MSS2nullValCount = 0;
numeric dosS3MSS3nullValCount = 0;
numeric dosS3MSS4nullValCount = 0;
numeric dosS3MSS1realArrayCount = 1;
numeric dosS3MSS2realArrayCount = 1;
numeric dosS3MSS3realArrayCount = 1;
numeric dosS3MSS4realArrayCount = 1;
numeric countS3REFnullMSS1 = 0;
numeric countS3REFnullMSS2 = 0;
numeric countS3REFnullMSS3 = 0;
numeric countS3REFnullMSS4 = 0;
numeric countS3REFoneMSS1 = 0;
numeric countS3REFoneMSS2 = 0;
numeric countS3REFoneMSS3 = 0;
numeric countS3REFoneMSS4 = 0;
numeric countnoDOSS3REFnullMSS1 = 0;
numeric countnoDOSS3REFnullMSS2 = 0;
numeric countnoDOSS3REFnullMSS3 = 0;
numeric countnoDOSS3REFnullMSS4 = 0;
numeric countnoDOSS3REFoneMSS1 = 0;
numeric countnoDOSS3REFoneMSS2 = 0;
numeric countnoDOSS3REFoneMSS3 = 0;
numeric countnoDOSS3REFoneMSS4 = 0;
	          
radsurfMSS3b1 = ESMSS51 / (dist3^2);
radsurfMSS3b2 = ESMSS52 / (dist3^2);
radsurfMSS3b3 = ESMSS53 / (dist3^2);
radsurfMSS3b4 = ESMSS54 / (dist3^2);
printf("Surface Radiance MSS Band 1 in W/m^2�m (Scene 3): %12f\n", radsurfMSS3b1);
printf("Surface Radiance MSS Band 2 in W/m^2�m (Scene 3): %12f\n", radsurfMSS3b2);
printf("Surface Radiance MSS Band 3 in W/m^2�m (Scene 3): %12f\n", radsurfMSS3b3);
printf("Surface Radiance MSS Band 4 in W/m^2�m (Scene 3): %12f\n\n", radsurfMSS3b4);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {       
		if (IsNull(RADS3MSS1[i,j]) == 1)
		{
		dosS3MSS1nullValCount = dosS3MSS1nullValCount + 1;
		}
		if (IsNull(RADS3MSS2[i,j]) == 1)
		{
		dosS3MSS2nullValCount = dosS3MSS2nullValCount + 1;
		}		 
		if (IsNull(RADS3MSS3[i,j]) == 1)
		{
		dosS3MSS3nullValCount = dosS3MSS3nullValCount + 1;
		}		 
		if (IsNull(RADS3MSS4[i,j]) == 1)
		{
		dosS3MSS4nullValCount = dosS3MSS4nullValCount + 1;
		}		 	 	 
    }
}
numeric dosS3MSS1realSize = (MSSlins * MSScols) - dosS3MSS1nullValCount;
numeric dosS3MSS2realSize = (MSSlins * MSScols) - dosS3MSS2nullValCount;
numeric dosS3MSS3realSize = (MSSlins * MSScols) - dosS3MSS3nullValCount;
numeric dosS3MSS4realSize = (MSSlins * MSScols) - dosS3MSS4nullValCount;
array allValuesDosS3MSS1[dosS3MSS1realSize];
array allValuesDosS3MSS2[dosS3MSS2realSize];
array allValuesDosS3MSS3[dosS3MSS3realSize];
array allValuesDosS3MSS4[dosS3MSS4realSize];
numeric DNminCALCS3MSS1 = DNminCALC(Scene3Lin, Scene3Col, dosS3MSS1realSize);
numeric DNminCALCS3MSS2 = DNminCALC(Scene3Lin, Scene3Col, dosS3MSS2realSize);
numeric DNminCALCS3MSS3 = DNminCALC(Scene3Lin, Scene3Col, dosS3MSS3realSize);
numeric DNminCALCS3MSS4 = DNminCALC(Scene3Lin, Scene3Col, dosS3MSS4realSize);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {     
		if (IsNull(RADS3MSS1[i,j]) == 0)
		{
		  allValuesDosS3MSS1[dosS3MSS1realArrayCount] = RADS3MSS1[i,j];		 
		  dosS3MSS1realArrayCount = dosS3MSS1realArrayCount + 1;
		}
		if (IsNull(RADS3MSS2[i,j]) == 0)
		{
		  allValuesDosS3MSS2[dosS3MSS2realArrayCount] = RADS3MSS2[i,j];		 
		  dosS3MSS2realArrayCount = dosS3MSS2realArrayCount + 1;
		}
		if (IsNull(RADS3MSS3[i,j]) == 0)
		{
		  allValuesDosS3MSS3[dosS3MSS3realArrayCount] = RADS3MSS3[i,j];		 
		  dosS3MSS3realArrayCount = dosS3MSS3realArrayCount + 1;
		}
		if (IsNull(RADS3MSS4[i,j]) == 0)
		{
		  allValuesDosS3MSS4[dosS3MSS4realArrayCount] = RADS3MSS4[i,j];		 
		  dosS3MSS4realArrayCount = dosS3MSS4realArrayCount + 1;
		}
    }
}
########################### Scene 3 - Dn1000 - Band 1
numeric lastDOSS3MSS1 = dosS3MSS1realSize;
numeric hDOSS3MSS1 = 1;
while ( (hDOSS3MSS1 * 3 + 1) < lastDOSS3MSS1 - 1 )
{
    hDOSS3MSS1 = 3 * hDOSS3MSS1 + 1;
}
while ( hDOSS3MSS1 > 0 )
{
    for i = hDOSS3MSS1 - 1 to lastDOSS3MSS1               # for each of the h sets of elements
    {
        numeric keyDOSS3MSS1 = allValuesDosS3MSS1[i];
        numeric jDOSS3MSS1 = i;
        while (jDOSS3MSS1 >= hDOSS3MSS1 && allValuesDosS3MSS1[jDOSS3MSS1 - hDOSS3MSS1] > keyDOSS3MSS1)
        {
            allValuesDosS3MSS1[jDOSS3MSS1] = allValuesDosS3MSS1[jDOSS3MSS1 - hDOSS3MSS1];
            jDOSS3MSS1 = jDOSS3MSS1 - hDOSS3MSS1;
        }
        allValuesDosS3MSS1[jDOSS3MSS1] = keyDOSS3MSS1;
    }
    hDOSS3MSS1 = floor(hDOSS3MSS1/3);
}
numeric minValueDosS3MSS1 = allValuesDosS3MSS1[1];
numeric dn1000S3MSS1 = 10000;
numeric actualCountDosS3MSS1 = 0;
for i = 1 to dosS3MSS1realSize 
{
    if (allValuesDosS3MSS1[i] == minValueDosS3MSS1)
    {
        actualCountDosS3MSS1 = actualCountDosS3MSS1 + 1;
        if (actualCountDosS3MSS1 >= DNminCALCS3MSS1)
        {
            dn1000S3MSS1 = minValueDosS3MSS1;
            go to dn1000S3MSS1jumper;
        }
    }
    else
    {
        minValueDosS3MSS1 = allValuesDosS3MSS1[i+1];
        actualCountDosS3MSS1 = 0;
    }
}
dn1000S3MSS1jumper:
if (dn1000S3MSS1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3MSS1 = allValuesDosS3MSS1[1];
}
if (dn1000S3MSS1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3MSS1 = allValuesDosS3MSS1[1];
}
	
printf("dn1000 Scene 3 MSS1: %12f\n", dn1000S3MSS1);
########################### Scene 3 - Dn1000 - Band 2
numeric lastDOSS3MSS2 = dosS3MSS1realSize;
numeric hDOSS3MSS2 = 1;
while ( (hDOSS3MSS2 * 3 + 1) < lastDOSS3MSS2 - 1 )
{
    hDOSS3MSS2 = 3 * hDOSS3MSS2 + 1;
}
while ( hDOSS3MSS2 > 0 )
{
    for i = hDOSS3MSS2 - 1 to lastDOSS3MSS2
    {
        numeric keyDOSS3MSS2 = allValuesDosS3MSS2[i];
        numeric jDOSS3MSS2 = i;
        while (jDOSS3MSS2 >= hDOSS3MSS2 && allValuesDosS3MSS2[jDOSS3MSS2 - hDOSS3MSS2] > keyDOSS3MSS2)
        {
            allValuesDosS3MSS2[jDOSS3MSS2] = allValuesDosS3MSS2[jDOSS3MSS2 - hDOSS3MSS2];
            jDOSS3MSS2 = jDOSS3MSS2 - hDOSS3MSS2;
        }
        allValuesDosS3MSS2[jDOSS3MSS2] = keyDOSS3MSS2;
    }
    hDOSS3MSS2 = floor(hDOSS3MSS2/3);
}
numeric minValueDosS3MSS2 = allValuesDosS3MSS2[1];
numeric dn1000S3MSS2 = 10000;
numeric actualCountDosS3MSS2 = 0;
for i = 1 to dosS3MSS2realSize 
{
    if (allValuesDosS3MSS2[i] == minValueDosS3MSS2)
    {
        actualCountDosS3MSS2 = actualCountDosS3MSS2 + 1;
        if (actualCountDosS3MSS2 >= DNminCALCS3MSS2)
        {
            dn1000S3MSS2 = minValueDosS3MSS2;
            go to dn1000S3MSS2jumper;
        }
    }
    else
    {
        minValueDosS3MSS2 = allValuesDosS3MSS2[i+1];
        actualCountDosS3MSS2 = 0;
    }
}
dn1000S3MSS2jumper:
if (dn1000S3MSS2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3MSS2 = allValuesDosS3MSS2[1];
}
if (dn1000S3MSS2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3MSS2 = allValuesDosS3MSS2[1];
}
printf("dn1000 Scene 3 MSS2: %12f\n", dn1000S3MSS2);
########################### Scene 3 - Dn1000 - Band 3
numeric lastDOSS3MSS3 = dosS3MSS3realSize;
numeric hDOSS3MSS3 = 1;
while ( (hDOSS3MSS3 * 3 + 1) < lastDOSS3MSS3 - 1 )
{
    hDOSS3MSS3 = 3 * hDOSS3MSS3 + 1;
}
while ( hDOSS3MSS3 > 0 )
{
    for i = hDOSS3MSS3 - 1 to lastDOSS3MSS3               # for each of the h sets of elements
    {
        numeric keyDOSS3MSS3 = allValuesDosS3MSS3[i];
        numeric jDOSS3MSS3 = i;
        while (jDOSS3MSS3 >= hDOSS3MSS3 && allValuesDosS3MSS3[jDOSS3MSS3 - hDOSS3MSS3] > keyDOSS3MSS3)
        {
            allValuesDosS3MSS3[jDOSS3MSS3] = allValuesDosS3MSS3[jDOSS3MSS3 - hDOSS3MSS3];
            jDOSS3MSS3 = jDOSS3MSS3 - hDOSS3MSS3;
        }
        allValuesDosS3MSS3[jDOSS3MSS3] = keyDOSS3MSS3;
    }
    hDOSS3MSS3 = floor(hDOSS3MSS3/3);
}
numeric minValueDosS3MSS3 = allValuesDosS3MSS3[1];
numeric dn1000S3MSS3 = 10000;
numeric actualCountDosS3MSS3 = 0;
for i = 1 to dosS3MSS3realSize 
{
    if (allValuesDosS3MSS3[i] == minValueDosS3MSS3)
    {
        actualCountDosS3MSS3 = actualCountDosS3MSS3 + 1;
        if (actualCountDosS3MSS3 >= DNminCALCS3MSS3)
        {
            dn1000S3MSS3 = minValueDosS3MSS3;
            go to dn1000S3MSS3jumper;
        }
    }
    else
    {
        minValueDosS3MSS3 = allValuesDosS3MSS3[i+1];
        actualCountDosS3MSS3 = 0;
    }
}
dn1000S3MSS3jumper:
if (dn1000S3MSS3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3MSS3 = allValuesDosS3MSS3[1];
}
if (dn1000S3MSS3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3MSS3 = allValuesDosS3MSS3[1];
}
printf("dn1000 Scene 3 MSS3: %12f\n", dn1000S3MSS3);
########################### Scene 3 - Dn1000 - Band 4
numeric lastDOSS3MSS4 = dosS3MSS4realSize;
numeric hDOSS3MSS4 = 1;
while ( (hDOSS3MSS4 * 3 + 1) < lastDOSS3MSS4 - 1 )
{
    hDOSS3MSS4 = 3 * hDOSS3MSS4 + 1;
}
while ( hDOSS3MSS4 > 0 )
{
    for i = hDOSS3MSS4 - 1 to lastDOSS3MSS4
    {
        numeric keyDOSS3MSS4 = allValuesDosS3MSS4[i];
        numeric jDOSS3MSS4 = i;
        while (jDOSS3MSS4 >= hDOSS3MSS4 && allValuesDosS3MSS4[jDOSS3MSS4 - hDOSS3MSS4] > keyDOSS3MSS4)
        {
            allValuesDosS3MSS4[jDOSS3MSS4] = allValuesDosS3MSS4[jDOSS3MSS4 - hDOSS3MSS4];
            jDOSS3MSS4 = jDOSS3MSS4 - hDOSS3MSS4;
        }
        allValuesDosS3MSS4[jDOSS3MSS4] = keyDOSS3MSS4;
    }
    hDOSS3MSS4 = floor(hDOSS3MSS4/3);
}
numeric minValueDosS3MSS4 = allValuesDosS3MSS4[1];
numeric dn1000S3MSS4 = 10000;
numeric actualCountDosS3MSS4 = 0;
for i = 1 to dosS3MSS4realSize 
{
    if (allValuesDosS3MSS4[i] == minValueDosS3MSS4)
    {
        actualCountDosS3MSS4 = actualCountDosS3MSS4 + 1;
        if (actualCountDosS3MSS4 >= DNminCALCS3MSS1)
        {
            dn1000S3MSS4 = minValueDosS3MSS4;
            go to dn1000S3MSS4jumper;
        }
    }
    else
    {
        minValueDosS3MSS4 = allValuesDosS3MSS4[i+1];
        actualCountDosS3MSS4 = 0;
    }
}
dn1000S3MSS4jumper:
if (dn1000S3MSS4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3MSS4 = allValuesDosS3MSS4[1];
}
if (dn1000S3MSS4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3MSS4 = allValuesDosS3MSS4[1];
}
	
printf("dn1000 Scene 3 MSS4: %12f\n", dn1000S3MSS4);
################################### Pathradiance Calculation #######################################
numeric pathRadS3MSS1 = dn1000S3MSS1 - (0.01 * (radsurfMSS3b1 * cos(s3zenith)) / pi);
numeric pathRadS3MSS2 = dn1000S3MSS2 - (0.01 * (radsurfMSS3b2 * cos(s3zenith)) / pi);
numeric pathRadS3MSS3 = dn1000S3MSS3 - (0.01 * (radsurfMSS3b3 * cos(s3zenith)) / pi);
numeric pathRadS3MSS4 = dn1000S3MSS4 - (0.01 * (radsurfMSS3b4 * cos(s3zenith)) / pi);
printf("Pathradiance Scene 3 Band 1: %12f\n", pathRadS3MSS1);
printf("Pathradiance Scene 3 Band 2: %12f\n", pathRadS3MSS2);
printf("Pathradiance Scene 3 Band 3: %12f\n", pathRadS3MSS3);
printf("Pathradiance Scene 3 Band 4: %12f\n\n", pathRadS3MSS4);
################################# Reflectance Calculation with athmo correction
	  for i = 1 to MSSlins
	  {
	     for j = 1 to MSScols
	     {          
               valueS3MSS1 = (pi * (RADS3MSS1[i,j] - pathRadS3MSS1)) / (radsurfMSS3b1 * cos(s3zenith));
                  if ( valueS3MSS1 < 0 )
       		{
          			valueS3MSS1 = 0;
				countS3REFnullMSS1 = countS3REFnullMSS1 + 1;
       		}
			else if ( valueS3MSS1 > 1 )
			{
				valueS3MSS1 = 1;
				countS3REFoneMSS1 = countS3REFoneMSS1 + 1;
			}
       		
			REFS3MSS1[i,j] = valueS3MSS1;
               valueS3MSS2 = (pi * (RADS3MSS2[i,j] - pathRadS3MSS2)) / (radsurfMSS3b2 * cos(s3zenith));
                  if ( valueS3MSS2 < 0 )
       		{
          			valueS3MSS2 = 0;
				countS3REFnullMSS2 = countS3REFnullMSS2 + 1;
       		}
			else if ( valueS3MSS2 > 1 )
			{
				valueS3MSS2 = 1;
				countS3REFoneMSS2 = countS3REFoneMSS2 + 1;
			}
       		
			REFS3MSS2[i,j] = valueS3MSS2;
               valueS3MSS3 = (pi * (RADS3MSS3[i,j] - pathRadS3MSS3)) / (radsurfMSS3b3 * cos(s3zenith));
                  if ( valueS3MSS3 < 0 )
       		{
          			valueS3MSS3 = 0;
				countS3REFnullMSS3 = countS3REFnullMSS3 + 1;
       		}
			else if ( valueS3MSS3 > 1 )
			{
				valueS3MSS3 = 1;
				countS3REFoneMSS3 = countS3REFoneMSS3 + 1;
			}
       		
			REFS3MSS3[i,j] = valueS3MSS3;
               valueS3MSS4 = (pi * (RADS3MSS4[i,j] - pathRadS3MSS4)) / (radsurfMSS3b4 * cos(s3zenith));
                  if ( valueS3MSS4 < 0 )
       		{
          			valueS3MSS4 = 0;
				countS3REFnullMSS4 = countS3REFnullMSS4 + 1;
       		}
			else if ( valueS3MSS4 > 1 )
			{
				valueS3MSS4 = 1;
				countS3REFoneMSS4 = countS3REFoneMSS4 + 1;
			}
       		
			REFS3MSS4[i,j] = valueS3MSS4;
           }
	  }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullMSS1, countS3REFoneMSS1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullMSS2, countS3REFoneMSS2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullMSS3, countS3REFoneMSS3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullMSS4, countS3REFoneMSS4);
CreatePyramid(REFS3MSS1);
CreatePyramid(REFS3MSS2);
CreatePyramid(REFS3MSS3);
CreatePyramid(REFS3MSS4);
        
CreateHistogram(REFS3MSS1);
CreateHistogram(REFS3MSS2);
CreateHistogram(REFS3MSS3);
CreateHistogram(REFS3MSS4);
CloseRaster(RADS3MSS1);
CloseRaster(RADS3MSS2);
CloseRaster(RADS3MSS3);
CloseRaster(RADS3MSS4);
printf("Reflectance calculation for Scene 3 (MSS) is done...\n\n\n");
}
else if ( sensors3 == 4 )                                               # MSS 4
{
raster REFS3MSS1, REFS3MSS2, REFS3MSS3, REFS3MSS4;
numeric radsurfMSS3b1, radsurfMSS3b2, radsurfMSS3b3, radsurfMSS3b4;
numeric valueS3MSS1, valueS3MSS2, valueS3MSS3, valueS3MSS4;
numeric dosS3MSS1nullValCount = 0;
numeric dosS3MSS2nullValCount = 0;
numeric dosS3MSS3nullValCount = 0;
numeric dosS3MSS4nullValCount = 0;
numeric dosS3MSS1realArrayCount = 1;
numeric dosS3MSS2realArrayCount = 1;
numeric dosS3MSS3realArrayCount = 1;
numeric dosS3MSS4realArrayCount = 1;
numeric countS3REFnullMSS1 = 0;
numeric countS3REFnullMSS2 = 0;
numeric countS3REFnullMSS3 = 0;
numeric countS3REFnullMSS4 = 0;
numeric countS3REFoneMSS1 = 0;
numeric countS3REFoneMSS2 = 0;
numeric countS3REFoneMSS3 = 0;
numeric countS3REFoneMSS4 = 0;
radsurfMSS3b1 = ESMSS41 / (dist3^2);
radsurfMSS3b2 = ESMSS42 / (dist3^2);
radsurfMSS3b3 = ESMSS43 / (dist3^2);
radsurfMSS3b4 = ESMSS44 / (dist3^2);
printf("Surface Radiance MSS Band 1 in W/m^2�m (Scene 3): %12f\n", radsurfMSS3b1);
printf("Surface Radiance MSS Band 2 in W/m^2�m (Scene 3): %12f\n", radsurfMSS3b2);
printf("Surface Radiance MSS Band 3 in W/m^2�m (Scene 3): %12f\n", radsurfMSS3b3);
printf("Surface Radiance MSS Band 4 in W/m^2�m (Scene 3): %12f\n\n", radsurfMSS3b4);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {       
		if (IsNull(RADS3MSS1[i,j]) == 1)
		{
		dosS3MSS1nullValCount = dosS3MSS1nullValCount + 1;
		}
		if (IsNull(RADS3MSS2[i,j]) == 1)
		{
		dosS3MSS2nullValCount = dosS3MSS2nullValCount + 1;
		}		 
		if (IsNull(RADS3MSS3[i,j]) == 1)
		{
		dosS3MSS3nullValCount = dosS3MSS3nullValCount + 1;
		}		 
		if (IsNull(RADS3MSS4[i,j]) == 1)
		{
		dosS3MSS4nullValCount = dosS3MSS4nullValCount + 1;
		}		 	 	 
    }
}
numeric dosS3MSS1realSize = (MSSlins * MSScols) - dosS3MSS1nullValCount;
numeric dosS3MSS2realSize = (MSSlins * MSScols) - dosS3MSS2nullValCount;
numeric dosS3MSS3realSize = (MSSlins * MSScols) - dosS3MSS3nullValCount;
numeric dosS3MSS4realSize = (MSSlins * MSScols) - dosS3MSS4nullValCount;
array allValuesDosS3MSS1[dosS3MSS1realSize];
array allValuesDosS3MSS2[dosS3MSS2realSize];
array allValuesDosS3MSS3[dosS3MSS3realSize];
array allValuesDosS3MSS4[dosS3MSS4realSize];
numeric DNminCALCS3MSS1 = DNminCALC(Scene3Lin, Scene3Col, dosS3MSS1realSize);
numeric DNminCALCS3MSS2 = DNminCALC(Scene3Lin, Scene3Col, dosS3MSS2realSize);
numeric DNminCALCS3MSS3 = DNminCALC(Scene3Lin, Scene3Col, dosS3MSS3realSize);
numeric DNminCALCS3MSS4 = DNminCALC(Scene3Lin, Scene3Col, dosS3MSS4realSize);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {     
		if (IsNull(RADS3MSS1[i,j]) == 0)
		{
		  allValuesDosS3MSS1[dosS3MSS1realArrayCount] = RADS3MSS1[i,j];		 
		  dosS3MSS1realArrayCount = dosS3MSS1realArrayCount + 1;
		}
		if (IsNull(RADS3MSS2[i,j]) == 0)
		{
		  allValuesDosS3MSS2[dosS3MSS2realArrayCount] = RADS3MSS2[i,j];		 
		  dosS3MSS2realArrayCount = dosS3MSS2realArrayCount + 1;
		}
		if (IsNull(RADS3MSS3[i,j]) == 0)
		{
		  allValuesDosS3MSS3[dosS3MSS3realArrayCount] = RADS3MSS3[i,j];		 
		  dosS3MSS3realArrayCount = dosS3MSS3realArrayCount + 1;
		}
		if (IsNull(RADS3MSS4[i,j]) == 0)
		{
		  allValuesDosS3MSS4[dosS3MSS4realArrayCount] = RADS3MSS4[i,j];		 
		  dosS3MSS4realArrayCount = dosS3MSS4realArrayCount + 1;
		}
    }
}
########################### Scene 3 - Dn1000 - Band 1
numeric lastDOSS3MSS1 = dosS3MSS1realSize;
numeric hDOSS3MSS1 = 1;
while ( (hDOSS3MSS1 * 3 + 1) < lastDOSS3MSS1 - 1 )
{
    hDOSS3MSS1 = 3 * hDOSS3MSS1 + 1;
}
while ( hDOSS3MSS1 > 0 )
{
    for i = hDOSS3MSS1 - 1 to lastDOSS3MSS1               # for each of the h sets of elements
    {
        numeric keyDOSS3MSS1 = allValuesDosS3MSS1[i];
        numeric jDOSS3MSS1 = i;
        while (jDOSS3MSS1 >= hDOSS3MSS1 && allValuesDosS3MSS1[jDOSS3MSS1 - hDOSS3MSS1] > keyDOSS3MSS1)
        {
            allValuesDosS3MSS1[jDOSS3MSS1] = allValuesDosS3MSS1[jDOSS3MSS1 - hDOSS3MSS1];
            jDOSS3MSS1 = jDOSS3MSS1 - hDOSS3MSS1;
        }
        allValuesDosS3MSS1[jDOSS3MSS1] = keyDOSS3MSS1;
    }
    hDOSS3MSS1 = floor(hDOSS3MSS1/3);
}
numeric minValueDosS3MSS1 = allValuesDosS3MSS1[1];
numeric dn1000S3MSS1 = 10000;
numeric actualCountDosS3MSS1 = 0;
for i = 1 to dosS3MSS1realSize 
{
    if (allValuesDosS3MSS1[i] == minValueDosS3MSS1)
    {
        actualCountDosS3MSS1 = actualCountDosS3MSS1 + 1;
        if (actualCountDosS3MSS1 >= DNminCALCS3MSS1)
        {
            dn1000S3MSS1 = minValueDosS3MSS1;
            go to dn1000S3MSS1jumper;
        }
    }
    else
    {
        minValueDosS3MSS1 = allValuesDosS3MSS1[i+1];
        actualCountDosS3MSS1 = 0;
    }
}
dn1000S3MSS1jumper:
if (dn1000S3MSS1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3MSS1 = allValuesDosS3MSS1[1];
}
if (dn1000S3MSS1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3MSS1 = allValuesDosS3MSS1[1];
}
printf("dn1000 Scene 3 MSS1: %12f\n", dn1000S3MSS1);
########################### Scene 3 - Dn1000 - Band 2
numeric lastDOSS3MSS2 = dosS3MSS1realSize;
numeric hDOSS3MSS2 = 1;
while ( (hDOSS3MSS2 * 3 + 1) < lastDOSS3MSS2 - 1 )
{
    hDOSS3MSS2 = 3 * hDOSS3MSS2 + 1;
}
while ( hDOSS3MSS2 > 0 )
{
    for i = hDOSS3MSS2 - 1 to lastDOSS3MSS2
    {
        numeric keyDOSS3MSS2 = allValuesDosS3MSS2[i];
        numeric jDOSS3MSS2 = i;
        while (jDOSS3MSS2 >= hDOSS3MSS2 && allValuesDosS3MSS2[jDOSS3MSS2 - hDOSS3MSS2] > keyDOSS3MSS2)
        {
            allValuesDosS3MSS2[jDOSS3MSS2] = allValuesDosS3MSS2[jDOSS3MSS2 - hDOSS3MSS2];
            jDOSS3MSS2 = jDOSS3MSS2 - hDOSS3MSS2;
        }
        allValuesDosS3MSS2[jDOSS3MSS2] = keyDOSS3MSS2;
    }
    hDOSS3MSS2 = floor(hDOSS3MSS2/3);
}
numeric minValueDosS3MSS2 = allValuesDosS3MSS2[1];
numeric dn1000S3MSS2 = 10000;
numeric actualCountDosS3MSS2 = 0;
for i = 1 to dosS3MSS2realSize 
{
    if (allValuesDosS3MSS2[i] == minValueDosS3MSS2)
    {
        actualCountDosS3MSS2 = actualCountDosS3MSS2 + 1;
        if (actualCountDosS3MSS2 >= DNminCALCS3MSS2)
        {
            dn1000S3MSS2 = minValueDosS3MSS2;
            go to dn1000S3MSS2jumper;
        }
    }
    else
    {
        minValueDosS3MSS2 = allValuesDosS3MSS2[i+1];
        actualCountDosS3MSS2 = 0;
    }
}
dn1000S3MSS2jumper:
if (dn1000S3MSS2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3MSS2 = allValuesDosS3MSS2[1];
}
if (dn1000S3MSS2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3MSS2 = allValuesDosS3MSS2[1];
}
printf("dn1000 Scene 3 MSS2: %12f\n", dn1000S3MSS2);
########################### Scene 3 - Dn1000 - Band 3
numeric lastDOSS3MSS3 = dosS3MSS3realSize;
numeric hDOSS3MSS3 = 1;
while ( (hDOSS3MSS3 * 3 + 1) < lastDOSS3MSS3 - 1 )
{
    hDOSS3MSS3 = 3 * hDOSS3MSS3 + 1;
}
while ( hDOSS3MSS3 > 0 )
{
    for i = hDOSS3MSS3 - 1 to lastDOSS3MSS3               # for each of the h sets of elements
    {
        numeric keyDOSS3MSS3 = allValuesDosS3MSS3[i];
        numeric jDOSS3MSS3 = i;
        while (jDOSS3MSS3 >= hDOSS3MSS3 && allValuesDosS3MSS3[jDOSS3MSS3 - hDOSS3MSS3] > keyDOSS3MSS3)
        {
            allValuesDosS3MSS3[jDOSS3MSS3] = allValuesDosS3MSS3[jDOSS3MSS3 - hDOSS3MSS3];
            jDOSS3MSS3 = jDOSS3MSS3 - hDOSS3MSS3;
        }
        allValuesDosS3MSS3[jDOSS3MSS3] = keyDOSS3MSS3;
    }
    hDOSS3MSS3 = floor(hDOSS3MSS3/3);
}
numeric minValueDosS3MSS3 = allValuesDosS3MSS3[1];
numeric dn1000S3MSS3 = 10000;
numeric actualCountDosS3MSS3 = 0;
for i = 1 to dosS3MSS3realSize 
{
    if (allValuesDosS3MSS3[i] == minValueDosS3MSS3)
    {
        actualCountDosS3MSS3 = actualCountDosS3MSS3 + 1;
        if (actualCountDosS3MSS3 >= DNminCALCS3MSS3)
        {
            dn1000S3MSS3 = minValueDosS3MSS3;
            go to dn1000S3MSS3jumper;
        }
    }
    else
    {
        minValueDosS3MSS3 = allValuesDosS3MSS3[i+1];
        actualCountDosS3MSS3 = 0;
    }
}
dn1000S3MSS3jumper:
if (dn1000S3MSS3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3MSS3 = allValuesDosS3MSS3[1];
}
if (dn1000S3MSS3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3MSS3 = allValuesDosS3MSS3[1];
}
	
printf("dn1000 Scene 3 MSS3: %12f\n", dn1000S3MSS3);
########################### Scene 3 - Dn1000 - Band 4
numeric lastDOSS3MSS4 = dosS3MSS4realSize;
numeric hDOSS3MSS4 = 1;
while ( (hDOSS3MSS4 * 3 + 1) < lastDOSS3MSS4 - 1 )
{
    hDOSS3MSS4 = 3 * hDOSS3MSS4 + 1;
}
while ( hDOSS3MSS4 > 0 )
{
    for i = hDOSS3MSS4 - 1 to lastDOSS3MSS4
    {
        numeric keyDOSS3MSS4 = allValuesDosS3MSS4[i];
        numeric jDOSS3MSS4 = i;
        while (jDOSS3MSS4 >= hDOSS3MSS4 && allValuesDosS3MSS4[jDOSS3MSS4 - hDOSS3MSS4] > keyDOSS3MSS4)
        {
            allValuesDosS3MSS4[jDOSS3MSS4] = allValuesDosS3MSS4[jDOSS3MSS4 - hDOSS3MSS4];
            jDOSS3MSS4 = jDOSS3MSS4 - hDOSS3MSS4;
        }
        allValuesDosS3MSS4[jDOSS3MSS4] = keyDOSS3MSS4;
    }
    hDOSS3MSS4 = floor(hDOSS3MSS4/3);
}
numeric minValueDosS3MSS4 = allValuesDosS3MSS4[1];
numeric dn1000S3MSS4 = 10000;
numeric actualCountDosS3MSS4 = 0;
for i = 1 to dosS3MSS4realSize 
{
    if (allValuesDosS3MSS4[i] == minValueDosS3MSS4)
    {
        actualCountDosS3MSS4 = actualCountDosS3MSS4 + 1;
        if (actualCountDosS3MSS4 >= DNminCALCS3MSS4)
        {
            dn1000S3MSS4 = minValueDosS3MSS4;
            go to dn1000S3MSS4jumper;
        }
    }
    else
    {
        minValueDosS3MSS4 = allValuesDosS3MSS4[i+1];
        actualCountDosS3MSS4 = 0;
    }
}
dn1000S3MSS4jumper:
if (dn1000S3MSS4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3MSS4 = allValuesDosS3MSS4[1];
}
if (dn1000S3MSS4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3MSS4 = allValuesDosS3MSS4[1];
}
	
printf("dn1000 Scene 3 MSS4: %12f\n", dn1000S3MSS4);
################################### Pathradiance Calculation #######################################
numeric pathRadS3MSS1 = dn1000S3MSS1 - (0.01 * (radsurfMSS3b1 * cos(s3zenith)) / pi);
numeric pathRadS3MSS2 = dn1000S3MSS2 - (0.01 * (radsurfMSS3b2 * cos(s3zenith)) / pi);
numeric pathRadS3MSS3 = dn1000S3MSS3 - (0.01 * (radsurfMSS3b3 * cos(s3zenith)) / pi);
numeric pathRadS3MSS4 = dn1000S3MSS4 - (0.01 * (radsurfMSS3b4 * cos(s3zenith)) / pi);
printf("Pathradiance Scene 3 Band 1: %12f\n", pathRadS3MSS1);
printf("Pathradiance Scene 3 Band 2: %12f\n", pathRadS3MSS2);
printf("Pathradiance Scene 3 Band 3: %12f\n", pathRadS3MSS3);
printf("Pathradiance Scene 3 Band 4: %12f\n\n", pathRadS3MSS4);
################################# Reflectance Calculation with athmo correction
	  for i = 1 to MSSlins
	  {
	     for j = 1 to MSScols
	     {          
               valueS3MSS1 = (pi * (RADS3MSS1[i,j] - pathRadS3MSS1)) / (radsurfMSS3b1 * cos(s3zenith));
                  if ( valueS3MSS1 < 0 )
       		{
          			valueS3MSS1 = 0;
				countS3REFnullMSS1 = countS3REFnullMSS1 + 1;
       		}
			else if ( valueS3MSS1 > 1 )
			{
				valueS3MSS1 = 1;
				countS3REFoneMSS1 = countS3REFoneMSS1 + 1;
			}
       		
			REFS3MSS1[i,j] = valueS3MSS1;
               valueS3MSS2 = (pi * (RADS3MSS2[i,j] - pathRadS3MSS2)) / (radsurfMSS3b2 * cos(s3zenith));
                  if ( valueS3MSS2 < 0 )
       		{
          			valueS3MSS2 = 0;
				countS3REFnullMSS2 = countS3REFnullMSS2 + 1;
       		}
			else if ( valueS3MSS2 > 1 )
			{
				valueS3MSS2 = 1;
				countS3REFoneMSS2 = countS3REFoneMSS2 + 1;
			}
       		
			REFS3MSS2[i,j] = valueS3MSS2;
               valueS3MSS3 = (pi * (RADS3MSS3[i,j] - pathRadS3MSS3)) / (radsurfMSS3b3 * cos(s3zenith));
                  if ( valueS3MSS3 < 0 )
       		{
          			valueS3MSS3 = 0;
				countS3REFnullMSS3 = countS3REFnullMSS3 + 1;
       		}
			else if ( valueS3MSS3 > 1 )
			{
				valueS3MSS3 = 1;
				countS3REFoneMSS3 = countS3REFoneMSS3 + 1;
			}
       		
			REFS3MSS3[i,j] = valueS3MSS3;
               valueS3MSS4 = (pi * (RADS3MSS4[i,j] - pathRadS3MSS4)) / (radsurfMSS3b4 * cos(s3zenith));
                  if ( valueS3MSS4 < 0 )
       		{
          			valueS3MSS4 = 0;
				countS3REFnullMSS4 = countS3REFnullMSS4 + 1;
       		}
			else if ( valueS3MSS4 > 1 )
			{
				valueS3MSS4 = 1;
				countS3REFoneMSS4 = countS3REFoneMSS4 + 1;
			}
       		
			REFS3MSS4[i,j] = valueS3MSS4;
           }
	  }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullMSS1, countS3REFoneMSS1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullMSS2, countS3REFoneMSS2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullMSS3, countS3REFoneMSS3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullMSS4, countS3REFoneMSS4);
CreatePyramid(REFS3MSS1);
CreatePyramid(REFS3MSS2);
CreatePyramid(REFS3MSS3);
CreatePyramid(REFS3MSS4);
        
CreateHistogram(REFS3MSS1);
CreateHistogram(REFS3MSS2);
CreateHistogram(REFS3MSS3);
CreateHistogram(REFS3MSS4);
CloseRaster(RADS3MSS1);
CloseRaster(RADS3MSS2);
CloseRaster(RADS3MSS3);
CloseRaster(RADS3MSS4);
printf("Reflectance calculation for Scene 3 (MSS) is done...\n\n\n");
}
else
{
raster REFS3MSS1, REFS3MSS2, REFS3MSS3, REFS3MSS4;
numeric radsurfMSS3b1, radsurfMSS3b2, radsurfMSS3b3, radsurfMSS3b4;
numeric valueS3MSS1, valueS3MSS2, valueS3MSS3, valueS3MSS4;
numeric dosS3MSS1nullValCount = 0;
numeric dosS3MSS2nullValCount = 0;
numeric dosS3MSS3nullValCount = 0;
numeric dosS3MSS4nullValCount = 0;
numeric dosS3MSS1realArrayCount = 1;
numeric dosS3MSS2realArrayCount = 1;
numeric dosS3MSS3realArrayCount = 1;
numeric dosS3MSS4realArrayCount = 1;
numeric countS3REFnullMSS1 = 0;
numeric countS3REFnullMSS2 = 0;
numeric countS3REFnullMSS3 = 0;
numeric countS3REFnullMSS4 = 0;
numeric countS3REFoneMSS1 = 0;
numeric countS3REFoneMSS2 = 0;
numeric countS3REFoneMSS3 = 0;
numeric countS3REFoneMSS4 = 0;
radsurfMSS3b1 = ESMSS11 / (dist3^2);
radsurfMSS3b2 = ESMSS12 / (dist3^2);
radsurfMSS3b3 = ESMSS13 / (dist3^2);
radsurfMSS3b4 = ESMSS14 / (dist3^2);
printf("Surface Radiance MSS Band 1 in W/m^2�m (Scene 3): %12f\n", radsurfMSS3b1);
printf("Surface Radiance MSS Band 2 in W/m^2�m (Scene 3): %12f\n", radsurfMSS3b2);
printf("Surface Radiance MSS Band 3 in W/m^2�m (Scene 3): %12f\n", radsurfMSS3b3);
printf("Surface Radiance MSS Band 4 in W/m^2�m (Scene 3): %12f\n\n", radsurfMSS3b4);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {       
		if (IsNull(RADS3MSS1[i,j]) == 1)
		{
		dosS3MSS1nullValCount = dosS3MSS1nullValCount + 1;
		}
		if (IsNull(RADS3MSS2[i,j]) == 1)
		{
		dosS3MSS2nullValCount = dosS3MSS2nullValCount + 1;
		}		 
		if (IsNull(RADS3MSS3[i,j]) == 1)
		{
		dosS3MSS3nullValCount = dosS3MSS3nullValCount + 1;
		}		 
		if (IsNull(RADS3MSS4[i,j]) == 1)
		{
		dosS3MSS4nullValCount = dosS3MSS4nullValCount + 1;
		}		 	 	 
    }
}
numeric dosS3MSS1realSize = (MSSlins * MSScols) - dosS3MSS1nullValCount;
numeric dosS3MSS2realSize = (MSSlins * MSScols) - dosS3MSS2nullValCount;
numeric dosS3MSS3realSize = (MSSlins * MSScols) - dosS3MSS3nullValCount;
numeric dosS3MSS4realSize = (MSSlins * MSScols) - dosS3MSS4nullValCount;
array allValuesDosS3MSS1[dosS3MSS1realSize];
array allValuesDosS3MSS2[dosS3MSS2realSize];
array allValuesDosS3MSS3[dosS3MSS3realSize];
array allValuesDosS3MSS4[dosS3MSS4realSize];
numeric DNminCALCS3MSS1 = DNminCALC(Scene3Lin, Scene3Col, dosS3MSS1realSize);
numeric DNminCALCS3MSS2 = DNminCALC(Scene3Lin, Scene3Col, dosS3MSS2realSize);
numeric DNminCALCS3MSS3 = DNminCALC(Scene3Lin, Scene3Col, dosS3MSS3realSize);
numeric DNminCALCS3MSS4 = DNminCALC(Scene3Lin, Scene3Col, dosS3MSS4realSize);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {     
		if (IsNull(RADS3MSS1[i,j]) == 0)
		{
		  allValuesDosS3MSS1[dosS3MSS1realArrayCount] = RADS3MSS1[i,j];		 
		  dosS3MSS1realArrayCount = dosS3MSS1realArrayCount + 1;
		}
		if (IsNull(RADS3MSS2[i,j]) == 0)
		{
		  allValuesDosS3MSS2[dosS3MSS2realArrayCount] = RADS3MSS2[i,j];		 
		  dosS3MSS2realArrayCount = dosS3MSS2realArrayCount + 1;
		}
		if (IsNull(RADS3MSS3[i,j]) == 0)
		{
		  allValuesDosS3MSS3[dosS3MSS3realArrayCount] = RADS3MSS3[i,j];		 
		  dosS3MSS3realArrayCount = dosS3MSS3realArrayCount + 1;
		}
		if (IsNull(RADS3MSS4[i,j]) == 0)
		{
		  allValuesDosS3MSS4[dosS3MSS4realArrayCount] = RADS3MSS4[i,j];		 
		  dosS3MSS4realArrayCount = dosS3MSS4realArrayCount + 1;
		}
    }
}
########################### Scene 1 - Dn1000 - Band 1
numeric lastDOSS3MSS1 = dosS3MSS1realSize;
numeric hDOSS3MSS1 = 1;
while ( (hDOSS3MSS1 * 3 + 1) < lastDOSS3MSS1 - 1 )
{
    hDOSS3MSS1 = 3 * hDOSS3MSS1 + 1;
}
while ( hDOSS3MSS1 > 0 )
{
    for i = hDOSS3MSS1 - 1 to lastDOSS3MSS1               # for each of the h sets of elements
    {
        numeric keyDOSS3MSS1 = allValuesDosS3MSS1[i];
        numeric jDOSS3MSS1 = i;
        while (jDOSS3MSS1 >= hDOSS3MSS1 && allValuesDosS3MSS1[jDOSS3MSS1 - hDOSS3MSS1] > keyDOSS3MSS1)
        {
            allValuesDosS3MSS1[jDOSS3MSS1] = allValuesDosS3MSS1[jDOSS3MSS1 - hDOSS3MSS1];
            jDOSS3MSS1 = jDOSS3MSS1 - hDOSS3MSS1;
        }
        allValuesDosS3MSS1[jDOSS3MSS1] = keyDOSS3MSS1;
    }
    hDOSS3MSS1 = floor(hDOSS3MSS1/3);
}
numeric minValueDosS3MSS1 = allValuesDosS3MSS1[1];
numeric dn1000S3MSS1 = 10000;
numeric actualCountDosS3MSS1 = 0;
for i = 1 to dosS3MSS1realSize 
{
    if (allValuesDosS3MSS1[i] == minValueDosS3MSS1)
    {
        actualCountDosS3MSS1 = actualCountDosS3MSS1 + 1;
        if (actualCountDosS3MSS1 >= DNminCALCS3MSS1)
        {
            dn1000S3MSS1 = minValueDosS3MSS1;
            go to dn1000S3MSS1jumper;
        }
    }
    else
    {
        minValueDosS3MSS1 = allValuesDosS3MSS1[i+1];
        actualCountDosS3MSS1 = 0;
    }
}
dn1000S3MSS1jumper:
if (dn1000S3MSS1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3MSS1 = allValuesDosS3MSS1[1];
}
if (dn1000S3MSS1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3MSS1 = allValuesDosS3MSS1[1];
}
printf("dn1000 Scene 3 MSS1: %12f\n", dn1000S3MSS1);
########################### Scene 3 - Dn1000 - Band 2
numeric lastDOSS3MSS2 = dosS3MSS1realSize;
numeric hDOSS3MSS2 = 1;
while ( (hDOSS3MSS2 * 3 + 1) < lastDOSS3MSS2 - 1 )
{
    hDOSS3MSS2 = 3 * hDOSS3MSS2 + 1;
}
while ( hDOSS3MSS2 > 0 )
{
    for i = hDOSS3MSS2 - 1 to lastDOSS3MSS2
    {
        numeric keyDOSS3MSS2 = allValuesDosS3MSS2[i];
        numeric jDOSS3MSS2 = i;
        while (jDOSS3MSS2 >= hDOSS3MSS2 && allValuesDosS3MSS2[jDOSS3MSS2 - hDOSS3MSS2] > keyDOSS3MSS2)
        {
            allValuesDosS3MSS2[jDOSS3MSS2] = allValuesDosS3MSS2[jDOSS3MSS2 - hDOSS3MSS2];
            jDOSS3MSS2 = jDOSS3MSS2 - hDOSS3MSS2;
        }
        allValuesDosS3MSS2[jDOSS3MSS2] = keyDOSS3MSS2;
    }
    hDOSS3MSS2 = floor(hDOSS3MSS2/3);
}
numeric minValueDosS3MSS2 = allValuesDosS3MSS2[1];
numeric dn1000S3MSS2 = 10000;
numeric actualCountDosS3MSS2 = 0;
for i = 1 to dosS3MSS2realSize 
{
    if (allValuesDosS3MSS2[i] == minValueDosS3MSS2)
    {
        actualCountDosS3MSS2 = actualCountDosS3MSS2 + 1;
        if (actualCountDosS3MSS2 >= DNminCALCS3MSS2)
        {
            dn1000S3MSS2 = minValueDosS3MSS2;
            go to dn1000S3MSS2jumper;
        }
    }
    else
    {
        minValueDosS3MSS2 = allValuesDosS3MSS2[i+1];
        actualCountDosS3MSS2 = 0;
    }
}
dn1000S3MSS2jumper:
if (dn1000S3MSS2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3MSS2 = allValuesDosS3MSS2[1];
}
if (dn1000S3MSS2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3MSS2 = allValuesDosS3MSS2[1];
}
printf("dn1000 Scene 3 MSS2: %12f\n", dn1000S3MSS2);
########################### Scene 1 - Dn1000 - Band 3
numeric lastDOSS3MSS3 = dosS3MSS3realSize;
numeric hDOSS3MSS3 = 1;
while ( (hDOSS3MSS3 * 3 + 1) < lastDOSS3MSS3 - 1 )
{
    hDOSS3MSS3 = 3 * hDOSS3MSS3 + 1;
}
while ( hDOSS3MSS3 > 0 )
{
    for i = hDOSS3MSS3 - 1 to lastDOSS3MSS3               # for each of the h sets of elements
    {
        numeric keyDOSS3MSS3 = allValuesDosS3MSS3[i];
        numeric jDOSS3MSS3 = i;
        while (jDOSS3MSS3 >= hDOSS3MSS3 && allValuesDosS3MSS3[jDOSS3MSS3 - hDOSS3MSS3] > keyDOSS3MSS3)
        {
            allValuesDosS3MSS3[jDOSS3MSS3] = allValuesDosS3MSS3[jDOSS3MSS3 - hDOSS3MSS3];
            jDOSS3MSS3 = jDOSS3MSS3 - hDOSS3MSS3;
        }
        allValuesDosS3MSS3[jDOSS3MSS3] = keyDOSS3MSS3;
    }
    hDOSS3MSS3 = floor(hDOSS3MSS3/3);
}
numeric minValueDosS3MSS3 = allValuesDosS3MSS3[1];
numeric dn1000S3MSS3 = 10000;
numeric actualCountDosS3MSS3 = 0;
for i = 1 to dosS3MSS3realSize 
{
    if (allValuesDosS3MSS3[i] == minValueDosS3MSS3)
    {
        actualCountDosS3MSS3 = actualCountDosS3MSS3 + 1;
        if (actualCountDosS3MSS3 >= DNminCALCS3MSS3)
        {
            dn1000S3MSS3 = minValueDosS3MSS3;
            go to dn1000S3MSS3jumper;
        }
    }
    else
    {
        minValueDosS3MSS3 = allValuesDosS3MSS3[i+1];
        actualCountDosS3MSS3 = 0;
    }
}
dn1000S3MSS3jumper:
if (dn1000S3MSS3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3MSS3 = allValuesDosS3MSS3[1];
}
if (dn1000S3MSS3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3MSS3 = allValuesDosS3MSS3[1];
}
	
printf("dn1000 Scene 3 MSS3: %12f\n", dn1000S3MSS3);
########################### Scene 3 - Dn1000 - Band 4
numeric lastDOSS3MSS4 = dosS3MSS4realSize;
numeric hDOSS3MSS4 = 1;
while ( (hDOSS3MSS4 * 3 + 1) < lastDOSS3MSS4 - 1 )
{
    hDOSS3MSS4 = 3 * hDOSS3MSS4 + 1;
}
while ( hDOSS3MSS4 > 0 )
{
    for i = hDOSS3MSS4 - 1 to lastDOSS3MSS4
    {
        numeric keyDOSS3MSS4 = allValuesDosS3MSS4[i];
        numeric jDOSS3MSS4 = i;
        while (jDOSS3MSS4 >= hDOSS3MSS4 && allValuesDosS3MSS4[jDOSS3MSS4 - hDOSS3MSS4] > keyDOSS3MSS4)
        {
            allValuesDosS3MSS4[jDOSS3MSS4] = allValuesDosS3MSS4[jDOSS3MSS4 - hDOSS3MSS4];
            jDOSS3MSS4 = jDOSS3MSS4 - hDOSS3MSS4;
        }
        allValuesDosS3MSS4[jDOSS3MSS4] = keyDOSS3MSS4;
    }
    hDOSS3MSS4 = floor(hDOSS3MSS4/3);
}
numeric minValueDosS3MSS4 = allValuesDosS3MSS4[1];
numeric dn1000S3MSS4 = 10000;
numeric actualCountDosS3MSS4 = 0;
for i = 1 to dosS3MSS4realSize 
{
    if (allValuesDosS3MSS4[i] == minValueDosS3MSS4)
    {
        actualCountDosS3MSS4 = actualCountDosS3MSS4 + 1;
        if (actualCountDosS3MSS4 >= DNminCALCS3MSS4)
        {
            dn1000S3MSS4 = minValueDosS3MSS4;
            go to dn1000S3MSS4jumper;
        }
    }
    else
    {
        minValueDosS3MSS4 = allValuesDosS3MSS4[i+1];
        actualCountDosS3MSS4 = 0;
    }
}
dn1000S3MSS4jumper:
if (dn1000S3MSS4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S3MSS4 = allValuesDosS3MSS4[1];
}
if (dn1000S3MSS4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S3MSS4 = allValuesDosS3MSS4[1];
}
	
printf("dn1000 Scene 3 MSS4: %12f\n", dn1000S3MSS4);
################################### Pathradiance Calculation #######################################
numeric pathRadS3MSS1 = dn1000S3MSS1 - (0.01 * (radsurfMSS3b1 * cos(s3zenith)) / pi);
numeric pathRadS3MSS2 = dn1000S3MSS2 - (0.01 * (radsurfMSS3b2 * cos(s3zenith)) / pi);
numeric pathRadS3MSS3 = dn1000S3MSS3 - (0.01 * (radsurfMSS3b3 * cos(s3zenith)) / pi);
numeric pathRadS3MSS4 = dn1000S3MSS4 - (0.01 * (radsurfMSS3b4 * cos(s3zenith)) / pi);
printf("Pathradiance Scene 3 Band 1: %12f\n", pathRadS3MSS1);
printf("Pathradiance Scene 3 Band 2: %12f\n", pathRadS3MSS2);
printf("Pathradiance Scene 3 Band 3: %12f\n", pathRadS3MSS3);
printf("Pathradiance Scene 3 Band 4: %12f\n\n", pathRadS3MSS4);
################################# Reflectance Calculation with athmo correction
	  for i = 1 to MSSlins
	  {
	     for j = 1 to MSScols
	     {          
               valueS3MSS1 = (pi * (RADS3MSS1[i,j] - pathRadS3MSS1)) / (radsurfMSS3b1 * cos(s3zenith));
                  if ( valueS3MSS1 < 0 )
       		{
          			valueS3MSS1 = 0;
				countS3REFnullMSS1 = countS3REFnullMSS1 + 1;
       		}
			else if ( valueS3MSS1 > 1 )
			{
				valueS3MSS1 = 1;
				countS3REFoneMSS1 = countS3REFoneMSS1 + 1;
			}
       		
			REFS3MSS1[i,j] = valueS3MSS1;
               valueS3MSS2 = (pi * (RADS3MSS2[i,j] - pathRadS3MSS2)) / (radsurfMSS3b2 * cos(s3zenith));
                  if ( valueS3MSS2 < 0 )
       		{
          			valueS3MSS2 = 0;
				countS3REFnullMSS2 = countS3REFnullMSS2 + 1;
       		}
			else if ( valueS3MSS2 > 1 )
			{
				valueS3MSS2 = 1;
				countS3REFoneMSS2 = countS3REFoneMSS2 + 1;
			}
       		
			REFS3MSS2[i,j] = valueS3MSS2;
               valueS3MSS3 = (pi * (RADS3MSS3[i,j] - pathRadS3MSS3)) / (radsurfMSS3b3 * cos(s3zenith));
                  if ( valueS3MSS3 < 0 )
       		{
          			valueS3MSS3 = 0;
				countS3REFnullMSS3 = countS3REFnullMSS3 + 1;
       		}
			else if ( valueS3MSS3 > 1 )
			{
				valueS3MSS3 = 1;
				countS3REFoneMSS3 = countS3REFoneMSS3 + 1;
			}
       		
			REFS3MSS3[i,j] = valueS3MSS3;
               valueS3MSS4 = (pi * (RADS3MSS4[i,j] - pathRadS3MSS4)) / (radsurfMSS3b4 * cos(s3zenith));
                  if ( valueS3MSS4 < 0 )
       		{
          			valueS3MSS4 = 0;
				countS3REFnullMSS4 = countS3REFnullMSS4 + 1;
       		}
			else if ( valueS3MSS4 > 1 )
			{
				valueS3MSS4 = 1;
				countS3REFoneMSS4 = countS3REFoneMSS4 + 1;
			}
       		
			REFS3MSS4[i,j] = valueS3MSS4;
           }
	  }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullMSS1, countS3REFoneMSS1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullMSS2, countS3REFoneMSS2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullMSS3, countS3REFoneMSS3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 3 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS3REFnullMSS4, countS3REFoneMSS4);
CreatePyramid(REFS3MSS1);
CreatePyramid(REFS3MSS2);
CreatePyramid(REFS3MSS3);
CreatePyramid(REFS3MSS4);
        
CreateHistogram(REFS3MSS1);
CreateHistogram(REFS3MSS2);
CreateHistogram(REFS3MSS3);
CreateHistogram(REFS3MSS4);
CloseRaster(RADS3MSS1);
CloseRaster(RADS3MSS2);
CloseRaster(RADS3MSS3);
CloseRaster(RADS3MSS4);
printf("Reflectance calculation for Scene 3 (MSS) is done...\n\n\n");
}
#############################
#### Reflectance Scene 4
#############################
if ( sensors4 == 7 )
{
raster REFS4ETM1, REFS4ETM2, REFS4ETM3, REFS4ETM4, REFS4ETM5, REFS4ETM7;
numeric radsurfETMS4b1, radsurfETMS4b2, radsurfETMS4b3, radsurfETMS4b4, radsurfETMS4b5, radsurfETMS4b7;
numeric valueS4ETM1, valueS4ETM2, valueS4ETM3, valueS4ETM4, valueS4ETM5, valueS4ETM7;
numeric dosS4ETM1nullValCount = 0;
numeric dosS4ETM2nullValCount = 0;
numeric dosS4ETM3nullValCount = 0;
numeric dosS4ETM4nullValCount = 0;
numeric dosS4ETM5nullValCount = 0;
numeric dosS4ETM7nullValCount = 0;
numeric dosS4ETM1realArrayCount = 1;
numeric dosS4ETM2realArrayCount = 1;
numeric dosS4ETM3realArrayCount = 1;
numeric dosS4ETM4realArrayCount = 1;
numeric dosS4ETM5realArrayCount = 1;
numeric dosS4ETM7realArrayCount = 1;
numeric countS4REFnullETM1 = 0;
numeric countS4REFnullETM2 = 0;
numeric countS4REFnullETM3 = 0;
numeric countS4REFnullETM4 = 0;
numeric countS4REFnullETM5 = 0;
numeric countS4REFnullETM7 = 0;
numeric countS4REFoneETM1 = 0;
numeric countS4REFoneETM2 = 0;
numeric countS4REFoneETM3 = 0;
numeric countS4REFoneETM4 = 0;
numeric countS4REFoneETM5 = 0;
numeric countS4REFoneETM7 = 0;
radsurfETMS4b1 = ESETM1 / (dist4^2);
radsurfETMS4b2 = ESETM2 / (dist4^2);
radsurfETMS4b3 = ESETM3 / (dist4^2);
radsurfETMS4b4 = ESETM4 / (dist4^2);
radsurfETMS4b5 = ESETM5 / (dist4^2);
radsurfETMS4b7 = ESETM7 / (dist4^2);
printf("Surface Radiance ETM Band 1 in W/m^2�m (Scene 4): %12f\n", radsurfETMS4b1);
printf("Surface Radiance ETM Band 2 in W/m^2�m (Scene 4): %12f\n", radsurfETMS4b2);
printf("Surface Radiance ETM Band 3 in W/m^2�m (Scene 4): %12f\n", radsurfETMS4b3);
printf("Surface Radiance ETM Band 4 in W/m^2�m (Scene 4): %12f\n", radsurfETMS4b4);
printf("Surface Radiance ETM Band 5 in W/m^2�m (Scene 4): %12f\n", radsurfETMS4b5);
printf("Surface Radiance ETM Band 7 in W/m^2�m (Scene 4): %12f\n\n", radsurfETMS4b7);
for i = 1 to ETMlins
{
    for j = 1 to ETMcols
    {       
		if (IsNull(RADS4ETM1[i,j]) == 1)
		{
		dosS4ETM1nullValCount = dosS4ETM1nullValCount + 1;
		}
		if (IsNull(RADS4ETM2[i,j]) == 1)
		{
		dosS4ETM2nullValCount = dosS4ETM2nullValCount + 1;
		}		 
		if (IsNull(RADS4ETM3[i,j]) == 1)
		{
		dosS4ETM3nullValCount = dosS4ETM3nullValCount + 1;
		}		 
		if (IsNull(RADS4ETM4[i,j]) == 1)
		{
		dosS4ETM4nullValCount = dosS4ETM4nullValCount + 1;
		}		 
		if (IsNull(RADS4ETM5[i,j]) == 1)
		{
		dosS4ETM5nullValCount = dosS4ETM5nullValCount + 1;
		}		 
		if (IsNull(RADS4ETM7[i,j]) == 1)
		{
		dosS4ETM7nullValCount = dosS4ETM7nullValCount + 1;
		}		 	 
    }
}
numeric dosS4ETM1realSize = (ETMlins * ETMcols) - dosS4ETM1nullValCount;
numeric dosS4ETM2realSize = (ETMlins * ETMcols) - dosS4ETM2nullValCount;
numeric dosS4ETM3realSize = (ETMlins * ETMcols) - dosS4ETM3nullValCount;
numeric dosS4ETM4realSize = (ETMlins * ETMcols) - dosS4ETM4nullValCount;
numeric dosS4ETM5realSize = (ETMlins * ETMcols) - dosS4ETM5nullValCount;
numeric dosS4ETM7realSize = (ETMlins * ETMcols) - dosS4ETM7nullValCount;
array allValuesDosS4ETM1[dosS4ETM1realSize];
array allValuesDosS4ETM2[dosS4ETM2realSize];
array allValuesDosS4ETM3[dosS4ETM3realSize];
array allValuesDosS4ETM4[dosS4ETM4realSize];
array allValuesDosS4ETM5[dosS4ETM5realSize];
array allValuesDosS4ETM7[dosS4ETM7realSize];
numeric DNminCALCS4ETM1 = DNminCALC(Scene4Lin, Scene4Col, dosS4ETM1realSize);
numeric DNminCALCS4ETM2 = DNminCALC(Scene4Lin, Scene4Col, dosS4ETM2realSize);
numeric DNminCALCS4ETM3 = DNminCALC(Scene4Lin, Scene4Col, dosS4ETM3realSize);
numeric DNminCALCS4ETM4 = DNminCALC(Scene4Lin, Scene4Col, dosS4ETM4realSize);
numeric DNminCALCS4ETM5 = DNminCALC(Scene4Lin, Scene4Col, dosS4ETM5realSize);
numeric DNminCALCS4ETM7 = DNminCALC(Scene4Lin, Scene4Col, dosS4ETM7realSize);
for i = 1 to ETMlins
{
    for j = 1 to ETMcols
    {     
		if (IsNull(RADS4ETM1[i,j]) == 0)
		{
		  allValuesDosS4ETM1[dosS4ETM1realArrayCount] = RADS4ETM1[i,j];		 
		  dosS4ETM1realArrayCount = dosS4ETM1realArrayCount + 1;
		}
		if (IsNull(RADS4ETM2[i,j]) == 0)
		{
		  allValuesDosS4ETM2[dosS4ETM2realArrayCount] = RADS4ETM2[i,j];		 
		  dosS4ETM2realArrayCount = dosS4ETM2realArrayCount + 1;
		}
		if (IsNull(RADS4ETM3[i,j]) == 0)
		{
		  allValuesDosS4ETM3[dosS4ETM3realArrayCount] = RADS4ETM3[i,j];		 
		  dosS4ETM3realArrayCount = dosS4ETM3realArrayCount + 1;
		}
		if (IsNull(RADS4ETM4[i,j]) == 0)
		{
		  allValuesDosS4ETM4[dosS4ETM4realArrayCount] = RADS4ETM4[i,j];		 
		  dosS4ETM4realArrayCount = dosS4ETM4realArrayCount + 1;
		}
		if (IsNull(RADS4ETM5[i,j]) == 0)
		{
		  allValuesDosS4ETM5[dosS4ETM5realArrayCount] = RADS4ETM5[i,j];		 
		  dosS4ETM5realArrayCount = dosS4ETM5realArrayCount + 1;
		}
		if (IsNull(RADS4ETM7[i,j]) == 0)
		{
		  allValuesDosS4ETM7[dosS4ETM7realArrayCount] = RADS4ETM7[i,j];		 
		  dosS4ETM7realArrayCount = dosS4ETM7realArrayCount + 1;
		}
    }
}
########################### Scene 4 - Dn1000 - Band 1
numeric lastDOSS4ETM1 = dosS4ETM1realSize;
numeric hDOSS4ETM1 = 1;
while ( (hDOSS4ETM1 * 3 + 1) < lastDOSS4ETM1 - 1 )
{
    hDOSS4ETM1 = 3 * hDOSS4ETM1 + 1;
}
while ( hDOSS4ETM1 > 0 )
{
    for i = hDOSS4ETM1 - 1 to lastDOSS4ETM1               # for each of the h sets of elements
    {
        numeric keyDOSS4ETM1 = allValuesDosS4ETM1[i];
        numeric jDOSS4ETM1 = i;
        while (jDOSS4ETM1 >= hDOSS4ETM1 && allValuesDosS4ETM1[jDOSS4ETM1 - hDOSS4ETM1] > keyDOSS4ETM1)
        {
            allValuesDosS4ETM1[jDOSS4ETM1] = allValuesDosS4ETM1[jDOSS4ETM1 - hDOSS4ETM1];
            jDOSS4ETM1 = jDOSS4ETM1 - hDOSS4ETM1;
        }
        allValuesDosS4ETM1[jDOSS4ETM1] = keyDOSS4ETM1;
    }
    hDOSS4ETM1 = floor(hDOSS4ETM1/3);
}
numeric minValueDosS4ETM1 = allValuesDosS4ETM1[1];
numeric dn1000S4ETM1 = 10000;
numeric actualCountDosS4ETM1 = 0;
for i = 1 to dosS4ETM1realSize 
{
    if (allValuesDosS4ETM1[i] == minValueDosS4ETM1)
    {
        actualCountDosS4ETM1 = actualCountDosS4ETM1 + 1;
        if (actualCountDosS4ETM1 >= DNminCALCS4ETM1)
        {
            dn1000S4ETM1 = minValueDosS4ETM1;
            go to dn1000S4ETM1jumper;
        }
    }
    else
    {
        minValueDosS4ETM1 = allValuesDosS4ETM1[i+1];
        actualCountDosS4ETM1 = 0;
    }
}
dn1000S4ETM1jumper:
if (dn1000S4ETM1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4ETM1 = allValuesDosS4ETM1[1];
}
if (dn1000S4ETM1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4ETM1 = allValuesDosS4ETM1[1];
}
printf("dn1000 Scene 4 ETM1: %12f\n", dn1000S4ETM1);
########################### Scene 4 - Dn1000 - Band 2
numeric lastDOSS4ETM2 = dosS4ETM1realSize;
numeric hDOSS4ETM2 = 1;
while ( (hDOSS4ETM2 * 3 + 1) < lastDOSS4ETM2 - 1 )
{
    hDOSS4ETM2 = 3 * hDOSS4ETM2 + 1;
}
while ( hDOSS4ETM2 > 0 )
{
    for i = hDOSS4ETM2 - 1 to lastDOSS4ETM2
    {
        numeric keyDOSS4ETM2 = allValuesDosS4ETM2[i];
        numeric jDOSS4ETM2 = i;
        while (jDOSS4ETM2 >= hDOSS4ETM2 && allValuesDosS4ETM2[jDOSS4ETM2 - hDOSS4ETM2] > keyDOSS4ETM2)
        {
            allValuesDosS4ETM2[jDOSS4ETM2] = allValuesDosS4ETM2[jDOSS4ETM2 - hDOSS4ETM2];
            jDOSS4ETM2 = jDOSS4ETM2 - hDOSS4ETM2;
        }
        allValuesDosS4ETM2[jDOSS4ETM2] = keyDOSS4ETM2;
    }
    hDOSS4ETM2 = floor(hDOSS4ETM2/3);
}
numeric minValueDosS4ETM2 = allValuesDosS4ETM2[1];
numeric dn1000S4ETM2 = 10000;
numeric actualCountDosS4ETM2 = 0;
for i = 1 to dosS4ETM2realSize 
{
    if (allValuesDosS4ETM2[i] == minValueDosS4ETM2)
    {
        actualCountDosS4ETM2 = actualCountDosS4ETM2 + 1;
        if (actualCountDosS4ETM2 >= DNminCALCS4ETM2)
        {
            dn1000S4ETM2 = minValueDosS4ETM2;
            go to dn1000S4ETM2jumper;
        }
    }
    else
    {
        minValueDosS4ETM2 = allValuesDosS4ETM2[i+1];
        actualCountDosS4ETM2 = 0;
    }
}
dn1000S4ETM2jumper:
if (dn1000S4ETM2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4ETM2 = allValuesDosS4ETM2[1];
}
if (dn1000S4ETM2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4ETM2 = allValuesDosS4ETM2[1];
}
printf("dn1000 Scene 4 ETM2: %12f\n", dn1000S4ETM2);
########################### Scene 4 - Dn1000 - Band 3
numeric lastDOSS4ETM3 = dosS4ETM3realSize;
numeric hDOSS4ETM3 = 1;
while ( (hDOSS4ETM3 * 3 + 1) < lastDOSS4ETM3 - 1 )
{
    hDOSS4ETM3 = 3 * hDOSS4ETM3 + 1;
}
while ( hDOSS4ETM3 > 0 )
{
    for i = hDOSS4ETM3 - 1 to lastDOSS4ETM3               # for each of the h sets of elements
    {
        numeric keyDOSS4ETM3 = allValuesDosS4ETM3[i];
        numeric jDOSS4ETM3 = i;
        while (jDOSS4ETM3 >= hDOSS4ETM3 && allValuesDosS4ETM3[jDOSS4ETM3 - hDOSS4ETM3] > keyDOSS4ETM3)
        {
            allValuesDosS4ETM3[jDOSS4ETM3] = allValuesDosS4ETM3[jDOSS4ETM3 - hDOSS4ETM3];
            jDOSS4ETM3 = jDOSS4ETM3 - hDOSS4ETM3;
        }
        allValuesDosS4ETM3[jDOSS4ETM3] = keyDOSS4ETM3;
    }
    hDOSS4ETM3 = floor(hDOSS4ETM3/3);
}
numeric minValueDosS4ETM3 = allValuesDosS4ETM3[1];
numeric dn1000S4ETM3 = 10000;
numeric actualCountDosS4ETM3 = 0;
for i = 1 to dosS4ETM3realSize 
{
    if (allValuesDosS4ETM3[i] == minValueDosS4ETM3)
    {
        actualCountDosS4ETM3 = actualCountDosS4ETM3 + 1;
        if (actualCountDosS4ETM3 >= DNminCALCS4ETM3)
        {
            dn1000S4ETM3 = minValueDosS4ETM3;
            go to dn1000S4ETM3jumper;
        }
    }
    else
    {
        minValueDosS4ETM3 = allValuesDosS4ETM3[i+1];
        actualCountDosS4ETM3 = 0;
    }
}
dn1000S4ETM3jumper:
if (dn1000S4ETM3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4ETM3 = allValuesDosS4ETM3[1];
}
if (dn1000S4ETM3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4ETM3 = allValuesDosS4ETM3[1];
}
	
printf("dn1000 Scene 4 ETM3: %12f\n", dn1000S4ETM3);
########################### Scene 4 - Dn1000 - Band 4
numeric lastDOSS4ETM4 = dosS4ETM4realSize;
numeric hDOSS4ETM4 = 1;
while ( (hDOSS4ETM4 * 3 + 1) < lastDOSS4ETM4 - 1 )
{
    hDOSS4ETM4 = 3 * hDOSS4ETM4 + 1;
}
while ( hDOSS4ETM4 > 0 )
{
    for i = hDOSS4ETM4 - 1 to lastDOSS4ETM4
    {
        numeric keyDOSS4ETM4 = allValuesDosS4ETM4[i];
        numeric jDOSS4ETM4 = i;
        while (jDOSS4ETM4 >= hDOSS4ETM4 && allValuesDosS4ETM4[jDOSS4ETM4 - hDOSS4ETM4] > keyDOSS4ETM4)
        {
            allValuesDosS4ETM4[jDOSS4ETM4] = allValuesDosS4ETM4[jDOSS4ETM4 - hDOSS4ETM4];
            jDOSS4ETM4 = jDOSS4ETM4 - hDOSS4ETM4;
        }
        allValuesDosS4ETM4[jDOSS4ETM4] = keyDOSS4ETM4;
    }
    hDOSS4ETM4 = floor(hDOSS4ETM4/3);
}
numeric minValueDosS4ETM4 = allValuesDosS4ETM4[1];
numeric dn1000S4ETM4 = 10000;
numeric actualCountDosS4ETM4 = 0;
for i = 1 to dosS4ETM4realSize 
{
    if (allValuesDosS4ETM4[i] == minValueDosS4ETM4)
    {
        actualCountDosS4ETM4 = actualCountDosS4ETM4 + 1;
        if (actualCountDosS4ETM4 >= DNminCALCS4ETM4)
        {
            dn1000S4ETM4 = minValueDosS4ETM4;
            go to dn1000S4ETM4jumper;
        }
    }
    else
    {
        minValueDosS4ETM4 = allValuesDosS4ETM4[i+1];
        actualCountDosS4ETM4 = 0;
    }
}
dn1000S4ETM4jumper:
if (dn1000S4ETM4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4ETM4 = allValuesDosS4ETM4[1];
}
if (dn1000S4ETM4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4ETM4 = allValuesDosS4ETM4[1];
}
printf("dn1000 Scene 4 ETM4: %12f\n", dn1000S4ETM4);
########################### Scene 4 - Dn1000 - Band 5
numeric lastDOSS4ETM5 = dosS4ETM5realSize;
numeric hDOSS4ETM5 = 1;
while ( (hDOSS4ETM5 * 3 + 1) < lastDOSS4ETM5 - 1 )
{
    hDOSS4ETM5 = 3 * hDOSS4ETM5 + 1;
}
while ( hDOSS4ETM5 > 0 )
{
    for i = hDOSS4ETM5 - 1 to lastDOSS4ETM5               # for each of the h sets of elements
    {
        numeric keyDOSS4ETM5 = allValuesDosS4ETM5[i];
        numeric jDOSS4ETM5 = i;
        while (jDOSS4ETM5 >= hDOSS4ETM5 && allValuesDosS4ETM5[jDOSS4ETM5 - hDOSS4ETM5] > keyDOSS4ETM5)
        {
            allValuesDosS4ETM5[jDOSS4ETM5] = allValuesDosS4ETM5[jDOSS4ETM5 - hDOSS4ETM5];
            jDOSS4ETM5 = jDOSS4ETM5 - hDOSS4ETM5;
        }
        allValuesDosS4ETM5[jDOSS4ETM5] = keyDOSS4ETM5;
    }
    hDOSS4ETM5 = floor(hDOSS4ETM5/3);
}
numeric minValueDosS4ETM5 = allValuesDosS4ETM5[1];
numeric dn1000S4ETM5 = 10000;
numeric actualCountDosS4ETM5 = 0;
for i = 1 to dosS4ETM5realSize 
{
    if (allValuesDosS4ETM5[i] == minValueDosS4ETM5)
    {
        actualCountDosS4ETM5 = actualCountDosS4ETM5 + 1;
        if (actualCountDosS4ETM5 >= DNminCALCS4ETM5)
        {
            dn1000S4ETM5 = minValueDosS4ETM5;
            go to dn1000S4ETM5jumper;
        }
    }
    else
    {
        minValueDosS4ETM5 = allValuesDosS4ETM5[i+1];
        actualCountDosS4ETM5 = 0;
    }
}
dn1000S4ETM5jumper:
if (dn1000S4ETM5 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4ETM5 = allValuesDosS4ETM5[1];
}
if (dn1000S4ETM5 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4ETM5 = allValuesDosS4ETM5[1];
}
	
printf("dn1000 Scene 4 ETM5: %12f\n", dn1000S4ETM5);
########################### Scene 4 - Dn1000 - Band 7
numeric lastDOSS4ETM7 = dosS4ETM7realSize;
numeric hDOSS4ETM7 = 1;
while ( (hDOSS4ETM7 * 3 + 1) < lastDOSS4ETM7 - 1 )
{
    hDOSS4ETM7 = 3 * hDOSS4ETM7 + 1;
}
while ( hDOSS4ETM7 > 0 )
{
    for i = hDOSS4ETM7 - 1 to lastDOSS4ETM7               # for each of the h sets of elements
    {
        numeric keyDOSS4ETM7 = allValuesDosS4ETM7[i];
        numeric jDOSS4ETM7 = i;
        while (jDOSS4ETM7 >= hDOSS4ETM7 && allValuesDosS4ETM7[jDOSS4ETM7 - hDOSS4ETM7] > keyDOSS4ETM7)
        {
            allValuesDosS4ETM7[jDOSS4ETM7] = allValuesDosS4ETM7[jDOSS4ETM7 - hDOSS4ETM7];
            jDOSS4ETM7 = jDOSS4ETM7 - hDOSS4ETM7;
        }
        allValuesDosS4ETM7[jDOSS4ETM7] = keyDOSS4ETM7;
    }
    hDOSS4ETM7 = floor(hDOSS4ETM7/3);
}
numeric minValueDosS4ETM7 = allValuesDosS4ETM7[1];
numeric dn1000S4ETM7 = 10000;
numeric actualCountDosS4ETM7 = 0;
for i = 1 to dosS4ETM7realSize 
{
    if (allValuesDosS4ETM7[i] == minValueDosS4ETM7)
    {
        actualCountDosS4ETM7 = actualCountDosS4ETM7 + 1;
        if (actualCountDosS4ETM7 >= DNminCALCS4ETM7)
        {
            dn1000S4ETM7 = minValueDosS4ETM7;
            go to dn1000S4ETM7jumper;
        }
    }
    else
    {
        minValueDosS4ETM7 = allValuesDosS4ETM7[i+1];
        actualCountDosS4ETM7 = 0;
    }
}
dn1000S4ETM7jumper:
if (dn1000S4ETM7  < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4ETM7  = allValuesDosS4ETM7[1];
}
if (dn1000S4ETM7  == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4ETM7  = allValuesDosS4ETM7[1];
}
	
printf("dn1000 Scene 4 ETM7: %12f\n\n", dn1000S4ETM7);
################################### Pathradiance Calculation #######################################
numeric pathRadS4ETM1 = dn1000S4ETM1 - (0.01 * (radsurfETMS4b1 * cos(s4zenith)) / pi);
numeric pathRadS4ETM2 = dn1000S4ETM2 - (0.01 * (radsurfETMS4b2 * cos(s4zenith)) / pi);
numeric pathRadS4ETM3 = dn1000S4ETM3 - (0.01 * (radsurfETMS4b3 * cos(s4zenith)) / pi);
numeric pathRadS4ETM4 = dn1000S4ETM4 - (0.01 * (radsurfETMS4b4 * cos(s4zenith)) / pi);
numeric pathRadS4ETM5 = dn1000S4ETM5 - (0.01 * (radsurfETMS4b5 * cos(s4zenith)) / pi);
numeric pathRadS4ETM7 = dn1000S4ETM7 - (0.01 * (radsurfETMS4b7 * cos(s4zenith)) / pi);
printf("Pathradiance Scene 4 Band 1: %12f\n", pathRadS4ETM1);
printf("Pathradiance Scene 4 Band 2: %12f\n", pathRadS4ETM2);
printf("Pathradiance Scene 4 Band 3: %12f\n", pathRadS4ETM3);
printf("Pathradiance Scene 4 Band 4: %12f\n", pathRadS4ETM4);
printf("Pathradiance Scene 4 Band 5: %12f\n", pathRadS4ETM5);
printf("Pathradiance Scene 4 Band 7: %12f\n\n", pathRadS4ETM7);
################################# Reflectance Calculation with athmo correction
	 for i = 1 to ETMlins
	 {
	        for j = 1 to ETMcols
	        {
                  valueS4ETM1 = (pi * (RADS4ETM1[i,j] - pathRadS4ETM1)) / (radsurfETMS4b1 * cos(s4zenith));
                  if ( valueS4ETM1 < 0 )
       		{
          			valueS4ETM1 = 0;
				countS4REFnullETM1 = countS4REFnullETM1 + 1;
       		}
			else if ( valueS4ETM1 > 1 )
			{
				valueS4ETM1 = 1;
				countS4REFoneETM1 = countS4REFoneETM1 + 1;
			}
       		
			REFS4ETM1[i,j] = valueS4ETM1;
               valueS4ETM2 = (pi * (RADS4ETM2[i,j] - pathRadS4ETM2)) / (radsurfETMS4b2 * cos(s4zenith));
                  if ( valueS4ETM2 < 0 )
       		{
          			valueS4ETM2 = 0;
				countS4REFnullETM2 = countS4REFnullETM2 + 1;
       		}
			else if ( valueS4ETM2 > 1 )
			{
				valueS4ETM2 = 1;
				countS4REFoneETM2 = countS4REFoneETM2 + 1;
			}
       		
			REFS4ETM2[i,j] = valueS4ETM2;
               valueS4ETM3 = (pi * (RADS4ETM3[i,j] - pathRadS4ETM3)) / (radsurfETMS4b3 * cos(s4zenith));
                  if ( valueS4ETM3 < 0 )
       		{
          			valueS4ETM3 = 0;
				countS4REFnullETM3 = countS4REFnullETM3 + 1;
       		}
			else if ( valueS4ETM3 > 1 )
			{
				valueS4ETM3 = 1;
				countS4REFoneETM3 = countS4REFoneETM3 + 1;
			}
       		
			REFS4ETM3[i,j] = valueS4ETM3;
               valueS4ETM4 = (pi * (RADS4ETM4[i,j] - pathRadS4ETM4)) / (radsurfETMS4b4 * cos(s4zenith));
                  if ( valueS4ETM4 < 0 )
       		{
          			valueS4ETM4 = 0;
				countS4REFnullETM4 = countS4REFnullETM4 + 1;
       		}
			else if ( valueS4ETM4 > 1 )
			{
				valueS4ETM4 = 1;
				countS4REFoneETM4 = countS4REFoneETM4 + 1;
			}
       		
			REFS4ETM4[i,j] = valueS4ETM4;
               valueS4ETM5 = (pi * (RADS4ETM5[i,j] - pathRadS4ETM5)) / (radsurfETMS4b5 * cos(s4zenith));
                  if ( valueS4ETM5 < 0 )
       		{
          			valueS4ETM5 = 0;
				countS4REFnullETM5 = countS4REFnullETM5 + 1;
       		}
			else if ( valueS4ETM5 > 1 )
			{
				valueS4ETM5 = 1;
				countS4REFoneETM5 = countS4REFoneETM5 + 1;
			}
       		
			REFS4ETM5[i,j] = valueS4ETM5;
               valueS4ETM7 = (pi * (RADS4ETM7[i,j] - pathRadS4ETM7)) / (radsurfETMS4b7 * cos(s4zenith));
                  if ( valueS4ETM7 < 0 )
       		{
          			valueS4ETM7 = 0;
				countS4REFnullETM7 = countS4REFnullETM7 + 1;
       		}
			else if ( valueS4ETM7 > 1 )
			{
				valueS4ETM7 = 1;
				countS4REFoneETM7 = countS4REFoneETM7 + 1;
			}
       		
			REFS4ETM7[i,j] = valueS4ETM7;
	        }
	 }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullETM1, countS4REFoneETM1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullETM2, countS4REFoneETM2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullETM3, countS4REFoneETM3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullETM4, countS4REFoneETM4);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 5: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullETM5, countS4REFoneETM5);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 7: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n\n", countS4REFnullETM7, countS4REFoneETM7);
CreatePyramid(REFS4ETM1);
CreatePyramid(REFS4ETM2);
CreatePyramid(REFS4ETM3);
CreatePyramid(REFS4ETM4);
CreatePyramid(REFS4ETM5);
CreatePyramid(REFS4ETM7);
        
CreateHistogram(REFS4ETM1);
CreateHistogram(REFS4ETM2);
CreateHistogram(REFS4ETM3);
CreateHistogram(REFS4ETM4);
CreateHistogram(REFS4ETM5);
CreateHistogram(REFS4ETM7);
CloseRaster(RADS4ETM1);
CloseRaster(RADS4ETM2);
CloseRaster(RADS4ETM3);
CloseRaster(RADS4ETM4);
CloseRaster(RADS4ETM5);
CloseRaster(RADS4ETM7);
printf("Reflectance calculation for Scene 4 (ETM) is done...\n\n\n");
}
else if ( sensors4 == 6 )
{
raster REFS4TM1, REFS4TM2, REFS4TM3, REFS4TM4, REFS4TM5, REFS4TM7;
numeric radsurfTMS4b1, radsurfTMS4b2, radsurfTMS4b3, radsurfTMS4b4, radsurfTMS4b5, radsurfTMS4b7;
numeric valueS4TM1, valueS4TM2, valueS4TM3, valueS4TM4, valueS4TM5, valueS4TM7;
numeric dosS4TM1nullValCount = 0;
numeric dosS4TM2nullValCount = 0;
numeric dosS4TM3nullValCount = 0;
numeric dosS4TM4nullValCount = 0;
numeric dosS4TM5nullValCount = 0;
numeric dosS4TM7nullValCount = 0;
numeric dosS4TM1realArrayCount = 1;
numeric dosS4TM2realArrayCount = 1;
numeric dosS4TM3realArrayCount = 1;
numeric dosS4TM4realArrayCount = 1;
numeric dosS4TM5realArrayCount = 1;
numeric dosS4TM7realArrayCount = 1;
numeric countS4REFnullTM1 = 0;
numeric countS4REFnullTM2 = 0;
numeric countS4REFnullTM3 = 0;
numeric countS4REFnullTM4 = 0;
numeric countS4REFnullTM5 = 0;
numeric countS4REFnullTM7 = 0;
numeric countS4REFoneTM1 = 0;
numeric countS4REFoneTM2 = 0;
numeric countS4REFoneTM3 = 0;
numeric countS4REFoneTM4 = 0;
numeric countS4REFoneTM5 = 0;
numeric countS4REFoneTM7 = 0;
radsurfTMS4b1 = ESTM1 / (dist4^2);
radsurfTMS4b2 = ESTM2 / (dist4^2);
radsurfTMS4b3 = ESTM3 / (dist4^2);
radsurfTMS4b4 = ESTM4 / (dist4^2);
radsurfTMS4b5 = ESTM5 / (dist4^2);
radsurfTMS4b7 = ESTM7 / (dist4^2);
printf("Surface Radiance TM Band 1 in W/m^2�m (Scene 4): %12f\n", radsurfTMS4b1);
printf("Surface Radiance TM Band 2 in W/m^2�m (Scene 4): %12f\n", radsurfTMS4b2);
printf("Surface Radiance TM Band 3 in W/m^2�m (Scene 4): %12f\n", radsurfTMS4b3);
printf("Surface Radiance TM Band 4 in W/m^2�m (Scene 4): %12f\n", radsurfTMS4b4);
printf("Surface Radiance TM Band 5 in W/m^2�m (Scene 4): %12f\n", radsurfTMS4b5);
printf("Surface Radiance TM Band 7 in W/m^2�m (Scene 4): %12f\n\n", radsurfTMS4b7);
for i = 1 to TMlins
{
    for j = 1 to TMcols
    {       
		if (IsNull(RADS4TM1[i,j]) == 1)
		{
		dosS4TM1nullValCount = dosS4TM1nullValCount + 1;
		}
		if (IsNull(RADS4TM2[i,j]) == 1)
		{
		dosS4TM2nullValCount = dosS4TM2nullValCount + 1;
		}		 
		if (IsNull(RADS4TM3[i,j]) == 1)
		{
		dosS4TM3nullValCount = dosS4TM3nullValCount + 1;
		}		 
		if (IsNull(RADS4TM4[i,j]) == 1)
		{
		dosS4TM4nullValCount = dosS4TM4nullValCount + 1;
		}		 
		if (IsNull(RADS4TM5[i,j]) == 1)
		{
		dosS4TM5nullValCount = dosS4TM5nullValCount + 1;
		}		 
		if (IsNull(RADS4TM7[i,j]) == 1)
		{
		dosS4TM7nullValCount = dosS4TM7nullValCount + 1;
		}		 	 
    }
}
numeric dosS4TM1realSize = (TMlins * TMcols) - dosS4TM1nullValCount;
numeric dosS4TM2realSize = (TMlins * TMcols) - dosS4TM2nullValCount;
numeric dosS4TM3realSize = (TMlins * TMcols) - dosS4TM3nullValCount;
numeric dosS4TM4realSize = (TMlins * TMcols) - dosS4TM4nullValCount;
numeric dosS4TM5realSize = (TMlins * TMcols) - dosS4TM5nullValCount;
numeric dosS4TM7realSize = (TMlins * TMcols) - dosS4TM7nullValCount;
array allValuesDosS4TM1[dosS4TM1realSize];
array allValuesDosS4TM2[dosS4TM2realSize];
array allValuesDosS4TM3[dosS4TM3realSize];
array allValuesDosS4TM4[dosS4TM4realSize];
array allValuesDosS4TM5[dosS4TM5realSize];
array allValuesDosS4TM7[dosS4TM7realSize];
numeric DNminCALCS4TM1 = DNminCALC(Scene4Lin, Scene4Col, dosS4TM1realSize);
numeric DNminCALCS4TM2 = DNminCALC(Scene4Lin, Scene4Col, dosS4TM2realSize);
numeric DNminCALCS4TM3 = DNminCALC(Scene4Lin, Scene4Col, dosS4TM3realSize);
numeric DNminCALCS4TM4 = DNminCALC(Scene4Lin, Scene4Col, dosS4TM4realSize);
numeric DNminCALCS4TM5 = DNminCALC(Scene4Lin, Scene4Col, dosS4TM5realSize);
numeric DNminCALCS4TM7 = DNminCALC(Scene4Lin, Scene4Col, dosS4TM7realSize);
for i = 1 to TMlins
{
    for j = 1 to TMcols
    {     
		if (IsNull(RADS4TM1[i,j]) == 0)
		{
		  allValuesDosS4TM1[dosS4TM1realArrayCount] = RADS4TM1[i,j];		 
		  dosS4TM1realArrayCount = dosS4TM1realArrayCount + 1;
		}
		if (IsNull(RADS4TM2[i,j]) == 0)
		{
		  allValuesDosS4TM2[dosS4TM2realArrayCount] = RADS4TM2[i,j];		 
		  dosS4TM2realArrayCount = dosS4TM2realArrayCount + 1;
		}
		if (IsNull(RADS4TM3[i,j]) == 0)
		{
		  allValuesDosS4TM3[dosS4TM3realArrayCount] = RADS4TM3[i,j];		 
		  dosS4TM3realArrayCount = dosS4TM3realArrayCount + 1;
		}
		if (IsNull(RADS4TM4[i,j]) == 0)
		{
		  allValuesDosS4TM4[dosS4TM4realArrayCount] = RADS4TM4[i,j];		 
		  dosS4TM4realArrayCount = dosS4TM4realArrayCount + 1;
		}
		if (IsNull(RADS4TM5[i,j]) == 0)
		{
		  allValuesDosS4TM5[dosS4TM5realArrayCount] = RADS4TM5[i,j];		 
		  dosS4TM5realArrayCount = dosS4TM5realArrayCount + 1;
		}
		if (IsNull(RADS4TM7[i,j]) == 0)
		{
		  allValuesDosS4TM7[dosS4TM7realArrayCount] = RADS4TM7[i,j];		 
		  dosS4TM7realArrayCount = dosS4TM7realArrayCount + 1;
		}
    }
}
########################### Scene 4 - Dn1000 - Band 1
numeric lastDOSS4TM1 = dosS4TM1realSize;
numeric hDOSS4TM1 = 1;
while ( (hDOSS4TM1 * 3 + 1) < lastDOSS4TM1 - 1 )
{
    hDOSS4TM1 = 3 * hDOSS4TM1 + 1;
}
while ( hDOSS4TM1 > 0 )
{
    for i = hDOSS4TM1 - 1 to lastDOSS4TM1               # for each of the h sets of elements
    {
        numeric keyDOSS4TM1 = allValuesDosS4TM1[i];
        numeric jDOSS4TM1 = i;
        while (jDOSS4TM1 >= hDOSS4TM1 && allValuesDosS4TM1[jDOSS4TM1 - hDOSS4TM1] > keyDOSS4TM1)
        {
            allValuesDosS4TM1[jDOSS4TM1] = allValuesDosS4TM1[jDOSS4TM1 - hDOSS4TM1];
            jDOSS4TM1 = jDOSS4TM1 - hDOSS4TM1;
        }
        allValuesDosS4TM1[jDOSS4TM1] = keyDOSS4TM1;
    }
    hDOSS4TM1 = floor(hDOSS4TM1/3);
}
numeric minValueDosS4TM1 = allValuesDosS4TM1[1];
numeric dn1000S4TM1 = 10000;
numeric actualCountDosS4TM1 = 0;
for i = 1 to dosS4TM1realSize 
{
    if (allValuesDosS4TM1[i] == minValueDosS4TM1)
    {
        actualCountDosS4TM1 = actualCountDosS4TM1 + 1;
        if (actualCountDosS4TM1 >= DNminCALCS4TM1)
        {
            dn1000S4TM1 = minValueDosS4TM1;
            go to dn1000S4TM1jumper;
        }
    }
    else
    {
        minValueDosS4TM1 = allValuesDosS4TM1[i+1];
        actualCountDosS4TM1 = 0;
    }
}
dn1000S4TM1jumper:
if (dn1000S4TM1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4TM1 = allValuesDosS4TM1[1];
}
if (dn1000S4TM1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4TM1 = allValuesDosS4TM1[1];
}
printf("dn1000 Scene 4 TM1: %12f\n", dn1000S4TM1);
########################### Scene 4 - Dn1000 - Band 2
numeric lastDOSS4TM2 = dosS4TM1realSize;
numeric hDOSS4TM2 = 1;
while ( (hDOSS4TM2 * 3 + 1) < lastDOSS4TM2 - 1 )
{
    hDOSS4TM2 = 3 * hDOSS4TM2 + 1;
}
while ( hDOSS4TM2 > 0 )
{
    for i = hDOSS4TM2 - 1 to lastDOSS4TM2
    {
        numeric keyDOSS4TM2 = allValuesDosS4TM2[i];
        numeric jDOSS4TM2 = i;
        while (jDOSS4TM2 >= hDOSS4TM2 && allValuesDosS4TM2[jDOSS4TM2 - hDOSS4TM2] > keyDOSS4TM2)
        {
            allValuesDosS4TM2[jDOSS4TM2] = allValuesDosS4TM2[jDOSS4TM2 - hDOSS4TM2];
            jDOSS4TM2 = jDOSS4TM2 - hDOSS4TM2;
        }
        allValuesDosS4TM2[jDOSS4TM2] = keyDOSS4TM2;
    }
    hDOSS4TM2 = floor(hDOSS4TM2/3);
}
numeric minValueDosS4TM2 = allValuesDosS4TM2[1];
numeric dn1000S4TM2 = 10000;
numeric actualCountDosS4TM2 = 0;
for i = 1 to dosS4TM2realSize 
{
    if (allValuesDosS4TM2[i] == minValueDosS4TM2)
    {
        actualCountDosS4TM2 = actualCountDosS4TM2 + 1;
        if (actualCountDosS4TM2 >= DNminCALCS4TM2)
        {
            dn1000S4TM2 = minValueDosS4TM2;
            go to dn1000S4TM2jumper;
        }
    }
    else
    {
        minValueDosS4TM2 = allValuesDosS4TM2[i+1];
        actualCountDosS4TM2 = 0;
    }
}
dn1000S4TM2jumper:
if (dn1000S4TM2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4TM2 = allValuesDosS4TM2[1];
}
if (dn1000S4TM2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4TM2 = allValuesDosS4TM2[1];
}
printf("dn1000 Scene 4 TM2: %12f\n", dn1000S4TM2);
########################### Scene 4 - Dn1000 - Band 3
numeric lastDOSS4TM3 = dosS4TM3realSize;
numeric hDOSS4TM3 = 1;
while ( (hDOSS4TM3 * 3 + 1) < lastDOSS4TM3 - 1 )
{
    hDOSS4TM3 = 3 * hDOSS4TM3 + 1;
}
while ( hDOSS4TM3 > 0 )
{
    for i = hDOSS4TM3 - 1 to lastDOSS4TM3               # for each of the h sets of elements
    {
        numeric keyDOSS4TM3 = allValuesDosS4TM3[i];
        numeric jDOSS4TM3 = i;
        while (jDOSS4TM3 >= hDOSS4TM3 && allValuesDosS4TM3[jDOSS4TM3 - hDOSS4TM3] > keyDOSS4TM3)
        {
            allValuesDosS4TM3[jDOSS4TM3] = allValuesDosS4TM3[jDOSS4TM3 - hDOSS4TM3];
            jDOSS4TM3 = jDOSS4TM3 - hDOSS4TM3;
        }
        allValuesDosS4TM3[jDOSS4TM3] = keyDOSS4TM3;
    }
    hDOSS4TM3 = floor(hDOSS4TM3/3);
}
numeric minValueDosS4TM3 = allValuesDosS4TM3[1];
numeric dn1000S4TM3 = 10000;
numeric actualCountDosS4TM3 = 0;
for i = 1 to dosS4TM3realSize 
{
    if (allValuesDosS4TM3[i] == minValueDosS4TM3)
    {
        actualCountDosS4TM3 = actualCountDosS4TM3 + 1;
        if (actualCountDosS4TM3 >= DNminCALCS4TM3)
        {
            dn1000S4TM3 = minValueDosS4TM3;
            go to dn1000S4TM3jumper;
        }
    }
    else
    {
        minValueDosS4TM3 = allValuesDosS4TM3[i+1];
        actualCountDosS4TM3 = 0;
    }
}
dn1000S4TM3jumper:
if (dn1000S4TM3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4TM3 = allValuesDosS4TM3[1];
}
if (dn1000S4TM3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4TM3 = allValuesDosS4TM3[1];
}
printf("dn1000 Scene 4 TM3: %12f\n", dn1000S4TM3);
########################### Scene 4 - Dn1000 - Band 4
numeric lastDOSS4TM4 = dosS4TM4realSize;
numeric hDOSS4TM4 = 1;
while ( (hDOSS4TM4 * 3 + 1) < lastDOSS4TM4 - 1 )
{
    hDOSS4TM4 = 3 * hDOSS4TM4 + 1;
}
while ( hDOSS4TM4 > 0 )
{
    for i = hDOSS4TM4 - 1 to lastDOSS4TM4
    {
        numeric keyDOSS4TM4 = allValuesDosS4TM4[i];
        numeric jDOSS4TM4 = i;
        while (jDOSS4TM4 >= hDOSS4TM4 && allValuesDosS4TM4[jDOSS4TM4 - hDOSS4TM4] > keyDOSS4TM4)
        {
            allValuesDosS4TM4[jDOSS4TM4] = allValuesDosS4TM4[jDOSS4TM4 - hDOSS4TM4];
            jDOSS4TM4 = jDOSS4TM4 - hDOSS4TM4;
        }
        allValuesDosS4TM4[jDOSS4TM4] = keyDOSS4TM4;
    }
    hDOSS4TM4 = floor(hDOSS4TM4/3);
}
numeric minValueDosS4TM4 = allValuesDosS4TM4[1];
numeric dn1000S4TM4 = 10000;
numeric actualCountDosS4TM4 = 0;
for i = 1 to dosS4TM4realSize 
{
    if (allValuesDosS4TM4[i] == minValueDosS4TM4)
    {
        actualCountDosS4TM4 = actualCountDosS4TM4 + 1;
        if (actualCountDosS4TM4 >= DNminCALCS4TM4)
        {
            dn1000S4TM4 = minValueDosS4TM4;
            go to dn1000S4TM4jumper;
        }
    }
    else
    {
        minValueDosS4TM4 = allValuesDosS4TM4[i+1];
        actualCountDosS4TM4 = 0;
    }
}
dn1000S4TM4jumper:
if (dn1000S4TM4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4TM4 = allValuesDosS4TM4[1];
}
if (dn1000S4TM4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4TM4 = allValuesDosS4TM4[1];
}
	
printf("dn1000 Scene 4 TM4: %12f\n", dn1000S4TM4);
########################### Scene 4 - Dn1000 - Band 5
numeric lastDOSS4TM5 = dosS4TM5realSize;
numeric hDOSS4TM5 = 1;
while ( (hDOSS4TM5 * 3 + 1) < lastDOSS4TM5 - 1 )
{
    hDOSS4TM5 = 3 * hDOSS4TM5 + 1;
}
while ( hDOSS4TM5 > 0 )
{
    for i = hDOSS4TM5 - 1 to lastDOSS4TM5               # for each of the h sets of elements
    {
        numeric keyDOSS4TM5 = allValuesDosS4TM5[i];
        numeric jDOSS4TM5 = i;
        while (jDOSS4TM5 >= hDOSS4TM5 && allValuesDosS4TM5[jDOSS4TM5 - hDOSS4TM5] > keyDOSS4TM5)
        {
            allValuesDosS4TM5[jDOSS4TM5] = allValuesDosS4TM5[jDOSS4TM5 - hDOSS4TM5];
            jDOSS4TM5 = jDOSS4TM5 - hDOSS4TM5;
        }
        allValuesDosS4TM5[jDOSS4TM5] = keyDOSS4TM5;
    }
    hDOSS4TM5 = floor(hDOSS4TM5/3);
}
numeric minValueDosS4TM5 = allValuesDosS4TM5[1];
numeric dn1000S4TM5 = 10000;
numeric actualCountDosS4TM5 = 0;
for i = 1 to dosS4TM5realSize 
{
    if (allValuesDosS4TM5[i] == minValueDosS4TM5)
    {
        actualCountDosS4TM5 = actualCountDosS4TM5 + 1;
        if (actualCountDosS4TM5 >= DNminCALCS4TM5)
        {
            dn1000S4TM5 = minValueDosS4TM5;
            go to dn1000S4TM5jumper;
        }
    }
    else
    {
        minValueDosS4TM5 = allValuesDosS4TM5[i+1];
        actualCountDosS4TM5 = 0;
    }
}
dn1000S4TM5jumper:
if (dn1000S4TM5 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4TM5 = allValuesDosS4TM5[1];
}
if (dn1000S4TM5 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4TM5 = allValuesDosS4TM5[1];
}
	
printf("dn1000 Scene 4 TM5: %12f\n", dn1000S4TM5);
########################### Scene 4 - Dn1000 - Band 7
numeric lastDOSS4TM7 = dosS4TM7realSize;
numeric hDOSS4TM7 = 1;
while ( (hDOSS4TM7 * 3 + 1) < lastDOSS4TM7 - 1 )
{
    hDOSS4TM7 = 3 * hDOSS4TM7 + 1;
}
while ( hDOSS4TM7 > 0 )
{
    for i = hDOSS4TM7 - 1 to lastDOSS4TM7               # for each of the h sets of elements
    {
        numeric keyDOSS4TM7 = allValuesDosS4TM7[i];
        numeric jDOSS4TM7 = i;
        while (jDOSS4TM7 >= hDOSS4TM7 && allValuesDosS4TM7[jDOSS4TM7 - hDOSS4TM7] > keyDOSS4TM7)
        {
            allValuesDosS4TM7[jDOSS4TM7] = allValuesDosS4TM7[jDOSS4TM7 - hDOSS4TM7];
            jDOSS4TM7 = jDOSS4TM7 - hDOSS4TM7;
        }
        allValuesDosS4TM7[jDOSS4TM7] = keyDOSS4TM7;
    }
    hDOSS4TM7 = floor(hDOSS4TM7/3);
}
numeric minValueDosS4TM7 = allValuesDosS4TM7[1];
numeric dn1000S4TM7 = 10000;
numeric actualCountDosS4TM7 = 0;
for i = 1 to dosS4TM7realSize 
{
    if (allValuesDosS4TM7[i] == minValueDosS4TM7)
    {
        actualCountDosS4TM7 = actualCountDosS4TM7 + 1;
        if (actualCountDosS4TM7 >= DNminCALCS4TM7)
        {
            dn1000S4TM7 = minValueDosS4TM7;
            go to dn1000S4TM7jumper;
        }
    }
    else
    {
        minValueDosS4TM7 = allValuesDosS4TM7[i+1];
        actualCountDosS4TM7 = 0;
    }
}
dn1000S4TM7jumper:
if (dn1000S4TM7 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4TM7 = allValuesDosS4TM7[1];
}
if (dn1000S4TM7 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4TM7 = allValuesDosS4TM7[1];
}
	
printf("dn1000 Scene 4 TM7: %12f\n\n", dn1000S4TM7);
################################### Pathradiance Calculation #######################################
numeric pathRadS4TM1 = dn1000S4TM1 - (0.01 * (radsurfTMS4b1 * cos(s4zenith)) / pi);
numeric pathRadS4TM2 = dn1000S4TM2 - (0.01 * (radsurfTMS4b2 * cos(s4zenith)) / pi);
numeric pathRadS4TM3 = dn1000S4TM3 - (0.01 * (radsurfTMS4b3 * cos(s4zenith)) / pi);
numeric pathRadS4TM4 = dn1000S4TM4 - (0.01 * (radsurfTMS4b4 * cos(s4zenith)) / pi);
numeric pathRadS4TM5 = dn1000S4TM5 - (0.01 * (radsurfTMS4b5 * cos(s4zenith)) / pi);
numeric pathRadS4TM7 = dn1000S4TM7 - (0.01 * (radsurfTMS4b7 * cos(s4zenith)) / pi);
printf("Pathradiance Scene 4 Band 1: %12f\n", pathRadS4TM1);
printf("Pathradiance Scene 4 Band 2: %12f\n", pathRadS4TM2);
printf("Pathradiance Scene 4 Band 3: %12f\n", pathRadS4TM3);
printf("Pathradiance Scene 4 Band 4: %12f\n", pathRadS4TM4);
printf("Pathradiance Scene 4 Band 5: %12f\n", pathRadS4TM5);
printf("Pathradiance Scene 4 Band 7: %12f\n\n", pathRadS4TM7);
################################# Reflectance Calculation with athmo correction
	 for i = 1 to TMlins
	 {
	        for j = 1 to TMcols
	        {
                  valueS4TM1 = (pi * (RADS4TM1[i,j] - pathRadS4TM1)) / (radsurfTMS4b1 * cos(s4zenith));
                  if ( valueS4TM1 < 0 )
       		{
          			valueS4TM1 = 0;
				countS4REFnullTM1 = countS4REFnullTM1 + 1;
       		}
			else if ( valueS4TM1 > 1 )
			{
				valueS4TM1 = 1;
				countS4REFoneTM1 = countS4REFoneTM1 + 1;
			}
       		
			REFS4TM1[i,j] = valueS4TM1;
               valueS4TM2 = (pi * (RADS4TM2[i,j] - pathRadS4TM2)) / (radsurfTMS4b2 * cos(s4zenith));
                  if ( valueS4TM2 < 0 )
       		{
          			valueS4TM2 = 0;
				countS4REFnullTM2 = countS4REFnullTM2 + 1;
       		}
			else if ( valueS4TM2 > 1 )
			{
				valueS4TM2 = 1;
				countS4REFoneTM2 = countS4REFoneTM2 + 1;
			}
       		
			REFS4TM2[i,j] = valueS4TM2;
               valueS4TM3 = (pi * (RADS4TM3[i,j] - pathRadS4TM3)) / (radsurfTMS4b3 * cos(s4zenith));
                  if ( valueS4TM3 < 0 )
       		{
          			valueS4TM3 = 0;
				countS4REFnullTM3 = countS4REFnullTM3 + 1;
       		}
			else if ( valueS4TM3 > 1 )
			{
				valueS4TM3 = 1;
				countS4REFoneTM3 = countS4REFoneTM3 + 1;
			}
       		
			REFS4TM3[i,j] = valueS4TM3;
               valueS4TM4 = (pi * (RADS4TM4[i,j] - pathRadS4TM4)) / (radsurfTMS4b4 * cos(s4zenith));
                  if ( valueS4TM4 < 0 )
       		{
          			valueS4TM4 = 0;
				countS4REFnullTM4 = countS4REFnullTM4 + 1;
       		}
			else if ( valueS4TM4 > 1 )
			{
				valueS4TM4 = 1;
				countS4REFoneTM4 = countS4REFoneTM4 + 1;
			}
       		
			REFS4TM4[i,j] = valueS4TM4;
               valueS4TM5 = (pi * (RADS4TM5[i,j] - pathRadS4TM5)) / (radsurfTMS4b5 * cos(s4zenith));
                  if ( valueS4TM5 < 0 )
       		{
          			valueS4TM5 = 0;
				countS4REFnullTM5 = countS4REFnullTM5 + 1;
       		}
			else if ( valueS4TM5 > 1 )
			{
				valueS4TM5 = 1;
				countS4REFoneTM5 = countS4REFoneTM5 + 1;
			}
       		
			REFS4TM5[i,j] = valueS4TM5;
               valueS4TM7 = (pi * (RADS4TM7[i,j] - pathRadS4TM7)) / (radsurfTMS4b7 * cos(s4zenith));
                  if ( valueS4TM7 < 0 )
       		{
          			valueS4TM7 = 0;
				countS4REFnullTM7 = countS4REFnullTM7 + 1;
       		}
			else if ( valueS4TM7 > 1 )
			{
				valueS4TM7 = 1;
				countS4REFoneTM7 = countS4REFoneTM7 + 1;
			}
       		
			REFS4TM7[i,j] = valueS4TM7;
	        }
	 }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullTM1, countS4REFoneTM1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullTM2, countS4REFoneTM2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullTM3, countS4REFoneTM3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullTM4, countS4REFoneTM4);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 5: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullTM5, countS4REFoneTM5);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 7: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n\n", countS4REFnullTM7, countS4REFoneTM7);
CreatePyramid(REFS4TM1);
CreatePyramid(REFS4TM2);
CreatePyramid(REFS4TM3);
CreatePyramid(REFS4TM4);
CreatePyramid(REFS4TM5);
CreatePyramid(REFS4TM7);
        
CreateHistogram(REFS4TM1);
CreateHistogram(REFS4TM2);
CreateHistogram(REFS4TM3);
CreateHistogram(REFS4TM4);
CreateHistogram(REFS4TM5);
CreateHistogram(REFS4TM7);
CloseRaster(RADS4TM1);
CloseRaster(RADS4TM2);
CloseRaster(RADS4TM3);
CloseRaster(RADS4TM4);
CloseRaster(RADS4TM5);
CloseRaster(RADS4TM7);
printf("Reflectance calculation for Scene 4 (TM) is done...\n\n\n");
}
else if ( sensors4 == 5 )                                               # MSS 5 - Calib Werte nach Price J.C.1987
{
raster REFS4MSS1, REFS4MSS2, REFS4MSS3, REFS4MSS4;
numeric radsurfMSS4b1, radsurfMSS4b2, radsurfMSS4b3, radsurfMSS4b4;
numeric valueS4MSS1, valueS4MSS2, valueS4MSS3, valueS4MSS4;
numeric dosS4MSS1nullValCount = 0;
numeric dosS4MSS2nullValCount = 0;
numeric dosS4MSS3nullValCount = 0;
numeric dosS4MSS4nullValCount = 0;
numeric dosS4MSS1realArrayCount = 1;
numeric dosS4MSS2realArrayCount = 1;
numeric dosS4MSS3realArrayCount = 1;
numeric dosS4MSS4realArrayCount = 1;
numeric countS4REFnullMSS1 = 0;
numeric countS4REFnullMSS2 = 0;
numeric countS4REFnullMSS3 = 0;
numeric countS4REFnullMSS4 = 0;
numeric countS4REFoneMSS1 = 0;
numeric countS4REFoneMSS2 = 0;
numeric countS4REFoneMSS3 = 0;
numeric countS4REFoneMSS4 = 0;
radsurfMSS4b1 = ESMSS51 / (dist4^2);
radsurfMSS4b2 = ESMSS52 / (dist4^2);
radsurfMSS4b3 = ESMSS53 / (dist4^2);
radsurfMSS4b4 = ESMSS54 / (dist4^2);
printf("Surface Radiance MSS Band 1 in W/m^2�m (Scene 4): %12f\n", radsurfMSS4b1);
printf("Surface Radiance MSS Band 2 in W/m^2�m (Scene 4): %12f\n", radsurfMSS4b2);
printf("Surface Radiance MSS Band 3 in W/m^2�m (Scene 4): %12f\n", radsurfMSS4b3);
printf("Surface Radiance MSS Band 4 in W/m^2�m (Scene 4): %12f\n\n", radsurfMSS4b4);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {       
		if (IsNull(RADS4MSS1[i,j]) == 1)
		{
		dosS4MSS1nullValCount = dosS4MSS1nullValCount + 1;
		}
		if (IsNull(RADS4MSS2[i,j]) == 1)
		{
		dosS4MSS2nullValCount = dosS4MSS2nullValCount + 1;
		}		 
		if (IsNull(RADS4MSS3[i,j]) == 1)
		{
		dosS4MSS3nullValCount = dosS4MSS3nullValCount + 1;
		}		 
		if (IsNull(RADS4MSS4[i,j]) == 1)
		{
		dosS4MSS4nullValCount = dosS4MSS4nullValCount + 1;
		}		 	 	 
    }
}
numeric dosS4MSS1realSize = (MSSlins * MSScols) - dosS4MSS1nullValCount;
numeric dosS4MSS2realSize = (MSSlins * MSScols) - dosS4MSS2nullValCount;
numeric dosS4MSS3realSize = (MSSlins * MSScols) - dosS4MSS3nullValCount;
numeric dosS4MSS4realSize = (MSSlins * MSScols) - dosS4MSS4nullValCount;
array allValuesDosS4MSS1[dosS4MSS1realSize];
array allValuesDosS4MSS2[dosS4MSS2realSize];
array allValuesDosS4MSS3[dosS4MSS3realSize];
array allValuesDosS4MSS4[dosS4MSS4realSize];
numeric DNminCALCS4MSS1 = DNminCALC(Scene4Lin, Scene4Col, dosS4MSS1realSize);
numeric DNminCALCS4MSS2 = DNminCALC(Scene4Lin, Scene4Col, dosS4MSS2realSize);
numeric DNminCALCS4MSS3 = DNminCALC(Scene4Lin, Scene4Col, dosS4MSS3realSize);
numeric DNminCALCS4MSS4 = DNminCALC(Scene4Lin, Scene4Col, dosS4MSS4realSize);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {     
		if (IsNull(RADS4MSS1[i,j]) == 0)
		{
		  allValuesDosS4MSS1[dosS4MSS1realArrayCount] = RADS4MSS1[i,j];		 
		  dosS4MSS1realArrayCount = dosS4MSS1realArrayCount + 1;
		}
		if (IsNull(RADS4MSS2[i,j]) == 0)
		{
		  allValuesDosS4MSS2[dosS4MSS2realArrayCount] = RADS4MSS2[i,j];		 
		  dosS4MSS2realArrayCount = dosS4MSS2realArrayCount + 1;
		}
		if (IsNull(RADS4MSS3[i,j]) == 0)
		{
		  allValuesDosS4MSS3[dosS4MSS3realArrayCount] = RADS4MSS3[i,j];		 
		  dosS4MSS3realArrayCount = dosS4MSS3realArrayCount + 1;
		}
		if (IsNull(RADS4MSS4[i,j]) == 0)
		{
		  allValuesDosS4MSS4[dosS4MSS4realArrayCount] = RADS4MSS4[i,j];		 
		  dosS4MSS4realArrayCount = dosS4MSS4realArrayCount + 1;
		}
    }
}
########################### Scene 4 - Dn1000 - Band 1
numeric lastDOSS4MSS1 = dosS4MSS1realSize;
numeric hDOSS4MSS1 = 1;
while ( (hDOSS4MSS1 * 3 + 1) < lastDOSS4MSS1 - 1 )
{
    hDOSS4MSS1 = 3 * hDOSS4MSS1 + 1;
}
while ( hDOSS4MSS1 > 0 )
{
    for i = hDOSS4MSS1 - 1 to lastDOSS4MSS1               # for each of the h sets of elements
    {
        numeric keyDOSS4MSS1 = allValuesDosS4MSS1[i];
        numeric jDOSS4MSS1 = i;
        while (jDOSS4MSS1 >= hDOSS4MSS1 && allValuesDosS4MSS1[jDOSS4MSS1 - hDOSS4MSS1] > keyDOSS4MSS1)
        {
            allValuesDosS4MSS1[jDOSS4MSS1] = allValuesDosS4MSS1[jDOSS4MSS1 - hDOSS4MSS1];
            jDOSS4MSS1 = jDOSS4MSS1 - hDOSS4MSS1;
        }
        allValuesDosS4MSS1[jDOSS4MSS1] = keyDOSS4MSS1;
    }
    hDOSS4MSS1 = floor(hDOSS4MSS1/3);
}
numeric minValueDosS4MSS1 = allValuesDosS4MSS1[1];
numeric dn1000S4MSS1 = 10000;
numeric actualCountDosS4MSS1 = 0;
for i = 1 to dosS4MSS1realSize 
{
    if (allValuesDosS4MSS1[i] == minValueDosS4MSS1)
    {
        actualCountDosS4MSS1 = actualCountDosS4MSS1 + 1;
        if (actualCountDosS4MSS1 >= DNminCALCS4MSS1)
        {
            dn1000S4MSS1 = minValueDosS4MSS1;
            go to dn1000S4MSS1jumper;
        }
    }
    else
    {
        minValueDosS4MSS1 = allValuesDosS4MSS1[i+1];
        actualCountDosS4MSS1 = 0;
    }
}
dn1000S4MSS1jumper:
if (dn1000S4MSS1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4MSS1 = allValuesDosS4MSS1[1];
}
if (dn1000S4MSS1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4MSS1 = allValuesDosS4MSS1[1];
}
	
printf("dn1000 Scene 4 MSS1: %12f\n", dn1000S4MSS1);
########################### Scene 4 - Dn1000 - Band 2
numeric lastDOSS4MSS2 = dosS4MSS1realSize;
numeric hDOSS4MSS2 = 1;
while ( (hDOSS4MSS2 * 3 + 1) < lastDOSS4MSS2 - 1 )
{
    hDOSS4MSS2 = 3 * hDOSS4MSS2 + 1;
}
while ( hDOSS4MSS2 > 0 )
{
    for i = hDOSS4MSS2 - 1 to lastDOSS4MSS2
    {
        numeric keyDOSS4MSS2 = allValuesDosS4MSS2[i];
        numeric jDOSS4MSS2 = i;
        while (jDOSS4MSS2 >= hDOSS4MSS2 && allValuesDosS4MSS2[jDOSS4MSS2 - hDOSS4MSS2] > keyDOSS4MSS2)
        {
            allValuesDosS4MSS2[jDOSS4MSS2] = allValuesDosS4MSS2[jDOSS4MSS2 - hDOSS4MSS2];
            jDOSS4MSS2 = jDOSS4MSS2 - hDOSS4MSS2;
        }
        allValuesDosS4MSS2[jDOSS4MSS2] = keyDOSS4MSS2;
    }
    hDOSS4MSS2 = floor(hDOSS4MSS2/3);
}
numeric minValueDosS4MSS2 = allValuesDosS4MSS2[1];
numeric dn1000S4MSS2 = 10000;
numeric actualCountDosS4MSS2 = 0;
for i = 1 to dosS4MSS2realSize 
{
    if (allValuesDosS4MSS2[i] == minValueDosS4MSS2)
    {
        actualCountDosS4MSS2 = actualCountDosS4MSS2 + 1;
        if (actualCountDosS4MSS2 >= DNminCALCS4MSS2)
        {
            dn1000S4MSS2 = minValueDosS4MSS2;
            go to dn1000S4MSS2jumper;
        }
    }
    else
    {
        minValueDosS4MSS2 = allValuesDosS4MSS2[i+1];
        actualCountDosS4MSS2 = 0;
    }
}
dn1000S4MSS2jumper:
if (dn1000S4MSS2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4MSS2 = allValuesDosS4MSS2[1];
}
if (dn1000S4MSS2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4MSS2 = allValuesDosS4MSS2[1];
}
printf("dn1000 Scene 4 MSS2: %12f\n", dn1000S4MSS2);
########################### Scene 4 - Dn1000 - Band 3
numeric lastDOSS4MSS3 = dosS4MSS3realSize;
numeric hDOSS4MSS3 = 1;
while ( (hDOSS4MSS3 * 3 + 1) < lastDOSS4MSS3 - 1 )
{
    hDOSS4MSS3 = 3 * hDOSS4MSS3 + 1;
}
while ( hDOSS4MSS3 > 0 )
{
    for i = hDOSS4MSS3 - 1 to lastDOSS4MSS3               # for each of the h sets of elements
    {
        numeric keyDOSS4MSS3 = allValuesDosS4MSS3[i];
        numeric jDOSS4MSS3 = i;
        while (jDOSS4MSS3 >= hDOSS4MSS3 && allValuesDosS4MSS3[jDOSS4MSS3 - hDOSS4MSS3] > keyDOSS4MSS3)
        {
            allValuesDosS4MSS3[jDOSS4MSS3] = allValuesDosS4MSS3[jDOSS4MSS3 - hDOSS4MSS3];
            jDOSS4MSS3 = jDOSS4MSS3 - hDOSS4MSS3;
        }
        allValuesDosS4MSS3[jDOSS4MSS3] = keyDOSS4MSS3;
    }
    hDOSS4MSS3 = floor(hDOSS4MSS3/3);
}
numeric minValueDosS4MSS3 = allValuesDosS4MSS3[1];
numeric dn1000S4MSS3 = 10000;
numeric actualCountDosS4MSS3 = 0;
for i = 1 to dosS4MSS3realSize 
{
    if (allValuesDosS4MSS3[i] == minValueDosS4MSS3)
    {
        actualCountDosS4MSS3 = actualCountDosS4MSS3 + 1;
        if (actualCountDosS4MSS3 >= DNminCALCS4MSS3)
        {
            dn1000S4MSS3 = minValueDosS4MSS3;
            go to dn1000S4MSS3jumper;
        }
    }
    else
    {
        minValueDosS4MSS3 = allValuesDosS4MSS3[i+1];
        actualCountDosS4MSS3 = 0;
    }
}
dn1000S4MSS3jumper:
if (dn1000S4MSS3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4MSS3 = allValuesDosS4MSS3[1];
}
if (dn1000S4MSS3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4MSS3 = allValuesDosS4MSS3[1];
}
	
printf("dn1000 Scene 4 MSS3: %12f\n", dn1000S4MSS3);
########################### Scene 4 - Dn1000 - Band 4
numeric lastDOSS4MSS4 = dosS4MSS4realSize;
numeric hDOSS4MSS4 = 1;
while ( (hDOSS4MSS4 * 3 + 1) < lastDOSS4MSS4 - 1 )
{
    hDOSS4MSS4 = 3 * hDOSS4MSS4 + 1;
}
while ( hDOSS4MSS4 > 0 )
{
    for i = hDOSS4MSS4 - 1 to lastDOSS4MSS4
    {
        numeric keyDOSS4MSS4 = allValuesDosS4MSS4[i];
        numeric jDOSS4MSS4 = i;
        while (jDOSS4MSS4 >= hDOSS4MSS4 && allValuesDosS4MSS4[jDOSS4MSS4 - hDOSS4MSS4] > keyDOSS4MSS4)
        {
            allValuesDosS4MSS4[jDOSS4MSS4] = allValuesDosS4MSS4[jDOSS4MSS4 - hDOSS4MSS4];
            jDOSS4MSS4 = jDOSS4MSS4 - hDOSS4MSS4;
        }
        allValuesDosS4MSS4[jDOSS4MSS4] = keyDOSS4MSS4;
    }
    hDOSS4MSS4 = floor(hDOSS4MSS4/3);
}
numeric minValueDosS4MSS4 = allValuesDosS4MSS4[1];
numeric dn1000S4MSS4 = 10000;
numeric actualCountDosS4MSS4 = 0;
for i = 1 to dosS4MSS4realSize 
{
    if (allValuesDosS4MSS4[i] == minValueDosS4MSS4)
    {
        actualCountDosS4MSS4 = actualCountDosS4MSS4 + 1;
        if (actualCountDosS4MSS4 >= DNminCALCS4MSS4)
        {
            dn1000S4MSS4 = minValueDosS4MSS4;
            go to dn1000S4MSS4jumper;
        }
    }
    else
    {
        minValueDosS4MSS4 = allValuesDosS4MSS4[i+1];
        actualCountDosS4MSS4 = 0;
    }
}
dn1000S4MSS4jumper:
if (dn1000S4MSS4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4MSS4 = allValuesDosS4MSS4[1];
}
if (dn1000S4MSS4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4MSS4 = allValuesDosS4MSS4[1];
}
printf("dn1000 Scene 4 MSS4: %12f\n", dn1000S4MSS4);
################################### Pathradiance Calculation #######################################
numeric pathRadS4MSS1 = dn1000S4MSS1 - (0.01 * (radsurfMSS4b1 * cos(s4zenith)) / pi);
numeric pathRadS4MSS2 = dn1000S4MSS2 - (0.01 * (radsurfMSS4b2 * cos(s4zenith)) / pi);
numeric pathRadS4MSS3 = dn1000S4MSS3 - (0.01 * (radsurfMSS4b3 * cos(s4zenith)) / pi);
numeric pathRadS4MSS4 = dn1000S4MSS4 - (0.01 * (radsurfMSS4b4 * cos(s4zenith)) / pi);
printf("Pathradiance Scene 4 Band 1: %12f\n", pathRadS4MSS1);
printf("Pathradiance Scene 4 Band 2: %12f\n", pathRadS4MSS2);
printf("Pathradiance Scene 4 Band 3: %12f\n", pathRadS4MSS3);
printf("Pathradiance Scene 4 Band 4: %12f\n\n", pathRadS4MSS4);
################################# Reflectance Calculation with athmo correction
	  for i = 1 to MSSlins
	  {
	     for j = 1 to MSScols
	     {          
               valueS4MSS1 = (pi * (RADS4MSS1[i,j] - pathRadS4MSS1)) / (radsurfMSS4b1 * cos(s4zenith));
                  if ( valueS4MSS1 < 0 )
       		{
          			valueS4MSS1 = 0;
				countS4REFnullMSS1 = countS4REFnullMSS1 + 1;
       		}
			else if ( valueS4MSS1 > 1 )
			{
				valueS4MSS1 = 1;
				countS4REFoneMSS1 = countS4REFoneMSS1 + 1;
			}
       		
			REFS4MSS1[i,j] = valueS4MSS1;
               valueS4MSS2 = (pi * (RADS4MSS2[i,j] - pathRadS4MSS2)) / (radsurfMSS4b2 * cos(s4zenith));
                  if ( valueS4MSS2 < 0 )
       		{
          			valueS4MSS2 = 0;
				countS4REFnullMSS2 = countS4REFnullMSS2 + 1;
       		}
			else if ( valueS4MSS2 > 1 )
			{
				valueS4MSS2 = 1;
				countS4REFoneMSS2 = countS4REFoneMSS2 + 1;
			}
       		
			REFS4MSS2[i,j] = valueS4MSS2;
               valueS4MSS3 = (pi * (RADS4MSS3[i,j] - pathRadS4MSS3)) / (radsurfMSS4b3 * cos(s4zenith));
                  if ( valueS4MSS3 < 0 )
       		{
          			valueS4MSS3 = 0;
				countS4REFnullMSS3 = countS4REFnullMSS3 + 1;
       		}
			else if ( valueS4MSS3 > 1 )
			{
				valueS4MSS3 = 1;
				countS4REFoneMSS3 = countS4REFoneMSS3 + 1;
			}
       		
			REFS4MSS3[i,j] = valueS4MSS3;
               valueS4MSS4 = (pi * (RADS4MSS4[i,j] - pathRadS4MSS4)) / (radsurfMSS4b4 * cos(s4zenith));
                  if ( valueS4MSS4 < 0 )
       		{
          			valueS4MSS4 = 0;
				countS4REFnullMSS4 = countS4REFnullMSS4 + 1;
       		}
			else if ( valueS4MSS4 > 1 )
			{
				valueS4MSS4 = 1;
				countS4REFoneMSS4 = countS4REFoneMSS4 + 1;
			}
       		
			REFS4MSS4[i,j] = valueS4MSS4;
           }
	  }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullMSS1, countS4REFoneMSS1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullMSS2, countS4REFoneMSS2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullMSS3, countS4REFoneMSS3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullMSS4, countS4REFoneMSS4);
CreatePyramid(REFS4MSS1);
CreatePyramid(REFS4MSS2);
CreatePyramid(REFS4MSS3);
CreatePyramid(REFS4MSS4);
        
CreateHistogram(REFS4MSS1);
CreateHistogram(REFS4MSS2);
CreateHistogram(REFS4MSS3);
CreateHistogram(REFS4MSS4);
CloseRaster(RADS4MSS1);
CloseRaster(RADS4MSS2);
CloseRaster(RADS4MSS3);
CloseRaster(RADS4MSS4);
printf("Reflectance calculation for Scene 4 (MSS) is done...\n\n\n");
}
else if ( sensors4 == 4 )                                               # MSS 4
{
raster REFS4MSS1, REFS4MSS2, REFS4MSS3, REFS4MSS4;
numeric radsurfMSS4b1, radsurfMSS4b2, radsurfMSS4b3, radsurfMSS4b4;
numeric valueS4MSS1, valueS4MSS2, valueS4MSS3, valueS4MSS4;
numeric dosS4MSS1nullValCount = 0;
numeric dosS4MSS2nullValCount = 0;
numeric dosS4MSS3nullValCount = 0;
numeric dosS4MSS4nullValCount = 0;
numeric dosS4MSS1realArrayCount = 1;
numeric dosS4MSS2realArrayCount = 1;
numeric dosS4MSS3realArrayCount = 1;
numeric dosS4MSS4realArrayCount = 1;
numeric countS4REFnullMSS1 = 0;
numeric countS4REFnullMSS2 = 0;
numeric countS4REFnullMSS3 = 0;
numeric countS4REFnullMSS4 = 0;
numeric countS4REFoneMSS1 = 0;
numeric countS4REFoneMSS2 = 0;
numeric countS4REFoneMSS3 = 0;
numeric countS4REFoneMSS4 = 0;
radsurfMSS4b1 = ESMSS41 / (dist4^2);
radsurfMSS4b2 = ESMSS42 / (dist4^2);
radsurfMSS4b3 = ESMSS43 / (dist4^2);
radsurfMSS4b4 = ESMSS44 / (dist4^2);
printf("Surface Radiance MSS Band 1 in W/m^2�m (Scene 4): %12f\n", radsurfMSS4b1);
printf("Surface Radiance MSS Band 2 in W/m^2�m (Scene 4): %12f\n", radsurfMSS4b2);
printf("Surface Radiance MSS Band 3 in W/m^2�m (Scene 4): %12f\n", radsurfMSS4b3);
printf("Surface Radiance MSS Band 4 in W/m^2�m (Scene 4): %12f\n\n", radsurfMSS4b4);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {       
		if (IsNull(RADS4MSS1[i,j]) == 1)
		{
		dosS4MSS1nullValCount = dosS4MSS1nullValCount + 1;
		}
		if (IsNull(RADS4MSS2[i,j]) == 1)
		{
		dosS4MSS2nullValCount = dosS4MSS2nullValCount + 1;
		}		 
		if (IsNull(RADS4MSS3[i,j]) == 1)
		{
		dosS4MSS3nullValCount = dosS4MSS3nullValCount + 1;
		}		 
		if (IsNull(RADS4MSS4[i,j]) == 1)
		{
		dosS4MSS4nullValCount = dosS4MSS4nullValCount + 1;
		}		 	 	 
    }
}
numeric dosS4MSS1realSize = (MSSlins * MSScols) - dosS4MSS1nullValCount;
numeric dosS4MSS2realSize = (MSSlins * MSScols) - dosS4MSS2nullValCount;
numeric dosS4MSS3realSize = (MSSlins * MSScols) - dosS4MSS3nullValCount;
numeric dosS4MSS4realSize = (MSSlins * MSScols) - dosS4MSS4nullValCount;
array allValuesDosS4MSS1[dosS4MSS1realSize];
array allValuesDosS4MSS2[dosS4MSS2realSize];
array allValuesDosS4MSS3[dosS4MSS3realSize];
array allValuesDosS4MSS4[dosS4MSS4realSize];
numeric DNminCALCS4MSS1 = DNminCALC(Scene4Lin, Scene4Col, dosS4MSS1realSize);
numeric DNminCALCS4MSS2 = DNminCALC(Scene4Lin, Scene4Col, dosS4MSS2realSize);
numeric DNminCALCS4MSS3 = DNminCALC(Scene4Lin, Scene4Col, dosS4MSS3realSize);
numeric DNminCALCS4MSS4 = DNminCALC(Scene4Lin, Scene4Col, dosS4MSS4realSize);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {     
		if (IsNull(RADS4MSS1[i,j]) == 0)
		{
		  allValuesDosS4MSS1[dosS4MSS1realArrayCount] = RADS4MSS1[i,j];		 
		  dosS4MSS1realArrayCount = dosS4MSS1realArrayCount + 1;
		}
		if (IsNull(RADS4MSS2[i,j]) == 0)
		{
		  allValuesDosS4MSS2[dosS4MSS2realArrayCount] = RADS4MSS2[i,j];		 
		  dosS4MSS2realArrayCount = dosS4MSS2realArrayCount + 1;
		}
		if (IsNull(RADS4MSS3[i,j]) == 0)
		{
		  allValuesDosS4MSS3[dosS4MSS3realArrayCount] = RADS4MSS3[i,j];		 
		  dosS4MSS3realArrayCount = dosS4MSS3realArrayCount + 1;
		}
		if (IsNull(RADS4MSS4[i,j]) == 0)
		{
		  allValuesDosS4MSS4[dosS4MSS4realArrayCount] = RADS4MSS4[i,j];		 
		  dosS4MSS4realArrayCount = dosS4MSS4realArrayCount + 1;
		}
    }
}
########################### Scene 4 - Dn1000 - Band 1
numeric lastDOSS4MSS1 = dosS4MSS1realSize;
numeric hDOSS4MSS1 = 1;
while ( (hDOSS4MSS1 * 3 + 1) < lastDOSS4MSS1 - 1 )
{
    hDOSS4MSS1 = 3 * hDOSS4MSS1 + 1;
}
while ( hDOSS4MSS1 > 0 )
{
    for i = hDOSS4MSS1 - 1 to lastDOSS4MSS1               # for each of the h sets of elements
    {
        numeric keyDOSS4MSS1 = allValuesDosS4MSS1[i];
        numeric jDOSS4MSS1 = i;
        while (jDOSS4MSS1 >= hDOSS4MSS1 && allValuesDosS4MSS1[jDOSS4MSS1 - hDOSS4MSS1] > keyDOSS4MSS1)
        {
            allValuesDosS4MSS1[jDOSS4MSS1] = allValuesDosS4MSS1[jDOSS4MSS1 - hDOSS4MSS1];
            jDOSS4MSS1 = jDOSS4MSS1 - hDOSS4MSS1;
        }
        allValuesDosS4MSS1[jDOSS4MSS1] = keyDOSS4MSS1;
    }
    hDOSS4MSS1 = floor(hDOSS4MSS1/3);
}
numeric minValueDosS4MSS1 = allValuesDosS4MSS1[1];
numeric dn1000S4MSS1 = 10000;
numeric actualCountDosS4MSS1 = 0;
for i = 1 to dosS4MSS1realSize 
{
    if (allValuesDosS4MSS1[i] == minValueDosS4MSS1)
    {
        actualCountDosS4MSS1 = actualCountDosS4MSS1 + 1;
        if (actualCountDosS4MSS1 >= DNminCALCS4MSS1)
        {
            dn1000S4MSS1 = minValueDosS4MSS1;
            go to dn1000S4MSS1jumper;
        }
    }
    else
    {
        minValueDosS4MSS1 = allValuesDosS4MSS1[i+1];
        actualCountDosS4MSS1 = 0;
    }
}
dn1000S4MSS1jumper:
if (dn1000S4MSS1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4MSS1 = allValuesDosS4MSS1[1];
}
if (dn1000S4MSS1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4MSS1 = allValuesDosS4MSS1[1];
}
	
printf("dn1000 Scene 4 MSS1: %12f\n", dn1000S4MSS1);
########################### Scene 4 - Dn1000 - Band 2
numeric lastDOSS4MSS2 = dosS4MSS1realSize;
numeric hDOSS4MSS2 = 1;
while ( (hDOSS4MSS2 * 3 + 1) < lastDOSS4MSS2 - 1 )
{
    hDOSS4MSS2 = 3 * hDOSS4MSS2 + 1;
}
while ( hDOSS4MSS2 > 0 )
{
    for i = hDOSS4MSS2 - 1 to lastDOSS4MSS2
    {
        numeric keyDOSS4MSS2 = allValuesDosS4MSS2[i];
        numeric jDOSS4MSS2 = i;
        while (jDOSS4MSS2 >= hDOSS4MSS2 && allValuesDosS4MSS2[jDOSS4MSS2 - hDOSS4MSS2] > keyDOSS4MSS2)
        {
            allValuesDosS4MSS2[jDOSS4MSS2] = allValuesDosS4MSS2[jDOSS4MSS2 - hDOSS4MSS2];
            jDOSS4MSS2 = jDOSS4MSS2 - hDOSS4MSS2;
        }
        allValuesDosS4MSS2[jDOSS4MSS2] = keyDOSS4MSS2;
    }
    hDOSS4MSS2 = floor(hDOSS4MSS2/3);
}
numeric minValueDosS4MSS2 = allValuesDosS4MSS2[1];
numeric dn1000S4MSS2 = 10000;
numeric actualCountDosS4MSS2 = 0;
for i = 1 to dosS4MSS2realSize 
{
    if (allValuesDosS4MSS2[i] == minValueDosS4MSS2)
    {
        actualCountDosS4MSS2 = actualCountDosS4MSS2 + 1;
        if (actualCountDosS4MSS2 >= DNminCALCS4MSS2)
        {
            dn1000S4MSS2 = minValueDosS4MSS2;
            go to dn1000S4MSS2jumper;
        }
    }
    else
    {
        minValueDosS4MSS2 = allValuesDosS4MSS2[i+1];
        actualCountDosS4MSS2 = 0;
    }
}
dn1000S4MSS2jumper:
if (dn1000S4MSS2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4MSS2 = allValuesDosS4MSS2[1];
}
if (dn1000S4MSS2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4MSS2 = allValuesDosS4MSS2[1];
}
printf("dn1000 Scene 4 MSS2: %12f\n", dn1000S4MSS2);
########################### Scene 4 - Dn1000 - Band 3
numeric lastDOSS4MSS3 = dosS4MSS3realSize;
numeric hDOSS4MSS3 = 1;
while ( (hDOSS4MSS3 * 3 + 1) < lastDOSS4MSS3 - 1 )
{
    hDOSS4MSS3 = 3 * hDOSS4MSS3 + 1;
}
while ( hDOSS4MSS3 > 0 )
{
    for i = hDOSS4MSS3 - 1 to lastDOSS4MSS3               # for each of the h sets of elements
    {
        numeric keyDOSS4MSS3 = allValuesDosS4MSS3[i];
        numeric jDOSS4MSS3 = i;
        while (jDOSS4MSS3 >= hDOSS4MSS3 && allValuesDosS4MSS3[jDOSS4MSS3 - hDOSS4MSS3] > keyDOSS4MSS3)
        {
            allValuesDosS4MSS3[jDOSS4MSS3] = allValuesDosS4MSS3[jDOSS4MSS3 - hDOSS4MSS3];
            jDOSS4MSS3 = jDOSS4MSS3 - hDOSS4MSS3;
        }
        allValuesDosS4MSS3[jDOSS4MSS3] = keyDOSS4MSS3;
    }
    hDOSS4MSS3 = floor(hDOSS4MSS3/3);
}
numeric minValueDosS4MSS3 = allValuesDosS4MSS3[1];
numeric dn1000S4MSS3 = 10000;
numeric actualCountDosS4MSS3 = 0;
for i = 1 to dosS4MSS3realSize 
{
    if (allValuesDosS4MSS3[i] == minValueDosS4MSS3)
    {
        actualCountDosS4MSS3 = actualCountDosS4MSS3 + 1;
        if (actualCountDosS4MSS3 >= DNminCALCS4MSS3)
        {
            dn1000S4MSS3 = minValueDosS4MSS3;
            go to dn1000S4MSS3jumper;
        }
    }
    else
    {
        minValueDosS4MSS3 = allValuesDosS4MSS3[i+1];
        actualCountDosS4MSS3 = 0;
    }
}
dn1000S4MSS3jumper:
if (dn1000S4MSS3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4MSS3 = allValuesDosS4MSS3[1];
}
if (dn1000S4MSS3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4MSS3 = allValuesDosS4MSS3[1];
}
printf("dn1000 Scene 4 MSS3: %12f\n", dn1000S4MSS3);
########################### Scene 4 - Dn1000 - Band 4
numeric lastDOSS4MSS4 = dosS4MSS4realSize;
numeric hDOSS4MSS4 = 1;
while ( (hDOSS4MSS4 * 3 + 1) < lastDOSS4MSS4 - 1 )
{
    hDOSS4MSS4 = 3 * hDOSS4MSS4 + 1;
}
while ( hDOSS4MSS4 > 0 )
{
    for i = hDOSS4MSS4 - 1 to lastDOSS4MSS4
    {
        numeric keyDOSS4MSS4 = allValuesDosS4MSS4[i];
        numeric jDOSS4MSS4 = i;
        while (jDOSS4MSS4 >= hDOSS4MSS4 && allValuesDosS4MSS4[jDOSS4MSS4 - hDOSS4MSS4] > keyDOSS4MSS4)
        {
            allValuesDosS4MSS4[jDOSS4MSS4] = allValuesDosS4MSS4[jDOSS4MSS4 - hDOSS4MSS4];
            jDOSS4MSS4 = jDOSS4MSS4 - hDOSS4MSS4;
        }
        allValuesDosS4MSS4[jDOSS4MSS4] = keyDOSS4MSS4;
    }
    hDOSS4MSS4 = floor(hDOSS4MSS4/3);
}
numeric minValueDosS4MSS4 = allValuesDosS4MSS4[1];
numeric dn1000S4MSS4 = 10000;
numeric actualCountDosS4MSS4 = 0;
for i = 1 to dosS4MSS4realSize 
{
    if (allValuesDosS4MSS4[i] == minValueDosS4MSS4)
    {
        actualCountDosS4MSS4 = actualCountDosS4MSS4 + 1;
        if (actualCountDosS4MSS4 >= DNminCALCS4MSS4)
        {
            dn1000S4MSS4 = minValueDosS4MSS4;
            go to dn1000S4MSS4jumper;
        }
    }
    else
    {
        minValueDosS4MSS4 = allValuesDosS4MSS4[i+1];
        actualCountDosS4MSS4 = 0;
    }
}
dn1000S4MSS4jumper:
if (dn1000S4MSS4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4MSS4 = allValuesDosS4MSS4[1];
}
if (dn1000S4MSS4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4MSS4 = allValuesDosS4MSS4[1];
}
printf("dn1000 Scene 4 MSS4: %12f\n", dn1000S4MSS4);
################################### Pathradiance Calculation #######################################
numeric pathRadS4MSS1 = dn1000S4MSS1 - (0.01 * (radsurfMSS4b1 * cos(s4zenith)) / pi);
numeric pathRadS4MSS2 = dn1000S4MSS2 - (0.01 * (radsurfMSS4b2 * cos(s4zenith)) / pi);
numeric pathRadS4MSS3 = dn1000S4MSS3 - (0.01 * (radsurfMSS4b3 * cos(s4zenith)) / pi);
numeric pathRadS4MSS4 = dn1000S4MSS4 - (0.01 * (radsurfMSS4b4 * cos(s4zenith)) / pi);
printf("Pathradiance Scene 4 Band 1: %12f\n", pathRadS4MSS1);
printf("Pathradiance Scene 4 Band 2: %12f\n", pathRadS4MSS2);
printf("Pathradiance Scene 4 Band 3: %12f\n", pathRadS4MSS3);
printf("Pathradiance Scene 4 Band 4: %12f\n\n", pathRadS4MSS4);
################################# Reflectance Calculation with athmo correction
	  for i = 1 to MSSlins
	  {
	     for j = 1 to MSScols
	     {          
               valueS4MSS1 = (pi * (RADS4MSS1[i,j] - pathRadS4MSS1)) / (radsurfMSS4b1 * cos(s4zenith));
                  if ( valueS4MSS1 < 0 )
       		{
          			valueS4MSS1 = 0;
				countS4REFnullMSS1 = countS4REFnullMSS1 + 1;
       		}
			else if ( valueS4MSS1 > 1 )
			{
				valueS4MSS1 = 1;
				countS4REFoneMSS1 = countS4REFoneMSS1 + 1;
			}
       		
			REFS4MSS1[i,j] = valueS4MSS1;
               valueS4MSS2 = (pi * (RADS4MSS2[i,j] - pathRadS4MSS2)) / (radsurfMSS4b2 * cos(s4zenith));
                  if ( valueS4MSS2 < 0 )
       		{
          			valueS4MSS2 = 0;
				countS4REFnullMSS2 = countS4REFnullMSS2 + 1;
       		}
			else if ( valueS4MSS2 > 1 )
			{
				valueS4MSS2 = 1;
				countS4REFoneMSS2 = countS4REFoneMSS2 + 1;
			}
       		
			REFS4MSS2[i,j] = valueS4MSS2;
               valueS4MSS3 = (pi * (RADS4MSS3[i,j] - pathRadS4MSS3)) / (radsurfMSS4b3 * cos(s4zenith));
                  if ( valueS4MSS3 < 0 )
       		{
          			valueS4MSS3 = 0;
				countS4REFnullMSS3 = countS4REFnullMSS3 + 1;
       		}
			else if ( valueS4MSS3 > 1 )
			{
				valueS4MSS3 = 1;
				countS4REFoneMSS3 = countS4REFoneMSS3 + 1;
			}
       		
			REFS4MSS3[i,j] = valueS4MSS3;
               valueS4MSS4 = (pi * (RADS4MSS4[i,j] - pathRadS4MSS4)) / (radsurfMSS4b4 * cos(s4zenith));
                  if ( valueS4MSS4 < 0 )
       		{
          			valueS4MSS4 = 0;
				countS4REFnullMSS4 = countS4REFnullMSS4 + 1;
       		}
			else if ( valueS4MSS4 > 1 )
			{
				valueS4MSS4 = 1;
				countS4REFoneMSS4 = countS4REFoneMSS4 + 1;
			}
       		
			REFS4MSS4[i,j] = valueS4MSS4;
           }
	  }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullMSS1, countS4REFoneMSS1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullMSS2, countS4REFoneMSS2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullMSS3, countS4REFoneMSS3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullMSS4, countS4REFoneMSS4);
CreatePyramid(REFS4MSS1);
CreatePyramid(REFS4MSS2);
CreatePyramid(REFS4MSS3);
CreatePyramid(REFS4MSS4);
        
CreateHistogram(REFS4MSS1);
CreateHistogram(REFS4MSS2);
CreateHistogram(REFS4MSS3);
CreateHistogram(REFS4MSS4);
CloseRaster(RADS4MSS1);
CloseRaster(RADS4MSS2);
CloseRaster(RADS4MSS3);
CloseRaster(RADS4MSS4);
printf("Reflectance calculation for Scene 4 (MSS) is done...\n\n\n");
}
else															# MSS 1, 2 and 3
{
raster REFS4MSS1, REFS4MSS2, REFS4MSS3, REFS4MSS4;
numeric radsurfMSS4b1, radsurfMSS4b2, radsurfMSS4b3, radsurfMSS4b4;
numeric valueS4MSS1, valueS4MSS2, valueS4MSS3, valueS4MSS4;
numeric dosS4MSS1nullValCount = 0;
numeric dosS4MSS2nullValCount = 0;
numeric dosS4MSS3nullValCount = 0;
numeric dosS4MSS4nullValCount = 0;
numeric dosS4MSS1realArrayCount = 1;
numeric dosS4MSS2realArrayCount = 1;
numeric dosS4MSS3realArrayCount = 1;
numeric dosS4MSS4realArrayCount = 1;
numeric countS4REFnullMSS1 = 0;
numeric countS4REFnullMSS2 = 0;
numeric countS4REFnullMSS3 = 0;
numeric countS4REFnullMSS4 = 0;
numeric countS4REFoneMSS1 = 0;
numeric countS4REFoneMSS2 = 0;
numeric countS4REFoneMSS3 = 0;
numeric countS4REFoneMSS4 = 0;
radsurfMSS4b1 = ESMSS11 / (dist4^2);
radsurfMSS4b2 = ESMSS12 / (dist4^2);
radsurfMSS4b3 = ESMSS13 / (dist4^2);
radsurfMSS4b4 = ESMSS14 / (dist4^2);
printf("Surface Radiance MSS Band 1 in W/m^2�m (Scene 4): %12f\n", radsurfMSS4b1);
printf("Surface Radiance MSS Band 2 in W/m^2�m (Scene 4): %12f\n", radsurfMSS4b2);
printf("Surface Radiance MSS Band 3 in W/m^2�m (Scene 4): %12f\n", radsurfMSS4b3);
printf("Surface Radiance MSS Band 4 in W/m^2�m (Scene 4): %12f\n\n", radsurfMSS4b4);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {       
		if (IsNull(RADS4MSS1[i,j]) == 1)
		{
		dosS4MSS1nullValCount = dosS4MSS1nullValCount + 1;
		}
		if (IsNull(RADS4MSS2[i,j]) == 1)
		{
		dosS4MSS2nullValCount = dosS4MSS2nullValCount + 1;
		}		 
		if (IsNull(RADS4MSS3[i,j]) == 1)
		{
		dosS4MSS3nullValCount = dosS4MSS3nullValCount + 1;
		}		 
		if (IsNull(RADS4MSS4[i,j]) == 1)
		{
		dosS4MSS4nullValCount = dosS4MSS4nullValCount + 1;
		}		 	 	 
    }
}
numeric dosS4MSS1realSize = (MSSlins * MSScols) - dosS4MSS1nullValCount;
numeric dosS4MSS2realSize = (MSSlins * MSScols) - dosS4MSS2nullValCount;
numeric dosS4MSS3realSize = (MSSlins * MSScols) - dosS4MSS3nullValCount;
numeric dosS4MSS4realSize = (MSSlins * MSScols) - dosS4MSS4nullValCount;
array allValuesDosS4MSS1[dosS4MSS1realSize];
array allValuesDosS4MSS2[dosS4MSS2realSize];
array allValuesDosS4MSS3[dosS4MSS3realSize];
array allValuesDosS4MSS4[dosS4MSS4realSize];
numeric DNminCALCS4MSS1 = DNminCALC(Scene4Lin, Scene4Col, dosS4MSS1realSize);
numeric DNminCALCS4MSS2 = DNminCALC(Scene4Lin, Scene4Col, dosS4MSS2realSize);
numeric DNminCALCS4MSS3 = DNminCALC(Scene4Lin, Scene4Col, dosS4MSS3realSize);
numeric DNminCALCS4MSS4 = DNminCALC(Scene4Lin, Scene4Col, dosS4MSS4realSize);
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {     
		if (IsNull(RADS4MSS1[i,j]) == 0)
		{
		  allValuesDosS4MSS1[dosS4MSS1realArrayCount] = RADS4MSS1[i,j];		 
		  dosS4MSS1realArrayCount = dosS4MSS1realArrayCount + 1;
		}
		if (IsNull(RADS4MSS2[i,j]) == 0)
		{
		  allValuesDosS4MSS2[dosS4MSS2realArrayCount] = RADS4MSS2[i,j];		 
		  dosS4MSS2realArrayCount = dosS4MSS2realArrayCount + 1;
		}
		if (IsNull(RADS4MSS3[i,j]) == 0)
		{
		  allValuesDosS4MSS3[dosS4MSS3realArrayCount] = RADS4MSS3[i,j];		 
		  dosS4MSS3realArrayCount = dosS4MSS3realArrayCount + 1;
		}
		if (IsNull(RADS4MSS4[i,j]) == 0)
		{
		  allValuesDosS4MSS4[dosS4MSS4realArrayCount] = RADS4MSS4[i,j];		 
		  dosS4MSS4realArrayCount = dosS4MSS4realArrayCount + 1;
		}
    }
}
########################### Scene 4 - Dn1000 - Band 1
numeric lastDOSS4MSS1 = dosS4MSS1realSize;
numeric hDOSS4MSS1 = 1;
while ( (hDOSS4MSS1 * 3 + 1) < lastDOSS4MSS1 - 1 )
{
    hDOSS4MSS1 = 3 * hDOSS4MSS1 + 1;
}
while ( hDOSS4MSS1 > 0 )
{
    for i = hDOSS4MSS1 - 1 to lastDOSS4MSS1               # for each of the h sets of elements
    {
        numeric keyDOSS4MSS1 = allValuesDosS4MSS1[i];
        numeric jDOSS4MSS1 = i;
        while (jDOSS4MSS1 >= hDOSS4MSS1 && allValuesDosS4MSS1[jDOSS4MSS1 - hDOSS4MSS1] > keyDOSS4MSS1)
        {
            allValuesDosS4MSS1[jDOSS4MSS1] = allValuesDosS4MSS1[jDOSS4MSS1 - hDOSS4MSS1];
            jDOSS4MSS1 = jDOSS4MSS1 - hDOSS4MSS1;
        }
        allValuesDosS4MSS1[jDOSS4MSS1] = keyDOSS4MSS1;
    }
    hDOSS4MSS1 = floor(hDOSS4MSS1/3);
}
numeric minValueDosS4MSS1 = allValuesDosS4MSS1[1];
numeric dn1000S4MSS1 = 10000;
numeric actualCountDosS4MSS1 = 0;
for i = 1 to dosS4MSS1realSize 
{
    if (allValuesDosS4MSS1[i] == minValueDosS4MSS1)
    {
        actualCountDosS4MSS1 = actualCountDosS4MSS1 + 1;
        if (actualCountDosS4MSS1 >= DNminCALCS4MSS1)
        {
            dn1000S4MSS1 = minValueDosS4MSS1;
            go to dn1000S4MSS1jumper;
        }
    }
    else
    {
        minValueDosS4MSS1 = allValuesDosS4MSS1[i+1];
        actualCountDosS4MSS1 = 0;
    }
}
dn1000S4MSS1jumper:
if (dn1000S4MSS1 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4MSS1 = allValuesDosS4MSS1[1];
}
if (dn1000S4MSS1 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4MSS1 = allValuesDosS4MSS1[1];
}
	
printf("dn1000 Scene 4 MSS1: %12f\n", dn1000S4MSS1);
########################### Scene 4 - Dn1000 - Band 2
numeric lastDOSS4MSS2 = dosS4MSS1realSize;
numeric hDOSS4MSS2 = 1;
while ( (hDOSS4MSS2 * 3 + 1) < lastDOSS4MSS2 - 1 )
{
    hDOSS4MSS2 = 3 * hDOSS4MSS2 + 1;
}
while ( hDOSS4MSS2 > 0 )
{
    for i = hDOSS4MSS2 - 1 to lastDOSS4MSS2
    {
        numeric keyDOSS4MSS2 = allValuesDosS4MSS2[i];
        numeric jDOSS4MSS2 = i;
        while (jDOSS4MSS2 >= hDOSS4MSS2 && allValuesDosS4MSS2[jDOSS4MSS2 - hDOSS4MSS2] > keyDOSS4MSS2)
        {
            allValuesDosS4MSS2[jDOSS4MSS2] = allValuesDosS4MSS2[jDOSS4MSS2 - hDOSS4MSS2];
            jDOSS4MSS2 = jDOSS4MSS2 - hDOSS4MSS2;
        }
        allValuesDosS4MSS2[jDOSS4MSS2] = keyDOSS4MSS2;
    }
    hDOSS4MSS2 = floor(hDOSS4MSS2/3);
}
numeric minValueDosS4MSS2 = allValuesDosS4MSS2[1];
numeric dn1000S4MSS2 = 10000;
numeric actualCountDosS4MSS2 = 0;
for i = 1 to dosS4MSS2realSize 
{
    if (allValuesDosS4MSS2[i] == minValueDosS4MSS2)
    {
        actualCountDosS4MSS2 = actualCountDosS4MSS2 + 1;
        if (actualCountDosS4MSS2 >= DNminCALCS4MSS2)
        {
            dn1000S4MSS2 = minValueDosS4MSS2;
            go to dn1000S4MSS2jumper;
        }
    }
    else
    {
        minValueDosS4MSS2 = allValuesDosS4MSS2[i+1];
        actualCountDosS4MSS2 = 0;
    }
}
dn1000S4MSS2jumper:
if (dn1000S4MSS2 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4MSS2 = allValuesDosS4MSS2[1];
}
if (dn1000S4MSS2 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4MSS2 = allValuesDosS4MSS2[1];
}
printf("dn1000 Scene 4 MSS2: %12f\n", dn1000S4MSS2);
########################### Scene 4 - Dn1000 - Band 3
numeric lastDOSS4MSS3 = dosS4MSS3realSize;
numeric hDOSS4MSS3 = 1;
while ( (hDOSS4MSS3 * 3 + 1) < lastDOSS4MSS3 - 1 )
{
    hDOSS4MSS3 = 3 * hDOSS4MSS3 + 1;
}
while ( hDOSS4MSS3 > 0 )
{
    for i = hDOSS4MSS3 - 1 to lastDOSS4MSS3               # for each of the h sets of elements
    {
        numeric keyDOSS4MSS3 = allValuesDosS4MSS3[i];
        numeric jDOSS4MSS3 = i;
        while (jDOSS4MSS3 >= hDOSS4MSS3 && allValuesDosS4MSS3[jDOSS4MSS3 - hDOSS4MSS3] > keyDOSS4MSS3)
        {
            allValuesDosS4MSS3[jDOSS4MSS3] = allValuesDosS4MSS3[jDOSS4MSS3 - hDOSS4MSS3];
            jDOSS4MSS3 = jDOSS4MSS3 - hDOSS4MSS3;
        }
        allValuesDosS4MSS3[jDOSS4MSS3] = keyDOSS4MSS3;
    }
    hDOSS4MSS3 = floor(hDOSS4MSS3/3);
}
numeric minValueDosS4MSS3 = allValuesDosS4MSS3[1];
numeric dn1000S4MSS3 = 10000;
numeric actualCountDosS4MSS3 = 0;
for i = 1 to dosS4MSS3realSize 
{
    if (allValuesDosS4MSS3[i] == minValueDosS4MSS3)
    {
        actualCountDosS4MSS3 = actualCountDosS4MSS3 + 1;
        if (actualCountDosS4MSS3 >= DNminCALCS4MSS3)
        {
            dn1000S4MSS3 = minValueDosS4MSS3;
            go to dn1000S4MSS3jumper;
        }
    }
    else
    {
        minValueDosS4MSS3 = allValuesDosS4MSS3[i+1];
        actualCountDosS4MSS3 = 0;
    }
}
dn1000S4MSS3jumper:
if (dn1000S4MSS3 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4MSS3 = allValuesDosS4MSS3[1];
}
if (dn1000S4MSS3 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4MSS3 = allValuesDosS4MSS3[1];
}
	
printf("dn1000 Scene 4 MSS3: %12f\n", dn1000S4MSS3);
########################### Scene 4 - Dn1000 - Band 4
numeric lastDOSS4MSS4 = dosS4MSS4realSize;
numeric hDOSS4MSS4 = 1;
while ( (hDOSS4MSS4 * 3 + 1) < lastDOSS4MSS4 - 1 )
{
    hDOSS4MSS4 = 3 * hDOSS4MSS4 + 1;
}
while ( hDOSS4MSS4 > 0 )
{
    for i = hDOSS4MSS4 - 1 to lastDOSS4MSS4
    {
        numeric keyDOSS4MSS4 = allValuesDosS4MSS4[i];
        numeric jDOSS4MSS4 = i;
        while (jDOSS4MSS4 >= hDOSS4MSS4 && allValuesDosS4MSS4[jDOSS4MSS4 - hDOSS4MSS4] > keyDOSS4MSS4)
        {
            allValuesDosS4MSS4[jDOSS4MSS4] = allValuesDosS4MSS4[jDOSS4MSS4 - hDOSS4MSS4];
            jDOSS4MSS4 = jDOSS4MSS4 - hDOSS4MSS4;
        }
        allValuesDosS4MSS4[jDOSS4MSS4] = keyDOSS4MSS4;
    }
    hDOSS4MSS4 = floor(hDOSS4MSS4/3);
}
numeric minValueDosS4MSS4 = allValuesDosS4MSS4[1];
numeric dn1000S4MSS4 = 10000;
numeric actualCountDosS4MSS4 = 0;
for i = 1 to dosS4MSS4realSize 
{
    if (allValuesDosS4MSS4[i] == minValueDosS4MSS4)
    {
        actualCountDosS4MSS4 = actualCountDosS4MSS4 + 1;
        if (actualCountDosS4MSS4 >= DNminCALCS4MSS4)
        {
            dn1000S4MSS4 = minValueDosS4MSS4;
            go to dn1000S4MSS4jumper;
        }
    }
    else
    {
        minValueDosS4MSS4 = allValuesDosS4MSS4[i+1];
    }
}
dn1000S4MSS4jumper:
if (dn1000S4MSS4 < 0)
{
        printf("dn1000 is negative, setting zero as default\n");
        dn1000S4MSS4 = allValuesDosS4MSS4[1];
}
if (dn1000S4MSS4 == 10000)
{
        printf("no dn1000 found, setting zero as default\n");
        dn1000S4MSS4 = allValuesDosS4MSS4[1];
}
	
printf("dn1000 Scene 4 MSS4: %12f\n", dn1000S4MSS4);
################################### Pathradiance Calculation #######################################
numeric pathRadS4MSS1 = dn1000S4MSS1 - (0.01 * (radsurfMSS4b1 * cos(s4zenith)) / pi);
numeric pathRadS4MSS2 = dn1000S4MSS2 - (0.01 * (radsurfMSS4b2 * cos(s4zenith)) / pi);
numeric pathRadS4MSS3 = dn1000S4MSS3 - (0.01 * (radsurfMSS4b3 * cos(s4zenith)) / pi);
numeric pathRadS4MSS4 = dn1000S4MSS4 - (0.01 * (radsurfMSS4b4 * cos(s4zenith)) / pi);
printf("Pathradiance Scene 4 Band 1: %12f\n", pathRadS4MSS1);
printf("Pathradiance Scene 4 Band 2: %12f\n", pathRadS4MSS2);
printf("Pathradiance Scene 4 Band 3: %12f\n", pathRadS4MSS3);
printf("Pathradiance Scene 4 Band 4: %12f\n\n", pathRadS4MSS4);
################################# Reflectance Calculation with athmo correction
	  for i = 1 to MSSlins
	  {
	     for j = 1 to MSScols
	     {          
               valueS4MSS1 = (pi * (RADS4MSS1[i,j] - pathRadS4MSS1)) / (radsurfMSS4b1 * cos(s4zenith));
                  if ( valueS4MSS1 < 0 )
       		{
          			valueS4MSS1 = 0;
				countS4REFnullMSS1 = countS4REFnullMSS1 + 1;
       		}
			else if ( valueS4MSS1 > 1 )
			{
				valueS4MSS1 = 1;
				countS4REFoneMSS1 = countS4REFoneMSS1 + 1;
			}
       		
			REFS4MSS1[i,j] = valueS4MSS1;
               valueS4MSS2 = (pi * (RADS4MSS2[i,j] - pathRadS4MSS2)) / (radsurfMSS4b2 * cos(s4zenith));
                  if ( valueS4MSS2 < 0 )
       		{
          			valueS4MSS2 = 0;
				countS4REFnullMSS2 = countS4REFnullMSS2 + 1;
       		}
			else if ( valueS4MSS2 > 1 )
			{
				valueS4MSS2 = 1;
				countS4REFoneMSS2 = countS4REFoneMSS2 + 1;
			}
       		
			REFS4MSS2[i,j] = valueS4MSS2;
               valueS4MSS3 = (pi * (RADS4MSS3[i,j] - pathRadS4MSS3)) / (radsurfMSS4b3 * cos(s4zenith));
                  if ( valueS4MSS3 < 0 )
       		{
          			valueS4MSS3 = 0;
				countS4REFnullMSS3 = countS4REFnullMSS3 + 1;
       		}
			else if ( valueS4MSS3 > 1 )
			{
				valueS4MSS3 = 1;
				countS4REFoneMSS3 = countS4REFoneMSS3 + 1;
			}
       		
			REFS4MSS3[i,j] = valueS4MSS3;
               valueS4MSS4 = (pi * (RADS4MSS4[i,j] - pathRadS4MSS4)) / (radsurfMSS4b4 * cos(s4zenith));
                  if ( valueS4MSS4 < 0 )
       		{
          			valueS4MSS4 = 0;
				countS4REFnullMSS4 = countS4REFnullMSS4 + 1;
       		}
			else if ( valueS4MSS4 > 1 )
			{
				valueS4MSS4 = 1;
				countS4REFoneMSS4 = countS4REFoneMSS4 + 1;
			}
       		
			REFS4MSS4[i,j] = valueS4MSS4;
           }
	  }
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 1: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullMSS1, countS4REFoneMSS1);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 2: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullMSS2, countS4REFoneMSS2);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 3: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullMSS3, countS4REFoneMSS3);
printf("Reflectance Computation (including DOS 1 Atmosphere Correction) Scene 4 Band 4: %5i pixels smaller zero set to zero and %5i pixels larger one set to one\n", countS4REFnullMSS4, countS4REFoneMSS4);
CreatePyramid(REFS4MSS1);
CreatePyramid(REFS4MSS2);
CreatePyramid(REFS4MSS3);
CreatePyramid(REFS4MSS4);
        
CreateHistogram(REFS4MSS1);
CreateHistogram(REFS4MSS2);
CreateHistogram(REFS4MSS3);
CreateHistogram(REFS4MSS4);
CloseRaster(RADS4MSS1);
CloseRaster(RADS4MSS2);
CloseRaster(RADS4MSS3);
CloseRaster(RADS4MSS4);
printf("Reflectance calculation for Scene 4 (MSS) is done...\n\n\n");
}
######################################
###### Begin processing.
###### Calculate Pseudo Invariant Feature.
######################################
printf( "Calculation of Reflectance finished, starting off with the Pseudo Invariant Features...\n\n" );
printf( "Computing SBI-Rasters and statistics...\n\n" );
#############################
#### SBI Scene 1 raster computation and statistics
#############################
if ( sensors1 == 7 )
{
	raster SBI1ETM;
	CreateTempRaster(SBI1ETM, ETMlins, ETMcols,"32-bit float");
	for i = 1 to ETMlins
	{
         for j = 1 to ETMcols
         {
            SBI1ETM[i,j] = (0.33183 * REFS1ETM1[i,j]) + (0.33121 * REFS1ETM2[i,j]) + (0.55177 * REFS1ETM3[i,j]) + (0.42514 * REFS1ETM4[i,j]) + (0.48087 * REFS1ETM5[i,j]) + (0.25252 * REFS1ETM7[i,j]);
         }
      }
      sbi1min = GlobalMin(SBI1ETM);
      sbi1max = GlobalMax(SBI1ETM);
      sbi1mean = GlobalMean(SBI1ETM);
      sbi1sd = GlobalSD(SBI1ETM);
}
else if ( sensors1 == 6 )
{
	raster SBI1TM;
    CreateTempRaster(SBI1TM, TMlins, TMcols,"32-bit float");
	for i = 1 to TMlins
    {
        for j = 1 to TMcols
        {
            SBI1TM[i,j] = (0.33183 * REFS1TM1[i,j]) + (0.33121 * REFS1TM2[i,j]) + (0.55177 * REFS1TM3[i,j]) + (0.42514 * REFS1TM4[i,j]) + (0.48087 * REFS1TM5[i,j]) + (0.25252 * REFS1TM7[i,j]);
        }
    }
    sbi1min = GlobalMin(SBI1TM);
    sbi1max = GlobalMax(SBI1TM);
    sbi1mean = GlobalMean(SBI1TM);
    sbi1sd = GlobalSD(SBI1TM);
}
else
{
	raster SBI1MSS;
	CreateTempRaster(SBI1MSS, MSSlins, MSScols,"32-bit float");
    for i = 1 to MSSlins
    {
        for j = 1 to MSScols
        {
            SBI1MSS[i,j] = (0.332 * REFS1MSS1[i,j]) + (0.603 * REFS1MSS2[i,j]) + (0.675 * REFS1MSS3[i,j]) + (0.262 * REFS1MSS4[i,j]);
        }
    }
    sbi1min = GlobalMin(SBI1MSS);
    sbi1max = GlobalMax(SBI1MSS);
    sbi1mean = GlobalMean(SBI1MSS);
    sbi1sd = GlobalSD(SBI1MSS);
}
#############################
#### SBI Scene 2 raster computation and statistics
#############################
if ( sensors2 == 7 )
{
	raster SBI2ETM;
	CreateTempRaster(SBI2ETM, ETMlins, ETMcols,"32-bit float");
	for i = 1 to ETMlins
	{
         for j = 1 to ETMcols
         {
            SBI2ETM[i,j] = (0.33183 * REFS2ETM1[i,j]) + (0.33121 * REFS2ETM2[i,j]) + (0.55177 * REFS2ETM3[i,j]) + (0.42514 * REFS2ETM4[i,j]) + (0.48087 * REFS2ETM5[i,j]) + (0.25252 * REFS2ETM7[i,j]);
         }
      }
      sbi2min = GlobalMin(SBI2ETM);
      sbi2max = GlobalMax(SBI2ETM);
      sbi2mean = GlobalMean(SBI2ETM);
      sbi2sd = GlobalSD(SBI2ETM);
}
else if ( sensors2 == 6 )
{
	raster SBI2TM;
    CreateTempRaster(SBI2TM, TMlins, TMcols,"32-bit float");
	for i = 1 to TMlins
    {
        for j = 1 to TMcols
        {
            SBI2TM[i,j] = (0.33183 * REFS2TM1[i,j]) + (0.33121 * REFS2TM2[i,j]) + (0.55177 * REFS2TM3[i,j]) + (0.42514 * REFS2TM4[i,j]) + (0.48087 * REFS2TM5[i,j]) + (0.25252 * REFS2TM7[i,j]);
        }
	}
    sbi2min = GlobalMin(SBI2TM);
    sbi2max = GlobalMax(SBI2TM);
    sbi2mean = GlobalMean(SBI2TM);
    sbi2sd = GlobalSD(SBI2TM);
}
else
{
	raster SBI2MSS;
	CreateTempRaster(SBI2MSS, MSSlins, MSScols,"32-bit float");
    for i = 1 to MSSlins
    {
	    for j = 1 to MSScols
        {
            SBI2MSS[i,j] = (0.332 * REFS2MSS1[i,j]) + (0.603 * REFS2MSS2[i,j]) + (0.675 * REFS2MSS3[i,j]) + (0.262 * REFS2MSS4[i,j]);
        }
    }
    sbi2min = GlobalMin(SBI2MSS);
    sbi2max = GlobalMax(SBI2MSS);
    sbi2mean = GlobalMean(SBI2MSS);
    sbi2sd = GlobalSD(SBI2MSS);
}
#############################
#### SBI Scene 3 raster computation and statistics
#############################
if ( sensors3 == 7 )
{
	raster SBI3ETM;
	CreateTempRaster(SBI3ETM, ETMlins, ETMcols,"32-bit float");
	for i = 1 to ETMlins
	{
         for j = 1 to ETMcols
         {
            SBI3ETM[i,j] = (0.33183 * REFS3ETM1[i,j]) + (0.33121 * REFS3ETM2[i,j]) + (0.55177 * REFS3ETM3[i,j]) + (0.42514 * REFS3ETM4[i,j]) + (0.48087 * REFS3ETM5[i,j]) + (0.25252 * REFS3ETM7[i,j]);
         }
      }
      sbi1min = GlobalMin(SBI3ETM);
      sbi1max = GlobalMax(SBI3ETM);
      sbi1mean = GlobalMean(SBI3ETM);
      sbi1sd = GlobalSD(SBI3ETM);
}
else if ( sensors3 == 6 )
{
	raster SBI3TM;
    CreateTempRaster(SBI3TM, TMlins, TMcols,"32-bit float");
	for i = 1 to TMlins
    {
	    for j = 1 to TMcols
	    {
            SBI3TM[i,j] = (0.33183 * REFS3TM1[i,j]) + (0.33121 * REFS3TM2[i,j]) + (0.55177 * REFS3TM3[i,j]) + (0.42514 * REFS3TM4[i,j]) + (0.48087 * REFS3TM5[i,j]) + (0.25252 * REFS3TM7[i,j]);
        }
	}
    sbi3min = GlobalMin(SBI3TM);
    sbi3max = GlobalMax(SBI3TM);
    sbi3mean = GlobalMean(SBI3TM);
    sbi3sd = GlobalSD(SBI3TM);
}
else
{
	raster SBI3MSS;
	CreateTempRaster(SBI3MSS, MSSlins, MSScols,"32-bit float");
    for i = 1 to MSSlins
	{
	    for j = 1 to MSScols
        {
            SBI3MSS[i,j] = (0.332 * REFS3MSS1[i,j]) + (0.603 * REFS3MSS2[i,j]) + (0.675 * REFS3MSS3[i,j]) + (0.262 * REFS3MSS4[i,j]);
        }
    }
    sbi3min = GlobalMin(SBI3MSS);
    sbi3max = GlobalMax(SBI3MSS);
    sbi3mean = GlobalMean(SBI3MSS);
    sbi3sd = GlobalSD(SBI3MSS);
}
#############################
#### SBI Scene 4 raster computation and statistics
#############################
if ( sensors4 == 7 )
{
	raster SBI4ETM;
	CreateTempRaster(SBI4ETM, ETMlins, ETMcols,"32-bit float");
	for i = 1 to ETMlins
	{
         for j = 1 to ETMcols
         {
            SBI4ETM[i,j] = (0.33183 * REFS4ETM1[i,j]) + (0.33121 * REFS4ETM2[i,j]) + (0.55177 * REFS4ETM3[i,j]) + (0.42514 * REFS4ETM4[i,j]) + (0.48087 * REFS4ETM5[i,j]) + (0.25252 * REFS4ETM7[i,j]);
         }
      }
      sbi1min = GlobalMin(SBI4ETM);
      sbi1max = GlobalMax(SBI4ETM);
      sbi1mean = GlobalMean(SBI4ETM);
      sbi1sd = GlobalSD(SBI4ETM);
}
else if ( sensors4 == 6 )
{
	raster SBI4TM;
    CreateTempRaster(SBI4TM, TMlins, TMcols,"32-bit float");
	for i = 1 to TMlins
    {
	    for j = 1 to TMcols
	    {
            SBI4TM[i,j] = (0.33183 * REFS4TM1[i,j]) + (0.33121 * REFS4TM2[i,j]) + (0.55177 * REFS4TM3[i,j]) + (0.42514 * REFS4TM4[i,j]) + (0.48087 * REFS4TM5[i,j]) + (0.25252 * REFS4TM7[i,j]);
		}
	}
    sbi4min = GlobalMin(SBI4TM);
    sbi4max = GlobalMax(SBI4TM);
    sbi4mean = GlobalMean(SBI4TM);
    sbi4sd = GlobalSD(SBI4TM);
}
else
{
	raster SBI4MSS;
	CreateTempRaster(SBI4MSS, MSSlins, MSScols,"32-bit float");
      for i = 1 to MSSlins
	{
	     for j = 1 to MSScols
	     {
	         SBI4MSS[i,j] = (0.332 * REFS4MSS1[i,j]) + (0.603 * REFS4MSS2[i,j]) + (0.675 * REFS4MSS3[i,j]) + (0.262 * REFS4MSS4[i,j]);
	     }
    }
    sbi4min = GlobalMin(SBI4MSS);
    sbi4max = GlobalMax(SBI4MSS);
    sbi4mean = GlobalMean(SBI4MSS);
    sbi4sd = GlobalSD(SBI4MSS);
}
printf( "Computing SBI-Rasters done...\n\n" );
#######################################################################################
#### Find SBI histogram spread and find out about the masterimage
#######################################################################################
sbi1spread = sbi1max - sbi1min;
printf("Sbi1spread: %12f Sbi1max: %12f Sbit1min: %12f\n", sbi1spread, sbi1max, sbi1min);
sbi2spread = sbi2max - sbi2min;
printf("Sbi2spread: %12f Sbi2max: %12f Sbit2min: %12f\n", sbi2spread, sbi2max, sbi2min);
sbi3spread = sbi3max - sbi3min;
printf("Sbi3spread: %12f Sbi3max: %12f Sbit3min: %12f\n", sbi3spread, sbi3max, sbi3min);
sbi4spread = sbi4max - sbi4min;
printf("Sbi4spread: %12f Sbi4max: %12f Sbit4min: %12f\n\n", sbi4spread, sbi4max, sbi4min);
printf("Starting of looking for the new master...\n\n");
if ( ( sensors1 == 5 or sensors1 == 4 or sensors1 == 3 or sensors1 == 2 or sensors1 == 1 ) && ( sensors2 == 5 or sensors2 == 4 or sensors2 == 3 or sensors2 == 2 or sensors2 == 1 ) && ( sensors3 == 5 or sensors3 == 4 or sensors3 == 3 or sensors3 == 2 or sensors3 == 1 ) && ( sensors4 == 5 or sensors4 == 4 or sensors4 == 3 or sensors4 == 2 or sensors4 == 1 ) )
{
    printf("All entered scenes are MSS sensors\n");
    if ( sbi1spread > sbi2spread && sbi1spread > sbi3spread && sbi1spread > sbi4spread )
    {
        slaveMaster = 1;
        printf("Scene 1 is the new master (MSS-Scenes only)\n\n");
    }
    
    else if ( sbi2spread > sbi1spread && sbi2spread > sbi3spread && sbi2spread > sbi4spread )
    {
        slaveMaster = 2;
        printf("Scene 2 is the new master (MSS-Scenes only)\n\n");
    }
    
    else if ( sbi3spread > sbi1spread && sbi3spread > sbi2spread && sbi3spread > sbi4spread )
    {
        slaveMaster = 3;
        printf("Scene 3 is the new master (MSS-Scenes only)\n\n");
    }
    
    else if ( sbi4spread > sbi1spread && sbi4spread > sbi2spread && sbi4spread > sbi3spread )
    {
        slaveMaster = 4;
        printf("Scene 4 is the new master (MSS-Scenes only)\n\n");
    }
}
else    # a mixed setup - MSS together with TM and/or ETM scenes  
{
    printf("A mixed setup - There are MSS together with TM and/or ETM scenes - TM and ETM scenes are allowed as master only...\n");
    if ( sbi1spread > sbi2spread && sbi1spread > sbi3spread && sbi1spread > sbi4spread )
    {
        if ( sensors1 == 7 or sensors1 == 6)
        {
            slaveMaster = 1;
            printf("Scene 1 is the new master...\n\n");
        }
        
        else
        {
            printf("Scene 1 has had the widest spread, but it is a MSS sensor... Looking out for the next smaller spread...\n");
            if ( sbi2spread > sbi3spread && sbi2spread > sbi4spread )
            {
                if ( sensors2 == 7 or sensors2 == 6)
                {
                    slaveMaster = 2;
                    printf("Scene 2 is the new master...\n\n");
                }
                
                else
                {
                    printf("Scene 1 has had the widest spread, but it is a MSS sensor, same like Scene 2... Looking out for the next smaller spread...\n");
                    if ( sbi3spread > sbi4spread )
                    {
                        if ( sensors3 == 7 or sensors3 == 6)
                        {
                            slaveMaster = 3;
                            printf("Scene 3 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 4;
                            printf("Scene 4 is the new master...\n\n");
                        }
                    }
                    
                    else if ( sbi4spread > sbi3spread )
                    {
                        if ( sensors4 == 7 or sensors4 == 6)
                        {
                            slaveMaster = 4;
                            printf("Scene 4 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 3;
                            printf("Scene 3 is the new master...\n\n");
                        }
                    }
                }
            }
            
            else if ( sbi3spread > sbi2spread && sbi3spread > sbi4spread )
            {
                if ( sensors3 == 7 or sensors3 == 6)
                {
                    slaveMaster = 3;
                    printf("Hail to Scene 3 our new master...\n\n");
                }
                
                else
                {
                    printf("Scene 1 has had the widest spread, but it is a MSS sensor, same like Scene 3... Looking out for the next smaller spread...\n");
                    if ( sbi2spread > sbi4spread )
                    {
                        if ( sensors2 == 7 or sensors2 == 6)
                        {
                            slaveMaster = 2;
                            printf("Scene 2 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 4;
                            printf("Scene 4 is the new master...\n\n");
                        }
                    }
                    
                    else if ( sbi4spread > sbi2spread )
                    {
                        if ( sensors4 == 7 or sensors4 == 6)
                        {
                            slaveMaster = 4;
                            printf("Scene 4 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 2;
                            printf("Scene 2 is the new master...\n\n");
                        }
                    }
                }
            }
            
            else if ( sbi4spread > sbi2spread && sbi4spread > sbi3spread )
            {
                if ( sensors4 == 7 or sensors4 == 6)
                {
                    slaveMaster = 4;
                    printf("Scene 4 is the new master...\n\n");
                }
                
                else
                {
                    printf("Scene 1 has had the widest spread, but it is a MSS sensor, same like Scene 4... Looking out for the next smaller spread...\n");
                    if ( sbi2spread > sbi3spread )
                    {
                        if ( sensors2 == 7 or sensors2 == 6)
                        {
                            slaveMaster = 2;
                            printf("Scene 2 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 3;
                            printf("Scene 3 is the new master...\n\n");
                        }
                    }
                    
                    else if ( sbi3spread > sbi2spread )
                    {
                        if ( sensors3 == 7 or sensors3 == 6)
                        {
                            slaveMaster = 3;
                            printf("Scene 3 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 2;
                            printf("Scene 2 is the new master...\n\n");
                        }
                    }
                }
            }
        }
    }
    
    else if ( sbi2spread > sbi1spread && sbi2spread > sbi3spread && sbi2spread > sbi4spread )
    {
        if ( sensors2 == 7 or sensors2 == 6)
        {
            slaveMaster = 2;
            printf("Scene 2 is the new master...\n\n");
        }
        
        else
        {
            printf("Scene 2 has had the widest spread, but it is a MSS sensor... Looking out for the next smaller spread...\n");
            if ( sbi1spread > sbi3spread && sbi1spread > sbi4spread )
            {
                if ( sensors1 == 7 or sensors1 == 6)
                {
                    slaveMaster = 1;
                    printf("Scene 1 is the new master...\n\n");
                }
                
                else
                {
                    printf("Scene 2 has had the widest spread, but it is a MSS sensor, same like Scene 1... Looking out for the next smaller spread...\n");
                    if ( sbi3spread > sbi4spread )
                    {
                        if ( sensors3 == 7 or sensors3 == 6)
                        {
                            slaveMaster = 3;
                            printf("Scene 3 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 4;
                            printf("Scene 4 is the new master...\n\n");
                        }
                    }
                    
                    else if ( sbi4spread > sbi3spread )
                    {
                        if ( sensors4 == 7 or sensors4 == 6)
                        {
                            slaveMaster = 4;
                            printf("Scene 4 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 3;
                            printf("Scene 3 is the new master...\n\n");
                        }
                    }
                }
            }
            
            else if ( sbi3spread > sbi1spread && sbi3spread > sbi4spread )
            {
                if ( sensors3 == 7 or sensors3 == 6)
                {
                    slaveMaster = 3;
                    printf("Scene 3 is the new master...\n\n");
                }
                
                else
                {
                    printf("Scene 2 has had the widest spread, but it is a MSS sensor, same like Scene 3... Looking out for the next smaller spread...\n");
                    if ( sbi1spread > sbi4spread )
                    {
                        if ( sensors1 == 7 or sensors1 == 6)
                        {
                            slaveMaster = 1;
                            printf("Scene 1 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 4;
                            printf("Scene 4 is the new master...\n\n");
                        }
                    }
                    
                    else if ( sbi4spread > sbi1spread )
                    {
                        if ( sensors4 == 7 or sensors4 == 6)
                        {
                            slaveMaster = 4;
                            printf("Scene 4 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 1;
                            printf("Scene 1 is the new master...\n\n");
                        }
                    }
                }
            }
            
            else if ( sbi4spread > sbi1spread && sbi4spread > sbi3spread )
            {
                if ( sensors4 == 7 or sensors4 == 6)
                {
                    slaveMaster = 4;
                    printf("Scene 4 is the new master...\n\n");
                }
                
                else
                {
                    printf("Scene 2 has had the widest spread, but it is a MSS sensor, same like Scene 4... Looking out for the next smaller spread...\n");
                    if ( sbi1spread > sbi3spread )
                    {
                        if ( sensors1== 7 or sensors1 == 6)
                        {
                            slaveMaster = 1;
                            printf("Scene 1 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 3;
                            printf("Scene 3 is the new master...\n\n");
                        }
                    }
                    
                    else if ( sbi3spread > sbi1spread )
                    {
                        if ( sensors3 == 7 or sensors3 == 6)
                        {
                            slaveMaster = 3;
                            printf("Scene 3 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 1;
                            printf("Scene 1 is the new master...\n\n");
                        }
                    }
                }
            }
        }
    }
    
    else if ( sbi3spread > sbi1spread && sbi3spread && sbi2spread && sbi3spread > sbi4spread )
    {
        if ( sensors3 == 7 or sensors3 == 6)
        {
            slaveMaster = 3;
            printf("Scene 3 is the new master...\n\n");
        }
        
        else
        {
            printf("Scene 3 has had the widest spread, but it is a MSS sensor... Looking out for the next smaller spread...\n");
            if ( sbi1spread > sbi2spread && sbi1spread > sbi4spread )
            {
                if ( sensors1 == 7 or sensors1 == 6)
                {
                    slaveMaster = 1;
                    printf("Scene 1 is the new master...\n\n");
                }
                
                else
                {
                    printf("Scene 3 has had the widest spread, but it is a MSS sensor, same like Scene 1... Looking out for the next smaller spread...\n");
                    if ( sbi2spread > sbi4spread )
                    {
                        if ( sensors2 == 7 or sensors2 == 6)
                        {
                            slaveMaster = 2;
                            printf("Scene 2 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 4;
                            printf("Scene 4 is the new master...\n\n");
                        }
                    }
                    
                    else if ( sbi4spread > sbi2spread )
                    {
                        if ( sensors4 == 7 or sensors4 == 6)
                        {
                            slaveMaster = 4;
                            printf("Scene 4 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 2;
                            printf("Scene 2 is the new master...\n\n");
                        }
                    }
                }
            }
            
            else if ( sbi2spread > sbi1spread && sbi2spread > sbi4spread )
            {
                if ( sensors2 == 7 or sensors2 == 6)
                {
                    slaveMaster = 2;
                    printf("Scene 2 is the new master...\n\n");
                }
                
                else
                {
                    printf("Scene 3 has had the widest spread, but it is a MSS sensor, same like Scene 2... Looking out for the next smaller spread...\n");
                    if ( sbi1spread > sbi4spread )
                    {
                        if ( sensors1 == 7 or sensors1 == 6)
                        {
                            slaveMaster = 1;
                            printf("Scene 1 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 4;
                            printf("Scene 4 is the new master...\n\n");
                        }
                    }
                    
                    else if ( sbi4spread > sbi1spread )
                    {
                        if ( sensors4 == 7 or sensors4 == 6)
                        {
                            slaveMaster = 4;
                            printf("Scene 4 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 1;
                            printf("Scene 1 is the new master...\n\n");
                        }
                    }
                }
            }
            
            else if ( sbi4spread > sbi1spread && sbi4spread > sbi2spread )
            {
                if ( sensors4 == 7 or sensors4 == 6)
                {
                    slaveMaster = 4;
                    printf("Scene 4 is the new master...\n\n");
                }
                
                else
                {
                    printf("Scene 3 has had the widest spread, but it is a MSS sensor, same like Scene 4... Looking out for the next smaller spread...\n");
                    if ( sbi1spread > sbi2spread )
                    {
                        if ( sensors1 == 7 or sensors1 == 6)
                        {
                            slaveMaster = 1;
                            printf("Scene 1 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 2;
                            printf("Scene 2 is the new master...\n\n");
                        }
                    }
                    
                    else if ( sbi2spread > sbi1spread )
                    {
      if ( sensors2 == 7 or sensors2 == 6)
                        {
                            slaveMaster = 2;
                            printf("Scene 2 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 1;
                            printf("Scene 1 is the new master...\n\n");
                        }
                    }
                }
            }
        }
    }
    
    else if ( sbi4spread > sbi1spread && sbi4spread > sbi2spread && sbi4spread > sbi3spread )
    {
        if ( sensors4 == 7 or sensors4 == 6)
        {
            slaveMaster = 4;
            printf("Scene 4 is the new master...\n\n");
        }
        
        else
        {
            printf("Scene 4 has had the widest spread, but it is a MSS sensor... Looking out for the next smaller spread...\n");
            if ( sbi1spread > sbi2spread && sbi1spread > sbi3spread )
            {
                if ( sensors1 == 7 or sensors1 == 6)
                {
                    slaveMaster = 1;
                    printf("Scene 1 is the new master...\n\n");
                }
                
                else
                {
                    printf("Scene 4 has had the widest spread, but it is a MSS sensor, same like Scene 1... Looking out for the next smaller spread...\n");
                    if ( sbi2spread > sbi3spread )
                    {
                        if ( sensors2 == 7 or sensors2 == 6)
                        {
                            slaveMaster = 2;
                            printf("Scene 2 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 3;
                            printf("Scene 3 is the new master...\n\n");
                        }
                    }
                    
                    else if ( sbi3spread > sbi2spread )
                    {
                        if ( sensors3 == 7 or sensors3 == 6)
                        {
                            slaveMaster = 3;
                            printf("Scene 3 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 2;
                            printf("Scene 2 is the new master...\n\n");
                        }
                    }
                }
            }
            
            else if ( sbi2spread > sbi1spread && sbi2spread > sbi3spread )
            {
                if ( sensors2 == 7 or sensors2 == 6)
                {
                    slaveMaster = 2;
                    printf("Scene 2 is the new master...\n\n");
                }
                
                else
                {
                    printf("Scene 4 has had the widest spread, but it is a MSS sensor, same like Scene 2... Looking out for the next smaller spread...\n");
                    if ( sbi1spread > sbi3spread )
                    {
                        if ( sensors1 == 7 or sensors1 == 6)
                        {
                            slaveMaster = 1;
                            printf("Scene 1 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 3;
                            printf("Scene 3 is the new master...\n\n");
                        }
                    }
                    
                    else if ( sbi3spread > sbi1spread )
                    {
                        if ( sensors3 == 7 or sensors3 == 6)
                        {
                            slaveMaster = 3;
                            printf("Scene 3 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 1;
                            printf("Scene 1 is the new master...\n\n");
                        }
                    }
                }
            }
            
            else if ( sbi3spread > sbi1spread && sbi3spread > sbi2spread )
            {
                if ( sensors3 == 7 or sensors3 == 6)
                {
                    slaveMaster = 3;
                    printf("Scene 3 is the new master...\n\n");
                }
                
                else
                {
                    printf("Scene 1 has had the widest spread, but it is a MSS sensor, same like Scene 4... Looking out for the next smaller spread...\n");
                    if ( sbi1spread > sbi2spread )
                    {
                        if ( sensors1 == 7 or sensors1 == 6)
                        {
                            slaveMaster = 1;
                            printf("Scene 1 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 2;
                            printf("Scene 2 is the new master...\n\n");
                        }
                    }
                    
                    else if ( sbi2spread > sbi1spread )
                    {
                        if ( sensors2 == 7 or sensors2 == 6)
                        {
                            slaveMaster = 2;
                            printf("Scene 2 is the new master...\n\n");
                        }
                        
                        else
                        {
                            slaveMaster = 1;
                            printf("Scene 1 is the new master...\n\n");
                        }
                    }
                }
            }
        }
    }
}
#######################################################################################
#### Find PIFS
#######################################################################################
######################################## Scene 1 ######################################
if ( sensors1 == 7 )
{                     
numeric ETM1realSize, ETM1realSizeROUNDED, ETM1tailDARK, ETM1tailBRIGHT, darkTAILfinalETM1, brightTAILfinalETM1, ETM1tailPosition;
numeric ETM1nullValCount = 0;                        # Null Value count for ETM1
numeric ETM1realSizeNULL = 0;                        # pixels with value 0
numeric ETM1realArrayCount = 1;
numeric countETM1dark = 0;                           # Dark Pif pixel count
numeric countETM1bright = 0;                         # Bright Pif pixel count
numeric countS1PIF = 0;                              # overall Pif count
 
for i = 1 to ETMlins
{
    for j = 1 to ETMcols
    {
		if (IsNull(SBI1ETM[i,j]) == 1)
		{
		ETM1nullValCount = ETM1nullValCount + 1;
		}		 
    }
}
ETM1realSize = (ETMlins * ETMcols) - ETM1nullValCount;
array allValuesSbiETM1[ETM1realSize];
for i = 1 to ETMlins
{
    for j = 1 to ETMcols
    {     
		if (IsNull(SBI1ETM[i,j]) == 0)
		{
		  allValuesSbiETM1[ETM1realArrayCount] = SBI1ETM[i,j];		 
		  ETM1realArrayCount = ETM1realArrayCount + 1;
	
		  if ( SBI1ETM[i,j] == 0 )
		  {
		      ETM1realSizeNULL = ETM1realSizeNULL + 1;
		  }
		}
    }
}
	numeric lastETM1 = ETM1realSize;
	numeric hETM1 = 1;
	while ( (hETM1 * 3 + 1) < lastETM1-1 )
	{
		hETM1 = 3 * hETM1 + 1;
	}
	
	while ( hETM1 > 0 )
	{
		for i = hETM1-1 to lastETM1               # for each of the h sets of elements
		{
			numeric keyETM1 = allValuesSbiETM1[i];
			numeric jETM1 = i;
		
			while (jETM1 >= hETM1 && allValuesSbiETM1[jETM1 - hETM1] > keyETM1)
			{
				allValuesSbiETM1[jETM1] = allValuesSbiETM1[jETM1 - hETM1];
				jETM1 = jETM1 - hETM1;
			}
			allValuesSbiETM1[jETM1] = keyETM1;
		}
		hETM1 = floor(hETM1/3);
	}
ETM1tailPosition = (ETM1realSize - ETM1realSizeNULL) * (histoTailInputVAL / 100);
ETM1realSizeROUNDED = round(ETM1tailPosition);            					         # ETM1tailNUM rounded to gain a integer value
ETM1tailDARK =  ETM1realSizeNULL + ETM1realSizeROUNDED;
ETM1tailBRIGHT = ETM1realSize - ETM1realSizeROUNDED;
darkTAILfinalETM1 = allValuesSbiETM1[ETM1tailDARK];
brightTAILfinalETM1 = allValuesSbiETM1[ETM1tailBRIGHT];			                      # Final Threshold value, not position
  for i = 1 to ETMlins									                             # Generate dark PIF mask for Scene 1			
  {
	for j = 1 to ETMcols
	{
	if (SBI1ETM[i,j] > 0 && SBI1ETM[i,j] <= darkTAILfinalETM1)
	{
		S1darkMASK[i,j] = 1;
		countETM1dark = countETM1dark + 1;					# Dark PIF Pixel count
	}
	else
	{
		S1darkMASK[i,j] = 0;
	}
	}
  }
  for i = 1 to ETMlins									#Generate bright PIF mask for Scene 1
  {
	for j = 1 to ETMcols
	{
	if (SBI1ETM[i,j] >= brightTAILfinalETM1)
	{
		S1brightMASK[i,j] = 1;
		countETM1bright = countETM1bright + 1;				# Bright PIF Pixel count
	}
	else
	{
		S1brightMASK[i,j] = 0;
	}
	}
  }
 if ( countETM1dark >= pifDarkVAL && countETM1bright >= pifBrightVAL )						#Generate whole PIF mask for Scene 1
 {
  for i = 1 to ETMlins
  {
	for j = 1 to ETMcols
	{
	if ( (S1darkMASK[i,j] == 1 && S1brightMASK[i,j] == 1) or (S1darkMASK[i,j] == 1 && S1brightMASK[i,j] == 0) or (S1darkMASK[i,j] == 0 && S1brightMASK[i,j] == 1) )
	{
	S1MASK[i,j] = 1; 
	countS1PIF = countS1PIF + 1;
	} 
	else if ( S1darkMASK[i,j] == 0 && S1brightMASK[i,j] == 0 ) 
	{
	S1MASK[i,j] = 0;
	}
	}
  }
 }
 
else if ( countETM1dark < pifDarkVAL && countETM1bright >= pifBrightVAL )
{
    printf("%3i dark PIFs were needed for Scene 1 but only %3i were found. Quitting\n\n",pifDarkVAL, countETM1dark);
    Exit();
}
else if ( countETM1bright < pifBrightVAL && countETM1dark >= pifDarkVAL ) 
{
	printf("%3i bright PIFs were needed for Scene 1 but only %3i were found. Quitting\n\n",pifBrightVAL, countETM1bright);
	Exit();
}
else if ( countETM1dark < pifDarkVAL && countETM1bright < pifBrightVAL ) 
{
    printf("Both dark and bright PIFs were way too few.\n%3i dark PIFs were needed but only %3i found.\n%3i bright PIFs were needed but only %3i found.\nQuitting\n",pifDarkVAL, countETM1dark, pifBrightVAL, countETM1bright);
    Exit();
}
printf("The SBI raster (Scene 1 - ETM) consists of %12i pixels\n", ETM1realSize);
printf("In the raster %12i NullValues were found and %12i pixels have the value 0\n", ETM1nullValCount, ETM1realSizeNULL);
printf("Dark PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", ETM1tailDARK, darkTAILfinalETM1);
printf("Bright PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", ETM1tailBRIGHT, brightTAILfinalETM1);
printf("Scene 1 has %12i Pseudo Invariant Features\n\n", countS1PIF);
}
else if ( sensors1 == 6 )
{
numeric TM1realSize, TM1realSizeROUNDED, TM1tailDARK, TM1tailBRIGHT, darkTAILfinalTM1, brightTAILfinalTM1, TM1tailPosition;
numeric TM1nullValCount = 0;                         # Null Value count for TM1
numeric TM1realSizeNULL = 0;                         # pixels with value 0
numeric TM1realArrayCount = 1;
numeric countTM1dark = 0;                           # Dark Pif pixel count
numeric countTM1bright = 0;                         # Bright Pif pixel count
numeric countS1PIF = 0;                             # overall Pif count
 
for i = 1 to TMlins
{
    for j = 1 to TMcols
    {
        
		if (IsNull(SBI1TM[i,j]) == 1)
		{
		TM1nullValCount = TM1nullValCount + 1;
		}		 
    }
}
TM1realSize = (TMlins * TMcols) - TM1nullValCount;
array allValuesSbiTM1[TM1realSize];
for i = 1 to TMlins
{
    for j = 1 to TMcols
    {     
		if (IsNull(SBI1TM[i,j]) == 0)
		{
		  allValuesSbiTM1[TM1realArrayCount] = SBI1TM[i,j];		 
		  TM1realArrayCount = TM1realArrayCount + 1;
	
		  if ( SBI1TM[i,j] == 0 )
		  {
		      TM1realSizeNULL = TM1realSizeNULL + 1;
		  }
		}
    }
}
	numeric lastTM1 = TM1realSize;
	numeric hTM1 = 1;
	while ( (hTM1 * 3 + 1) < lastTM1-1 )
	{
		hTM1 = 3 * hTM1 + 1;
	}
	
	while ( hTM1 > 0 )
	{
		for i = hTM1-1 to lastTM1               # for each of the h sets of elements
		{
			numeric keyTM1 = allValuesSbiTM1[i];
			numeric jTM1 = i;
		
			while (jTM1 >= hTM1 && allValuesSbiTM1[jTM1 - hTM1] > keyTM1)
			{
				allValuesSbiTM1[jTM1] = allValuesSbiTM1[jTM1 - hTM1];
				jTM1 = jTM1 - hTM1;
			}
			allValuesSbiTM1[jTM1] = keyTM1;
		}
		hTM1 = floor(hTM1/3);
	}
TM1tailPosition = (TM1realSize - TM1realSizeNULL)  * (histoTailInputVAL / 100);
TM1realSizeROUNDED = round(TM1tailPosition);            					               # TM1tailNUM rounded to gain a integer value
TM1tailDARK =  TM1realSizeNULL + TM1realSizeROUNDED;
TM1tailBRIGHT = TM1realSize - TM1realSizeROUNDED;
darkTAILfinalTM1 = allValuesSbiTM1[TM1tailDARK];
brightTAILfinalTM1 = allValuesSbiTM1[TM1tailBRIGHT];			                             # Final Threshold value, not position
  for i = 1 to TMlins									                                  # Generate dark PIF mask for Scene 1			
  {
	for j = 1 to TMcols
	{
	if (SBI1TM[i,j] > 0 && SBI1TM[i,j] <= darkTAILfinalTM1)
	{
		S1darkMASK[i,j] = 1;
		countTM1dark = countTM1dark + 1;					                                 # Dark PIF Pixel count
	}
	else
	{
		S1darkMASK[i,j] = 0;
	}
	}
  }
  for i = 1 to TMlins									#Generate bright PIF mask for Scene 1
  {
	for j = 1 to TMcols
	{
	if (SBI1TM[i,j] >= brightTAILfinalTM1)
	{
		S1brightMASK[i,j] = 1;
		countTM1bright = countTM1bright + 1;				# Bright PIF Pixel count
	}
	else
	{
		S1brightMASK[i,j] = 0;
	}
	}
  }
 if ( countTM1dark >= pifDarkVAL && countTM1bright >= pifBrightVAL )						#Generate whole PIF mask for Scene 1
 {
  for i = 1 to TMlins
  {
	for j = 1 to TMcols
	{
	if ( (S1darkMASK[i,j] == 1 && S1brightMASK[i,j] == 1) or (S1darkMASK[i,j] == 1 && S1brightMASK[i,j] == 0) or (S1darkMASK[i,j] == 0 && S1brightMASK[i,j] == 1) )
	{
	S1MASK[i,j] = 1; 
	countS1PIF = countS1PIF + 1;
	} 
	else if ( S1darkMASK[i,j] == 0 && S1brightMASK[i,j] == 0 ) 
	{
	S1MASK[i,j] = 0;
	}
	}
  }
 }
 
else if ( countTM1dark < pifDarkVAL && countTM1bright >= pifBrightVAL )
{
    printf("%3i dark PIFs were needed for Scene 1 but only %3i were found. Quitting\n\n",pifDarkVAL, countTM1dark);
    Exit();
}
else if ( countTM1bright < pifBrightVAL && countTM1dark >= pifDarkVAL ) 
{
	printf("%3i bright PIFs were needed for Scene 1 but only %3i were found. Quitting\n\n",pifBrightVAL, countTM1bright);
	Exit();
}
else if ( countTM1dark < pifDarkVAL && countTM1bright < pifBrightVAL ) 
{
    printf("Both dark and bright PIFs were way too few.\n%3i dark PIFs were needed but only %3i found.\n%3i bright PIFs were needed but only %3i found.\nQuitting\n",pifDarkVAL, countTM1dark, pifBrightVAL, countTM1bright);
    Exit();
}
printf("The SBI raster (Scene 1 - TM) consists of %12i pixels\n", TM1realSize);
printf("In the raster %12i NullValues were found and %12i pixels have the value 0\n", TM1nullValCount, TM1realSizeNULL);
printf("Dark PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", TM1tailDARK, darkTAILfinalTM1);
printf("Bright PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", TM1tailBRIGHT, brightTAILfinalTM1);
printf("Scene 1 has %12i Pseudo Invariant Features\n\n", countS1PIF);
}
else
{
numeric MSS1realSize, MSS1realSizeROUNDED, MSS1tailDARK, MSS1tailBRIGHT, darkTAILfinalMSS1, brightTAILfinalMSS1, MSS1tailPosition;
numeric MSS1nullValCount = 0;                           # Null Value count for MSS1
numeric MSS1realSizeNULL = 0;                        # pixels with value 0
numeric MSS1realArrayCount = 1;
numeric countMSS1dark = 0;                           # Dark Pif pixel count
numeric countMSS1bright = 0;                         # Bright Pif pixel count
numeric countS1PIF = 0;                              # overall Pif count
 
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {
        
		if (IsNull(SBI1MSS[i,j]) == 1)
		{
		MSS1nullValCount = MSS1nullValCount + 1;
		}		 
    }
}
MSS1realSize = (MSSlins * MSScols) - MSS1nullValCount;
array allValuesSbiMSS1[MSS1realSize];
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {     
		if (IsNull(SBI1MSS[i,j]) == 0)
		{
		  allValuesSbiMSS1[MSS1realArrayCount] = SBI1MSS[i,j];		 
		  MSS1realArrayCount = MSS1realArrayCount + 1;
	
		  if ( SBI1MSS[i,j] == 0 )
		  {
		      MSS1realSizeNULL = MSS1realSizeNULL + 1;
		  }
		}
    }
}
	numeric lastMSS1 = MSS1realSize;
	numeric hMSS1 = 1;
	while ( (hMSS1 * 3 + 1) < lastMSS1 - 1 )
	{
		hMSS1 = 3 * hMSS1 + 1;
	}
	
	while ( hMSS1 > 0 )
	{
		for i = hMSS1 - 1 to lastMSS1               # for each of the h sets of elements
		{
			numeric keyMSS1 = allValuesSbiMSS1[i];
			numeric jMSS1 = i;
		
			while (jMSS1 >= hMSS1 && allValuesSbiMSS1[jMSS1 - hMSS1] > keyMSS1)
			{
				allValuesSbiMSS1[jMSS1] = allValuesSbiMSS1[jMSS1 - hMSS1];
				jMSS1 = jMSS1 - hMSS1;
			}
			allValuesSbiMSS1[jMSS1] = keyMSS1;
		}
		hMSS1 = floor(hMSS1/3);
	}
MSS1tailPosition = (MSS1realSize - MSS1realSizeNULL) * (histoTailInputVAL / 100);
MSS1realSizeROUNDED = round(MSS1tailPosition);            					             # MSS1tailNUM rounded to gain a integer value
MSS1tailDARK =  MSS1realSizeNULL + MSS1realSizeROUNDED;
MSS1tailBRIGHT = MSS1realSize - MSS1realSizeROUNDED;
darkTAILfinalMSS1 = allValuesSbiMSS1[MSS1tailDARK];
brightTAILfinalMSS1 = allValuesSbiMSS1[MSS1tailBRIGHT];			# Final Threshold value, not position
  for i = 1 to MSSlins									# Generate dark PIF mask for Scene 1			
  {
	for j = 1 to MSScols
	{
	if (SBI1MSS[i,j] > 0 && SBI1MSS[i,j] <= darkTAILfinalMSS1)
	{
		S1darkMASK[i,j] = 1;
		countMSS1dark = countMSS1dark + 1;					# Dark PIF Pixel count
	}
	else
	{
		S1darkMASK[i,j] = 0;
	}
	}
  }
  for i = 1 to MSSlins									#Generate bright PIF mask for Scene 1
  {
	for j = 1 to MSScols
	{
	if (SBI1MSS[i,j] >= brightTAILfinalMSS1)
	{
		S1brightMASK[i,j] = 1;
		countMSS1bright = countMSS1bright + 1;				# Bright PIF Pixel count
	}
	else
	{
		S1brightMASK[i,j] = 0;
	}
	}
  }
 if ( countMSS1dark >= pifDarkVAL && countMSS1bright >= pifBrightVAL )						#Generate whole PIF mask for Scene 1
 {
  for i = 1 to MSSlins
  {
	for j = 1 to MSScols
	{
	if ( (S1darkMASK[i,j] == 1 && S1brightMASK[i,j] == 1) or (S1darkMASK[i,j] == 1 && S1brightMASK[i,j] == 0) or (S1darkMASK[i,j] == 0 && S1brightMASK[i,j] == 1) )
	{
	S1MASK[i,j] = 1; 
	countS1PIF = countS1PIF + 1;
	} 
	else if ( S1darkMASK[i,j] == 0 && S1brightMASK[i,j] == 0 ) 
	{
	S1MASK[i,j] = 0;
	}
	}
  }
 }
 
else if ( countMSS1dark < pifDarkVAL && countMSS1bright >= pifBrightVAL )
{
    printf("%3i dark PIFs were needed for Scene 1 but only %3i were found. Quitting\n\n", pifDarkVAL, countMSS1dark);
    Exit();
}
else if ( countMSS1bright < pifBrightVAL && countMSS1dark >= pifDarkVAL ) 
{
	printf("%3i bright PIFs were needed for Scene 1 but only %3i were found. Quitting\n\n", pifBrightVAL, countMSS1bright);
	Exit();
}
else if ( countMSS1dark < pifDarkVAL && countMSS1bright < pifBrightVAL ) 
{
    printf("Both dark and bright PIFs were way too few.\n%3i dark PIFs were needed but only %3i found.\n%3i bright PIFs were needed but only %3i found.\nQuitting\n",pifDarkVAL, countMSS1dark, pifBrightVAL, countMSS1bright);
    Exit();
}
printf("The SBI raster (Scene 1 - MSS) consists of %12i pixels\n", MSS1realSize);
printf("In the raster %12i NullValues were found and %12i pixels have the value 0\n", MSS1nullValCount, MSS1realSizeNULL);
printf("Dark PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", MSS1tailDARK, darkTAILfinalMSS1);
printf("Bright PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", MSS1tailBRIGHT, brightTAILfinalMSS1);
printf("Scene 1 has %12i Pseudo Invariant Features\n\n", countS1PIF);
}
######################################## Scene 2 ########################################
if ( sensors2 == 7 )
{
numeric ETM2realSize, ETM2realSizeROUNDED, ETM2tailDARK, ETM2tailBRIGHT, darkTAILfinalETM2, brightTAILfinalETM2, ETM2tailPosition;
numeric ETM2nullValCount = 0;                           # Null Value count for ETM1
numeric ETM2realSizeNULL = 0;                        # pixels with value 0
numeric ETM2realArrayCount = 1;
numeric countETM2dark = 0;                           # Dark Pif pixel count
numeric countETM2bright = 0;                         # Bright Pif pixel count
numeric countS2PIF = 0;                              # overall Pif count
 
for i = 1 to ETMlins
{
    for j = 1 to ETMcols
    {
        
		if (IsNull(SBI2ETM[i,j]) == 1)
		{
		ETM2nullValCount = ETM2nullValCount + 1;
		}		 
    }
}
ETM2realSize = (ETMlins * ETMcols) - ETM2nullValCount;
array allValuesSbiETM2[ETM2realSize];
for i = 1 to ETMlins
{
    for j = 1 to ETMcols
    {     
		if (IsNull(SBI2ETM[i,j]) == 0)
		{
		  allValuesSbiETM2[ETM2realArrayCount] = SBI2ETM[i,j];		 
		  ETM2realArrayCount = ETM2realArrayCount + 1;
	
		  if ( SBI2ETM[i,j] == 0 )
		  {
		      ETM2realSizeNULL = ETM2realSizeNULL + 1;
		  }
		}
    }
}
	numeric lastETM2 = ETM2realSize;
	numeric hETM2 = 1;
	while ( (hETM2 * 3 + 1) < lastETM2 - 1 )
	{
		hETM2 = 3 * hETM2 + 1;
	}
	
	while ( hETM2 > 0 )
	{
		for i = hETM2 - 1 to lastETM2               # for each of the h sets of elements
		{
			numeric keyETM2 = allValuesSbiETM2[i];
			numeric jETM2 = i;
		
			while (jETM2 >= hETM2 && allValuesSbiETM2[jETM2 - hETM2] > keyETM2)
			{
				allValuesSbiETM2[jETM2] = allValuesSbiETM2[jETM2 - hETM2];
				jETM2 = jETM2 - hETM2;
			}
			allValuesSbiETM2[jETM2] = keyETM2;
		}
		hETM2 = floor(hETM2/3);
	}
ETM2tailPosition = (ETM2realSize - ETM2realSizeNULL) * (histoTailInputVAL / 100);
ETM2realSizeROUNDED = round(ETM2tailPosition);            				          	# ETM1tailNUM rounded to gain a integer value
ETM2tailDARK =  ETM2realSizeNULL + ETM2realSizeROUNDED;
ETM2tailBRIGHT = ETM2realSize - ETM2realSizeROUNDED;
darkTAILfinalETM2 = allValuesSbiETM2[ETM2tailDARK];
brightTAILfinalETM2 = allValuesSbiETM2[ETM2tailBRIGHT];			# Final Threshold value, not position
  for i = 1 to ETMlins									# Generate dark PIF mask for Scene 1			
  {
	for j = 1 to ETMcols
	{
	if ( SBI2ETM[i,j] > 0 && SBI2ETM[i,j] <= darkTAILfinalETM2 )
	{
		S2darkMASK[i,j] = 1;
		countETM2dark = countETM2dark + 1;					# Dark PIF Pixel count
	}
	else
	{
		S2darkMASK[i,j] = 0;
	}
	}
  }
  for i = 1 to ETMlins									#Generate bright PIF mask for Scene 1
  {
	for j = 1 to ETMcols
	{
	if ( SBI2ETM[i,j] >= brightTAILfinalETM2 )
	{
		S2brightMASK[i,j] = 1;
		countETM2bright = countETM2bright + 1;				# Bright PIF Pixel count
	}
	else
	{
		S2brightMASK[i,j] = 0;
	}
	}
  }
 if ( countETM2dark >= pifDarkVAL && countETM2bright >= pifBrightVAL )						#Generate whole PIF mask for Scene 1
 {
  for i = 1 to ETMlins
  {
	for j = 1 to ETMcols
	{
	if ( (S2darkMASK[i,j] == 1 && S2brightMASK[i,j] == 1) or (S2darkMASK[i,j] == 1 && S2brightMASK[i,j] == 0) or (S2darkMASK[i,j] == 0 && S2brightMASK[i,j] == 1) )
	{
	S2MASK[i,j] = 1; 
	countS2PIF = countS2PIF + 1;
	} 
	else if ( S2darkMASK[i,j] == 0 && S2brightMASK[i,j] == 0 ) 
	{
	S2MASK[i,j] = 0;
	}
	}
  }
 }
 
else if ( countETM2dark < pifDarkVAL && countETM2bright >= pifBrightVAL )
{
    printf("%3i dark PIFs were needed for Scene 2 but only %3i were found. Quitting\n\n",pifDarkVAL, countETM2dark);
    Exit();
}
else if ( countETM2bright < pifBrightVAL && countETM2dark >= pifDarkVAL ) 
{
	printf("%3i bright PIFs were needed for Scene 2 but only %3i were found. Quitting\n\n",pifBrightVAL, countETM2bright);
	Exit();
}
else if ( countETM2dark < pifDarkVAL && countETM2bright < pifBrightVAL ) 
{
    printf("Both dark and bright PIFs were way too few.\n%3i dark PIFs were needed but only %3i found.\n%3i bright PIFs were needed but only %3i found.\nQuitting\n",pifDarkVAL, countETM2dark, pifBrightVAL, countETM2bright);
    Exit();
}
printf("The SBI raster (Scene 2 - ETM) consists of %12i pixels\n", ETM2realSize);
printf("In the raster %12i NullValues were found and %12i pixels have the value 0\n", ETM2nullValCount, ETM2realSizeNULL);
printf("Dark PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", ETM2tailDARK, darkTAILfinalETM2);
printf("Bright PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", ETM2tailBRIGHT, brightTAILfinalETM2);
printf("Scene 2 has %12i Pseudo Invariant Features\n\n", countS2PIF);
}
else if ( sensors2 == 6 )
{
numeric TM2realSize, TM2realSizeROUNDED, TM2tailDARK, TM2tailBRIGHT, darkTAILfinalTM2, brightTAILfinalTM2, TM2tailPosition;
numeric TM2nullValCount = 0;                         # Null Value count for ETM1
numeric TM2realSizeNULL = 0;                         # pixels with value 0
numeric TM2realArrayCount = 1;
numeric countTM2dark = 0;                           # Dark Pif pixel count
numeric countTM2bright = 0;                         # Bright Pif pixel count
numeric countS2PIF = 0;                              # overall Pif count
 
for i = 1 to TMlins
{
    for j = 1 to TMcols
    {
        
		if (IsNull(SBI2TM[i,j]) == 1)
		{
		TM2nullValCount = TM2nullValCount + 1;
		}		 
    }
}
TM2realSize = (TMlins * TMcols) - TM2nullValCount;
array allValuesSbiTM2[TM2realSize];
for i = 1 to TMlins
{
    for j = 1 to TMcols
    {     
		if (IsNull(SBI2TM[i,j]) == 0)
		{
		  allValuesSbiTM2[TM2realArrayCount] = SBI2TM[i,j];		 
		  TM2realArrayCount = TM2realArrayCount + 1;
	
		  if ( SBI2TM[i,j] == 0 )
		  {
		      TM2realSizeNULL = TM2realSizeNULL + 1;
		  }
		}
    }
}
	numeric lastTM2 = TM2realSize;
	numeric hTM2 = 1;
	while ( (hTM2 * 3 + 1) < lastTM2 - 1 )
	{
		hTM2 = 3 * hTM2 + 1;
	}
	
	while ( hTM2 > 0 )
	{
		for i = hTM2 - 1 to lastTM2               # for each of the h sets of elements
		{
			numeric keyTM2 = allValuesSbiTM2[i];
			numeric jTM2 = i;
		
			while ( jTM2 >= hTM2 && allValuesSbiTM2[jTM2 - hTM2] > keyTM2 )
			{
				allValuesSbiTM2[jTM2] = allValuesSbiTM2[jTM2 - hTM2];
				jTM2 = jTM2 - hTM2;
			}
			allValuesSbiTM2[jTM2] = keyTM2;
		}
		hTM2 = floor(hTM2/3);
	}
TM2tailPosition = (TM2realSize - TM2realSizeNULL) * (histoTailInputVAL / 100);
TM2realSizeROUNDED = round(TM2tailPosition);            					       # ETM1tailNUM rounded to gain a integer value
TM2tailDARK =  TM2realSizeNULL + TM2realSizeROUNDED;
TM2tailBRIGHT = TM2realSize - TM2realSizeROUNDED;
darkTAILfinalTM2 = allValuesSbiTM2[TM2tailDARK];
brightTAILfinalTM2 = allValuesSbiTM2[TM2tailBRIGHT];			# Final Threshold value, not position
  for i = 1 to TMlins									# Generate dark PIF mask for Scene 1			
  {
	for j = 1 to TMcols
	{
	if ( SBI2TM[i,j] > 0 && SBI2TM[i,j] <= darkTAILfinalTM2 )
	{
		S2darkMASK[i,j] = 1;
		countTM2dark = countTM2dark + 1;					# Dark PIF Pixel count
	}
	else
	{
		S2darkMASK[i,j] = 0;
	}
	}
  }
  for i = 1 to TMlins									#Generate bright PIF mask for Scene 1
  {
	for j = 1 to TMcols
	{
	if ( SBI2TM[i,j] >= brightTAILfinalTM2 )
	{
		S2brightMASK[i,j] = 1;
		countTM2bright = countTM2bright + 1;				# Bright PIF Pixel count
	}
	else
	{
		S2brightMASK[i,j] = 0;
	}
	}
  }
 if ( countTM2dark >= pifDarkVAL && countTM2bright >= pifBrightVAL )						#Generate whole PIF mask for Scene 1
 {
  for i = 1 to TMlins
  {
	for j = 1 to TMcols
	{
	if ( (S2darkMASK[i,j] == 1 && S2brightMASK[i,j] == 1) or (S2darkMASK[i,j] == 1 && S2brightMASK[i,j] == 0) or (S2darkMASK[i,j] == 0 && S2brightMASK[i,j] == 1) )
	{
	S2MASK[i,j] = 1; 
	countS2PIF = countS2PIF + 1;
	} 
	else if ( S2darkMASK[i,j] == 0 && S2brightMASK[i,j] == 0 ) 
	{
	S2MASK[i,j] = 0;
	}
	}
  }
 }
 
else if ( countTM2dark < pifDarkVAL && countTM2bright >= pifBrightVAL )
{
    printf("%3i dark PIFs were needed for Scene 2 but only %3i were found. Quitting\n\n",pifDarkVAL, countTM2dark);
    Exit();
}
else if ( countTM2bright < pifBrightVAL && countTM2dark >= pifDarkVAL ) 
{
	printf("%3i bright PIFs were needed for Scene 2 but only %3i were found. Quitting\n\n",pifBrightVAL, countTM2bright);
	Exit();
}
else if ( countTM2dark < pifDarkVAL && countTM2bright < pifBrightVAL ) 
{
    printf("Both dark and bright PIFs were way too few.\n%3i dark PIFs were needed but only %3i found.\n%3i bright PIFs were needed but only %3i found.\nQuitting\n",pifDarkVAL, countTM2dark, pifBrightVAL, countTM2bright);
    Exit();
}
printf("The SBI raster (Scene 2 - TM) consists of %12i pixels\n", TM2realSize);
printf("In the raster %12i NullValues were found and %12i pixels have the value 0\n", TM2nullValCount, TM2realSizeNULL);
printf("Dark PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", TM2tailDARK, darkTAILfinalTM2);
printf("Bright PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", TM2tailBRIGHT, brightTAILfinalTM2);
printf("Scene 2 has %12i Pseudo Invariant Features\n\n", countS2PIF);
}
else
{
numeric MSS2realSize, MSS2realSizeROUNDED, MSS2tailDARK, MSS2tailBRIGHT, darkTAILfinalMSS2, brightTAILfinalMSS2, MSS2tailPosition;
numeric MSS2nullValCount = 0;                        # Null Value count for MSS2
numeric MSS2realSizeNULL = 0;                        # pixels with value 0
numeric MSS2realArrayCount = 1;
numeric countMSS2dark = 0;                           # Dark Pif pixel count
numeric countMSS2bright = 0;                         # Bright Pif pixel count
numeric countS2PIF = 0;                              # overall Pif count
 
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {
        
		if (IsNull(SBI2MSS[i,j]) == 1)
		{
		MSS2nullValCount = MSS2nullValCount + 1;
		}		 
    }
}
MSS2realSize = (MSSlins * MSScols) - MSS2nullValCount;
array allValuesSbiMSS2[MSS2realSize];
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {     
		if (IsNull(SBI2MSS[i,j]) == 0)
		{
		  allValuesSbiMSS2[MSS2realArrayCount] = SBI2MSS[i,j];		 
		  MSS2realArrayCount = MSS2realArrayCount + 1;
	
		  if ( SBI2MSS[i,j] == 0 )
		  {
		      MSS2realSizeNULL = MSS2realSizeNULL + 1;
		  }
		}
    }
}
	numeric lastMSS2 = MSS2realSize;
	numeric hMSS2 = 1;
	while ( (hMSS2 * 3 + 1) < lastMSS2 - 1 )
	{
		hMSS2 = 3 * hMSS2 + 1;
	}
	
	while ( hMSS2 > 0 )
	{
		for i = hMSS2 - 1 to lastMSS2               # for each of the h sets of elements
		{
			numeric keyMSS2 = allValuesSbiMSS2[i];
			numeric jMSS2 = i;
		
			while (jMSS2 >= hMSS2 && allValuesSbiMSS2[jMSS2 - hMSS2] > keyMSS2)
			{
				allValuesSbiMSS2[jMSS2] = allValuesSbiMSS2[jMSS2 - hMSS2];
				jMSS2 = jMSS2 - hMSS2;
			}
			allValuesSbiMSS2[jMSS2] = keyMSS2;
		}
		hMSS2 = floor(hMSS2/3);
	}
MSS2tailPosition = (MSS2realSize - MSS2realSizeNULL) * (histoTailInputVAL / 100);
MSS2realSizeROUNDED = round(MSS2tailPosition);            					                 # MSS2realSizeROUNDED rounded to gain a integer value
MSS2tailDARK =  MSS2realSizeNULL + MSS2realSizeROUNDED;
MSS2tailBRIGHT = MSS2realSize - MSS2realSizeROUNDED;
darkTAILfinalMSS2 = allValuesSbiMSS2[MSS2tailDARK];
brightTAILfinalMSS2 = allValuesSbiMSS2[MSS2tailBRIGHT];			              # Final Threshold value, not position
  for i = 1 to MSSlins									                      # Generate dark PIF mask for Scene 2			
  {
	for j = 1 to MSScols
	{
	if (SBI2MSS[i,j] > 0 && SBI2MSS[i,j] <= darkTAILfinalMSS2)
	{
		S2darkMASK[i,j] = 1;
		countMSS2dark = countMSS2dark + 1;					                   # Dark PIF Pixel count
	}
	else
	{
		S2darkMASK[i,j] = 0;
	}
	}
  }
  for i = 1 to MSSlins									                     #Generate bright PIF mask for Scene 2
  {
	for j = 1 to MSScols
	{
	if (SBI2MSS[i,j] >= brightTAILfinalMSS2)
	{
		S2brightMASK[i,j] = 1;
		countMSS2bright = countMSS2bright + 1;				                # Bright PIF Pixel count
	}
	else
	{
		S2brightMASK[i,j] = 0;
	}
	}
  }
 if ( countMSS2dark >= pifDarkVAL && countMSS2bright >= pifBrightVAL )						#Generate whole PIF mask for Scene 1
 {
  for i = 1 to MSSlins
  {
	for j = 1 to MSScols
	{
	if ( (S2darkMASK[i,j] == 1 && S2brightMASK[i,j] == 1) or (S2darkMASK[i,j] == 1 && S2brightMASK[i,j] == 0) or (S2darkMASK[i,j] == 0 && S2brightMASK[i,j] == 1) )
	{
	S2MASK[i,j] = 1; 
	countS2PIF = countS2PIF + 1;
	} 
	else if ( S2darkMASK[i,j] == 0 && S2brightMASK[i,j] == 0 ) 
	{
	S2MASK[i,j] = 0;
	}
	}
  }
 }
 
else if ( countMSS2dark < pifDarkVAL && countMSS2bright >= pifBrightVAL )
{
    printf("%3i dark PIFs were needed for Scene 2 but only %3i were found. Quitting\n\n", pifDarkVAL, countMSS2dark);
    Exit();
}
else if ( countMSS2bright < pifBrightVAL && countMSS2dark >= pifDarkVAL ) 
{
	printf("%3i bright PIFs were needed for Scene 2 but only %3i were found. Quitting\n\n", pifBrightVAL, countMSS2bright);
	Exit();
}
else if ( countMSS2dark < pifDarkVAL && countMSS2bright < pifBrightVAL ) 
{
    printf("Both dark and bright PIFs were way too few.\n%3i dark PIFs were needed but only %3i found.\n%3i bright PIFs were needed but only %3i found.\nQuitting\n",pifDarkVAL, countMSS2dark, pifBrightVAL, countMSS2bright);
    Exit();
}
printf("The SBI raster (Scene 2 - MSS) consists of %12i pixels\n", MSS2realSize);
printf("In the raster %12i NullValues were found and %12i pixels have the value 0\n", MSS2nullValCount, MSS2realSizeNULL);
printf("Dark PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", MSS2tailDARK, darkTAILfinalMSS2);
printf("Bright PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", MSS2tailBRIGHT, brightTAILfinalMSS2);
printf("Scene 2 has %12i Pseudo Invariant Features\n\n", countS2PIF);
}
######################################## Scene 3 ########################################
if ( sensors3 == 7 )
{
numeric ETM3realSize, ETM3realSizeROUNDED, ETM3tailDARK, ETM3tailBRIGHT, darkTAILfinalETM3, brightTAILfinalETM3, ETM3tailPosition;
numeric ETM3nullValCount = 0;                           # Null Value count for ETM3
numeric ETM3realSizeNULL = 0;                        # pixels with value 0
numeric ETM3realArrayCount = 1;
numeric countETM3dark = 0;                           # Dark Pif pixel count
numeric countETM3bright = 0;                         # Bright Pif pixel count
numeric countS3PIF = 0;                              # overall Pif count
 
for i = 1 to ETMlins
{
    for j = 1 to ETMcols
    {
        
		if (IsNull(SBI3ETM[i,j]) == 1)
		{
		ETM3nullValCount = ETM3nullValCount + 1;
		}		 
    }
}
ETM3realSize = (ETMlins * ETMcols) - ETM3nullValCount;
array allValuesSbiETM3[ETM3realSize];
for i = 1 to ETMlins
{
    for j = 1 to ETMcols
    {     
		if (IsNull(SBI3ETM[i,j]) == 0)
		{
		  allValuesSbiETM3[ETM3realArrayCount] = SBI3ETM[i,j];		 
		  ETM3realArrayCount = ETM3realArrayCount + 1;
	
		  if ( SBI3ETM[i,j] == 0 )
		  {
		      ETM3realSizeNULL = ETM3realSizeNULL + 1;
		  }
		}
    }
}
	numeric lastETM3 = ETM3realSize;
	numeric hETM3 = 1;
	while ( (hETM3 * 3 + 1) < lastETM3 - 1 )
	{
		hETM3 = 3 * hETM3 + 1;
	}
	
	while ( hETM3 > 0 )
	{
		for i = hETM3 - 1 to lastETM3               # for each of the h sets of elements
		{
			numeric keyETM3 = allValuesSbiETM3[i];
			numeric jETM3 = i;
		
			while (jETM3 >= hETM3 && allValuesSbiETM3[jETM3 - hETM3] > keyETM3)
			{
				allValuesSbiETM3[jETM3] = allValuesSbiETM3[jETM3 - hETM3];
				jETM3 = jETM3 - hETM3;
			}
			allValuesSbiETM3[jETM3] = keyETM3;
		}
		hETM3 = floor(hETM3/3);
	}
ETM3tailPosition = (ETM3realSize - ETM3realSizeNULL) * (histoTailInputVAL / 100);
ETM3realSizeROUNDED = round(ETM3tailPosition);            					             # ETM3realSizeROUNDED rounded to gain a integer value
ETM3tailDARK =  ETM3realSizeNULL + ETM3realSizeROUNDED;
ETM3tailBRIGHT = ETM3realSize - ETM3realSizeROUNDED;
darkTAILfinalETM3 = allValuesSbiETM3[ETM3tailDARK];
brightTAILfinalETM3 = allValuesSbiETM3[ETM3tailBRIGHT];			# Final Threshold value, not position
  for i = 1 to ETMlins									# Generate dark PIF mask for Scene 1			
  {
	for j = 1 to ETMcols
	{
	if (SBI3ETM[i,j] > 0 && SBI3ETM[i,j] <= darkTAILfinalETM3)
	{
		S3darkMASK[i,j] = 1;
		countETM3dark = countETM3dark + 1;					# Dark PIF Pixel count
	}
	else
	{
		S3darkMASK[i,j] = 0;
	}
	}
  }
  for i = 1 to ETMlins									#Generate bright PIF mask for Scene 3
  {
	for j = 1 to ETMcols
	{
	if (SBI3ETM[i,j] >= brightTAILfinalETM3)
	{
		S3brightMASK[i,j] = 1;
		countETM3bright = countETM3bright + 1;				# Bright PIF Pixel count
	}
	else
	{
		S3brightMASK[i,j] = 0;
	}
	}
  }
 if ( countETM3dark >= pifDarkVAL && countETM3bright >= pifBrightVAL )						#Generate whole PIF mask for Scene 3
 {
  for i = 1 to ETMlins
  {
	for j = 1 to ETMcols
	{
	if ( (S3darkMASK[i,j] == 1 && S3brightMASK[i,j] == 1) or (S3darkMASK[i,j] == 1 && S3brightMASK[i,j] == 0) or (S3darkMASK[i,j] == 0 && S3brightMASK[i,j] == 1) )
	{
	S3MASK[i,j] = 1; 
	countS3PIF = countS3PIF + 1;
	} 
	else if ( S3darkMASK[i,j] == 0 && S3brightMASK[i,j] == 0 ) 
	{
	S3MASK[i,j] = 0;
	}
	}
  }
 }
 
else if ( countETM3dark < pifDarkVAL && countETM3bright >= pifBrightVAL )
{
    printf("%3i dark PIFs were needed for Scene 3 but only %3i were found. Quitting\n\n",pifDarkVAL, countETM3dark);
    Exit();
}
else if ( countETM3bright < pifBrightVAL && countETM3dark >= pifDarkVAL ) 
{
	printf("%3i bright PIFs were needed for Scene 3 but only %3i were found. Quitting\n\n",pifBrightVAL, countETM3bright);
	Exit();
}
else if ( countETM3dark < pifDarkVAL && countETM3bright < pifBrightVAL ) 
{
    printf("Both dark and bright PIFs were way too few.\n%3i dark PIFs were needed but only %3i found.\n%3i bright PIFs were needed but only %3i found.\nQuitting\n",pifDarkVAL, countETM3dark, pifBrightVAL, countETM3bright);
    Exit();
}
printf("The SBI raster (Scene 3 - ETM) consists of %12i pixels\n", ETM3realSize);
printf("In the raster %12i NullValues were found and %12i pixels have the value 0\n", ETM3nullValCount, ETM3realSizeNULL);
printf("Dark PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", ETM3tailDARK, darkTAILfinalETM3);
printf("Bright PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", ETM3tailBRIGHT, brightTAILfinalETM3);
printf("Scene 3 has %12i Pseudo Invariant Features\n\n", countS3PIF);
}
else if ( sensors3 == 6 )
{
numeric TM3realSize, TM3realSizeROUNDED, TM3tailDARK, TM3tailBRIGHT, darkTAILfinalTM3, brightTAILfinalTM3, TM3tailPosition;
numeric TM3nullValCount = 0;                         # Null Value count for TM3
numeric TM3realSizeNULL = 0;                         # pixels with value 0
numeric TM3realArrayCount = 1;
numeric countTM3dark = 0;                           # Dark Pif pixel count
numeric countTM3bright = 0;                         # Bright Pif pixel count
numeric countS3PIF = 0;                              # overall Pif count
 
for i = 1 to TMlins
{
    for j = 1 to TMcols
    {
        
		if (IsNull(SBI3TM[i,j]) == 1)
		{
		TM3nullValCount = TM3nullValCount + 1;
		}		 
    }
}
TM3realSize = (TMlins * TMcols) - TM3nullValCount;
array allValuesSbiTM3[TM3realSize];
for i = 1 to TMlins
{
    for j = 1 to TMcols
    {     
		if (IsNull(SBI3TM[i,j]) == 0)
		{
		  allValuesSbiTM3[TM3realArrayCount] = SBI3TM[i,j];		 
		  TM3realArrayCount = TM3realArrayCount + 1;
	
		  if ( SBI3TM[i,j] == 0 )
		  {
		      TM3realSizeNULL = TM3realSizeNULL + 1;
		  }
		}
    }
}
	numeric lastTM3 = TM3realSize;
	numeric hTM3 = 1;
	while ( (hTM3 * 3 + 1) < lastTM3 - 1 )
	{
		hTM3 = 3 * hTM3 + 1;
	}
	
	while ( hTM3 > 0 )
	{
		for i = hTM3 - 1 to lastTM3               # for each of the h sets of elements
		{
			numeric keyTM3 = allValuesSbiTM3[i];
			numeric jTM3 = i;
		
			while (jTM3 >= hTM3 && allValuesSbiTM3[jTM3 - hTM3] > keyTM3)
			{
				allValuesSbiTM3[jTM3] = allValuesSbiTM3[jTM3 - hTM3];
				jTM3 = jTM3 - hTM3;
			}
			allValuesSbiTM3[jTM3] = keyTM3;
		}
		hTM3 = floor(hTM3/3);
	}
TM3tailPosition = (TM3realSize - TM3realSizeNULL) * (histoTailInputVAL / 100);
TM3realSizeROUNDED = round(TM3tailPosition);            					               # ETM1tailNUM rounded to gain a integer value
TM3tailDARK =  TM3realSizeNULL + TM3realSizeROUNDED;
TM3tailBRIGHT = TM3realSize - TM3realSizeROUNDED;
darkTAILfinalTM3 = allValuesSbiTM3[TM3tailDARK];
brightTAILfinalTM3 = allValuesSbiTM3[TM3tailBRIGHT];			# Final Threshold value, not position
  for i = 1 to TMlins									# Generate dark PIF mask for Scene 3			
  {
	for j = 1 to TMcols
	{
	if (SBI3TM[i,j] > 0 && SBI3TM[i,j] <= darkTAILfinalTM3)
	{
		S3darkMASK[i,j] = 1;
		countTM3dark = countTM3dark + 1;					# Dark PIF Pixel count
	}
	else
	{
		S3darkMASK[i,j] = 0;
	}
	}
  }
  for i = 1 to TMlins									#Generate bright PIF mask for Scene 1
  {
	for j = 1 to TMcols
	{
	if (SBI3TM[i,j] >= brightTAILfinalTM3)
	{
		S3brightMASK[i,j] = 1;
		countTM3bright = countTM3bright + 1;				# Bright PIF Pixel count
	}
	else
	{
		S3brightMASK[i,j] = 0;
	}
	}
  }
 if ( countTM3dark >= pifDarkVAL && countTM3bright >= pifBrightVAL )						#Generate whole PIF mask for Scene 1
 {
  for i = 1 to TMlins
  {
	for j = 1 to TMcols
	{
	if ( (S3darkMASK[i,j] == 1 && S3brightMASK[i,j] == 1) or (S3darkMASK[i,j] == 1 && S3brightMASK[i,j] == 0) or (S3darkMASK[i,j] == 0 && S3brightMASK[i,j] == 1) )
	{
	S3MASK[i,j] = 1; 
	countS3PIF = countS3PIF + 1;
	} 
	else if ( S3darkMASK[i,j] == 0 && S3brightMASK[i,j] == 0 ) 
	{
	S3MASK[i,j] = 0;
	}
	}
  }
 }
 
else if ( countTM3dark < pifDarkVAL && countTM3bright >= pifBrightVAL )
{
    printf("%3i dark PIFs were needed for Scene 3 but only %3i were found. Quitting\n\n",pifDarkVAL, countTM3dark);
    Exit();
}
else if ( countTM3bright < pifBrightVAL && countTM3dark >= pifDarkVAL ) 
{
	printf("%3i bright PIFs were needed for Scene 3 but only %3i were found. Quitting\n\n",pifBrightVAL, countTM3bright);
	Exit();
}
else if ( countTM3dark < pifDarkVAL && countTM3bright < pifBrightVAL ) 
{
    printf("Both dark and bright PIFs were way too few.\n%3i dark PIFs were needed but only %3i found.\n%3i bright PIFs were needed but only %3i found.\nQuitting\n",pifDarkVAL, countTM3dark, pifBrightVAL, countTM3bright);
    Exit();
}
printf("The SBI raster (Scene 3 - TM) consists of %12i pixels\n", TM3realSize);
printf("In the raster %12i NullValues were found and %12i pixels have the value 0\n", TM3nullValCount, TM3realSizeNULL);
printf("Dark PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", TM3tailDARK, darkTAILfinalTM3);
printf("Bright PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", TM3tailBRIGHT, brightTAILfinalTM3);
printf("Scene 3 has %12i Pseudo Invariant Features\n\n", countS3PIF);
}
else
{
numeric MSS3realSize, MSS3realSizeROUNDED, MSS3tailDARK, MSS3tailBRIGHT, darkTAILfinalMSS3, brightTAILfinalMSS3, MSS3tailPosition;
numeric MSS3nullValCount = 0;                           # Null Value count for MSS3
numeric MSS3realSizeNULL = 0;                        # pixels with value 0
numeric MSS3realArrayCount = 1;
numeric countMSS3dark = 0;                           # Dark Pif pixel count
numeric countMSS3bright = 0;                         # Bright Pif pixel count
numeric countS3PIF = 0;                              # overall Pif count
 
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {
        
		if (IsNull(SBI3MSS[i,j]) == 1)
		{
		MSS3nullValCount = MSS3nullValCount + 1;
		}		 
    }
}
MSS3realSize = (MSSlins * MSScols) - MSS3nullValCount;
array allValuesSbiMSS3[MSS3realSize];
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {     
		if (IsNull(SBI3MSS[i,j]) == 0)
		{
		  allValuesSbiMSS3[MSS3realArrayCount] = SBI3MSS[i,j];		 
		  MSS3realArrayCount = MSS3realArrayCount + 1;
	
		  if ( SBI3MSS[i,j] == 0 )
		  {
		      MSS3realSizeNULL = MSS3realSizeNULL + 1;
		  }
		}
    }
}
	numeric lastMSS3 = MSS3realSize;
	numeric hMSS3 = 1;
	while ( (hMSS3 * 3 + 1) < lastMSS3 - 1 )
	{
		hMSS3 = 3 * hMSS3 + 1;
	}
	
	while ( hMSS3 > 0 )
	{
		for i = hMSS3 - 1 to lastMSS3               # for each of the h sets of elements
		{
			numeric keyMSS3 = allValuesSbiMSS3[i];
			numeric jMSS3 = i;
		
			while (jMSS3 >= hMSS3 && allValuesSbiMSS3[jMSS3 - hMSS3] > keyMSS3)
			{
				allValuesSbiMSS3[jMSS3] = allValuesSbiMSS3[jMSS3 - hMSS3];
				jMSS3 = jMSS3 - hMSS3;
			}
			allValuesSbiMSS3[jMSS3] = keyMSS3;
		}
		hMSS3 = floor(hMSS3/3);
	}
MSS3tailPosition = (MSS3realSize - MSS3realSizeNULL) * (histoTailInputVAL / 100);
MSS3realSizeROUNDED = round(MSS3tailPosition);            					             # MSS2realSizeROUNDED rounded to gain a integer value
MSS3tailDARK =  MSS3realSizeNULL + MSS3realSizeROUNDED;
MSS3tailBRIGHT = MSS3realSize - MSS3realSizeROUNDED;
darkTAILfinalMSS3 = allValuesSbiMSS3[MSS3tailDARK];
brightTAILfinalMSS3 = allValuesSbiMSS3[MSS3tailBRIGHT];			# Final Threshold value, not position
  for i = 1 to MSSlins									# Generate dark PIF mask for Scene 1			
  {
	for j = 1 to MSScols
	{
	if (SBI3MSS[i,j] > 0 && SBI3MSS[i,j] <= darkTAILfinalMSS3)
	{
		S3darkMASK[i,j] = 1;
		countMSS3dark = countMSS3dark + 1;					# Dark PIF Pixel count
	}
	else
	{
		S3darkMASK[i,j] = 0;
	}
	}
  }
  for i = 1 to MSSlins									#Generate bright PIF mask for Scene 1
  {
	for j = 1 to MSScols
	{
	if (SBI3MSS[i,j] >= brightTAILfinalMSS3)
	{
		S3brightMASK[i,j] = 1;
		countMSS3bright = countMSS3bright + 1;				# Bright PIF Pixel count
	}
	else
	{
		S3brightMASK[i,j] = 0;
	}
	}
  }
 if ( countMSS3dark >= pifDarkVAL && countMSS3bright >= pifBrightVAL )						#Generate whole PIF mask for Scene 1
 {
  for i = 1 to MSSlins
  {
	for j = 1 to MSScols
	{
	if ( (S3darkMASK[i,j] == 1 && S3brightMASK[i,j] == 1) or (S3darkMASK[i,j] == 1 && S3brightMASK[i,j] == 0) or (S3darkMASK[i,j] == 0 && S3brightMASK[i,j] == 1) )
	{
	S3MASK[i,j] = 1; 
	countS3PIF = countS3PIF + 1;
	} 
	else if ( S3darkMASK[i,j] == 0 && S3brightMASK[i,j] == 0 ) 
	{
	S3MASK[i,j] = 0;
	}
	}
  }
 }
 
else if ( countMSS3dark < pifDarkVAL && countMSS3bright >= pifBrightVAL )
{
    printf("%3i dark PIFs were needed for Scene 3 but only %3i were found. Quitting\n\n", pifDarkVAL, countMSS3dark);
    Exit();
}
else if ( countMSS3bright < pifBrightVAL && countMSS3dark >= pifDarkVAL ) 
{
	printf("%3i bright PIFs were needed for Scene 3 but only %3i were found. Quitting\n\n", pifBrightVAL, countMSS3bright);
	Exit();
}
else if ( countMSS3dark < pifDarkVAL && countMSS3bright < pifBrightVAL ) 
{
    printf("Both dark and bright PIFs were way too few.\n%3i dark PIFs were needed but only %3i found.\n%3i bright PIFs were needed but only %3i found.\nQuitting\n",pifDarkVAL, countMSS3dark, pifBrightVAL, countMSS3bright);
    Exit();
}
printf("The SBI raster (Scene 3 - MSS) consists of %12i pixels\n", MSS3realSize);
printf("In the raster %12i NullValues were found and %12i pixels have the value 0\n", MSS3nullValCount, MSS3realSizeNULL);
printf("Dark PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", MSS3tailDARK, darkTAILfinalMSS3);
printf("Bright PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", MSS3tailBRIGHT, brightTAILfinalMSS3);
printf("Scene 3 has %12i Pseudo Invariant Features\n\n", countS3PIF);
}
######################################## Scene 4 ########################################
if ( sensors4 == 7 )
{
numeric ETM4realSize, ETM4realSizeROUNDED, ETM4tailDARK, ETM4tailBRIGHT, darkTAILfinalETM4, brightTAILfinalETM4, ETM4tailPosition;
numeric ETM4nullValCount = 0;                           # Null Value count for ETM4
numeric ETM4realSizeNULL = 0;                        # pixels with value 0
numeric ETM4realArrayCount = 1;
numeric countETM4dark = 0;                           # Dark Pif pixel count
numeric countETM4bright = 0;                         # Bright Pif pixel count
numeric countS4PIF = 0;                              # overall Pif count
 
for i = 1 to ETMlins
{
    for j = 1 to ETMcols
    {
        
		if (IsNull(SBI4ETM[i,j]) == 1)
		{
		ETM4nullValCount = ETM4nullValCount + 1;
		}		 
    }
}
ETM4realSize = (ETMlins * ETMcols) - ETM4nullValCount;
array allValuesSbiETM4[ETM4realSize];
for i = 1 to ETMlins
{
    for j = 1 to ETMcols
    {     
		if (IsNull(SBI4ETM[i,j]) == 0)
		{
		  allValuesSbiETM4[ETM4realArrayCount] = SBI4ETM[i,j];		 
		  ETM4realArrayCount = ETM4realArrayCount + 1;
	
		  if ( SBI4ETM[i,j] == 0 )
		  {
		      ETM4realSizeNULL = ETM4realSizeNULL + 1;
		  }
		}
    }
}
	numeric lastETM4 = ETM4realSize;
	numeric hETM4 = 1;
	while ( (hETM4 * 3 + 1) < lastETM4 - 1 )
	{
		hETM4 = 3 * hETM4 + 1;
	}
	
	while ( hETM4 > 0 )
	{
		for i = hETM4 - 1 to lastETM4               # for each of the h sets of elements
		{
			numeric keyETM4 = allValuesSbiETM4[i];
			numeric jETM4 = i;
		
			while (jETM4 >= hETM4 && allValuesSbiETM4[jETM4 - hETM4] > keyETM4)
			{
				allValuesSbiETM4[jETM4] = allValuesSbiETM4[jETM4 - hETM4];
				jETM4 = jETM4 - hETM4;
			}
			allValuesSbiETM4[jETM4] = keyETM4;
		}
		hETM4 = floor(hETM4/3);
	}
ETM4tailPosition = (ETM4realSize - ETM4realSizeNULL) * (histoTailInputVAL / 100);
ETM4realSizeROUNDED = round(ETM4tailPosition);            					             # ETM4realSizeROUNDED rounded to gain a integer value
ETM4tailDARK =  ETM4realSizeNULL + ETM4realSizeROUNDED;
ETM4tailBRIGHT = ETM4realSize - ETM4realSizeROUNDED;
darkTAILfinalETM4 = allValuesSbiETM4[ETM4tailDARK];
brightTAILfinalETM4 = allValuesSbiETM4[ETM4tailBRIGHT];			# Final Threshold value, not position
  for i = 1 to ETMlins									# Generate dark PIF mask for Scene 1			
  {
	for j = 1 to ETMcols
	{
	if (SBI4ETM[i,j] > 0 && SBI4ETM[i,j] <= darkTAILfinalETM4)
	{
		S4darkMASK[i,j] = 1;
		countETM4dark = countETM4dark + 1;					# Dark PIF Pixel count
	}
	else
	{
		S4darkMASK[i,j] = 0;
	}
	}
  }
  for i = 1 to ETMlins									#Generate bright PIF mask for Scene 4
  {
	for j = 1 to ETMcols
	{
	if (SBI4ETM[i,j] >= brightTAILfinalETM4)
	{
		S4brightMASK[i,j] = 1;
		countETM4bright = countETM4bright + 1;				# Bright PIF Pixel count
	}
	else
	{
		S4brightMASK[i,j] = 0;
	}
	}
  }
 if ( countETM4dark >= pifDarkVAL && countETM4bright >= pifBrightVAL )						#Generate whole PIF mask for Scene 4
 {
  for i = 1 to ETMlins
  {
	for j = 1 to ETMcols
	{
	if ( (S4darkMASK[i,j] == 1 && S4brightMASK[i,j] == 1) or (S4darkMASK[i,j] == 1 && S4brightMASK[i,j] == 0) or (S4darkMASK[i,j] == 0 && S4brightMASK[i,j] == 1) )
	{
	S4MASK[i,j] = 1; 
	countS4PIF = countS4PIF + 1;
	} 
	else if ( S4darkMASK[i,j] == 0 && S4brightMASK[i,j] == 0 ) 
	{
	S4MASK[i,j] = 0;
	}
	}
  }
 }
 
else if ( countETM4dark < pifDarkVAL && countETM4bright >= pifBrightVAL )
{
    printf("%3i dark PIFs were needed for Scene 4 but only %3i were found. Quitting\n\n",pifDarkVAL, countETM4dark);
    Exit();
}
else if ( countETM4bright < pifBrightVAL && countETM4dark >= pifDarkVAL ) 
{
	printf("%3i bright PIFs were needed for Scene 4 but only %3i were found. Quitting\n\n",pifBrightVAL, countETM4bright);
	Exit();
}
else if ( countETM4dark < pifDarkVAL && countETM4bright < pifBrightVAL ) 
{
    printf("Both dark and bright PIFs were way too few.\n%3i dark PIFs were needed but only %3i found.\n%3i bright PIFs were needed but only %3i found.\nQuitting\n",pifDarkVAL, countETM4dark, pifBrightVAL, countETM4bright);
    Exit();
}
printf("The SBI raster (Scene 4 - ETM) consists of %12i pixels\n", ETM4realSize);
printf("In the raster %12i NullValues were found and %12i pixels have the value 0\n", ETM4nullValCount, ETM4realSizeNULL);
printf("Dark PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", ETM4tailDARK, darkTAILfinalETM4);
printf("Bright PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", ETM4tailBRIGHT, brightTAILfinalETM4);
printf("Scene 4 has %12i Pseudo Invariant Features\n\n", countS4PIF);
}
else if ( sensors4 == 6 )
{
numeric TM4realSize, TM4realSizeROUNDED, TM4tailDARK, TM4tailBRIGHT, darkTAILfinalTM4, brightTAILfinalTM4, TM4tailPosition;
numeric TM4nullValCount = 0;                         # Null Value count for TM4
numeric TM4realSizeNULL = 0;                         # pixels with value 0
numeric TM4realArrayCount = 1;
numeric countTM4dark = 0;                           # Dark Pif pixel count
numeric countTM4bright = 0;                         # Bright Pif pixel count
numeric countS4PIF = 0;                              # overall Pif count
 
for i = 1 to TMlins
{
    for j = 1 to TMcols
    {
        
		if (IsNull(SBI4TM[i,j]) == 1)
		{
		TM4nullValCount = TM4nullValCount + 1;
		}		 
    }
}
TM4realSize = (TMlins * TMcols) - TM4nullValCount;
array allValuesSbiTM4[TM4realSize];
for i = 1 to TMlins
{
    for j = 1 to TMcols
    {     
		if (IsNull(SBI4TM[i,j]) == 0)
		{
		  allValuesSbiTM4[TM4realArrayCount] = SBI4TM[i,j];		 
		  TM4realArrayCount = TM4realArrayCount + 1;
	
		  if ( SBI4TM[i,j] == 0 )
		  {
		      TM4realSizeNULL = TM4realSizeNULL + 1;
		  }
		}
    }
}
	numeric lastTM4 = TM4realSize;
	numeric hTM4 = 1;
	while ( (hTM4 * 3 + 1) < lastTM4 - 1 )
	{
		hTM4 = 3 * hTM4 + 1;
	}
	
	while ( hTM4 > 0 )
	{
		for i = hTM4 - 1 to lastTM4               # for each of the h sets of elements
		{
			numeric keyTM4 = allValuesSbiTM4[i];
			numeric jTM4 = i;
		
			while (jTM4 >= hTM4 && allValuesSbiTM4[jTM4 - hTM4] > keyTM4)
			{
				allValuesSbiTM4[jTM4] = allValuesSbiTM4[jTM4 - hTM4];
				jTM4 = jTM4 - hTM4;
			}
			allValuesSbiTM4[jTM4] = keyTM4;
		}
		hTM4 = floor(hTM4/3);
	}
TM4tailPosition = (TM4realSize - TM4realSizeNULL) * (histoTailInputVAL / 100);
TM4realSizeROUNDED = round(TM4tailPosition);            					           # TM4realSizeROUNDED rounded to gain a integer value
TM4tailDARK =  TM4realSizeNULL + TM4realSizeROUNDED;
TM4tailBRIGHT = TM4realSize - TM4realSizeROUNDED;
darkTAILfinalTM4 = allValuesSbiTM4[TM4tailDARK];
brightTAILfinalTM4 = allValuesSbiTM4[TM4tailBRIGHT];			# Final Threshold value, not position
  for i = 1 to TMlins									# Generate dark PIF mask for Scene 4			
  {
	for j = 1 to TMcols
	{
	if (SBI4TM[i,j] > 0 && SBI4TM[i,j] <= darkTAILfinalTM4)
	{
		S4darkMASK[i,j] = 1;
		countTM4dark = countTM4dark + 1;					# Dark PIF Pixel count
	}
	else
	{
		S4darkMASK[i,j] = 0;
	}
	}
  }
  for i = 1 to TMlins									#Generate bright PIF mask for Scene 1
  {
	for j = 1 to TMcols
	{
	if (SBI4TM[i,j] >= brightTAILfinalTM4)
	{
		S4brightMASK[i,j] = 1;
		countTM4bright = countTM4bright + 1;				# Bright PIF Pixel count
	}
	else
	{
		S4brightMASK[i,j] = 0;
	}
	}
  }
 if ( countTM4dark >= pifDarkVAL && countTM4bright >= pifBrightVAL )						#Generate whole PIF mask for Scene 4
 {
  for i = 1 to TMlins
  {
	for j = 1 to TMcols
	{
	if ( (S4darkMASK[i,j] == 1 && S4brightMASK[i,j] == 1) or (S4darkMASK[i,j] == 1 && S4brightMASK[i,j] == 0) or (S4darkMASK[i,j] == 0 && S4brightMASK[i,j] == 1) )
	{
	S4MASK[i,j] = 1; 
	countS4PIF = countS4PIF + 1;
	} 
	else if ( S4darkMASK[i,j] == 0 && S4brightMASK[i,j] == 0 ) 
	{
	S4MASK[i,j] = 0;
	}
	}
  }
 }
 
else if ( countTM4dark < pifDarkVAL && countTM4bright >= pifBrightVAL )
{
    printf("%3i dark PIFs were needed for Scene 4 but only %3i were found. Quitting\n\n",pifDarkVAL, countTM4dark);
    Exit();
}
else if ( countTM4bright < pifBrightVAL && countTM4dark >= pifDarkVAL ) 
{
	printf("%3i bright PIFs were needed for Scene 4 but only %3i were found. Quitting\n\n",pifBrightVAL, countTM4bright);
	Exit();
}
else if ( countTM4dark < pifDarkVAL && countTM4bright < pifBrightVAL ) 
{
    printf("Both dark and bright PIFs were way too few.\n%3i dark PIFs were needed but only %3i found.\n%3i bright PIFs were needed but only %3i found.\nQuitting\n",pifDarkVAL, countTM4dark, pifBrightVAL, countTM4bright);
    Exit();
}
printf("The SBI raster (Scene 4 - TM) consists of %12i pixels\n", TM4realSize);
printf("In the raster %12i NullValues were found and %12i pixels have the value 0\n", TM4nullValCount, TM4realSizeNULL);
printf("Dark PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", TM4tailDARK, darkTAILfinalTM4);
printf("Bright PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", TM4tailBRIGHT, brightTAILfinalTM4);
printf("Scene 4 has %12i Pseudo Invariant Features\n\n", countS4PIF);
}
else
{
numeric MSS4realSize, MSS4realSizeROUNDED, MSS4tailDARK, MSS4tailBRIGHT, darkTAILfinalMSS4, brightTAILfinalMSS4, MSS4tailPosition;
numeric MSS4nullValCount = 0;                           # Null Value count for MSS4
numeric MSS4realSizeNULL = 0;                        # pixels with value 0
numeric MSS4realArrayCount = 1;
numeric countMSS4dark = 0;                           # Dark Pif pixel count
numeric countMSS4bright = 0;                         # Bright Pif pixel count
numeric countS4PIF = 0;                              # overall Pif count
 
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {
        
		if (IsNull(SBI4MSS[i,j]) == 1)
		{
		MSS4nullValCount = MSS4nullValCount + 1;
		}		 
    }
}
MSS4realSize = (MSSlins * MSScols) - MSS4nullValCount;
array allValuesSbiMSS4[MSS4realSize];
for i = 1 to MSSlins
{
    for j = 1 to MSScols
    {     
		if (IsNull(SBI4MSS[i,j]) == 0)
		{
		  allValuesSbiMSS4[MSS4realArrayCount] = SBI4MSS[i,j];		 
		  MSS4realArrayCount = MSS4realArrayCount + 1;
	
		  if ( SBI4MSS[i,j] == 0 )
		  {
		      MSS4realSizeNULL = MSS4realSizeNULL + 1;
		  }
		}
    }
}
	numeric lastMSS4 = MSS4realSize;
	numeric hMSS4 = 1;
	while ( (hMSS4 * 3 + 1) < lastMSS4 - 1 )
	{
		hMSS4 = 3 * hMSS4 + 1;
	}
	
	while ( hMSS4 > 0 )
	{
		for i = hMSS4 - 1 to lastMSS4               # for each of the h sets of elements
		{
			numeric keyMSS4 = allValuesSbiMSS4[i];
			numeric jMSS4 = i;
		
			while (jMSS4 >= hMSS4 && allValuesSbiMSS4[jMSS4 - hMSS4] > keyMSS4)
			{
				allValuesSbiMSS4[jMSS4] = allValuesSbiMSS4[jMSS4 - hMSS4];
				jMSS4 = jMSS4 - hMSS4;
			}
			allValuesSbiMSS4[jMSS4] = keyMSS4;
		}
		hMSS4 = floor(hMSS4/3);
	}
MSS4tailPosition = (MSS4realSize - MSS4realSizeNULL) * (histoTailInputVAL / 100);
MSS4realSizeROUNDED = round(MSS4tailPosition);            				              	# MSS4realSizeROUNDED rounded to gain a integer value
MSS4tailDARK =  MSS4realSizeNULL + MSS4realSizeROUNDED;
MSS4tailBRIGHT = MSS4realSize - MSS4realSizeROUNDED;
darkTAILfinalMSS4 = allValuesSbiMSS4[MSS4tailDARK];
brightTAILfinalMSS4 = allValuesSbiMSS4[MSS4tailBRIGHT];			# Final Threshold value, not position
  for i = 1 to MSSlins									# Generate dark PIF mask for Scene 4			
  {
	for j = 1 to MSScols
	{
	if (SBI4MSS[i,j] > 0 && SBI4MSS[i,j] <= darkTAILfinalMSS4)
	{
		S4darkMASK[i,j] = 1;
		countMSS4dark = countMSS4dark + 1;					# Dark PIF Pixel count
	}
	else
	{
		S4darkMASK[i,j] = 0;
	}
	}
  }
  for i = 1 to MSSlins									#Generate bright PIF mask for Scene 4
  {
	for j = 1 to MSScols
	{
	if (SBI4MSS[i,j] >= brightTAILfinalMSS4)
	{
		S4brightMASK[i,j] = 1;
		countMSS4bright = countMSS4bright + 1;				# Bright PIF Pixel count
	}
	else
	{
		S4brightMASK[i,j] = 0;
	}
	}
  }
 if ( countMSS4dark >= pifDarkVAL && countMSS4bright >= pifBrightVAL )						#Generate whole PIF mask for Scene 4
 {
  for i = 1 to MSSlins
  {
	for j = 1 to MSScols
	{
	if ( (S4darkMASK[i,j] == 1 && S4brightMASK[i,j] == 1) or (S4darkMASK[i,j] == 1 && S4brightMASK[i,j] == 0) or (S4darkMASK[i,j] == 0 && S4brightMASK[i,j] == 1) )
	{
	S4MASK[i,j] = 1; 
	countS4PIF = countS4PIF + 1;
	} 
	else if ( S4darkMASK[i,j] == 0 && S4brightMASK[i,j] == 0 ) 
	{
	S4MASK[i,j] = 0;
	}
	}
  }
 }
 
else if ( countMSS4dark < pifDarkVAL && countMSS4bright >= pifBrightVAL )
{
    printf("%3i dark PIFs were needed for Scene 4 but only %3i were found. Quitting\n\n", pifDarkVAL, countMSS4dark);
    Exit();
}
else if ( countMSS4bright < pifBrightVAL && countMSS4dark >= pifDarkVAL ) 
{
	printf("%3i bright PIFs were needed for Scene 4 but only %3i were found. Quitting\n\n", pifBrightVAL, countMSS4bright);
	Exit();
}
else if ( countMSS4dark < pifDarkVAL && countMSS4bright < pifBrightVAL ) 
{
    printf("Both dark and bright PIFs were way too few.\n%3i dark PIFs were needed but only %3i found.\n%3i bright PIFs were needed but only %3i found.\nQuitting\n",pifDarkVAL, countMSS4dark, pifBrightVAL, countMSS4bright);
    Exit();
}
printf("The SBI raster (Scene 4 - MSS) consists of %12i pixels\n", MSS4realSize);
printf("In the raster %12i NullValues were found and %12i pixels have the value 0\n", MSS4nullValCount, MSS4realSizeNULL);
printf("Dark PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", MSS4tailDARK, darkTAILfinalMSS4);
printf("Bright PIF threshold has the pixel position %12i and a equivalent pixel value of %12f\n", MSS4tailBRIGHT, brightTAILfinalMSS4);
printf("Scene 4 has %12i Pseudo Invariant Features\n\n", countS4PIF);
}
#######################################################################################
#### Take Samplepixels and write arrays for later selection
#######################################################################################
numeric countPIFtotal = 0;
numeric countNOPIFtotal = 0;
numeric isTherePifMask = 0;                                 # 1 = one globale mask... 0 = 3Masks
if ( sensors1 == 7 )
{
    for i = 1 to ETMlins
    {
         for j = 1 to ETMcols
         {
            PIFMASK[i,j] = S1MASK[i,j] * S2MASK[i,j] * S3MASK[i,j] * S4MASK[i,j];
            if ( PIFMASK[i,j] == 1 )
            {
                countPIFtotal = countPIFtotal + 1;
            }
            else if ( PIFMASK[i,j] == 0 )
            {
                countNOPIFtotal = countNOPIFtotal + 1;
            }
         }
    }
    if ( countPIFtotal >= minPifVAL )
    {
    isTherePifMask = 1;
    printf("%10i PIF pixels were found.\n%10i none PIF pixels were found.\nOne global mask is generated\n\n", countPIFtotal, countNOPIFtotal);
    }
    
    else
    {
    isTherePifMask = 0;
    printf("%10i PIF pixels were found.\n%10i none PIF pixels were found.\nThree were generated\n\n", countPIFtotal, countNOPIFtotal);
    
    if ( sensors1 == 7 )
            {
                numeric countS1S2total = 0;
                numeric countS1S3total = 0;
                numeric countS1S4total = 0;
                
                numeric countS2S1total = 0;
                numeric countS2S3total = 0;
                numeric countS2S4total = 0;
                
                numeric countS3S1total = 0;
                numeric countS3S2total = 0;
                numeric countS3S4total = 0;
                
                numeric countS4S1total = 0;
                numeric countS4S2total = 0;
                numeric countS4S3total = 0;
                
                for i = 1 to ETMlins
                {
                for j = 1 to ETMcols
                {
                if ( S1MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS1S2total = countS1S2total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS1S3total = countS1S3total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS1S4total = countS1S4total + 1;
                }
                
                ###########################################
                
                if ( S2MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS2S1total = countS2S1total + 1;
                }
                
                if ( S2MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS2S3total = countS2S3total + 1;
                }
                
                if ( S2MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS2S4total = countS2S4total + 1;
                }
                
                ###########################################
                
                if ( S3MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS3S1total = countS3S1total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS3S2total = countS3S2total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS3S4total = countS3S4total + 1;
                }
                
                ###########################################
                
                if ( S4MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS4S1total = countS4S1total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS4S2total = countS4S2total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS4S3total = countS4S3total + 1;
                }
                }
                }
            }
            
            else if ( sensors1 == 6 )
            {
                numeric countS1S2total = 0;
                numeric countS1S3total = 0;
                numeric countS1S4total = 0;
                
                numeric countS2S1total = 0;
                numeric countS2S3total = 0;
                numeric countS2S4total = 0;
                
                numeric countS3S1total = 0;
                numeric countS3S2total = 0;
                numeric countS3S4total = 0;
                
                numeric countS4S1total = 0;
                numeric countS4S2total = 0;
                numeric countS4S3total = 0;
                
                for i = 1 to ETMlins
                {
                for j = 1 to ETMcols
                {
                if ( S1MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS1S2total = countS1S2total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS1S3total = countS1S3total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS1S4total = countS1S4total + 1;
                }
                
                ###########################################
                
                if ( S2MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS2S1total = countS2S1total + 1;
                }
                
                if ( S2MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS2S3total = countS2S3total + 1;
                }
                
                if ( S2MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS2S4total = countS2S4total + 1;
                }
                
                ###########################################
                
                if ( S3MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS3S1total = countS3S1total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS3S2total = countS3S2total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS3S4total = countS3S4total + 1;
                }
                
                ###########################################
                
                if ( S4MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS4S1total = countS4S1total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS4S2total = countS4S2total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS4S3total = countS4S3total + 1;
                }
                }
                }
            }
            
            else
            {
                numeric countS1S2total = 0;
                numeric countS1S3total = 0;
                numeric countS1S4total = 0;
                
                numeric countS2S1total = 0;
                numeric countS2S3total = 0;
                numeric countS2S4total = 0;
                
                numeric countS3S1total = 0;
                numeric countS3S2total = 0;
                numeric countS3S4total = 0;
                
                numeric countS4S1total = 0;
                numeric countS4S2total = 0;
                numeric countS4S3total = 0;
                
                for i = 1 to ETMlins
                {
                for j = 1 to ETMcols
                {
                if ( S1MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS1S2total = countS1S2total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS1S3total = countS1S3total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS1S4total = countS1S4total + 1;
                }
                
                ###########################################
                
                if ( S2MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS2S1total = countS2S1total + 1;
                }
                
                if ( S2MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS2S3total = countS2S3total + 1;
                }
                
                if ( S2MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS2S4total = countS2S4total + 1;
                }
                
                ###########################################
                
                if ( S3MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS3S1total = countS3S1total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS3S2total = countS3S2total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS3S4total = countS3S4total + 1;
                }
                
                ###########################################
                
                if ( S4MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS4S1total = countS4S1total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS4S2total = countS4S2total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS4S3total = countS4S3total + 1;
                }
                }
                }
            }
    }
}
else if ( sensors1 == 6 )
{
    for i = 1 to TMlins
    {
         for j = 1 to TMcols
         {
            PIFMASK[i,j] = S1MASK[i,j] * S2MASK[i,j] * S3MASK[i,j] * S4MASK[i,j];
            if ( PIFMASK[i,j] == 1 )
            {
                countPIFtotal = countPIFtotal + 1;
            }
            else if ( PIFMASK[i,j] == 0 )
            {
                countNOPIFtotal = countNOPIFtotal + 1;
            }
         }
    }
    if ( countPIFtotal >= minPifVAL )
    {
    isTherePifMask = 1;
    printf("%10i PIF pixels were found.\n%10i none PIF pixels were found.\nOne global mask is generated\n\n", countPIFtotal, countNOPIFtotal);
    }
    
    else
    {
    isTherePifMask = 0;
    printf("%10i PIF pixels were found.\n%10i none PIF pixels were found.\nThree were generated\n\n", countPIFtotal, countNOPIFtotal);
    
    if ( sensors1 == 7 )
            {
                numeric countS1S2total = 0;
                numeric countS1S3total = 0;
                numeric countS1S4total = 0;
                
                numeric countS2S1total = 0;
                numeric countS2S3total = 0;
                numeric countS2S4total = 0;
                
                numeric countS3S1total = 0;
                numeric countS3S2total = 0;
                numeric countS3S4total = 0;
                
                numeric countS4S1total = 0;
                numeric countS4S2total = 0;
                numeric countS4S3total = 0;
                
                for i = 1 to ETMlins
                {
                for j = 1 to ETMcols
                {
                if ( S1MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS1S2total = countS1S2total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS1S3total = countS1S3total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS1S4total = countS1S4total + 1;
                }
                
                ###########################################
                
                if ( S2MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS2S1total = countS2S1total + 1;
                }
                
                if ( S2MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS2S3total = countS2S3total + 1;
                }
                
                if ( S2MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS2S4total = countS2S4total + 1;
                }
                
                ###########################################
                
                if ( S3MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS3S1total = countS3S1total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS3S2total = countS3S2total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS3S4total = countS3S4total + 1;
                }
                
                ###########################################
                
                if ( S4MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS4S1total = countS4S1total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS4S2total = countS4S2total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS4S3total = countS4S3total + 1;
                }
                }
                }
            }
            
            else if ( sensors1 == 6 )
            {
                numeric countS1S2total = 0;
                numeric countS1S3total = 0;
                numeric countS1S4total = 0;
                
                numeric countS2S1total = 0;
                numeric countS2S3total = 0;
                numeric countS2S4total = 0;
                
                numeric countS3S1total = 0;
                numeric countS3S2total = 0;
                numeric countS3S4total = 0;
                
                numeric countS4S1total = 0;
                numeric countS4S2total = 0;
                numeric countS4S3total = 0;
                
                for i = 1 to ETMlins
                {
                for j = 1 to ETMcols
                {
                if ( S1MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS1S2total = countS1S2total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS1S3total = countS1S3total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS1S4total = countS1S4total + 1;
                }
                
                ###########################################
                
                if ( S2MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS2S1total = countS2S1total + 1;
                }
                
                if ( S2MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS2S3total = countS2S3total + 1;
                }
                
                if ( S2MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS2S4total = countS2S4total + 1;
                }
                
                ###########################################
                
                if ( S3MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS3S1total = countS3S1total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS3S2total = countS3S2total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS3S4total = countS3S4total + 1;
                }
                
                ###########################################
                
                if ( S4MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS4S1total = countS4S1total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS4S2total = countS4S2total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS4S3total = countS4S3total + 1;
                }
                }
                }
            }
            
            else
            {
                numeric countS1S2total = 0;
                numeric countS1S3total = 0;
                numeric countS1S4total = 0;
                
                numeric countS2S1total = 0;
                numeric countS2S3total = 0;
                numeric countS2S4total = 0;
                
                numeric countS3S1total = 0;
                numeric countS3S2total = 0;
                numeric countS3S4total = 0;
                
                numeric countS4S1total = 0;
                numeric countS4S2total = 0;
                numeric countS4S3total = 0;
                
                for i = 1 to ETMlins
                {
                for j = 1 to ETMcols
                {
                if ( S1MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS1S2total = countS1S2total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS1S3total = countS1S3total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS1S4total = countS1S4total + 1;
                }
                
                ###########################################
                
                if ( S2MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS2S1total = countS2S1total + 1;
                }
                
                if ( S2MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS2S3total = countS2S3total + 1;
                }
                
                if ( S2MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS2S4total = countS2S4total + 1;
                }
                
                ###########################################
                
                if ( S3MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS3S1total = countS3S1total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS3S2total = countS3S2total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS3S4total = countS3S4total + 1;
                }
                
                ###########################################
                
                if ( S4MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS4S1total = countS4S1total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS4S2total = countS4S2total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS4S3total = countS4S3total + 1;
                }
                }
                }
            }
    }
}
else
{
        for i = 1 to MSSlins
        {
             for j = 1 to MSScols
             {
                PIFMASK[i,j] = S1MASK[i,j] * S2MASK[i,j] * S3MASK[i,j] * S4MASK[i,j];
                if ( PIFMASK[i,j] == 1 )
                {
                    countPIFtotal = countPIFtotal + 1;
                }
                else if ( PIFMASK[i,j] == 0 )
                {
                    countNOPIFtotal = countNOPIFtotal + 1;
                }
             }
        }
        if ( countPIFtotal >= minPifVAL )
        {
            isTherePifMask = 1;
            printf("%10i PIF pixels were found.\n%10i none PIF pixels were found.\nOne global mask is generated\n\n", countPIFtotal, countNOPIFtotal);
        }
    
        else
        {
            isTherePifMask = 0;
            printf("%10i PIF pixels were found.\n%10i none PIF pixels were found.\nThree were generated\n\n", countPIFtotal, countNOPIFtotal);
       
            if ( sensors1 == 7 )
            {
                numeric countS1S2total = 0;
                numeric countS1S3total = 0;
                numeric countS1S4total = 0;
                
                numeric countS2S1total = 0;
                numeric countS2S3total = 0;
                numeric countS2S4total = 0;
                
                numeric countS3S1total = 0;
                numeric countS3S2total = 0;
                numeric countS3S4total = 0;
                
                numeric countS4S1total = 0;
                numeric countS4S2total = 0;
                numeric countS4S3total = 0;
                
                for i = 1 to ETMlins
                {
                for j = 1 to ETMcols
                {
                if ( S1MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS1S2total = countS1S2total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS1S3total = countS1S3total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS1S4total = countS1S4total + 1;
                }
                
                ###########################################
                
                if ( S2MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS2S1total = countS2S1total + 1;
                }
                
                if ( S2MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS2S3total = countS2S3total+ 1;
                }
                
                if ( S2MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS2S4total = countS2S4total + 1;
                }
                
                ###########################################
                
                if ( S3MASK[i,j]== 1 && S1MASK[i,j] == 1 )
                {
                countS3S1total = countS3S1total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS3S2total = countS3S2total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS3S4total = countS3S4total + 1;
                }
                
                ###########################################
                
                if ( S4MASK[i,j] == 1 && S1MASK[i,j] == 1)
                {
                countS4S1total = countS4S1total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS4S2total = countS4S2total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS4S3total = countS4S3total + 1;
                }
                }
                }
            }
            
            else if ( sensors1 == 6 )
            {
                numeric countS1S2total = 0;
                numeric countS1S3total = 0;
                numeric countS1S4total = 0;
                
                numeric countS2S1total = 0;
                numeric countS2S3total = 0;
                numeric countS2S4total = 0;
                
                numeric countS3S1total = 0;
                numeric countS3S2total = 0;
                numeric countS3S4total = 0;
                
                numeric countS4S1total = 0;
                numeric countS4S2total = 0;
                numeric countS4S3total = 0;
                
                for i = 1 to ETMlins
                {
                for j = 1 to ETMcols
                {
                if ( S1MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS1S2total = countS1S2total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS1S3total = countS1S3total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS1S4total = countS1S4total + 1;
                }
                
                ###########################################
                
                if ( S2MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS2S1total = countS2S1total + 1;
                }
                
                if ( S2MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS2S3total = countS2S3total + 1;
                }
                
                if ( S2MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS2S4total = countS2S4total + 1;
                }
                
                ###########################################
                
                if ( S3MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS3S1total = countS3S1total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS3S2total = countS3S2total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS3S4total = countS3S4total + 1;
                }
                
                ###########################################
                
                if ( S4MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS4S1total = countS4S1total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS4S2total = countS4S2total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS4S3total = countS4S3total + 1;
                }
                }
                }
            }
            
            else
            {
                numeric countS1S2total = 0;
                numeric countS1S3total = 0;
                numeric countS1S4total = 0;
                
                numeric countS2S1total = 0;
                numeric countS2S3total = 0;
                numeric countS2S4total = 0;
                
                numeric countS3S1total = 0;
                numeric countS3S2total = 0;
                numeric countS3S4total = 0;
                
                numeric countS4S1total = 0;
                numeric countS4S2total = 0;
                numeric countS4S3total = 0;
                
                for i = 1 to ETMlins
                {
                for j = 1 to ETMcols
                {
                if ( S1MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS1S2total = countS1S2total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS1S3total = countS1S3total + 1;
                }
                
                if ( S1MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS1S4total = countS1S4total + 1;
                }
                
                ###########################################
                
                if ( S2MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS2S1total = countS2S1total + 1;
                }
                
                if ( S2MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS2S3total = countS2S3total + 1;
                }
                
                if ( S2MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS2S4total = countS2S4total + 1;
                }
                
                ###########################################
                
                if ( S3MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS3S1total = countS3S1total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS3S2total = countS3S2total + 1;
                }
                
                if ( S3MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                {
                countS3S4total = countS3S4total + 1;
                }
                
                ###########################################
                
                if ( S4MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                {
                countS4S1total = countS4S1total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                {
                countS4S2total = countS4S2total + 1;
                }
                
                if ( S4MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                {
                countS4S3total = countS4S3total + 1;
                }
                }
                }
            }
    }
}
printf("Starting off with the data transfer into arrays.\n\n");
######################################### Array computation ###########################################
if ( isTherePifMask == 1 )
{
  if ( slaveMaster == 1 )
  {
    if ( sensors1 == 7 )
    {
    numeric pifTOTALS1arrayCount = 1;
    
    array pifTOTALS1ETM1array[countPIFtotal];
    array pifTOTALS1ETM2array[countPIFtotal];
    array pifTOTALS1ETM3array[countPIFtotal];
    array pifTOTALS1ETM4array[countPIFtotal];
    array pifTOTALS1ETM5array[countPIFtotal];
    array pifTOTALS1ETM7array[countPIFtotal];
    
    array pifTOTALS1ETM1arrayRAND[minPifVAL];
    array pifTOTALS1ETM2arrayRAND[minPifVAL];
    array pifTOTALS1ETM3arrayRAND[minPifVAL];
    array pifTOTALS1ETM4arrayRAND[minPifVAL];
    array pifTOTALS1ETM5arrayRAND[minPifVAL];
    array pifTOTALS1ETM7arrayRAND[minPifVAL];
    
    array pifTOTALS1ETM1arrayRANDusedInd[minPifVAL];
    array pifTOTALS1ETM2arrayRANDusedInd[minPifVAL];
    array pifTOTALS1ETM3arrayRANDusedInd[minPifVAL];
    array pifTOTALS1ETM4arrayRANDusedInd[minPifVAL];
    array pifTOTALS1ETM5arrayRANDusedInd[minPifVAL];
    array pifTOTALS1ETM7arrayRANDusedInd[minPifVAL];
    
        for i = 1 to ETMlins
        {
            for j = 1 to ETMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                     pifTOTALS1ETM1array[pifTOTALS1arrayCount] = REFS1ETM1[i,j];
                     pifTOTALS1ETM2array[pifTOTALS1arrayCount] = REFS1ETM2[i,j];
                     pifTOTALS1ETM3array[pifTOTALS1arrayCount] = REFS1ETM3[i,j];
                     pifTOTALS1ETM4array[pifTOTALS1arrayCount] = REFS1ETM4[i,j];
                       pifTOTALS1ETM5array[pifTOTALS1arrayCount] = REFS1ETM5[i,j];
			     pifTOTALS1ETM7array[pifTOTALS1arrayCount] = REFS1ETM7[i,j];
			     pifTOTALS1arrayCount = pifTOTALS1arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    
        numeric validTOTALS1ETM1 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS1ETM1 == 0 )
            {
                numeric randomValueTOTALS1ETM1 = floor((rand(countPIFtotal) + 1));      
                validTOTALS1ETM1 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS1ETM1 = pifTOTALS1ETM1arrayRANDusedInd[j];
                
                    if ( testValueTOTALS1ETM1 == randomValueTOTALS1ETM1 )
                    {
                        validTOTALS1ETM1 = 0;
                    }
                }
            }
        pifTOTALS1ETM1arrayRAND[i] = pifTOTALS1ETM1array[randomValueTOTALS1ETM1];
        pifTOTALS1ETM1arrayRANDusedInd[i] = randomValueTOTALS1ETM1;
        validTOTALS1ETM1 = 0;
        }
    
    ############# band 2
    
        numeric validTOTALS1ETM2 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS1ETM2 == 0 )
            {
                numeric randomValueTOTALS1ETM2 = floor((rand(countPIFtotal) + 1));      
                validTOTALS1ETM2 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS1ETM2 = pifTOTALS1ETM2arrayRANDusedInd[j];
                
                    if ( testValueTOTALS1ETM2 == randomValueTOTALS1ETM2 )
                    {
                        validTOTALS1ETM2 = 0;
                    }
                }
            }
        pifTOTALS1ETM2arrayRAND[i] = pifTOTALS1ETM2array[randomValueTOTALS1ETM2];
        pifTOTALS1ETM2arrayRANDusedInd[i] = randomValueTOTALS1ETM2;
        validTOTALS1ETM2 = 0;
        }
    
    ############## band 3
        
        numeric validTOTALS1ETM3 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS1ETM3 == 0 )
            {
                numeric randomValueTOTALS1ETM3 = floor((rand(countPIFtotal) + 1));      
                validTOTALS1ETM3 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS1ETM3 = pifTOTALS1ETM3arrayRANDusedInd[j];
                
                    if ( testValueTOTALS1ETM3 == randomValueTOTALS1ETM3 )
                    {
                        validTOTALS1ETM3 = 0;
                    }
                }
            }
        pifTOTALS1ETM3arrayRAND[i] = pifTOTALS1ETM3array[randomValueTOTALS1ETM3];
        pifTOTALS1ETM3arrayRANDusedInd[i] = randomValueTOTALS1ETM3;
        validTOTALS1ETM3 = 0;
        }
    
    ################ band 4
    
        numeric validTOTALS1ETM4 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS1ETM4 == 0 )
            {
                numeric randomValueTOTALS1ETM4 = floor((rand(countPIFtotal) + 1));      
                validTOTALS1ETM4 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS1ETM4 = pifTOTALS1ETM4arrayRANDusedInd[j];
                
                    if ( testValueTOTALS1ETM4 == randomValueTOTALS1ETM4 )
                    {
                        validTOTALS1ETM4 = 0;
                    }
                }
            }
        pifTOTALS1ETM4arrayRAND[i] = pifTOTALS1ETM4array[randomValueTOTALS1ETM4];
        pifTOTALS1ETM4arrayRANDusedInd[i] = randomValueTOTALS1ETM4;
        validTOTALS1ETM4 = 0;
        }
    
    ############## band 5
    
        numeric validTOTALS1ETM5 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS1ETM5 == 0 )
            {
                numeric randomValueTOTALS1ETM5 = floor((rand(countPIFtotal) + 1));      
                validTOTALS1ETM5 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS1ETM5 = pifTOTALS1ETM5arrayRANDusedInd[j];
                
                    if ( testValueTOTALS1ETM5 == randomValueTOTALS1ETM5 )
                    {
                        validTOTALS1ETM5 = 0;
                    }
                }
            }
        pifTOTALS1ETM5arrayRAND[i] = pifTOTALS1ETM5array[randomValueTOTALS1ETM5];
        pifTOTALS1ETM5arrayRANDusedInd[i] = randomValueTOTALS1ETM5;
        validTOTALS1ETM5 = 0;
        }
    
    ################ band 7
        
        numeric validTOTALS1ETM7 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS1ETM7 == 0 )
            {
                numeric randomValueTOTALS1ETM7 = floor((rand(countPIFtotal) + 1));      
                validTOTALS1ETM7 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS1ETM7 = pifTOTALS1ETM7arrayRANDusedInd[j];
                
                    if ( testValueTOTALS1ETM7 == randomValueTOTALS1ETM7 )
                    {
                        validTOTALS1ETM7 = 0;
                    }
                }
            }
        pifTOTALS1ETM7arrayRAND[i] = pifTOTALS1ETM7array[randomValueTOTALS1ETM7];
        pifTOTALS1ETM7arrayRANDusedInd[i] = randomValueTOTALS1ETM7;
        validTOTALS1ETM7 = 0;
        }
    }
    
    else if ( sensors1 == 6 )
    {
    numeric pifTOTALS1arrayCount = 1;
    array pifTOTALS1TM1array[countPIFtotal];
    array pifTOTALS1TM2array[countPIFtotal];
    array pifTOTALS1TM3array[countPIFtotal];
    array pifTOTALS1TM4array[countPIFtotal];
    array pifTOTALS1TM5array[countPIFtotal];
    array pifTOTALS1TM7array[countPIFtotal];
    
    array pifTOTALS1TM1arrayRAND[minPifVAL];
    array pifTOTALS1TM2arrayRAND[minPifVAL];
    array pifTOTALS1TM3arrayRAND[minPifVAL];
    array pifTOTALS1TM4arrayRAND[minPifVAL];
    array pifTOTALS1TM5arrayRAND[minPifVAL];
    array pifTOTALS1TM7arrayRAND[minPifVAL];
    
    array pifTOTALS1TM1arrayRANDusedInd[minPifVAL];
    array pifTOTALS1TM2arrayRANDusedInd[minPifVAL];
    array pifTOTALS1TM3arrayRANDusedInd[minPifVAL];
    array pifTOTALS1TM4arrayRANDusedInd[minPifVAL];
    array pifTOTALS1TM5arrayRANDusedInd[minPifVAL];
    array pifTOTALS1TM7arrayRANDusedInd[minPifVAL];
    
        for i = 1 to TMlins
        {
            for j = 1 to TMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS1TM1array[pifTOTALS1arrayCount] = REFS1TM1[i,j];
			      pifTOTALS1TM2array[pifTOTALS1arrayCount] = REFS1TM2[i,j];
			      pifTOTALS1TM3array[pifTOTALS1arrayCount] = REFS1TM3[i,j];
			      pifTOTALS1TM4array[pifTOTALS1arrayCount] = REFS1TM4[i,j];
                  pifTOTALS1TM5array[pifTOTALS1arrayCount] = REFS1TM5[i,j];
			      pifTOTALS1TM7array[pifTOTALS1arrayCount] = REFS1TM7[i,j];
                  pifTOTALS1arrayCount = pifTOTALS1arrayCount + 1;
                }
            }
        }
        
    ############# band 1
    
        numeric validTOTALS1TM1 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS1TM1 == 0 )
            {
                numeric randomValueTOTALS1TM1 = floor((rand(countPIFtotal) + 1));      
                validTOTALS1TM1 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS1TM1 = pifTOTALS1TM1arrayRANDusedInd[j];
                
                    if ( testValueTOTALS1TM1 == randomValueTOTALS1TM1 )
                    {
                        validTOTALS1TM1 = 0;
                    }
                }
            }
        pifTOTALS1TM1arrayRAND[i] = pifTOTALS1TM1array[randomValueTOTALS1TM1];
        pifTOTALS1TM1arrayRANDusedInd[i] = randomValueTOTALS1TM1;
        validTOTALS1TM1 = 0;
        }
    
    ############# band 2
    
        numeric validTOTALS1TM2 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS1TM2 == 0 )
            {
                numeric randomValueTOTALS1TM2 = floor((rand(countPIFtotal) + 1));      
                validTOTALS1TM2 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS1TM2 = pifTOTALS1TM2arrayRANDusedInd[j];
                
                    if ( testValueTOTALS1TM2 == randomValueTOTALS1TM2 )
                    {
                        validTOTALS1TM2 = 0;
                    }
                }
            }
        pifTOTALS1TM2arrayRAND[i] = pifTOTALS1TM2array[randomValueTOTALS1TM2];
        pifTOTALS1TM2arrayRANDusedInd[i] = randomValueTOTALS1TM2;
        validTOTALS1TM2 = 0;
        }
    
    ############## band 3
        
        numeric validTOTALS1TM3 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS1TM3 == 0 )
            {
                numeric randomValueTOTALS1TM3 = floor((rand(countPIFtotal) + 1));      
                validTOTALS1TM3 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS1TM3 = pifTOTALS1TM3arrayRANDusedInd[j];
                
                    if ( testValueTOTALS1TM3 == randomValueTOTALS1TM3 )
                    {
                        validTOTALS1TM3 = 0;
                    }
                }
            }
        pifTOTALS1TM3arrayRAND[i] = pifTOTALS1TM3array[randomValueTOTALS1TM3];
        pifTOTALS1TM3arrayRANDusedInd[i] = randomValueTOTALS1TM3;
        validTOTALS1TM3 = 0;
        }
    
    ################ band 4
    
        numeric validTOTALS1TM4 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS1TM4 == 0 )
            {
                numeric randomValueTOTALS1TM4 = floor((rand(countPIFtotal) + 1));      
                validTOTALS1TM4 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS1TM4 = pifTOTALS1TM4arrayRANDusedInd[j];
                
                    if ( testValueTOTALS1TM4 == randomValueTOTALS1TM4 )
                    {
                        validTOTALS1TM4 = 0;
                    }
                }
            }
        pifTOTALS1TM4arrayRAND[i] = pifTOTALS1TM4array[randomValueTOTALS1TM4];
        pifTOTALS1TM4arrayRANDusedInd[i] = randomValueTOTALS1TM4;
        validTOTALS1TM4 = 0;
        }
    
    ############## band 5
    
        numeric validTOTALS1TM5 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS1TM5 == 0 )
            {
                numeric randomValueTOTALS1TM5 = floor((rand(countPIFtotal) + 1));      
                validTOTALS1TM5 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS1TM5 = pifTOTALS1TM5arrayRANDusedInd[j];
                
                    if ( testValueTOTALS1TM5 == randomValueTOTALS1TM5 )
                    {
                        validTOTALS1TM5 = 0;
                    }
                }
            }
        pifTOTALS1TM5arrayRAND[i] = pifTOTALS1TM5array[randomValueTOTALS1TM5];
        pifTOTALS1TM5arrayRANDusedInd[i] = randomValueTOTALS1TM5;
        validTOTALS1TM5 = 0;
        }
    
    ################ band 7
        
        numeric validTOTALS1TM7 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS1TM7 == 0 )
            {
                numeric randomValueTOTALS1TM7 = floor((rand(countPIFtotal) + 1));      
                validTOTALS1TM7 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS1TM7 = pifTOTALS1TM7arrayRANDusedInd[j];
                
                    if ( testValueTOTALS1TM7 == randomValueTOTALS1TM7 )
                    {
                        validTOTALS1TM7 = 0;
                    }
                }
            }
        pifTOTALS1TM7arrayRAND[i] = pifTOTALS1TM7array[randomValueTOTALS1TM7];
        pifTOTALS1TM7arrayRANDusedInd[i] = randomValueTOTALS1TM7;
        validTOTALS1TM7 = 0;
        }
    }
    
    else
    {
    numeric pifTOTALS1arrayCount = 1;
    array pifTOTALS1MSS1array[countPIFtotal];
    array pifTOTALS1MSS2array[countPIFtotal];
    array pifTOTALS1MSS3array[countPIFtotal];
    array pifTOTALS1MSS4array[countPIFtotal];
    
    array pifTOTALS1MSS1arrayRAND[minPifVAL];
    array pifTOTALS1MSS2arrayRAND[minPifVAL];
    array pifTOTALS1MSS3arrayRAND[minPifVAL];
    array pifTOTALS1MSS4arrayRAND[minPifVAL];
    
    array pifTOTALS1MSS1arrayRANDusedInd[minPifVAL];
    array pifTOTALS1MSS2arrayRANDusedInd[minPifVAL];
    array pifTOTALS1MSS3arrayRANDusedInd[minPifVAL];
    array pifTOTALS1MSS4arrayRANDusedInd[minPifVAL];
        
        for i = 1 to MSSlins
        {
            for j = 1 to MSScols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS1MSS1array[pifTOTALS1arrayCount] = REFS1MSS1[i,j];
			pifTOTALS1MSS2array[pifTOTALS1arrayCount] = REFS1MSS2[i,j];
			pifTOTALS1MSS3array[pifTOTALS1arrayCount] = REFS1MSS3[i,j];
			pifTOTALS1MSS4array[pifTOTALS1arrayCount] = REFS1MSS4[i,j];
                  pifTOTALS1arrayCount = pifTOTALS1arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    
        numeric validTOTALS1MSS1 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS1MSS1 == 0 )
            {
                numeric randomValueTOTALS1MSS1 = floor((rand(countPIFtotal) + 1));      
                validTOTALS1MSS1 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS1MSS1 = pifTOTALS1MSS1arrayRANDusedInd[j];
                
                    if ( testValueTOTALS1MSS1 == randomValueTOTALS1MSS1 )
                    {
                        validTOTALS1MSS1 = 0;
                    }
                }
            }
        pifTOTALS1MSS1arrayRAND[i] = pifTOTALS1MSS1array[randomValueTOTALS1MSS1];
        pifTOTALS1MSS1arrayRANDusedInd[i] = randomValueTOTALS1MSS1;
        validTOTALS1MSS1 = 0;
        }
    
    ############# band 2
    
        numeric validTOTALS1MSS2 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS1MSS2 == 0 )
            {
                numeric randomValueTOTALS1MSS2 = floor((rand(countPIFtotal) + 1));      
                validTOTALS1MSS2 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS1MSS2 = pifTOTALS1MSS2arrayRANDusedInd[j];
                
                    if ( testValueTOTALS1MSS2 == randomValueTOTALS1MSS2 )
                    {
                        validTOTALS1MSS2 = 0;
                    }
                }
            }
        pifTOTALS1MSS2arrayRAND[i] = pifTOTALS1MSS2array[randomValueTOTALS1MSS2];
        pifTOTALS1MSS2arrayRANDusedInd[i] = randomValueTOTALS1MSS2;
        validTOTALS1MSS2 = 0;
        }
    
    ############## band 3
        
        numeric validTOTALS1MSS3 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS1MSS3 == 0 )
            {
                numeric randomValueTOTALS1MSS3 = floor((rand(countPIFtotal) + 1));      
                validTOTALS1MSS3 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS1MSS3 = pifTOTALS1MSS3arrayRANDusedInd[j];
                
                    if ( testValueTOTALS1MSS3 == randomValueTOTALS1MSS3 )
                    {
                        validTOTALS1MSS3 = 0;
                    }
                }
            }
        pifTOTALS1MSS3arrayRAND[i] = pifTOTALS1MSS3array[randomValueTOTALS1MSS3];
        pifTOTALS1MSS3arrayRANDusedInd[i] = randomValueTOTALS1MSS3;
        validTOTALS1MSS3 = 0;
        }
    
    ################ band 4
    
        numeric validTOTALS1MSS4 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS1MSS4 == 0 )
            {
                numeric randomValueTOTALS1MSS4 = floor((rand(countPIFtotal) + 1));      
                validTOTALS1MSS4 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS1MSS4 = pifTOTALS1MSS4arrayRANDusedInd[j];
                
                    if ( testValueTOTALS1MSS4 == randomValueTOTALS1MSS4 )
                    {
                        validTOTALS1MSS4 = 0;
                    }
                }
            }
        pifTOTALS1MSS4arrayRAND[i] = pifTOTALS1MSS4array[randomValueTOTALS1MSS4];
        pifTOTALS1MSS4arrayRANDusedInd[i] = randomValueTOTALS1MSS4;
        validTOTALS1MSS4 = 0;
        }
    }
    if ( sensors2 == 7 )
    {
    numeric pifTOTALS2arrayCount = 1;
    array pifTOTALS2ETM1array[countPIFtotal];
    array pifTOTALS2ETM2array[countPIFtotal];
    array pifTOTALS2ETM3array[countPIFtotal];
    array pifTOTALS2ETM4array[countPIFtotal];
    array pifTOTALS2ETM5array[countPIFtotal];
    array pifTOTALS2ETM7array[countPIFtotal];
    
    array pifTOTALS2ETM1arrayRAND[minPifVAL];
    array pifTOTALS2ETM2arrayRAND[minPifVAL];
    array pifTOTALS2ETM3arrayRAND[minPifVAL];
    array pifTOTALS2ETM4arrayRAND[minPifVAL];
    array pifTOTALS2ETM5arrayRAND[minPifVAL];
    array pifTOTALS2ETM7arrayRAND[minPifVAL];
        
        for i = 1 to ETMlins
        {
            for j = 1 to ETMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS2ETM1array[pifTOTALS2arrayCount] = REFS2ETM1[i,j];
			pifTOTALS2ETM2array[pifTOTALS2arrayCount] = REFS2ETM2[i,j];
			pifTOTALS2ETM3array[pifTOTALS2arrayCount] = REFS2ETM3[i,j];
			pifTOTALS2ETM4array[pifTOTALS2arrayCount] = REFS2ETM4[i,j];
                  pifTOTALS2ETM5array[pifTOTALS2arrayCount] = REFS2ETM5[i,j];
			pifTOTALS2ETM7array[pifTOTALS2arrayCount] = REFS2ETM7[i,j];
			pifTOTALS2arrayCount = pifTOTALS2arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    if ( sensors1 == 7 )
    {     
        for i = 1 to minPifVAL
        {
              pifTOTALS2ETM1arrayRAND[i] = pifTOTALS2ETM1array[pifTOTALS1ETM1arrayRANDusedInd[i]];
        }
    }
    else if ( sensors1 == 6 )
    {
	  for i = 1 to minPifVAL
        {
              pifTOTALS2ETM1arrayRAND[i] = pifTOTALS2ETM1array[pifTOTALS1TM1arrayRANDusedInd[i]];
        }
    }
    
    ############# band 2
    if ( sensors1 == 7 )
    { 
        for i = 1 to minPifVAL
        {
              pifTOTALS2ETM2arrayRAND[i] = pifTOTALS2ETM2array[pifTOTALS1ETM2arrayRANDusedInd[i]];
        }
    }
    else if ( sensors1 == 6 )
    {
        for i = 1 to minPifVAL
        {
              pifTOTALS2ETM2arrayRAND[i] = pifTOTALS2ETM2array[pifTOTALS1TM2arrayRANDusedInd[i]];
        }
    }
    
    ############## band 3
    if ( sensors1 == 7 )
    {            
        for i = 1 to minPifVAL
        {
               pifTOTALS2ETM3arrayRAND[i] = pifTOTALS2ETM3array[pifTOTALS1ETM3arrayRANDusedInd[i]];
        }
    }
    else if ( sensors1 == 6 )
    {
        for i = 1 to minPifVAL
        {
               pifTOTALS2ETM3arrayRAND[i] = pifTOTALS2ETM3array[pifTOTALS1TM3arrayRANDusedInd[i]];
        }
    }
    ################ band 4
    if ( sensors1 == 7 )
    {
        for i = 1 to minPifVAL
        {
               pifTOTALS2ETM4arrayRAND[i] = pifTOTALS2ETM4array[pifTOTALS1ETM4arrayRANDusedInd[i]];
        }
    }
    else if ( sensors1 == 6 )
    {
        for i = 1 to minPifVAL
        {
               pifTOTALS2ETM4arrayRAND[i] = pifTOTALS2ETM4array[pifTOTALS1TM4arrayRANDusedInd[i]];
        }
    }
    ############## band 5
    if ( sensors1 == 7 )
    {    
        for i = 1 to minPifVAL
        {
        	   pifTOTALS2ETM5arrayRAND[i] = pifTOTALS2ETM5array[pifTOTALS1ETM5arrayRANDusedInd[i]];
        }
    }
    else if ( sensors1 == 6 )
    {
        for i = 1 to minPifVAL
        {
        	   pifTOTALS2ETM5arrayRAND[i] = pifTOTALS2ETM5array[pifTOTALS1TM5arrayRANDusedInd[i]];
        }
    }
    ################ band 7
    if ( sensors1 == 7 )
    {
        for i = 1 to minPifVAL
        {
        	   pifTOTALS2ETM7arrayRAND[i] = pifTOTALS2ETM7array[pifTOTALS1ETM7arrayRANDusedInd[i]];
        }
    }
    else if ( sensors1 == 6 )
    {
        for i = 1 to minPifVAL
        {
        	   pifTOTALS2ETM7arrayRAND[i] = pifTOTALS2ETM7array[pifTOTALS1TM7arrayRANDusedInd[i]];
        }
    }
   }
    
    else if ( sensors2 == 6 )
    {
    numeric pifTOTALS2arrayCount = 1;
    array pifTOTALS2TM1array[countPIFtotal];
    array pifTOTALS2TM2array[countPIFtotal];
    array pifTOTALS2TM3array[countPIFtotal];
    array pifTOTALS2TM4array[countPIFtotal];
    array pifTOTALS2TM5array[countPIFtotal];
    array pifTOTALS2TM7array[countPIFtotal];
    
    array pifTOTALS2TM1arrayRAND[minPifVAL];
    array pifTOTALS2TM2arrayRAND[minPifVAL];
    array pifTOTALS2TM3arrayRAND[minPifVAL];
    array pifTOTALS2TM4arrayRAND[minPifVAL];
    array pifTOTALS2TM5arrayRAND[minPifVAL];
    array pifTOTALS2TM7arrayRAND[minPifVAL];
    
        for i = 1 to TMlins
        {
            for j = 1 to TMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS2TM1array[pifTOTALS2arrayCount] = REFS2TM1[i,j];
			pifTOTALS2TM2array[pifTOTALS2arrayCount] = REFS2TM2[i,j];
			pifTOTALS2TM3array[pifTOTALS2arrayCount] = REFS2TM3[i,j];
			pifTOTALS2TM4array[pifTOTALS2arrayCount] = REFS2TM4[i,j];
                  pifTOTALS2TM5array[pifTOTALS2arrayCount] = REFS2TM5[i,j];
			pifTOTALS2TM7array[pifTOTALS2arrayCount] = REFS2TM7[i,j];
                  pifTOTALS2arrayCount = pifTOTALS2arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    if ( sensors1 == 7 )
    {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM1arrayRAND[i] = pifTOTALS2TM1array[pifTOTALS1ETM1arrayRANDusedInd[i]];
        }
    }
    else if ( sensors1 == 6 )
    {
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM1arrayRAND[i] = pifTOTALS2TM1array[pifTOTALS1TM1arrayRANDusedInd[i]];
        }
    }
    ############# band 2
    
    if ( sensors1 == 7 )
    {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM2arrayRAND[i] = pifTOTALS2TM2array[pifTOTALS1ETM2arrayRANDusedInd[i]];
        }
    }
    else if ( sensors1 == 6 )
    {  
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM2arrayRAND[i] = pifTOTALS2TM2array[pifTOTALS1TM2arrayRANDusedInd[i]];
        }  
    }
    ############## band 3
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM3arrayRAND[i] = pifTOTALS2TM3array[pifTOTALS1ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM3arrayRAND[i] = pifTOTALS2TM3array[pifTOTALS1TM3arrayRANDusedInd[i]];
        }   
	}
    ################ band 4
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM4arrayRAND[i] = pifTOTALS2TM4array[pifTOTALS1ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM4arrayRAND[i] = pifTOTALS2TM4array[pifTOTALS1TM4arrayRANDusedInd[i]];
        }  
	}
    ############## band 5
    
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM5arrayRAND[i] = pifTOTALS2TM5array[pifTOTALS1ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM5arrayRAND[i] = pifTOTALS2TM5array[pifTOTALS1TM5arrayRANDusedInd[i]];
        }   
	}
    ################ band 7
        
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM7arrayRAND[i] = pifTOTALS2TM7array[pifTOTALS1ETM7arrayRANDusedInd[i]];
        }
	  }
      else if ( sensors1 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM7arrayRAND[i] = pifTOTALS2TM7array[pifTOTALS1TM7arrayRANDusedInd[i]];
        }    
	  }
    }
    
    else
    {
    numeric pifTOTALS2arrayCount = 1;
    array pifTOTALS2MSS1array[countPIFtotal];
    array pifTOTALS2MSS2array[countPIFtotal];
    array pifTOTALS2MSS3array[countPIFtotal];
    array pifTOTALS2MSS4array[countPIFtotal];
    
    array pifTOTALS2MSS1arrayRAND[minPifVAL];
    array pifTOTALS2MSS2arrayRAND[minPifVAL];
    array pifTOTALS2MSS3arrayRAND[minPifVAL];
    array pifTOTALS2MSS4arrayRAND[minPifVAL];
    
        for i = 1 to MSSlins
        {
            for j = 1 to MSScols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS2MSS1array[pifTOTALS2arrayCount] = REFS2MSS1[i,j];
			pifTOTALS2MSS2array[pifTOTALS2arrayCount] = REFS2MSS2[i,j];
			pifTOTALS2MSS3array[pifTOTALS2arrayCount] = REFS2MSS3[i,j];
			pifTOTALS2MSS4array[pifTOTALS2arrayCount] = REFS2MSS4[i,j];
                  pifTOTALS2arrayCount = pifTOTALS2arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS1arrayRAND[i] = pifTOTALS2MSS1array[pifTOTALS1ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS1arrayRAND[i] = pifTOTALS2MSS1array[pifTOTALS1TM2arrayRANDusedInd[i]];
        }  
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS1arrayRAND[i] = pifTOTALS2MSS1array[pifTOTALS1MSS1arrayRANDusedInd[i]];
        }
	}
    
    ############# band 2
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS2arrayRAND[i] = pifTOTALS2MSS2array[pifTOTALS1ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS2arrayRAND[i] = pifTOTALS2MSS2array[pifTOTALS1TM3arrayRANDusedInd[i]];
        }   
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS2arrayRAND[i] = pifTOTALS2MSS2array[pifTOTALS1MSS2arrayRANDusedInd[i]];
        }
	}
    
    ############## band 3
     
    if ( sensors1 == 5 or sensors1 == 4 or sensors1 == 3 or sensors1 == 2 or sensors1 == 1 )
    {
	   for i = 1 to minPifVAL
        {
        pifTOTALS2MSS3arrayRAND[i] = pifTOTALS2MSS3array[pifTOTALS1MSS3arrayRANDusedInd[i]];
        }
	}
    
    ################ band 4
    
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS4arrayRAND[i] = pifTOTALS2MSS4array[pifTOTALS1ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS4arrayRAND[i] = pifTOTALS2MSS4array[pifTOTALS1ETM4arrayRANDusedInd[i]];
        }
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS4arrayRAND[i] = pifTOTALS2MSS4array[pifTOTALS1MSS4arrayRANDusedInd[i]];
        }
	}    
    }
    if ( sensors3 == 7 )
    {
    numeric pifTOTALS3arrayCount = 1;
    array pifTOTALS3ETM1array[countPIFtotal];
    array pifTOTALS3ETM2array[countPIFtotal];
    array pifTOTALS3ETM3array[countPIFtotal];
    array pifTOTALS3ETM4array[countPIFtotal];
    array pifTOTALS3ETM5array[countPIFtotal];
    array pifTOTALS3ETM7array[countPIFtotal];
    
    array pifTOTALS3ETM1arrayRAND[minPifVAL];
    array pifTOTALS3ETM2arrayRAND[minPifVAL];
    array pifTOTALS3ETM3arrayRAND[minPifVAL];
    array pifTOTALS3ETM4arrayRAND[minPifVAL];
    array pifTOTALS3ETM5arrayRAND[minPifVAL];
    array pifTOTALS3ETM7arrayRAND[minPifVAL];
    
        for i = 1 to ETMlins
        {
            for j = 1 to ETMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS3ETM1array[pifTOTALS3arrayCount] = REFS3ETM1[i,j];
			pifTOTALS3ETM2array[pifTOTALS3arrayCount] = REFS3ETM2[i,j];
			pifTOTALS3ETM3array[pifTOTALS3arrayCount] = REFS3ETM3[i,j];
			pifTOTALS3ETM4array[pifTOTALS3arrayCount] = REFS3ETM4[i,j];
                  pifTOTALS3ETM5array[pifTOTALS3arrayCount] = REFS3ETM5[i,j];
			pifTOTALS3ETM7array[pifTOTALS3arrayCount] = REFS3ETM7[i,j];
			pifTOTALS3arrayCount = pifTOTALS3arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM1arrayRAND[i] = pifTOTALS3ETM1array[pifTOTALS1ETM1arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM1arrayRAND[i] = pifTOTALS3ETM1array[pifTOTALS1TM1arrayRANDusedInd[i]];
        }   
	}
    
    ############# band 2
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM2arrayRAND[i] = pifTOTALS3ETM2array[pifTOTALS1ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM2arrayRAND[i] = pifTOTALS3ETM2array[pifTOTALS1TM2arrayRANDusedInd[i]];
        }   
	}
    ############## band 3
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM3arrayRAND[i] = pifTOTALS3ETM3array[pifTOTALS1ETM3arrayRANDusedInd[i]];
        }
	}
	else if ( sensors1 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM3arrayRAND[i] = pifTOTALS3ETM3array[pifTOTALS1TM3arrayRANDusedInd[i]];
        }    
	}
    ################ band 4
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM4arrayRAND[i] = pifTOTALS3ETM4array[pifTOTALS1ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM4arrayRAND[i] = pifTOTALS3ETM4array[pifTOTALS1TM4arrayRANDusedInd[i]];
        }  
	}
    ############## band 5
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM5arrayRAND[i] = pifTOTALS3ETM5array[pifTOTALS1ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM5arrayRAND[i] = pifTOTALS3ETM5array[pifTOTALS1TM5arrayRANDusedInd[i]];
        }  
	}
    ################ band 7
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM7arrayRAND[i] = pifTOTALS3ETM7array[pifTOTALS1ETM7arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM7arrayRAND[i] = pifTOTALS3ETM7array[pifTOTALS1TM7arrayRANDusedInd[i]];
        }   
	}
    }
    
    else if ( sensors3 == 6 )
    {
    numeric pifTOTALS3arrayCount = 1;
    array pifTOTALS3TM1array[countPIFtotal];
    array pifTOTALS3TM2array[countPIFtotal];
    array pifTOTALS3TM3array[countPIFtotal];
    array pifTOTALS3TM4array[countPIFtotal];
    array pifTOTALS3TM5array[countPIFtotal];
    array pifTOTALS3TM7array[countPIFtotal];
    
    array pifTOTALS3TM1arrayRAND[minPifVAL];
    array pifTOTALS3TM2arrayRAND[minPifVAL];
    array pifTOTALS3TM3arrayRAND[minPifVAL];
    array pifTOTALS3TM4arrayRAND[minPifVAL];
    array pifTOTALS3TM5arrayRAND[minPifVAL];
    array pifTOTALS3TM7arrayRAND[minPifVAL];
    
        for i = 1 to TMlins
        {
            for j = 1 to TMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS3TM1array[pifTOTALS3arrayCount] = REFS3TM1[i,j];
			pifTOTALS3TM2array[pifTOTALS3arrayCount] = REFS3TM2[i,j];
			pifTOTALS3TM3array[pifTOTALS3arrayCount] = REFS3TM3[i,j];
			pifTOTALS3TM4array[pifTOTALS3arrayCount] = REFS3TM4[i,j];
                  pifTOTALS3TM5array[pifTOTALS3arrayCount] = REFS3TM5[i,j];
			pifTOTALS3TM7array[pifTOTALS3arrayCount] = REFS3TM7[i,j];
                  pifTOTALS3arrayCount = pifTOTALS3arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM1arrayRAND[i] = pifTOTALS3TM1array[pifTOTALS1ETM1arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM1arrayRAND[i] = pifTOTALS3TM1array[pifTOTALS1TM1arrayRANDusedInd[i]];
        }  
	}
    
    ############# band 2
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM2arrayRAND[i] = pifTOTALS3TM2array[pifTOTALS1ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM2arrayRAND[i] = pifTOTALS3TM2array[pifTOTALS1TM2arrayRANDusedInd[i]];
        }   
	}
    ############## band 3
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM3arrayRAND[i] = pifTOTALS3TM3array[pifTOTALS1ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM3arrayRAND[i] = pifTOTALS3TM3array[pifTOTALS1TM3arrayRANDusedInd[i]];
        }   
	}
    ################ band 4
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM4arrayRAND[i] = pifTOTALS3TM4array[pifTOTALS1ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM4arrayRAND[i] = pifTOTALS3TM4array[pifTOTALS1TM4arrayRANDusedInd[i]];
        }   
	}
    ############## band 5
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM5arrayRAND[i] = pifTOTALS3TM5array[pifTOTALS1ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM5arrayRAND[i] = pifTOTALS3TM5array[pifTOTALS1TM5arrayRANDusedInd[i]];
        }  
	}
    ################ band 7
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM7arrayRAND[i] = pifTOTALS3TM7array[pifTOTALS1ETM7arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM7arrayRAND[i] = pifTOTALS3TM7array[pifTOTALS1TM7arrayRANDusedInd[i]];
        }  
	}
    }
    
    else
    {
    numeric pifTOTALS3arrayCount = 1;
    array pifTOTALS3MSS1array[countPIFtotal];
    array pifTOTALS3MSS2array[countPIFtotal];
    array pifTOTALS3MSS3array[countPIFtotal];
    array pifTOTALS3MSS4array[countPIFtotal];
    
    array pifTOTALS3MSS1arrayRAND[minPifVAL];
    array pifTOTALS3MSS2arrayRAND[minPifVAL];
    array pifTOTALS3MSS3arrayRAND[minPifVAL];
    array pifTOTALS3MSS4arrayRAND[minPifVAL];
    
        for i = 1 to MSSlins
        {
            for j = 1 to MSScols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS3MSS1array[pifTOTALS3arrayCount] = REFS3MSS1[i,j];
			pifTOTALS3MSS2array[pifTOTALS3arrayCount] = REFS3MSS2[i,j];
			pifTOTALS3MSS3array[pifTOTALS3arrayCount] = REFS3MSS3[i,j];
			pifTOTALS3MSS4array[pifTOTALS3arrayCount] = REFS3MSS4[i,j];
                  pifTOTALS3arrayCount = pifTOTALS3arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS1arrayRAND[i] = pifTOTALS3MSS1array[pifTOTALS1ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS1arrayRAND[i] = pifTOTALS3MSS1array[pifTOTALS1TM2arrayRANDusedInd[i]];
        }  
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS1arrayRAND[i] = pifTOTALS3MSS1array[pifTOTALS1MSS1arrayRANDusedInd[i]];
        }
	}
    
    ############# band 2
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS2arrayRAND[i] = pifTOTALS3MSS2array[pifTOTALS1ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS2arrayRAND[i] = pifTOTALS3MSS2array[pifTOTALS1TM3arrayRANDusedInd[i]];
        }   
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS2arrayRAND[i] = pifTOTALS3MSS2array[pifTOTALS1MSS2arrayRANDusedInd[i]];
        }
	}
    
    ############## band 3
     
    if ( sensors1 == 5 or sensors1 == 4 or sensors1 == 3 or sensors1 == 2 or sensors1 == 1 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS3arrayRAND[i] = pifTOTALS3MSS3array[pifTOTALS1MSS3arrayRANDusedInd[i]];
        }
	  }
    
    ################ band 4
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS4arrayRAND[i] = pifTOTALS3MSS4array[pifTOTALS1ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS4arrayRAND[i] = pifTOTALS3MSS4array[pifTOTALS1TM4arrayRANDusedInd[i]];
        }    
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS4arrayRAND[i] = pifTOTALS3MSS4array[pifTOTALS1MSS4arrayRANDusedInd[i]];
        }
	}
    }
    if ( sensors4 == 7 )
    {
    numeric pifTOTALS4arrayCount = 1;
    array pifTOTALS4ETM1array[countPIFtotal];
    array pifTOTALS4ETM2array[countPIFtotal];
    array pifTOTALS4ETM3array[countPIFtotal];
    array pifTOTALS4ETM4array[countPIFtotal];
    array pifTOTALS4ETM5array[countPIFtotal];
    array pifTOTALS4ETM7array[countPIFtotal];
    
    array pifTOTALS4ETM1arrayRAND[minPifVAL];
    array pifTOTALS4ETM2arrayRAND[minPifVAL];
    array pifTOTALS4ETM3arrayRAND[minPifVAL];
    array pifTOTALS4ETM4arrayRAND[minPifVAL];
    array pifTOTALS4ETM5arrayRAND[minPifVAL];
    array pifTOTALS4ETM7arrayRAND[minPifVAL];
    
        for i = 1 to ETMlins
        {
            for j = 1 to ETMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS4ETM1array[pifTOTALS4arrayCount] = REFS4ETM1[i,j];
			pifTOTALS4ETM2array[pifTOTALS4arrayCount] = REFS4ETM2[i,j];
			pifTOTALS4ETM3array[pifTOTALS4arrayCount] = REFS4ETM3[i,j];
			pifTOTALS4ETM4array[pifTOTALS4arrayCount] = REFS4ETM4[i,j];
                  pifTOTALS4ETM5array[pifTOTALS4arrayCount] = REFS4ETM5[i,j];
			pifTOTALS4ETM7array[pifTOTALS4arrayCount] = REFS4ETM7[i,j];
			pifTOTALS4arrayCount = pifTOTALS4arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM1arrayRAND[i] = pifTOTALS4ETM1array[pifTOTALS1ETM1arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM1arrayRAND[i] = pifTOTALS4ETM1array[pifTOTALS1TM1arrayRANDusedInd[i]];
        }  
	}
    
    ############# band 2
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM2arrayRAND[i] = pifTOTALS4ETM2array[pifTOTALS1ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM2arrayRAND[i] = pifTOTALS4ETM2array[pifTOTALS1TM2arrayRANDusedInd[i]];
        }
	}
    ############## band 3
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM3arrayRAND[i] = pifTOTALS4ETM3array[pifTOTALS1ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM3arrayRAND[i] = pifTOTALS4ETM3array[pifTOTALS1TM3arrayRANDusedInd[i]];
        }  
	}
    ################ band 4
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM4arrayRAND[i] = pifTOTALS4ETM4array[pifTOTALS1ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM4arrayRAND[i] = pifTOTALS4ETM4array[pifTOTALS1TM4arrayRANDusedInd[i]];
        }    
	}
    ############## band 5
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM5arrayRAND[i] = pifTOTALS4ETM5array[pifTOTALS1ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {   
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM5arrayRAND[i] = pifTOTALS4ETM5array[pifTOTALS1TM5arrayRANDusedInd[i]];
        } 
	}
    
    ################ band 7
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM7arrayRAND[i] = pifTOTALS4ETM7array[pifTOTALS1ETM7arrayRANDusedInd[i]];
        }
	  }
	  else if ( sensors1 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM7arrayRAND[i] = pifTOTALS4ETM7array[pifTOTALS1TM7arrayRANDusedInd[i]];
        }  
	  }
    }
    
    else if ( sensors4 == 6 )
    {
    numeric pifTOTALS4arrayCount = 1;
    array pifTOTALS4TM1array[countPIFtotal];
    array pifTOTALS4TM2array[countPIFtotal];
    array pifTOTALS4TM3array[countPIFtotal];
    array pifTOTALS4TM4array[countPIFtotal];
    array pifTOTALS4TM5array[countPIFtotal];
    array pifTOTALS4TM7array[countPIFtotal];
    
    array pifTOTALS4TM1arrayRAND[minPifVAL];
    array pifTOTALS4TM2arrayRAND[minPifVAL];
    array pifTOTALS4TM3arrayRAND[minPifVAL];
    array pifTOTALS4TM4arrayRAND[minPifVAL];
    array pifTOTALS4TM5arrayRAND[minPifVAL];
    array pifTOTALS4TM7arrayRAND[minPifVAL];
        
        for i = 1 to TMlins
        {
            for j = 1 to TMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS4TM1array[pifTOTALS4arrayCount] = REFS4TM1[i,j];
			pifTOTALS4TM2array[pifTOTALS4arrayCount] = REFS4TM2[i,j];
			pifTOTALS4TM3array[pifTOTALS4arrayCount] = REFS4TM3[i,j];
			pifTOTALS4TM4array[pifTOTALS4arrayCount] = REFS4TM4[i,j];
                  pifTOTALS4TM5array[pifTOTALS4arrayCount] = REFS4TM5[i,j];
			pifTOTALS4TM7array[pifTOTALS4arrayCount] = REFS4TM7[i,j];
                  pifTOTALS4arrayCount = pifTOTALS4arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM1arrayRAND[i] = pifTOTALS4TM1array[pifTOTALS1ETM1arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM1arrayRAND[i] = pifTOTALS4TM1array[pifTOTALS1TM1arrayRANDusedInd[i]];
        }   
	}
    
    ############# band 2
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM2arrayRAND[i] = pifTOTALS4TM2array[pifTOTALS1ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM2arrayRAND[i] = pifTOTALS4TM2array[pifTOTALS1TM2arrayRANDusedInd[i]];
        }    
	}
    ############## band 3
	
      if ( sensors1 == 7 )
      {         
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM3arrayRAND[i] = pifTOTALS4TM3array[pifTOTALS1ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM3arrayRAND[i] = pifTOTALS4TM3array[pifTOTALS1TM3arrayRANDusedInd[i]];
        }    
	}
    ################ band 4
     
      if ( sensors1 == 7 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM4arrayRAND[i] = pifTOTALS4TM4array[pifTOTALS1ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM4arrayRAND[i] = pifTOTALS4TM4array[pifTOTALS1TM4arrayRANDusedInd[i]];
        }    
	}
    ############## band 5
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM5arrayRAND[i] = pifTOTALS4TM5array[pifTOTALS1ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM5arrayRAND[i] = pifTOTALS4TM5array[pifTOTALS1TM5arrayRANDusedInd[i]];
        }  
	}
    ################ band 7
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM7arrayRAND[i] = pifTOTALS4TM7array[pifTOTALS1ETM7arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM7arrayRAND[i] = pifTOTALS4TM7array[pifTOTALS1TM7arrayRANDusedInd[i]];
        }   
	  }
    }
    
    else
    {
    numeric pifTOTALS4arrayCount = 1;
    array pifTOTALS4MSS1array[countPIFtotal];
    array pifTOTALS4MSS2array[countPIFtotal];
    array pifTOTALS4MSS3array[countPIFtotal];
    array pifTOTALS4MSS4array[countPIFtotal];
    
    array pifTOTALS4MSS1arrayRAND[minPifVAL];
    array pifTOTALS4MSS2arrayRAND[minPifVAL];
    array pifTOTALS4MSS3arrayRAND[minPifVAL];
    array pifTOTALS4MSS4arrayRAND[minPifVAL];
    
        for i = 1 to MSSlins
        {
            for j = 1 to MSScols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS4MSS1array[pifTOTALS4arrayCount] = REFS4MSS1[i,j];
			pifTOTALS4MSS2array[pifTOTALS4arrayCount] = REFS4MSS2[i,j];
			pifTOTALS4MSS3array[pifTOTALS4arrayCount] = REFS4MSS3[i,j];
			pifTOTALS4MSS4array[pifTOTALS4arrayCount] = REFS4MSS4[i,j];
                  pifTOTALS4arrayCount = pifTOTALS4arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS1arrayRAND[i] = pifTOTALS4MSS1array[pifTOTALS1ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS1arrayRAND[i] = pifTOTALS4MSS1array[pifTOTALS1TM2arrayRANDusedInd[i]];
        }   
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS1arrayRAND[i] = pifTOTALS4MSS1array[pifTOTALS1MSS1arrayRANDusedInd[i]];
        }   
	}
    
    ############# band 2
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS2arrayRAND[i] = pifTOTALS4MSS2array[pifTOTALS1ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS2arrayRAND[i] = pifTOTALS4MSS2array[pifTOTALS1TM3arrayRANDusedInd[i]];
        }   
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS1arrayRAND[i] = pifTOTALS4MSS1array[pifTOTALS1MSS2arrayRANDusedInd[i]];
        }   
	}
    
    ############## band 3
     
    if ( sensors1 == 5 or sensors1 == 4 or sensors1 == 3 or sensors1 == 2 or sensors1 == 1 )
    {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS3arrayRAND[i] = pifTOTALS4MSS3array[pifTOTALS1MSS3arrayRANDusedInd[i]];
        }
	}
    
    ################ band 4
     
      if ( sensors1 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS4arrayRAND[i] = pifTOTALS4MSS4array[pifTOTALS1ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors1 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS4arrayRAND[i] = pifTOTALS4MSS4array[pifTOTALS1TM4arrayRANDusedInd[i]];
        }    
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS4arrayRAND[i] = pifTOTALS4MSS4array[pifTOTALS1MSS4arrayRANDusedInd[i]];
        }
	}
    }
  }
  else if ( slaveMaster == 2 )
  {
    if ( sensors2 == 7 )
    {
    numeric pifTOTALS2arrayCount = 1;
    
    array pifTOTALS2ETM1array[countPIFtotal];
    array pifTOTALS2ETM2array[countPIFtotal];
    array pifTOTALS2ETM3array[countPIFtotal];
    array pifTOTALS2ETM4array[countPIFtotal];
    array pifTOTALS2ETM5array[countPIFtotal];
    array pifTOTALS2ETM7array[countPIFtotal];
    
    array pifTOTALS2ETM1arrayRAND[minPifVAL];
    array pifTOTALS2ETM2arrayRAND[minPifVAL];
    array pifTOTALS2ETM3arrayRAND[minPifVAL];
    array pifTOTALS2ETM4arrayRAND[minPifVAL];
    array pifTOTALS2ETM5arrayRAND[minPifVAL];
    array pifTOTALS2ETM7arrayRAND[minPifVAL];
    
    array pifTOTALS2ETM1arrayRANDusedInd[minPifVAL];
    array pifTOTALS2ETM2arrayRANDusedInd[minPifVAL];
    array pifTOTALS2ETM3arrayRANDusedInd[minPifVAL];
    array pifTOTALS2ETM4arrayRANDusedInd[minPifVAL];
    array pifTOTALS2ETM5arrayRANDusedInd[minPifVAL];
    array pifTOTALS2ETM7arrayRANDusedInd[minPifVAL];
    
        for i = 1 to ETMlins
        {
            for j = 1 to ETMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                       pifTOTALS2ETM1array[pifTOTALS2arrayCount] = REFS2ETM1[i,j];
			     pifTOTALS2ETM2array[pifTOTALS2arrayCount] = REFS2ETM2[i,j];
			     pifTOTALS2ETM3array[pifTOTALS2arrayCount] = REFS2ETM3[i,j];
			     pifTOTALS2ETM4array[pifTOTALS2arrayCount] = REFS2ETM4[i,j];
                       pifTOTALS2ETM5array[pifTOTALS2arrayCount] = REFS2ETM5[i,j];
			     pifTOTALS2ETM7array[pifTOTALS2arrayCount] = REFS2ETM7[i,j];
			     pifTOTALS2arrayCount = pifTOTALS2arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    
        numeric validTOTALS2ETM1 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS2ETM1 == 0 )
            {
                numeric randomValueTOTALS2ETM1 = floor((rand(countPIFtotal) + 1));      
                validTOTALS2ETM1 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS2ETM1 = pifTOTALS2ETM1arrayRANDusedInd[j];
                
                    if ( testValueTOTALS2ETM1 == randomValueTOTALS2ETM1 )
                    {
                        validTOTALS2ETM1 = 0;
                    }
                }
            }
        pifTOTALS2ETM1arrayRAND[i] = pifTOTALS2ETM1array[randomValueTOTALS2ETM1];
        pifTOTALS2ETM1arrayRANDusedInd[i] = randomValueTOTALS2ETM1;
        validTOTALS2ETM1 = 0;
        }
    
    ############# band 2
    
        numeric validTOTALS2ETM2 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS2ETM2 == 0 )
            {
                numeric randomValueTOTALS2ETM2 = floor((rand(countPIFtotal) + 1));      
                validTOTALS2ETM2 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS2ETM2 = pifTOTALS2ETM2arrayRANDusedInd[j];
                
                    if ( testValueTOTALS2ETM2 == randomValueTOTALS2ETM2 )
                    {
                        validTOTALS2ETM2 = 0;
                    }
                }
            }
        pifTOTALS2ETM2arrayRAND[i] = pifTOTALS2ETM2array[randomValueTOTALS2ETM2];
        pifTOTALS2ETM2arrayRANDusedInd[i] = randomValueTOTALS2ETM2;
        validTOTALS2ETM2 = 0;
        }
    
    ############## band 3
        
        numeric validTOTALS2ETM3 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS2ETM3 == 0 )
            {
                numeric randomValueTOTALS2ETM3 = floor((rand(countPIFtotal) + 1));      
                validTOTALS2ETM3 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS2ETM3 = pifTOTALS2ETM3arrayRANDusedInd[j];
                
                    if ( testValueTOTALS2ETM3 == randomValueTOTALS2ETM3 )
                    {
                        validTOTALS2ETM3 = 0;
                    }
                }
            }
        pifTOTALS2ETM3arrayRAND[i] = pifTOTALS2ETM3array[randomValueTOTALS2ETM3];
        pifTOTALS2ETM3arrayRANDusedInd[i] = randomValueTOTALS2ETM3;
        validTOTALS2ETM3 = 0;
        }
    
    ################ band 4
    
        numeric validTOTALS2ETM4 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS2ETM4 == 0 )
            {
                numeric randomValueTOTALS2ETM4 = floor((rand(countPIFtotal) + 1));      
                validTOTALS2ETM4 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS2ETM4 = pifTOTALS2ETM4arrayRANDusedInd[j];
                
                    if ( testValueTOTALS2ETM4 == randomValueTOTALS2ETM4 )
                    {
                        validTOTALS2ETM4 = 0;
                    }
                }
            }
        pifTOTALS2ETM4arrayRAND[i] = pifTOTALS2ETM4array[randomValueTOTALS2ETM4];
        pifTOTALS2ETM4arrayRANDusedInd[i] = randomValueTOTALS2ETM4;
        validTOTALS2ETM4 = 0;
        }
    
    ############## band 5
    
        numeric validTOTALS2ETM5 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS2ETM5 == 0 )
            {
                numeric randomValueTOTALS2ETM5 = floor((rand(countPIFtotal) + 1));      
                validTOTALS2ETM5 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS2ETM5 = pifTOTALS2ETM5arrayRANDusedInd[j];
                
                    if ( testValueTOTALS2ETM5 == randomValueTOTALS2ETM5 )
                    {
                        validTOTALS2ETM5 = 0;
                    }
                }
            }
        pifTOTALS2ETM5arrayRAND[i] = pifTOTALS2ETM5array[randomValueTOTALS2ETM5];
        pifTOTALS2ETM5arrayRANDusedInd[i] = randomValueTOTALS2ETM5;
        validTOTALS2ETM5 = 0;
        }
    
    ################ band 7
        
        numeric validTOTALS2ETM7 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS2ETM7 == 0 )
            {
                numeric randomValueTOTALS2ETM7 = floor((rand(countPIFtotal) + 1));      
                validTOTALS2ETM7 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS2ETM7 = pifTOTALS2ETM7arrayRANDusedInd[j];
                
                    if ( testValueTOTALS2ETM7 == randomValueTOTALS2ETM7 )
                    {
                        validTOTALS2ETM7 = 0;
                    }
                }
            }
        pifTOTALS2ETM7arrayRAND[i] = pifTOTALS2ETM7array[randomValueTOTALS2ETM7];
        pifTOTALS2ETM7arrayRANDusedInd[i] = randomValueTOTALS2ETM7;
        validTOTALS2ETM7 = 0;
        }
    }
    
    else if ( sensors2 == 6 )
    {
    numeric pifTOTALS2arrayCount = 1;
    array pifTOTALS2TM1array[countPIFtotal];
    array pifTOTALS2TM2array[countPIFtotal];
    array pifTOTALS2TM3array[countPIFtotal];
    array pifTOTALS2TM4array[countPIFtotal];
    array pifTOTALS2TM5array[countPIFtotal];
    array pifTOTALS2TM7array[countPIFtotal];
    
    array pifTOTALS2TM1arrayRAND[minPifVAL];
    array pifTOTALS2TM2arrayRAND[minPifVAL];
    array pifTOTALS2TM3arrayRAND[minPifVAL];
    array pifTOTALS2TM4arrayRAND[minPifVAL];
    array pifTOTALS2TM5arrayRAND[minPifVAL];
    array pifTOTALS2TM7arrayRAND[minPifVAL];
    
    array pifTOTALS2TM1arrayRANDusedInd[minPifVAL];
    array pifTOTALS2TM2arrayRANDusedInd[minPifVAL];
    array pifTOTALS2TM3arrayRANDusedInd[minPifVAL];
    array pifTOTALS2TM4arrayRANDusedInd[minPifVAL];
    array pifTOTALS2TM5arrayRANDusedInd[minPifVAL];
    array pifTOTALS2TM7arrayRANDusedInd[minPifVAL];
    
        for i = 1 to TMlins
        {
            for j = 1 to TMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS2TM1array[pifTOTALS2arrayCount] = REFS2TM1[i,j];
			      pifTOTALS2TM2array[pifTOTALS2arrayCount] = REFS2TM2[i,j];
			      pifTOTALS2TM3array[pifTOTALS2arrayCount] = REFS2TM3[i,j];
			      pifTOTALS2TM4array[pifTOTALS2arrayCount] = REFS2TM4[i,j];
                  pifTOTALS2TM5array[pifTOTALS2arrayCount] = REFS2TM5[i,j];
			      pifTOTALS2TM7array[pifTOTALS2arrayCount] = REFS2TM7[i,j];
                  pifTOTALS2arrayCount = pifTOTALS2arrayCount + 1;
                }
            }
        }
        
    ############# band 1
    
        numeric validTOTALS2TM1 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS2TM1 == 0 )
            {
                numeric randomValueTOTALS2TM1 = floor((rand(countPIFtotal) + 1));      
                validTOTALS2TM1 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS2TM1 = pifTOTALS2TM1arrayRANDusedInd[j];
                
                    if ( testValueTOTALS2TM1 == randomValueTOTALS2TM1 )
                    {
                        validTOTALS2TM1 = 0;
                    }
                }
            }
        pifTOTALS2TM1arrayRAND[i] = pifTOTALS2TM1array[randomValueTOTALS2TM1];
        pifTOTALS2TM1arrayRANDusedInd[i] = randomValueTOTALS2TM1;
        validTOTALS2TM1 = 0;
        }
    
    ############# band 2
    
        numeric validTOTALS2TM2 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS2TM2 == 0 )
            {
                numeric randomValueTOTALS2TM2 = floor((rand(countPIFtotal) + 1));      
                validTOTALS2TM2 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS2TM2 = pifTOTALS2TM2arrayRANDusedInd[j];
                
                    if ( testValueTOTALS2TM2 == randomValueTOTALS2TM2 )
                    {
                        validTOTALS2TM2 = 0;
                    }
                }
            }
        pifTOTALS2TM2arrayRAND[i] = pifTOTALS2TM2array[randomValueTOTALS2TM2];
        pifTOTALS2TM2arrayRANDusedInd[i] = randomValueTOTALS2TM2;
        validTOTALS2TM2 = 0;
        }
    
    ############## band 3
        
        numeric validTOTALS2TM3 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS2TM3 == 0 )
            {
                numeric randomValueTOTALS2TM3 = floor((rand(countPIFtotal) + 1));      
                validTOTALS2TM3 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS2TM3 = pifTOTALS2TM3arrayRANDusedInd[j];
                
                    if ( testValueTOTALS2TM3 == randomValueTOTALS2TM3 )
                    {
                        validTOTALS2TM3 = 0;
                    }
                }
            }
        pifTOTALS2TM3arrayRAND[i] = pifTOTALS2TM3array[randomValueTOTALS2TM3];
        pifTOTALS2TM3arrayRANDusedInd[i] = randomValueTOTALS2TM3;
        validTOTALS2TM3 = 0;
        }
    
    ################ band 4
    
        numeric validTOTALS2TM4 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS2TM4 == 0 )
            {
                numeric randomValueTOTALS2TM4 = floor((rand(countPIFtotal) + 1));      
                validTOTALS2TM4 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS2TM4 = pifTOTALS2TM4arrayRANDusedInd[j];
                
                    if ( testValueTOTALS2TM4 == randomValueTOTALS2TM4 )
                    {
                        validTOTALS2TM4 = 0;
                    }
                }
            }
        pifTOTALS2TM4arrayRAND[i] = pifTOTALS2TM4array[randomValueTOTALS2TM4];
        pifTOTALS2TM4arrayRANDusedInd[i] = randomValueTOTALS2TM4;
        validTOTALS2TM4 = 0;
        }
    
    ############## band 5
    
        numeric validTOTALS2TM5 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS2TM5 == 0 )
            {
                numeric randomValueTOTALS2TM5 = floor((rand(countPIFtotal) + 1));      
                validTOTALS2TM5 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS2TM5 = pifTOTALS2TM5arrayRANDusedInd[j];
                
                    if ( testValueTOTALS2TM5 == randomValueTOTALS2TM5 )
                    {
                        validTOTALS2TM5 = 0;
                    }
                }
            }
        pifTOTALS2TM5arrayRAND[i] = pifTOTALS2TM5array[randomValueTOTALS2TM5];
        pifTOTALS2TM5arrayRANDusedInd[i] = randomValueTOTALS2TM5;
        validTOTALS2TM5 = 0;
        }
    
    ################ band 7
        
        numeric validTOTALS2TM7 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS2TM7 == 0 )
            {
                numeric randomValueTOTALS2TM7 = floor((rand(countPIFtotal) + 1));      
                validTOTALS2TM7 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS2TM7 = pifTOTALS2TM7arrayRANDusedInd[j];
                
                    if ( testValueTOTALS2TM7 == randomValueTOTALS2TM7 )
                    {
                        validTOTALS2TM7 = 0;
                    }
                }
            }
        pifTOTALS2TM7arrayRAND[i] = pifTOTALS2TM7array[randomValueTOTALS2TM7];
        pifTOTALS2TM7arrayRANDusedInd[i] = randomValueTOTALS2TM7;
        validTOTALS2TM7 = 0;
        }
    }
    
    else
    {
    numeric pifTOTALS2arrayCount = 1;
    array pifTOTALS2MSS1array[countPIFtotal];
    array pifTOTALS2MSS2array[countPIFtotal];
    array pifTOTALS2MSS3array[countPIFtotal];
    array pifTOTALS2MSS4array[countPIFtotal];
    
    array pifTOTALS2MSS1arrayRAND[minPifVAL];
    array pifTOTALS2MSS2arrayRAND[minPifVAL];
    array pifTOTALS2MSS3arrayRAND[minPifVAL];
    array pifTOTALS2MSS4arrayRAND[minPifVAL];
    
    array pifTOTALS2MSS1arrayRANDusedInd[minPifVAL];
    array pifTOTALS2MSS2arrayRANDusedInd[minPifVAL];
    array pifTOTALS2MSS3arrayRANDusedInd[minPifVAL];
    array pifTOTALS2MSS4arrayRANDusedInd[minPifVAL];
        
        for i = 1 to MSSlins
        {
            for j = 1 to MSScols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS2MSS1array[pifTOTALS2arrayCount] = REFS2MSS1[i,j];
			pifTOTALS2MSS2array[pifTOTALS2arrayCount] = REFS2MSS2[i,j];
			pifTOTALS2MSS3array[pifTOTALS2arrayCount] = REFS2MSS3[i,j];
			pifTOTALS2MSS4array[pifTOTALS2arrayCount] = REFS2MSS4[i,j];
                  pifTOTALS2arrayCount = pifTOTALS2arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    
        numeric validTOTALS2MSS1 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS2MSS1 == 0 )
            {
                numeric randomValueTOTALS2MSS1 = floor((rand(countPIFtotal) + 1));      
                validTOTALS2MSS1 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS2MSS1 = pifTOTALS2MSS1arrayRANDusedInd[j];
                
                    if ( testValueTOTALS2MSS1 == randomValueTOTALS2MSS1 )
                    {
                        validTOTALS2MSS1 = 0;
                    }
                }
            }
        pifTOTALS2MSS1arrayRAND[i] = pifTOTALS2MSS1array[randomValueTOTALS2MSS1];
        pifTOTALS2MSS1arrayRANDusedInd[i] = randomValueTOTALS2MSS1;
        validTOTALS2MSS1 = 0;
        }
    
    ############# band 2
    
        numeric validTOTALS2MSS2 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS2MSS2 == 0 )
            {
                numeric randomValueTOTALS2MSS2 = floor((rand(countPIFtotal) + 1));      
                validTOTALS2MSS2 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS2MSS2 = pifTOTALS2MSS2arrayRANDusedInd[j];
                
                    if ( testValueTOTALS2MSS2 == randomValueTOTALS2MSS2 )
                    {
                        validTOTALS2MSS2 = 0;
                    }
                }
            }
        pifTOTALS2MSS2arrayRAND[i] = pifTOTALS2MSS2array[randomValueTOTALS2MSS2];
        pifTOTALS2MSS2arrayRANDusedInd[i] = randomValueTOTALS2MSS2;
        validTOTALS2MSS2 = 0;
        }
    
    ############## band 3
        
        numeric validTOTALS2MSS3 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS2MSS3 == 0 )
            {
                numeric randomValueTOTALS2MSS3 = floor((rand(countPIFtotal) + 1));      
                validTOTALS2MSS3 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS2MSS3 = pifTOTALS2MSS3arrayRANDusedInd[j];
                
                    if ( testValueTOTALS2MSS3 == randomValueTOTALS2MSS3 )
                    {
                        validTOTALS2MSS3 = 0;
                    }
                }
            }
        pifTOTALS2MSS3arrayRAND[i] = pifTOTALS2MSS3array[randomValueTOTALS2MSS3];
        pifTOTALS2MSS3arrayRANDusedInd[i] = randomValueTOTALS2MSS3;
        validTOTALS2MSS3 = 0;
        }
    
    ################ band 4
    
        numeric validTOTALS2MSS4 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS2MSS4 == 0 )
            {
                numeric randomValueTOTALS2MSS4 = floor((rand(countPIFtotal) + 1));      
                validTOTALS2MSS4 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS2MSS4 = pifTOTALS2MSS4arrayRANDusedInd[j];
                
                    if ( testValueTOTALS2MSS4 == randomValueTOTALS2MSS4 )
                    {
                        validTOTALS2MSS4 = 0;
                    }
                }
            }
        pifTOTALS2MSS4arrayRAND[i] = pifTOTALS2MSS4array[randomValueTOTALS2MSS4];
        pifTOTALS2MSS4arrayRANDusedInd[i] = randomValueTOTALS2MSS4;
        validTOTALS2MSS4 = 0;
        }
    }
    if ( sensors1 == 7 )
    {
    numeric pifTOTALS1arrayCount = 1;
    array pifTOTALS1ETM1array[countPIFtotal];
    array pifTOTALS1ETM2array[countPIFtotal];
    array pifTOTALS1ETM3array[countPIFtotal];
    array pifTOTALS1ETM4array[countPIFtotal];
    array pifTOTALS1ETM5array[countPIFtotal];
    array pifTOTALS1ETM7array[countPIFtotal];
    
    array pifTOTALS1ETM1arrayRAND[minPifVAL];
    array pifTOTALS1ETM2arrayRAND[minPifVAL];
    array pifTOTALS1ETM3arrayRAND[minPifVAL];
    array pifTOTALS1ETM4arrayRAND[minPifVAL];
    array pifTOTALS1ETM5arrayRAND[minPifVAL];
    array pifTOTALS1ETM7arrayRAND[minPifVAL];
        
        for i = 1 to ETMlins
        {
            for j = 1 to ETMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS1ETM1array[pifTOTALS1arrayCount] = REFS1ETM1[i,j];
			pifTOTALS1ETM2array[pifTOTALS1arrayCount] = REFS1ETM2[i,j];
			pifTOTALS1ETM3array[pifTOTALS1arrayCount] = REFS1ETM3[i,j];
			pifTOTALS1ETM4array[pifTOTALS1arrayCount] = REFS1ETM4[i,j];
                  pifTOTALS1ETM5array[pifTOTALS1arrayCount] = REFS1ETM5[i,j];
			pifTOTALS1ETM7array[pifTOTALS1arrayCount] = REFS1ETM7[i,j];
			pifTOTALS1arrayCount = pifTOTALS1arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    if ( sensors2 == 7 )
    {     
        for i = 1 to minPifVAL
        {
              pifTOTALS1ETM1arrayRAND[i] = pifTOTALS1ETM1array[pifTOTALS2ETM1arrayRANDusedInd[i]];
        }
    }
    else if ( sensors2 == 6 )
    {
	  for i = 1 to minPifVAL
        {
              pifTOTALS1ETM1arrayRAND[i] = pifTOTALS1ETM1array[pifTOTALS2TM1arrayRANDusedInd[i]];
        }
    }
    
    ############# band 2
    if ( sensors2 == 7 )
    { 
        for i = 1 to minPifVAL
        {
              pifTOTALS1ETM2arrayRAND[i] = pifTOTALS1ETM2array[pifTOTALS2ETM2arrayRANDusedInd[i]];
        }
    }
    else if ( sensors2 == 6 )
    {
        for i = 1 to minPifVAL
        {
              pifTOTALS1ETM2arrayRAND[i] = pifTOTALS1ETM2array[pifTOTALS2TM2arrayRANDusedInd[i]];
        }
    }
    
    ############## band 3
    if ( sensors2 == 7 )
    {            
        for i = 1 to minPifVAL
        {
               pifTOTALS1ETM3arrayRAND[i] = pifTOTALS1ETM3array[pifTOTALS2ETM3arrayRANDusedInd[i]];
        }
    }
    else if ( sensors2 == 6 )
    {
        for i = 1 to minPifVAL
        {
               pifTOTALS1ETM3arrayRAND[i] = pifTOTALS1ETM3array[pifTOTALS2TM3arrayRANDusedInd[i]];
        }
    }
    ################ band 4
    if ( sensors2 == 7 )
    {
        for i = 1 to minPifVAL
        {
               pifTOTALS1ETM4arrayRAND[i] = pifTOTALS1ETM4array[pifTOTALS2ETM4arrayRANDusedInd[i]];
        }
    }
    else if ( sensors2 == 6 )
    {
        for i = 1 to minPifVAL
        {
               pifTOTALS1ETM4arrayRAND[i] = pifTOTALS1ETM4array[pifTOTALS2TM4arrayRANDusedInd[i]];
        }
    }
    ############## band 5
    if ( sensors2 == 7 )
    {    
        for i = 1 to minPifVAL
        {
        	   pifTOTALS1ETM5arrayRAND[i] = pifTOTALS1ETM5array[pifTOTALS2ETM5arrayRANDusedInd[i]];
        }
    }
    else if ( sensors2 == 6 )
    {
        for i = 1 to minPifVAL
        {
        	   pifTOTALS1ETM5arrayRAND[i] = pifTOTALS1ETM5array[pifTOTALS2TM5arrayRANDusedInd[i]];
        }
    }
    ################ band 7
    if ( sensors2 == 7 )
    {
        for i = 1 to minPifVAL
        {
        	   pifTOTALS1ETM7arrayRAND[i] = pifTOTALS1ETM7array[pifTOTALS2ETM7arrayRANDusedInd[i]];
        }
    }
    else if ( sensors2 == 6 )
    {
        for i = 1 to minPifVAL
        {
        	   pifTOTALS1ETM7arrayRAND[i] = pifTOTALS1ETM7array[pifTOTALS2TM7arrayRANDusedInd[i]];
        }
    }
   }
    
    else if ( sensors1 == 6 )
    {
    numeric pifTOTALS1arrayCount = 1;
    array pifTOTALS1TM1array[countPIFtotal];
    array pifTOTALS1TM2array[countPIFtotal];
    array pifTOTALS1TM3array[countPIFtotal];
    array pifTOTALS1TM4array[countPIFtotal];
    array pifTOTALS1TM5array[countPIFtotal];
    array pifTOTALS1TM7array[countPIFtotal];
    
    array pifTOTALS1TM1arrayRAND[minPifVAL];
    array pifTOTALS1TM2arrayRAND[minPifVAL];
    array pifTOTALS1TM3arrayRAND[minPifVAL];
    array pifTOTALS1TM4arrayRAND[minPifVAL];
    array pifTOTALS1TM5arrayRAND[minPifVAL];
    array pifTOTALS1TM7arrayRAND[minPifVAL];
    
        for i = 1 to TMlins
        {
            for j = 1 to TMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS1TM1array[pifTOTALS1arrayCount] = REFS1TM1[i,j];
			pifTOTALS1TM2array[pifTOTALS1arrayCount] = REFS1TM2[i,j];
			pifTOTALS1TM3array[pifTOTALS1arrayCount] = REFS1TM3[i,j];
			pifTOTALS1TM4array[pifTOTALS1arrayCount] = REFS1TM4[i,j];
                  pifTOTALS1TM5array[pifTOTALS1arrayCount] = REFS1TM5[i,j];
			pifTOTALS1TM7array[pifTOTALS1arrayCount] = REFS1TM7[i,j];
                  pifTOTALS1arrayCount = pifTOTALS1arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    if ( sensors2 == 7 )
    {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM1arrayRAND[i] = pifTOTALS2TM1array[pifTOTALS2ETM1arrayRANDusedInd[i]];
        }
    }
    else if ( sensors2 == 6 )
    {
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM1arrayRAND[i] = pifTOTALS2TM1array[pifTOTALS2TM1arrayRANDusedInd[i]];
        }
    }
    ############# band 2
    
    if ( sensors2 == 7 )
    {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM2arrayRAND[i] = pifTOTALS2TM2array[pifTOTALS2ETM2arrayRANDusedInd[i]];
        }
    }
    else if ( sensors2 == 6 )
    {  
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM2arrayRAND[i] = pifTOTALS2TM2array[pifTOTALS2TM2arrayRANDusedInd[i]];
        }  
    }
    ############## band 3
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM3arrayRAND[i] = pifTOTALS1TM3array[pifTOTALS2ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM3arrayRAND[i] = pifTOTALS1TM3array[pifTOTALS2TM3arrayRANDusedInd[i]];
        }   
	}
    ################ band 4
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM4arrayRAND[i] = pifTOTALS1TM4array[pifTOTALS2ETM4arrayRANDusedInd[i]];
        }
	  }
      else if ( sensors2 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM4arrayRAND[i] = pifTOTALS1TM4array[pifTOTALS2TM4arrayRANDusedInd[i]];
        }  
	  }
    ############## band 5
    
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM5arrayRAND[i] = pifTOTALS1TM5array[pifTOTALS2ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM5arrayRAND[i] = pifTOTALS1TM5array[pifTOTALS2TM5arrayRANDusedInd[i]];
        }   
	}
    ################ band 7
        
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM7arrayRAND[i] = pifTOTALS1TM7array[pifTOTALS2ETM7arrayRANDusedInd[i]];
        }
	  }
      else if ( sensors2 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM7arrayRAND[i] = pifTOTALS1TM7array[pifTOTALS2TM7arrayRANDusedInd[i]];
        }    
	  }
    }
    
    else
    {
    numeric pifTOTALS1arrayCount = 1;
    array pifTOTALS1MSS1array[countPIFtotal];
    array pifTOTALS1MSS2array[countPIFtotal];
    array pifTOTALS1MSS3array[countPIFtotal];
    array pifTOTALS1MSS4array[countPIFtotal];
    
    array pifTOTALS1MSS1arrayRAND[minPifVAL];
    array pifTOTALS1MSS2arrayRAND[minPifVAL];
    array pifTOTALS1MSS3arrayRAND[minPifVAL];
    array pifTOTALS1MSS4arrayRAND[minPifVAL];
    
        for i = 1 to MSSlins
        {
            for j = 1 to MSScols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS1MSS1array[pifTOTALS1arrayCount] = REFS1MSS1[i,j];
			pifTOTALS1MSS2array[pifTOTALS1arrayCount] = REFS1MSS2[i,j];
			pifTOTALS1MSS3array[pifTOTALS1arrayCount] = REFS1MSS3[i,j];
			pifTOTALS1MSS4array[pifTOTALS1arrayCount] = REFS1MSS4[i,j];
                  pifTOTALS1arrayCount = pifTOTALS1arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS1arrayRAND[i] = pifTOTALS1MSS1array[pifTOTALS2ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS1arrayRAND[i] = pifTOTALS1MSS1array[pifTOTALS2TM2arrayRANDusedInd[i]];
        }  
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS1arrayRAND[i] = pifTOTALS1MSS1array[pifTOTALS2MSS1arrayRANDusedInd[i]];
        }
	}
    
    ############# band 2
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS2arrayRAND[i] = pifTOTALS1MSS2array[pifTOTALS2ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS2arrayRAND[i] = pifTOTALS1MSS2array[pifTOTALS2TM3arrayRANDusedInd[i]];
        }   
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS2arrayRAND[i] = pifTOTALS1MSS2array[pifTOTALS2MSS2arrayRANDusedInd[i]];
        }
	}
    
    ############## band 3
     
      if ( sensors2 == 5 or sensors2 == 4 or sensors2 == 3 or sensors2 == 2 or sensors2 == 1 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS3arrayRAND[i] = pifTOTALS1MSS3array[pifTOTALS2MSS3arrayRANDusedInd[i]];
        }
	  }
    
    ################ band 4
    
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS4arrayRAND[i] = pifTOTALS1MSS4array[pifTOTALS2ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS4arrayRAND[i] = pifTOTALS1MSS4array[pifTOTALS2TM4arrayRANDusedInd[i]];
        }
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS4arrayRAND[i] = pifTOTALS1MSS4array[pifTOTALS2MSS4arrayRANDusedInd[i]];
        }
	}    
    }
    if ( sensors3 == 7 )
    {
    numeric pifTOTALS3arrayCount = 1;
    array pifTOTALS3ETM1array[countPIFtotal];
    array pifTOTALS3ETM2array[countPIFtotal];
    array pifTOTALS3ETM3array[countPIFtotal];
    array pifTOTALS3ETM4array[countPIFtotal];
    array pifTOTALS3ETM5array[countPIFtotal];
    array pifTOTALS3ETM7array[countPIFtotal];
    
    array pifTOTALS3ETM1arrayRAND[minPifVAL];
    array pifTOTALS3ETM2arrayRAND[minPifVAL];
    array pifTOTALS3ETM3arrayRAND[minPifVAL];
    array pifTOTALS3ETM4arrayRAND[minPifVAL];
    array pifTOTALS3ETM5arrayRAND[minPifVAL];
    array pifTOTALS3ETM7arrayRAND[minPifVAL];
    
        for i = 1 to ETMlins
        {
            for j = 1 to ETMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS3ETM1array[pifTOTALS3arrayCount] = REFS3ETM1[i,j];
			pifTOTALS3ETM2array[pifTOTALS3arrayCount] = REFS3ETM2[i,j];
			pifTOTALS3ETM3array[pifTOTALS3arrayCount] = REFS3ETM3[i,j];
			pifTOTALS3ETM4array[pifTOTALS3arrayCount] = REFS3ETM4[i,j];
                  pifTOTALS3ETM5array[pifTOTALS3arrayCount] = REFS3ETM5[i,j];
			pifTOTALS3ETM7array[pifTOTALS3arrayCount] = REFS3ETM7[i,j];
			pifTOTALS3arrayCount = pifTOTALS3arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM1arrayRAND[i] = pifTOTALS3ETM1array[pifTOTALS2ETM1arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM1arrayRAND[i] = pifTOTALS3ETM1array[pifTOTALS2TM1arrayRANDusedInd[i]];
        }   
	}
    
    ############# band 2
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM2arrayRAND[i] = pifTOTALS3ETM2array[pifTOTALS2ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM2arrayRAND[i] = pifTOTALS3ETM2array[pifTOTALS2TM2arrayRANDusedInd[i]];
        }   
	}
    ############## band 3
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM3arrayRAND[i] = pifTOTALS3ETM3array[pifTOTALS2ETM3arrayRANDusedInd[i]];
        }
	}
	else if ( sensors2 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM3arrayRAND[i] = pifTOTALS3ETM3array[pifTOTALS2TM3arrayRANDusedInd[i]];
        }    
	}
    ################ band 4
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM4arrayRAND[i] = pifTOTALS3ETM4array[pifTOTALS2ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM4arrayRAND[i] = pifTOTALS3ETM4array[pifTOTALS2TM4arrayRANDusedInd[i]];
        }  
	}
    ############## band 5
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM5arrayRAND[i] = pifTOTALS3ETM5array[pifTOTALS2ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM5arrayRAND[i] = pifTOTALS3ETM5array[pifTOTALS2TM5arrayRANDusedInd[i]];
        }  
	}
    ################ band 7
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM7arrayRAND[i] = pifTOTALS3ETM7array[pifTOTALS2ETM7arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2== 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM7arrayRAND[i] = pifTOTALS3ETM7array[pifTOTALS2TM7arrayRANDusedInd[i]];
        }   
	}
    }
    
    else if ( sensors3 == 6 )
    {
    numeric pifTOTALS3arrayCount = 1;
    array pifTOTALS3TM1array[countPIFtotal];
    array pifTOTALS3TM2array[countPIFtotal];
    array pifTOTALS3TM3array[countPIFtotal];
    array pifTOTALS3TM4array[countPIFtotal];
    array pifTOTALS3TM5array[countPIFtotal];
    array pifTOTALS3TM7array[countPIFtotal];
    
    array pifTOTALS3TM1arrayRAND[minPifVAL];
    array pifTOTALS3TM2arrayRAND[minPifVAL];
    array pifTOTALS3TM3arrayRAND[minPifVAL];
    array pifTOTALS3TM4arrayRAND[minPifVAL];
    array pifTOTALS3TM5arrayRAND[minPifVAL];
    array pifTOTALS3TM7arrayRAND[minPifVAL];
    
        for i = 1 to TMlins
        {
            for j = 1 to TMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS3TM1array[pifTOTALS3arrayCount] = REFS3TM1[i,j];
			pifTOTALS3TM2array[pifTOTALS3arrayCount] = REFS3TM2[i,j];
			pifTOTALS3TM3array[pifTOTALS3arrayCount] = REFS3TM3[i,j];
			pifTOTALS3TM4array[pifTOTALS3arrayCount] = REFS3TM4[i,j];
                  pifTOTALS3TM5array[pifTOTALS3arrayCount] = REFS3TM5[i,j];
			pifTOTALS3TM7array[pifTOTALS3arrayCount] = REFS3TM7[i,j];
                  pifTOTALS3arrayCount = pifTOTALS3arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM1arrayRAND[i] = pifTOTALS3TM1array[pifTOTALS2ETM1arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM1arrayRAND[i] = pifTOTALS3TM1array[pifTOTALS2TM1arrayRANDusedInd[i]];
        }  
	}
    
    ############# band 2
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM2arrayRAND[i] = pifTOTALS3TM2array[pifTOTALS2ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM2arrayRAND[i] = pifTOTALS3TM2array[pifTOTALS2TM2arrayRANDusedInd[i]];
        }   
	}
    ############## band 3
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM3arrayRAND[i] = pifTOTALS3TM3array[pifTOTALS2ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM3arrayRAND[i] = pifTOTALS3TM3array[pifTOTALS2TM3arrayRANDusedInd[i]];
        }   
	}
    ################ band 4
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM4arrayRAND[i] = pifTOTALS3TM4array[pifTOTALS2ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM4arrayRAND[i] = pifTOTALS3TM4array[pifTOTALS2TM4arrayRANDusedInd[i]];
        }   
	}
    ############## band 5
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM5arrayRAND[i] = pifTOTALS3TM5array[pifTOTALS2ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM5arrayRAND[i] = pifTOTALS3TM5array[pifTOTALS2TM5arrayRANDusedInd[i]];
        }  
	}
    ################ band 7
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM7arrayRAND[i] = pifTOTALS3TM7array[pifTOTALS2ETM7arrayRANDusedInd[i]];
        }
	  }
      else if ( sensors2 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM7arrayRAND[i] = pifTOTALS3TM7array[pifTOTALS2TM7arrayRANDusedInd[i]];
        }  
	  }
    }
    
    else
    {
    numeric pifTOTALS3arrayCount = 1;
    array pifTOTALS3MSS1array[countPIFtotal];
    array pifTOTALS3MSS2array[countPIFtotal];
    array pifTOTALS3MSS3array[countPIFtotal];
    array pifTOTALS3MSS4array[countPIFtotal];
    
    array pifTOTALS3MSS1arrayRAND[minPifVAL];
    array pifTOTALS3MSS2arrayRAND[minPifVAL];
    array pifTOTALS3MSS3arrayRAND[minPifVAL];
    array pifTOTALS3MSS4arrayRAND[minPifVAL];
    
        for i = 1 to MSSlins
        {
            for j = 1 to MSScols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS3MSS1array[pifTOTALS3arrayCount] = REFS3MSS1[i,j];
			pifTOTALS3MSS2array[pifTOTALS3arrayCount] = REFS3MSS2[i,j];
			pifTOTALS3MSS3array[pifTOTALS3arrayCount] = REFS3MSS3[i,j];
			pifTOTALS3MSS4array[pifTOTALS3arrayCount] = REFS3MSS4[i,j];
                  pifTOTALS3arrayCount = pifTOTALS3arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS1arrayRAND[i] = pifTOTALS3MSS1array[pifTOTALS2ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS1arrayRAND[i] = pifTOTALS3MSS1array[pifTOTALS2TM2arrayRANDusedInd[i]];
        }  
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS1arrayRAND[i] = pifTOTALS3MSS1array[pifTOTALS2MSS1arrayRANDusedInd[i]];
        }
	}
    
    ############# band 2
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS2arrayRAND[i] = pifTOTALS3MSS2array[pifTOTALS2ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS2arrayRAND[i] = pifTOTALS3MSS2array[pifTOTALS2TM3arrayRANDusedInd[i]];
        }   
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS2arrayRAND[i] = pifTOTALS3MSS2array[pifTOTALS2MSS2arrayRANDusedInd[i]];
        }
	}
    
    ############## band 3
     
      if ( sensors2 == 5 or sensors2 == 4 or sensors2 == 3 or sensors2 == 2 or sensors2 == 1 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS3arrayRAND[i] = pifTOTALS3MSS3array[pifTOTALS2MSS3arrayRANDusedInd[i]];
        }
	  }
    
    ################ band 4
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS4arrayRAND[i] = pifTOTALS3MSS4array[pifTOTALS2ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS4arrayRAND[i] = pifTOTALS3MSS4array[pifTOTALS2TM4arrayRANDusedInd[i]];
        }    
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS4arrayRAND[i] = pifTOTALS3MSS4array[pifTOTALS2MSS4arrayRANDusedInd[i]];
        }
	}
    }
    if ( sensors4 == 7 )
    {
    numeric pifTOTALS4arrayCount = 1;
    array pifTOTALS4ETM1array[countPIFtotal];
    array pifTOTALS4ETM2array[countPIFtotal];
    array pifTOTALS4ETM3array[countPIFtotal];
    array pifTOTALS4ETM4array[countPIFtotal];
    array pifTOTALS4ETM5array[countPIFtotal];
    array pifTOTALS4ETM7array[countPIFtotal];
    
    array pifTOTALS4ETM1arrayRAND[minPifVAL];
    array pifTOTALS4ETM2arrayRAND[minPifVAL];
    array pifTOTALS4ETM3arrayRAND[minPifVAL];
    array pifTOTALS4ETM4arrayRAND[minPifVAL];
    array pifTOTALS4ETM5arrayRAND[minPifVAL];
    array pifTOTALS4ETM7arrayRAND[minPifVAL];
    
        for i = 1 to ETMlins
        {
            for j = 1 to ETMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS4ETM1array[pifTOTALS4arrayCount] = REFS4ETM1[i,j];
			pifTOTALS4ETM2array[pifTOTALS4arrayCount] = REFS4ETM2[i,j];
			pifTOTALS4ETM3array[pifTOTALS4arrayCount] = REFS4ETM3[i,j];
			pifTOTALS4ETM4array[pifTOTALS4arrayCount] = REFS4ETM4[i,j];
                  pifTOTALS4ETM5array[pifTOTALS4arrayCount] = REFS4ETM5[i,j];
			pifTOTALS4ETM7array[pifTOTALS4arrayCount] = REFS4ETM7[i,j];
			pifTOTALS4arrayCount = pifTOTALS4arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM1arrayRAND[i] = pifTOTALS4ETM1array[pifTOTALS2ETM1arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM1arrayRAND[i] = pifTOTALS4ETM1array[pifTOTALS2TM1arrayRANDusedInd[i]];
        }  
	}
    
    ############# band 2
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM2arrayRAND[i] = pifTOTALS4ETM2array[pifTOTALS2ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM2arrayRAND[i] = pifTOTALS4ETM2array[pifTOTALS2TM2arrayRANDusedInd[i]];
        }
	}
    ############## band 3
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM3arrayRAND[i] = pifTOTALS4ETM3array[pifTOTALS2ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM3arrayRAND[i] = pifTOTALS4ETM3array[pifTOTALS2TM3arrayRANDusedInd[i]];
        }  
	  }
    ################ band 4
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM4arrayRAND[i] = pifTOTALS4ETM4array[pifTOTALS2ETM4arrayRANDusedInd[i]];
        }
	  }
      else if ( sensors2 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM4arrayRAND[i] = pifTOTALS4ETM4array[pifTOTALS2TM4arrayRANDusedInd[i]];
        }    
	  }
    ############## band 5
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM5arrayRAND[i] = pifTOTALS4ETM5array[pifTOTALS2ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      {   
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM5arrayRAND[i] = pifTOTALS4ETM5array[pifTOTALS2TM5arrayRANDusedInd[i]];
        } 
	}
    
    ################ band 7
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM7arrayRAND[i] = pifTOTALS4ETM7array[pifTOTALS2ETM7arrayRANDusedInd[i]];
        }
	  }
	  else if ( sensors2 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM7arrayRAND[i] = pifTOTALS4ETM7array[pifTOTALS2TM7arrayRANDusedInd[i]];
        }  
	  }
    }
    
    else if ( sensors4 == 6 )
    {
    numeric pifTOTALS4arrayCount = 1;
    array pifTOTALS4TM1array[countPIFtotal];
    array pifTOTALS4TM2array[countPIFtotal];
    array pifTOTALS4TM3array[countPIFtotal];
    array pifTOTALS4TM4array[countPIFtotal];
    array pifTOTALS4TM5array[countPIFtotal];
    array pifTOTALS4TM7array[countPIFtotal];
    
    array pifTOTALS4TM1arrayRAND[minPifVAL];
    array pifTOTALS4TM2arrayRAND[minPifVAL];
    array pifTOTALS4TM3arrayRAND[minPifVAL];
    array pifTOTALS4TM4arrayRAND[minPifVAL];
    array pifTOTALS4TM5arrayRAND[minPifVAL];
    array pifTOTALS4TM7arrayRAND[minPifVAL];
        
        for i = 1 to TMlins
        {
            for j = 1 to TMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS4TM1array[pifTOTALS4arrayCount] = REFS4TM1[i,j];
			pifTOTALS4TM2array[pifTOTALS4arrayCount] = REFS4TM2[i,j];
			pifTOTALS4TM3array[pifTOTALS4arrayCount] = REFS4TM3[i,j];
			pifTOTALS4TM4array[pifTOTALS4arrayCount] = REFS4TM4[i,j];
                  pifTOTALS4TM5array[pifTOTALS4arrayCount] = REFS4TM5[i,j];
			pifTOTALS4TM7array[pifTOTALS4arrayCount] = REFS4TM7[i,j];
                  pifTOTALS4arrayCount = pifTOTALS4arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM1arrayRAND[i] = pifTOTALS4TM1array[pifTOTALS2ETM1arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM1arrayRAND[i] = pifTOTALS4TM1array[pifTOTALS2TM1arrayRANDusedInd[i]];
        }   
	}
    
    ############# band 2
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM2arrayRAND[i] = pifTOTALS4TM2array[pifTOTALS2ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM2arrayRAND[i] = pifTOTALS4TM2array[pifTOTALS2TM2arrayRANDusedInd[i]];
        }    
	}
    ############## band 3
	
      if ( sensors2 == 7 )
      {         
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM3arrayRAND[i] = pifTOTALS4TM3array[pifTOTALS2ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM3arrayRAND[i] = pifTOTALS4TM3array[pifTOTALS2TM3arrayRANDusedInd[i]];
        }    
	}
    ################ band 4
     
      if ( sensors2 == 7 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM4arrayRAND[i] = pifTOTALS4TM4array[pifTOTALS2ETM4arrayRANDusedInd[i]];
        }
	  }
      else if ( sensors2 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM4arrayRAND[i] = pifTOTALS4TM4array[pifTOTALS2TM4arrayRANDusedInd[i]];
        }    
	  }
    ############## band 5
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM5arrayRAND[i] = pifTOTALS4TM5array[pifTOTALS2ETM5arrayRANDusedInd[i]];
        }
	  }
      else if ( sensors2 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM5arrayRAND[i] = pifTOTALS4TM5array[pifTOTALS2TM5arrayRANDusedInd[i]];
        }  
	  }
    ################ band 7
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM7arrayRAND[i] = pifTOTALS4TM7array[pifTOTALS2ETM7arrayRANDusedInd[i]];
        }
	  }
      else if ( sensors2 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM7arrayRAND[i] = pifTOTALS4TM7array[pifTOTALS2TM7arrayRANDusedInd[i]];
        }   
	  }
    }
    
    else
    {
    numeric pifTOTALS4arrayCount = 1;
    array pifTOTALS4MSS1array[countPIFtotal];
    array pifTOTALS4MSS2array[countPIFtotal];
    array pifTOTALS4MSS3array[countPIFtotal];
    array pifTOTALS4MSS4array[countPIFtotal];
    
    array pifTOTALS4MSS1arrayRAND[minPifVAL];
    array pifTOTALS4MSS2arrayRAND[minPifVAL];
    array pifTOTALS4MSS3arrayRAND[minPifVAL];
    array pifTOTALS4MSS4arrayRAND[minPifVAL];
    
        for i = 1 to MSSlins
        {
            for j = 1 to MSScols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS4MSS1array[pifTOTALS4arrayCount] = REFS4MSS1[i,j];
			pifTOTALS4MSS2array[pifTOTALS4arrayCount] = REFS4MSS2[i,j];
			pifTOTALS4MSS3array[pifTOTALS4arrayCount] = REFS4MSS3[i,j];
			pifTOTALS4MSS4array[pifTOTALS4arrayCount] = REFS4MSS4[i,j];
                  pifTOTALS4arrayCount = pifTOTALS4arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS1arrayRAND[i] = pifTOTALS4MSS1array[pifTOTALS2ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS1arrayRAND[i] = pifTOTALS4MSS1array[pifTOTALS2TM2arrayRANDusedInd[i]];
        }   
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS1arrayRAND[i] = pifTOTALS4MSS1array[pifTOTALS2MSS1arrayRANDusedInd[i]];
        }   
	}
    
    ############# band 2
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS2arrayRAND[i] = pifTOTALS4MSS2array[pifTOTALS2ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors2 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS2arrayRAND[i] = pifTOTALS4MSS2array[pifTOTALS2TM3arrayRANDusedInd[i]];
        }   
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS1arrayRAND[i] = pifTOTALS4MSS1array[pifTOTALS2MSS2arrayRANDusedInd[i]];
        }   
	}
    
    ############## band 3
     
      if ( sensors2 == 5 or sensors2 == 4 or sensors2 == 3 or sensors2 == 2 or sensors2 == 1 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS3arrayRAND[i] = pifTOTALS4MSS3array[pifTOTALS2MSS3arrayRANDusedInd[i]];
        }
	  }
    
    ################ band 4
     
      if ( sensors2 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS4arrayRAND[i] = pifTOTALS4MSS4array[pifTOTALS2ETM4arrayRANDusedInd[i]];
        }
	  }
      else if ( sensors2 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS4arrayRAND[i] = pifTOTALS4MSS4array[pifTOTALS2TM4arrayRANDusedInd[i]];
        }    
	  }
	 else
	 {
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS4arrayRAND[i] = pifTOTALS4MSS4array[pifTOTALS2MSS4arrayRANDusedInd[i]];
        }
	  }
    }
  }
  else if ( slaveMaster == 3 )
  {
    if ( sensors3 == 7 )
    {
    numeric pifTOTALS3arrayCount = 1;
    
    array pifTOTALS3ETM1array[countPIFtotal];
    array pifTOTALS3ETM2array[countPIFtotal];
    array pifTOTALS3ETM3array[countPIFtotal];
    array pifTOTALS3ETM4array[countPIFtotal];
    array pifTOTALS3ETM5array[countPIFtotal];
    array pifTOTALS3ETM7array[countPIFtotal];
    
    array pifTOTALS3ETM1arrayRAND[minPifVAL];
    array pifTOTALS3ETM2arrayRAND[minPifVAL];
    array pifTOTALS3ETM3arrayRAND[minPifVAL];
    array pifTOTALS3ETM4arrayRAND[minPifVAL];
    array pifTOTALS3ETM5arrayRAND[minPifVAL];
    array pifTOTALS3ETM7arrayRAND[minPifVAL];
    
    array pifTOTALS3ETM1arrayRANDusedInd[minPifVAL];
    array pifTOTALS3ETM2arrayRANDusedInd[minPifVAL];
    array pifTOTALS3ETM3arrayRANDusedInd[minPifVAL];
    array pifTOTALS3ETM4arrayRANDusedInd[minPifVAL];
    array pifTOTALS3ETM5arrayRANDusedInd[minPifVAL];
    array pifTOTALS3ETM7arrayRANDusedInd[minPifVAL];
    
        for i = 1 to ETMlins
        {
            for j = 1 to ETMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                       pifTOTALS3ETM1array[pifTOTALS3arrayCount] = REFS3ETM1[i,j];
			     pifTOTALS3ETM2array[pifTOTALS3arrayCount] = REFS3ETM2[i,j];
			     pifTOTALS3ETM3array[pifTOTALS3arrayCount] = REFS3ETM3[i,j];
			     pifTOTALS3ETM4array[pifTOTALS3arrayCount] = REFS3ETM4[i,j];
                       pifTOTALS3ETM5array[pifTOTALS3arrayCount] = REFS3ETM5[i,j];
			     pifTOTALS3ETM7array[pifTOTALS3arrayCount] = REFS3ETM7[i,j];
			     pifTOTALS3arrayCount = pifTOTALS3arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    
        numeric validTOTALS3ETM1 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS3ETM1 == 0 )
            {
                numeric randomValueTOTALS3ETM1 = floor((rand(countPIFtotal) + 1));      
                validTOTALS3ETM1 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS3ETM1 = pifTOTALS3ETM1arrayRANDusedInd[j];
                
                    if ( testValueTOTALS3ETM1 == randomValueTOTALS3ETM1 )
                    {
                        validTOTALS3ETM1 = 0;
                    }
                }
            }
        pifTOTALS3ETM1arrayRAND[i] = pifTOTALS3ETM1array[randomValueTOTALS3ETM1];
        pifTOTALS3ETM1arrayRANDusedInd[i] = randomValueTOTALS3ETM1;
        validTOTALS3ETM1 = 0;
        }
    
    ############# band 2
    
        numeric validTOTALS3ETM2 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS3ETM2 == 0 )
            {
                numeric randomValueTOTALS3ETM2 = floor((rand(countPIFtotal) + 1));      
                validTOTALS3ETM2 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS3ETM2 = pifTOTALS3ETM2arrayRANDusedInd[j];
                
                    if ( testValueTOTALS3ETM2 == randomValueTOTALS3ETM2 )
                    {
                        validTOTALS3ETM2 = 0;
                    }
                }
            }
        pifTOTALS3ETM2arrayRAND[i] = pifTOTALS3ETM2array[randomValueTOTALS3ETM2];
        pifTOTALS3ETM2arrayRANDusedInd[i] = randomValueTOTALS3ETM2;
        validTOTALS3ETM2 = 0;
        }
    
    ############## band 3
        
        numeric validTOTALS3ETM3 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS3ETM3 == 0 )
            {
                numeric randomValueTOTALS3ETM3 = floor((rand(countPIFtotal) + 1));      
                validTOTALS3ETM3 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS3ETM3 = pifTOTALS3ETM3arrayRANDusedInd[j];
                
                    if ( testValueTOTALS3ETM3 == randomValueTOTALS3ETM3 )
                    {
                        validTOTALS3ETM3 = 0;
                    }
                }
            }
        pifTOTALS3ETM3arrayRAND[i] = pifTOTALS3ETM3array[randomValueTOTALS3ETM3];
        pifTOTALS3ETM3arrayRANDusedInd[i] = randomValueTOTALS3ETM3;
        validTOTALS3ETM3 = 0;
        }
    
    ################ band 4
    
        numeric validTOTALS3ETM4 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS3ETM4 == 0 )
            {
                numeric randomValueTOTALS3ETM4 = floor((rand(countPIFtotal) + 1));      
                validTOTALS3ETM4 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS3ETM4 = pifTOTALS3ETM4arrayRANDusedInd[j];
                
                    if ( testValueTOTALS3ETM4 == randomValueTOTALS3ETM4 )
                    {
                        validTOTALS3ETM4 = 0;
                    }
                }
            }
        pifTOTALS3ETM4arrayRAND[i] = pifTOTALS3ETM4array[randomValueTOTALS3ETM4];
        pifTOTALS3ETM4arrayRANDusedInd[i] = randomValueTOTALS3ETM4;
        validTOTALS3ETM4 = 0;
        }
    
    ############## band 5
    
        numeric validTOTALS3ETM5 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS3ETM5 == 0 )
            {
                numeric randomValueTOTALS3ETM5 = floor((rand(countPIFtotal) + 1));      
                validTOTALS3ETM5 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS3ETM5 = pifTOTALS3ETM5arrayRANDusedInd[j];
                
                    if ( testValueTOTALS3ETM5 == randomValueTOTALS3ETM5 )
                    {
                        validTOTALS3ETM5 = 0;
                    }
                }
            }
        pifTOTALS3ETM5arrayRAND[i] = pifTOTALS3ETM5array[randomValueTOTALS3ETM5];
        pifTOTALS3ETM5arrayRANDusedInd[i] = randomValueTOTALS3ETM5;
        validTOTALS3ETM5 = 0;
        }
    
    ################ band 7
        
        numeric validTOTALS3ETM7 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS3ETM7 == 0 )
            {
                numeric randomValueTOTALS3ETM7 = floor((rand(countPIFtotal) + 1));      
                validTOTALS3ETM7 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS3ETM7 = pifTOTALS3ETM7arrayRANDusedInd[j];
                
                    if ( testValueTOTALS3ETM7 == randomValueTOTALS3ETM7 )
                    {
                        validTOTALS3ETM7 = 0;
                    }
                }
            }
        pifTOTALS3ETM7arrayRAND[i] = pifTOTALS3ETM7array[randomValueTOTALS3ETM7];
        pifTOTALS3ETM7arrayRANDusedInd[i] = randomValueTOTALS3ETM7;
        validTOTALS3ETM7 = 0;
        }
    }
    
    else if ( sensors3 == 6 )
    {
    numeric pifTOTALS3arrayCount = 1;
    array pifTOTALS3TM1array[countPIFtotal];
    array pifTOTALS3TM2array[countPIFtotal];
    array pifTOTALS3TM3array[countPIFtotal];
    array pifTOTALS3TM4array[countPIFtotal];
    array pifTOTALS3TM5array[countPIFtotal];
    array pifTOTALS3TM7array[countPIFtotal];
    
    array pifTOTALS3TM1arrayRAND[minPifVAL];
    array pifTOTALS3TM2arrayRAND[minPifVAL];
    array pifTOTALS3TM3arrayRAND[minPifVAL];
    array pifTOTALS3TM4arrayRAND[minPifVAL];
    array pifTOTALS3TM5arrayRAND[minPifVAL];
    array pifTOTALS3TM7arrayRAND[minPifVAL];
    
    array pifTOTALS3TM1arrayRANDusedInd[minPifVAL];
    array pifTOTALS3TM2arrayRANDusedInd[minPifVAL];
    array pifTOTALS3TM3arrayRANDusedInd[minPifVAL];
    array pifTOTALS3TM4arrayRANDusedInd[minPifVAL];
    array pifTOTALS3TM5arrayRANDusedInd[minPifVAL];
    array pifTOTALS3TM7arrayRANDusedInd[minPifVAL];
    
        for i = 1 to TMlins
        {
            for j = 1 to TMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                        pifTOTALS3TM1array[pifTOTALS3arrayCount] = REFS3TM1[i,j];
			      pifTOTALS3TM2array[pifTOTALS3arrayCount] = REFS3TM2[i,j];
			      pifTOTALS3TM3array[pifTOTALS3arrayCount] = REFS3TM3[i,j];
			      pifTOTALS3TM4array[pifTOTALS3arrayCount] = REFS3TM4[i,j];
                        pifTOTALS3TM5array[pifTOTALS3arrayCount] = REFS3TM5[i,j];
			      pifTOTALS3TM7array[pifTOTALS3arrayCount] = REFS3TM7[i,j];
                        pifTOTALS3arrayCount = pifTOTALS3arrayCount + 1;
                }
            }
        }
        
    ############# band 1
    
        numeric validTOTALS3TM1 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS3TM1 == 0 )
            {
                numeric randomValueTOTALS3TM1 = floor((rand(countPIFtotal) + 1));      
                validTOTALS3TM1 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS3TM1 = pifTOTALS3TM1arrayRANDusedInd[j];
                
                    if ( testValueTOTALS3TM1 == randomValueTOTALS3TM1 )
                    {
                        validTOTALS3TM1 = 0;
                    }
                }
            }
        pifTOTALS3TM1arrayRAND[i] = pifTOTALS3TM1array[randomValueTOTALS3TM1];
        pifTOTALS3TM1arrayRANDusedInd[i] = randomValueTOTALS3TM1;
    validTOTALS3TM1 = 0;
        }
    
    ############# band 2
    
        numeric validTOTALS3TM2 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS3TM2 == 0 )
            {
                numeric randomValueTOTALS3TM2 = floor((rand(countPIFtotal) + 1));      
                validTOTALS3TM2 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS3TM2 = pifTOTALS3TM2arrayRANDusedInd[j];
                
                    if ( testValueTOTALS3TM2 == randomValueTOTALS3TM2 )
                    {
                        validTOTALS3TM2 = 0;
                    }
                }
            }
        pifTOTALS3TM2arrayRAND[i] = pifTOTALS3TM2array[randomValueTOTALS3TM2];
        pifTOTALS3TM2arrayRANDusedInd[i] = randomValueTOTALS3TM2;
        validTOTALS3TM2 = 0;
        }
    
    ############## band 3
        
        numeric validTOTALS3TM3 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS3TM3 == 0 )
            {
                numeric randomValueTOTALS3TM3 = floor((rand(countPIFtotal) + 1));      
                validTOTALS3TM3 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS3TM3 = pifTOTALS3TM3arrayRANDusedInd[j];
                
                    if ( testValueTOTALS3TM3 == randomValueTOTALS3TM3 )
                    {
                        validTOTALS3TM3 = 0;
                    }
                }
            }
        pifTOTALS3TM3arrayRAND[i] = pifTOTALS3TM3array[randomValueTOTALS3TM3];
        pifTOTALS3TM3arrayRANDusedInd[i] = randomValueTOTALS3TM3;
        validTOTALS3TM3 = 0;
        }
    
    ################ band 4
    
        numeric validTOTALS3TM4 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS3TM4 == 0 )
            {
                numeric randomValueTOTALS3TM4 = floor((rand(countPIFtotal) + 1));      
                validTOTALS3TM4 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS3TM4 = pifTOTALS3TM4arrayRANDusedInd[j];
                
                    if ( testValueTOTALS3TM4 == randomValueTOTALS3TM4 )
                    {
                        validTOTALS3TM4 = 0;
                    }
                }
            }
        pifTOTALS3TM4arrayRAND[i] = pifTOTALS3TM4array[randomValueTOTALS3TM4];
        pifTOTALS3TM4arrayRANDusedInd[i] = randomValueTOTALS3TM4;
        validTOTALS3TM4 = 0;
        }
    
    ############## band 5
    
        numeric validTOTALS3TM5 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS3TM5 == 0 )
            {
                numeric randomValueTOTALS3TM5 = floor((rand(countPIFtotal) + 1));      
                validTOTALS3TM5 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS3TM5 = pifTOTALS3TM5arrayRANDusedInd[j];
                
                    if ( testValueTOTALS3TM5 == randomValueTOTALS3TM5 )
                    {
                        validTOTALS3TM5 = 0;
                    }
                }
            }
        pifTOTALS3TM5arrayRAND[i] = pifTOTALS3TM5array[randomValueTOTALS3TM5];
        pifTOTALS3TM5arrayRANDusedInd[i] = randomValueTOTALS3TM5;
        validTOTALS3TM5 = 0;
        }
    
    ################ band 7
        
        numeric validTOTALS3TM7 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS3TM7 == 0 )
            {
                numeric randomValueTOTALS3TM7 = floor((rand(countPIFtotal) + 1));      
                validTOTALS3TM7 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS3TM7 = pifTOTALS3TM7arrayRANDusedInd[j];
                
                    if ( testValueTOTALS3TM7 == randomValueTOTALS3TM7 )
                    {
                        validTOTALS3TM7 = 0;
                    }
                }
            }
        pifTOTALS3TM7arrayRAND[i] = pifTOTALS3TM7array[randomValueTOTALS3TM7];
        pifTOTALS3TM7arrayRANDusedInd[i] = randomValueTOTALS3TM7;
        validTOTALS3TM7 = 0;
        }
    }
    
    else
    {
    numeric pifTOTALS3arrayCount = 1;
    array pifTOTALS3MSS1array[countPIFtotal];
    array pifTOTALS3MSS2array[countPIFtotal];
    array pifTOTALS3MSS3array[countPIFtotal];
    array pifTOTALS3MSS4array[countPIFtotal];
    
    array pifTOTALS3MSS1arrayRAND[minPifVAL];
    array pifTOTALS3MSS2arrayRAND[minPifVAL];
    array pifTOTALS3MSS3arrayRAND[minPifVAL];
    array pifTOTALS3MSS4arrayRAND[minPifVAL];
    
    array pifTOTALS3MSS1arrayRANDusedInd[minPifVAL];
    array pifTOTALS3MSS2arrayRANDusedInd[minPifVAL];
    array pifTOTALS3MSS3arrayRANDusedInd[minPifVAL];
    array pifTOTALS3MSS4arrayRANDusedInd[minPifVAL];
        
        for i = 1 to MSSlins
        {
            for j = 1 to MSScols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS3MSS1array[pifTOTALS3arrayCount] = REFS3MSS1[i,j];
			pifTOTALS3MSS2array[pifTOTALS3arrayCount] = REFS3MSS2[i,j];
			pifTOTALS3MSS3array[pifTOTALS3arrayCount] = REFS3MSS3[i,j];
			pifTOTALS3MSS4array[pifTOTALS3arrayCount] = REFS3MSS4[i,j];
                  pifTOTALS3arrayCount = pifTOTALS3arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    
        numeric validTOTALS3MSS1 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS3MSS1 == 0 )
            {
                numeric randomValueTOTALS3MSS1 = floor((rand(countPIFtotal) + 1));      
                validTOTALS3MSS1 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS3MSS1 = pifTOTALS3MSS1arrayRANDusedInd[j];
                
                    if ( testValueTOTALS3MSS1 == randomValueTOTALS3MSS1 )
                    {
                        validTOTALS3MSS1 = 0;
                    }
                }
            }
        pifTOTALS3MSS1arrayRAND[i] = pifTOTALS3MSS1array[randomValueTOTALS3MSS1];
        pifTOTALS3MSS1arrayRANDusedInd[i] = randomValueTOTALS3MSS1;
        validTOTALS3MSS1 = 0;
        }
    
    ############# band 2
    
        numeric validTOTALS3MSS2 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS3MSS2 == 0 )
            {
                numeric randomValueTOTALS3MSS2 = floor((rand(countPIFtotal) + 1));      
                validTOTALS3MSS2 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS3MSS2 = pifTOTALS3MSS2arrayRANDusedInd[j];
                
                    if ( testValueTOTALS3MSS2 == randomValueTOTALS3MSS2 )
                    {
                        validTOTALS3MSS2 = 0;
                    }
                }
            }
        pifTOTALS3MSS2arrayRAND[i] = pifTOTALS3MSS2array[randomValueTOTALS3MSS2];
        pifTOTALS3MSS2arrayRANDusedInd[i] = randomValueTOTALS3MSS2;
        validTOTALS3MSS2 = 0;
        }
    
    ############## band 3
        
        numeric validTOTALS3MSS3 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS3MSS3 == 0 )
            {
                numeric randomValueTOTALS3MSS3 = floor((rand(countPIFtotal) + 1));      
                validTOTALS3MSS3 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS3MSS3 = pifTOTALS3MSS3arrayRANDusedInd[j];
                
                    if ( testValueTOTALS3MSS3 == randomValueTOTALS3MSS3 )
                    {
                        validTOTALS3MSS3 = 0;
                    }
                }
            }
        pifTOTALS3MSS3arrayRAND[i] = pifTOTALS3MSS3array[randomValueTOTALS3MSS3];
        pifTOTALS3MSS3arrayRANDusedInd[i] = randomValueTOTALS3MSS3;
        validTOTALS3MSS3 = 0;
        }
    
    ################ band 4
    
        numeric validTOTALS3MSS4 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS3MSS4 == 0 )
            {
                numeric randomValueTOTALS3MSS4 = floor((rand(countPIFtotal) + 1));      
                validTOTALS3MSS4 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS3MSS4 = pifTOTALS3MSS4arrayRANDusedInd[j];
                
                    if ( testValueTOTALS3MSS4 == randomValueTOTALS3MSS4 )
                    {
                        validTOTALS3MSS4 = 0;
                    }
                }
            }
        pifTOTALS3MSS4arrayRAND[i] = pifTOTALS3MSS4array[randomValueTOTALS3MSS4];
        pifTOTALS3MSS4arrayRANDusedInd[i] = randomValueTOTALS3MSS4;
        validTOTALS3MSS4 = 0;
        }
    }
    if ( sensors2 == 7 )
    {
    numeric pifTOTALS2arrayCount = 1;
    array pifTOTALS2ETM1array[countPIFtotal];
    array pifTOTALS2ETM2array[countPIFtotal];
    array pifTOTALS2ETM3array[countPIFtotal];
    array pifTOTALS2ETM4array[countPIFtotal];
    array pifTOTALS2ETM5array[countPIFtotal];
    array pifTOTALS2ETM7array[countPIFtotal];
    
    array pifTOTALS2ETM1arrayRAND[minPifVAL];
    array pifTOTALS2ETM2arrayRAND[minPifVAL];
    array pifTOTALS2ETM3arrayRAND[minPifVAL];
    array pifTOTALS2ETM4arrayRAND[minPifVAL];
    array pifTOTALS2ETM5arrayRAND[minPifVAL];
    array pifTOTALS2ETM7arrayRAND[minPifVAL];
        
        for i = 1 to ETMlins
        {
            for j = 1 to ETMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS2ETM1array[pifTOTALS2arrayCount] = REFS2ETM1[i,j];
			pifTOTALS2ETM2array[pifTOTALS2arrayCount] = REFS2ETM2[i,j];
			pifTOTALS2ETM3array[pifTOTALS2arrayCount] = REFS2ETM3[i,j];
			pifTOTALS2ETM4array[pifTOTALS2arrayCount] = REFS2ETM4[i,j];
                  pifTOTALS2ETM5array[pifTOTALS2arrayCount] = REFS2ETM5[i,j];
			pifTOTALS2ETM7array[pifTOTALS2arrayCount] = REFS2ETM7[i,j];
			pifTOTALS2arrayCount = pifTOTALS2arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    if ( sensors3 == 7 )
    {     
        for i = 1 to minPifVAL
        {
              pifTOTALS2ETM1arrayRAND[i] = pifTOTALS2ETM1array[pifTOTALS3ETM1arrayRANDusedInd[i]];
        }
    }
    else if ( sensors3 == 6 )
    {
	  for i = 1 to minPifVAL
        {
              pifTOTALS2ETM1arrayRAND[i] = pifTOTALS2ETM1array[pifTOTALS3TM1arrayRANDusedInd[i]];
        }
    }
    
    ############# band 2
    if ( sensors3 == 7 )
    { 
        for i = 1 to minPifVAL
        {
              pifTOTALS2ETM2arrayRAND[i] = pifTOTALS2ETM2array[pifTOTALS3ETM2arrayRANDusedInd[i]];
        }
    }
    else if ( sensors3 == 6 )
    {
        for i = 1 to minPifVAL
        {
              pifTOTALS2ETM2arrayRAND[i] = pifTOTALS2ETM2array[pifTOTALS3TM2arrayRANDusedInd[i]];
        }
    }
    
    ############## band 3
    if ( sensors3 == 7 )
    {            
        for i = 1 to minPifVAL
        {
               pifTOTALS2ETM3arrayRAND[i] = pifTOTALS2ETM3array[pifTOTALS3ETM3arrayRANDusedInd[i]];
        }
    }
    else if ( sensors3 == 6 )
    {
        for i = 1 to minPifVAL
        {
               pifTOTALS2ETM3arrayRAND[i] = pifTOTALS2ETM3array[pifTOTALS3TM3arrayRANDusedInd[i]];
        }
    }
    ################ band 4
    if ( sensors3 == 7 )
    {
        for i = 1 to minPifVAL
        {
               pifTOTALS2ETM4arrayRAND[i] = pifTOTALS2ETM4array[pifTOTALS3ETM4arrayRANDusedInd[i]];
        }
    }
    else if ( sensors3 == 6 )
    {
        for i = 1 to minPifVAL
        {
               pifTOTALS2ETM4arrayRAND[i] = pifTOTALS2ETM4array[pifTOTALS3TM4arrayRANDusedInd[i]];
        }
    }
    ############## band 5
    if ( sensors3 == 7 )
    {    
        for i = 1 to minPifVAL
        {
        	   pifTOTALS2ETM5arrayRAND[i] = pifTOTALS2ETM5array[pifTOTALS3ETM5arrayRANDusedInd[i]];
        }
    }
    else if ( sensors3 == 6 )
    {
        for i = 1 to minPifVAL
        {
        	   pifTOTALS2ETM5arrayRAND[i] = pifTOTALS2ETM5array[pifTOTALS3TM5arrayRANDusedInd[i]];
        }
    }
    ################ band 7
    if ( sensors3 == 7 )
    {
        for i = 1 to minPifVAL
        {
        	   pifTOTALS2ETM7arrayRAND[i] = pifTOTALS2ETM7array[pifTOTALS3ETM7arrayRANDusedInd[i]];
        }
    }
    else if ( sensors3 == 6 )
    {
        for i = 1 to minPifVAL
        {
        	   pifTOTALS2ETM7arrayRAND[i] = pifTOTALS2ETM7array[pifTOTALS3TM7arrayRANDusedInd[i]];
        }
    }
   }
    
    else if ( sensors2 == 6 )
    {
    numeric pifTOTALS2arrayCount = 1;
    array pifTOTALS2TM1array[countPIFtotal];
    array pifTOTALS2TM2array[countPIFtotal];
    array pifTOTALS2TM3array[countPIFtotal];
    array pifTOTALS2TM4array[countPIFtotal];
    array pifTOTALS2TM5array[countPIFtotal];
    array pifTOTALS2TM7array[countPIFtotal];
    
    array pifTOTALS2TM1arrayRAND[minPifVAL];
    array pifTOTALS2TM2arrayRAND[minPifVAL];
    array pifTOTALS2TM3arrayRAND[minPifVAL];
    array pifTOTALS2TM4arrayRAND[minPifVAL];
    array pifTOTALS2TM5arrayRAND[minPifVAL];
    array pifTOTALS2TM7arrayRAND[minPifVAL];
    
        for i = 1 to TMlins
        {
            for j = 1 to TMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS2TM1array[pifTOTALS2arrayCount] = REFS2TM1[i,j];
			pifTOTALS2TM2array[pifTOTALS2arrayCount] = REFS2TM2[i,j];
			pifTOTALS2TM3array[pifTOTALS2arrayCount] = REFS2TM3[i,j];
			pifTOTALS2TM4array[pifTOTALS2arrayCount] = REFS2TM4[i,j];
                  pifTOTALS2TM5array[pifTOTALS2arrayCount] = REFS2TM5[i,j];
			pifTOTALS2TM7array[pifTOTALS2arrayCount] = REFS2TM7[i,j];
                  pifTOTALS2arrayCount = pifTOTALS2arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    if ( sensors3 == 7 )
    {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM1arrayRAND[i] = pifTOTALS2TM1array[pifTOTALS3ETM1arrayRANDusedInd[i]];
        }
    }
    else if ( sensors3 == 6 )
    {
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM1arrayRAND[i] = pifTOTALS2TM1array[pifTOTALS3TM1arrayRANDusedInd[i]];
        }
    }
    ############# band 2
    
    if ( sensors3 == 7 )
    {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM2arrayRAND[i] = pifTOTALS2TM2array[pifTOTALS3ETM2arrayRANDusedInd[i]];
        }
    }
    else if ( sensors3 == 6 )
    {  
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM2arrayRAND[i] = pifTOTALS2TM2array[pifTOTALS3TM2arrayRANDusedInd[i]];
        }  
    }
    ############## band 3
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM3arrayRAND[i] = pifTOTALS2TM3array[pifTOTALS3ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM3arrayRAND[i] = pifTOTALS2TM3array[pifTOTALS3TM3arrayRANDusedInd[i]];
        }   
	}
    ################ band 4
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM4arrayRAND[i] = pifTOTALS2TM4array[pifTOTALS3ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM4arrayRAND[i] = pifTOTALS2TM4array[pifTOTALS3TM4arrayRANDusedInd[i]];
        }  
	}
    ############## band 5
    
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM5arrayRAND[i] = pifTOTALS2TM5array[pifTOTALS3ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM5arrayRAND[i] = pifTOTALS2TM5array[pifTOTALS3TM5arrayRANDusedInd[i]];
        }   
	}
    ################ band 7
        
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM7arrayRAND[i] = pifTOTALS2TM7array[pifTOTALS3ETM7arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM7arrayRAND[i] = pifTOTALS2TM7array[pifTOTALS3TM7arrayRANDusedInd[i]];
        }    
	}
    }
    
    else
    {
    numeric pifTOTALS2arrayCount = 1;
    array pifTOTALS2MSS1array[countPIFtotal];
    array pifTOTALS2MSS2array[countPIFtotal];
    array pifTOTALS2MSS3array[countPIFtotal];
    array pifTOTALS2MSS4array[countPIFtotal];
    
    array pifTOTALS2MSS1arrayRAND[minPifVAL];
    array pifTOTALS2MSS2arrayRAND[minPifVAL];
    array pifTOTALS2MSS3arrayRAND[minPifVAL];
    array pifTOTALS2MSS4arrayRAND[minPifVAL];
    
        for i = 1 to MSSlins
        {
            for j = 1 to MSScols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS2MSS1array[pifTOTALS2arrayCount] = REFS2MSS1[i,j];
			pifTOTALS2MSS2array[pifTOTALS2arrayCount] = REFS2MSS2[i,j];
			pifTOTALS2MSS3array[pifTOTALS2arrayCount] = REFS2MSS3[i,j];
			pifTOTALS2MSS4array[pifTOTALS2arrayCount] = REFS2MSS4[i,j];
                  pifTOTALS2arrayCount = pifTOTALS2arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS1arrayRAND[i] = pifTOTALS2MSS1array[pifTOTALS3ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS1arrayRAND[i] = pifTOTALS2MSS1array[pifTOTALS3TM2arrayRANDusedInd[i]];
        }  
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS1arrayRAND[i] = pifTOTALS2MSS1array[pifTOTALS3MSS1arrayRANDusedInd[i]];
        }
	}
    
    ############# band 2
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS2arrayRAND[i] = pifTOTALS2MSS2array[pifTOTALS3ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS2arrayRAND[i] = pifTOTALS2MSS2array[pifTOTALS3TM3arrayRANDusedInd[i]];
        }   
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS2arrayRAND[i] = pifTOTALS2MSS2array[pifTOTALS3MSS2arrayRANDusedInd[i]];
        }
	}
    
    ############## band 3
     
      if ( sensors3 == 5 or sensors3 == 4 or sensors3 == 3 or sensors3 == 2 or sensors3 == 1 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS3arrayRAND[i] = pifTOTALS2MSS3array[pifTOTALS3MSS3arrayRANDusedInd[i]];
        }
	}
    
    ################ band 4
    
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS4arrayRAND[i] = pifTOTALS2MSS4array[pifTOTALS3ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS4arrayRAND[i] = pifTOTALS2MSS4array[pifTOTALS3TM4arrayRANDusedInd[i]];
        }
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS4arrayRAND[i] = pifTOTALS2MSS4array[pifTOTALS3MSS4arrayRANDusedInd[i]];
        }
	}    
    }
    if ( sensors1 == 7 )
    {
    numeric pifTOTALS1arrayCount = 1;
    array pifTOTALS1ETM1array[countPIFtotal];
    array pifTOTALS1ETM2array[countPIFtotal];
    array pifTOTALS1ETM3array[countPIFtotal];
    array pifTOTALS1ETM4array[countPIFtotal];
    array pifTOTALS1ETM5array[countPIFtotal];
    array pifTOTALS1ETM7array[countPIFtotal];
    
    array pifTOTALS1ETM1arrayRAND[minPifVAL];
    array pifTOTALS1ETM2arrayRAND[minPifVAL];
    array pifTOTALS1ETM3arrayRAND[minPifVAL];
    array pifTOTALS1ETM4arrayRAND[minPifVAL];
    array pifTOTALS1ETM5arrayRAND[minPifVAL];
    array pifTOTALS1ETM7arrayRAND[minPifVAL];
    
        for i = 1 to ETMlins
        {
            for j = 1 to ETMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS1ETM1array[pifTOTALS1arrayCount] = REFS1ETM1[i,j];
			pifTOTALS1ETM2array[pifTOTALS1arrayCount] = REFS1ETM2[i,j];
			pifTOTALS1ETM3array[pifTOTALS1arrayCount] = REFS1ETM3[i,j];
			pifTOTALS1ETM4array[pifTOTALS1arrayCount] = REFS1ETM4[i,j];
                  pifTOTALS1ETM5array[pifTOTALS1arrayCount] = REFS1ETM5[i,j];
			pifTOTALS1ETM7array[pifTOTALS1arrayCount] = REFS1ETM7[i,j];
			pifTOTALS1arrayCount = pifTOTALS1arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM1arrayRAND[i] = pifTOTALS1ETM1array[pifTOTALS3ETM1arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM1arrayRAND[i] = pifTOTALS1ETM1array[pifTOTALS3TM1arrayRANDusedInd[i]];
        }   
	}
    
    ############# band 2
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM2arrayRAND[i] = pifTOTALS1ETM2array[pifTOTALS3ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM2arrayRAND[i] = pifTOTALS1ETM2array[pifTOTALS3TM2arrayRANDusedInd[i]];
        }   
	}
    ############## band 3
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM3arrayRAND[i] = pifTOTALS1ETM3array[pifTOTALS3ETM3arrayRANDusedInd[i]];
        }
	}
	else if ( sensors3 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM3arrayRAND[i] = pifTOTALS1ETM3array[pifTOTALS3TM3arrayRANDusedInd[i]];
        }    
	}
    ################ band 4
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM4arrayRAND[i] = pifTOTALS1ETM4array[pifTOTALS3ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM4arrayRAND[i] = pifTOTALS1ETM4array[pifTOTALS3TM4arrayRANDusedInd[i]];
        }  
	}
    ############## band 5
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM5arrayRAND[i] = pifTOTALS1ETM5array[pifTOTALS3ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM5arrayRAND[i] = pifTOTALS1ETM5array[pifTOTALS3TM5arrayRANDusedInd[i]];
        }  
	}
    ################ band 7
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM7arrayRAND[i] = pifTOTALS1ETM7array[pifTOTALS3ETM7arrayRANDusedInd[i]];
        }
	  }
      else if ( sensors3 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM7arrayRAND[i] = pifTOTALS1ETM7array[pifTOTALS3TM7arrayRANDusedInd[i]];
        }   
	  }
    }
    
    else if ( sensors1 == 6 )
    {
    numeric pifTOTALS1arrayCount = 1;
    array pifTOTALS1TM1array[countPIFtotal];
    array pifTOTALS1TM2array[countPIFtotal];
    array pifTOTALS1TM3array[countPIFtotal];
    array pifTOTALS1TM4array[countPIFtotal];
    array pifTOTALS1TM5array[countPIFtotal];
    array pifTOTALS1TM7array[countPIFtotal];
    
    array pifTOTALS1TM1arrayRAND[minPifVAL];
    array pifTOTALS1TM2arrayRAND[minPifVAL];
    array pifTOTALS1TM3arrayRAND[minPifVAL];
    array pifTOTALS1TM4arrayRAND[minPifVAL];
    array pifTOTALS1TM5arrayRAND[minPifVAL];
    array pifTOTALS1TM7arrayRAND[minPifVAL];
    
        for i = 1 to TMlins
        {
            for j = 1 to TMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS1TM1array[pifTOTALS1arrayCount] = REFS1TM1[i,j];
			pifTOTALS1TM2array[pifTOTALS1arrayCount] = REFS1TM2[i,j];
			pifTOTALS1TM3array[pifTOTALS1arrayCount] = REFS1TM3[i,j];
			pifTOTALS1TM4array[pifTOTALS1arrayCount] = REFS1TM4[i,j];
                  pifTOTALS1TM5array[pifTOTALS1arrayCount] = REFS1TM5[i,j];
			pifTOTALS1TM7array[pifTOTALS1arrayCount] = REFS1TM7[i,j];
                  pifTOTALS1arrayCount = pifTOTALS1arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM1arrayRAND[i] = pifTOTALS1TM1array[pifTOTALS3ETM1arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM1arrayRAND[i] = pifTOTALS1TM1array[pifTOTALS3TM1arrayRANDusedInd[i]];
        }  
	}
    
    ############# band 2
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM2arrayRAND[i] = pifTOTALS1TM2array[pifTOTALS3ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM2arrayRAND[i] = pifTOTALS1TM2array[pifTOTALS3TM2arrayRANDusedInd[i]];
        }   
	}
    ############## band 3
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM3arrayRAND[i] = pifTOTALS1TM3array[pifTOTALS3ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM3arrayRAND[i] = pifTOTALS1TM3array[pifTOTALS3TM3arrayRANDusedInd[i]];
        }   
	}
    ################ band 4
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM4arrayRAND[i] = pifTOTALS1TM4array[pifTOTALS3ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM4arrayRAND[i] = pifTOTALS1TM4array[pifTOTALS3TM4arrayRANDusedInd[i]];
        }   
	}
    ############## band 5
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM5arrayRAND[i] = pifTOTALS1TM5array[pifTOTALS3ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM5arrayRAND[i] = pifTOTALS1TM5array[pifTOTALS3TM5arrayRANDusedInd[i]];
        }  
	}
    ################ band 7
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM7arrayRAND[i] = pifTOTALS1TM7array[pifTOTALS3ETM7arrayRANDusedInd[i]];
        }
	  }
      else if ( sensors3 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM7arrayRAND[i] = pifTOTALS1TM7array[pifTOTALS3TM7arrayRANDusedInd[i]];
        }  
	  }
    }
    
    else
    {
    numeric pifTOTALS1arrayCount = 1;
    array pifTOTALS1MSS1array[countPIFtotal];
    array pifTOTALS1MSS2array[countPIFtotal];
    array pifTOTALS1MSS3array[countPIFtotal];
    array pifTOTALS1MSS4array[countPIFtotal];
    
    array pifTOTALS1MSS1arrayRAND[minPifVAL];
    array pifTOTALS1MSS2arrayRAND[minPifVAL];
    array pifTOTALS1MSS3arrayRAND[minPifVAL];
    array pifTOTALS1MSS4arrayRAND[minPifVAL];
    
        for i = 1 to MSSlins
        {
            for j = 1 to MSScols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS1MSS1array[pifTOTALS1arrayCount] = REFS1MSS1[i,j];
			pifTOTALS1MSS2array[pifTOTALS1arrayCount] = REFS1MSS2[i,j];
			pifTOTALS1MSS3array[pifTOTALS1arrayCount] = REFS1MSS3[i,j];
			pifTOTALS1MSS4array[pifTOTALS1arrayCount] = REFS1MSS4[i,j];
                  pifTOTALS1arrayCount = pifTOTALS1arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS1arrayRAND[i] = pifTOTALS1MSS1array[pifTOTALS3ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS1arrayRAND[i] = pifTOTALS1MSS1array[pifTOTALS3TM2arrayRANDusedInd[i]];
        }  
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS1arrayRAND[i] = pifTOTALS1MSS1array[pifTOTALS3MSS1arrayRANDusedInd[i]];
        }
	}
    
    ############# band 2
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS2arrayRAND[i] = pifTOTALS1MSS2array[pifTOTALS3ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS2arrayRAND[i] = pifTOTALS1MSS2array[pifTOTALS3TM3arrayRANDusedInd[i]];
        }   
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS2arrayRAND[i] = pifTOTALS1MSS2array[pifTOTALS3MSS2arrayRANDusedInd[i]];
        }
	}
    
    ############## band 3
     
      if ( sensors3 == 5 or sensors3 == 4 or sensors3 == 3 or sensors3 == 2 or sensors3 == 1 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS3arrayRAND[i] = pifTOTALS1MSS3array[pifTOTALS3MSS3arrayRANDusedInd[i]];
        }
	 }
    
    ################ band 4
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS4arrayRAND[i] = pifTOTALS1MSS4array[pifTOTALS3ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS4arrayRAND[i] = pifTOTALS1MSS4array[pifTOTALS3TM4arrayRANDusedInd[i]];
        }    
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS4arrayRAND[i] = pifTOTALS1MSS4array[pifTOTALS3MSS4arrayRANDusedInd[i]];
        }
	}
    }
    if ( sensors4 == 7 )
    {
    numeric pifTOTALS4arrayCount = 1;
    array pifTOTALS4ETM1array[countPIFtotal];
    array pifTOTALS4ETM2array[countPIFtotal];
    array pifTOTALS4ETM3array[countPIFtotal];
    array pifTOTALS4ETM4array[countPIFtotal];
    array pifTOTALS4ETM5array[countPIFtotal];
    array pifTOTALS4ETM7array[countPIFtotal];
    
    array pifTOTALS4ETM1arrayRAND[minPifVAL];
    array pifTOTALS4ETM2arrayRAND[minPifVAL];
    array pifTOTALS4ETM3arrayRAND[minPifVAL];
    array pifTOTALS4ETM4arrayRAND[minPifVAL];
    array pifTOTALS4ETM5arrayRAND[minPifVAL];
    array pifTOTALS4ETM7arrayRAND[minPifVAL];
    
        for i = 1 to ETMlins
        {
            for j = 1 to ETMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS4ETM1array[pifTOTALS4arrayCount] = REFS4ETM1[i,j];
			pifTOTALS4ETM2array[pifTOTALS4arrayCount] = REFS4ETM2[i,j];
			pifTOTALS4ETM3array[pifTOTALS4arrayCount] = REFS4ETM3[i,j];
			pifTOTALS4ETM4array[pifTOTALS4arrayCount] = REFS4ETM4[i,j];
                  pifTOTALS4ETM5array[pifTOTALS4arrayCount] = REFS4ETM5[i,j];
			pifTOTALS4ETM7array[pifTOTALS4arrayCount] = REFS4ETM7[i,j];
			pifTOTALS4arrayCount = pifTOTALS4arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM1arrayRAND[i] = pifTOTALS4ETM1array[pifTOTALS3ETM1arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM1arrayRAND[i] = pifTOTALS4ETM1array[pifTOTALS3TM1arrayRANDusedInd[i]];
        }  
	}
    
    ############# band 2
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM2arrayRAND[i] = pifTOTALS4ETM2array[pifTOTALS3ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM2arrayRAND[i] = pifTOTALS4ETM2array[pifTOTALS3TM2arrayRANDusedInd[i]];
        }
	}
    ############## band 3
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM3arrayRAND[i] = pifTOTALS4ETM3array[pifTOTALS3ETM3arrayRANDusedInd[i]];
        }
	  }
      else if ( sensors3 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM3arrayRAND[i] = pifTOTALS4ETM3array[pifTOTALS3TM3arrayRANDusedInd[i]];
        }  
	  }
    ################ band 4
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM4arrayRAND[i] = pifTOTALS4ETM4array[pifTOTALS3ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM4arrayRAND[i] = pifTOTALS4ETM4array[pifTOTALS3TM4arrayRANDusedInd[i]];
        }    
	}
    ############## band 5
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM5arrayRAND[i] = pifTOTALS4ETM5array[pifTOTALS3ETM5arrayRANDusedInd[i]];
        }
	  }
      else if ( sensors3 == 6 )
      {   
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM5arrayRAND[i] = pifTOTALS4ETM5array[pifTOTALS3TM5arrayRANDusedInd[i]];
        } 
	  }
    
    ################ band 7
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM7arrayRAND[i] = pifTOTALS4ETM7array[pifTOTALS3ETM7arrayRANDusedInd[i]];
        }
	  }
	  else if ( sensors3 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS4ETM7arrayRAND[i] = pifTOTALS4ETM7array[pifTOTALS3TM7arrayRANDusedInd[i]];
        }  
	  }
    }
    
    else if ( sensors4 == 6 )
    {
    numeric pifTOTALS4arrayCount = 1;
    array pifTOTALS4TM1array[countPIFtotal];
    array pifTOTALS4TM2array[countPIFtotal];
    array pifTOTALS4TM3array[countPIFtotal];
    array pifTOTALS4TM4array[countPIFtotal];
    array pifTOTALS4TM5array[countPIFtotal];
    array pifTOTALS4TM7array[countPIFtotal];
    
    array pifTOTALS4TM1arrayRAND[minPifVAL];
    array pifTOTALS4TM2arrayRAND[minPifVAL];
    array pifTOTALS4TM3arrayRAND[minPifVAL];
    array pifTOTALS4TM4arrayRAND[minPifVAL];
    array pifTOTALS4TM5arrayRAND[minPifVAL];
    array pifTOTALS4TM7arrayRAND[minPifVAL];
        
        for i = 1 to TMlins
        {
            for j = 1 to TMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS4TM1array[pifTOTALS4arrayCount] = REFS4TM1[i,j];
			pifTOTALS4TM2array[pifTOTALS4arrayCount] = REFS4TM2[i,j];
			pifTOTALS4TM3array[pifTOTALS4arrayCount] = REFS4TM3[i,j];
			pifTOTALS4TM4array[pifTOTALS4arrayCount] = REFS4TM4[i,j];
                  pifTOTALS4TM5array[pifTOTALS4arrayCount] = REFS4TM5[i,j];
			pifTOTALS4TM7array[pifTOTALS4arrayCount] = REFS4TM7[i,j];
                  pifTOTALS4arrayCount = pifTOTALS4arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM1arrayRAND[i] = pifTOTALS4TM1array[pifTOTALS3ETM1arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM1arrayRAND[i] = pifTOTALS4TM1array[pifTOTALS3TM1arrayRANDusedInd[i]];
        }   
	}
    
    ############# band 2
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM2arrayRAND[i] = pifTOTALS4TM2array[pifTOTALS3ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM2arrayRAND[i] = pifTOTALS4TM2array[pifTOTALS3TM2arrayRANDusedInd[i]];
        }    
	}
    ############## band 3
	
      if ( sensors3 == 7 )
      {         
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM3arrayRAND[i] = pifTOTALS4TM3array[pifTOTALS3ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM3arrayRAND[i] = pifTOTALS4TM3array[pifTOTALS3TM3arrayRANDusedInd[i]];
        }    
	}
    ################ band 4
     
      if ( sensors3 == 7 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM4arrayRAND[i] = pifTOTALS4TM4array[pifTOTALS3ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM4arrayRAND[i] = pifTOTALS4TM4array[pifTOTALS3TM4arrayRANDusedInd[i]];
        }    
	}
    ############## band 5
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM5arrayRAND[i] = pifTOTALS4TM5array[pifTOTALS3ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM5arrayRAND[i] = pifTOTALS4TM5array[pifTOTALS3TM5arrayRANDusedInd[i]];
        }  
	}
    ################ band 7
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM7arrayRAND[i] = pifTOTALS4TM7array[pifTOTALS3ETM7arrayRANDusedInd[i]];
        }
	  }
      else if ( sensors3 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS4TM7arrayRAND[i] = pifTOTALS4TM7array[pifTOTALS3TM7arrayRANDusedInd[i]];
        }   
	  }
    }
    
    else
    {
    numeric pifTOTALS4arrayCount = 1;
    array pifTOTALS4MSS1array[countPIFtotal];
    array pifTOTALS4MSS2array[countPIFtotal];
    array pifTOTALS4MSS3array[countPIFtotal];
    array pifTOTALS4MSS4array[countPIFtotal];
    
    array pifTOTALS4MSS1arrayRAND[minPifVAL];
    array pifTOTALS4MSS2arrayRAND[minPifVAL];
    array pifTOTALS4MSS3arrayRAND[minPifVAL];
    array pifTOTALS4MSS4arrayRAND[minPifVAL];
    
        for i = 1 to MSSlins
        {
            for j = 1 to MSScols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS4MSS1array[pifTOTALS4arrayCount] = REFS4MSS1[i,j];
			pifTOTALS4MSS2array[pifTOTALS4arrayCount] = REFS4MSS2[i,j];
			pifTOTALS4MSS3array[pifTOTALS4arrayCount] = REFS4MSS3[i,j];
			pifTOTALS4MSS4array[pifTOTALS4arrayCount] = REFS4MSS4[i,j];
                  pifTOTALS4arrayCount = pifTOTALS4arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS1arrayRAND[i] = pifTOTALS4MSS1array[pifTOTALS3ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS1arrayRAND[i] = pifTOTALS4MSS1array[pifTOTALS3TM2arrayRANDusedInd[i]];
        }   
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS1arrayRAND[i] = pifTOTALS4MSS1array[pifTOTALS3MSS1arrayRANDusedInd[i]];
        }   
	}
    
    ############# band 2
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS2arrayRAND[i] = pifTOTALS4MSS2array[pifTOTALS3ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors3 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS2arrayRAND[i] = pifTOTALS4MSS2array[pifTOTALS3TM3arrayRANDusedInd[i]];
        }   
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS1arrayRAND[i] = pifTOTALS4MSS1array[pifTOTALS3MSS2arrayRANDusedInd[i]];
        }   
	}
    
    ############## band 3
     
      if ( sensors3 == 5 or sensors3 == 4 or sensors3 == 3 or sensors3 == 2 or sensors3 == 1 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS3arrayRAND[i] = pifTOTALS4MSS3array[pifTOTALS3MSS3arrayRANDusedInd[i]];
        }
	  }
    
    ################ band 4
     
      if ( sensors3 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS4arrayRAND[i] = pifTOTALS4MSS4array[pifTOTALS3ETM4arrayRANDusedInd[i]];
        }
	  }
      else if ( sensors3 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS4arrayRAND[i] = pifTOTALS4MSS4array[pifTOTALS3TM4arrayRANDusedInd[i]];
        }    
	  }
	 else
	 {
        for i = 1 to minPifVAL
        {
        pifTOTALS4MSS4arrayRAND[i] = pifTOTALS4MSS4array[pifTOTALS3MSS4arrayRANDusedInd[i]];
        }
	 }
    }
  }
  else if ( slaveMaster == 4 )
  {
    if ( sensors4 == 7 )
    {
    numeric pifTOTALS4arrayCount = 1;
    
    array pifTOTALS4ETM1array[countPIFtotal];
    array pifTOTALS4ETM2array[countPIFtotal];
    array pifTOTALS4ETM3array[countPIFtotal];
    array pifTOTALS4ETM4array[countPIFtotal];
    array pifTOTALS4ETM5array[countPIFtotal];
    array pifTOTALS4ETM7array[countPIFtotal];
    
    array pifTOTALS4ETM1arrayRAND[minPifVAL];
    array pifTOTALS4ETM2arrayRAND[minPifVAL];
    array pifTOTALS4ETM3arrayRAND[minPifVAL];
    array pifTOTALS4ETM4arrayRAND[minPifVAL];
    array pifTOTALS4ETM5arrayRAND[minPifVAL];
    array pifTOTALS4ETM7arrayRAND[minPifVAL];
    
    array pifTOTALS4ETM1arrayRANDusedInd[minPifVAL];
    array pifTOTALS4ETM2arrayRANDusedInd[minPifVAL];
    array pifTOTALS4ETM3arrayRANDusedInd[minPifVAL];
    array pifTOTALS4ETM4arrayRANDusedInd[minPifVAL];
    array pifTOTALS4ETM5arrayRANDusedInd[minPifVAL];
    array pifTOTALS4ETM7arrayRANDusedInd[minPifVAL];
    
        for i = 1 to ETMlins
        {
            for j = 1 to ETMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                       pifTOTALS4ETM1array[pifTOTALS4arrayCount] = REFS4ETM1[i,j];
			     pifTOTALS4ETM2array[pifTOTALS4arrayCount] = REFS4ETM2[i,j];
			     pifTOTALS4ETM3array[pifTOTALS4arrayCount] = REFS4ETM3[i,j];
			     pifTOTALS4ETM4array[pifTOTALS4arrayCount] = REFS4ETM4[i,j];
                       pifTOTALS4ETM5array[pifTOTALS4arrayCount] = REFS4ETM5[i,j];
			     pifTOTALS4ETM7array[pifTOTALS4arrayCount] = REFS4ETM7[i,j];
			     pifTOTALS4arrayCount = pifTOTALS4arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    
        numeric validTOTALS4ETM1 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS4ETM1 == 0 )
            {
                numeric randomValueTOTALS4ETM1 = floor((rand(countPIFtotal) + 1));      
                validTOTALS4ETM1 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS4ETM1 = pifTOTALS4ETM1arrayRANDusedInd[j];
                
                    if ( testValueTOTALS4ETM1 == randomValueTOTALS4ETM1 )
                    {
                        validTOTALS4ETM1 = 0;
                    }
                }
            }
        pifTOTALS4ETM1arrayRAND[i] = pifTOTALS4ETM1array[randomValueTOTALS4ETM1];
        pifTOTALS4ETM1arrayRANDusedInd[i] = randomValueTOTALS4ETM1;
        validTOTALS4ETM1 = 0;
        }
    
    ############# band 2
    
        numeric validTOTALS4ETM2 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS4ETM2 == 0 )
            {
                numeric randomValueTOTALS4ETM2 = floor((rand(countPIFtotal) + 1));      
                validTOTALS4ETM2 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS4ETM2 = pifTOTALS4ETM2arrayRANDusedInd[j];
                
                    if ( testValueTOTALS4ETM2 == randomValueTOTALS4ETM2 )
                    {
                        validTOTALS4ETM2 = 0;
                    }
                }
            }
        pifTOTALS4ETM2arrayRAND[i] = pifTOTALS4ETM2array[randomValueTOTALS4ETM2];
        pifTOTALS4ETM2arrayRANDusedInd[i] = randomValueTOTALS4ETM2;
        validTOTALS4ETM2 = 0;
        }
    
    ############## band 3
        
        numeric validTOTALS4ETM3 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS4ETM3 == 0 )
            {
                numeric randomValueTOTALS4ETM3 = floor((rand(countPIFtotal) + 1));      
                validTOTALS4ETM3 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS4ETM3 = pifTOTALS4ETM3arrayRANDusedInd[j];
                
                    if ( testValueTOTALS4ETM3 == randomValueTOTALS4ETM3 )
                    {
                        validTOTALS4ETM3 = 0;
                    }
                }
            }
        pifTOTALS4ETM3arrayRAND[i] = pifTOTALS4ETM3array[randomValueTOTALS4ETM3];
        pifTOTALS4ETM3arrayRANDusedInd[i] = randomValueTOTALS4ETM3;
        validTOTALS4ETM3 = 0;
        }
    
    ################ band 4
    
        numeric validTOTALS4ETM4 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS4ETM4 == 0 )
            {
                numeric randomValueTOTALS4ETM4 = floor((rand(countPIFtotal) + 1));      
                validTOTALS4ETM4 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS4ETM4 = pifTOTALS4ETM4arrayRANDusedInd[j];
                
                    if ( testValueTOTALS4ETM4 == randomValueTOTALS4ETM4 )
                    {
                        validTOTALS4ETM4 = 0;
                    }
                }
            }
        pifTOTALS4ETM4arrayRAND[i] = pifTOTALS4ETM4array[randomValueTOTALS4ETM4];
        pifTOTALS4ETM4arrayRANDusedInd[i] = randomValueTOTALS4ETM4;
        validTOTALS4ETM4 = 0;
        }
    
    ############## band 5
    
        numeric validTOTALS4ETM5 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS4ETM5 == 0 )
            {
                numeric randomValueTOTALS4ETM5 = floor((rand(countPIFtotal) + 1));      
                validTOTALS4ETM5 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS4ETM5 = pifTOTALS4ETM5arrayRANDusedInd[j];
                
                    if ( testValueTOTALS4ETM5 == randomValueTOTALS4ETM5 )
                    {
                        validTOTALS4ETM5 = 0;
                    }
                }
            }
        pifTOTALS4ETM5arrayRAND[i] = pifTOTALS4ETM5array[randomValueTOTALS4ETM5];
        pifTOTALS4ETM5arrayRANDusedInd[i] = randomValueTOTALS4ETM5;
        validTOTALS4ETM5 = 0;
        }
    
    ################ band 7
        
        numeric validTOTALS4ETM7 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS4ETM7 == 0 )
            {
                numeric randomValueTOTALS4ETM7 = floor((rand(countPIFtotal) + 1));      
                validTOTALS4ETM7 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS4ETM7 = pifTOTALS4ETM7arrayRANDusedInd[j];
                
                    if ( testValueTOTALS4ETM7 == randomValueTOTALS4ETM7 )
                    {
                        validTOTALS4ETM7 = 0;
                    }
                }
            }
        pifTOTALS4ETM7arrayRAND[i] = pifTOTALS4ETM7array[randomValueTOTALS4ETM7];
        pifTOTALS4ETM7arrayRANDusedInd[i] = randomValueTOTALS4ETM7;
        validTOTALS4ETM7 = 0;
        }
    }
    
    else if ( sensors4 == 6 )
    {
    numeric pifTOTALS4arrayCount = 1;
    array pifTOTALS4TM1array[countPIFtotal];
    array pifTOTALS4TM2array[countPIFtotal];
    array pifTOTALS4TM3array[countPIFtotal];
    array pifTOTALS4TM4array[countPIFtotal];
    array pifTOTALS4TM5array[countPIFtotal];
    array pifTOTALS4TM7array[countPIFtotal];
    
    array pifTOTALS4TM1arrayRAND[minPifVAL];
    array pifTOTALS4TM2arrayRAND[minPifVAL];
    array pifTOTALS4TM3arrayRAND[minPifVAL];
    array pifTOTALS4TM4arrayRAND[minPifVAL];
    array pifTOTALS4TM5arrayRAND[minPifVAL];
    array pifTOTALS4TM7arrayRAND[minPifVAL];
    
    array pifTOTALS4TM1arrayRANDusedInd[minPifVAL];
    array pifTOTALS4TM2arrayRANDusedInd[minPifVAL];
    array pifTOTALS4TM3arrayRANDusedInd[minPifVAL];
    array pifTOTALS4TM4arrayRANDusedInd[minPifVAL];
    array pifTOTALS4TM5arrayRANDusedInd[minPifVAL];
    array pifTOTALS4TM7arrayRANDusedInd[minPifVAL];
    
        for i = 1 to TMlins
        {
            for j = 1 to TMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS4TM1array[pifTOTALS4arrayCount] = REFS4TM1[i,j];
			      pifTOTALS4TM2array[pifTOTALS4arrayCount] = REFS4TM2[i,j];
			      pifTOTALS4TM3array[pifTOTALS4arrayCount] = REFS4TM3[i,j];
			      pifTOTALS4TM4array[pifTOTALS4arrayCount] = REFS4TM4[i,j];
                  pifTOTALS4TM5array[pifTOTALS4arrayCount] = REFS4TM5[i,j];
			      pifTOTALS4TM7array[pifTOTALS4arrayCount] = REFS4TM7[i,j];
                  pifTOTALS4arrayCount = pifTOTALS4arrayCount + 1;
                }
            }
        }
        
    ############# band 1
    
        numeric validTOTALS4TM1 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS4TM1 == 0 )
            {
                numeric randomValueTOTALS4TM1 = floor((rand(countPIFtotal) + 1));      
                validTOTALS4TM1 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS4TM1 = pifTOTALS4TM1arrayRANDusedInd[j];
                
                    if ( testValueTOTALS4TM1 == randomValueTOTALS4TM1 )
                    {
                        validTOTALS4TM1 = 0;
                    }
                }
            }
        pifTOTALS4TM1arrayRAND[i] = pifTOTALS4TM1array[randomValueTOTALS4TM1];
        pifTOTALS4TM1arrayRANDusedInd[i] = randomValueTOTALS4TM1;
        validTOTALS4TM1 = 0;
        }
    
    ############# band 2
    
        numeric validTOTALS4TM2 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS4TM2 == 0 )
            {
                numeric randomValueTOTALS4TM2 = floor((rand(countPIFtotal) + 1));      
                validTOTALS4TM2 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS4TM2 = pifTOTALS4TM2arrayRANDusedInd[j];
                
                    if ( testValueTOTALS4TM2 == randomValueTOTALS4TM2 )
                    {
                        validTOTALS4TM2 = 0;
                    }
                }
            }
        pifTOTALS4TM2arrayRAND[i] = pifTOTALS4TM2array[randomValueTOTALS4TM2];
        pifTOTALS4TM2arrayRANDusedInd[i] = randomValueTOTALS4TM2;
        validTOTALS4TM2 = 0;
        }
    
    ############## band 3
        
        numeric validTOTALS4TM3 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS4TM3 == 0 )
            {
                numeric randomValueTOTALS4TM3 = floor((rand(countPIFtotal) + 1));      
                validTOTALS4TM3 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS4TM3 = pifTOTALS4TM3arrayRANDusedInd[j];
                
                    if ( testValueTOTALS4TM3 == randomValueTOTALS4TM3 )
                    {
                        validTOTALS4TM3 = 0;
                    }
                }
            }
        pifTOTALS4TM3arrayRAND[i] = pifTOTALS4TM3array[randomValueTOTALS4TM3];
        pifTOTALS4TM3arrayRANDusedInd[i] = randomValueTOTALS4TM3;
        validTOTALS4TM3 = 0;
        }
    
    ################ band 4
    
        numeric validTOTALS4TM4 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS4TM4 == 0 )
            {
                numeric randomValueTOTALS4TM4 = floor((rand(countPIFtotal) + 1));      
                validTOTALS4TM4 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS4TM4 = pifTOTALS4TM4arrayRANDusedInd[j];
                
                    if ( testValueTOTALS4TM4 == randomValueTOTALS4TM4 )
                    {
                        validTOTALS4TM4 = 0;
                    }
                }
            }
        pifTOTALS4TM4arrayRAND[i] = pifTOTALS4TM4array[randomValueTOTALS4TM4];
        pifTOTALS4TM4arrayRANDusedInd[i] = randomValueTOTALS4TM4;
        validTOTALS4TM4 = 0;
        }
    
    ############## band 5
    
        numeric validTOTALS4TM5 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS4TM5 == 0 )
            {
                numeric randomValueTOTALS4TM5 = floor((rand(countPIFtotal) + 1));      
                validTOTALS4TM5 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS4TM5 = pifTOTALS4TM5arrayRANDusedInd[j];
                
                    if ( testValueTOTALS4TM5 == randomValueTOTALS4TM5 )
                    {
                        validTOTALS4TM5 = 0;
                    }
                }
            }
        pifTOTALS4TM5arrayRAND[i] = pifTOTALS4TM5array[randomValueTOTALS4TM5];
        pifTOTALS4TM5arrayRANDusedInd[i] = randomValueTOTALS4TM5;
        validTOTALS4TM5 = 0;
        }
    
    ################ band 7
        
        numeric validTOTALS4TM7 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS4TM7 == 0 )
            {
                numeric randomValueTOTALS4TM7 = floor((rand(countPIFtotal) + 1));      
                validTOTALS4TM7 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS4TM7 = pifTOTALS4TM7arrayRANDusedInd[j];
                
                    if ( testValueTOTALS4TM7 == randomValueTOTALS4TM7 )
                    {
                        validTOTALS4TM7 = 0;
                    }
                }
            }
        pifTOTALS4TM7arrayRAND[i] = pifTOTALS4TM7array[randomValueTOTALS4TM7];
        pifTOTALS4TM7arrayRANDusedInd[i] = randomValueTOTALS4TM7;
        validTOTALS4TM7 = 0;
        }
    }
    
    else
    {
    numeric pifTOTALS4arrayCount = 1;
    array pifTOTALS4MSS1array[countPIFtotal];
    array pifTOTALS4MSS2array[countPIFtotal];
    array pifTOTALS4MSS3array[countPIFtotal];
    array pifTOTALS4MSS4array[countPIFtotal];
    
    array pifTOTALS4MSS1arrayRAND[minPifVAL];
    array pifTOTALS4MSS2arrayRAND[minPifVAL];
    array pifTOTALS4MSS3arrayRAND[minPifVAL];
    array pifTOTALS4MSS4arrayRAND[minPifVAL];
    
    array pifTOTALS4MSS1arrayRANDusedInd[minPifVAL];
    array pifTOTALS4MSS2arrayRANDusedInd[minPifVAL];
    array pifTOTALS4MSS3arrayRANDusedInd[minPifVAL];
    array pifTOTALS4MSS4arrayRANDusedInd[minPifVAL];
        
        for i = 1 to MSSlins
        {
            for j = 1 to MSScols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS4MSS1array[pifTOTALS4arrayCount] = REFS4MSS1[i,j];
			pifTOTALS4MSS2array[pifTOTALS4arrayCount] = REFS4MSS2[i,j];
			pifTOTALS4MSS3array[pifTOTALS4arrayCount] = REFS4MSS3[i,j];
			pifTOTALS4MSS4array[pifTOTALS4arrayCount] = REFS4MSS4[i,j];
                  pifTOTALS4arrayCount = pifTOTALS4arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    
        numeric validTOTALS4MSS1 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS4MSS1 == 0 )
            {
                numeric randomValueTOTALS4MSS1 = floor((rand(countPIFtotal) + 1));      
                validTOTALS4MSS1 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS4MSS1 = pifTOTALS4MSS1arrayRANDusedInd[j];
                
                    if ( testValueTOTALS4MSS1 == randomValueTOTALS4MSS1 )
                    {
                        validTOTALS4MSS1 = 0;
                    }
                }
            }
        pifTOTALS4MSS1arrayRAND[i] = pifTOTALS4MSS1array[randomValueTOTALS4MSS1];
        pifTOTALS4MSS1arrayRANDusedInd[i] = randomValueTOTALS4MSS1;
        validTOTALS4MSS1 = 0;
        }
    
    ############# band 2
    
        numeric validTOTALS4MSS2 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS4MSS2 == 0 )
            {
                numeric randomValueTOTALS4MSS2 = floor((rand(countPIFtotal) + 1));      
                validTOTALS4MSS2 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS4MSS2 = pifTOTALS4MSS2arrayRANDusedInd[j];
                
                    if ( testValueTOTALS4MSS2 == randomValueTOTALS4MSS2 )
                    {
                        validTOTALS4MSS2 = 0;
                    }
                }
            }
        pifTOTALS4MSS2arrayRAND[i] = pifTOTALS4MSS2array[randomValueTOTALS4MSS2];
        pifTOTALS4MSS2arrayRANDusedInd[i] = randomValueTOTALS4MSS2;
        validTOTALS4MSS2 = 0;
        }
    
    ############## band 3
        
        numeric validTOTALS4MSS3 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS4MSS3 == 0 )
            {
                numeric randomValueTOTALS4MSS3 = floor((rand(countPIFtotal) + 1));      
                validTOTALS4MSS3 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS4MSS3 = pifTOTALS4MSS3arrayRANDusedInd[j];
                
                    if ( testValueTOTALS4MSS3 == randomValueTOTALS4MSS3 )
                    {
                        validTOTALS4MSS3 = 0;
                    }
                }
            }
        pifTOTALS4MSS3arrayRAND[i] = pifTOTALS4MSS3array[randomValueTOTALS4MSS3];
        pifTOTALS4MSS3arrayRANDusedInd[i] = randomValueTOTALS4MSS3;
        validTOTALS4MSS3 = 0;
        }
    
    ################ band 4
    
        numeric validTOTALS4MSS4 = 0;
     
        for i = 1 to minPifVAL
        {
            while ( validTOTALS4MSS4 == 0 )
            {
                numeric randomValueTOTALS4MSS4 = floor((rand(countPIFtotal) + 1));      
                validTOTALS4MSS4 = 1;
    
                for j = 1 to (i-1)
                {
                    local numeric testValueTOTALS4MSS4 = pifTOTALS4MSS4arrayRANDusedInd[j];
                
                    if ( testValueTOTALS4MSS4 == randomValueTOTALS4MSS4 )
                    {
                        validTOTALS4MSS4 = 0;
                    }
                }
            }
        pifTOTALS4MSS4arrayRAND[i] = pifTOTALS4MSS4array[randomValueTOTALS4MSS4];
        pifTOTALS4MSS4arrayRANDusedInd[i] = randomValueTOTALS4MSS4;
        validTOTALS4MSS4 = 0;
        }
    }
    if ( sensors2 == 7 )
    {
    numeric pifTOTALS2arrayCount = 1;
    array pifTOTALS2ETM1array[countPIFtotal];
    array pifTOTALS2ETM2array[countPIFtotal];
    array pifTOTALS2ETM3array[countPIFtotal];
    array pifTOTALS2ETM4array[countPIFtotal];
    array pifTOTALS2ETM5array[countPIFtotal];
    array pifTOTALS2ETM7array[countPIFtotal];
    
    array pifTOTALS2ETM1arrayRAND[minPifVAL];
    array pifTOTALS2ETM2arrayRAND[minPifVAL];
    array pifTOTALS2ETM3arrayRAND[minPifVAL];
    array pifTOTALS2ETM4arrayRAND[minPifVAL];
    array pifTOTALS2ETM5arrayRAND[minPifVAL];
    array pifTOTALS2ETM7arrayRAND[minPifVAL];
        
        for i = 1 to ETMlins
        {
            for j = 1 to ETMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS2ETM1array[pifTOTALS2arrayCount] = REFS2ETM1[i,j];
			pifTOTALS2ETM2array[pifTOTALS2arrayCount] = REFS2ETM2[i,j];
			pifTOTALS2ETM3array[pifTOTALS2arrayCount] = REFS2ETM3[i,j];
			pifTOTALS2ETM4array[pifTOTALS2arrayCount] = REFS2ETM4[i,j];
                  pifTOTALS2ETM5array[pifTOTALS2arrayCount] = REFS2ETM5[i,j];
			pifTOTALS2ETM7array[pifTOTALS2arrayCount] = REFS2ETM7[i,j];
			pifTOTALS2arrayCount = pifTOTALS2arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    if ( sensors4 == 7 )
    {     
        for i = 1 to minPifVAL
        {
              pifTOTALS2ETM1arrayRAND[i] = pifTOTALS2ETM1array[pifTOTALS4ETM1arrayRANDusedInd[i]];
        }
    }
    else if ( sensors4 == 6 )
    {
	  for i = 1 to minPifVAL
        {
              pifTOTALS2ETM1arrayRAND[i] = pifTOTALS2ETM1array[pifTOTALS4TM1arrayRANDusedInd[i]];
        }
    }
    
    ############# band 2
    if ( sensors4 == 7 )
    { 
        for i = 1 to minPifVAL
        {
              pifTOTALS2ETM2arrayRAND[i] = pifTOTALS2ETM2array[pifTOTALS4ETM2arrayRANDusedInd[i]];
        }
    }
    else if ( sensors4 == 6 )
    {
        for i = 1 to minPifVAL
        {
              pifTOTALS2ETM2arrayRAND[i] = pifTOTALS2ETM2array[pifTOTALS4TM2arrayRANDusedInd[i]];
        }
    }
    ############## band 3
    if ( sensors4 == 7 )
    {            
        for i = 1 to minPifVAL
        {
               pifTOTALS2ETM3arrayRAND[i] = pifTOTALS2ETM3array[pifTOTALS4ETM3arrayRANDusedInd[i]];
        }
    }
    else if ( sensors4 == 6 )
    {
        for i = 1 to minPifVAL
        {
               pifTOTALS2ETM3arrayRAND[i] = pifTOTALS2ETM3array[pifTOTALS4TM3arrayRANDusedInd[i]];
        }
    }
    ################ band 4
    if ( sensors4 == 7 )
    {
        for i = 1 to minPifVAL
        {
               pifTOTALS2ETM4arrayRAND[i] = pifTOTALS2ETM4array[pifTOTALS4ETM4arrayRANDusedInd[i]];
        }
    }
    else if ( sensors4 == 6 )
    {
        for i = 1 to minPifVAL
        {
               pifTOTALS2ETM4arrayRAND[i] = pifTOTALS2ETM4array[pifTOTALS4TM4arrayRANDusedInd[i]];
        }
    }
    ############## band 5
    if ( sensors4 == 7 )
    {    
        for i = 1 to minPifVAL
        {
        	   pifTOTALS2ETM5arrayRAND[i] = pifTOTALS2ETM5array[pifTOTALS4ETM5arrayRANDusedInd[i]];
        }
    }
    else if ( sensors4 == 6 )
    {
        for i = 1 to minPifVAL
        {
        	   pifTOTALS2ETM5arrayRAND[i] = pifTOTALS2ETM5array[pifTOTALS4TM5arrayRANDusedInd[i]];
        }
    }
    ################ band 7
     if ( sensors4 == 7 )
     {
        for i = 1 to minPifVAL
        {
        	   pifTOTALS2ETM7arrayRAND[i] = pifTOTALS2ETM7array[pifTOTALS4ETM7arrayRANDusedInd[i]];
        }
     }
     else if ( sensors4 == 6 )
     {
        for i = 1 to minPifVAL
        {
        	   pifTOTALS2ETM7arrayRAND[i] = pifTOTALS2ETM7array[pifTOTALS4TM7arrayRANDusedInd[i]];
        }
     }
   }
    
    else if ( sensors2 == 6 )
    {
    numeric pifTOTALS2arrayCount = 1;
    array pifTOTALS2TM1array[countPIFtotal];
    array pifTOTALS2TM2array[countPIFtotal];
    array pifTOTALS2TM3array[countPIFtotal];
    array pifTOTALS2TM4array[countPIFtotal];
    array pifTOTALS2TM5array[countPIFtotal];
    array pifTOTALS2TM7array[countPIFtotal];
    
    array pifTOTALS2TM1arrayRAND[minPifVAL];
    array pifTOTALS2TM2arrayRAND[minPifVAL];
    array pifTOTALS2TM3arrayRAND[minPifVAL];
    array pifTOTALS2TM4arrayRAND[minPifVAL];
    array pifTOTALS2TM5arrayRAND[minPifVAL];
    array pifTOTALS2TM7arrayRAND[minPifVAL];
    
        for i = 1 to TMlins
        {
            for j = 1 to TMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS2TM1array[pifTOTALS2arrayCount] = REFS2TM1[i,j];
			pifTOTALS2TM2array[pifTOTALS2arrayCount] = REFS2TM2[i,j];
			pifTOTALS2TM3array[pifTOTALS2arrayCount] = REFS2TM3[i,j];
			pifTOTALS2TM4array[pifTOTALS2arrayCount] = REFS2TM4[i,j];
                  pifTOTALS2TM5array[pifTOTALS2arrayCount] = REFS2TM5[i,j];
			pifTOTALS2TM7array[pifTOTALS2arrayCount] = REFS2TM7[i,j];
                  pifTOTALS2arrayCount = pifTOTALS2arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    if ( sensors4 == 7 )
    {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM1arrayRAND[i] = pifTOTALS2TM1array[pifTOTALS4ETM1arrayRANDusedInd[i]];
        }
    }
    else if ( sensors4 == 6 )
    {
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM1arrayRAND[i] = pifTOTALS2TM1array[pifTOTALS4TM1arrayRANDusedInd[i]];
        }
    }
    ############# band 2
    
    if ( sensors4 == 7 )
    {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM2arrayRAND[i] = pifTOTALS2TM2array[pifTOTALS4ETM2arrayRANDusedInd[i]];
        }
    }
    else if ( sensors4 == 6 )
    {  
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM2arrayRAND[i] = pifTOTALS2TM2array[pifTOTALS4TM2arrayRANDusedInd[i]];
        }  
    }
    ############## band 3
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM3arrayRAND[i] = pifTOTALS2TM3array[pifTOTALS4ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM3arrayRAND[i] = pifTOTALS2TM3array[pifTOTALS4TM3arrayRANDusedInd[i]];
        }   
	  }
    ################ band 4
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM4arrayRAND[i] = pifTOTALS2TM4array[pifTOTALS4ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM4arrayRAND[i] = pifTOTALS2TM4array[pifTOTALS4TM4arrayRANDusedInd[i]];
        }  
	  }
    ############## band 5
    
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM5arrayRAND[i] = pifTOTALS2TM5array[pifTOTALS4ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM5arrayRAND[i] = pifTOTALS2TM5array[pifTOTALS4TM5arrayRANDusedInd[i]];
        }   
	}
    ################ band 7
        
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM7arrayRAND[i] = pifTOTALS2TM7array[pifTOTALS4ETM7arrayRANDusedInd[i]];
        }
	  }
      else if ( sensors4 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS2TM7arrayRAND[i] = pifTOTALS2TM7array[pifTOTALS4TM7arrayRANDusedInd[i]];
        }    
	  }
    }
    
    else
    {
    numeric pifTOTALS2arrayCount = 1;
    array pifTOTALS2MSS1array[countPIFtotal];
    array pifTOTALS2MSS2array[countPIFtotal];
    array pifTOTALS2MSS3array[countPIFtotal];
    array pifTOTALS2MSS4array[countPIFtotal];
    
    array pifTOTALS2MSS1arrayRAND[minPifVAL];
    array pifTOTALS2MSS2arrayRAND[minPifVAL];
    array pifTOTALS2MSS3arrayRAND[minPifVAL];
    array pifTOTALS2MSS4arrayRAND[minPifVAL];
    
        for i = 1 to MSSlins
        {
            for j = 1 to MSScols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS2MSS1array[pifTOTALS2arrayCount] = REFS2MSS1[i,j];
			pifTOTALS2MSS2array[pifTOTALS2arrayCount] = REFS2MSS2[i,j];
			pifTOTALS2MSS3array[pifTOTALS2arrayCount] = REFS2MSS3[i,j];
			pifTOTALS2MSS4array[pifTOTALS2arrayCount] = REFS2MSS4[i,j];
                  pifTOTALS2arrayCount = pifTOTALS2arrayCount + 1;
                }
            }
        }
    
    ############# band 1
    
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS1arrayRAND[i] = pifTOTALS2MSS1array[pifTOTALS4ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS1arrayRAND[i] = pifTOTALS2MSS1array[pifTOTALS4TM2arrayRANDusedInd[i]];
        }  
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS1arrayRAND[i] = pifTOTALS2MSS1array[pifTOTALS4MSS1arrayRANDusedInd[i]];
        }
	}
    
    ############# band 2
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS2arrayRAND[i] = pifTOTALS2MSS2array[pifTOTALS4ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS2arrayRAND[i] = pifTOTALS2MSS2array[pifTOTALS4TM3arrayRANDusedInd[i]];
        }   
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS2arrayRAND[i] = pifTOTALS2MSS2array[pifTOTALS4MSS2arrayRANDusedInd[i]];
        }
	}
    
    ############## band 3
     
      if ( sensors4 == 5 or sensors4 == 4 or sensors4 == 3 or sensors4 == 2 or sensors4 == 1 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS3arrayRAND[i] = pifTOTALS2MSS3array[pifTOTALS4MSS3arrayRANDusedInd[i]];
        }
	  }
    
    ################ band 4
    
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS4arrayRAND[i] = pifTOTALS2MSS4array[pifTOTALS4ETM4arrayRANDusedInd[i]];
        }
	  }
      else if ( sensors4 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS4arrayRAND[i] = pifTOTALS2MSS4array[pifTOTALS4TM4arrayRANDusedInd[i]];
        }
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS2MSS4arrayRAND[i] = pifTOTALS2MSS4array[pifTOTALS4MSS4arrayRANDusedInd[i]];
        }
	}    
    }
    if ( sensors3 == 7 )
    {
    numeric pifTOTALS3arrayCount = 1;
    array pifTOTALS3ETM1array[countPIFtotal];
    array pifTOTALS3ETM2array[countPIFtotal];
    array pifTOTALS3ETM3array[countPIFtotal];
    array pifTOTALS3ETM4array[countPIFtotal];
    array pifTOTALS3ETM5array[countPIFtotal];
    array pifTOTALS3ETM7array[countPIFtotal];
    
    array pifTOTALS3ETM1arrayRAND[minPifVAL];
    array pifTOTALS3ETM2arrayRAND[minPifVAL];
    array pifTOTALS3ETM3arrayRAND[minPifVAL];
    array pifTOTALS3ETM4arrayRAND[minPifVAL];
    array pifTOTALS3ETM5arrayRAND[minPifVAL];
    array pifTOTALS3ETM7arrayRAND[minPifVAL];
    
        for i = 1 to ETMlins
        {
            for j = 1 to ETMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS3ETM1array[pifTOTALS3arrayCount] = REFS3ETM1[i,j];
			pifTOTALS3ETM2array[pifTOTALS3arrayCount] = REFS3ETM2[i,j];
			pifTOTALS3ETM3array[pifTOTALS3arrayCount] = REFS3ETM3[i,j];
			pifTOTALS3ETM4array[pifTOTALS3arrayCount] = REFS3ETM4[i,j];
                  pifTOTALS3ETM5array[pifTOTALS3arrayCount] = REFS3ETM5[i,j];
			pifTOTALS3ETM7array[pifTOTALS3arrayCount] = REFS3ETM7[i,j];
			pifTOTALS3arrayCount = pifTOTALS3arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM1arrayRAND[i] = pifTOTALS3ETM1array[pifTOTALS4ETM1arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM1arrayRAND[i] = pifTOTALS3ETM1array[pifTOTALS4TM1arrayRANDusedInd[i]];
        }   
	}
    
    ############# band 2
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM2arrayRAND[i] = pifTOTALS3ETM2array[pifTOTALS4ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM2arrayRAND[i] = pifTOTALS3ETM2array[pifTOTALS4TM2arrayRANDusedInd[i]];
        }   
	}
    ############## band 3
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM3arrayRAND[i] = pifTOTALS3ETM3array[pifTOTALS4ETM3arrayRANDusedInd[i]];
        }
	}
	else if ( sensors4 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM3arrayRAND[i] = pifTOTALS3ETM3array[pifTOTALS4TM3arrayRANDusedInd[i]];
        }    
	}
    ################ band 4
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM4arrayRAND[i] = pifTOTALS3ETM4array[pifTOTALS4ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM4arrayRAND[i] = pifTOTALS3ETM4array[pifTOTALS4TM4arrayRANDusedInd[i]];
        }  
	}
    ############## band 5
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM5arrayRAND[i] = pifTOTALS3ETM5array[pifTOTALS4ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM5arrayRAND[i] = pifTOTALS3ETM5array[pifTOTALS4TM5arrayRANDusedInd[i]];
        }  
	}
    ################ band 7
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM7arrayRAND[i] = pifTOTALS3ETM7array[pifTOTALS4ETM7arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3ETM7arrayRAND[i] = pifTOTALS3ETM7array[pifTOTALS4TM7arrayRANDusedInd[i]];
        }   
	  }
    }
    
    else if ( sensors3 == 6 )
    {
    numeric pifTOTALS3arrayCount = 1;
    array pifTOTALS3TM1array[countPIFtotal];
    array pifTOTALS3TM2array[countPIFtotal];
    array pifTOTALS3TM3array[countPIFtotal];
    array pifTOTALS3TM4array[countPIFtotal];
    array pifTOTALS3TM5array[countPIFtotal];
    array pifTOTALS3TM7array[countPIFtotal];
    
    array pifTOTALS3TM1arrayRAND[minPifVAL];
    array pifTOTALS3TM2arrayRAND[minPifVAL];
    array pifTOTALS3TM3arrayRAND[minPifVAL];
    array pifTOTALS3TM4arrayRAND[minPifVAL];
    array pifTOTALS3TM5arrayRAND[minPifVAL];
    array pifTOTALS3TM7arrayRAND[minPifVAL];
    
        for i = 1 to TMlins
        {
            for j = 1 to TMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS3TM1array[pifTOTALS3arrayCount] = REFS3TM1[i,j];
			pifTOTALS3TM2array[pifTOTALS3arrayCount] = REFS3TM2[i,j];
			pifTOTALS3TM3array[pifTOTALS3arrayCount] = REFS3TM3[i,j];
			pifTOTALS3TM4array[pifTOTALS3arrayCount] = REFS3TM4[i,j];
                  pifTOTALS3TM5array[pifTOTALS3arrayCount] = REFS3TM5[i,j];
			pifTOTALS3TM7array[pifTOTALS3arrayCount] = REFS3TM7[i,j];
                  pifTOTALS3arrayCount = pifTOTALS3arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM1arrayRAND[i] = pifTOTALS3TM1array[pifTOTALS4ETM1arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM1arrayRAND[i] = pifTOTALS3TM1array[pifTOTALS4TM1arrayRANDusedInd[i]];
        }  
	}
    
    ############# band 2
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM2arrayRAND[i] = pifTOTALS3TM2array[pifTOTALS4ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM2arrayRAND[i] = pifTOTALS3TM2array[pifTOTALS4TM2arrayRANDusedInd[i]];
        }   
	  }
    ############## band 3
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM3arrayRAND[i] = pifTOTALS3TM3array[pifTOTALS4ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM3arrayRAND[i] = pifTOTALS3TM3array[pifTOTALS4TM3arrayRANDusedInd[i]];
        }   
	}
    ################ band 4
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM4arrayRAND[i] = pifTOTALS3TM4array[pifTOTALS4ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM4arrayRAND[i] = pifTOTALS3TM4array[pifTOTALS4TM4arrayRANDusedInd[i]];
        }   
	}
    ############## band 5
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM5arrayRAND[i] = pifTOTALS3TM5array[pifTOTALS4ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM5arrayRAND[i] = pifTOTALS3TM5array[pifTOTALS4TM5arrayRANDusedInd[i]];
        }  
	}
    ################ band 7
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM7arrayRAND[i] = pifTOTALS3TM7array[pifTOTALS4ETM7arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3TM7arrayRAND[i] = pifTOTALS3TM7array[pifTOTALS4TM7arrayRANDusedInd[i]];
        }  
	   }
    }
    
    else
    {
    numeric pifTOTALS3arrayCount = 1;
    array pifTOTALS3MSS1array[countPIFtotal];
    array pifTOTALS3MSS2array[countPIFtotal];
    array pifTOTALS3MSS3array[countPIFtotal];
    array pifTOTALS3MSS4array[countPIFtotal];
    
    array pifTOTALS3MSS1arrayRAND[minPifVAL];
    array pifTOTALS3MSS2arrayRAND[minPifVAL];
    array pifTOTALS3MSS3arrayRAND[minPifVAL];
    array pifTOTALS3MSS4arrayRAND[minPifVAL];
    
        for i = 1 to MSSlins
        {
            for j = 1 to MSScols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS3MSS1array[pifTOTALS3arrayCount] = REFS3MSS1[i,j];
			pifTOTALS3MSS2array[pifTOTALS3arrayCount] = REFS3MSS2[i,j];
			pifTOTALS3MSS3array[pifTOTALS3arrayCount] = REFS3MSS3[i,j];
			pifTOTALS3MSS4array[pifTOTALS3arrayCount] = REFS3MSS4[i,j];
                  pifTOTALS3arrayCount = pifTOTALS3arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS1arrayRAND[i] = pifTOTALS3MSS1array[pifTOTALS4ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS1arrayRAND[i] = pifTOTALS3MSS1array[pifTOTALS4TM2arrayRANDusedInd[i]];
        }  
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS1arrayRAND[i] = pifTOTALS3MSS1array[pifTOTALS4MSS1arrayRANDusedInd[i]];
        }
	}
    
    ############# band 2
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS2arrayRAND[i] = pifTOTALS3MSS2array[pifTOTALS4ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS2arrayRAND[i] = pifTOTALS3MSS2array[pifTOTALS4TM3arrayRANDusedInd[i]];
        }   
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS2arrayRAND[i] = pifTOTALS3MSS2array[pifTOTALS4MSS2arrayRANDusedInd[i]];
        }
	}
    
    ############## band 3
     
      if ( sensors4 == 5 or sensors4 == 4 or sensors4 == 3 or sensors4 == 2 or sensors4 == 1 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS3arrayRAND[i] = pifTOTALS3MSS3array[pifTOTALS4MSS3arrayRANDusedInd[i]];
        }
	  }
    
    ################ band 4
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS4arrayRAND[i] = pifTOTALS3MSS4array[pifTOTALS4ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS4arrayRAND[i] = pifTOTALS3MSS4array[pifTOTALS4TM4arrayRANDusedInd[i]];
        }    
	  }
	 else
	 {
        for i = 1 to minPifVAL
        {
        pifTOTALS3MSS4arrayRAND[i] = pifTOTALS3MSS4array[pifTOTALS4MSS4arrayRANDusedInd[i]];
        }
	 }
    }
    if ( sensors1 == 7 )
    {
    numeric pifTOTALS1arrayCount = 1;
    array pifTOTALS1ETM1array[countPIFtotal];
    array pifTOTALS1ETM2array[countPIFtotal];
    array pifTOTALS1ETM3array[countPIFtotal];
    array pifTOTALS1ETM4array[countPIFtotal];
    array pifTOTALS1ETM5array[countPIFtotal];
    array pifTOTALS1ETM7array[countPIFtotal];
    
    array pifTOTALS1ETM1arrayRAND[minPifVAL];
    array pifTOTALS1ETM2arrayRAND[minPifVAL];
    array pifTOTALS1ETM3arrayRAND[minPifVAL];
    array pifTOTALS1ETM4arrayRAND[minPifVAL];
    array pifTOTALS1ETM5arrayRAND[minPifVAL];
    array pifTOTALS1ETM7arrayRAND[minPifVAL];
    
        for i = 1 to ETMlins
        {
            for j = 1 to ETMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS1ETM1array[pifTOTALS1arrayCount] = REFS1ETM1[i,j];
			pifTOTALS1ETM2array[pifTOTALS1arrayCount] = REFS1ETM2[i,j];
			pifTOTALS1ETM3array[pifTOTALS1arrayCount] = REFS1ETM3[i,j];
			pifTOTALS1ETM4array[pifTOTALS1arrayCount] = REFS1ETM4[i,j];
                  pifTOTALS1ETM5array[pifTOTALS1arrayCount] = REFS1ETM5[i,j];
			pifTOTALS1ETM7array[pifTOTALS1arrayCount] = REFS1ETM7[i,j];
			pifTOTALS1arrayCount = pifTOTALS1arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM1arrayRAND[i] = pifTOTALS1ETM1array[pifTOTALS4ETM1arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM1arrayRAND[i] = pifTOTALS1ETM1array[pifTOTALS4TM1arrayRANDusedInd[i]];
        }  
	}
    
    ############# band 2
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM2arrayRAND[i] = pifTOTALS1ETM2array[pifTOTALS4ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM2arrayRAND[i] = pifTOTALS1ETM2array[pifTOTALS4TM2arrayRANDusedInd[i]];
        }
	}
    ############## band 3
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM3arrayRAND[i] = pifTOTALS1ETM3array[pifTOTALS4ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM3arrayRAND[i] = pifTOTALS1ETM3array[pifTOTALS4TM3arrayRANDusedInd[i]];
        }  
	}
    ################ band 4
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM4arrayRAND[i] = pifTOTALS1ETM4array[pifTOTALS4ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM4arrayRAND[i] = pifTOTALS1ETM4array[pifTOTALS4TM4arrayRANDusedInd[i]];
        }    
	}
    ############## band 5
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM5arrayRAND[i] = pifTOTALS1ETM5array[pifTOTALS4ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {   
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM5arrayRAND[i] = pifTOTALS1ETM5array[pifTOTALS4TM5arrayRANDusedInd[i]];
        } 
	}
    
    ################ band 7
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM7arrayRAND[i] = pifTOTALS1ETM7array[pifTOTALS4ETM7arrayRANDusedInd[i]];
        }
	}
	  else if ( sensors4 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS1ETM7arrayRAND[i] = pifTOTALS1ETM7array[pifTOTALS4TM7arrayRANDusedInd[i]];
        }  
	  }
    }
    
    else if ( sensors1 == 6 )
    {
    numeric pifTOTALS1arrayCount = 1;
    array pifTOTALS1TM1array[countPIFtotal];
    array pifTOTALS1TM2array[countPIFtotal];
    array pifTOTALS1TM3array[countPIFtotal];
    array pifTOTALS1TM4array[countPIFtotal];
    array pifTOTALS1TM5array[countPIFtotal];
    array pifTOTALS1TM7array[countPIFtotal];
    
    array pifTOTALS1TM1arrayRAND[minPifVAL];
    array pifTOTALS1TM2arrayRAND[minPifVAL];
    array pifTOTALS1TM3arrayRAND[minPifVAL];
    array pifTOTALS1TM4arrayRAND[minPifVAL];
    array pifTOTALS1TM5arrayRAND[minPifVAL];
    array pifTOTALS1TM7arrayRAND[minPifVAL];
        
        for i = 1 to TMlins
        {
            for j = 1 to TMcols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS1TM1array[pifTOTALS1arrayCount] = REFS1TM1[i,j];
			pifTOTALS1TM2array[pifTOTALS1arrayCount] = REFS1TM2[i,j];
			pifTOTALS1TM3array[pifTOTALS1arrayCount] = REFS1TM3[i,j];
			pifTOTALS1TM4array[pifTOTALS1arrayCount] = REFS1TM4[i,j];
                  pifTOTALS1TM5array[pifTOTALS1arrayCount] = REFS1TM5[i,j];
			pifTOTALS1TM7array[pifTOTALS1arrayCount] = REFS1TM7[i,j];
                  pifTOTALS1arrayCount = pifTOTALS1arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM1arrayRAND[i] = pifTOTALS1TM1array[pifTOTALS4ETM1arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM1arrayRAND[i] = pifTOTALS1TM1array[pifTOTALS4TM1arrayRANDusedInd[i]];
        }   
	}
    
    ############# band 2
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM2arrayRAND[i] = pifTOTALS1TM2array[pifTOTALS4ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM2arrayRAND[i] = pifTOTALS1TM2array[pifTOTALS4TM2arrayRANDusedInd[i]];
        }    
	}
    ############## band 3
	
      if ( sensors4 == 7 )
      {         
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM3arrayRAND[i] = pifTOTALS1TM3array[pifTOTALS4ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM3arrayRAND[i] = pifTOTALS1TM3array[pifTOTALS4TM3arrayRANDusedInd[i]];
        }    
	}
    ################ band 4
     
      if ( sensors4 == 7 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM4arrayRAND[i] = pifTOTALS1TM4array[pifTOTALS4ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM4arrayRAND[i] = pifTOTALS1TM4array[pifTOTALS4TM4arrayRANDusedInd[i]];
        }    
	}
    ############## band 5
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM5arrayRAND[i] = pifTOTALS1TM5array[pifTOTALS4ETM5arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {  
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM5arrayRAND[i] = pifTOTALS1TM5array[pifTOTALS4TM5arrayRANDusedInd[i]];
    }  
	}
    ################ band 7
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM7arrayRAND[i] = pifTOTALS1TM7array[pifTOTALS4ETM7arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS1TM7arrayRAND[i] = pifTOTALS1TM7array[pifTOTALS4TM7arrayRANDusedInd[i]];
        }   
	  }
    }
    
    else
    {
    numeric pifTOTALS1arrayCount = 1;
    array pifTOTALS1MSS1array[countPIFtotal];
    array pifTOTALS1MSS2array[countPIFtotal];
    array pifTOTALS1MSS3array[countPIFtotal];
    array pifTOTALS1MSS4array[countPIFtotal];
    
    array pifTOTALS1MSS1arrayRAND[minPifVAL];
    array pifTOTALS1MSS2arrayRAND[minPifVAL];
    array pifTOTALS1MSS3arrayRAND[minPifVAL];
    array pifTOTALS1MSS4arrayRAND[minPifVAL];
    
        for i = 1 to MSSlins
        {
            for j = 1 to MSScols
            {     
                if ( PIFMASK[i,j] == 1 )
                {
                  pifTOTALS1MSS1array[pifTOTALS1arrayCount] = REFS1MSS1[i,j];
			pifTOTALS1MSS2array[pifTOTALS1arrayCount] = REFS1MSS2[i,j];
			pifTOTALS1MSS3array[pifTOTALS1arrayCount] = REFS1MSS3[i,j];
			pifTOTALS1MSS4array[pifTOTALS1arrayCount] = REFS1MSS4[i,j];
                  pifTOTALS1arrayCount = pifTOTALS1arrayCount + 1;
                }
            }
        }
    
    ############# band 1
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS1arrayRAND[i] = pifTOTALS1MSS1array[pifTOTALS4ETM2arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS1arrayRAND[i] = pifTOTALS1MSS1array[pifTOTALS4TM2arrayRANDusedInd[i]];
        }   
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS1arrayRAND[i] = pifTOTALS1MSS1array[pifTOTALS4MSS1arrayRANDusedInd[i]];
        }   
	}
    
    ############# band 2
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS2arrayRAND[i] = pifTOTALS1MSS2array[pifTOTALS4ETM3arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      { 
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS2arrayRAND[i] = pifTOTALS1MSS2array[pifTOTALS4TM3arrayRANDusedInd[i]];
        }   
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS1arrayRAND[i] = pifTOTALS1MSS1array[pifTOTALS4MSS2arrayRANDusedInd[i]];
        }   
	}
    
    ############## band 3
     
      if ( sensors4 == 5 or sensors4 == 4 or sensors4 == 3 or sensors4 == 2 or sensors4 == 1 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS3arrayRAND[i] = pifTOTALS1MSS3array[pifTOTALS4MSS3arrayRANDusedInd[i]];
        }
	  }
    
    ################ band 4
     
      if ( sensors4 == 7 )
      {    
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS4arrayRAND[i] = pifTOTALS1MSS4array[pifTOTALS4ETM4arrayRANDusedInd[i]];
        }
	}
      else if ( sensors4 == 6 )
      {
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS4arrayRAND[i] = pifTOTALS1MSS4array[pifTOTALS4TM4arrayRANDusedInd[i]];
        }    
	}
	else
	{
        for i = 1 to minPifVAL
        {
        pifTOTALS1MSS4arrayRAND[i] = pifTOTALS1MSS4array[pifTOTALS4MSS4arrayRANDusedInd[i]];
        }
	}
    }
  }
}
########################################################### 3 Mask Part #####################################################
else if ( isTherePifMask == 0 )
{
    if ( slaveMaster == 1 )
    {
          if ( countS1S2total >= minPifVAL && countS1S3total >= minPifVAL && countS1S4total >= minPifVAL )
          {
            	if ( sensors1 == 7 )
			{
                numeric pifSEPERATS1S2arrayCount = 1;
                numeric pifSEPERATS1S3arrayCount = 1;
                numeric pifSEPERATS1S4arrayCount = 1;
            	array pifSEPERATS1S2ETM1array[countS1S2total];
            	array pifSEPERATS1S2ETM2array[countS1S2total];
            	array pifSEPERATS1S2ETM3array[countS1S2total];
            	array pifSEPERATS1S2ETM4array[countS1S2total];
            	array pifSEPERATS1S2ETM5array[countS1S2total];
            	array pifSEPERATS1S2ETM7array[countS1S2total];
            	            
                array pifSEPERATS1S2ETM1arrayRAND[minPifVAL];
                array pifSEPERATS1S2ETM2arrayRAND[minPifVAL];
                array pifSEPERATS1S2ETM3arrayRAND[minPifVAL];
                array pifSEPERATS1S2ETM4arrayRAND[minPifVAL];
                array pifSEPERATS1S2ETM5arrayRAND[minPifVAL];
                array pifSEPERATS1S2ETM7arrayRAND[minPifVAL];
    
                array pifSEPERATS1S2ETM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S2ETM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S2ETM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S2ETM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S2ETM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S2ETM7arrayRANDusedInd[minPifVAL];
                
                
            	array pifSEPERATS1S3ETM1array[countS1S3total];
            	array pifSEPERATS1S3ETM2array[countS1S3total];
            	array pifSEPERATS1S3ETM3array[countS1S3total];
            	array pifSEPERATS1S3ETM4array[countS1S3total];
            	array pifSEPERATS1S3ETM5array[countS1S3total];
            	array pifSEPERATS1S3ETM7array[countS1S3total];
            
            	array pifSEPERATS1S3ETM1arrayRAND[minPifVAL];
                array pifSEPERATS1S3ETM2arrayRAND[minPifVAL];
                array pifSEPERATS1S3ETM3arrayRAND[minPifVAL];
                array pifSEPERATS1S3ETM4arrayRAND[minPifVAL];
                array pifSEPERATS1S3ETM5arrayRAND[minPifVAL];
                array pifSEPERATS1S3ETM7arrayRAND[minPifVAL];
    
                array pifSEPERATS1S3ETM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S3ETM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S3ETM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S3ETM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S3ETM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S3ETM7arrayRANDusedInd[minPifVAL];
                
                
            	array pifSEPERATS1S4ETM1array[countS1S4total];
            	array pifSEPERATS1S4ETM2array[countS1S4total];
            	array pifSEPERATS1S4ETM3array[countS1S4total];
            	array pifSEPERATS1S4ETM4array[countS1S4total];
            	array pifSEPERATS1S4ETM5array[countS1S4total];
            	array pifSEPERATS1S4ETM7array[countS1S4total];
            
            	array pifSEPERATS1S4ETM1arrayRAND[minPifVAL];
                array pifSEPERATS1S4ETM2arrayRAND[minPifVAL];
                array pifSEPERATS1S4ETM3arrayRAND[minPifVAL];
                array pifSEPERATS1S4ETM4arrayRAND[minPifVAL];
                array pifSEPERATS1S4ETM5arrayRAND[minPifVAL];
                array pifSEPERATS1S4ETM7arrayRAND[minPifVAL];
    
                array pifSEPERATS1S4ETM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S4ETM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S4ETM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S4ETM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S4ETM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S4ETM7arrayRANDusedInd[minPifVAL];
                	  for i = 1 to ETMlins
                	  {
                    	for j = 1 to ETMcols
                    	{     
					     if ( S1MASK[i,j] == 1 && S2MASK[i,j] == 1 )
					     {
                        	pifSEPERATS1S2ETM1array[pifSEPERATS1S2arrayCount] = REFS1ETM1[i,j];                        
                       	 	pifSEPERATS1S2ETM2array[pifSEPERATS1S2arrayCount] = REFS1ETM2[i,j];                        
                        	pifSEPERATS1S2ETM3array[pifSEPERATS1S2arrayCount] = REFS1ETM3[i,j];
					        pifSEPERATS1S2ETM4array[pifSEPERATS1S2arrayCount] = REFS1ETM4[i,j];
                        	pifSEPERATS1S2ETM5array[pifSEPERATS1S2arrayCount] = REFS1ETM5[i,j];
					        pifSEPERATS1S2ETM7array[pifSEPERATS1S2arrayCount] = REFS1ETM7[i,j];
                        	pifSEPERATS1S2arrayCount = pifSEPERATS1S2arrayCount + 1;
					     }
					     if ( S1MASK[i,j] == 1 && S3MASK[i,j] == 1 )
					     {
					        pifSEPERATS1S3ETM1array[pifSEPERATS1S3arrayCount] = REFS1ETM1[i,j];                        
                       	 	pifSEPERATS1S3ETM2array[pifSEPERATS1S3arrayCount] = REFS1ETM2[i,j];                        
                        	pifSEPERATS1S3ETM3array[pifSEPERATS1S3arrayCount] = REFS1ETM3[i,j];
					        pifSEPERATS1S3ETM4array[pifSEPERATS1S3arrayCount] = REFS1ETM4[i,j];
                        	pifSEPERATS1S3ETM5array[pifSEPERATS1S3arrayCount] = REFS1ETM5[i,j];
					        pifSEPERATS1S3ETM7array[pifSEPERATS1S3arrayCount] = REFS1ETM7[i,j];
					        pifSEPERATS1S3arrayCount = pifSEPERATS1S3arrayCount + 1;
					     }
					     if ( S1MASK[i,j] == 1 && S4MASK[i,j] == 1 )
					     {
					        pifSEPERATS1S4ETM1array[pifSEPERATS1S4arrayCount] = REFS1ETM1[i,j];                        
                       	 	pifSEPERATS1S4ETM2array[pifSEPERATS1S4arrayCount] = REFS1ETM2[i,j];                        
                        	pifSEPERATS1S4ETM3array[pifSEPERATS1S4arrayCount] = REFS1ETM3[i,j];
					        pifSEPERATS1S4ETM4array[pifSEPERATS1S4arrayCount] = REFS1ETM4[i,j];
                        	pifSEPERATS1S4ETM5array[pifSEPERATS1S4arrayCount] = REFS1ETM5[i,j];
					        pifSEPERATS1S4ETM7array[pifSEPERATS1S4arrayCount] = REFS1ETM7[i,j];
					        pifSEPERATS1S4arrayCount = pifSEPERATS1S4arrayCount + 1;
					     }
                    	}
                	  }
            	            
                ############# band 1
            
                numeric validSEPERATS1S2ETM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S2ETM1 == 0 )
                    {
                        numeric randomValueSEPERATS1S2ETM1 = floor((rand(countS1S2total) + 1));      
                        validSEPERATS1S2ETM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S2ETM1 = pifSEPERATS1S2ETM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S2ETM1 == randomValueSEPERATS1S2ETM1 )
                            {
                                validSEPERATS1S2ETM1 = 0;
                            }
                        }
                    }
                pifSEPERATS1S2ETM1arrayRAND[i] = pifSEPERATS1S2ETM1array[randomValueSEPERATS1S2ETM1];
                pifSEPERATS1S2ETM1arrayRANDusedInd[i] = randomValueSEPERATS1S2ETM1;
                validSEPERATS1S2ETM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS1S2ETM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S2ETM2 == 0 )
                    {
                        numeric randomValueSEPERATS1S2ETM2 = floor((rand(countS1S2total) + 1));      
                        validSEPERATS1S2ETM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S2ETM2 = pifSEPERATS1S2ETM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S2ETM2 == randomValueSEPERATS1S2ETM2 )
                            {
                                validSEPERATS1S2ETM2 = 0;
                            }
                        }
                    }
                pifSEPERATS1S2ETM2arrayRAND[i] = pifSEPERATS1S2ETM2array[randomValueSEPERATS1S2ETM2];
                pifSEPERATS1S2ETM2arrayRANDusedInd[i] = randomValueSEPERATS1S2ETM2;
                validSEPERATS1S2ETM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS1S2ETM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S2ETM3 == 0 )
                    {
                        numeric randomValueSEPERATS1S2ETM3 = floor((rand(countS1S2total) + 1));      
                        validSEPERATS1S2ETM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S2ETM3 = pifSEPERATS1S2ETM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S2ETM3 == randomValueSEPERATS1S2ETM3 )
                            {
                                validSEPERATS1S2ETM3 = 0;
                            }
                        }
                    }
                pifSEPERATS1S2ETM3arrayRAND[i] = pifSEPERATS1S2ETM3array[randomValueSEPERATS1S2ETM3];
                pifSEPERATS1S2ETM3arrayRANDusedInd[i] = randomValueSEPERATS1S2ETM3;
                validSEPERATS1S2ETM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS1S2ETM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S2ETM4 == 0 )
                    {
                        numeric randomValueSEPERATS1S2ETM4 = floor((rand(countS1S2total) + 1));      
                        validSEPERATS1S2ETM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S2ETM4 = pifSEPERATS1S2ETM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S2ETM4 == randomValueSEPERATS1S2ETM4 )
                            {
                                validSEPERATS1S2ETM4 = 0;
                            }
                        }
                    }
                pifSEPERATS1S2ETM4arrayRAND[i] = pifSEPERATS1S2ETM4array[randomValueSEPERATS1S2ETM4];
                pifSEPERATS1S2ETM4arrayRANDusedInd[i] = randomValueSEPERATS1S2ETM4;
                validSEPERATS1S2ETM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS1S2ETM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S2ETM5 == 0 )
                    {
                        numeric randomValueSEPERATS1S2ETM5 = floor((rand(countS1S2total) + 1));      
                        validSEPERATS1S2ETM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S2ETM5 = pifSEPERATS1S2ETM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S2ETM5 == randomValueSEPERATS1S2ETM5 )
                            {
                                validSEPERATS1S2ETM5 = 0;
                            }
                        }
                    }
                pifSEPERATS1S2ETM5arrayRAND[i] = pifSEPERATS1S2ETM5array[randomValueSEPERATS1S2ETM5];
                pifSEPERATS1S2ETM5arrayRANDusedInd[i] = randomValueSEPERATS1S2ETM5;
                validSEPERATS1S2ETM5 = 0;
                }
            
            ################ band 7
                
                numeric validSEPERATS1S2ETM7 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S2ETM7 == 0 )
                    {
                        numeric randomValueSEPERATS1S2ETM7 = floor((rand(countS1S2total) + 1));      
                        validSEPERATS1S2ETM7 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S2ETM7 = pifSEPERATS1S2ETM7arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S2ETM7 == randomValueSEPERATS1S2ETM7 )
                            {
                                validSEPERATS1S2ETM7 = 0;
                            }
                        }
                    }
                pifSEPERATS1S2ETM7arrayRAND[i] = pifSEPERATS1S2ETM7array[randomValueSEPERATS1S2ETM7];
                pifSEPERATS1S2ETM7arrayRANDusedInd[i] = randomValueSEPERATS1S2ETM7;
                validSEPERATS1S2ETM7 = 0;
                }
            
            
            ###################################################
            
            	############# band 1
            
                numeric validSEPERATS1S3ETM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S3ETM1 == 0 )
                    {
                        numeric randomValueSEPERATS1S3ETM1 = floor((rand(countS1S3total) + 1));      
                        validSEPERATS1S3ETM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S3ETM1 = pifSEPERATS1S3ETM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S3ETM1 == randomValueSEPERATS1S3ETM1 )
                            {
                                validSEPERATS1S3ETM1 = 0;
                            }
                        }
                    }
                pifSEPERATS1S3ETM1arrayRAND[i] = pifSEPERATS1S3ETM1array[randomValueSEPERATS1S3ETM1];
                pifSEPERATS1S3ETM1arrayRANDusedInd[i] = randomValueSEPERATS1S3ETM1;
                validSEPERATS1S3ETM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS1S3ETM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S3ETM2 == 0 )
                    {
                        numeric randomValueSEPERATS1S3ETM2 = floor((rand(countS1S3total) + 1));      
                        validSEPERATS1S3ETM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S3ETM2 = pifSEPERATS1S3ETM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S3ETM2 == randomValueSEPERATS1S3ETM2 )
                            {
                                validSEPERATS1S3ETM2 = 0;
                            }
                        }
                    }
                pifSEPERATS1S3ETM2arrayRAND[i] = pifSEPERATS1S3ETM2array[randomValueSEPERATS1S3ETM2];
                pifSEPERATS1S3ETM2arrayRANDusedInd[i] = randomValueSEPERATS1S3ETM2;
                validSEPERATS1S3ETM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS1S3ETM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S3ETM3 == 0 )
                    {
                        numeric randomValueSEPERATS1S3ETM3 = floor((rand(countS1S3total) + 1));      
                        validSEPERATS1S3ETM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S3ETM3 = pifSEPERATS1S3ETM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S3ETM3 == randomValueSEPERATS1S3ETM3 )
                            {
                                validSEPERATS1S3ETM3 = 0;
                            }
                        }
                    }
                pifSEPERATS1S3ETM3arrayRAND[i] = pifSEPERATS1S3ETM3array[randomValueSEPERATS1S3ETM3];
                pifSEPERATS1S3ETM3arrayRANDusedInd[i] = randomValueSEPERATS1S3ETM3;
                validSEPERATS1S3ETM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS1S3ETM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S3ETM4 == 0 )
                    {
                        numeric randomValueSEPERATS1S3ETM4 = floor((rand(countS1S3total) + 1));      
                        validSEPERATS1S3ETM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S3ETM4 = pifSEPERATS1S3ETM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S3ETM4 == randomValueSEPERATS1S3ETM4 )
                            {
                                validSEPERATS1S3ETM4 = 0;
                            }
                        }
                    }
                pifSEPERATS1S3ETM4arrayRAND[i] = pifSEPERATS1S3ETM4array[randomValueSEPERATS1S3ETM4];
                pifSEPERATS1S3ETM4arrayRANDusedInd[i] = randomValueSEPERATS1S3ETM4;
                validSEPERATS1S3ETM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS1S3ETM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S3ETM5 == 0 )
                    {
                        numeric randomValueSEPERATS1S3ETM5 = floor((rand(countS1S3total) + 1));      
                        validSEPERATS1S3ETM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S3ETM5 = pifSEPERATS1S3ETM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S3ETM5 == randomValueSEPERATS1S3ETM5 )
                            {
                                validSEPERATS1S3ETM5 = 0;
                            }
                        }
                    }
                pifSEPERATS1S3ETM5arrayRAND[i] = pifSEPERATS1S3ETM5array[randomValueSEPERATS1S3ETM5];
                pifSEPERATS1S3ETM5arrayRANDusedInd[i] = randomValueSEPERATS1S3ETM5;
                validSEPERATS1S3ETM5 = 0;
                }
            
            ################ band 7
                
                numeric validSEPERATS1S3ETM7 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S3ETM7 == 0 )
                    {
                        numeric randomValueSEPERATS1S3ETM7 = floor((rand(countS1S3total) + 1));      
                        validSEPERATS1S3ETM7 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S3ETM7 = pifSEPERATS1S3ETM7arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S3ETM7 == randomValueSEPERATS1S3ETM7 )
                            {
                                validSEPERATS1S3ETM7 = 0;
                            }
                        }
                    }
                pifSEPERATS1S3ETM7arrayRAND[i] = pifSEPERATS1S3ETM7array[randomValueSEPERATS1S3ETM7];
                pifSEPERATS1S3ETM7arrayRANDusedInd[i] = randomValueSEPERATS1S3ETM7;
                validSEPERATS1S3ETM7 = 0;
                }
            
            #######################################
            
            	############# band 1
            
                numeric validSEPERATS1S4ETM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S4ETM1 == 0 )
                    {
                        numeric randomValueSEPERATS1S4ETM1 = floor((rand(countS1S4total) + 1));      
                        validSEPERATS1S4ETM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S4ETM1 = pifSEPERATS1S4ETM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S4ETM1 == randomValueSEPERATS1S4ETM1 )
                            {
                                validSEPERATS1S4ETM1 = 0;
                            }
                        }
                    }
                pifSEPERATS1S4ETM1arrayRAND[i] = pifSEPERATS1S4ETM1array[randomValueSEPERATS1S4ETM1];
                pifSEPERATS1S4ETM1arrayRANDusedInd[i] = randomValueSEPERATS1S4ETM1;
                validSEPERATS1S4ETM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS1S4ETM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S4ETM2 == 0 )
                    {
                        numeric randomValueSEPERATS1S4ETM2 = floor((rand(countS1S4total) + 1));      
                        validSEPERATS1S4ETM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S4ETM2 = pifSEPERATS1S4ETM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S4ETM2 == randomValueSEPERATS1S4ETM2 )
                            {
                                validSEPERATS1S4ETM2 = 0;
                            }
                        }
                    }
                pifSEPERATS1S4ETM2arrayRAND[i] = pifSEPERATS1S4ETM2array[randomValueSEPERATS1S4ETM2];
                pifSEPERATS1S4ETM2arrayRANDusedInd[i] = randomValueSEPERATS1S4ETM2;
                validSEPERATS1S4ETM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS1S4ETM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S4ETM3 == 0 )
                    {
                        numeric randomValueSEPERATS1S4ETM3 = floor((rand(countS1S4total) + 1));      
                        validSEPERATS1S4ETM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S4ETM3 = pifSEPERATS1S4ETM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S4ETM3 == randomValueSEPERATS1S4ETM3 )
                            {
                                validSEPERATS1S4ETM3 = 0;
                            }
                        }
                    }
                pifSEPERATS1S4ETM3arrayRAND[i] = pifSEPERATS1S4ETM3array[randomValueSEPERATS1S4ETM3];
                pifSEPERATS1S4ETM3arrayRANDusedInd[i] = randomValueSEPERATS1S4ETM3;
                validSEPERATS1S4ETM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS1S4ETM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S4ETM4 == 0 )
                    {
                        numeric randomValueSEPERATS1S4ETM4 = floor((rand(countS1S4total) + 1));      
                        validSEPERATS1S4ETM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S4ETM4 = pifSEPERATS1S4ETM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S4ETM4 == randomValueSEPERATS1S4ETM4 )
                            {
                                validSEPERATS1S4ETM4 = 0;
                            }
                        }
                    }
                pifSEPERATS1S4ETM4arrayRAND[i] = pifSEPERATS1S4ETM4array[randomValueSEPERATS1S4ETM4];
                pifSEPERATS1S4ETM4arrayRANDusedInd[i] = randomValueSEPERATS1S4ETM4;
                validSEPERATS1S4ETM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS1S4ETM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S4ETM5 == 0 )
                    {
                        numeric randomValueSEPERATS1S4ETM5 = floor((rand(countS1S4total) + 1));      
                        validSEPERATS1S4ETM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S4ETM5 = pifSEPERATS1S4ETM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S4ETM5 == randomValueSEPERATS1S4ETM5 )
                            {
                                validSEPERATS1S4ETM5 = 0;
                            }
                 }
                    }
                pifSEPERATS1S4ETM5arrayRAND[i] = pifSEPERATS1S4ETM5array[randomValueSEPERATS1S4ETM5];
                pifSEPERATS1S4ETM5arrayRANDusedInd[i] = randomValueSEPERATS1S4ETM5;
                validSEPERATS1S4ETM5 = 0;
                }
            
            ################ band 7
                
                    numeric validSEPERATS1S4ETM7 = 0;
                 
                    for i = 1 to minPifVAL
                    {
                        while ( validSEPERATS1S4ETM7 == 0 )
                        {
                            numeric randomValueSEPERATS1S4ETM7 = floor((rand(countS1S4total) + 1));      
                            validSEPERATS1S4ETM7 = 1;
                
                            for j = 1 to (i-1)
                            {
                                local numeric testValueSEPERATS1S4ETM7 = pifSEPERATS1S4ETM7arrayRANDusedInd[j];
                            
                                if ( testValueSEPERATS1S4ETM7 == randomValueSEPERATS1S4ETM7 )
                                {
                                    validSEPERATS1S4ETM7 = 0;
                                }
                            }
                        }
                    pifSEPERATS1S4ETM7arrayRAND[i] = pifSEPERATS1S4ETM7array[randomValueSEPERATS1S4ETM7];
                    pifSEPERATS1S4ETM7arrayRANDusedInd[i] = randomValueSEPERATS1S4ETM7;
                    validSEPERATS1S4ETM7 = 0;
                    }            
            	}
		
			else if ( sensors1 == 6 )
			{
                numeric pifSEPERATS1S2arrayCount = 1;
                numeric pifSEPERATS1S3arrayCount = 1;
                numeric pifSEPERATS1S4arrayCount = 1;
            	array pifSEPERATS1S2TM1array[countS1S2total];
            	array pifSEPERATS1S2TM2array[countS1S2total];
            	array pifSEPERATS1S2TM3array[countS1S2total];
            	array pifSEPERATS1S2TM4array[countS1S2total];
            	array pifSEPERATS1S2TM5array[countS1S2total];
            	array pifSEPERATS1S2TM7array[countS1S2total];
            
            	array pifSEPERATS1S2TM1arrayRAND[minPifVAL];
            	array pifSEPERATS1S2TM2arrayRAND[minPifVAL];
            	array pifSEPERATS1S2TM3arrayRAND[minPifVAL];
            	array pifSEPERATS1S2TM4arrayRAND[minPifVAL];
            	array pifSEPERATS1S2TM5arrayRAND[minPifVAL];
            	array pifSEPERATS1S2TM7arrayRAND[minPifVAL];
            
            	array pifSEPERATS1S2TM1arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS1S2TM2arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS1S2TM3arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS1S2TM4arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS1S2TM5arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS1S2TM7arrayRANDusedInd[minPifVAL];
            
            	array pifSEPERATS1S3TM1array[countS1S3total];
            	array pifSEPERATS1S3TM2array[countS1S3total];
            	array pifSEPERATS1S3TM3array[countS1S3total];
            	array pifSEPERATS1S3TM4array[countS1S3total];
            	array pifSEPERATS1S3TM5array[countS1S3total];
            	array pifSEPERATS1S3TM7array[countS1S3total];
            
            	array pifSEPERATS1S3TM1arrayRAND[minPifVAL];
                array pifSEPERATS1S3TM2arrayRAND[minPifVAL];
                array pifSEPERATS1S3TM3arrayRAND[minPifVAL];
                array pifSEPERATS1S3TM4arrayRAND[minPifVAL];
                array pifSEPERATS1S3TM5arrayRAND[minPifVAL];
                array pifSEPERATS1S3TM7arrayRAND[minPifVAL];
    
                array pifSEPERATS1S3TM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S3TM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S3TM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S3TM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S3TM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S3TM7arrayRANDusedInd[minPifVAL];
                
            	array pifSEPERATS1S4TM1array[countS1S4total];
            	array pifSEPERATS1S4TM2array[countS1S4total];
            	array pifSEPERATS1S4TM3array[countS1S4total];
            	array pifSEPERATS1S4TM4array[countS1S4total];
            	array pifSEPERATS1S4TM5array[countS1S4total];
            	array pifSEPERATS1S4TM7array[countS1S4total];
            
            	array pifSEPERATS1S4TM1arrayRAND[minPifVAL];
                array pifSEPERATS1S4TM2arrayRAND[minPifVAL];
                array pifSEPERATS1S4TM3arrayRAND[minPifVAL];
                array pifSEPERATS1S4TM4arrayRAND[minPifVAL];
                array pifSEPERATS1S4TM5arrayRAND[minPifVAL];
                array pifSEPERATS1S4TM7arrayRAND[minPifVAL];
    
                array pifSEPERATS1S4TM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S4TM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S4TM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S4TM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S4TM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S4TM7arrayRANDusedInd[minPifVAL];
                	  for i = 1 to TMlins
                	  {
                    	for j = 1 to TMcols
                    	{     
                            if ( S1MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                            {
                                    pifSEPERATS1S2TM1array[pifSEPERATS1S2arrayCount] = REFS1TM1[i,j];                        
                                        pifSEPERATS1S2TM2array[pifSEPERATS1S2arrayCount] = REFS1TM2[i,j];                        
                                    pifSEPERATS1S2TM3array[pifSEPERATS1S2arrayCount] = REFS1TM3[i,j];
                            pifSEPERATS1S2TM4array[pifSEPERATS1S2arrayCount] = REFS1TM4[i,j];
                                    pifSEPERATS1S2TM5array[pifSEPERATS1S2arrayCount] = REFS1TM5[i,j];
                            pifSEPERATS1S2TM7array[pifSEPERATS1S2arrayCount] = REFS1TM7[i,j];
                                    pifSEPERATS1S2arrayCount = pifSEPERATS1S2arrayCount + 1;
                            }
        
                            if ( S1MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                            {
                            pifSEPERATS1S3TM1array[pifSEPERATS1S3arrayCount] = REFS1TM1[i,j];                        
                                        pifSEPERATS1S3TM2array[pifSEPERATS1S3arrayCount] = REFS1TM2[i,j];                        
                                    pifSEPERATS1S3TM3array[pifSEPERATS1S3arrayCount] = REFS1TM3[i,j];
                            pifSEPERATS1S3TM4array[pifSEPERATS1S3arrayCount] = REFS1TM4[i,j];
                                    pifSEPERATS1S3TM5array[pifSEPERATS1S3arrayCount] = REFS1TM5[i,j];
                            pifSEPERATS1S3TM7array[pifSEPERATS1S3arrayCount] = REFS1TM7[i,j];
                            pifSEPERATS1S3arrayCount = pifSEPERATS1S3arrayCount + 1;
                            }
        
                            if ( S1MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                            {
                            pifSEPERATS1S4TM1array[pifSEPERATS1S4arrayCount] = REFS1TM1[i,j];                        
                                        pifSEPERATS1S4TM2array[pifSEPERATS1S4arrayCount] = REFS1TM2[i,j];                        
                                    pifSEPERATS1S4TM3array[pifSEPERATS1S4arrayCount] = REFS1TM3[i,j];
                            pifSEPERATS1S4TM4array[pifSEPERATS1S4arrayCount] = REFS1TM4[i,j];
                                    pifSEPERATS1S4TM5array[pifSEPERATS1S4arrayCount] = REFS1TM5[i,j];
                            pifSEPERATS1S4TM7array[pifSEPERATS1S4arrayCount] = REFS1TM7[i,j];
                            pifSEPERATS1S4arrayCount = pifSEPERATS1S4arrayCount + 1;
                            }
                    	}
                	  }
                	  
                ############# band 1
            
                numeric validSEPERATS1S2TM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S2TM1 == 0 )
                    {
                        numeric randomValueSEPERATS1S2TM1 = floor((rand(countS1S2total) + 1));      
                        validSEPERATS1S2TM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S2TM1 = pifSEPERATS1S2TM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S2TM1 == randomValueSEPERATS1S2TM1 )
                            {
                                validSEPERATS1S2TM1 = 0;
                            }
                        }
                    }
                pifSEPERATS1S2TM1arrayRAND[i] = pifSEPERATS1S2TM1array[randomValueSEPERATS1S2TM1];
                pifSEPERATS1S2TM1arrayRANDusedInd[i] = randomValueSEPERATS1S2TM1;
                validSEPERATS1S2TM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS1S2TM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S2TM2 == 0 )
                    {
                        numeric randomValueSEPERATS1S2TM2 = floor((rand(countS1S2total) + 1));      
                        validSEPERATS1S2TM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S2TM2 = pifSEPERATS1S2TM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S2TM2 == randomValueSEPERATS1S2TM2 )
                            {
                                validSEPERATS1S2TM2 = 0;
                            }
                        }
                    }
                pifSEPERATS1S2TM2arrayRAND[i] = pifSEPERATS1S2TM2array[randomValueSEPERATS1S2TM2];
                pifSEPERATS1S2TM2arrayRANDusedInd[i] = randomValueSEPERATS1S2TM2;
                validSEPERATS1S2TM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS1S2TM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S2TM3 == 0 )
                    {
                        numeric randomValueSEPERATS1S2TM3 = floor((rand(countS1S2total) + 1));      
                        validSEPERATS1S2TM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S2TM3 = pifSEPERATS1S2TM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S2TM3 == randomValueSEPERATS1S2TM3 )
                            {
                                validSEPERATS1S2TM3 = 0;
                            }
                        }
                    }
                pifSEPERATS1S2TM3arrayRAND[i] = pifSEPERATS1S2TM3array[randomValueSEPERATS1S2TM3];
                pifSEPERATS1S2TM3arrayRANDusedInd[i] = randomValueSEPERATS1S2TM3;
                validSEPERATS1S2TM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS1S2TM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S2TM4 == 0 )
                    {
                        numeric randomValueSEPERATS1S2TM4 = floor((rand(countS1S2total) + 1));      
                        validSEPERATS1S2TM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S2TM4 = pifSEPERATS1S2TM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S2TM4 == randomValueSEPERATS1S2TM4 )
                            {
                                validSEPERATS1S2TM4 = 0;
                            }
                        }
                    }
                pifSEPERATS1S2TM4arrayRAND[i] = pifSEPERATS1S2TM4array[randomValueSEPERATS1S2TM4];
                pifSEPERATS1S2TM4arrayRANDusedInd[i] = randomValueSEPERATS1S2TM4;
                validSEPERATS1S2TM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS1S2TM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S2TM5 == 0 )
                    {
                        numeric randomValueSEPERATS1S2TM5 = floor((rand(countS1S2total) + 1));      
                        validSEPERATS1S2TM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S2TM5 = pifSEPERATS1S2TM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S2TM5 == randomValueSEPERATS1S2TM5 )
                            {
                                validSEPERATS1S2TM5 = 0;
                            }
                        }
                    }
                pifSEPERATS1S2TM5arrayRAND[i] = pifSEPERATS1S2TM5array[randomValueSEPERATS1S2TM5];
                pifSEPERATS1S2TM5arrayRANDusedInd[i] = randomValueSEPERATS1S2TM5;
                validSEPERATS1S2TM5 = 0;
                }
            
            ################ band 7
                
                numeric validSEPERATS1S2TM7 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S2TM7 == 0 )
                    {
                        numeric randomValueSEPERATS1S2TM7 = floor((rand(countS1S2total) + 1));      
                        validSEPERATS1S2TM7 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S2TM7 = pifSEPERATS1S2TM7arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S2TM7 == randomValueSEPERATS1S2TM7 )
                            {
                                validSEPERATS1S2TM7 = 0;
                            }
                        }
                    }
                pifSEPERATS1S2TM7arrayRAND[i] = pifSEPERATS1S2TM7array[randomValueSEPERATS1S2TM7];
                pifSEPERATS1S2TM7arrayRANDusedInd[i] = randomValueSEPERATS1S2TM7;
                validSEPERATS1S2TM7 = 0;
                }
            
            
            ###################################################
            
            	############# band 1
            
                numeric validSEPERATS1S3TM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S3TM1 == 0 )
                    {
                        numeric randomValueSEPERATS1S3TM1 = floor((rand(countS1S3total) + 1));      
                        validSEPERATS1S3TM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S3TM1 = pifSEPERATS1S3TM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S3TM1 == randomValueSEPERATS1S3TM1 )
                            {
                                validSEPERATS1S3TM1 = 0;
                            }
                        }
                    }
                pifSEPERATS1S3TM1arrayRAND[i] = pifSEPERATS1S3TM1array[randomValueSEPERATS1S3TM1];
                pifSEPERATS1S3TM1arrayRANDusedInd[i] = randomValueSEPERATS1S3TM1;
                validSEPERATS1S3TM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS1S3TM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S3TM2 == 0 )
                    {
                        numeric randomValueSEPERATS1S3TM2 = floor((rand(countS1S3total) + 1));      
                        validSEPERATS1S3TM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S3TM2 = pifSEPERATS1S3TM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S3TM2 == randomValueSEPERATS1S3TM2 )
                            {
                                validSEPERATS1S3TM2 = 0;
                            }
                        }
                    }
                pifSEPERATS1S3TM2arrayRAND[i] = pifSEPERATS1S3TM2array[randomValueSEPERATS1S3TM2];
                pifSEPERATS1S3TM2arrayRANDusedInd[i] = randomValueSEPERATS1S3TM2;
                validSEPERATS1S3TM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS1S3TM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S3TM3 == 0 )
                    {
                        numeric randomValueSEPERATS1S3TM3 = floor((rand(countS1S3total) + 1));      
                        validSEPERATS1S3TM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S3TM3 = pifSEPERATS1S3TM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S3TM3 == randomValueSEPERATS1S3TM3 )
                            {
                                validSEPERATS1S3TM3 = 0;
                            }
                        }
                    }
                pifSEPERATS1S3TM3arrayRAND[i] = pifSEPERATS1S3TM3array[randomValueSEPERATS1S3TM3];
                pifSEPERATS1S3TM3arrayRANDusedInd[i] = randomValueSEPERATS1S3TM3;
                validSEPERATS1S3TM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS1S3TM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S3TM4 == 0 )
                    {
                        numeric randomValueSEPERATS1S3TM4 = floor((rand(countS1S3total) + 1));      
                        validSEPERATS1S3TM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S3TM4 = pifSEPERATS1S3TM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S3TM4 == randomValueSEPERATS1S3TM4 )
                            {
                                validSEPERATS1S3TM4 = 0;
                            }
                        }
                    }
                pifSEPERATS1S3TM4arrayRAND[i] = pifSEPERATS1S3TM4array[randomValueSEPERATS1S3TM4];
                pifSEPERATS1S3TM4arrayRANDusedInd[i] = randomValueSEPERATS1S3TM4;
                validSEPERATS1S3TM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS1S3TM5 = 0;
             
                for i = 1 to minPifVAL
                {
                  while ( validSEPERATS1S3TM5 == 0 )
                    {
                        numeric randomValueSEPERATS1S3TM5 = floor((rand(countS1S3total) + 1));      
                        validSEPERATS1S3TM5 = 1;
            
                        for j = 1 to (i-1)
                        {
       local numeric testValueSEPERATS1S3TM5 = pifSEPERATS1S3TM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S3TM5 == randomValueSEPERATS1S3TM5 )
                            {
                                validSEPERATS1S3TM5 = 0;
                            }
                        }
                    }
                pifSEPERATS1S3TM5arrayRAND[i] = pifSEPERATS1S3TM5array[randomValueSEPERATS1S3TM5];
                pifSEPERATS1S3TM5arrayRANDusedInd[i] = randomValueSEPERATS1S3TM5;
                validSEPERATS1S3TM5 = 0;
                }
            
            ################ band 7
                
                numeric validSEPERATS1S3TM7 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S3TM7 == 0 )
                    {
                        numeric randomValueSEPERATS1S3TM7 = floor((rand(countS1S3total) + 1));      
                        validSEPERATS1S3TM7 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S3TM7 = pifSEPERATS1S3TM7arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S3TM7 == randomValueSEPERATS1S3TM7 )
                            {
                                validSEPERATS1S3TM7 = 0;
                            }
                        }
                    }
                pifSEPERATS1S3TM7arrayRAND[i] = pifSEPERATS1S3TM7array[randomValueSEPERATS1S3TM7];
                pifSEPERATS1S3TM7arrayRANDusedInd[i] = randomValueSEPERATS1S3TM7;
                validSEPERATS1S3TM7 = 0;
                }
            
            #######################################
            
            	############# band 1
            
                numeric validSEPERATS1S4TM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S4TM1 == 0 )
                    {
                        numeric randomValueSEPERATS1S4TM1 = floor((rand(countS1S4total) + 1));      
                        validSEPERATS1S4TM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S4TM1 = pifSEPERATS1S4TM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S4TM1 == randomValueSEPERATS1S4TM1 )
                            {
                                validSEPERATS1S4TM1 = 0;
                            }
                        }
                    }
                pifSEPERATS1S4TM1arrayRAND[i] = pifSEPERATS1S4TM1array[randomValueSEPERATS1S4TM1];
                pifSEPERATS1S4TM1arrayRANDusedInd[i] = randomValueSEPERATS1S4TM1;
                validSEPERATS1S4TM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS1S4TM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S4TM2 == 0 )
                    {
                        numeric randomValueSEPERATS1S4TM2 = floor((rand(countS1S4total) + 1));      
                        validSEPERATS1S4TM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S4TM2 = pifSEPERATS1S4TM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S4TM2 == randomValueSEPERATS1S4TM2 )
                            {
                                validSEPERATS1S4TM2 = 0;
                            }
                        }
                    }
                pifSEPERATS1S4TM2arrayRAND[i] = pifSEPERATS1S4TM2array[randomValueSEPERATS1S4TM2];
                pifSEPERATS1S4TM2arrayRANDusedInd[i] = randomValueSEPERATS1S4TM2;
                validSEPERATS1S4TM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS1S4TM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S4TM3 == 0 )
                    {
                        numeric randomValueSEPERATS1S4TM3 = floor((rand(countS1S4total) + 1));      
                        validSEPERATS1S4TM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S4TM3 = pifSEPERATS1S4TM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S4TM3 == randomValueSEPERATS1S4TM3 )
                            {
                                validSEPERATS1S4TM3 = 0;
                            }
                        }
                    }
                pifSEPERATS1S4TM3arrayRAND[i] = pifSEPERATS1S4TM3array[randomValueSEPERATS1S4TM3];
                pifSEPERATS1S4TM3arrayRANDusedInd[i] = randomValueSEPERATS1S4TM3;
                validSEPERATS1S4TM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS1S4TM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S4TM4 == 0 )
                    {
                        numeric randomValueSEPERATS1S4TM4 = floor((rand(countS1S4total) + 1));      
                        validSEPERATS1S4TM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S4TM4 = pifSEPERATS1S4TM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S4TM4 == randomValueSEPERATS1S4TM4 )
                            {
                                validSEPERATS1S4TM4 = 0;
                            }
                        }
                    }
                pifSEPERATS1S4TM4arrayRAND[i] = pifSEPERATS1S4TM4array[randomValueSEPERATS1S4TM4];
                pifSEPERATS1S4TM4arrayRANDusedInd[i] = randomValueSEPERATS1S4TM4;
                validSEPERATS1S4TM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS1S4TM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S4TM5 == 0 )
                    {
                        numeric randomValueSEPERATS1S4TM5 = floor((rand(countS1S4total) + 1));      
                        validSEPERATS1S4TM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S4TM5 = pifSEPERATS1S4TM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S4TM5 == randomValueSEPERATS1S4TM5 )
                            {
                                validSEPERATS1S4TM5 = 0;
                            }
                        }
                    }
                pifSEPERATS1S4TM5arrayRAND[i] = pifSEPERATS1S4TM5array[randomValueSEPERATS1S4TM5];
                pifSEPERATS1S4TM5arrayRANDusedInd[i] = randomValueSEPERATS1S4TM5;
                validSEPERATS1S4TM5 = 0;
                }
            
            ################ band 7
                
                    numeric validSEPERATS1S4TM7 = 0;
                 
                    for i = 1 to minPifVAL
                    {
                        while ( validSEPERATS1S4TM7 == 0 )
                        {
                            numeric randomValueSEPERATS1S4TM7 = floor((rand(countS1S4total) + 1));      
                            validSEPERATS1S4TM7 = 1;
                
                            for j = 1 to (i-1)
                            {
                                local numeric testValueSEPERATS1S4TM7 = pifSEPERATS1S4TM7arrayRANDusedInd[j];
                            
                                if ( testValueSEPERATS1S4TM7 == randomValueSEPERATS1S4TM7 )
                                {
                                    validSEPERATS1S4TM7 = 0;
                                }
                            }
                        }
                    pifSEPERATS1S4TM7arrayRAND[i] = pifSEPERATS1S4TM7array[randomValueSEPERATS1S4TM7];
                    pifSEPERATS1S4TM7arrayRANDusedInd[i] = randomValueSEPERATS1S4TM7;
                    validSEPERATS1S4TM7 = 0;
                    }               	  
			}
			else
			{
                numeric pifSEPERATS1S2arrayCount = 1;
                numeric pifSEPERATS1S3arrayCount = 1;
                numeric pifSEPERATS1S4arrayCount = 1;
            	array pifSEPERATS1S2MSS1array[countS1S2total];
            	array pifSEPERATS1S2MSS2array[countS1S2total];
            	array pifSEPERATS1S2MSS3array[countS1S2total];
            	array pifSEPERATS1S2MSS4array[countS1S2total];
            
            	array pifSEPERATS1S2MSS1arrayRAND[minPifVAL];
            	array pifSEPERATS1S2MSS2arrayRAND[minPifVAL];
            	array pifSEPERATS1S2MSS3arrayRAND[minPifVAL];
            	array pifSEPERATS1S2MSS4arrayRAND[minPifVAL];
            	            
            	array pifSEPERATS1S2MSS1arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS1S2MSS2arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS1S2MSS3arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS1S2MSS4arrayRANDusedInd[minPifVAL];
            
            
            	array pifSEPERATS1S3MSS1array[countS1S3total];
            	array pifSEPERATS1S3MSS2array[countS1S3total];
            	array pifSEPERATS1S3MSS3array[countS1S3total];
            	array pifSEPERATS1S3MSS4array[countS1S3total];
            
            	array pifSEPERATS1S3MSS1arrayRAND[minPifVAL];
                array pifSEPERATS1S3MSS2arrayRAND[minPifVAL];
                array pifSEPERATS1S3MSS3arrayRAND[minPifVAL];
                array pifSEPERATS1S3MSS4arrayRAND[minPifVAL];
                   
                array pifSEPERATS1S3MSS1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S3MSS2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S3MSS3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S3MSS4arrayRANDusedInd[minPifVAL];
                
                            
            	array pifSEPERATS1S4MSS1array[countS1S4total];
            	array pifSEPERATS1S4MSS2array[countS1S4total];
            	array pifSEPERATS1S4MSS3array[countS1S4total];
            	array pifSEPERATS1S4MSS4array[countS1S4total];
            
            	array pifSEPERATS1S4MSS1arrayRAND[minPifVAL];
                array pifSEPERATS1S4MSS2arrayRAND[minPifVAL];
                array pifSEPERATS1S4MSS3arrayRAND[minPifVAL];
                array pifSEPERATS1S4MSS4arrayRAND[minPifVAL];
                   
                array pifSEPERATS1S4MSS1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S4MSS2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S4MSS3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS1S4MSS4arrayRANDusedInd[minPifVAL];
                
            	  for i = 1 to MSSlins
                	  {
                    	for j = 1 to MSScols
                    	{     
                            if ( S1MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                            {
                                    pifSEPERATS1S2MSS1array[pifSEPERATS1S2arrayCount] = REFS1MSS1[i,j];                        
                                        pifSEPERATS1S2MSS2array[pifSEPERATS1S2arrayCount] = REFS1MSS2[i,j];                        
                                    pifSEPERATS1S2MSS3array[pifSEPERATS1S2arrayCount] = REFS1MSS3[i,j];
                            pifSEPERATS1S2MSS4array[pifSEPERATS1S2arrayCount] = REFS1MSS4[i,j];
                                    pifSEPERATS1S2arrayCount = pifSEPERATS1S2arrayCount + 1;
                            }
        
                            if ( S1MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                            {
                            pifSEPERATS1S3MSS1array[pifSEPERATS1S3arrayCount] = REFS1MSS1[i,j];                        
                                        pifSEPERATS1S3MSS2array[pifSEPERATS1S3arrayCount] = REFS1MSS2[i,j];                        
                                    pifSEPERATS1S3MSS3array[pifSEPERATS1S3arrayCount] = REFS1MSS3[i,j];
                            pifSEPERATS1S3MSS4array[pifSEPERATS1S3arrayCount] = REFS1MSS4[i,j];
                            pifSEPERATS1S3arrayCount = pifSEPERATS1S3arrayCount + 1;
                            }
        
                            if ( S1MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                            {
                            pifSEPERATS1S4MSS1array[pifSEPERATS1S4arrayCount] = REFS1MSS1[i,j];                        
                                        pifSEPERATS1S4MSS2array[pifSEPERATS1S4arrayCount] = REFS1MSS2[i,j];                        
                                    pifSEPERATS1S4MSS3array[pifSEPERATS1S4arrayCount] = REFS1MSS3[i,j];
                            pifSEPERATS1S4MSS4array[pifSEPERATS1S4arrayCount] = REFS1MSS4[i,j];
                            pifSEPERATS1S4arrayCount = pifSEPERATS1S4arrayCount + 1;
                            }
                    	}
                	  }
                	  
            ############# band 1
            
                numeric validSEPERATS1S2MSS1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S2MSS1 == 0 )
                    {
                        numeric randomValueSEPERATS1S2MSS1 = floor((rand(countS1S2total) + 1));      
                        validSEPERATS1S2MSS1 = 1;
            
                        for j = 1to (i-1)
                        {
                            local numeric testValueSEPERATS1S2MSS1 = pifSEPERATS1S2MSS1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S2MSS1 == randomValueSEPERATS1S2MSS1 )
                            {
                                validSEPERATS1S2MSS1 = 0;
                            }
                        }
                    }
                pifSEPERATS1S2MSS1arrayRAND[i] = pifSEPERATS1S2MSS1array[randomValueSEPERATS1S2MSS1];
                pifSEPERATS1S2MSS1arrayRANDusedInd[i] = randomValueSEPERATS1S2MSS1;
                validSEPERATS1S2MSS1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS1S2MSS2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S2MSS2 == 0 )
                    {
                        numeric randomValueSEPERATS1S2MSS2 = floor((rand(countS1S2total) + 1));      
                        validSEPERATS1S2MSS2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S2MSS2 = pifSEPERATS1S2MSS2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S2MSS2 == randomValueSEPERATS1S2MSS2 )
                            {
                                validSEPERATS1S2MSS2 = 0;
                            }
                        }
                    }
                pifSEPERATS1S2MSS2arrayRAND[i] = pifSEPERATS1S2MSS2array[randomValueSEPERATS1S2MSS2];
                pifSEPERATS1S2MSS2arrayRANDusedInd[i] = randomValueSEPERATS1S2MSS2;
                validSEPERATS1S2MSS2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS1S2MSS3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S2MSS3 == 0 )
                    {
                        numeric randomValueSEPERATS1S2MSS3 = floor((rand(countS1S2total) + 1));      
                        validSEPERATS1S2MSS3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S2MSS3 = pifSEPERATS1S2MSS3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S2MSS3 == randomValueSEPERATS1S2MSS3 )
                            {
                                validSEPERATS1S2MSS3 = 0;
                            }
                        }
                    }
                pifSEPERATS1S2MSS3arrayRAND[i] = pifSEPERATS1S2MSS3array[randomValueSEPERATS1S2MSS3];
                pifSEPERATS1S2MSS3arrayRANDusedInd[i] = randomValueSEPERATS1S2MSS3;
                validSEPERATS1S2MSS3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS1S2MSS4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S2MSS4 == 0 )
                    {
                        numeric randomValueSEPERATS1S2MSS4 = floor((rand(countS1S2total) + 1));      
                        validSEPERATS1S2MSS4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S2MSS4 = pifSEPERATS1S2MSS4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S2MSS4 == randomValueSEPERATS1S2MSS4 )
                            {
                                validSEPERATS1S2MSS4 = 0;
                            }
                        }
                    }
                pifSEPERATS1S2MSS4arrayRAND[i] = pifSEPERATS1S2MSS4array[randomValueSEPERATS1S2MSS4];
                pifSEPERATS1S2MSS4arrayRANDusedInd[i] = randomValueSEPERATS1S2MSS4;
                validSEPERATS1S2MSS4 = 0;
                }
            
            ###################################################
            
            	############# band 1
            
                numeric validSEPERATS1S3MSS1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S3MSS1 == 0 )
                    {
                        numeric randomValueSEPERATS1S3MSS1 = floor((rand(countS1S3total) + 1));      
                        validSEPERATS1S3MSS1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S3MSS1 = pifSEPERATS1S3MSS1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S3MSS1 == randomValueSEPERATS1S3MSS1 )
                            {
                                validSEPERATS1S3MSS1 = 0;
                            }
                        }
                    }
                pifSEPERATS1S3MSS1arrayRAND[i] = pifSEPERATS1S3MSS1array[randomValueSEPERATS1S3MSS1];
                pifSEPERATS1S3MSS1arrayRANDusedInd[i] = randomValueSEPERATS1S3MSS1;
                validSEPERATS1S3MSS1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS1S3MSS2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S3MSS2 == 0 )
                    {
                        numeric randomValueSEPERATS1S3MSS2 = floor((rand(countS1S3total) + 1));      
                        validSEPERATS1S3MSS2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S3MSS2 = pifSEPERATS1S3MSS2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S3MSS2 == randomValueSEPERATS1S3MSS2 )
                            {
                                validSEPERATS1S3MSS2 = 0;
                            }
                        }
                    }
                pifSEPERATS1S3MSS2arrayRAND[i] = pifSEPERATS1S3MSS2array[randomValueSEPERATS1S3MSS2];
                pifSEPERATS1S3MSS2arrayRANDusedInd[i] = randomValueSEPERATS1S3MSS2;
                validSEPERATS1S3MSS2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS1S3MSS3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S3MSS3 == 0 )
                    {
                        numeric randomValueSEPERATS1S3MSS3 = floor((rand(countS1S3total) + 1));      
                        validSEPERATS1S3MSS3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S3MSS3 = pifSEPERATS1S3MSS3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S3MSS3 == randomValueSEPERATS1S3MSS3 )
                            {
                                validSEPERATS1S3MSS3 = 0;
                            }
                        }
                    }
                pifSEPERATS1S3MSS3arrayRAND[i] = pifSEPERATS1S3MSS3array[randomValueSEPERATS1S3MSS3];
                pifSEPERATS1S3MSS3arrayRANDusedInd[i] = randomValueSEPERATS1S3MSS3;
                validSEPERATS1S3MSS3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS1S3MSS4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S3MSS4 == 0 )
                    {
                        numeric randomValueSEPERATS1S3MSS4 = floor((rand(countS1S3total) + 1));      
                        validSEPERATS1S3MSS4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S3MSS4 = pifSEPERATS1S3MSS4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S3MSS4 == randomValueSEPERATS1S3MSS4 )
                            {
                                validSEPERATS1S3MSS4 = 0;
                            }
                        }
                    }
                pifSEPERATS1S3MSS4arrayRAND[i] = pifSEPERATS1S3MSS4array[randomValueSEPERATS1S3MSS4];
                pifSEPERATS1S3MSS4arrayRANDusedInd[i] = randomValueSEPERATS1S3MSS4;
                validSEPERATS1S3MSS4 = 0;
                }
            
            #######################################
            
            	############# band 1
            
                numeric validSEPERATS1S4MSS1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S4MSS1 == 0 )
                    {
                        numeric randomValueSEPERATS1S4MSS1 = floor((rand(countS1S4total) + 1));      
                        validSEPERATS1S4MSS1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S4MSS1 = pifSEPERATS1S4MSS1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S4MSS1 == randomValueSEPERATS1S4MSS1 )
                            {
                                validSEPERATS1S4MSS1 = 0;
                            }
                        }
                    }
                pifSEPERATS1S4MSS1arrayRAND[i] = pifSEPERATS1S4MSS1array[randomValueSEPERATS1S4MSS1];
                pifSEPERATS1S4MSS1arrayRANDusedInd[i] = randomValueSEPERATS1S4MSS1;
                validSEPERATS1S4MSS1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS1S4MSS2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S4MSS2 == 0 )
                    {
                        numeric randomValueSEPERATS1S4MSS2 = floor((rand(countS1S4total) + 1));      
                        validSEPERATS1S4MSS2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S4MSS2 = pifSEPERATS1S4MSS2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S4MSS2 == randomValueSEPERATS1S4MSS2 )
                            {
                                validSEPERATS1S4MSS2 = 0;
                            }
                        }
                    }
                pifSEPERATS1S4MSS2arrayRAND[i] = pifSEPERATS1S4MSS2array[randomValueSEPERATS1S4MSS2];
                pifSEPERATS1S4MSS2arrayRANDusedInd[i] = randomValueSEPERATS1S4MSS2;
                validSEPERATS1S4MSS2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS1S4MSS3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S4MSS3 == 0 )
                    {
                        numeric randomValueSEPERATS1S4MSS3 = floor((rand(countS1S4total) + 1));      
                        validSEPERATS1S4MSS3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S4MSS3 = pifSEPERATS1S4MSS3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S4MSS3 == randomValueSEPERATS1S4MSS3 )
                            {
                                validSEPERATS1S4MSS3 = 0;
                            }
                        }
                    }
                pifSEPERATS1S4MSS3arrayRAND[i] = pifSEPERATS1S4MSS3array[randomValueSEPERATS1S4MSS3];
                pifSEPERATS1S4MSS3arrayRANDusedInd[i] = randomValueSEPERATS1S4MSS3;
                validSEPERATS1S4MSS3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS1S4MSS4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS1S4MSS4 == 0 )
                    {
                        numeric randomValueSEPERATS1S4MSS4 = floor((rand(countS1S4total) + 1));      
                        validSEPERATS1S4MSS4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS1S4MSS4 = pifSEPERATS1S4MSS4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS1S4MSS4 == randomValueSEPERATS1S4MSS4 )
                            {
                                validSEPERATS1S4MSS4 = 0;
                            }
                        }
                    }
                pifSEPERATS1S4MSS4arrayRAND[i] = pifSEPERATS1S4MSS4array[randomValueSEPERATS1S4MSS4];
                pifSEPERATS1S4MSS4arrayRANDusedInd[i] = randomValueSEPERATS1S4MSS4;
                validSEPERATS1S4MSS4 = 0;
                }
			}
			if ( sensors2 == 7 )
			{
			    numeric pifSEPERATS2arrayCount = 1;
            	array pifSEPERATS2slaveETM1array[countS1S2total];
            	array pifSEPERATS2slaveETM2array[countS1S2total];
            	array pifSEPERATS2slaveETM3array[countS1S2total];
            	array pifSEPERATS2slaveETM4array[countS1S2total];
            	array pifSEPERATS2slaveETM5array[countS1S2total];
            	array pifSEPERATS2slaveETM7array[countS1S2total];
            
            	array pifSEPERATS2slaveETM1arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveETM2arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveETM3arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveETM4arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveETM5arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveETM7arrayRAND[minPifVAL];
            
			    for i = 1 to ETMlins
                {
                    	for j = 1 to ETMcols
                    	{     
                            if ( S1MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                            {
                                    pifSEPERATS2slaveETM1array[pifSEPERATS2arrayCount] = REFS2ETM1[i,j];                        
                                    pifSEPERATS2slaveETM2array[pifSEPERATS2arrayCount] = REFS2ETM2[i,j];                        
                                    pifSEPERATS2slaveETM3array[pifSEPERATS2arrayCount] = REFS2ETM3[i,j];
                            		pifSEPERATS2slaveETM4array[pifSEPERATS2arrayCount] = REFS2ETM4[i,j];
                                    pifSEPERATS2slaveETM5array[pifSEPERATS2arrayCount] = REFS2ETM5[i,j];
                            		pifSEPERATS2slaveETM7array[pifSEPERATS2arrayCount] = REFS2ETM7[i,j];
                                    pifSEPERATS2arrayCount = pifSEPERATS2arrayCount + 1;
                            }
                    	}
                	  }
                	  
                ################ band 1
        if ( sensors1 == 7 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM1arrayRAND[i] = pifSEPERATS2slaveETM1array[pifSEPERATS1S2ETM1arrayRANDusedInd[i]];
		    }
		}
		
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM1arrayRAND[i] = pifSEPERATS2slaveETM1array[pifSEPERATS1S2TM1arrayRANDusedInd[i]];
		        }
		 }
                
                ################ band 2
             
            if ( sensors1 == 7 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM2arrayRAND[i] = pifSEPERATS2slaveETM2array[pifSEPERATS1S2ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM2arrayRAND[i] = pifSEPERATS2slaveETM2array[pifSEPERATS1S2TM2arrayRANDusedInd[i]];
                }
		}
                ################ band 3
            if ( sensors1 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM3arrayRAND[i] = pifSEPERATS2slaveETM3array[pifSEPERATS1S2ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM3arrayRAND[i] = pifSEPERATS2slaveETM3array[pifSEPERATS1S2TM3arrayRANDusedInd[i]];
                }
		}
		
                ################ band 4
            if ( sensors1 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM4arrayRAND[i] = pifSEPERATS2slaveETM4array[pifSEPERATS1S2ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM4arrayRAND[i] = pifSEPERATS2slaveETM4array[pifSEPERATS1S2TM4arrayRANDusedInd[i]];
                }
		}
                ################ band 5
            if ( sensors1 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM5arrayRAND[i] = pifSEPERATS2slaveETM5array[pifSEPERATS1S2ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM5arrayRAND[i] = pifSEPERATS2slaveETM5array[pifSEPERATS1S2TM5arrayRANDusedInd[i]];
                }
		}
                ################ band 7
            if ( sensors1 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM7arrayRAND[i] = pifSEPERATS2slaveETM7array[pifSEPERATS1S2ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM7arrayRAND[i] = pifSEPERATS2slaveETM7array[pifSEPERATS1S2TM7arrayRANDusedInd[i]];
                }
		}
	}
			else if ( sensors2 == 6 )
			{
			    numeric pifSEPERATS2arrayCount = 1;
            	array pifSEPERATS2slaveTM1array[countS1S2total];
            	array pifSEPERATS2slaveTM2array[countS1S2total];
            	array pifSEPERATS2slaveTM3array[countS1S2total];
            	array pifSEPERATS2slaveTM4array[countS1S2total];
            	array pifSEPERATS2slaveTM5array[countS1S2total];
            	array pifSEPERATS2slaveTM7array[countS1S2total];
            
            	array pifSEPERATS2slaveTM1arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveTM2arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveTM3arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveTM4arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveTM5arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveTM7arrayRAND[minPifVAL];
            
			 for i = 1 to TMlins
                	 {
                    	for j = 1 to TMcols
                    	{     
                            if ( S1MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                            {
                                    pifSEPERATS2slaveTM1array[pifSEPERATS2arrayCount] = REFS2TM1[i,j];                        
                                    pifSEPERATS2slaveTM2array[pifSEPERATS2arrayCount] = REFS2TM2[i,j];                        
                                    pifSEPERATS2slaveTM3array[pifSEPERATS2arrayCount] = REFS2TM3[i,j];
                            		pifSEPERATS2slaveTM4array[pifSEPERATS2arrayCount] = REFS2TM4[i,j];
                                    pifSEPERATS2slaveTM5array[pifSEPERATS2arrayCount] = REFS2TM5[i,j];
                            		pifSEPERATS2slaveTM7array[pifSEPERATS2arrayCount] = REFS2TM7[i,j];
                                    pifSEPERATS2arrayCount = pifSEPERATS2arrayCount + 1;
                            }
                    	}
                	  }
                	  
                ################ band 1
        
            if ( sensors1 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM1arrayRAND[i] = pifSEPERATS2slaveTM1array[pifSEPERATS1S2ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM1arrayRAND[i] = pifSEPERATS2slaveTM1array[pifSEPERATS1S2TM1arrayRANDusedInd[i]];
                }
		}
                
                ################ band 2
            if ( sensors1 == 7 )
		{                          
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM2arrayRAND[i] = pifSEPERATS2slaveTM2array[pifSEPERATS1S2ETM2arrayRANDusedInd[i]];
                }
		}
            else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM2arrayRAND[i] = pifSEPERATS2slaveTM2array[pifSEPERATS1S2TM2arrayRANDusedInd[i]];
                }
		}
                ################ band 3
            if ( sensors1 == 7 )
		{                                       
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM3arrayRAND[i] = pifSEPERATS2slaveTM3array[pifSEPERATS1S2ETM3arrayRANDusedInd[i]];
                }
		}
            else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM3arrayRAND[i] = pifSEPERATS2slaveTM3array[pifSEPERATS1S2TM3arrayRANDusedInd[i]];
                }
		}
                ################ band 4
            if ( sensors1 == 7 )
		{                                       
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM4arrayRAND[i] = pifSEPERATS2slaveTM4array[pifSEPERATS1S2ETM4arrayRANDusedInd[i]];
                }
		}
            else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM4arrayRAND[i] = pifSEPERATS2slaveTM4array[pifSEPERATS1S2TM4arrayRANDusedInd[i]];
                }
		}
                ################ band 5
            if ( sensors1 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM5arrayRAND[i] = pifSEPERATS2slaveTM5array[pifSEPERATS1S2ETM5arrayRANDusedInd[i]];
                }
		}
            else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM5arrayRAND[i] = pifSEPERATS2slaveTM5array[pifSEPERATS1S2TM5arrayRANDusedInd[i]];
                }                                     
		}
                ################ band 7
            if ( sensors1 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM7arrayRAND[i] = pifSEPERATS2slaveTM7array[pifSEPERATS1S2ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM7arrayRAND[i] = pifSEPERATS2slaveTM7array[pifSEPERATS1S2TM7arrayRANDusedInd[i]];
                }
		}
	}
			else
			{
			numeric pifSEPERATS2arrayCount = 1;
            	array pifSEPERATS2slaveMSS1array[countS1S2total];
            	array pifSEPERATS2slaveMSS2array[countS1S2total];
            	array pifSEPERATS2slaveMSS3array[countS1S2total];
            	array pifSEPERATS2slaveMSS4array[countS1S2total];
            
            	array pifSEPERATS2slaveMSS1arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveMSS2arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveMSS3arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveMSS4arrayRAND[minPifVAL];
            
            	            
			  for i = 1 to MSSlins
                	  {
                    	for j = 1 to MSScols
                    	{     
                            if ( S1MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                            {
                                    pifSEPERATS2slaveMSS1array[pifSEPERATS2arrayCount] = REFS2MSS1[i,j];                        
                                    pifSEPERATS2slaveMSS2array[pifSEPERATS2arrayCount] = REFS2MSS2[i,j];                        
                                    pifSEPERATS2slaveMSS3array[pifSEPERATS2arrayCount] = REFS2MSS3[i,j];
                            		pifSEPERATS2slaveMSS4array[pifSEPERATS2arrayCount] = REFS2MSS4[i,j];
                                    pifSEPERATS2arrayCount = pifSEPERATS2arrayCount + 1;
                            }
                    	}
                	  }
                	  
                ################ band 1
		if ( sensors1 == 7 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS1arrayRAND[i] = pifSEPERATS2slaveMSS1array[pifSEPERATS1S2ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS1arrayRAND[i] = pifSEPERATS2slaveMSS1array[pifSEPERATS1S2TM2arrayRANDusedInd[i]];
                }
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS1arrayRAND[i] = pifSEPERATS2slaveMSS1array[pifSEPERATS1S2MSS1arrayRANDusedInd[i]];
                }
		}
                
                ################ band 2
		if ( sensors1 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS2arrayRAND[i] = pifSEPERATS2slaveMSS2array[pifSEPERATS1S2ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS2arrayRAND[i] = pifSEPERATS2slaveMSS2array[pifSEPERATS1S2TM3arrayRANDusedInd[i]];
                }
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS2arrayRAND[i] = pifSEPERATS2slaveMSS2array[pifSEPERATS1S2MSS2arrayRANDusedInd[i]];
                }
		}
                
                ################ band 3
             
        if ( sensors1 == 5 or sensors1 == 4 or sensors1 == 3 or sensors1 == 2 or sensors1 == 1 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS3arrayRAND[i] = pifSEPERATS2slaveMSS3array[pifSEPERATS1S2MSS3arrayRANDusedInd[i]];
                }
		}          
                
                ################ band 4
		if ( sensors1 == 7 )
		{                          
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS4arrayRAND[i] = pifSEPERATS2slaveMSS4array[pifSEPERATS1S2ETM4arrayRANDusedInd[i]];
                }
        }
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS4arrayRAND[i] = pifSEPERATS2slaveMSS4array[pifSEPERATS1S2TM4arrayRANDusedInd[i]];
                }
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS4arrayRAND[i] = pifSEPERATS2slaveMSS4array[pifSEPERATS1S2MSS4arrayRANDusedInd[i]];
                }
		}
	}
			if ( sensors3 == 7 )
			{
			numeric pifSEPERATS3arrayCount = 1;
            	array pifSEPERATS3slaveETM1array[countS1S3total];
            	array pifSEPERATS3slaveETM2array[countS1S3total];
            	array pifSEPERATS3slaveETM3array[countS1S3total];
            	array pifSEPERATS3slaveETM4array[countS1S3total];
            	array pifSEPERATS3slaveETM5array[countS1S3total];
            	array pifSEPERATS3slaveETM7array[countS1S3total];
            
            	array pifSEPERATS3slaveETM1arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveETM2arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveETM3arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveETM4arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveETM5arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveETM7arrayRAND[minPifVAL];
            
			  for i = 1 to ETMlins
                	  {
                    	for j = 1 to ETMcols
                    	{     
                            if ( S1MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                            {
                                    pifSEPERATS3slaveETM1array[pifSEPERATS3arrayCount] = REFS3ETM1[i,j];
                                    pifSEPERATS3slaveETM2array[pifSEPERATS3arrayCount] = REFS3ETM2[i,j]; 
                                    pifSEPERATS3slaveETM3array[pifSEPERATS3arrayCount] = REFS3ETM3[i,j];
                            		pifSEPERATS3slaveETM4array[pifSEPERATS3arrayCount] = REFS3ETM4[i,j];
                                    pifSEPERATS3slaveETM5array[pifSEPERATS3arrayCount] = REFS3ETM5[i,j];
                            		pifSEPERATS3slaveETM7array[pifSEPERATS3arrayCount] = REFS3ETM7[i,j];
                                    pifSEPERATS3arrayCount = pifSEPERATS3arrayCount + 1;
                            }
                    	}
                	  }
                	  
                ################ band 1
		if ( sensors1 == 7 )
		{                                       
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM1arrayRAND[i] = pifSEPERATS3slaveETM1array[pifSEPERATS1S3ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM1arrayRAND[i] = pifSEPERATS3slaveETM1array[pifSEPERATS1S3TM1arrayRANDusedInd[i]];
                }                        
		}
                
                ################ band 2
		if ( sensors1 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM2arrayRAND[i] = pifSEPERATS3slaveETM2array[pifSEPERATS1S3ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM2arrayRAND[i] = pifSEPERATS3slaveETM2array[pifSEPERATS1S3TM2arrayRANDusedInd[i]];
                }
		}
                ################ band 3
		if ( sensors1 == 7 )
		{                                                                 
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM3arrayRAND[i] = pifSEPERATS3slaveETM3array[pifSEPERATS1S3ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM3arrayRAND[i] = pifSEPERATS3slaveETM3array[pifSEPERATS1S3TM3arrayRANDusedInd[i]];
                }                                                   
		}
                ################ band 4
		if ( sensors1 == 7 )
		{                                                                              
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM4arrayRAND[i] = pifSEPERATS3slaveETM4array[pifSEPERATS1S3ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM4arrayRAND[i] = pifSEPERATS3slaveETM4array[pifSEPERATS1S3TM4arrayRANDusedInd[i]];
                }                                                                 
		}
                ################ band 5
		if ( sensors1 == 7 )
		{                                                                                           
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM5arrayRAND[i] = pifSEPERATS3slaveETM5array[pifSEPERATS1S3ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM5arrayRAND[i] = pifSEPERATS3slaveETM5array[pifSEPERATS1S3TM5arrayRANDusedInd[i]];
                }                                                                            
		}
                ################ band 7
		if ( sensors1 == 7 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM7arrayRAND[i] = pifSEPERATS3slaveETM7array[pifSEPERATS1S3ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM7arrayRAND[i] = pifSEPERATS3slaveETM7array[pifSEPERATS1S3TM7arrayRANDusedInd[i]];
                }                                                                                           
		}
	}
			else if ( sensors3 == 6 )
			{
			numeric pifSEPERATS3arrayCount = 1;
            	array pifSEPERATS3slaveTM1array[countS1S3total];
            	array pifSEPERATS3slaveTM2array[countS1S3total];
            	array pifSEPERATS3slaveTM3array[countS1S3total];
            	array pifSEPERATS3slaveTM4array[countS1S3total];
            	array pifSEPERATS3slaveTM5array[countS1S3total];
            	array pifSEPERATS3slaveTM7array[countS1S3total];
            
            	array pifSEPERATS3slaveTM1arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveTM2arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveTM3arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveTM4arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveTM5arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveTM7arrayRAND[minPifVAL];
            
			for i = 1 to TMlins
        	      {
                    	for j = 1 to TMcols
                    	{     
                            if ( S1MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                            {
                                    pifSEPERATS3slaveTM1array[pifSEPERATS3arrayCount] = REFS3TM1[i,j];                        
                                    pifSEPERATS3slaveTM2array[pifSEPERATS3arrayCount] = REFS3TM2[i,j];                        
                                    pifSEPERATS3slaveTM3array[pifSEPERATS3arrayCount] = REFS3TM3[i,j];
                            		pifSEPERATS3slaveTM4array[pifSEPERATS3arrayCount] = REFS3TM4[i,j];
                                    pifSEPERATS3slaveTM5array[pifSEPERATS3arrayCount] = REFS3TM5[i,j];
                            		pifSEPERATS3slaveTM7array[pifSEPERATS3arrayCount] = REFS3TM7[i,j];
                                    pifSEPERATS3arrayCount = pifSEPERATS3arrayCount + 1;
                            }
                    	}
                	  }
                	  
                ################ band 1
		if ( sensors1 == 7 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM1arrayRAND[i] = pifSEPERATS3slaveTM1array[pifSEPERATS1S3ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM1arrayRAND[i] = pifSEPERATS3slaveTM1array[pifSEPERATS1S3TM1arrayRANDusedInd[i]];
                }
		} 
               
                ################ band 2
             
		if ( sensors1 == 7 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM2arrayRAND[i] = pifSEPERATS3slaveTM2array[pifSEPERATS1S3ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM2arrayRAND[i] = pifSEPERATS3slaveTM2array[pifSEPERATS1S3TM2arrayRANDusedInd[i]];
                }
		}
                ################ band 3
             
		if ( sensors1 == 7 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM3arrayRAND[i] = pifSEPERATS3slaveTM3array[pifSEPERATS1S3ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM3arrayRAND[i] = pifSEPERATS3slaveTM3array[pifSEPERATS1S3TM3arrayRANDusedInd[i]];
                }
		}
                ################ band 4
             
		if ( sensors1 == 7 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM4arrayRAND[i] = pifSEPERATS3slaveTM4array[pifSEPERATS1S3ETM4arrayRANDusedInd[i]];
                }
             }
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM4arrayRAND[i] = pifSEPERATS3slaveTM4array[pifSEPERATS1S3TM4arrayRANDusedInd[i]];
                }
		}
                ################ band 5
             
		if ( sensors1 == 7 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM5arrayRAND[i] = pifSEPERATS3slaveTM5array[pifSEPERATS1S3ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM5arrayRAND[i] = pifSEPERATS3slaveTM5array[pifSEPERATS1S3TM5arrayRANDusedInd[i]];
                }
		}
                ################ band 7
		if ( sensors1 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM7arrayRAND[i] = pifSEPERATS3slaveTM7array[pifSEPERATS1S3ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM7arrayRAND[i] = pifSEPERATS3slaveTM7array[pifSEPERATS1S3TM7arrayRANDusedInd[i]];
                }
		}
	}
			else
			{
			numeric pifSEPERATS3arrayCount = 1;
            	array pifSEPERATS3slaveMSS1array[countS1S3total];
            	array pifSEPERATS3slaveMSS2array[countS1S3total];
            	array pifSEPERATS3slaveMSS3array[countS1S3total];
            	array pifSEPERATS3slaveMSS4array[countS1S3total];
            
            	array pifSEPERATS3slaveMSS1arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveMSS2arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveMSS3arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveMSS4arrayRAND[minPifVAL];
            
			  for i = 1 to TMlins
                	  {
                    	for j = 1 to TMcols
                    	{     
                            if ( S1MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                            {
                                    pifSEPERATS3slaveMSS1array[pifSEPERATS3arrayCount] = REFS3MSS1[i,j];                        
                                    pifSEPERATS3slaveMSS2array[pifSEPERATS3arrayCount] = REFS3MSS2[i,j];                        
                                    pifSEPERATS3slaveMSS3array[pifSEPERATS3arrayCount] = REFS3MSS3[i,j];
                            		pifSEPERATS3slaveMSS4array[pifSEPERATS3arrayCount] = REFS3MSS4[i,j];
                                    pifSEPERATS3arrayCount = pifSEPERATS3arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors1 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS1arrayRAND[i] = pifSEPERATS3slaveMSS1array[pifSEPERATS1S3ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS1arrayRAND[i] = pifSEPERATS3slaveMSS1array[pifSEPERATS1S3TM2arrayRANDusedInd[i]];
                }           
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS1arrayRAND[i] = pifSEPERATS3slaveMSS1array[pifSEPERATS1S3MSS1arrayRANDusedInd[i]];
                }           
		}
                
                ################ band 2
             
		if ( sensors1 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS2arrayRAND[i] = pifSEPERATS3slaveMSS2array[pifSEPERATS1S3ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS2arrayRAND[i] = pifSEPERATS3slaveMSS2array[pifSEPERATS1S3TM3arrayRANDusedInd[i]];
                }
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS2arrayRAND[i] = pifSEPERATS3slaveMSS2array[pifSEPERATS1S3MSS2arrayRANDusedInd[i]];
                }
		}             
                
                ################ band 3
        if ( sensors1 == 5 or sensors1 == 4 or sensors1 == 3 or sensors1 == 2 or sensors1 == 1 )
		{                          
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS3arrayRAND[i] = pifSEPERATS3slaveMSS3array[pifSEPERATS1S3MSS3arrayRANDusedInd[i]];
                }
		}
                
                ################ band 4
		if ( sensors1 == 7 )
		{                                       
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS4arrayRAND[i] = pifSEPERATS3slaveMSS4array[pifSEPERATS1S3ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS4arrayRAND[i] = pifSEPERATS3slaveMSS4array[pifSEPERATS1S3TM4arrayRANDusedInd[i]];
                }                          
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS4arrayRAND[i] = pifSEPERATS3slaveMSS4array[pifSEPERATS1S3MSS4arrayRANDusedInd[i]];
                }
		}
	}
			if ( sensors4 == 7 )
			{
			numeric pifSEPERATS4arrayCount = 1;
            	array pifSEPERATS4slaveETM1array[countS1S4total];
            	array pifSEPERATS4slaveETM2array[countS1S4total];
            	array pifSEPERATS4slaveETM3array[countS1S4total];
            	array pifSEPERATS4slaveETM4array[countS1S4total];
            	array pifSEPERATS4slaveETM5array[countS1S4total];
            	array pifSEPERATS4slaveETM7array[countS1S4total];
            
            	array pifSEPERATS4slaveETM1arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveETM2arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveETM3arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveETM4arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveETM5arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveETM7arrayRAND[minPifVAL];
            
			  for i = 1 to ETMlins
                	  {
                    	for j = 1 to ETMcols
                    	{     
                            if ( S1MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                            {
                                    pifSEPERATS4slaveETM1array[pifSEPERATS4arrayCount] = REFS4ETM1[i,j];
                                    pifSEPERATS4slaveETM2array[pifSEPERATS4arrayCount] = REFS4ETM2[i,j]; 
                                    pifSEPERATS4slaveETM3array[pifSEPERATS4arrayCount] = REFS4ETM3[i,j];
                            		pifSEPERATS4slaveETM4array[pifSEPERATS4arrayCount] = REFS4ETM4[i,j];
                                    pifSEPERATS4slaveETM5array[pifSEPERATS4arrayCount] = REFS4ETM5[i,j];
                            		pifSEPERATS4slaveETM7array[pifSEPERATS4arrayCount] = REFS4ETM7[i,j];
                                    pifSEPERATS4arrayCount = pifSEPERATS4arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors1 == 7 )
		{                                       
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM1arrayRAND[i] = pifSEPERATS4slaveETM1array[pifSEPERATS1S4ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM1arrayRAND[i] = pifSEPERATS4slaveETM1array[pifSEPERATS1S4TM1arrayRANDusedInd[i]];
                }                                       
		}
                ################ band 2
             
		if ( sensors1 == 7 )
		{                                       
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM2arrayRAND[i] = pifSEPERATS4slaveETM2array[pifSEPERATS1S4ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM2arrayRAND[i] = pifSEPERATS4slaveETM2array[pifSEPERATS1S4TM2arrayRANDusedInd[i]];
                }                                       
		}
                ################ band 3
             
		if ( sensors1 == 7 )
		{                                       
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM3arrayRAND[i] = pifSEPERATS4slaveETM3array[pifSEPERATS1S4ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM3arrayRAND[i] = pifSEPERATS4slaveETM3array[pifSEPERATS1S4TM3arrayRANDusedInd[i]];
                }                                      
		}
                ################ band 4
             
		if ( sensors1 == 7 )
		{                                       
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM4arrayRAND[i] = pifSEPERATS4slaveETM4array[pifSEPERATS1S4ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM4arrayRAND[i] = pifSEPERATS4slaveETM4array[pifSEPERATS1S4TM4arrayRANDusedInd[i]];
                }                                     
		}
                ################ band 5
             
		if ( sensors1 == 7 )
		{                                       
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM5arrayRAND[i] = pifSEPERATS4slaveETM5array[pifSEPERATS1S4ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM5arrayRAND[i] = pifSEPERATS4slaveETM5array[pifSEPERATS1S4TM5arrayRANDusedInd[i]];
                }                                      
		}
                ################ band 7
		if ( sensors1 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM7arrayRAND[i] = pifSEPERATS4slaveETM7array[pifSEPERATS1S4ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM7arrayRAND[i] = pifSEPERATS4slaveETM7array[pifSEPERATS1S4TM7arrayRANDusedInd[i]];
                }                                     
		}
	}
			else if ( sensors4 == 6 )
			{
			numeric pifSEPERATS4arrayCount = 1;
            	array pifSEPERATS4slaveTM1array[countS1S4total];
            	array pifSEPERATS4slaveTM2array[countS1S4total];
            	array pifSEPERATS4slaveTM3array[countS1S4total];
            	array pifSEPERATS4slaveTM4array[countS1S4total];
            	array pifSEPERATS4slaveTM5array[countS1S4total];
            	array pifSEPERATS4slaveTM7array[countS1S4total];
            
            	array pifSEPERATS4slaveTM1arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveTM2arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveTM3arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveTM4arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveTM5arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveTM7arrayRAND[minPifVAL];
            
			  for i = 1 to TMlins
                	  {
                    	for j = 1 to TMcols
                    	{     
                            if ( S1MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                            {
                                    pifSEPERATS4slaveTM1array[pifSEPERATS4arrayCount] = REFS4TM1[i,j];
                                    pifSEPERATS4slaveTM2array[pifSEPERATS4arrayCount] = REFS4TM2[i,j]; 
                                    pifSEPERATS4slaveTM3array[pifSEPERATS4arrayCount] = REFS4TM3[i,j];
                            		pifSEPERATS4slaveTM4array[pifSEPERATS4arrayCount] = REFS4TM4[i,j];
                                    pifSEPERATS4slaveTM5array[pifSEPERATS4arrayCount] = REFS4TM5[i,j];
                            		pifSEPERATS4slaveTM7array[pifSEPERATS4arrayCount] = REFS4TM7[i,j];
                                    pifSEPERATS4arrayCount = pifSEPERATS4arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors1 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM1arrayRAND[i] = pifSEPERATS4slaveTM1array[pifSEPERATS1S4ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM1arrayRAND[i] = pifSEPERATS4slaveTM1array[pifSEPERATS1S4TM1arrayRANDusedInd[i]];
                }                                                  
		}
                ################ band 2
             
		if ( sensors1 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM2arrayRAND[i] = pifSEPERATS4slaveTM2array[pifSEPERATS1S4ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{     
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM2arrayRAND[i] = pifSEPERATS4slaveTM2array[pifSEPERATS1S4TM2arrayRANDusedInd[i]];
                }                                               
		}
                ################ band 3
             
		if ( sensors1 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM3arrayRAND[i] = pifSEPERATS4slaveTM3array[pifSEPERATS1S4ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM3arrayRAND[i] = pifSEPERATS4slaveTM3array[pifSEPERATS1S4TM3arrayRANDusedInd[i]];
                }                                                 
		}
                ################ band 4
             
		if ( sensors1 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM4arrayRAND[i] = pifSEPERATS4slaveTM4array[pifSEPERATS1S4ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM4arrayRAND[i] = pifSEPERATS4slaveTM4array[pifSEPERATS1S4TM4arrayRANDusedInd[i]];
                }                                                 
		}
                ################ band 5
             
		if ( sensors1 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM5arrayRAND[i] = pifSEPERATS4slaveTM5array[pifSEPERATS1S4ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM5arrayRAND[i] = pifSEPERATS4slaveTM5array[pifSEPERATS1S4TM5arrayRANDusedInd[i]];
                }                                                    
		}
                ################ band 7
             
		if ( sensors1 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM7arrayRAND[i] = pifSEPERATS4slaveTM7array[pifSEPERATS1S4ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{      
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM7arrayRAND[i] = pifSEPERATS4slaveTM7array[pifSEPERATS1S4TM7arrayRANDusedInd[i]];
                }                                              
		}
	}
			else
			{
			numeric pifSEPERATS4arrayCount = 1;
            	array pifSEPERATS4slaveMSS1array[countS1S4total];
            	array pifSEPERATS4slaveMSS2array[countS1S4total];
            	array pifSEPERATS4slaveMSS3array[countS1S4total];
            	array pifSEPERATS4slaveMSS4array[countS1S4total];
            
            	array pifSEPERATS4slaveMSS1arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveMSS2arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveMSS3arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveMSS4arrayRAND[minPifVAL];
            
			  for i = 1 to MSSlins
                	  {
                    	for j = 1 to MSScols
                    	{     
                            if ( S1MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                            {
                                    pifSEPERATS4slaveMSS1array[pifSEPERATS4arrayCount] = REFS4MSS1[i,j];
                                    pifSEPERATS4slaveMSS2array[pifSEPERATS4arrayCount] = REFS4MSS2[i,j]; 
                                    pifSEPERATS4slaveMSS3array[pifSEPERATS4arrayCount] = REFS4MSS3[i,j];
                            		pifSEPERATS4slaveMSS4array[pifSEPERATS4arrayCount] = REFS4MSS4[i,j];
                                    pifSEPERATS4arrayCount = pifSEPERATS4arrayCount + 1;
                            }
                    	}
                	  }
                	  
                ################ band 1
             
		if ( sensors1 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS1arrayRAND[i] = pifSEPERATS4slaveMSS1array[pifSEPERATS1S4ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS1arrayRAND[i] = pifSEPERATS4slaveMSS1array[pifSEPERATS1S4TM2arrayRANDusedInd[i]];
                }                                                 
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS1arrayRAND[i] = pifSEPERATS4slaveMSS1array[pifSEPERATS1S4MSS1arrayRANDusedInd[i]];
                }
		}
                
                ################ band 2
             
		if ( sensors1 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS2arrayRAND[i] = pifSEPERATS4slaveMSS2array[pifSEPERATS1S4ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS2arrayRAND[i] = pifSEPERATS4slaveMSS2array[pifSEPERATS1S4TM3arrayRANDusedInd[i]];
                }                                                  
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS2arrayRAND[i] = pifSEPERATS4slaveMSS2array[pifSEPERATS1S4MSS2arrayRANDusedInd[i]];
                }
		}
                
                ################ band 3
             
        if ( sensors1 == 5 or sensors1 == 4 or sensors1 == 3 or sensors1 == 2 or sensors1 == 1 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS3arrayRAND[i] = pifSEPERATS4slaveMSS3array[pifSEPERATS1S4MSS3arrayRANDusedInd[i]];
                }
		}
                
                ################ band 4
             
		if ( sensors1 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS4arrayRAND[i] = pifSEPERATS4slaveMSS4array[pifSEPERATS1S4ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors1 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS4arrayRAND[i] = pifSEPERATS4slaveMSS4array[pifSEPERATS1S4TM4arrayRANDusedInd[i]];
                }                                                   
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS4arrayRAND[i] = pifSEPERATS4slaveMSS4array[pifSEPERATS1S4MSS4arrayRANDusedInd[i]];
                }
		}
	  }
	}
            if ( pifSEPERATS1S2arrayCount < minPifVAL )
            {
               printf("For the PIF mask combination Scene 1 and Scene 2 %5i pixels were needed, but only %5i were found.\n", minPifVAL, pifSEPERATS1S2arrayCount);
            }
            
            if ( pifSEPERATS1S3arrayCount < minPifVAL )
            {
               printf("For the PIF mask combination Scene 1 and Scene 3 %5i pixels were needed, but only %5i were found.\n", minPifVAL, pifSEPERATS1S3arrayCount);
            }
            
            if ( pifSEPERATS1S4arrayCount < minPifVAL )
            {
               printf("For the PIF mask combination Scene 1 and Scene 4 %5i pixels were needed, but only %5i were found.\n", minPifVAL, pifSEPERATS1S4arrayCount);
            }
            if ( pifSEPERATS1S2arrayCount < minPifVAL && pifSEPERATS1S3arrayCount < minPifVAL && pifSEPERATS1S4arrayCount < minPifVAL )
            {
                printf("All PIF-masks have a smaller pixelcount than minPifVAL requires... %5i pixels are needed for each raster... Quitting...\n\n", minPifVAL);
                Exit();
            }
    }
    
    else if ( slaveMaster == 2 )
    {
	    if ( countS2S1total >= minPifVAL && countS2S3total >= minPifVAL && countS2S4total >= minPifVAL )
          {
			if ( sensors2 == 7 )
			{
			numeric pifSEPERATS2S1arrayCount = 1;
			numeric pifSEPERATS2S3arrayCount = 1;
			numeric pifSEPERATS2S4arrayCount = 1;
            	array pifSEPERATS2S1ETM1array[countS2S1total];
            	array pifSEPERATS2S1ETM2array[countS2S1total];
            	array pifSEPERATS2S1ETM3array[countS2S1total];
            	array pifSEPERATS2S1ETM4array[countS2S1total];
            	array pifSEPERATS2S1ETM5array[countS2S1total];
            	array pifSEPERATS2S1ETM7array[countS2S1total];
            
            	array pifSEPERATS2S1ETM1arrayRAND[minPifVAL];
                array pifSEPERATS2S1ETM2arrayRAND[minPifVAL];
                array pifSEPERATS2S1ETM3arrayRAND[minPifVAL];
                array pifSEPERATS2S1ETM4arrayRAND[minPifVAL];
                array pifSEPERATS2S1ETM5arrayRAND[minPifVAL];
                array pifSEPERATS2S1ETM7arrayRAND[minPifVAL];
    
                array pifSEPERATS2S1ETM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S1ETM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S1ETM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S1ETM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S1ETM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S1ETM7arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS2S3ETM1array[countS2S3total];
            	array pifSEPERATS2S3ETM2array[countS2S3total];
            	array pifSEPERATS2S3ETM3array[countS2S3total];
            	array pifSEPERATS2S3ETM4array[countS2S3total];
            	array pifSEPERATS2S3ETM5array[countS2S3total];
            	array pifSEPERATS2S3ETM7array[countS2S3total];
            
            	array pifSEPERATS2S3ETM1arrayRAND[minPifVAL];
                array pifSEPERATS2S3ETM2arrayRAND[minPifVAL];
                array pifSEPERATS2S3ETM3arrayRAND[minPifVAL];
                array pifSEPERATS2S3ETM4arrayRAND[minPifVAL];
                array pifSEPERATS2S3ETM5arrayRAND[minPifVAL];
                array pifSEPERATS2S3ETM7arrayRAND[minPifVAL];
    
                array pifSEPERATS2S3ETM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S3ETM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S3ETM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S3ETM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S3ETM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S3ETM7arrayRANDusedInd[minPifVAL];
                
            	array pifSEPERATS2S4ETM1array[countS2S4total];
            	array pifSEPERATS2S4ETM2array[countS2S4total];
            	array pifSEPERATS2S4ETM3array[countS2S4total];
            	array pifSEPERATS2S4ETM4array[countS2S4total];
            	array pifSEPERATS2S4ETM5array[countS2S4total];
            	array pifSEPERATS2S4ETM7array[countS2S4total];
            
            	array pifSEPERATS2S4ETM1arrayRAND[minPifVAL];
                array pifSEPERATS2S4ETM2arrayRAND[minPifVAL];
                array pifSEPERATS2S4ETM3arrayRAND[minPifVAL];
                array pifSEPERATS2S4ETM4arrayRAND[minPifVAL];
                array pifSEPERATS2S4ETM5arrayRAND[minPifVAL];
                array pifSEPERATS2S4ETM7arrayRAND[minPifVAL];
    
                array pifSEPERATS2S4ETM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S4ETM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S4ETM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S4ETM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S4ETM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S4ETM7arrayRANDusedInd[minPifVAL];
                	  for i = 1 to ETMlins
                	  {
                    	for j = 1 to ETMcols
                    	{     
                            if ( S2MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS2S1ETM1array[pifSEPERATS2S1arrayCount] = REFS2ETM1[i,j];                        
                                        pifSEPERATS2S1ETM2array[pifSEPERATS2S1arrayCount] = REFS2ETM2[i,j];                        
                                    pifSEPERATS2S1ETM3array[pifSEPERATS2S1arrayCount] = REFS2ETM3[i,j];
                            pifSEPERATS2S1ETM4array[pifSEPERATS2S1arrayCount] = REFS2ETM4[i,j];
                                    pifSEPERATS2S1ETM5array[pifSEPERATS2S1arrayCount] = REFS2ETM5[i,j];
                            pifSEPERATS2S1ETM7array[pifSEPERATS2S1arrayCount] = REFS2ETM7[i,j];
                                    pifSEPERATS2S1arrayCount = pifSEPERATS2S1arrayCount + 1;
                            }
        
                            if ( S2MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                            {
                            pifSEPERATS2S3ETM1array[pifSEPERATS2S3arrayCount] = REFS2ETM1[i,j];                        
                                        pifSEPERATS2S3ETM2array[pifSEPERATS2S3arrayCount] = REFS2ETM2[i,j];                        
                                    pifSEPERATS2S3ETM3array[pifSEPERATS2S3arrayCount] = REFS2ETM3[i,j];
                            pifSEPERATS2S3ETM4array[pifSEPERATS2S3arrayCount] = REFS2ETM4[i,j];
                                    pifSEPERATS2S3ETM5array[pifSEPERATS2S3arrayCount] = REFS2ETM5[i,j];
                            pifSEPERATS2S3ETM7array[pifSEPERATS2S3arrayCount] = REFS2ETM7[i,j];
                            pifSEPERATS2S3arrayCount = pifSEPERATS2S3arrayCount + 1;
                            }
        
                            if ( S2MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                            {
                            pifSEPERATS2S4ETM1array[pifSEPERATS2S4arrayCount] = REFS2ETM1[i,j];                        
                                        pifSEPERATS2S4ETM2array[pifSEPERATS2S4arrayCount] = REFS2ETM2[i,j];                        
                                    pifSEPERATS2S4ETM3array[pifSEPERATS2S4arrayCount] = REFS2ETM3[i,j];
                            pifSEPERATS2S4ETM4array[pifSEPERATS2S4arrayCount] = REFS2ETM4[i,j];
                                    pifSEPERATS2S4ETM5array[pifSEPERATS2S4arrayCount] = REFS2ETM5[i,j];
                            pifSEPERATS2S4ETM7array[pifSEPERATS2S4arrayCount] = REFS2ETM7[i,j];
                            pifSEPERATS2S4arrayCount = pifSEPERATS2S4arrayCount + 1;
                            }
                    	}
                	  }
            
            ############# band 1
            
                numeric validSEPERATS2S1ETM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S1ETM1 == 0 )
                    {
                        numeric randomValueSEPERATS2S1ETM1 = floor((rand(countS2S1total) + 1));      
                        validSEPERATS2S1ETM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S1ETM1 = pifSEPERATS2S1ETM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S1ETM1 == randomValueSEPERATS2S1ETM1 )
                            {
                                validSEPERATS2S1ETM1 = 0;
                            }
                        }
                    }
                pifSEPERATS2S1ETM1arrayRAND[i] = pifSEPERATS2S1ETM1array[randomValueSEPERATS2S1ETM1];
                pifSEPERATS2S1ETM1arrayRANDusedInd[i] = randomValueSEPERATS2S1ETM1;
                validSEPERATS2S1ETM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS2S1ETM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S1ETM2 == 0 )
                    {
                        numeric randomValueSEPERATS2S1ETM2 = floor((rand(countS2S1total) + 1));      
                        validSEPERATS2S1ETM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S1ETM2 = pifSEPERATS2S1ETM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S1ETM2 == randomValueSEPERATS2S1ETM2 )
                            {
                                validSEPERATS2S1ETM2 = 0;
                            }
                        }
                    }
                pifSEPERATS2S1ETM2arrayRAND[i] = pifSEPERATS2S1ETM2array[randomValueSEPERATS2S1ETM2];
                pifSEPERATS2S1ETM2arrayRANDusedInd[i] = randomValueSEPERATS2S1ETM2;
                validSEPERATS2S1ETM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS2S1ETM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S1ETM3 == 0 )
                    {
                        numeric randomValueSEPERATS2S1ETM3 = floor((rand(countS2S1total) + 1));      
                        validSEPERATS2S1ETM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S1ETM3 = pifSEPERATS2S1ETM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S1ETM3 == randomValueSEPERATS2S1ETM3 )
                            {
                                validSEPERATS2S1ETM3 = 0;
                            }
                        }
                    }
                pifSEPERATS2S1ETM3arrayRAND[i] = pifSEPERATS2S1ETM3array[randomValueSEPERATS2S1ETM3];
                pifSEPERATS2S1ETM3arrayRANDusedInd[i] = randomValueSEPERATS2S1ETM3;
                validSEPERATS2S1ETM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS2S1ETM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S1ETM4 == 0 )
                    {
                        numeric randomValueSEPERATS2S1ETM4 = floor((rand(countS2S1total) + 1));      
                        validSEPERATS2S1ETM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S1ETM4 = pifSEPERATS2S1ETM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S1ETM4 == randomValueSEPERATS2S1ETM4 )
                            {
                                validSEPERATS2S1ETM4 = 0;
                            }
                        }
                    }
                pifSEPERATS2S1ETM4arrayRAND[i] = pifSEPERATS2S1ETM4array[randomValueSEPERATS2S1ETM4];
                pifSEPERATS2S1ETM4arrayRANDusedInd[i] = randomValueSEPERATS2S1ETM4;
                validSEPERATS2S1ETM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS2S1ETM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S1ETM5 == 0 )
                    {
                        numeric randomValueSEPERATS2S1ETM5 = floor((rand(countS2S1total) + 1));      
                        validSEPERATS2S1ETM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S1ETM5 = pifSEPERATS2S1ETM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S1ETM5 == randomValueSEPERATS2S1ETM5 )
                            {
                                validSEPERATS2S1ETM5 = 0;
                            }
                        }
                    }
                pifSEPERATS2S1ETM5arrayRAND[i] = pifSEPERATS2S1ETM5array[randomValueSEPERATS2S1ETM5];
                pifSEPERATS2S1ETM5arrayRANDusedInd[i] = randomValueSEPERATS2S1ETM5;
                validSEPERATS2S1ETM5 = 0;
                }
            
            ################ band 7
                
                numeric validSEPERATS2S1ETM7 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S1ETM7 == 0 )
                    {
                        numeric randomValueSEPERATS2S1ETM7 = floor((rand(countS2S1total) + 1));      
                        validSEPERATS2S1ETM7 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S1ETM7 = pifSEPERATS2S1ETM7arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S1ETM7 == randomValueSEPERATS2S1ETM7 )
                            {
                                validSEPERATS2S1ETM7 = 0;
                            }
                        }
                    }
                pifSEPERATS2S1ETM7arrayRAND[i] = pifSEPERATS2S1ETM7array[randomValueSEPERATS2S1ETM7];
                pifSEPERATS2S1ETM7arrayRANDusedInd[i] = randomValueSEPERATS2S1ETM7;
                validSEPERATS2S1ETM7 = 0;
                }
            
            
            ###################################################
            
            	############# band 1
            
                numeric validSEPERATS2S3ETM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S3ETM1 == 0 )
                    {
                        numeric randomValueSEPERATS2S3ETM1 = floor((rand(countS2S3total) + 1));      
                        validSEPERATS2S3ETM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S3ETM1 = pifSEPERATS2S3ETM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S3ETM1 == randomValueSEPERATS2S3ETM1 )
                            {
                                validSEPERATS2S3ETM1 = 0;
                            }
                        }
                    }
                pifSEPERATS2S3ETM1arrayRAND[i] = pifSEPERATS2S3ETM1array[randomValueSEPERATS2S3ETM1];
                pifSEPERATS2S3ETM1arrayRANDusedInd[i] = randomValueSEPERATS2S3ETM1;
                validSEPERATS2S3ETM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS2S3ETM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S3ETM2 == 0 )
                    {
                        numeric randomValueSEPERATS2S3ETM2 = floor((rand(countS2S3total) + 1));      
                        validSEPERATS2S3ETM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S3ETM2 = pifSEPERATS2S3ETM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S3ETM2 == randomValueSEPERATS2S3ETM2 )
                            {
                                validSEPERATS2S3ETM2 = 0;
                            }
                        }
                    }
                pifSEPERATS2S3ETM2arrayRAND[i] = pifSEPERATS2S3ETM2array[randomValueSEPERATS2S3ETM2];
                pifSEPERATS2S3ETM2arrayRANDusedInd[i] = randomValueSEPERATS2S3ETM2;
                validSEPERATS2S3ETM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS2S3ETM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S3ETM3 == 0 )
                    {
                        numeric randomValueSEPERATS2S3ETM3 = floor((rand(countS2S3total) + 1));      
                        validSEPERATS2S3ETM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S3ETM3 = pifSEPERATS2S3ETM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S3ETM3 == randomValueSEPERATS2S3ETM3 )
                            {
                                validSEPERATS2S3ETM3 = 0;
                            }
                        }
                    }
                pifSEPERATS2S3ETM3arrayRAND[i] = pifSEPERATS2S3ETM3array[randomValueSEPERATS2S3ETM3];
                pifSEPERATS2S3ETM3arrayRANDusedInd[i] = randomValueSEPERATS2S3ETM3;
                validSEPERATS2S3ETM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS2S3ETM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S3ETM4 == 0 )
                    {
                        numeric randomValueSEPERATS2S3ETM4 = floor((rand(countS2S3total) + 1));      
                        validSEPERATS2S3ETM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S3ETM4 = pifSEPERATS2S3ETM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S3ETM4 == randomValueSEPERATS2S3ETM4 )
                            {
                                validSEPERATS2S3ETM4 = 0;
                            }
                        }
                    }
                pifSEPERATS2S3ETM4arrayRAND[i] = pifSEPERATS2S3ETM4array[randomValueSEPERATS2S3ETM4];
                pifSEPERATS2S3ETM4arrayRANDusedInd[i] = randomValueSEPERATS2S3ETM4;
                validSEPERATS2S3ETM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS2S3ETM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S3ETM5 == 0 )
                    {
                        numeric randomValueSEPERATS2S3ETM5 = floor((rand(countS2S3total) + 1));      
                        validSEPERATS2S3ETM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S3ETM5 = pifSEPERATS2S3ETM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S3ETM5 == randomValueSEPERATS2S3ETM5 )
                            {
                                validSEPERATS2S3ETM5 = 0;
                            }
                        }
                    }
                pifSEPERATS2S3ETM5arrayRAND[i] = pifSEPERATS2S3ETM5array[randomValueSEPERATS2S3ETM5];
                pifSEPERATS2S3ETM5arrayRANDusedInd[i] = randomValueSEPERATS2S3ETM5;
                validSEPERATS2S3ETM5 = 0;
                }
            
            ################ band 7
                
                numeric validSEPERATS2S3ETM7 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S3ETM7 == 0 )
                    {
                        numeric randomValueSEPERATS2S3ETM7 = floor((rand(countS2S3total) + 1));      
                        validSEPERATS2S3ETM7 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S3ETM7 = pifSEPERATS2S3ETM7arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S3ETM7 == randomValueSEPERATS2S3ETM7 )
                            {
                                validSEPERATS2S3ETM7 = 0;
                            }
                        }
                    }
                pifSEPERATS2S3ETM7arrayRAND[i] = pifSEPERATS2S3ETM7array[randomValueSEPERATS2S3ETM7];
                pifSEPERATS2S3ETM7arrayRANDusedInd[i] = randomValueSEPERATS2S3ETM7;
                validSEPERATS2S3ETM7 = 0;
                }
            
            #######################################
            
            	############# band 1
            
                numeric validSEPERATS2S4ETM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S4ETM1 == 0 )
                    {
                        numeric randomValueSEPERATS2S4ETM1 = floor((rand(countS2S4total) + 1));      
                        validSEPERATS2S4ETM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S4ETM1 = pifSEPERATS2S4ETM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S4ETM1 == randomValueSEPERATS2S4ETM1 )
                            {
                                validSEPERATS2S4ETM1 = 0;
                            }
                        }
                    }
                pifSEPERATS2S4ETM1arrayRAND[i] = pifSEPERATS2S4ETM1array[randomValueSEPERATS2S4ETM1];
                pifSEPERATS2S4ETM1arrayRANDusedInd[i] = randomValueSEPERATS2S4ETM1;
                validSEPERATS2S4ETM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS2S4ETM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S4ETM2 == 0 )
                    {
                        numeric randomValueSEPERATS2S4ETM2 = floor((rand(countS2S4total) + 1));      
                        validSEPERATS2S4ETM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S4ETM2 = pifSEPERATS2S4ETM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S4ETM2 == randomValueSEPERATS2S4ETM2 )
                            {
                                validSEPERATS2S4ETM2 = 0;
                            }
                        }
                    }
                pifSEPERATS2S4ETM2arrayRAND[i] = pifSEPERATS2S4ETM2array[randomValueSEPERATS2S4ETM2];
                pifSEPERATS2S4ETM2arrayRANDusedInd[i] = randomValueSEPERATS2S4ETM2;
                validSEPERATS2S4ETM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS2S4ETM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S4ETM3 == 0 )
                    {
                        numeric randomValueSEPERATS2S4ETM3 = floor((rand(countS2S4total) + 1));      
                        validSEPERATS2S4ETM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S4ETM3 = pifSEPERATS2S4ETM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S4ETM3 == randomValueSEPERATS2S4ETM3 )
                            {
                                validSEPERATS2S4ETM3 = 0;
                            }
                        }
                    }
                pifSEPERATS2S4ETM3arrayRAND[i] = pifSEPERATS2S4ETM3array[randomValueSEPERATS2S4ETM3];
                pifSEPERATS2S4ETM3arrayRANDusedInd[i] = randomValueSEPERATS2S4ETM3;
                validSEPERATS2S4ETM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS2S4ETM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S4ETM4 == 0 )
                    {
                        numeric randomValueSEPERATS2S4ETM4 = floor((rand(countS2S4total) + 1));      
                        validSEPERATS2S4ETM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S4ETM4 = pifSEPERATS2S4ETM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S4ETM4 == randomValueSEPERATS2S4ETM4 )
                            {
                                validSEPERATS2S4ETM4 = 0;
                            }
                        }
                    }
                pifSEPERATS2S4ETM4arrayRAND[i] = pifSEPERATS2S4ETM4array[randomValueSEPERATS2S4ETM4];
                pifSEPERATS2S4ETM4arrayRANDusedInd[i] = randomValueSEPERATS2S4ETM4;
                validSEPERATS2S4ETM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS2S4ETM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S4ETM5 == 0 )
                    {
                        numeric randomValueSEPERATS2S4ETM5 = floor((rand(countS2S4total) + 1));      
                        validSEPERATS2S4ETM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S4ETM5 = pifSEPERATS2S4ETM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S4ETM5 == randomValueSEPERATS2S4ETM5 )
                            {
                                validSEPERATS2S4ETM5 = 0;
                            }
                        }
                    }
                pifSEPERATS2S4ETM5arrayRAND[i] = pifSEPERATS2S4ETM5array[randomValueSEPERATS2S4ETM5];
                pifSEPERATS2S4ETM5arrayRANDusedInd[i] = randomValueSEPERATS2S4ETM5;
                validSEPERATS2S4ETM5 = 0;
                }
            
            ################ band 7
                
                    numeric validSEPERATS2S4ETM7 = 0;
                 
                    for i = 1 to minPifVAL
                    {
                        while ( validSEPERATS2S4ETM7 == 0 )
                        {
                            numeric randomValueSEPERATS2S4ETM7 = floor((rand(countS2S4total) + 1));      
                            validSEPERATS2S4ETM7 = 1;
                
                            for j = 1 to (i-1)
                            {
                                local numeric testValueSEPERATS2S4ETM7 = pifSEPERATS2S4ETM7arrayRANDusedInd[j];
                            
                                if ( testValueSEPERATS2S4ETM7 == randomValueSEPERATS2S4ETM7 )
                                {
                                    validSEPERATS2S4ETM7 = 0;
                                }
                            }
                        }
                    pifSEPERATS2S4ETM7arrayRAND[i] = pifSEPERATS2S4ETM7array[randomValueSEPERATS2S4ETM7];
                    pifSEPERATS2S4ETM7arrayRANDusedInd[i] = randomValueSEPERATS2S4ETM7;
                    validSEPERATS2S4ETM7 = 0;
                    }
			}
			else if ( sensors2 == 6 )
			{
			numeric pifSEPERATS2S1arrayCount = 1;
			numeric pifSEPERATS2S3arrayCount = 1;
			numeric pifSEPERATS2S4arrayCount = 1;
            	array pifSEPERATS2S1TM1array[countS2S1total];
            	array pifSEPERATS2S1TM2array[countS2S1total];
            	array pifSEPERATS2S1TM3array[countS2S1total];
            	array pifSEPERATS2S1TM4array[countS2S1total];
            	array pifSEPERATS2S1TM5array[countS2S1total];
            	array pifSEPERATS2S1TM7array[countS2S1total];
            
            	array pifSEPERATS2S1TM1arrayRAND[minPifVAL];
            	array pifSEPERATS2S1TM2arrayRAND[minPifVAL];
            	array pifSEPERATS2S1TM3arrayRAND[minPifVAL];
            	array pifSEPERATS2S1TM4arrayRAND[minPifVAL];
            	array pifSEPERATS2S1TM5arrayRAND[minPifVAL];
            	array pifSEPERATS2S1TM7arrayRAND[minPifVAL];
            
            	array pifSEPERATS2S1TM1arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS2S1TM2arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS2S1TM3arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS2S1TM4arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS2S1TM5arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS2S1TM7arrayRANDusedInd[minPifVAL];
            
            	array pifSEPERATS2S3TM1array[countS2S3total];
            	array pifSEPERATS2S3TM2array[countS2S3total];
            	array pifSEPERATS2S3TM3array[countS2S3total];
            	array pifSEPERATS2S3TM4array[countS2S3total];
            	array pifSEPERATS2S3TM5array[countS2S3total];
            	array pifSEPERATS2S3TM7array[countS2S3total];
            
            	array pifSEPERATS2S3TM1arrayRAND[minPifVAL];
                array pifSEPERATS2S3TM2arrayRAND[minPifVAL];
                array pifSEPERATS2S3TM3arrayRAND[minPifVAL];
                array pifSEPERATS2S3TM4arrayRAND[minPifVAL];
                array pifSEPERATS2S3TM5arrayRAND[minPifVAL];
                array pifSEPERATS2S3TM7arrayRAND[minPifVAL];
    
                array pifSEPERATS2S3TM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S3TM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S3TM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S3TM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S3TM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S3TM7arrayRANDusedInd[minPifVAL];
                
            	array pifSEPERATS2S4TM1array[countS2S4total];
            	array pifSEPERATS2S4TM2array[countS2S4total];
            	array pifSEPERATS2S4TM3array[countS2S4total];
            	array pifSEPERATS2S4TM4array[countS2S4total];
            	array pifSEPERATS2S4TM5array[countS2S4total];
            	array pifSEPERATS2S4TM7array[countS2S4total];
            
            	array pifSEPERATS2S4TM1arrayRAND[minPifVAL];
                array pifSEPERATS2S4TM2arrayRAND[minPifVAL];
                array pifSEPERATS2S4TM3arrayRAND[minPifVAL];
                array pifSEPERATS2S4TM4arrayRAND[minPifVAL];
                array pifSEPERATS2S4TM5arrayRAND[minPifVAL];
                array pifSEPERATS2S4TM7arrayRAND[minPifVAL];
    
                array pifSEPERATS2S4TM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S4TM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S4TM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S4TM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S4TM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S4TM7arrayRANDusedInd[minPifVAL];
                	  for i = 1 to TMlins
                	  {
                    	for j = 1 to TMcols
                    	{     
                            if ( S2MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS2S1TM1array[pifSEPERATS2S1arrayCount] = REFS2TM1[i,j];                        
                                        pifSEPERATS2S1TM2array[pifSEPERATS2S1arrayCount] = REFS2TM2[i,j];                        
                                    pifSEPERATS2S1TM3array[pifSEPERATS2S1arrayCount] = REFS2TM3[i,j];
                            pifSEPERATS2S1TM4array[pifSEPERATS2S1arrayCount] = REFS2TM4[i,j];
                                    pifSEPERATS2S1TM5array[pifSEPERATS2S1arrayCount] = REFS2TM5[i,j];
                            pifSEPERATS2S1TM7array[pifSEPERATS2S1arrayCount] = REFS2TM7[i,j];
                                    pifSEPERATS2S1arrayCount = pifSEPERATS2S1arrayCount + 1;
                            }
        
                            if ( S2MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                            {
                            pifSEPERATS2S3TM1array[pifSEPERATS2S3arrayCount] = REFS2TM1[i,j];                        
                                        pifSEPERATS2S3TM2array[pifSEPERATS2S3arrayCount] = REFS2TM2[i,j];                        
                                    pifSEPERATS2S3TM3array[pifSEPERATS2S3arrayCount] = REFS2TM3[i,j];
                            pifSEPERATS2S3TM4array[pifSEPERATS2S3arrayCount] = REFS2TM4[i,j];
                                    pifSEPERATS2S3TM5array[pifSEPERATS2S3arrayCount] = REFS2TM5[i,j];
                            pifSEPERATS2S3TM7array[pifSEPERATS2S3arrayCount] = REFS2TM7[i,j];
                            pifSEPERATS2S3arrayCount = pifSEPERATS2S3arrayCount + 1;
                            }
        
                            if ( S2MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                            {
                            pifSEPERATS2S4TM1array[pifSEPERATS2S4arrayCount] = REFS2TM1[i,j];                        
                                        pifSEPERATS2S4TM2array[pifSEPERATS2S4arrayCount] = REFS2TM2[i,j];                        
                                    pifSEPERATS2S4TM3array[pifSEPERATS2S4arrayCount] = REFS2TM3[i,j];
                            pifSEPERATS2S4TM4array[pifSEPERATS2S4arrayCount] = REFS2TM4[i,j];
                                    pifSEPERATS2S4TM5array[pifSEPERATS2S4arrayCount] = REFS2TM5[i,j];
                            pifSEPERATS2S4TM7array[pifSEPERATS2S4arrayCount] = REFS2TM7[i,j];
                            pifSEPERATS2S4arrayCount = pifSEPERATS2S4arrayCount + 1;
                            }
                    	}
                	  }
                	  
                ############# band 1
            
                numeric validSEPERATS2S1TM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S1TM1 == 0 )
                    {
                        numeric randomValueSEPERATS2S1TM1 = floor((rand(countS2S1total) + 1));      
                        validSEPERATS2S1TM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S1TM1 = pifSEPERATS2S1TM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S1TM1 == randomValueSEPERATS2S1TM1 )
                            {
                                validSEPERATS2S1TM1 = 0;
                            }
                        }
                    }
                pifSEPERATS2S1TM1arrayRAND[i] = pifSEPERATS2S1TM1array[randomValueSEPERATS2S1TM1];
                pifSEPERATS2S1TM1arrayRANDusedInd[i] = randomValueSEPERATS2S1TM1;
                validSEPERATS2S1TM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS2S1TM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S1TM2 == 0 )
                    {
                        numeric randomValueSEPERATS2S1TM2 = floor((rand(countS2S1total) + 1));      
                        validSEPERATS2S1TM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S1TM2 = pifSEPERATS2S1TM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S1TM2 == randomValueSEPERATS2S1TM2 )
                            {
                                validSEPERATS2S1TM2 = 0;
                            }
                        }
                    }
                pifSEPERATS2S1TM2arrayRAND[i] = pifSEPERATS2S1TM2array[randomValueSEPERATS2S1TM2];
                pifSEPERATS2S1TM2arrayRANDusedInd[i] = randomValueSEPERATS2S1TM2;
                validSEPERATS2S1TM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS2S1TM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S1TM3 == 0 )
                    {
                        numeric randomValueSEPERATS2S1TM3 = floor((rand(countS2S1total) + 1));      
                        validSEPERATS2S1TM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S1TM3 = pifSEPERATS2S1TM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S1TM3 == randomValueSEPERATS2S1TM3 )
                            {
                                validSEPERATS2S1TM3 = 0;
                            }
                        }
                    }
                pifSEPERATS2S1TM3arrayRAND[i] = pifSEPERATS2S1TM3array[randomValueSEPERATS2S1TM3];
                pifSEPERATS2S1TM3arrayRANDusedInd[i] = randomValueSEPERATS2S1TM3;
                validSEPERATS2S1TM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS2S1TM4 = 0;
             
 		    for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S1TM4 == 0 )
                    {
                        numeric randomValueSEPERATS2S1TM4 = floor((rand(countS2S1total) + 1));      
                        validSEPERATS2S1TM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S1TM4 = pifSEPERATS2S1TM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S1TM4 == randomValueSEPERATS2S1TM4 )
                            {
                                validSEPERATS2S1TM4 = 0;
                            }
                        }
                    }
                pifSEPERATS2S1TM4arrayRAND[i] = pifSEPERATS2S1TM4array[randomValueSEPERATS2S1TM4];
                pifSEPERATS2S1TM4arrayRANDusedInd[i] = randomValueSEPERATS2S1TM4;
                validSEPERATS2S1TM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS2S1TM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S1TM5 == 0 )
                    {
                        numeric randomValueSEPERATS2S1TM5 = floor((rand(countS2S1total) + 1));      
                        validSEPERATS2S1TM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S1TM5 = pifSEPERATS2S1TM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S1TM5 == randomValueSEPERATS2S1TM5 )
                            {
                                validSEPERATS2S1TM5 = 0;
                            }
                        }
                    }
                pifSEPERATS2S1TM5arrayRAND[i] = pifSEPERATS2S1TM5array[randomValueSEPERATS2S1TM5];
                pifSEPERATS2S1TM5arrayRANDusedInd[i] = randomValueSEPERATS2S1TM5;
                validSEPERATS2S1TM5 = 0;
                }
            
            ################ band 7
                
                numeric validSEPERATS2S1TM7 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S1TM7 == 0 )
                    {
                        numeric randomValueSEPERATS2S1TM7 = floor((rand(countS2S1total) + 1));      
                        validSEPERATS2S1TM7 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S1TM7 = pifSEPERATS2S1TM7arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S1TM7 == randomValueSEPERATS2S1TM7 )
                            {
                                validSEPERATS2S1TM7 = 0;
                            }
                        }
                    }
                pifSEPERATS2S1TM7arrayRAND[i] = pifSEPERATS2S1TM7array[randomValueSEPERATS2S1TM7];
                pifSEPERATS2S1TM7arrayRANDusedInd[i] = randomValueSEPERATS2S1TM7;
                validSEPERATS2S1TM7 = 0;
                }
            
            
            ###################################################
            
            	############# band 1
            
                numeric validSEPERATS2S3TM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S3TM1 == 0 )
                    {
                        numeric randomValueSEPERATS2S3TM1 = floor((rand(countS2S3total) + 1));      
                        validSEPERATS2S3TM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S3TM1 = pifSEPERATS2S3TM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S3TM1 == randomValueSEPERATS2S3TM1 )
                            {
                                validSEPERATS2S3TM1 = 0;
                            }
                        }
                    }
                pifSEPERATS2S3TM1arrayRAND[i] = pifSEPERATS2S3TM1array[randomValueSEPERATS2S3TM1];
                pifSEPERATS2S3TM1arrayRANDusedInd[i] = randomValueSEPERATS2S3TM1;
                validSEPERATS2S3TM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS2S3TM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S3TM2 == 0 )
                    {
                        numeric randomValueSEPERATS2S3TM2 = floor((rand(countS2S3total) + 1));      
                        validSEPERATS2S3TM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S3TM2 = pifSEPERATS2S3TM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S3TM2 == randomValueSEPERATS2S3TM2 )
                            {
                                validSEPERATS2S3TM2 = 0;
                            }
                        }
                    }
                pifSEPERATS2S3TM2arrayRAND[i] = pifSEPERATS2S3TM2array[randomValueSEPERATS2S3TM2];
                pifSEPERATS2S3TM2arrayRANDusedInd[i] = randomValueSEPERATS2S3TM2;
                validSEPERATS2S3TM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS2S3TM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S3TM3 == 0 )
                    {
                        numeric randomValueSEPERATS2S3TM3 = floor((rand(countS2S3total) + 1));      
                        validSEPERATS2S3TM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S3TM3 = pifSEPERATS2S3TM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S3TM3 == randomValueSEPERATS2S3TM3 )
                            {
                                validSEPERATS2S3TM3 = 0;
                        }
                        }
                    }
                pifSEPERATS2S3TM3arrayRAND[i] = pifSEPERATS2S3TM3array[randomValueSEPERATS2S3TM3];
                pifSEPERATS2S3TM3arrayRANDusedInd[i] = randomValueSEPERATS2S3TM3;
                validSEPERATS2S3TM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS2S3TM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S3TM4 == 0 )
                    {
                        numeric randomValueSEPERATS2S3TM4 = floor((rand(countS2S3total) + 1));      
                        validSEPERATS2S3TM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S3TM4 = pifSEPERATS2S3TM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S3TM4 == randomValueSEPERATS2S3TM4 )
                            {
                                validSEPERATS2S3TM4 = 0;
                            }
                        }
                    }
                pifSEPERATS2S3TM4arrayRAND[i] = pifSEPERATS2S3TM4array[randomValueSEPERATS2S3TM4];
                pifSEPERATS2S3TM4arrayRANDusedInd[i] = randomValueSEPERATS2S3TM4;
                validSEPERATS2S3TM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS2S3TM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S3TM5 == 0 )
                    {
                        numeric randomValueSEPERATS2S3TM5 = floor((rand(countS2S3total) + 1));      
                        validSEPERATS2S3TM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S3TM5 = pifSEPERATS2S3TM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S3TM5 == randomValueSEPERATS2S3TM5 )
                            {
                                validSEPERATS2S3TM5 = 0;
                            }
                        }
                    }
                pifSEPERATS2S3TM5arrayRAND[i] = pifSEPERATS2S3TM5array[randomValueSEPERATS2S3TM5];
                pifSEPERATS2S3TM5arrayRANDusedInd[i] = randomValueSEPERATS2S3TM5;
                validSEPERATS2S3TM5 = 0;
                }
            
            ################ band 7
                
                numeric validSEPERATS2S3TM7 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S3TM7 == 0 )
                    {
                        numeric randomValueSEPERATS2S3TM7 = floor((rand(countS2S3total) + 1));      
                        validSEPERATS2S3TM7 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S3TM7 = pifSEPERATS2S3TM7arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S3TM7 == randomValueSEPERATS2S3TM7 )
                            {
                                validSEPERATS2S3TM7 = 0;
                            }
                        }
                    }
                pifSEPERATS2S3TM7arrayRAND[i] = pifSEPERATS2S3TM7array[randomValueSEPERATS2S3TM7];
                pifSEPERATS2S3TM7arrayRANDusedInd[i] = randomValueSEPERATS2S3TM7;
                validSEPERATS2S3TM7 = 0;
                }
            
            #######################################
            
            	############# band 1
            
                numeric validSEPERATS2S4TM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S4TM1 == 0 )
                    {
                        numeric randomValueSEPERATS2S4TM1 = floor((rand(countS2S4total) + 1));      
                        validSEPERATS2S4TM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S4TM1 = pifSEPERATS2S4TM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S4TM1 == randomValueSEPERATS2S4TM1 )
                            {
                                validSEPERATS2S4TM1 = 0;
                            }
                        }
                    }
                pifSEPERATS2S4TM1arrayRAND[i] = pifSEPERATS2S4TM1array[randomValueSEPERATS2S4TM1];
                pifSEPERATS2S4TM1arrayRANDusedInd[i] = randomValueSEPERATS2S4TM1;
                validSEPERATS2S4TM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS2S4TM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S4TM2 == 0 )
                    {
                        numeric randomValueSEPERATS2S4TM2 = floor((rand(countS2S4total) + 1));      
                        validSEPERATS2S4TM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S4TM2 = pifSEPERATS2S4TM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S4TM2 == randomValueSEPERATS2S4TM2 )
                            {
                                validSEPERATS2S4TM2 = 0;
                            }
                        }
                    }
                pifSEPERATS2S4TM2arrayRAND[i] = pifSEPERATS2S4TM2array[randomValueSEPERATS2S4TM2];
                pifSEPERATS2S4TM2arrayRANDusedInd[i] = randomValueSEPERATS2S4TM2;
                validSEPERATS2S4TM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS2S4TM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S4TM3 == 0 )
                    {
                        numeric randomValueSEPERATS2S4TM3 = floor((rand(countS2S4total) + 1));      
                        validSEPERATS2S4TM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S4TM3 = pifSEPERATS2S4TM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S4TM3 == randomValueSEPERATS2S4TM3 )
                            {
                                validSEPERATS2S4TM3 = 0;
                            }
                        }
                    }
                pifSEPERATS2S4TM3arrayRAND[i] = pifSEPERATS2S4TM3array[randomValueSEPERATS2S4TM3];
                pifSEPERATS2S4TM3arrayRANDusedInd[i] = randomValueSEPERATS2S4TM3;
                validSEPERATS2S4TM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS2S4TM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S4TM4 == 0 )
                    {
                        numeric randomValueSEPERATS2S4TM4 = floor((rand(countS2S4total) + 1));      
                        validSEPERATS2S4TM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S4TM4 = pifSEPERATS2S4TM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S4TM4 == randomValueSEPERATS2S4TM4 )
                            {
                                validSEPERATS2S4TM4 = 0;
                            }
                        }
                    }
                pifSEPERATS2S4TM4arrayRAND[i] = pifSEPERATS2S4TM4array[randomValueSEPERATS2S4TM4];
                pifSEPERATS2S4TM4arrayRANDusedInd[i] = randomValueSEPERATS2S4TM4;
                validSEPERATS2S4TM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS2S4TM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S4TM5 == 0 )
                    {
                        numeric randomValueSEPERATS2S4TM5 = floor((rand(countS2S4total) + 1));      
                        validSEPERATS2S4TM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S4TM5 = pifSEPERATS2S4TM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S4TM5 == randomValueSEPERATS2S4TM5 )
                            {
                                validSEPERATS2S4TM5 = 0;
                            }
                        }
                    }
                pifSEPERATS2S4TM5arrayRAND[i] = pifSEPERATS2S4TM5array[randomValueSEPERATS2S4TM5];
                pifSEPERATS2S4TM5arrayRANDusedInd[i] = randomValueSEPERATS2S4TM5;
                validSEPERATS2S4TM5 = 0;
                }
            
            ################ band 7
                
                    numeric validSEPERATS2S4TM7 = 0;
                 
                    for i = 1 to minPifVAL
                    {
                        while ( validSEPERATS2S4TM7 == 0 )
                        {
                            numeric randomValueSEPERATS2S4TM7 = floor((rand(countS2S4total) + 1));      
                            validSEPERATS2S4TM7 = 1;
                
                            for j = 1 to (i-1)
                            {
                                local numeric testValueSEPERATS2S4TM7 = pifSEPERATS2S4TM7arrayRANDusedInd[j];
                            
                                if ( testValueSEPERATS2S4TM7 == randomValueSEPERATS2S4TM7 )
                                {
                                    validSEPERATS2S4TM7 = 0;
                                }
                            }
                        }
                    pifSEPERATS2S4TM7arrayRAND[i] = pifSEPERATS2S4TM7array[randomValueSEPERATS2S4TM7];
                    pifSEPERATS2S4TM7arrayRANDusedInd[i] = randomValueSEPERATS2S4TM7;
                    validSEPERATS2S4TM7 = 0;
                    }
			}
			else
			{
			numeric pifSEPERATS2S1arrayCount = 1;
			numeric pifSEPERATS2S3arrayCount = 1;
			numeric pifSEPERATS2S4arrayCount = 1;
            	array pifSEPERATS2S1MSS1array[countS2S1total];
            	array pifSEPERATS2S1MSS2array[countS2S1total];
            	array pifSEPERATS2S1MSS3array[countS2S1total];
            	array pifSEPERATS2S1MSS4array[countS2S1total];
            
            	array pifSEPERATS2S1MSS1arrayRAND[minPifVAL];
            	array pifSEPERATS2S1MSS2arrayRAND[minPifVAL];
            	array pifSEPERATS2S1MSS3arrayRAND[minPifVAL];
            	array pifSEPERATS2S1MSS4arrayRAND[minPifVAL];
            	            
            	array pifSEPERATS2S1MSS1arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS2S1MSS2arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS2S1MSS3arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS2S1MSS4arrayRANDusedInd[minPifVAL];
            
            	array pifSEPERATS2S3MSS1array[countS2S3total];
            	array pifSEPERATS2S3MSS2array[countS2S3total];
            	array pifSEPERATS2S3MSS3array[countS2S3total];
            	array pifSEPERATS2S3MSS4array[countS2S3total];
            
            	array pifSEPERATS2S3MSS1arrayRAND[minPifVAL];
                array pifSEPERATS2S3MSS2arrayRAND[minPifVAL];
                array pifSEPERATS2S3MSS3arrayRAND[minPifVAL];
                array pifSEPERATS2S3MSS4arrayRAND[minPifVAL];
                   
                array pifSEPERATS2S3MSS1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S3MSS2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S3MSS3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S3MSS4arrayRANDusedInd[minPifVAL];
                
            	array pifSEPERATS2S4MSS1array[countS2S4total];
            	array pifSEPERATS2S4MSS2array[countS2S4total];
            	array pifSEPERATS2S4MSS3array[countS2S4total];
            	array pifSEPERATS2S4MSS4array[countS2S4total];
            
            	array pifSEPERATS2S4MSS1arrayRAND[minPifVAL];
                array pifSEPERATS2S4MSS2arrayRAND[minPifVAL];
                array pifSEPERATS2S4MSS3arrayRAND[minPifVAL];
                array pifSEPERATS2S4MSS4arrayRAND[minPifVAL];
                   
                array pifSEPERATS2S4MSS1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S4MSS2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S4MSS3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS2S4MSS4arrayRANDusedInd[minPifVAL];
                	  for i = 1 to MSSlins
                	  {
                    	for j = 1 to MSScols
                    	{     
                            if ( S2MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS2S1MSS1array[pifSEPERATS2S1arrayCount] = REFS2MSS1[i,j];                        
                                        pifSEPERATS2S1MSS2array[pifSEPERATS2S1arrayCount] = REFS2MSS2[i,j];                        
                                    pifSEPERATS2S1MSS3array[pifSEPERATS2S1arrayCount] = REFS2MSS3[i,j];
                            pifSEPERATS2S1MSS4array[pifSEPERATS2S1arrayCount] = REFS2MSS4[i,j];
                                    pifSEPERATS2S1arrayCount = pifSEPERATS2S1arrayCount + 1;
                            }
        
                            if ( S2MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                            {
                            pifSEPERATS2S3MSS1array[pifSEPERATS2S3arrayCount] = REFS2MSS1[i,j];                        
                                        pifSEPERATS2S3MSS2array[pifSEPERATS2S3arrayCount] = REFS2MSS2[i,j];                        
                                    pifSEPERATS2S3MSS3array[pifSEPERATS2S3arrayCount] = REFS2MSS3[i,j];
                            pifSEPERATS2S3MSS4array[pifSEPERATS2S3arrayCount] = REFS2MSS4[i,j];
                            pifSEPERATS2S3arrayCount = pifSEPERATS2S3arrayCount + 1;
                            }
        
                            if ( S2MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                            {
                            pifSEPERATS2S4MSS1array[pifSEPERATS2S4arrayCount] = REFS2MSS1[i,j];                        
                                        pifSEPERATS2S4MSS2array[pifSEPERATS2S4arrayCount] = REFS2MSS2[i,j];                        
                                    pifSEPERATS2S4MSS3array[pifSEPERATS2S4arrayCount] = REFS2MSS3[i,j];
                            pifSEPERATS2S4MSS4array[pifSEPERATS2S4arrayCount] = REFS2MSS4[i,j]; 
                            pifSEPERATS2S4arrayCount = pifSEPERATS2S4arrayCount + 1;
                            }
                    	}
                	  }
                	  
                ############# band 1
            
                numeric validSEPERATS2S1MSS1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S1MSS1 == 0 )
                    {
                        numeric randomValueSEPERATS2S1MSS1 = floor((rand(countS2S1total) + 1));      
                        validSEPERATS2S1MSS1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S1MSS1 = pifSEPERATS2S1MSS1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S1MSS1 == randomValueSEPERATS2S1MSS1 )
                            {
                                validSEPERATS2S1MSS1 = 0;
                            }
                        }
                    }
                pifSEPERATS2S1MSS1arrayRAND[i] = pifSEPERATS2S1MSS1array[randomValueSEPERATS2S1MSS1];
                pifSEPERATS2S1MSS1arrayRANDusedInd[i] = randomValueSEPERATS2S1MSS1;
                validSEPERATS2S1MSS1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS2S1MSS2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S1MSS2 == 0 )
                    {
                        numeric randomValueSEPERATS2S1MSS2 = floor((rand(countS2S1total) + 1));      
                        validSEPERATS2S1MSS2 = 1;
            
                        for j = 1 to (i-1)
                 {
                            local numeric testValueSEPERATS2S1MSS2 = pifSEPERATS2S1MSS2arrayRANDusedInd[j];
         
                            if ( testValueSEPERATS2S1MSS2 == randomValueSEPERATS2S1MSS2 )
                            {
    validSEPERATS2S1MSS2 = 0;
                            }
                        }
                    }
                pifSEPERATS2S1MSS2arrayRAND[i] = pifSEPERATS2S1MSS2array[randomValueSEPERATS2S1MSS2];
                pifSEPERATS2S1MSS2arrayRANDusedInd[i] = randomValueSEPERATS2S1MSS2;
                validSEPERATS2S1MSS2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS2S1MSS3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S1MSS3 == 0 )
                    {
                        numeric randomValueSEPERATS2S1MSS3 = floor((rand(countS2S1total) + 1));      
                        validSEPERATS2S1MSS3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S1MSS3 = pifSEPERATS2S1MSS3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S1MSS3 == randomValueSEPERATS2S1MSS3 )
                            {
                                validSEPERATS2S1MSS3 = 0;
                            }
                        }
                    }
                pifSEPERATS2S1MSS3arrayRAND[i] = pifSEPERATS2S1MSS3array[randomValueSEPERATS2S1MSS3];
                pifSEPERATS2S1MSS3arrayRANDusedInd[i] = randomValueSEPERATS2S1MSS3;
                validSEPERATS2S1MSS3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS2S1MSS4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S1MSS4 == 0 )
                    {
                        numeric randomValueSEPERATS2S1MSS4 = floor((rand(countS2S1total) + 1));      
                        validSEPERATS2S1MSS4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S1MSS4 = pifSEPERATS2S1MSS4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S1MSS4 == randomValueSEPERATS2S1MSS4 )
                            {
                                validSEPERATS2S1MSS4 = 0;
                            }
                        }
                    }
                pifSEPERATS2S1MSS4arrayRAND[i] = pifSEPERATS2S1MSS4array[randomValueSEPERATS2S1MSS4];
                pifSEPERATS2S1MSS4arrayRANDusedInd[i] = randomValueSEPERATS2S1MSS4;
                validSEPERATS2S1MSS4 = 0;
                }
            
            ###################################################
            
            	############# band 1
            
                numeric validSEPERATS2S3MSS1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S3MSS1 == 0 )
                    {
                        numeric randomValueSEPERATS2S3MSS1 = floor((rand(countS2S3total) + 1));      
                        validSEPERATS2S3MSS1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S3MSS1 = pifSEPERATS2S3MSS1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S3MSS1 == randomValueSEPERATS2S3MSS1 )
                            {
                                validSEPERATS2S3MSS1 = 0;
                            }
                        }
                    }
                pifSEPERATS2S3MSS1arrayRAND[i] = pifSEPERATS2S3MSS1array[randomValueSEPERATS2S3MSS1];
                pifSEPERATS2S3MSS1arrayRANDusedInd[i] = randomValueSEPERATS2S3MSS1;
                validSEPERATS2S3MSS1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS2S3MSS2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S3MSS2 == 0 )
                    {
                        numeric randomValueSEPERATS2S3MSS2 = floor((rand(countS2S3total) + 1));      
                        validSEPERATS2S3MSS2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S3MSS2 = pifSEPERATS2S3MSS2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S3MSS2 == randomValueSEPERATS2S3MSS2 )
                            {
                                validSEPERATS2S3MSS2 = 0;
                            }
                        }
                    }
                pifSEPERATS2S3MSS2arrayRAND[i] = pifSEPERATS2S3MSS2array[randomValueSEPERATS2S3MSS2];
                pifSEPERATS2S3MSS2arrayRANDusedInd[i] = randomValueSEPERATS2S3MSS2;
                validSEPERATS2S3MSS2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS2S3MSS3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S3MSS3 == 0 )
                    {
                        numeric randomValueSEPERATS2S3MSS3 = floor((rand(countS2S3total) + 1));      
                        validSEPERATS2S3MSS3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S3MSS3 = pifSEPERATS2S3MSS3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S3MSS3 == randomValueSEPERATS2S3MSS3 )
                            {
                                validSEPERATS2S3MSS3 = 0;
                            }
                        }
                    }
                pifSEPERATS2S3MSS3arrayRAND[i] = pifSEPERATS2S3MSS3array[randomValueSEPERATS2S3MSS3];
                pifSEPERATS2S3MSS3arrayRANDusedInd[i] = randomValueSEPERATS2S3MSS3;
                validSEPERATS2S3MSS3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS2S3MSS4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S3MSS4 == 0 )
                    {
                        numeric randomValueSEPERATS2S3MSS4 = floor((rand(countS2S3total) + 1));      
                        validSEPERATS2S3MSS4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S3MSS4 = pifSEPERATS2S3MSS4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S3MSS4 == randomValueSEPERATS2S3MSS4 )
                            {
                                validSEPERATS2S3MSS4 = 0;
                            }
                        }
                    }
                pifSEPERATS2S3MSS4arrayRAND[i] = pifSEPERATS2S3MSS4array[randomValueSEPERATS2S3MSS4];
                pifSEPERATS2S3MSS4arrayRANDusedInd[i] = randomValueSEPERATS2S3MSS4;
                validSEPERATS2S3MSS4 = 0;
                }
            
            #######################################
            
            	############# band 1
            
                numeric validSEPERATS2S4MSS1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S4MSS1 == 0 )
                    {
                        numeric randomValueSEPERATS2S4MSS1 = floor((rand(countS2S4total) + 1));      
                        validSEPERATS2S4MSS1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S4MSS1 = pifSEPERATS2S4MSS1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S4MSS1 == randomValueSEPERATS2S4MSS1 )
                            {
                                validSEPERATS2S4MSS1 = 0;
                            }
                        }
                    }
                pifSEPERATS2S4MSS1arrayRAND[i] = pifSEPERATS2S4MSS1array[randomValueSEPERATS2S4MSS1];
                pifSEPERATS2S4MSS1arrayRANDusedInd[i] = randomValueSEPERATS2S4MSS1;
                validSEPERATS2S4MSS1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS2S4MSS2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S4MSS2 == 0 )
                    {
                        numeric randomValueSEPERATS2S4MSS2 = floor((rand(countS2S4total) + 1));      
                        validSEPERATS2S4MSS2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S4MSS2 = pifSEPERATS2S4MSS2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S4MSS2 == randomValueSEPERATS2S4MSS2 )
                            {
                                validSEPERATS2S4MSS2 = 0;
                            }
                        }
                    }
                pifSEPERATS2S4MSS2arrayRAND[i] = pifSEPERATS2S4MSS2array[randomValueSEPERATS2S4MSS2];
                pifSEPERATS2S4MSS2arrayRANDusedInd[i] = randomValueSEPERATS2S4MSS2;
                validSEPERATS2S4MSS2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS2S4MSS3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S4MSS3 == 0 )
                    {
                        numeric randomValueSEPERATS2S4MSS3 = floor((rand(countS2S4total) + 1));      
                        validSEPERATS2S4MSS3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S4MSS3 = pifSEPERATS2S4MSS3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S4MSS3 == randomValueSEPERATS2S4MSS3 )
                            {
                                validSEPERATS2S4MSS3 = 0;
                            }
                        }
                    }
                pifSEPERATS2S4MSS3arrayRAND[i] = pifSEPERATS2S4MSS3array[randomValueSEPERATS2S4MSS3];
                pifSEPERATS2S4MSS3arrayRANDusedInd[i] = randomValueSEPERATS2S4MSS3;
                validSEPERATS2S4MSS3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS2S4MSS4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS2S4MSS4 == 0 )
                    {
                        numeric randomValueSEPERATS2S4MSS4 = floor((rand(countS2S4total) + 1));      
                        validSEPERATS2S4MSS4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS2S4MSS4 = pifSEPERATS2S4MSS4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS2S4MSS4 == randomValueSEPERATS2S4MSS4 )
                            {
                                validSEPERATS2S4MSS4 = 0;
                            }
                        }
                    }
                pifSEPERATS2S4MSS4arrayRAND[i] = pifSEPERATS2S4MSS4array[randomValueSEPERATS2S4MSS4];
                pifSEPERATS2S4MSS4arrayRANDusedInd[i] = randomValueSEPERATS2S4MSS4;
                validSEPERATS2S4MSS4 = 0;
                }
		}
			if ( sensors1 == 7 )
	            {
            	numeric pifSEPERATS1arrayCount = 1;
            	array pifSEPERATS1slaveETM1array[countS2S1total];
            	array pifSEPERATS1slaveETM2array[countS2S1total];
            	array pifSEPERATS1slaveETM3array[countS2S1total];
            	array pifSEPERATS1slaveETM4array[countS2S1total];
            	array pifSEPERATS1slaveETM5array[countS2S1total];
            	array pifSEPERATS1slaveETM7array[countS2S1total];
            
            	array pifSEPERATS1slaveETM1arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveETM2arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveETM3arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveETM4arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveETM5arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveETM7arrayRAND[minPifVAL];
            
			  for i = 1 to ETMlins
                	  {
                    	for j = 1 to ETMcols
                    	{     
                            if ( S2MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS1slaveETM1array[pifSEPERATS1arrayCount] = REFS1ETM1[i,j];
                                    pifSEPERATS1slaveETM2array[pifSEPERATS1arrayCount] = REFS1ETM2[i,j]; 
                                    pifSEPERATS1slaveETM3array[pifSEPERATS1arrayCount] = REFS1ETM3[i,j];
                            		pifSEPERATS1slaveETM4array[pifSEPERATS1arrayCount] = REFS1ETM4[i,j];
                                    pifSEPERATS1slaveETM5array[pifSEPERATS1arrayCount] = REFS1ETM5[i,j];
                            		pifSEPERATS1slaveETM7array[pifSEPERATS1arrayCount] = REFS1ETM7[i,j];
                                    pifSEPERATS1arrayCount = pifSEPERATS1arrayCount + 1;
                            }
                    	}
                	  }
                	  
                ################ band 1
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM1arrayRAND[i] = pifSEPERATS1slaveETM1array[pifSEPERATS2S1ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
		}                                     
                
                ################ band 2
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM2arrayRAND[i] = pifSEPERATS1slaveETM2array[pifSEPERATS2S1ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM2arrayRAND[i] = pifSEPERATS1slaveETM2array[pifSEPERATS2S1TM2arrayRANDusedInd[i]];
                }                                                    
		}
                ################ band 3
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM3arrayRAND[i] = pifSEPERATS1slaveETM3array[pifSEPERATS2S1ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{     
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM3arrayRAND[i] = pifSEPERATS1slaveETM3array[pifSEPERATS2S1TM3arrayRANDusedInd[i]];
                }                                               
		}
                ################ band 4
             
		if ( sensors2 == 7 )
		{           	
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM4arrayRAND[i] = pifSEPERATS1slaveETM4array[pifSEPERATS2S1ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM4arrayRAND[i] = pifSEPERATS1slaveETM4array[pifSEPERATS2S1TM4arrayRANDusedInd[i]];
                }                                                 
		}
                ################ band 5
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM5arrayRAND[i] = pifSEPERATS1slaveETM5array[pifSEPERATS2S1ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM5arrayRAND[i] = pifSEPERATS1slaveETM5array[pifSEPERATS2S1TM5arrayRANDusedInd[i]];
                }                                                 
		}
                ################ band 7
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM7arrayRAND[i] = pifSEPERATS1slaveETM7array[pifSEPERATS2S1ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM7arrayRAND[i] = pifSEPERATS1slaveETM7array[pifSEPERATS2S1TM7arrayRANDusedInd[i]];
                }                                                   
		}
        }
			else if ( sensors1 == 6 )
			{
			numeric pifSEPERATS1arrayCount = 1;
            	array pifSEPERATS1slaveTM1array[countS2S1total];
            	array pifSEPERATS1slaveTM2array[countS2S1total];
            	array pifSEPERATS1slaveTM3array[countS2S1total];
            	array pifSEPERATS1slaveTM4array[countS2S1total];
            	array pifSEPERATS1slaveTM5array[countS2S1total];
            	array pifSEPERATS1slaveTM7array[countS2S1total];
            
            	array pifSEPERATS1slaveTM1arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveTM2arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveTM3arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveTM4arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveTM5arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveTM7arrayRAND[minPifVAL];
            
			  for i = 1 to TMlins
                	  {
                    	for j = 1 to TMcols
                    	{     
                            if ( S2MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS1slaveTM1array[pifSEPERATS1arrayCount] = REFS1TM1[i,j];
                                    pifSEPERATS1slaveTM2array[pifSEPERATS1arrayCount] = REFS1TM2[i,j]; 
                                    pifSEPERATS1slaveTM3array[pifSEPERATS1arrayCount] = REFS1TM3[i,j];
                                    pifSEPERATS1slaveTM4array[pifSEPERATS1arrayCount] = REFS1TM4[i,j];
                                    pifSEPERATS1slaveTM5array[pifSEPERATS1arrayCount] = REFS1TM5[i,j];
                                    pifSEPERATS1slaveTM7array[pifSEPERATS1arrayCount] = REFS1TM7[i,j];
                                    pifSEPERATS1arrayCount = pifSEPERATS1arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM1arrayRAND[i] = pifSEPERATS1slaveTM1array[pifSEPERATS2S1ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM1arrayRAND[i] = pifSEPERATS1slaveTM1array[pifSEPERATS2S1TM1arrayRANDusedInd[i]];
                }                                                 
		}
                
                ################ band 2
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM2arrayRAND[i] = pifSEPERATS1slaveTM2array[pifSEPERATS2S1ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM2arrayRAND[i] = pifSEPERATS1slaveTM2array[pifSEPERATS2S1TM2arrayRANDusedInd[i]];
                }                                                
		}
                ################ band 3
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM3arrayRAND[i] = pifSEPERATS1slaveTM3array[pifSEPERATS2S1ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM3arrayRAND[i] = pifSEPERATS1slaveTM3array[pifSEPERATS2S1TM3arrayRANDusedInd[i]];
                }                                                 
		}
                ################ band 4
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM4arrayRAND[i] = pifSEPERATS1slaveTM4array[pifSEPERATS2S1ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM4arrayRAND[i] = pifSEPERATS1slaveTM4array[pifSEPERATS2S1TM4arrayRANDusedInd[i]];
                }                                                 
		}
                ################ band 5
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM5arrayRAND[i] = pifSEPERATS1slaveTM5array[pifSEPERATS2S1ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM5arrayRAND[i] = pifSEPERATS1slaveTM5array[pifSEPERATS2S1TM5arrayRANDusedInd[i]];
                }                                                 
		}
		
                ################ band 7
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM7arrayRAND[i] = pifSEPERATS1slaveTM7array[pifSEPERATS2S1ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM7arrayRAND[i] = pifSEPERATS1slaveTM7array[pifSEPERATS2S1TM7arrayRANDusedInd[i]];
                }                                                    
		}
	}
			else
			{
			numeric pifSEPERATS1arrayCount = 1;
            	array pifSEPERATS1slaveMSS1array[countS2S1total];
            	array pifSEPERATS1slaveMSS2array[countS2S1total];
            	array pifSEPERATS1slaveMSS3array[countS2S1total];
            	array pifSEPERATS1slaveMSS4array[countS2S1total];
            
            	array pifSEPERATS1slaveMSS1arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveMSS2arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveMSS3arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveMSS4arrayRAND[minPifVAL];
            
			  for i = 1 to MSSlins
                	  {
                    	for j = 1 to MSScols
                    	{     
                            if ( S2MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS1slaveMSS1array[pifSEPERATS1arrayCount] = REFS1MSS1[i,j];
                                    pifSEPERATS1slaveMSS2array[pifSEPERATS1arrayCount] = REFS1MSS2[i,j]; 
                                    pifSEPERATS1slaveMSS3array[pifSEPERATS1arrayCount] = REFS1MSS3[i,j];
                                    pifSEPERATS1slaveMSS4array[pifSEPERATS1arrayCount] = REFS1MSS4[i,j];
                                    pifSEPERATS1arrayCount = pifSEPERATS1arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS1arrayRAND[i] = pifSEPERATS1slaveMSS1array[pifSEPERATS2S1ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS1arrayRAND[i] = pifSEPERATS1slaveMSS1array[pifSEPERATS2S1TM2arrayRANDusedInd[i]];
                }                                                
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS1arrayRAND[i] = pifSEPERATS1slaveMSS1array[pifSEPERATS2S1MSS1arrayRANDusedInd[i]];
                }
		}
                
                ################ band 2
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS2arrayRAND[i] = pifSEPERATS1slaveMSS2array[pifSEPERATS2S1ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS2arrayRAND[i] = pifSEPERATS1slaveMSS2array[pifSEPERATS2S1TM3arrayRANDusedInd[i]];
                }  
		}                                                
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS2arrayRAND[i] = pifSEPERATS1slaveMSS2array[pifSEPERATS2S1MSS2arrayRANDusedInd[i]];
                }
		}
                
                ################ band 3
             
        if ( sensors2 == 5 or sensors2 == 4 or sensors2 == 3 or sensors2 == 2 or sensors2 == 1 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS3arrayRAND[i] = pifSEPERATS1slaveMSS3array[pifSEPERATS2S1MSS3arrayRANDusedInd[i]];
                }
		}
                
                ################ band 4
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS4arrayRAND[i] = pifSEPERATS1slaveMSS4array[pifSEPERATS2S1ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{      
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS4arrayRAND[i] = pifSEPERATS1slaveMSS4array[pifSEPERATS2S1TM4arrayRANDusedInd[i]];
                }                                              
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS4arrayRAND[i] = pifSEPERATS1slaveMSS4array[pifSEPERATS2S1MSS4arrayRANDusedInd[i]];
                }
		}
	}
			if ( sensors3 == 7 )
			{
			numeric pifSEPERATS3arrayCount = 1;
            	array pifSEPERATS3slaveETM1array[countS2S3total];
            	array pifSEPERATS3slaveETM2array[countS2S3total];
            	array pifSEPERATS3slaveETM3array[countS2S3total];
            	array pifSEPERATS3slaveETM4array[countS2S3total];
            	array pifSEPERATS3slaveETM5array[countS2S3total];
            	array pifSEPERATS3slaveETM7array[countS2S3total];
            
            	array pifSEPERATS3slaveETM1arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveETM2arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveETM3arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveETM4arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveETM5arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveETM7arrayRAND[minPifVAL];
            
			  for i = 1 to ETMlins
                	  {
                    	for j = 1 to ETMcols
                    	{     
                            if ( S2MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                            {
                                    pifSEPERATS3slaveETM1array[pifSEPERATS3arrayCount] = REFS3ETM1[i,j];
                                        pifSEPERATS3slaveETM2array[pifSEPERATS3arrayCount] = REFS3ETM2[i,j]; 
                                    pifSEPERATS3slaveETM3array[pifSEPERATS3arrayCount] = REFS3ETM3[i,j];
                            pifSEPERATS3slaveETM4array[pifSEPERATS3arrayCount] = REFS3ETM4[i,j];
                                    pifSEPERATS3slaveETM5array[pifSEPERATS3arrayCount] = REFS3ETM5[i,j];
                            pifSEPERATS3slaveETM7array[pifSEPERATS3arrayCount] = REFS3ETM7[i,j];
                                    pifSEPERATS3arrayCount = pifSEPERATS3arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM1arrayRAND[i] = pifSEPERATS3slaveETM1array[pifSEPERATS2S3ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM1arrayRAND[i] = pifSEPERATS3slaveETM1array[pifSEPERATS2S3TM1arrayRANDusedInd[i]];
                }
		}
                
                ################ band 2
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM2arrayRAND[i] = pifSEPERATS3slaveETM2array[pifSEPERATS2S3ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM2arrayRAND[i] = pifSEPERATS3slaveETM2array[pifSEPERATS2S3TM2arrayRANDusedInd[i]];
                }
		}
                ################ band 3
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM3arrayRAND[i] = pifSEPERATS3slaveETM3array[pifSEPERATS2S3ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM3arrayRAND[i] = pifSEPERATS3slaveETM3array[pifSEPERATS2S3TM3arrayRANDusedInd[i]];
                }
		}
                ################ band 4
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM4arrayRAND[i] = pifSEPERATS3slaveETM4array[pifSEPERATS2S3ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM4arrayRAND[i] = pifSEPERATS3slaveETM4array[pifSEPERATS2S3TM4arrayRANDusedInd[i]];
                }
		}
                ################ band 5
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM5arrayRAND[i] = pifSEPERATS3slaveETM5array[pifSEPERATS2S3ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM5arrayRAND[i] = pifSEPERATS3slaveETM5array[pifSEPERATS2S3TM5arrayRANDusedInd[i]];
                }                                                   
		}
                ################ band 7
               
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM7arrayRAND[i] = pifSEPERATS3slaveETM7array[pifSEPERATS2S3ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM7arrayRAND[i] = pifSEPERATS3slaveETM7array[pifSEPERATS2S3TM7arrayRANDusedInd[i]];
                }                                              
		}
	}
			else if ( sensors3 == 6 )
			{
			numeric pifSEPERATS3arrayCount = 1;
            	array pifSEPERATS3slaveTM1array[countS2S3total];
            	array pifSEPERATS3slaveTM2array[countS2S3total];
            	array pifSEPERATS3slaveTM3array[countS2S3total];
            	array pifSEPERATS3slaveTM4array[countS2S3total];
            	array pifSEPERATS3slaveTM5array[countS2S3total];
            	array pifSEPERATS3slaveTM7array[countS2S3total];
            
            	array pifSEPERATS3slaveTM1arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveTM2arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveTM3arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveTM4arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveTM5arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveTM7arrayRAND[minPifVAL];
            
			  for i = 1 to TMlins
                	  {
                    	for j = 1 to TMcols
                    	{     
                            if ( S2MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                            {
                                    pifSEPERATS3slaveTM1array[pifSEPERATS3arrayCount] = REFS3TM1[i,j];
                                        pifSEPERATS3slaveTM2array[pifSEPERATS3arrayCount] = REFS3TM2[i,j]; 
                                    pifSEPERATS3slaveTM3array[pifSEPERATS3arrayCount] = REFS3TM3[i,j];
                            pifSEPERATS3slaveTM4array[pifSEPERATS3arrayCount] = REFS3TM4[i,j];
                                    pifSEPERATS3slaveTM5array[pifSEPERATS3arrayCount] = REFS3TM5[i,j];
                            pifSEPERATS3slaveTM7array[pifSEPERATS3arrayCount] = REFS3TM7[i,j];
                                    pifSEPERATS3arrayCount = pifSEPERATS3arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM1arrayRAND[i] = pifSEPERATS3slaveTM1array[pifSEPERATS2S3ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM1arrayRAND[i] = pifSEPERATS3slaveTM1array[pifSEPERATS2S3TM1arrayRANDusedInd[i]];
                }
		}                                                
                
                ################ band 2
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM2arrayRAND[i] = pifSEPERATS3slaveTM2array[pifSEPERATS2S3ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM2arrayRAND[i] = pifSEPERATS3slaveTM2array[pifSEPERATS2S3TM2arrayRANDusedInd[i]];
                }
		}
                ################ band 3
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM3arrayRAND[i] = pifSEPERATS3slaveTM3array[pifSEPERATS2S3ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM3arrayRAND[i] = pifSEPERATS3slaveTM3array[pifSEPERATS2S3TM3arrayRANDusedInd[i]];
                }                                                    
		}
                ################ band 4
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM4arrayRAND[i] = pifSEPERATS3slaveTM4array[pifSEPERATS2S3ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM4arrayRAND[i] = pifSEPERATS3slaveTM4array[pifSEPERATS2S3TM4arrayRANDusedInd[i]];
                }                                                    
		}
                ################ band 5
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM5arrayRAND[i] = pifSEPERATS3slaveTM5array[pifSEPERATS2S3ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM5arrayRAND[i] = pifSEPERATS3slaveTM5array[pifSEPERATS2S3TM5arrayRANDusedInd[i]];
                }                                                    
		}
                ################ band 7
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM7arrayRAND[i] = pifSEPERATS3slaveTM7array[pifSEPERATS2S3ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM7arrayRAND[i] = pifSEPERATS3slaveTM7array[pifSEPERATS2S3TM7arrayRANDusedInd[i]];
                }
		}
	}
			else
			{
			numeric pifSEPERATS3arrayCount = 1;
            	array pifSEPERATS3slaveMSS1array[countS2S3total];
            	array pifSEPERATS3slaveMSS2array[countS2S3total];
            	array pifSEPERATS3slaveMSS3array[countS2S3total];
            	array pifSEPERATS3slaveMSS4array[countS2S3total];
            
            	array pifSEPERATS3slaveMSS1arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveMSS2arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveMSS3arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveMSS4arrayRAND[minPifVAL];
                        
			  for i = 1 to MSSlins
                	  {
                    	for j = 1 to MSScols
                    	{     
                            if ( S2MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                            {
                                    pifSEPERATS3slaveMSS1array[pifSEPERATS3arrayCount] = REFS3MSS1[i,j];
                                    pifSEPERATS3slaveMSS2array[pifSEPERATS3arrayCount] = REFS3MSS2[i,j]; 
                                    pifSEPERATS3slaveMSS3array[pifSEPERATS3arrayCount] = REFS3MSS3[i,j];
                                    pifSEPERATS3slaveMSS4array[pifSEPERATS3arrayCount] = REFS3MSS4[i,j];
                                    pifSEPERATS3arrayCount = pifSEPERATS3arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS1arrayRAND[i] = pifSEPERATS3slaveMSS1array[pifSEPERATS2S3ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS1arrayRAND[i] = pifSEPERATS3slaveMSS1array[pifSEPERATS2S3TM2arrayRANDusedInd[i]];
                }                                                    
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS1arrayRAND[i] = pifSEPERATS3slaveMSS1array[pifSEPERATS2S3MSS1arrayRANDusedInd[i]];
                }
		}
                
                ################ band 2
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS2arrayRAND[i] = pifSEPERATS3slaveMSS2array[pifSEPERATS2S3ETM3arrayRANDusedInd[i]];
                }
		}
             
		else if ( sensors2 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS2arrayRAND[i] = pifSEPERATS3slaveMSS2array[pifSEPERATS2S3TM3arrayRANDusedInd[i]];
                }                                                  
   		}
		else 
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS2arrayRAND[i] = pifSEPERATS3slaveMSS2array[pifSEPERATS2S3MSS2arrayRANDusedInd[i]];
                }
		}
                ################ band 3
             
        if ( sensors2 == 5 or sensors2 == 4 or sensors2 == 3 or sensors2 == 2 or sensors2 == 1 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS3arrayRAND[i] = pifSEPERATS3slaveMSS3array[pifSEPERATS2S3MSS3arrayRANDusedInd[i]];
                }
		}
                
                ################ band 4
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS4arrayRAND[i] = pifSEPERATS3slaveMSS4array[pifSEPERATS2S3ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS4arrayRAND[i] = pifSEPERATS3slaveMSS4array[pifSEPERATS2S3TM4arrayRANDusedInd[i]];
                }
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS4arrayRAND[i] = pifSEPERATS3slaveMSS4array[pifSEPERATS2S3MSS4arrayRANDusedInd[i]];
                }
		}                                                
	}
			if ( sensors4 == 7 )
			{
			numeric pifSEPERATS4arrayCount = 1;
            	array pifSEPERATS4slaveETM1array[countS2S4total];
            	array pifSEPERATS4slaveETM2array[countS2S4total];
            	array pifSEPERATS4slaveETM3array[countS2S4total];
            	array pifSEPERATS4slaveETM4array[countS2S4total];
            	array pifSEPERATS4slaveETM5array[countS2S4total];
            	array pifSEPERATS4slaveETM7array[countS2S4total];
            
            	array pifSEPERATS4slaveETM1arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveETM2arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveETM3arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveETM4arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveETM5arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveETM7arrayRAND[minPifVAL];
            
			  for i = 1 to ETMlins
                	  {
                    	for j = 1 to ETMcols
                    	{     
                            if ( S2MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                            {
                                    pifSEPERATS4slaveETM1array[pifSEPERATS4arrayCount] = REFS4ETM1[i,j];
                                        pifSEPERATS4slaveETM2array[pifSEPERATS4arrayCount] = REFS4ETM2[i,j]; 
                                    pifSEPERATS4slaveETM3array[pifSEPERATS4arrayCount] = REFS4ETM3[i,j];
                            pifSEPERATS4slaveETM4array[pifSEPERATS4arrayCount] = REFS4ETM4[i,j];
                                    pifSEPERATS4slaveETM5array[pifSEPERATS4arrayCount] = REFS4ETM5[i,j];
                            pifSEPERATS4slaveETM7array[pifSEPERATS4arrayCount] = REFS4ETM7[i,j];
                                    pifSEPERATS4arrayCount = pifSEPERATS4arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM1arrayRAND[i] = pifSEPERATS4slaveETM1array[pifSEPERATS2S4ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM1arrayRAND[i] = pifSEPERATS4slaveETM1array[pifSEPERATS2S4TM1arrayRANDusedInd[i]];
                }                                                   
		}
                
                ################ band 2
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM2arrayRAND[i] = pifSEPERATS4slaveETM2array[pifSEPERATS2S4ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM2arrayRAND[i] = pifSEPERATS4slaveETM2array[pifSEPERATS2S4TM2arrayRANDusedInd[i]];
                }                                                   
		}
                ################ band 3
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM3arrayRAND[i] = pifSEPERATS4slaveETM3array[pifSEPERATS2S4ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM3arrayRAND[i] = pifSEPERATS4slaveETM3array[pifSEPERATS2S4TM3arrayRANDusedInd[i]];
                }    
		}
                ################ band 4
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM4arrayRAND[i] = pifSEPERATS4slaveETM4array[pifSEPERATS2S4ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM4arrayRAND[i] = pifSEPERATS4slaveETM4array[pifSEPERATS2S4TM4arrayRANDusedInd[i]];
                }                                                   
		}
                ################ band 5
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM5arrayRAND[i] = pifSEPERATS4slaveETM5array[pifSEPERATS2S4ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM5arrayRAND[i] = pifSEPERATS4slaveETM5array[pifSEPERATS2S4TM5arrayRANDusedInd[i]];
                }                                                 
		}
                ################ band 7
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM7arrayRAND[i] = pifSEPERATS4slaveETM7array[pifSEPERATS2S4ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM7arrayRAND[i] = pifSEPERATS4slaveETM7array[pifSEPERATS2S4TM7arrayRANDusedInd[i]];
                }                                                  
		}
	}
			else if ( sensors4 == 6 )
			{
			numeric pifSEPERATS4arrayCount = 1;
            	array pifSEPERATS4slaveTM1array[countS2S4total];
            	array pifSEPERATS4slaveTM2array[countS2S4total];
            	array pifSEPERATS4slaveTM3array[countS2S4total];
            	array pifSEPERATS4slaveTM4array[countS2S4total];
            	array pifSEPERATS4slaveTM5array[countS2S4total];
            	array pifSEPERATS4slaveTM7array[countS2S4total];
            
            	array pifSEPERATS4slaveTM1arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveTM2arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveTM3arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveTM4arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveTM5arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveTM7arrayRAND[minPifVAL];
            
			  for i = 1 to TMlins
                	  {
                    	for j = 1 to TMcols
                    	{     
                            if ( S2MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                            {
                                    pifSEPERATS4slaveTM1array[pifSEPERATS4arrayCount] = REFS4TM1[i,j];
                                    pifSEPERATS4slaveTM2array[pifSEPERATS4arrayCount] = REFS4TM2[i,j]; 
                                    pifSEPERATS4slaveTM3array[pifSEPERATS4arrayCount] = REFS4TM3[i,j];
                                    pifSEPERATS4slaveTM4array[pifSEPERATS4arrayCount] = REFS4TM4[i,j];
                                    pifSEPERATS4slaveTM5array[pifSEPERATS4arrayCount] = REFS4TM5[i,j];
                                    pifSEPERATS4slaveTM7array[pifSEPERATS4arrayCount] = REFS4TM7[i,j];
                                    pifSEPERATS4arrayCount = pifSEPERATS4arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM1arrayRAND[i] = pifSEPERATS4slaveTM1array[pifSEPERATS2S4ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM1arrayRAND[i] = pifSEPERATS4slaveTM1array[pifSEPERATS2S4TM1arrayRANDusedInd[i]];
                }                                                    
		}
                
                ################ band 2
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM2arrayRAND[i] = pifSEPERATS4slaveTM2array[pifSEPERATS2S4ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM2arrayRAND[i] = pifSEPERATS4slaveTM2array[pifSEPERATS2S4TM2arrayRANDusedInd[i]];
                }                                                   
		}
                ################ band 3
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM3arrayRAND[i] = pifSEPERATS4slaveTM3array[pifSEPERATS2S4ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM3arrayRAND[i] = pifSEPERATS4slaveTM3array[pifSEPERATS2S4TM3arrayRANDusedInd[i]];
                }
		}
                ################ band 4
             
		if ( sensors2 == 7 )
		{                  
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM4arrayRAND[i] = pifSEPERATS4slaveTM4array[pifSEPERATS2S4ETM4arrayRANDusedInd[i]];
                }
            }
		else if ( sensors2 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM4arrayRAND[i] = pifSEPERATS4slaveTM4array[pifSEPERATS2S4TM4arrayRANDusedInd[i]];
                }                                                  
		}   
                ################ band 5
            
		if ( sensors2 == 7 )
		{                                                     
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM5arrayRAND[i] = pifSEPERATS4slaveTM5array[pifSEPERATS2S4ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 7 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM5arrayRAND[i] = pifSEPERATS4slaveTM5array[pifSEPERATS2S4TM5arrayRANDusedInd[i]];
                }                                                   
		}
                ################ band 7
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM7arrayRAND[i] = pifSEPERATS4slaveTM7array[pifSEPERATS2S4ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM7arrayRAND[i] = pifSEPERATS4slaveTM7array[pifSEPERATS2S4TM7arrayRANDusedInd[i]];
                }                                                  
		}
	}
			else
			{
			numeric pifSEPERATS4arrayCount = 1;
            	array pifSEPERATS4slaveMSS1array[countS2S4total];
            	array pifSEPERATS4slaveMSS2array[countS2S4total];
            	array pifSEPERATS4slaveMSS3array[countS2S4total];
            	array pifSEPERATS4slaveMSS4array[countS2S4total];
            
            	array pifSEPERATS4slaveMSS1arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveMSS2arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveMSS3arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveMSS4arrayRAND[minPifVAL];
            
			  for i = 1 to MSSlins
                	  {
                    	for j = 1 to MSScols
                    	{     
                            if ( S2MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                            {
                                    pifSEPERATS4slaveMSS1array[pifSEPERATS4arrayCount] = REFS4MSS1[i,j];
                                    pifSEPERATS4slaveMSS2array[pifSEPERATS4arrayCount] = REFS4MSS2[i,j]; 
                                    pifSEPERATS4slaveMSS3array[pifSEPERATS4arrayCount] = REFS4MSS3[i,j];
                                    pifSEPERATS4slaveMSS4array[pifSEPERATS4arrayCount] = REFS4MSS4[i,j];
                                    pifSEPERATS4arrayCount = pifSEPERATS4arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS1arrayRAND[i] = pifSEPERATS4slaveMSS1array[pifSEPERATS2S4ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS1arrayRAND[i] = pifSEPERATS4slaveMSS1array[pifSEPERATS2S4TM2arrayRANDusedInd[i]];
                }                                                   
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS1arrayRAND[i] = pifSEPERATS4slaveMSS1array[pifSEPERATS2S4MSS1arrayRANDusedInd[i]];
                }
		}
                
                ################ band 2
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS2arrayRAND[i] = pifSEPERATS4slaveMSS2array[pifSEPERATS2S4ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS2arrayRAND[i] = pifSEPERATS4slaveMSS2array[pifSEPERATS2S4TM3arrayRANDusedInd[i]];
                }                                                    
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS2arrayRAND[i] = pifSEPERATS4slaveMSS2array[pifSEPERATS2S4MSS2arrayRANDusedInd[i]];
                }
		}
                
                ################ band 3
             
        if ( sensors2 == 5 or sensors2 == 4 or sensors2 == 3 or sensors2 == 2 or sensors2 == 1 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS3arrayRAND[i] = pifSEPERATS4slaveMSS3array[pifSEPERATS2S4MSS3arrayRANDusedInd[i]];
                }
		}
                
                ################ band 4
             
		if ( sensors2 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS4arrayRAND[i] = pifSEPERATS4slaveMSS4array[pifSEPERATS2S4ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors2 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS4arrayRAND[i] = pifSEPERATS4slaveMSS4array[pifSEPERATS2S4TM4arrayRANDusedInd[i]];
                }                                                   
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS4arrayRAND[i] = pifSEPERATS4slaveMSS4array[pifSEPERATS2S4MSS4arrayRANDusedInd[i]];
                }
		}
	}
   }
            
            if ( pifSEPERATS2S1arrayCount < minPifVAL )
            {
               printf("For the PIF mask combination Scene 2 and Scene 1 %5i pixels were needed, but only %5i were found.\n", minPifVAL, pifSEPERATS2S1arrayCount);
            }
            
            if ( pifSEPERATS2S3arrayCount < minPifVAL )
            {
               printf("For the PIF mask combination Scene 2 and Scene 3 %5i pixels were needed, but only %5i were found.\n", minPifVAL, pifSEPERATS2S3arrayCount);
            }
            
            if ( pifSEPERATS2S4arrayCount < minPifVAL )
            {
               printf("For the PIF mask combination Scene 2 and Scene 4 %5i pixels were needed, but only %5i were found.\n", minPifVAL, pifSEPERATS2S4arrayCount);
            }
            if ( pifSEPERATS2S1arrayCount < minPifVAL && pifSEPERATS2S3arrayCount < minPifVAL && pifSEPERATS2S4arrayCount < minPifVAL )
            {
                printf("All PIF-masks have a smaller pixelcount than minPifVAL requires... %5i pixels are needed for each raster... Quitting...\n\n", minPifVAL);
                Exit();
            }
    }
  
    else if ( slaveMaster == 3 )
    {
	    if ( countS3S1total >= minPifVAL && countS3S2total >= minPifVAL && countS3S4total >= minPifVAL )
	    {
			if ( sensors3 == 7 )
			{
			numeric pifSEPERATS3S1arrayCount = 1;
			numeric pifSEPERATS3S2arrayCount = 1;
			numeric pifSEPERATS3S4arrayCount = 1;
            	array pifSEPERATS3S1ETM1array[countS3S1total];
            	array pifSEPERATS3S1ETM2array[countS3S1total];
            	array pifSEPERATS3S1ETM3array[countS3S1total];
            	array pifSEPERATS3S1ETM4array[countS3S1total];
            	array pifSEPERATS3S1ETM5array[countS3S1total];
            	array pifSEPERATS3S1ETM7array[countS3S1total];
            
            	array pifSEPERATS3S1ETM1arrayRAND[minPifVAL];
                array pifSEPERATS3S1ETM2arrayRAND[minPifVAL];
                array pifSEPERATS3S1ETM3arrayRAND[minPifVAL];
                array pifSEPERATS3S1ETM4arrayRAND[minPifVAL];
                array pifSEPERATS3S1ETM5arrayRAND[minPifVAL];
                array pifSEPERATS3S1ETM7arrayRAND[minPifVAL];
    
                array pifSEPERATS3S1ETM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S1ETM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S1ETM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S1ETM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S1ETM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S1ETM7arrayRANDusedInd[minPifVAL];
                
            	array pifSEPERATS3S2ETM1array[countS3S2total];
            	array pifSEPERATS3S2ETM2array[countS3S2total];
            	array pifSEPERATS3S2ETM3array[countS3S2total];
            	array pifSEPERATS3S2ETM4array[countS3S2total];
            	array pifSEPERATS3S2ETM5array[countS3S2total];
            	array pifSEPERATS3S2ETM7array[countS3S2total];
            
            	array pifSEPERATS3S2ETM1arrayRAND[minPifVAL];
                array pifSEPERATS3S2ETM2arrayRAND[minPifVAL];
                array pifSEPERATS3S2ETM3arrayRAND[minPifVAL];
                array pifSEPERATS3S2ETM4arrayRAND[minPifVAL];
                array pifSEPERATS3S2ETM5arrayRAND[minPifVAL];
                array pifSEPERATS3S2ETM7arrayRAND[minPifVAL];
    
                array pifSEPERATS3S2ETM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S2ETM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S2ETM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S2ETM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S2ETM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S2ETM7arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS3S4ETM1array[countS3S4total];
            	array pifSEPERATS3S4ETM2array[countS3S4total];
            	array pifSEPERATS3S4ETM3array[countS3S4total];
            	array pifSEPERATS3S4ETM4array[countS3S4total];
            	array pifSEPERATS3S4ETM5array[countS3S4total];
            	array pifSEPERATS3S4ETM7array[countS3S4total];
            
            	array pifSEPERATS3S4ETM1arrayRAND[minPifVAL];
                array pifSEPERATS3S4ETM2arrayRAND[minPifVAL];
                array pifSEPERATS3S4ETM3arrayRAND[minPifVAL];
                array pifSEPERATS3S4ETM4arrayRAND[minPifVAL];
                array pifSEPERATS3S4ETM5arrayRAND[minPifVAL];
                array pifSEPERATS3S4ETM7arrayRAND[minPifVAL];
    
                array pifSEPERATS3S4ETM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S4ETM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S4ETM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S4ETM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S4ETM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S4ETM7arrayRANDusedInd[minPifVAL];
                	  for i = 1 to ETMlins
                	  {
                    	for j = 1 to ETMcols
                    	{     
                            if ( S3MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS3S1ETM1array[pifSEPERATS3S1arrayCount] = REFS3ETM1[i,j];                        
                                        pifSEPERATS3S1ETM2array[pifSEPERATS3S1arrayCount] = REFS3ETM2[i,j];                        
                                    pifSEPERATS3S1ETM3array[pifSEPERATS3S1arrayCount] = REFS3ETM3[i,j];
                            pifSEPERATS3S1ETM4array[pifSEPERATS3S1arrayCount] = REFS3ETM4[i,j];
                                    pifSEPERATS3S1ETM5array[pifSEPERATS3S1arrayCount] = REFS3ETM5[i,j];
                            pifSEPERATS3S1ETM7array[pifSEPERATS3S1arrayCount] = REFS3ETM7[i,j];
                                    pifSEPERATS3S1arrayCount = pifSEPERATS3S1arrayCount + 1;
                            }
        
                            if ( S3MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                            {
                            pifSEPERATS3S2ETM1array[pifSEPERATS3S2arrayCount] = REFS3ETM1[i,j];                        
                                        pifSEPERATS3S2ETM2array[pifSEPERATS3S2arrayCount] = REFS3ETM2[i,j];                        
                                    pifSEPERATS3S2ETM3array[pifSEPERATS3S2arrayCount] = REFS3ETM3[i,j];
                            pifSEPERATS3S2ETM4array[pifSEPERATS3S2arrayCount] = REFS3ETM4[i,j];
                                    pifSEPERATS3S2ETM5array[pifSEPERATS3S2arrayCount] = REFS3ETM5[i,j];
                            pifSEPERATS3S2ETM7array[pifSEPERATS3S2arrayCount] = REFS3ETM7[i,j];
                            pifSEPERATS3S2arrayCount = pifSEPERATS3S2arrayCount + 1;
                            }
        
                            if ( S3MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                            {
                            pifSEPERATS3S4ETM1array[pifSEPERATS3S4arrayCount] = REFS3ETM1[i,j];                        
                                        pifSEPERATS3S4ETM2array[pifSEPERATS3S4arrayCount] = REFS3ETM2[i,j];                        
                                    pifSEPERATS3S4ETM3array[pifSEPERATS3S4arrayCount] = REFS3ETM3[i,j];
                            pifSEPERATS3S4ETM4array[pifSEPERATS3S4arrayCount] = REFS3ETM4[i,j];
                                    pifSEPERATS3S4ETM5array[pifSEPERATS3S4arrayCount] = REFS3ETM5[i,j];
                            pifSEPERATS3S4ETM7array[pifSEPERATS3S4arrayCount] = REFS3ETM7[i,j];
                            pifSEPERATS3S4arrayCount = pifSEPERATS3S4arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ############# band 1
            
                numeric validSEPERATS3S1ETM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S1ETM1 == 0 )
                    {
                        numeric randomValueSEPERATS3S1ETM1 = floor((rand(countS3S1total) + 1));      
                        validSEPERATS3S1ETM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S1ETM1 = pifSEPERATS3S1ETM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S1ETM1 == randomValueSEPERATS3S1ETM1 )
                            {
                                validSEPERATS3S1ETM1 = 0;
                            }
                        }
                    }
                pifSEPERATS3S1ETM1arrayRAND[i] = pifSEPERATS3S1ETM1array[randomValueSEPERATS3S1ETM1];
                pifSEPERATS3S1ETM1arrayRANDusedInd[i] = randomValueSEPERATS3S1ETM1;
                validSEPERATS3S1ETM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS3S1ETM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S1ETM2 == 0 )
                    {
                        numeric randomValueSEPERATS3S1ETM2 = floor((rand(countS3S1total) + 1));      
                        validSEPERATS3S1ETM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S1ETM2 = pifSEPERATS3S1ETM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S1ETM2 == randomValueSEPERATS3S1ETM2 )
                            {
                                validSEPERATS3S1ETM2 = 0;
                            }
                        }
                    }
                pifSEPERATS3S1ETM2arrayRAND[i] = pifSEPERATS3S1ETM2array[randomValueSEPERATS3S1ETM2];
                pifSEPERATS3S1ETM2arrayRANDusedInd[i] = randomValueSEPERATS3S1ETM2;
                validSEPERATS3S1ETM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS3S1ETM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S1ETM3 == 0 )
                    {
                        numeric randomValueSEPERATS3S1ETM3 = floor((rand(countS3S1total) + 1));      
                        validSEPERATS3S1ETM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S1ETM3 = pifSEPERATS3S1ETM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S1ETM3 == randomValueSEPERATS3S1ETM3 )
                            {
                                validSEPERATS3S1ETM3 = 0;
                            }
                        }
                    }
                pifSEPERATS3S1ETM3arrayRAND[i] = pifSEPERATS3S1ETM3array[randomValueSEPERATS3S1ETM3];
                pifSEPERATS3S1ETM3arrayRANDusedInd[i] = randomValueSEPERATS3S1ETM3;
                validSEPERATS3S1ETM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS3S1ETM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S1ETM4 == 0 )
                    {
                        numeric randomValueSEPERATS3S1ETM4 = floor((rand(countS3S1total) + 1));      
                        validSEPERATS3S1ETM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S1ETM4 = pifSEPERATS3S1ETM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S1ETM4 == randomValueSEPERATS3S1ETM4 )
                            {
                                validSEPERATS3S1ETM4 = 0;
                            }
                        }
                    }
                pifSEPERATS3S1ETM4arrayRAND[i] = pifSEPERATS3S1ETM4array[randomValueSEPERATS3S1ETM4];
                pifSEPERATS3S1ETM4arrayRANDusedInd[i] = randomValueSEPERATS3S1ETM4;
                validSEPERATS3S1ETM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS3S1ETM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S1ETM5 == 0 )
                    {
                        numeric randomValueSEPERATS3S1ETM5 = floor((rand(countS3S1total) + 1));      
                        validSEPERATS3S1ETM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S1ETM5 = pifSEPERATS3S1ETM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S1ETM5 == randomValueSEPERATS3S1ETM5 )
                            {
                                validSEPERATS3S1ETM5 = 0;
                            }
                        }
                    }
                pifSEPERATS3S1ETM5arrayRAND[i] = pifSEPERATS3S1ETM5array[randomValueSEPERATS3S1ETM5];
                pifSEPERATS3S1ETM5arrayRANDusedInd[i] = randomValueSEPERATS3S1ETM5;
                validSEPERATS3S1ETM5 = 0;
                }
            
            ################ band 7
                
                numeric validSEPERATS3S1ETM7 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S1ETM7 == 0 )
                    {
                        numeric randomValueSEPERATS3S1ETM7 = floor((rand(countS3S1total) + 1));      
                        validSEPERATS3S1ETM7 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S1ETM7 = pifSEPERATS3S1ETM7arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S1ETM7 == randomValueSEPERATS3S1ETM7 )
                            {
                                validSEPERATS3S1ETM7 = 0;
                            }
                        }
                    }
                pifSEPERATS3S1ETM7arrayRAND[i] = pifSEPERATS3S1ETM7array[randomValueSEPERATS3S1ETM7];
                pifSEPERATS3S1ETM7arrayRANDusedInd[i] = randomValueSEPERATS3S1ETM7;
                validSEPERATS3S1ETM7 = 0;
                }
            
            
            ###################################################
            
            	############# band 1
            
                numeric validSEPERATS3S2ETM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S2ETM1 == 0 )
                    {
                        numeric randomValueSEPERATS3S2ETM1 = floor((rand(countS3S2total) + 1));      
                        validSEPERATS3S2ETM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S2ETM1 = pifSEPERATS3S2ETM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S2ETM1 == randomValueSEPERATS3S2ETM1 )
                            {
                                validSEPERATS3S2ETM1 = 0;
                            }
                        }
                    }
                pifSEPERATS3S2ETM1arrayRAND[i] = pifSEPERATS3S2ETM1array[randomValueSEPERATS3S2ETM1];
                pifSEPERATS3S2ETM1arrayRANDusedInd[i] = randomValueSEPERATS3S2ETM1;
                validSEPERATS3S2ETM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS3S2ETM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S2ETM2 == 0 )
                    {
                        numeric randomValueSEPERATS3S2ETM2 = floor((rand(countS3S2total) + 1));      
                        validSEPERATS3S2ETM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S2ETM2 = pifSEPERATS3S2ETM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S2ETM2 == randomValueSEPERATS3S2ETM2 )
                            {
                                validSEPERATS3S2ETM2 = 0;
                            }
                        }
                    }
                pifSEPERATS3S2ETM2arrayRAND[i] = pifSEPERATS3S2ETM2array[randomValueSEPERATS3S2ETM2];
                pifSEPERATS3S2ETM2arrayRANDusedInd[i] = randomValueSEPERATS3S2ETM2;
                validSEPERATS3S2ETM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS3S2ETM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S2ETM3 == 0 )
                    {
                        numeric randomValueSEPERATS3S2ETM3 = floor((rand(countS3S2total) + 1));      
                        validSEPERATS3S2ETM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S2ETM3 = pifSEPERATS3S2ETM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S2ETM3 == randomValueSEPERATS3S2ETM3 )
                            {
                                validSEPERATS3S2ETM3 = 0;
                            }
                        }
                    }
                pifSEPERATS3S2ETM3arrayRAND[i] = pifSEPERATS3S2ETM3array[randomValueSEPERATS3S2ETM3];
                pifSEPERATS3S2ETM3arrayRANDusedInd[i] = randomValueSEPERATS3S2ETM3;
                validSEPERATS3S2ETM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS3S2ETM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S2ETM4 == 0 )
                    {
                        numeric randomValueSEPERATS3S2ETM4 = floor((rand(countS3S2total) + 1));      
                        validSEPERATS3S2ETM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S2ETM4 = pifSEPERATS3S2ETM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S2ETM4 == randomValueSEPERATS3S2ETM4 )
                            {
                                validSEPERATS3S2ETM4 = 0;
                            }
                        }
                    }
                pifSEPERATS3S2ETM4arrayRAND[i] = pifSEPERATS3S2ETM4array[randomValueSEPERATS3S2ETM4];
                pifSEPERATS3S2ETM4arrayRANDusedInd[i] = randomValueSEPERATS3S2ETM4;
                validSEPERATS3S2ETM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS3S2ETM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S2ETM5 == 0 )
                    {
                        numeric randomValueSEPERATS3S2ETM5 = floor((rand(countS3S2total) + 1));      
                        validSEPERATS3S2ETM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S2ETM5 = pifSEPERATS3S2ETM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S2ETM5 == randomValueSEPERATS3S2ETM5 )
                            {
                                validSEPERATS3S2ETM5 = 0;
                            }
                        }
                    }
                pifSEPERATS3S2ETM5arrayRAND[i] = pifSEPERATS3S2ETM5array[randomValueSEPERATS3S2ETM5];
                pifSEPERATS3S2ETM5arrayRANDusedInd[i] = randomValueSEPERATS3S2ETM5;
                validSEPERATS3S2ETM5 = 0;
                }
            
            ################ band 7
                
                numeric validSEPERATS3S2ETM7 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S2ETM7 == 0 )
                    {
                        numeric randomValueSEPERATS3S2ETM7 = floor((rand(countS3S2total) + 1));      
                        validSEPERATS3S2ETM7 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S2ETM7 = pifSEPERATS3S2ETM7arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S2ETM7 == randomValueSEPERATS3S2ETM7 )
                            {
                                validSEPERATS3S2ETM7 = 0;
                            }
                        }
                    }
                pifSEPERATS3S2ETM7arrayRAND[i] = pifSEPERATS3S2ETM7array[randomValueSEPERATS3S2ETM7];
                pifSEPERATS3S2ETM7arrayRANDusedInd[i] = randomValueSEPERATS3S2ETM7;
                validSEPERATS3S2ETM7 = 0;
                }
            
            #######################################
            
            	############# band 1
            
                numeric validSEPERATS3S4ETM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S4ETM1 == 0 )
                    {
                        numeric randomValueSEPERATS3S4ETM1 = floor((rand(countS3S4total) + 1));      
                        validSEPERATS3S4ETM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S4ETM1 = pifSEPERATS3S4ETM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S4ETM1 == randomValueSEPERATS3S4ETM1 )
                            {
                                validSEPERATS3S4ETM1 = 0;
                            }
                        }
                    }
                pifSEPERATS3S4ETM1arrayRAND[i] = pifSEPERATS3S4ETM1array[randomValueSEPERATS3S4ETM1];
                pifSEPERATS3S4ETM1arrayRANDusedInd[i] = randomValueSEPERATS3S4ETM1;
                validSEPERATS3S4ETM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS3S4ETM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S4ETM2 == 0 )
                    {
                        numeric randomValueSEPERATS3S4ETM2 = floor((rand(countS3S4total) + 1));      
                        validSEPERATS3S4ETM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S4ETM2 = pifSEPERATS3S4ETM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S4ETM2 == randomValueSEPERATS3S4ETM2 )
                            {
                                validSEPERATS3S4ETM2 = 0;
                            }
                        }
                    }
                pifSEPERATS3S4ETM2arrayRAND[i] = pifSEPERATS3S4ETM2array[randomValueSEPERATS3S4ETM2];
                pifSEPERATS3S4ETM2arrayRANDusedInd[i] = randomValueSEPERATS3S4ETM2;
                validSEPERATS3S4ETM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS3S4ETM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S4ETM3 == 0 )
                    {
                        numeric randomValueSEPERATS3S4ETM3 = floor((rand(countS3S4total) + 1));      
                        validSEPERATS3S4ETM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S4ETM3 = pifSEPERATS3S4ETM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S4ETM3 == randomValueSEPERATS3S4ETM3 )
                            {
                                validSEPERATS3S4ETM3 = 0;
                            }
                        }
                    }
                pifSEPERATS3S4ETM3arrayRAND[i] = pifSEPERATS3S4ETM3array[randomValueSEPERATS3S4ETM3];
                pifSEPERATS3S4ETM3arrayRANDusedInd[i] = randomValueSEPERATS3S4ETM3;
                validSEPERATS3S4ETM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS3S4ETM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S4ETM4 == 0 )
                    {
                        numeric randomValueSEPERATS3S4ETM4 = floor((rand(countS3S4total) + 1));      
                        validSEPERATS3S4ETM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S4ETM4 = pifSEPERATS3S4ETM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S4ETM4 == randomValueSEPERATS3S4ETM4 )
                            {
                                validSEPERATS3S4ETM4 = 0;
                            }
                        }
                    }
                pifSEPERATS3S4ETM4arrayRAND[i] = pifSEPERATS3S4ETM4array[randomValueSEPERATS3S4ETM4];
                pifSEPERATS3S4ETM4arrayRANDusedInd[i] = randomValueSEPERATS3S4ETM4;
                validSEPERATS3S4ETM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS3S4ETM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S4ETM5 == 0 )
                    {
                        numeric randomValueSEPERATS3S4ETM5 = floor((rand(countS3S4total) + 1));      
                        validSEPERATS3S4ETM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S4ETM5 = pifSEPERATS3S4ETM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S4ETM5 == randomValueSEPERATS3S4ETM5 )
                            {
                                validSEPERATS3S4ETM5 = 0;
                            }
                        }
                    }
                pifSEPERATS3S4ETM5arrayRAND[i] = pifSEPERATS3S4ETM5array[randomValueSEPERATS3S4ETM5];
                pifSEPERATS3S4ETM5arrayRANDusedInd[i] = randomValueSEPERATS3S4ETM5;
                validSEPERATS3S4ETM5 = 0;
                }
            
            ################ band 7
                
                    numeric validSEPERATS3S4ETM7 = 0;
                 
                    for i = 1 to minPifVAL
                    {
                        while ( validSEPERATS3S4ETM7 == 0 )
                        {
                            numeric randomValueSEPERATS3S4ETM7 = floor((rand(countS3S4total) + 1));      
                            validSEPERATS3S4ETM7 = 1;
                
                            for j = 1 to (i-1)
                            {
                                local numeric testValueSEPERATS3S4ETM7 = pifSEPERATS3S4ETM7arrayRANDusedInd[j];
                            
                                if ( testValueSEPERATS3S4ETM7 == randomValueSEPERATS3S4ETM7 )
                                {
                                    validSEPERATS3S4ETM7 = 0;
                                }
                            }
                        }
                    pifSEPERATS3S4ETM7arrayRAND[i] = pifSEPERATS3S4ETM7array[randomValueSEPERATS3S4ETM7];
                    pifSEPERATS3S4ETM7arrayRANDusedInd[i] = randomValueSEPERATS3S4ETM7;
                    validSEPERATS3S4ETM7 = 0;
                    }
			}
			else if ( sensors3 == 6 )
			{
			numeric pifSEPERATS3S1arrayCount = 1;
			numeric pifSEPERATS3S2arrayCount = 1;
			numeric pifSEPERATS3S4arrayCount = 1;
            	array pifSEPERATS3S1TM1array[countS3S1total];
            	array pifSEPERATS3S1TM2array[countS3S1total];
            	array pifSEPERATS3S1TM3array[countS3S1total];
            	array pifSEPERATS3S1TM4array[countS3S1total];
            	array pifSEPERATS3S1TM5array[countS3S1total];
            	array pifSEPERATS3S1TM7array[countS3S1total];
            
            	array pifSEPERATS3S1TM1arrayRAND[minPifVAL];
            	array pifSEPERATS3S1TM2arrayRAND[minPifVAL];
            	array pifSEPERATS3S1TM3arrayRAND[minPifVAL];
            	array pifSEPERATS3S1TM4arrayRAND[minPifVAL];
            	array pifSEPERATS3S1TM5arrayRAND[minPifVAL];
            	array pifSEPERATS3S1TM7arrayRAND[minPifVAL];
            
            	array pifSEPERATS3S1TM1arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS3S1TM2arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS3S1TM3arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS3S1TM4arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS3S1TM5arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS3S1TM7arrayRANDusedInd[minPifVAL];
            
            	array pifSEPERATS3S2TM1array[countS3S2total];
            	array pifSEPERATS3S2TM2array[countS3S2total];
            	array pifSEPERATS3S2TM3array[countS3S2total];
            	array pifSEPERATS3S2TM4array[countS3S2total];
            	array pifSEPERATS3S2TM5array[countS3S2total];
            	array pifSEPERATS3S2TM7array[countS3S2total];
            
            	array pifSEPERATS3S2TM1arrayRAND[minPifVAL];
                array pifSEPERATS3S2TM2arrayRAND[minPifVAL];
                array pifSEPERATS3S2TM3arrayRAND[minPifVAL];
                array pifSEPERATS3S2TM4arrayRAND[minPifVAL];
                array pifSEPERATS3S2TM5arrayRAND[minPifVAL];
                array pifSEPERATS3S2TM7arrayRAND[minPifVAL];
    
                array pifSEPERATS3S2TM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S2TM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S2TM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S2TM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S2TM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S2TM7arrayRANDusedInd[minPifVAL];
                
            	array pifSEPERATS3S4TM1array[countS3S4total];
            	array pifSEPERATS3S4TM2array[countS3S4total];
            	array pifSEPERATS3S4TM3array[countS3S4total];
            	array pifSEPERATS3S4TM4array[countS3S4total];
            	array pifSEPERATS3S4TM5array[countS3S4total];
            	array pifSEPERATS3S4TM7array[countS3S4total];
            
            	array pifSEPERATS3S4TM1arrayRAND[minPifVAL];
                array pifSEPERATS3S4TM2arrayRAND[minPifVAL];
                array pifSEPERATS3S4TM3arrayRAND[minPifVAL];
                array pifSEPERATS3S4TM4arrayRAND[minPifVAL];
                array pifSEPERATS3S4TM5arrayRAND[minPifVAL];
                array pifSEPERATS3S4TM7arrayRAND[minPifVAL];
    
                array pifSEPERATS3S4TM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S4TM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S4TM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S4TM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S4TM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S4TM7arrayRANDusedInd[minPifVAL];
                	  for i = 1 to TMlins
                	  {
                    	for j = 1 to TMcols
                    	{     
                            if ( S3MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS3S1TM1array[pifSEPERATS3S1arrayCount] = REFS3TM1[i,j];                        
                                        pifSEPERATS3S1TM2array[pifSEPERATS3S1arrayCount] = REFS3TM2[i,j];                        
                                    pifSEPERATS3S1TM3array[pifSEPERATS3S1arrayCount] = REFS3TM3[i,j];
                            pifSEPERATS3S1TM4array[pifSEPERATS3S1arrayCount] = REFS3TM4[i,j];
                                    pifSEPERATS3S1TM5array[pifSEPERATS3S1arrayCount] = REFS3TM5[i,j];
                            pifSEPERATS3S1TM7array[pifSEPERATS3S1arrayCount] = REFS3TM7[i,j];
                                    pifSEPERATS3S1arrayCount = pifSEPERATS3S1arrayCount + 1;
                            }
        
                            if ( S3MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                            {
                            pifSEPERATS3S2TM1array[pifSEPERATS3S2arrayCount] = REFS3TM1[i,j];                        
                                        pifSEPERATS3S2TM2array[pifSEPERATS3S2arrayCount] = REFS3TM2[i,j];                        
                                    pifSEPERATS3S2TM3array[pifSEPERATS3S2arrayCount] = REFS3TM3[i,j];
                            pifSEPERATS3S2TM4array[pifSEPERATS3S2arrayCount] = REFS3TM4[i,j];
                                    pifSEPERATS3S2TM5array[pifSEPERATS3S2arrayCount] = REFS3TM5[i,j];
                            pifSEPERATS3S2TM7array[pifSEPERATS3S2arrayCount] = REFS3TM7[i,j];
                            pifSEPERATS3S2arrayCount = pifSEPERATS3S2arrayCount + 1;
                            }
        
                            if ( S3MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                            {
                            pifSEPERATS3S4TM1array[pifSEPERATS3S4arrayCount] = REFS3TM1[i,j];                        
                                        pifSEPERATS3S4TM2array[pifSEPERATS3S4arrayCount] = REFS3TM2[i,j];                        
                                    pifSEPERATS3S4TM3array[pifSEPERATS3S4arrayCount] = REFS3TM3[i,j];
                            pifSEPERATS3S4TM4array[pifSEPERATS3S4arrayCount] = REFS3TM4[i,j];
                                    pifSEPERATS3S4TM5array[pifSEPERATS3S4arrayCount] = REFS3TM5[i,j];
                            pifSEPERATS3S4TM7array[pifSEPERATS3S4arrayCount] = REFS3TM7[i,j];
                            pifSEPERATS3S4arrayCount = pifSEPERATS3S4arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ############# band 1
            
                numeric validSEPERATS3S1TM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S1TM1 == 0 )
                    {
                        numeric randomValueSEPERATS3S1TM1 = floor((rand(countS3S1total) + 1));      
                        validSEPERATS3S1TM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S1TM1 = pifSEPERATS3S1TM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S1TM1 == randomValueSEPERATS3S1TM1 )
                            {
                                validSEPERATS3S1TM1 = 0;
                            }
                        }
                    }
                pifSEPERATS3S1TM1arrayRAND[i] = pifSEPERATS3S1TM1array[randomValueSEPERATS3S1TM1];
                pifSEPERATS3S1TM1arrayRANDusedInd[i] = randomValueSEPERATS3S1TM1;
                validSEPERATS3S1TM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS3S1TM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S1TM2 == 0 )
                    {
                        numeric randomValueSEPERATS3S1TM2 = floor((rand(countS3S1total) + 1));      
                        validSEPERATS3S1TM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S1TM2 = pifSEPERATS3S1TM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S1TM2 == randomValueSEPERATS3S1TM2 )
                            {
                                validSEPERATS3S1TM2 = 0;
                            }
                        }
                    }
                pifSEPERATS3S1TM2arrayRAND[i] = pifSEPERATS3S1TM2array[randomValueSEPERATS3S1TM2];
                pifSEPERATS3S1TM2arrayRANDusedInd[i] = randomValueSEPERATS3S1TM2;
                validSEPERATS3S1TM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS3S1TM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S1TM3 == 0 )
                    {
                        numeric randomValueSEPERATS3S1TM3 = floor((rand(countS3S1total) + 1));      
                        validSEPERATS3S1TM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S1TM3 = pifSEPERATS3S1TM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S1TM3 == randomValueSEPERATS3S1TM3 )
                            {
                                validSEPERATS3S1TM3 = 0;
                            }
                        }
                    }
                pifSEPERATS3S1TM3arrayRAND[i] = pifSEPERATS3S1TM3array[randomValueSEPERATS3S1TM3];
                pifSEPERATS3S1TM3arrayRANDusedInd[i] = randomValueSEPERATS3S1TM3;
                validSEPERATS3S1TM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS3S1TM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S1TM4 == 0 )
                    {
                        numeric randomValueSEPERATS3S1TM4 = floor((rand(countS3S1total) + 1));      
                        validSEPERATS3S1TM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S1TM4 = pifSEPERATS3S1TM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S1TM4 == randomValueSEPERATS3S1TM4 )
                            {
                                validSEPERATS3S1TM4 = 0;
                            }
                        }
                    }
                pifSEPERATS3S1TM4arrayRAND[i] = pifSEPERATS3S1TM4array[randomValueSEPERATS3S1TM4];
                pifSEPERATS3S1TM4arrayRANDusedInd[i] = randomValueSEPERATS3S1TM4;
                validSEPERATS3S1TM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS3S1TM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S1TM5 == 0 )
                    {
                        numeric randomValueSEPERATS3S1TM5 = floor((rand(countS3S1total) + 1));      
                        validSEPERATS3S1TM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S1TM5 = pifSEPERATS3S1TM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S1TM5 == randomValueSEPERATS3S1TM5 )
                            {
                                validSEPERATS3S1TM5 = 0;
                            }
                        }
                    }
                pifSEPERATS3S1TM5arrayRAND[i] = pifSEPERATS3S1TM5array[randomValueSEPERATS3S1TM5];
                pifSEPERATS3S1TM5arrayRANDusedInd[i] = randomValueSEPERATS3S1TM5;
                validSEPERATS3S1TM5 = 0;
                }
            
            ################ band 7
                
                numeric validSEPERATS3S1TM7 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S1TM7 == 0 )
                    {
                        numeric randomValueSEPERATS3S1TM7 = floor((rand(countS3S1total) + 1));      
                        validSEPERATS3S1TM7 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S1TM7 = pifSEPERATS3S1TM7arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S1TM7 == randomValueSEPERATS3S1TM7 )
                            {
                                validSEPERATS3S1TM7 = 0;
                            }
                        }
                    }
                pifSEPERATS3S1TM7arrayRAND[i] = pifSEPERATS3S1TM7array[randomValueSEPERATS3S1TM7];
                pifSEPERATS3S1TM7arrayRANDusedInd[i] = randomValueSEPERATS3S1TM7;
                validSEPERATS3S1TM7 = 0;
                }
            
            
            ###################################################
            
            	############# band 1
            
                numeric validSEPERATS3S2TM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S2TM1 == 0 )
                    {
                        numeric randomValueSEPERATS3S2TM1 = floor((rand(countS3S2total) + 1));      
                        validSEPERATS3S2TM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S2TM1 = pifSEPERATS3S2TM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S2TM1 == randomValueSEPERATS3S2TM1 )
                            {
                                validSEPERATS3S2TM1 = 0;
                            }
                        }
                    }
                pifSEPERATS3S2TM1arrayRAND[i] = pifSEPERATS3S2TM1array[randomValueSEPERATS3S2TM1];
                pifSEPERATS3S2TM1arrayRANDusedInd[i] = randomValueSEPERATS3S2TM1;
                validSEPERATS3S2TM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS3S2TM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S2TM2 == 0 )
                    {
                        numeric randomValueSEPERATS3S2TM2 = floor((rand(countS3S2total) + 1));      
                        validSEPERATS3S2TM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S2TM2 = pifSEPERATS3S2TM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S2TM2 == randomValueSEPERATS3S2TM2 )
                            {
                                validSEPERATS3S2TM2 = 0;
                            }
                        }
                    }
                pifSEPERATS3S2TM2arrayRAND[i] = pifSEPERATS3S2TM2array[randomValueSEPERATS3S2TM2];
                pifSEPERATS3S2TM2arrayRANDusedInd[i] = randomValueSEPERATS3S2TM2;
                validSEPERATS3S2TM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS3S2TM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S2TM3 == 0 )
                    {
                        numeric randomValueSEPERATS3S2TM3 = floor((rand(countS3S2total) + 1));      
                        validSEPERATS3S2TM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S2TM3 = pifSEPERATS3S2TM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S2TM3 == randomValueSEPERATS3S2TM3 )
                            {
                                validSEPERATS3S2TM3 = 0;
                            }
                        }
                    }
                pifSEPERATS3S2TM3arrayRAND[i] = pifSEPERATS3S2TM3array[randomValueSEPERATS3S2TM3];
                pifSEPERATS3S2TM3arrayRANDusedInd[i] = randomValueSEPERATS3S2TM3;
                validSEPERATS3S2TM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS3S2TM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S2TM4 == 0 )
                    {
                        numeric randomValueSEPERATS3S2TM4 = floor((rand(countS3S2total) + 1));      
                        validSEPERATS3S2TM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S2TM4 = pifSEPERATS3S2TM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S2TM4 == randomValueSEPERATS3S2TM4 )
                            {
                                validSEPERATS3S2TM4 = 0;
                            }
                        }
                    }
                pifSEPERATS3S2TM4arrayRAND[i] = pifSEPERATS3S2TM4array[randomValueSEPERATS3S2TM4];
                pifSEPERATS3S2TM4arrayRANDusedInd[i] = randomValueSEPERATS3S2TM4;
                validSEPERATS3S2TM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS3S2TM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S2TM5 == 0 )
                    {
                        numeric randomValueSEPERATS3S2TM5 = floor((rand(countS3S2total) + 1));      
                        validSEPERATS3S2TM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S2TM5 = pifSEPERATS3S2TM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S2TM5 == randomValueSEPERATS3S2TM5 )
                            {
                                validSEPERATS3S2TM5 = 0;
                            }
                        }
                    }
                pifSEPERATS3S2TM5arrayRAND[i] = pifSEPERATS3S2TM5array[randomValueSEPERATS3S2TM5];
                pifSEPERATS3S2TM5arrayRANDusedInd[i] = randomValueSEPERATS3S2TM5;
                validSEPERATS3S2TM5 = 0;
                }
            
            ################ band 7
                
                numeric validSEPERATS3S2TM7 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S2TM7 == 0 )
                    {
                        numeric randomValueSEPERATS3S2TM7 = floor((rand(countS3S2total) + 1));      
                        validSEPERATS3S2TM7 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S2TM7 = pifSEPERATS3S2TM7arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S2TM7 == randomValueSEPERATS3S2TM7 )
                            {
                                validSEPERATS3S2TM7 = 0;
                            }
                        }
                    }
                pifSEPERATS3S2TM7arrayRAND[i] = pifSEPERATS3S2TM7array[randomValueSEPERATS3S2TM7];
                pifSEPERATS3S2TM7arrayRANDusedInd[i] = randomValueSEPERATS3S2TM7;
                validSEPERATS3S2TM7 = 0;
                }
            
            #######################################
            
            	############# band 1
            
                numeric validSEPERATS3S4TM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S4TM1 == 0 )
                    {
                        numeric randomValueSEPERATS3S4TM1 = floor((rand(countS3S4total) + 1));      
                        validSEPERATS3S4TM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S4TM1 = pifSEPERATS3S4TM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S4TM1 == randomValueSEPERATS3S4TM1 )
                            {
                                validSEPERATS3S4TM1 = 0;
                            }
                        }
                    }
                pifSEPERATS3S4TM1arrayRAND[i] = pifSEPERATS3S4TM1array[randomValueSEPERATS3S4TM1];
                pifSEPERATS3S4TM1arrayRANDusedInd[i] = randomValueSEPERATS3S4TM1;
                validSEPERATS3S4TM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS3S4TM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S4TM2 == 0 )
                    {
                        numeric randomValueSEPERATS3S4TM2 = floor((rand(countS3S4total) + 1));      
                        validSEPERATS3S4TM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S4TM2 = pifSEPERATS3S4TM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S4TM2 == randomValueSEPERATS3S4TM2 )
                            {
                                validSEPERATS3S4TM2 = 0;
                            }
                        }
                    }
                pifSEPERATS3S4TM2arrayRAND[i] = pifSEPERATS3S4TM2array[randomValueSEPERATS3S4TM2];
                pifSEPERATS3S4TM2arrayRANDusedInd[i] = randomValueSEPERATS3S4TM2;
                validSEPERATS3S4TM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS3S4TM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S4TM3 == 0 )
                    {
                        numeric randomValueSEPERATS3S4TM3 = floor((rand(countS3S4total) + 1));      
                        validSEPERATS3S4TM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S4TM3 = pifSEPERATS3S4TM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S4TM3 == randomValueSEPERATS3S4TM3 )
                            {
                                validSEPERATS3S4TM3 = 0;
                            }
                        }
                    }
                pifSEPERATS3S4TM3arrayRAND[i] = pifSEPERATS3S4TM3array[randomValueSEPERATS3S4TM3];
                pifSEPERATS3S4TM3arrayRANDusedInd[i] = randomValueSEPERATS3S4TM3;
                validSEPERATS3S4TM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS3S4TM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S4TM4 == 0 )
                    {
                        numeric randomValueSEPERATS3S4TM4 = floor((rand(countS3S4total) + 1));      
                        validSEPERATS3S4TM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S4TM4 = pifSEPERATS3S4TM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S4TM4 == randomValueSEPERATS3S4TM4 )
                            {
                                validSEPERATS3S4TM4 = 0;
                            }
                        }
                    }
                pifSEPERATS3S4TM4arrayRAND[i] = pifSEPERATS3S4TM4array[randomValueSEPERATS3S4TM4];
                pifSEPERATS3S4TM4arrayRANDusedInd[i] = randomValueSEPERATS3S4TM4;
                validSEPERATS3S4TM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS3S4TM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S4TM5 == 0 )
                    {
                        numeric randomValueSEPERATS3S4TM5 = floor((rand(countS3S4total) + 1));      
                        validSEPERATS3S4TM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S4TM5 = pifSEPERATS3S4TM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S4TM5 == randomValueSEPERATS3S4TM5 )
                            {
                                validSEPERATS3S4TM5 = 0;
                            }
                        }
                    }
                pifSEPERATS3S4TM5arrayRAND[i] = pifSEPERATS3S4TM5array[randomValueSEPERATS3S4TM5];
                pifSEPERATS3S4TM5arrayRANDusedInd[i] = randomValueSEPERATS3S4TM5;
                validSEPERATS3S4TM5 = 0;
                }
            
            ################ band 7
                
                    numeric validSEPERATS3S4TM7 = 0;
                 
                    for i = 1 to minPifVAL
                    {
                        while ( validSEPERATS3S4TM7 == 0 )
                        {
                            numeric randomValueSEPERATS3S4TM7 = floor((rand(countS3S4total) + 1));      
                            validSEPERATS3S4TM7 = 1;
                
                            for j = 1 to (i-1)
                            {
                                local numeric testValueSEPERATS3S4TM7 = pifSEPERATS3S4TM7arrayRANDusedInd[j];
                            
                                if ( testValueSEPERATS3S4TM7 == randomValueSEPERATS3S4TM7 )
                                {
                                    validSEPERATS3S4TM7 = 0;
                                }
                            }
                        }
                    pifSEPERATS3S4TM7arrayRAND[i] = pifSEPERATS3S4TM7array[randomValueSEPERATS3S4TM7];
                    pifSEPERATS3S4TM7arrayRANDusedInd[i] = randomValueSEPERATS3S4TM7;
                    validSEPERATS3S4TM7 = 0;
                    }
			}
			else
			{
			numeric pifSEPERATS3S1arrayCount = 1;
			numeric pifSEPERATS3S2arrayCount = 1;
			numeric pifSEPERATS3S4arrayCount = 1;
            	array pifSEPERATS3S1MSS1array[countS3S1total];
            	array pifSEPERATS3S1MSS2array[countS3S1total];
            	array pifSEPERATS3S1MSS3array[countS3S1total];
            	array pifSEPERATS3S1MSS4array[countS3S1total];
            
            	array pifSEPERATS3S1MSS1arrayRAND[minPifVAL];
            	array pifSEPERATS3S1MSS2arrayRAND[minPifVAL];
            	array pifSEPERATS3S1MSS3arrayRAND[minPifVAL];
            	array pifSEPERATS3S1MSS4arrayRAND[minPifVAL];
            	            
            	array pifSEPERATS3S1MSS1arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS3S1MSS2arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS3S1MSS3arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS3S1MSS4arrayRANDusedInd[minPifVAL];
            
            
            	array pifSEPERATS3S2MSS1array[countS3S2total];
            	array pifSEPERATS3S2MSS2array[countS3S2total];
            	array pifSEPERATS3S2MSS3array[countS3S2total];
            	array pifSEPERATS3S2MSS4array[countS3S2total];
            
            	array pifSEPERATS3S2MSS1arrayRAND[minPifVAL];
                array pifSEPERATS3S2MSS2arrayRAND[minPifVAL];
                array pifSEPERATS3S2MSS3arrayRAND[minPifVAL];
                array pifSEPERATS3S2MSS4arrayRAND[minPifVAL];
                   
                array pifSEPERATS3S2MSS1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S2MSS2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S2MSS3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S2MSS4arrayRANDusedInd[minPifVAL];
                
            	array pifSEPERATS3S4MSS1array[countS3S4total];
            	array pifSEPERATS3S4MSS2array[countS3S4total];
            	array pifSEPERATS3S4MSS3array[countS3S4total];
            	array pifSEPERATS3S4MSS4array[countS3S4total];
            
            	array pifSEPERATS3S4MSS1arrayRAND[minPifVAL];
                array pifSEPERATS3S4MSS2arrayRAND[minPifVAL];
                array pifSEPERATS3S4MSS3arrayRAND[minPifVAL];
                array pifSEPERATS3S4MSS4arrayRAND[minPifVAL];
                   
                array pifSEPERATS3S4MSS1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S4MSS2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S4MSS3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS3S4MSS4arrayRANDusedInd[minPifVAL];
                	  for i = 1 to MSSlins
                	  {
                    	for j = 1 to MSScols
                    	{     
                            if ( S3MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS3S1MSS1array[pifSEPERATS3S1arrayCount] = REFS3MSS1[i,j];                        
                                        pifSEPERATS3S1MSS2array[pifSEPERATS3S1arrayCount] = REFS3MSS2[i,j];                        
                                    pifSEPERATS3S1MSS3array[pifSEPERATS3S1arrayCount] = REFS3MSS3[i,j];
                            pifSEPERATS3S1MSS4array[pifSEPERATS3S1arrayCount] = REFS3MSS4[i,j];
                                    pifSEPERATS3S1arrayCount = pifSEPERATS3S1arrayCount + 1;
                            }
        
                            if ( S3MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                            {
                            pifSEPERATS3S2MSS1array[pifSEPERATS3S2arrayCount] = REFS3MSS1[i,j];                        
                                        pifSEPERATS3S2MSS2array[pifSEPERATS3S2arrayCount] = REFS3MSS2[i,j];                        
                                    pifSEPERATS3S2MSS3array[pifSEPERATS3S2arrayCount] = REFS3MSS3[i,j];
                            pifSEPERATS3S2MSS4array[pifSEPERATS3S2arrayCount] = REFS3MSS4[i,j];
                            pifSEPERATS3S2arrayCount = pifSEPERATS3S2arrayCount + 1;
                            }
        
                            if ( S3MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                            {
                            pifSEPERATS3S4MSS1array[pifSEPERATS3S4arrayCount] = REFS3MSS1[i,j];                        
                                        pifSEPERATS3S4MSS2array[pifSEPERATS3S4arrayCount] = REFS3MSS2[i,j];                        
                                    pifSEPERATS3S4MSS3array[pifSEPERATS3S4arrayCount] = REFS3MSS3[i,j];
                            pifSEPERATS3S4MSS4array[pifSEPERATS3S4arrayCount] = REFS3MSS4[i,j];
                            pifSEPERATS3S4arrayCount = pifSEPERATS3S4arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ############# band 1
            
                numeric validSEPERATS3S1MSS1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S1MSS1 == 0 )
                    {
                        numeric randomValueSEPERATS3S1MSS1 = floor((rand(countS3S1total) + 1));      
                        validSEPERATS3S1MSS1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S1MSS1 = pifSEPERATS3S1MSS1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S1MSS1 == randomValueSEPERATS3S1MSS1 )
                            {
                                validSEPERATS3S1MSS1 = 0;
                            }
                        }
                    }
                pifSEPERATS3S1MSS1arrayRAND[i] = pifSEPERATS3S1MSS1array[randomValueSEPERATS3S1MSS1];
                pifSEPERATS3S1MSS1arrayRANDusedInd[i] = randomValueSEPERATS3S1MSS1;
                validSEPERATS3S1MSS1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS3S1MSS2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S1MSS2 == 0 )
                    {
                        numeric randomValueSEPERATS3S1MSS2 = floor((rand(countS3S1total) + 1));      
                        validSEPERATS3S1MSS2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S1MSS2 = pifSEPERATS3S1MSS2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S1MSS2 == randomValueSEPERATS3S1MSS2 )
                            {
                                validSEPERATS3S1MSS2 = 0;
                            }
                        }
                    }
                pifSEPERATS3S1MSS2arrayRAND[i] = pifSEPERATS3S1MSS2array[randomValueSEPERATS3S1MSS2];
                pifSEPERATS3S1MSS2arrayRANDusedInd[i] = randomValueSEPERATS3S1MSS2;
                validSEPERATS3S1MSS2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS3S1MSS3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S1MSS3 == 0 )
                    {
                        numeric randomValueSEPERATS3S1MSS3 = floor((rand(countS3S1total) + 1));      
                        validSEPERATS3S1MSS3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S1MSS3 = pifSEPERATS3S1MSS3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S1MSS3 == randomValueSEPERATS3S1MSS3 )
                            {
                                validSEPERATS3S1MSS3 = 0;
                            }
                        }
                    }
                pifSEPERATS3S1MSS3arrayRAND[i] = pifSEPERATS3S1MSS3array[randomValueSEPERATS3S1MSS3];
                pifSEPERATS3S1MSS3arrayRANDusedInd[i] = randomValueSEPERATS3S1MSS3;
                validSEPERATS3S1MSS3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS3S1MSS4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S1MSS4 == 0 )
                    {
                        numeric randomValueSEPERATS3S1MSS4 = floor((rand(countS3S1total) + 1));      
                        validSEPERATS3S1MSS4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S1MSS4 = pifSEPERATS3S1MSS4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S1MSS4 == randomValueSEPERATS3S1MSS4 )
                            {
                                validSEPERATS3S1MSS4 = 0;
                            }
                        }
                    }
                pifSEPERATS3S1MSS4arrayRAND[i] = pifSEPERATS3S1MSS4array[randomValueSEPERATS3S1MSS4];
                pifSEPERATS3S1MSS4arrayRANDusedInd[i] = randomValueSEPERATS3S1MSS4;
                validSEPERATS3S1MSS4 = 0;
                }
            
            ###################################################
            
            	############# band 1
            
                numeric validSEPERATS3S2MSS1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S2MSS1 == 0 )
                    {
                        numeric randomValueSEPERATS3S2MSS1 = floor((rand(countS3S2total) + 1));      
                        validSEPERATS3S2MSS1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S2MSS1 = pifSEPERATS3S2MSS1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S2MSS1 == randomValueSEPERATS3S2MSS1 )
                            {
                                validSEPERATS3S2MSS1 = 0;
                            }
                        }
                    }
                pifSEPERATS3S2MSS1arrayRAND[i] = pifSEPERATS3S2MSS1array[randomValueSEPERATS3S2MSS1];
                pifSEPERATS3S2MSS1arrayRANDusedInd[i] = randomValueSEPERATS3S2MSS1;
                validSEPERATS3S2MSS1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS3S2MSS2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S2MSS2 == 0 )
                    {
                        numeric randomValueSEPERATS3S2MSS2 = floor((rand(countS3S2total) + 1));      
                        validSEPERATS3S2MSS2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S2MSS2 = pifSEPERATS3S2MSS2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S2MSS2 == randomValueSEPERATS3S2MSS2 )
                            {
                                validSEPERATS3S2MSS2 = 0;
                            }
                        }
                    }
                pifSEPERATS3S2MSS2arrayRAND[i] = pifSEPERATS3S2MSS2array[randomValueSEPERATS3S2MSS2];
                pifSEPERATS3S2MSS2arrayRANDusedInd[i] = randomValueSEPERATS3S2MSS2;
                validSEPERATS3S2MSS2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS3S2MSS3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S2MSS3 == 0 )
                    {
                        numeric randomValueSEPERATS3S2MSS3 = floor((rand(countS3S2total) + 1));      
                        validSEPERATS3S2MSS3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S2MSS3 = pifSEPERATS3S2MSS3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S2MSS3 == randomValueSEPERATS3S2MSS3 )
                            {
                                validSEPERATS3S2MSS3 = 0;
                            }
                        }
                    }
                pifSEPERATS3S2MSS3arrayRAND[i] = pifSEPERATS3S2MSS3array[randomValueSEPERATS3S2MSS3];
                pifSEPERATS3S2MSS3arrayRANDusedInd[i] = randomValueSEPERATS3S2MSS3;
                validSEPERATS3S2MSS3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS3S2MSS4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S2MSS4 == 0 )
                    {
                        numeric randomValueSEPERATS3S2MSS4 = floor((rand(countS3S2total) + 1));      
                        validSEPERATS3S2MSS4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S2MSS4 = pifSEPERATS3S2MSS4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S2MSS4 == randomValueSEPERATS3S2MSS4 )
                            {
                                validSEPERATS3S2MSS4 = 0;
                            }
                        }
                    }
                pifSEPERATS3S2MSS4arrayRAND[i] = pifSEPERATS3S2MSS4array[randomValueSEPERATS3S2MSS4];
                pifSEPERATS3S2MSS4arrayRANDusedInd[i] = randomValueSEPERATS3S2MSS4;
                validSEPERATS3S2MSS4 = 0;
                }
            
            #######################################
            
            	############# band 1
            
                numeric validSEPERATS3S4MSS1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S4MSS1 == 0 )
                    {
                        numeric randomValueSEPERATS3S4MSS1 = floor((rand(countS3S4total) + 1));      
                        validSEPERATS3S4MSS1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S4MSS1 = pifSEPERATS3S4MSS1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S4MSS1 == randomValueSEPERATS3S4MSS1 )
                            {
                                validSEPERATS3S4MSS1 = 0;
                            }
                        }
                    }
                pifSEPERATS3S4MSS1arrayRAND[i] = pifSEPERATS3S4MSS1array[randomValueSEPERATS3S4MSS1];
                pifSEPERATS3S4MSS1arrayRANDusedInd[i] = randomValueSEPERATS3S4MSS1;
                validSEPERATS3S4MSS1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS3S4MSS2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S4MSS2 == 0 )
                    {
                        numeric randomValueSEPERATS3S4MSS2 = floor((rand(countS3S4total) + 1));      
                        validSEPERATS3S4MSS2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S4MSS2 = pifSEPERATS3S4MSS2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S4MSS2 == randomValueSEPERATS3S4MSS2 )
                            {
                                validSEPERATS3S4MSS2 = 0;
                            }
                        }
                    }
                pifSEPERATS3S4MSS2arrayRAND[i] = pifSEPERATS3S4MSS2array[randomValueSEPERATS3S4MSS2];
                pifSEPERATS3S4MSS2arrayRANDusedInd[i] = randomValueSEPERATS3S4MSS2;
                validSEPERATS3S4MSS2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS3S4MSS3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S4MSS3 == 0 )
                    {
                        numeric randomValueSEPERATS3S4MSS3 = floor((rand(countS3S4total) + 1));      
                        validSEPERATS3S4MSS3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S4MSS3 = pifSEPERATS3S4MSS3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S4MSS3 == randomValueSEPERATS3S4MSS3 )
                            {
                                validSEPERATS3S4MSS3 = 0;
                            }
                        }
                    }
                pifSEPERATS3S4MSS3arrayRAND[i] = pifSEPERATS3S4MSS3array[randomValueSEPERATS3S4MSS3];
                pifSEPERATS3S4MSS3arrayRANDusedInd[i] = randomValueSEPERATS3S4MSS3;
                validSEPERATS3S4MSS3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS3S4MSS4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS3S4MSS4 == 0 )
                    {
                        numeric randomValueSEPERATS3S4MSS4 = floor((rand(countS3S4total) + 1));      
                        validSEPERATS3S4MSS4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS3S4MSS4 = pifSEPERATS3S4MSS4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS3S4MSS4 == randomValueSEPERATS3S4MSS4 )
                            {
                                validSEPERATS3S4MSS4 = 0;
                            }
                        }
                    }
                pifSEPERATS3S4MSS4arrayRAND[i] = pifSEPERATS3S4MSS4array[randomValueSEPERATS3S4MSS4];
                pifSEPERATS3S4MSS4arrayRANDusedInd[i] = randomValueSEPERATS3S4MSS4;
                validSEPERATS3S4MSS4 = 0;
                }
		}
		      if ( sensors1 == 7 )
	            {
            	numeric pifSEPERATS1arrayCount = 1;
            	array pifSEPERATS1slaveETM1array[countS3S1total];
            	array pifSEPERATS1slaveETM2array[countS3S1total];
            	array pifSEPERATS1slaveETM3array[countS3S1total];
            	array pifSEPERATS1slaveETM4array[countS3S1total];
            	array pifSEPERATS1slaveETM5array[countS3S1total];
            	array pifSEPERATS1slaveETM7array[countS3S1total];
            
            	array pifSEPERATS1slaveETM1arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveETM2arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveETM3arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveETM4arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveETM5arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveETM7arrayRAND[minPifVAL];
            
			  for i = 1 to ETMlins
                	  {
                    	for j = 1 to ETMcols
                    	{     
                            if ( S3MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS1slaveETM1array[pifSEPERATS1arrayCount] = REFS1ETM1[i,j];
                                        pifSEPERATS1slaveETM2array[pifSEPERATS1arrayCount] = REFS1ETM2[i,j]; 
                                    pifSEPERATS1slaveETM3array[pifSEPERATS1arrayCount] = REFS1ETM3[i,j];
                            pifSEPERATS1slaveETM4array[pifSEPERATS1arrayCount] = REFS1ETM4[i,j];
                                    pifSEPERATS1slaveETM5array[pifSEPERATS1arrayCount] = REFS1ETM5[i,j];
                            pifSEPERATS1slaveETM7array[pifSEPERATS1arrayCount] = REFS1ETM7[i,j];
                                    pifSEPERATS1arrayCount = pifSEPERATS1arrayCount + 1;
                            }
                    	}
                	  }
         	  
                	  ################ band 1
             
		if ( sensors3 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM1arrayRAND[i] = pifSEPERATS1slaveETM1array[pifSEPERATS3S1ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM1arrayRAND[i] = pifSEPERATS1slaveETM1array[pifSEPERATS3S1TM1arrayRANDusedInd[i]];
                }                                                   
		}
                ################ band 2
             
		if ( sensors3 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM2arrayRAND[i] = pifSEPERATS1slaveETM2array[pifSEPERATS3S1ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{     
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM2arrayRAND[i] = pifSEPERATS1slaveETM2array[pifSEPERATS3S1TM2arrayRANDusedInd[i]];
                }                                               
		}
                ################ band 3
             
		if ( sensors3 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM3arrayRAND[i] = pifSEPERATS1slaveETM3array[pifSEPERATS3S1ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM3arrayRAND[i] = pifSEPERATS1slaveETM3array[pifSEPERATS3S1TM3arrayRANDusedInd[i]];
                }                                                 
		}
                ################ band 4
             
		if ( sensors3 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM4arrayRAND[i] = pifSEPERATS1slaveETM4array[pifSEPERATS3S1ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM4arrayRAND[i] = pifSEPERATS1slaveETM4array[pifSEPERATS3S1TM4arrayRANDusedInd[i]];
                }                                                    
		}
                ################ band 5
             
		if ( sensors3 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM5arrayRAND[i] = pifSEPERATS1slaveETM5array[pifSEPERATS3S1ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM5arrayRAND[i] = pifSEPERATS1slaveETM5array[pifSEPERATS3S1TM5arrayRANDusedInd[i]];
                }                                                  
		}
                ################ band 7
             
		if ( sensors3 == 7 )
		{                                                    
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM7arrayRAND[i] = pifSEPERATS1slaveETM7array[pifSEPERATS3S1ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM7arrayRAND[i] = pifSEPERATS1slaveETM7array[pifSEPERATS3S1TM7arrayRANDusedInd[i]];
                }                                                  
		}
        }
			else if ( sensors1 == 6 )
			{
			numeric pifSEPERATS1arrayCount = 1;
            	array pifSEPERATS1slaveTM1array[countS3S1total];
            	array pifSEPERATS1slaveTM2array[countS3S1total];
            	array pifSEPERATS1slaveTM3array[countS3S1total];
            	array pifSEPERATS1slaveTM4array[countS3S1total];
            	array pifSEPERATS1slaveTM5array[countS3S1total];
            	array pifSEPERATS1slaveTM7array[countS3S1total];
            
            	array pifSEPERATS1slaveTM1arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveTM2arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveTM3arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveTM4arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveTM5arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveTM7arrayRAND[minPifVAL];
            
			  for i = 1 to TMlins
                	  {
                    	for j = 1 to TMcols
                    	{     
                            if ( S3MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS1slaveTM1array[pifSEPERATS1arrayCount] = REFS1TM1[i,j];
                                    pifSEPERATS1slaveTM2array[pifSEPERATS1arrayCount] = REFS1TM2[i,j]; 
                                    pifSEPERATS1slaveTM3array[pifSEPERATS1arrayCount] = REFS1TM3[i,j];
                                    pifSEPERATS1slaveTM4array[pifSEPERATS1arrayCount] = REFS1TM4[i,j];
                                    pifSEPERATS1slaveTM5array[pifSEPERATS1arrayCount] = REFS1TM5[i,j];
                                    pifSEPERATS1slaveTM7array[pifSEPERATS1arrayCount] = REFS1TM7[i,j];
                                    pifSEPERATS1arrayCount = pifSEPERATS1arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors3 == 7 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM1arrayRAND[i] = pifSEPERATS1slaveTM1array[pifSEPERATS3S1ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM1arrayRAND[i] = pifSEPERATS1slaveTM1array[pifSEPERATS3S1TM1arrayRANDusedInd[i]];
                }
		}
                ################ band 2
             
		if ( sensors3 == 7 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM2arrayRAND[i] = pifSEPERATS1slaveTM2array[pifSEPERATS3S1ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM2arrayRAND[i] = pifSEPERATS1slaveTM2array[pifSEPERATS3S1TM2arrayRANDusedInd[i]];
                }
            }
                ################ band 3
             
		if ( sensors3 == 7 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM3arrayRAND[i] = pifSEPERATS1slaveTM3array[pifSEPERATS3S1ETM3arrayRANDusedInd[i]];
                }
            }
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM3arrayRAND[i] = pifSEPERATS1slaveTM3array[pifSEPERATS3S1TM3arrayRANDusedInd[i]];
                }
		}
                ################ band 4
             
		if ( sensors3 == 7 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM4arrayRAND[i] = pifSEPERATS1slaveTM4array[pifSEPERATS3S1ETM4arrayRANDusedInd[i]];
                }
            }
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM4arrayRAND[i] = pifSEPERATS1slaveTM4array[pifSEPERATS3S1TM4arrayRANDusedInd[i]];
                }   
		}
                ################ band 5
             
		if ( sensors3 == 7 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM5arrayRAND[i] = pifSEPERATS1slaveTM5array[pifSEPERATS3S1ETM5arrayRANDusedInd[i]];
                }
            }
		else if ( sensors3 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM5arrayRAND[i] = pifSEPERATS1slaveTM5array[pifSEPERATS3S1TM5arrayRANDusedInd[i]];
                }
		}
                ################ band 7
		if ( sensors3 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM7arrayRAND[i] = pifSEPERATS1slaveTM7array[pifSEPERATS3S1ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM7arrayRAND[i] = pifSEPERATS1slaveTM7array[pifSEPERATS3S1TM7arrayRANDusedInd[i]];
                }
		}
	}
			else
			{
			numeric pifSEPERATS1arrayCount = 1;
            	array pifSEPERATS1slaveMSS1array[countS3S1total];
            	array pifSEPERATS1slaveMSS2array[countS3S1total];
            	array pifSEPERATS1slaveMSS3array[countS3S1total];
            	array pifSEPERATS1slaveMSS4array[countS3S1total];
            
            	array pifSEPERATS1slaveMSS1arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveMSS1arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveMSS3arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveMSS4arrayRAND[minPifVAL];
            
			  for i = 1 to MSSlins
                	  {
                    	for j = 1 to MSScols
                    	{     
                            if ( S3MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS1slaveMSS1array[pifSEPERATS1arrayCount] = REFS1MSS1[i,j];
                                    pifSEPERATS1slaveMSS2array[pifSEPERATS1arrayCount] = REFS1MSS2[i,j]; 
                                    pifSEPERATS1slaveMSS3array[pifSEPERATS1arrayCount] = REFS1MSS3[i,j];
                                    pifSEPERATS1slaveMSS4array[pifSEPERATS1arrayCount] = REFS1MSS4[i,j];
                                    pifSEPERATS1arrayCount = pifSEPERATS1arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors3 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS1arrayRAND[i] = pifSEPERATS1slaveMSS1array[pifSEPERATS3S1ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS1arrayRAND[i] = pifSEPERATS1slaveMSS1array[pifSEPERATS3S1TM2arrayRANDusedInd[i]];
                }
		}
		
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS1arrayRAND[i] = pifSEPERATS1slaveMSS1array[pifSEPERATS3S1MSS1arrayRANDusedInd[i]];
                }
		}             
                
                ################ band 2
             
		if ( sensors3 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS2arrayRAND[i] = pifSEPERATS1slaveMSS2array[pifSEPERATS3S1ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS2arrayRAND[i] = pifSEPERATS1slaveMSS2array[pifSEPERATS3S1TM3arrayRANDusedInd[i]];
                }
		}
		
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS2arrayRAND[i] = pifSEPERATS1slaveMSS2array[pifSEPERATS3S1MSS2arrayRANDusedInd[i]];
                }
		}             
                
                ################ band 3
             
        if ( sensors3 == 5 or sensors3 == 4 or sensors3 == 3 or sensors3 == 2 or sensors3 == 1 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS3arrayRAND[i] = pifSEPERATS1slaveMSS3array[pifSEPERATS3S1MSS3arrayRANDusedInd[i]];
                }
		}             
                
                ################ band 4
             
		if ( sensors3 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS4arrayRAND[i] = pifSEPERATS1slaveMSS4array[pifSEPERATS3S1ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS4arrayRAND[i] = pifSEPERATS1slaveMSS4array[pifSEPERATS3S1TM4arrayRANDusedInd[i]];
                }             
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS4arrayRAND[i] = pifSEPERATS1slaveMSS4array[pifSEPERATS3S1MSS4arrayRANDusedInd[i]];
                }
		}
	}
			if ( sensors2 == 7 )
			{
			numeric pifSEPERATS2arrayCount = 1;
            	array pifSEPERATS2slaveETM1array[countS3S2total];
            	array pifSEPERATS2slaveETM2array[countS3S2total];
            	array pifSEPERATS2slaveETM3array[countS3S2total];
            	array pifSEPERATS2slaveETM4array[countS3S2total];
            	array pifSEPERATS2slaveETM5array[countS3S2total];
            	array pifSEPERATS2slaveETM7array[countS3S2total];
            
            	array pifSEPERATS2slaveETM1arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveETM2arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveETM3arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveETM4arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveETM5arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveETM7arrayRAND[minPifVAL];
            
			  for i = 1 to ETMlins
                	  {
                    	for j = 1 to ETMcols
                    	{     
                            if ( S3MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                            {
                                    pifSEPERATS2slaveETM1array[pifSEPERATS2arrayCount] = REFS2ETM1[i,j];
                                        pifSEPERATS2slaveETM2array[pifSEPERATS2arrayCount] = REFS2ETM2[i,j]; 
                                    pifSEPERATS2slaveETM3array[pifSEPERATS2arrayCount] = REFS2ETM3[i,j];
                            pifSEPERATS2slaveETM4array[pifSEPERATS2arrayCount] = REFS2ETM4[i,j];
                                    pifSEPERATS2slaveETM5array[pifSEPERATS2arrayCount] = REFS2ETM5[i,j];
                            pifSEPERATS2slaveETM7array[pifSEPERATS2arrayCount] = REFS2ETM7[i,j];
                                    pifSEPERATS2arrayCount = pifSEPERATS2arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors3 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM1arrayRAND[i] = pifSEPERATS2slaveETM1array[pifSEPERATS3S2ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{     
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM1arrayRAND[i] = pifSEPERATS2slaveETM1array[pifSEPERATS3S2TM1arrayRANDusedInd[i]];
                }        
		}
                
                ################ band 2
            
		if ( sensors3 == 7 )
		{                          
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM2arrayRAND[i] = pifSEPERATS2slaveETM2array[pifSEPERATS3S2ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM2arrayRAND[i] = pifSEPERATS2slaveETM2array[pifSEPERATS3S2TM2arrayRANDusedInd[i]];
                }
		}
                ################ band 3
             
		if ( sensors3 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM3arrayRAND[i] = pifSEPERATS2slaveETM3array[pifSEPERATS3S2ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM3arrayRAND[i] = pifSEPERATS2slaveETM3array[pifSEPERATS3S2TM3arrayRANDusedInd[i]];
                }
		}
                ################ band 4
             
		if ( sensors3 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM4arrayRAND[i] = pifSEPERATS2slaveETM4array[pifSEPERATS3S2ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM4arrayRAND[i] = pifSEPERATS2slaveETM4array[pifSEPERATS3S2TM4arrayRANDusedInd[i]];
                }             
		}
                ################ band 5
             
		if ( sensors3 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM5arrayRAND[i] = pifSEPERATS2slaveETM5array[pifSEPERATS3S2ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM5arrayRAND[i] = pifSEPERATS2slaveETM5array[pifSEPERATS3S2TM5arrayRANDusedInd[i]];
                }
		}
                ################ band 7
             
		if ( sensors3 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM7arrayRAND[i] = pifSEPERATS2slaveETM7array[pifSEPERATS3S2ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM7arrayRAND[i] = pifSEPERATS2slaveETM7array[pifSEPERATS3S2TM7arrayRANDusedInd[i]];
                }
		}             
	}
			else if ( sensors2 == 6 )
			{
			numeric pifSEPERATS2arrayCount = 1;
            	array pifSEPERATS2slaveTM1array[countS3S2total];
            	array pifSEPERATS2slaveTM2array[countS3S2total];
            	array pifSEPERATS2slaveTM3array[countS3S2total];
            	array pifSEPERATS2slaveTM4array[countS3S2total];
            	array pifSEPERATS2slaveTM5array[countS3S2total];
            	array pifSEPERATS2slaveTM7array[countS3S2total];
            
            	array pifSEPERATS2slaveTM1arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveTM2arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveTM3arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveTM4arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveTM5arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveTM7arrayRAND[minPifVAL];
            
			  for i = 1 to TMlins
                	  {
                    	for j = 1 to TMcols
                    	{     
                            if ( S3MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                            {
                                    pifSEPERATS2slaveTM1array[pifSEPERATS2arrayCount] = REFS2TM1[i,j];
                                    pifSEPERATS2slaveTM2array[pifSEPERATS2arrayCount] = REFS2TM2[i,j]; 
                                    pifSEPERATS2slaveTM3array[pifSEPERATS2arrayCount] = REFS2TM3[i,j];
                                    pifSEPERATS2slaveTM4array[pifSEPERATS2arrayCount] = REFS2TM4[i,j];
                                    pifSEPERATS2slaveTM5array[pifSEPERATS2arrayCount] = REFS2TM5[i,j];
                                    pifSEPERATS2slaveTM7array[pifSEPERATS2arrayCount] = REFS2TM7[i,j];
                                    pifSEPERATS2arrayCount = pifSEPERATS2arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors3 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM1arrayRAND[i] = pifSEPERATS2slaveTM1array[pifSEPERATS3S2ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM1arrayRAND[i] = pifSEPERATS2slaveTM1array[pifSEPERATS3S2TM1arrayRANDusedInd[i]];
                }
		}
                ################ band 2
             
		if ( sensors3 == 7 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM2arrayRAND[i] = pifSEPERATS2slaveTM2array[pifSEPERATS3S2ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM2arrayRAND[i] = pifSEPERATS2slaveTM2array[pifSEPERATS3S2TM2arrayRANDusedInd[i]];
                }
		}
                ################ band 3
             
		if ( sensors3 == 7 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM3arrayRAND[i] = pifSEPERATS2slaveTM3array[pifSEPERATS3S2ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM3arrayRAND[i] = pifSEPERATS2slaveTM3array[pifSEPERATS3S2TM3arrayRANDusedInd[i]];
                }
		}
                ################ band 4
            
		if ( sensors3 == 7 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM4arrayRAND[i] = pifSEPERATS2slaveTM4array[pifSEPERATS3S2ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM4arrayRAND[i] = pifSEPERATS2slaveTM4array[pifSEPERATS3S2TM4arrayRANDusedInd[i]];
                }
		}
                ################ band 5
             
		if ( sensors3 == 7 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM5arrayRAND[i] = pifSEPERATS2slaveTM5array[pifSEPERATS3S2ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM5arrayRAND[i] = pifSEPERATS2slaveTM5array[pifSEPERATS3S2TM5arrayRANDusedInd[i]];
                }
		}
                ################ band 7
             
		if ( sensors3 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM7arrayRAND[i] = pifSEPERATS2slaveTM7array[pifSEPERATS3S2ETM7arrayRANDusedInd[i]];
                }
		}
		
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM7arrayRAND[i] = pifSEPERATS2slaveTM7array[pifSEPERATS3S2TM7arrayRANDusedInd[i]];
                }
		}
	}
			else
			{
			numeric pifSEPERATS2arrayCount = 1;
            	array pifSEPERATS2slaveMSS1array[countS3S2total];
            	array pifSEPERATS2slaveMSS2array[countS3S2total];
            	array pifSEPERATS2slaveMSS3array[countS3S2total];
            	array pifSEPERATS2slaveMSS4array[countS3S2total];
            
            	array pifSEPERATS2slaveMSS1arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveMSS2arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveMSS3arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveMSS4arrayRAND[minPifVAL];
            
			  for i = 1 to MSSlins
                	  {
                    	for j = 1 to MSScols
                    	{     
                            if ( S3MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                            {
                                    pifSEPERATS2slaveMSS1array[pifSEPERATS2arrayCount] = REFS2MSS1[i,j];
                                        pifSEPERATS2slaveMSS2array[pifSEPERATS2arrayCount] = REFS2MSS2[i,j]; 
                                    pifSEPERATS2slaveMSS3array[pifSEPERATS2arrayCount] = REFS2MSS3[i,j];
                            pifSEPERATS2slaveMSS4array[pifSEPERATS2arrayCount] = REFS2MSS4[i,j];
                                      pifSEPERATS2arrayCount = pifSEPERATS2arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors3 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS1arrayRAND[i] = pifSEPERATS2slaveMSS1array[pifSEPERATS3S2ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS1arrayRAND[i] = pifSEPERATS2slaveMSS1array[pifSEPERATS3S2TM2arrayRANDusedInd[i]];
                }
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS1arrayRAND[i] = pifSEPERATS2slaveMSS1array[pifSEPERATS3S2MSS1arrayRANDusedInd[i]];
                }
		}
                
                ################ band 2
             
		if ( sensors3 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS2arrayRAND[i] = pifSEPERATS2slaveMSS2array[pifSEPERATS3S2ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{       
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS2arrayRAND[i] = pifSEPERATS2slaveMSS2array[pifSEPERATS3S2TM3arrayRANDusedInd[i]];
                }     
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS2arrayRAND[i] = pifSEPERATS2slaveMSS2array[pifSEPERATS3S2MSS2arrayRANDusedInd[i]];
                }
		}
                
                ################ band 3
             
        if ( sensors3 == 5 or sensors3 == 4 or sensors3 == 3 or sensors3 == 2 or sensors3 == 1 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS3arrayRAND[i] = pifSEPERATS2slaveMSS3array[pifSEPERATS3S2MSS3arrayRANDusedInd[i]];
                }
		}
                
                ################ band 4
                         
		if ( sensors3 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS4arrayRAND[i] = pifSEPERATS2slaveMSS4array[pifSEPERATS3S2ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS4arrayRAND[i] = pifSEPERATS2slaveMSS4array[pifSEPERATS3S2TM4arrayRANDusedInd[i]];
                }           
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS4arrayRAND[i] = pifSEPERATS2slaveMSS4array[pifSEPERATS3S2MSS4arrayRANDusedInd[i]];
                }
		}
	}
			if ( sensors4 == 7 )
			{
			numeric pifSEPERATS4arrayCount = 1;
            	array pifSEPERATS4slaveETM1array[countS3S4total];
            	array pifSEPERATS4slaveETM2array[countS3S4total];
            	array pifSEPERATS4slaveETM3array[countS3S4total];
            	array pifSEPERATS4slaveETM4array[countS3S4total];
            	array pifSEPERATS4slaveETM5array[countS3S4total];
            	array pifSEPERATS4slaveETM7array[countS3S4total];
            
            	array pifSEPERATS4slaveETM1arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveETM2arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveETM3arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveETM4arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveETM5arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveETM7arrayRAND[minPifVAL];
            
			  for i = 1 to ETMlins
                	  {
                    	for j = 1 to ETMcols
                    	{     
                            if ( S3MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                            {
                                    pifSEPERATS4slaveETM1array[pifSEPERATS4arrayCount] = REFS4ETM1[i,j];
                                    pifSEPERATS4slaveETM2array[pifSEPERATS4arrayCount] = REFS4ETM2[i,j]; 
                                    pifSEPERATS4slaveETM3array[pifSEPERATS4arrayCount] = REFS4ETM3[i,j];
                                    pifSEPERATS4slaveETM4array[pifSEPERATS4arrayCount] = REFS4ETM4[i,j];
                                    pifSEPERATS4slaveETM5array[pifSEPERATS4arrayCount] = REFS4ETM5[i,j];
                                    pifSEPERATS4slaveETM7array[pifSEPERATS4arrayCount] = REFS4ETM7[i,j];
                                    pifSEPERATS4arrayCount = pifSEPERATS4arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
       	if ( sensors3 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM1arrayRAND[i] = pifSEPERATS4slaveETM1array[pifSEPERATS3S4ETM1arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM1arrayRAND[i] = pifSEPERATS4slaveETM1array[pifSEPERATS3S4TM1arrayRANDusedInd[i]];
                }
		}        
                
                ################ band 2
             
       	if ( sensors3 == 7 )
		{            
                for i = 1 to minPifVAL
		    {
                pifSEPERATS4slaveETM2arrayRAND[i] = pifSEPERATS4slaveETM2array[pifSEPERATS3S4ETM2arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
		    {
                pifSEPERATS4slaveETM2arrayRAND[i] = pifSEPERATS4slaveETM2array[pifSEPERATS3S4TM2arrayRANDusedInd[i]];
                }
		}
                ################ band 3
             
       	if ( sensors3 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM3arrayRAND[i] = pifSEPERATS4slaveETM3array[pifSEPERATS3S4ETM3arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors3 == 6 )
		{      
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM3arrayRAND[i] = pifSEPERATS4slaveETM3array[pifSEPERATS3S4TM3arrayRANDusedInd[i]];
                }      
            }
                ################ band 4
       	if ( sensors3 == 7 )
		{                         
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM4arrayRAND[i] = pifSEPERATS4slaveETM4array[pifSEPERATS3S4ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM4arrayRAND[i] = pifSEPERATS4slaveETM4array[pifSEPERATS3S4TM4arrayRANDusedInd[i]];
                }            
		}
                ################ band 5
             
       	if ( sensors3 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM5arrayRAND[i] = pifSEPERATS4slaveETM5array[pifSEPERATS3S4ETM5arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM5arrayRAND[i] = pifSEPERATS4slaveETM5array[pifSEPERATS3S4TM5arrayRANDusedInd[i]];
                }
		}
                ################ band 7
             
       	if ( sensors3 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM7arrayRAND[i] = pifSEPERATS4slaveETM7array[pifSEPERATS3S4ETM7arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveETM7arrayRAND[i] = pifSEPERATS4slaveETM7array[pifSEPERATS3S4TM7arrayRANDusedInd[i]];
                }
		}            
	}
			else if ( sensors4 == 6 )
			{
			numeric pifSEPERATS4arrayCount = 1;
            	array pifSEPERATS4slaveTM1array[countS3S4total];
            	array pifSEPERATS4slaveTM2array[countS3S4total];
            	array pifSEPERATS4slaveTM3array[countS3S4total];
            	array pifSEPERATS4slaveTM4array[countS3S4total];
            	array pifSEPERATS4slaveTM5array[countS3S4total];
            	array pifSEPERATS4slaveTM7array[countS3S4total];
            
            	array pifSEPERATS4slaveTM1arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveTM2arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveTM3arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveTM4arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveTM5arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveTM7arrayRAND[minPifVAL];
            
			  for i = 1 to TMlins
                	  {
                    	for j = 1 to TMcols
                    	{     
                            if ( S3MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                            {
                                    pifSEPERATS4slaveTM1array[pifSEPERATS4arrayCount] = REFS4TM1[i,j];
                                    pifSEPERATS4slaveTM2array[pifSEPERATS4arrayCount] = REFS4TM2[i,j]; 
                                    pifSEPERATS4slaveTM3array[pifSEPERATS4arrayCount] = REFS4TM3[i,j];
                                    pifSEPERATS4slaveTM4array[pifSEPERATS4arrayCount] = REFS4TM4[i,j];
                                    pifSEPERATS4slaveTM5array[pifSEPERATS4arrayCount] = REFS4TM5[i,j];
                                    pifSEPERATS4slaveTM7array[pifSEPERATS4arrayCount] = REFS4TM7[i,j];
                                    pifSEPERATS4arrayCount = pifSEPERATS4arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
       	if ( sensors3 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM1arrayRAND[i] = pifSEPERATS4slaveTM1array[pifSEPERATS3S4ETM1arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors3 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM1arrayRAND[i] = pifSEPERATS4slaveTM1array[pifSEPERATS3S4TM1arrayRANDusedInd[i]];
                }         
		}
                
                ################ band 2
             
       	if ( sensors3 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM2arrayRAND[i] = pifSEPERATS4slaveTM2array[pifSEPERATS3S4ETM2arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors3 == 6 )
		{      
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM2arrayRAND[i] = pifSEPERATS4slaveTM2array[pifSEPERATS3S4TM2arrayRANDusedInd[i]];
                }      
		}                
                ################ band 3
		if ( sensors3 == 7 )
		{             
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM3arrayRAND[i] = pifSEPERATS4slaveTM3array[pifSEPERATS3S4ETM3arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors3 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM3arrayRAND[i] = pifSEPERATS4slaveTM3array[pifSEPERATS3S4TM3arrayRANDusedInd[i]];
                }         
		}	
                ################ band 4
             
       	if ( sensors3 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM4arrayRAND[i] = pifSEPERATS4slaveTM4array[pifSEPERATS3S4ETM4arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM4arrayRAND[i] = pifSEPERATS4slaveTM4array[pifSEPERATS3S4TM4arrayRANDusedInd[i]];
                }           
		}                
                ################ band 5
             
       	if ( sensors3 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM5arrayRAND[i] = pifSEPERATS4slaveTM5array[pifSEPERATS3S4ETM5arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors3 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM5arrayRAND[i] = pifSEPERATS4slaveTM5array[pifSEPERATS3S4TM5arrayRANDusedInd[i]];
                }         
		}
                ################ band 7
             
       	if ( sensors3 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM7arrayRAND[i] = pifSEPERATS4slaveTM7array[pifSEPERATS3S4ETM7arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors3 == 6 )
		{     
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveTM7arrayRAND[i] = pifSEPERATS4slaveTM7array[pifSEPERATS3S4TM7arrayRANDusedInd[i]];
                }       
		}
	}
			else
			{
			numeric pifSEPERATS4arrayCount = 1;
            	array pifSEPERATS4slaveMSS1array[countS3S4total];
            	array pifSEPERATS4slaveMSS2array[countS3S4total];
            	array pifSEPERATS4slaveMSS3array[countS3S4total];
            	array pifSEPERATS4slaveMSS4array[countS3S4total];
            
            	array pifSEPERATS4slaveMSS1arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveMSS2arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveMSS3arrayRAND[minPifVAL];
            	array pifSEPERATS4slaveMSS4arrayRAND[minPifVAL];
            
			  for i = 1 to MSSlins
                	  {
                    	for j = 1 to MSScols
                    	{     
                            if ( S3MASK[i,j] == 1 && S4MASK[i,j] == 1 )
                            {
                                    pifSEPERATS4slaveMSS1array[pifSEPERATS4arrayCount] = REFS4MSS1[i,j];
                                    pifSEPERATS4slaveMSS2array[pifSEPERATS4arrayCount] = REFS4MSS2[i,j]; 
                                    pifSEPERATS4slaveMSS3array[pifSEPERATS4arrayCount] = REFS4MSS3[i,j];
                                    pifSEPERATS4slaveMSS4array[pifSEPERATS4arrayCount] = REFS4MSS4[i,j];
                                    pifSEPERATS4arrayCount = pifSEPERATS4arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
       	if ( sensors3 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS1arrayRAND[i] = pifSEPERATS4slaveMSS1array[pifSEPERATS3S4ETM2arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors3 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS1arrayRAND[i] = pifSEPERATS4slaveMSS1array[pifSEPERATS3S4TM2arrayRANDusedInd[i]];
                }           
		}
		
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS1arrayRAND[i] = pifSEPERATS4slaveMSS1array[pifSEPERATS3S4MSS1arrayRANDusedInd[i]];
                }
		}
                
                ################ band 2
             
       	if ( sensors3 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS2arrayRAND[i] = pifSEPERATS4slaveMSS2array[pifSEPERATS3S4ETM3arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors3 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS2arrayRAND[i] = pifSEPERATS4slaveMSS2array[pifSEPERATS3S4TM3arrayRANDusedInd[i]];
                }            
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS2arrayRAND[i] = pifSEPERATS4slaveMSS2array[pifSEPERATS3S4MSS2arrayRANDusedInd[i]];
                }
		}
                
                ################ band 3
             
        if ( sensors3 == 5 or sensors3 == 4 or sensors3 == 3 or sensors3 == 2 or sensors3 == 1 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS3arrayRAND[i] = pifSEPERATS4slaveMSS3array[pifSEPERATS3S4MSS3arrayRANDusedInd[i]];
                }
		}
                
                ################ band 4
             
       	if ( sensors3 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS4arrayRAND[i] = pifSEPERATS4slaveMSS4array[pifSEPERATS3S4ETM4arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors3 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS4arrayRAND[i] = pifSEPERATS4slaveMSS4array[pifSEPERATS3S4TM4arrayRANDusedInd[i]];
                }         
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS4slaveMSS4arrayRAND[i] = pifSEPERATS4slaveMSS4array[pifSEPERATS3S4MSS4arrayRANDusedInd[i]];
                }
		}
	   }
	}
		if ( pifSEPERATS3S1arrayCount < minPifVAL )
            {
               printf("For the PIF mask combination Scene 3 and Scene 1 %5i pixels were needed, but only %5i were found.\n", minPifVAL, pifSEPERATS3S1arrayCount);
            }
            
            if ( pifSEPERATS3S2arrayCount < minPifVAL )
            {
               printf("For the PIF mask combination Scene 3 and Scene 2 %5i pixels were needed, but only %5i were found.\n", minPifVAL, pifSEPERATS3S2arrayCount);
            }
            
            if ( pifSEPERATS3S4arrayCount < minPifVAL )
            {
               printf("For the PIF mask combination Scene 3 and Scene 4 %5i pixels were needed, but only %5i were found.\n", minPifVAL, pifSEPERATS3S4arrayCount);
            }
            if ( pifSEPERATS3S1arrayCount < minPifVAL && pifSEPERATS3S2arrayCount < minPifVAL && pifSEPERATS3S4arrayCount < minPifVAL )
            {
                printf("All PIF-masks have a smaller pixelcount than minPifVAL requires... %5i pixels are needed for each raster... Quitting...\n\n", minPifVAL);
                Exit();
            }
	}
    else if ( slaveMaster == 4 )
    {
	    if ( countS4S1total >= minPifVAL && countS4S2total >= minPifVAL && countS4S3total >= minPifVAL )
	    {
			if ( sensors4 == 7 )
			{
			numeric pifSEPERATS4S1arrayCount = 1;
			numeric pifSEPERATS4S2arrayCount = 1;
			numeric pifSEPERATS4S3arrayCount = 1;
            	array pifSEPERATS4S1ETM1array[countS4S1total];
            	array pifSEPERATS4S1ETM2array[countS4S1total];
            	array pifSEPERATS4S1ETM3array[countS4S1total];
            	array pifSEPERATS4S1ETM4array[countS4S1total];
            	array pifSEPERATS4S1ETM5array[countS4S1total];
            	array pifSEPERATS4S1ETM7array[countS4S1total];
            
            	array pifSEPERATS4S1ETM1arrayRAND[minPifVAL];
                array pifSEPERATS4S1ETM2arrayRAND[minPifVAL];
                array pifSEPERATS4S1ETM3arrayRAND[minPifVAL];
                array pifSEPERATS4S1ETM4arrayRAND[minPifVAL];
                array pifSEPERATS4S1ETM5arrayRAND[minPifVAL];
                array pifSEPERATS4S1ETM7arrayRAND[minPifVAL];
    
                array pifSEPERATS4S1ETM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S1ETM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S1ETM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S1ETM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S1ETM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S1ETM7arrayRANDusedInd[minPifVAL];
                
            	array pifSEPERATS4S2ETM1array[countS4S2total];
            	array pifSEPERATS4S2ETM2array[countS4S2total];
            	array pifSEPERATS4S2ETM3array[countS4S2total];
            	array pifSEPERATS4S2ETM4array[countS4S2total];
            	array pifSEPERATS4S2ETM5array[countS4S2total];
            	array pifSEPERATS4S2ETM7array[countS4S2total];
            
            	array pifSEPERATS4S2ETM1arrayRAND[minPifVAL];
                array pifSEPERATS4S2ETM2arrayRAND[minPifVAL];
                array pifSEPERATS4S2ETM3arrayRAND[minPifVAL];
                array pifSEPERATS4S2ETM4arrayRAND[minPifVAL];
                array pifSEPERATS4S2ETM5arrayRAND[minPifVAL];
                array pifSEPERATS4S2ETM7arrayRAND[minPifVAL];
    
                array pifSEPERATS4S2ETM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S2ETM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S2ETM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S2ETM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S2ETM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S2ETM7arrayRANDusedInd[minPifVAL];
                
            	array pifSEPERATS4S3ETM1array[countS4S3total];
            	array pifSEPERATS4S3ETM2array[countS4S3total];
            	array pifSEPERATS4S3ETM3array[countS4S3total];
            	array pifSEPERATS4S3ETM4array[countS4S3total];
            	array pifSEPERATS4S3ETM5array[countS4S3total];
            	array pifSEPERATS4S3ETM7array[countS4S3total];
            
            	array pifSEPERATS4S3ETM1arrayRAND[minPifVAL];
                array pifSEPERATS4S3ETM2arrayRAND[minPifVAL];
                array pifSEPERATS4S3ETM3arrayRAND[minPifVAL];
                array pifSEPERATS4S3ETM4arrayRAND[minPifVAL];
                array pifSEPERATS4S3ETM5arrayRAND[minPifVAL];
                array pifSEPERATS4S3ETM7arrayRAND[minPifVAL];
    
                array pifSEPERATS4S3ETM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S3ETM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S3ETM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S3ETM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S3ETM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S3ETM7arrayRANDusedInd[minPifVAL];
                	  for i = 1 to ETMlins
                	  {
                    	for j = 1 to ETMcols
                    	{     
                            if ( S4MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS4S1ETM1array[pifSEPERATS4S1arrayCount] = REFS4ETM1[i,j];                        
                                        pifSEPERATS4S1ETM2array[pifSEPERATS4S1arrayCount] = REFS4ETM2[i,j];                        
                                    pifSEPERATS4S1ETM3array[pifSEPERATS4S1arrayCount] = REFS4ETM3[i,j];
                            pifSEPERATS4S1ETM4array[pifSEPERATS4S1arrayCount] = REFS4ETM4[i,j];
                                    pifSEPERATS4S1ETM5array[pifSEPERATS4S1arrayCount] = REFS4ETM5[i,j];
                            pifSEPERATS4S1ETM7array[pifSEPERATS4S1arrayCount] = REFS4ETM7[i,j];
                                    pifSEPERATS4S1arrayCount = pifSEPERATS4S1arrayCount + 1;
                            }
        
                            if ( S4MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                            {
                            pifSEPERATS4S2ETM1array[pifSEPERATS4S2arrayCount] = REFS4ETM1[i,j];                        
                                        pifSEPERATS4S2ETM2array[pifSEPERATS4S2arrayCount] = REFS4ETM2[i,j];                        
                                    pifSEPERATS4S2ETM3array[pifSEPERATS4S2arrayCount] = REFS4ETM3[i,j];
                            pifSEPERATS4S2ETM4array[pifSEPERATS4S2arrayCount] = REFS4ETM4[i,j];
                                    pifSEPERATS4S2ETM5array[pifSEPERATS4S2arrayCount] = REFS4ETM5[i,j];
                            pifSEPERATS4S2ETM7array[pifSEPERATS4S2arrayCount] = REFS4ETM7[i,j];
                            pifSEPERATS4S2arrayCount = pifSEPERATS4S2arrayCount + 1;
                            }
        
                            if ( S4MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                            {
                            pifSEPERATS4S3ETM1array[pifSEPERATS4S3arrayCount] = REFS4ETM1[i,j];                        
                                        pifSEPERATS4S3ETM2array[pifSEPERATS4S3arrayCount] = REFS4ETM2[i,j];                        
                                    pifSEPERATS4S3ETM3array[pifSEPERATS4S3arrayCount] = REFS4ETM3[i,j];
                            pifSEPERATS4S3ETM4array[pifSEPERATS4S3arrayCount] = REFS4ETM4[i,j];
                                    pifSEPERATS4S3ETM5array[pifSEPERATS4S3arrayCount] = REFS4ETM5[i,j];
                            pifSEPERATS4S3ETM7array[pifSEPERATS4S3arrayCount] = REFS4ETM7[i,j];
                            pifSEPERATS4S3arrayCount = pifSEPERATS4S3arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ############# band 1
            
                numeric validSEPERATS4S1ETM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S1ETM1 == 0 )
                    {
                        numeric randomValueSEPERATS4S1ETM1 = floor((rand(countS4S1total) + 1));      
                        validSEPERATS4S1ETM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S1ETM1 = pifSEPERATS4S1ETM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S1ETM1 == randomValueSEPERATS4S1ETM1 )
                            {
                                validSEPERATS4S1ETM1 = 0;
                            }
                        }
                    }
                pifSEPERATS4S1ETM1arrayRAND[i] = pifSEPERATS4S1ETM1array[randomValueSEPERATS4S1ETM1];
                pifSEPERATS4S1ETM1arrayRANDusedInd[i] = randomValueSEPERATS4S1ETM1;
                validSEPERATS4S1ETM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS4S1ETM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S1ETM2 == 0 )
                    {
                        numeric randomValueSEPERATS4S1ETM2 = floor((rand(countS4S1total) + 1));      
                        validSEPERATS4S1ETM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S1ETM2 = pifSEPERATS4S1ETM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S1ETM2 == randomValueSEPERATS4S1ETM2 )
                            {
                                validSEPERATS4S1ETM2 = 0;
                            }
                        }
                    }
                pifSEPERATS4S1ETM2arrayRAND[i] = pifSEPERATS4S1ETM2array[randomValueSEPERATS4S1ETM2];
                pifSEPERATS4S1ETM2arrayRANDusedInd[i] = randomValueSEPERATS4S1ETM2;
                validSEPERATS4S1ETM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS4S1ETM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S1ETM3 == 0 )
                    {
                        numeric randomValueSEPERATS4S1ETM3 = floor((rand(countS4S1total) + 1));      
                        validSEPERATS4S1ETM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S1ETM3 = pifSEPERATS4S1ETM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S1ETM3 == randomValueSEPERATS4S1ETM3 )
                            {
                                validSEPERATS4S1ETM3 = 0;
                            }
                        }
                    }
                pifSEPERATS4S1ETM3arrayRAND[i] = pifSEPERATS4S1ETM3array[randomValueSEPERATS4S1ETM3];
                pifSEPERATS4S1ETM3arrayRANDusedInd[i] = randomValueSEPERATS4S1ETM3;
                validSEPERATS4S1ETM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS4S1ETM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S1ETM4 == 0 )
                    {
                        numeric randomValueSEPERATS4S1ETM4 = floor((rand(countS4S1total) + 1));      
                        validSEPERATS4S1ETM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S1ETM4 = pifSEPERATS4S1ETM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S1ETM4 == randomValueSEPERATS4S1ETM4 )
                            {
                                validSEPERATS4S1ETM4 = 0;
                            }
                        }
                    }
                pifSEPERATS4S1ETM4arrayRAND[i] = pifSEPERATS4S1ETM4array[randomValueSEPERATS4S1ETM4];
                pifSEPERATS4S1ETM4arrayRANDusedInd[i] = randomValueSEPERATS4S1ETM4;
                validSEPERATS4S1ETM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS4S1ETM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S1ETM5 == 0 )
                    {
                        numeric randomValueSEPERATS4S1ETM5 = floor((rand(countS4S1total) + 1));      
                        validSEPERATS4S1ETM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S1ETM5 = pifSEPERATS4S1ETM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S1ETM5 == randomValueSEPERATS4S1ETM5 )
                            {
                                validSEPERATS4S1ETM5 = 0;
                            }
                        }
                    }
                pifSEPERATS4S1ETM5arrayRAND[i] = pifSEPERATS4S1ETM5array[randomValueSEPERATS4S1ETM5];
                pifSEPERATS4S1ETM5arrayRANDusedInd[i] = randomValueSEPERATS4S1ETM5;
                validSEPERATS4S1ETM5 = 0;
                }
            
            ################ band 7
                
                numeric validSEPERATS4S1ETM7 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S1ETM7 == 0 )
                    {
                        numeric randomValueSEPERATS4S1ETM7 = floor((rand(countS4S1total) + 1));      
                        validSEPERATS4S1ETM7 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S1ETM7 = pifSEPERATS4S1ETM7arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S1ETM7 == randomValueSEPERATS4S1ETM7 )
                            {
                                validSEPERATS4S1ETM7 = 0;
                            }
                        }
                    }
                pifSEPERATS4S1ETM7arrayRAND[i] = pifSEPERATS4S1ETM7array[randomValueSEPERATS4S1ETM7];
                pifSEPERATS4S1ETM7arrayRANDusedInd[i] = randomValueSEPERATS4S1ETM7;
                validSEPERATS4S1ETM7 = 0;
                }
            
            
            ###################################################
            
            	############# band 1
            
                numeric validSEPERATS4S2ETM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S2ETM1 == 0 )
                    {
                        numeric randomValueSEPERATS4S2ETM1 = floor((rand(countS4S2total) + 1));      
                        validSEPERATS4S2ETM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S2ETM1 = pifSEPERATS4S2ETM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S2ETM1 == randomValueSEPERATS4S2ETM1 )
                            {
                   validSEPERATS4S2ETM1 = 0;
                            }
                        }
                    }
                pifSEPERATS4S2ETM1arrayRAND[i] = pifSEPERATS4S2ETM1array[randomValueSEPERATS4S2ETM1];
                pifSEPERATS4S2ETM1arrayRANDusedInd[i] = randomValueSEPERATS4S2ETM1;
                validSEPERATS4S2ETM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS4S2ETM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S2ETM2 == 0 )
                    {
                        numeric randomValueSEPERATS4S2ETM2 = floor((rand(countS4S2total) + 1));      
                        validSEPERATS4S2ETM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S2ETM2 = pifSEPERATS4S2ETM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S2ETM2 == randomValueSEPERATS4S2ETM2 )
                            {
                                validSEPERATS4S2ETM2 = 0;
                            }
                        }
                    }
                pifSEPERATS4S2ETM2arrayRAND[i] = pifSEPERATS4S2ETM2array[randomValueSEPERATS4S2ETM2];
                pifSEPERATS4S2ETM2arrayRANDusedInd[i] = randomValueSEPERATS4S2ETM2;
                validSEPERATS4S2ETM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS4S2ETM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S2ETM3 == 0 )
                    {
                        numeric randomValueSEPERATS4S2ETM3 = floor((rand(countS4S2total) + 1));      
                        validSEPERATS4S2ETM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S2ETM3 = pifSEPERATS4S2ETM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S2ETM3 == randomValueSEPERATS4S2ETM3 )
                            {
                                validSEPERATS4S2ETM3 = 0;
                            }
                        }
                    }
                pifSEPERATS4S2ETM3arrayRAND[i] = pifSEPERATS4S2ETM3array[randomValueSEPERATS4S2ETM3];
                pifSEPERATS4S2ETM3arrayRANDusedInd[i] = randomValueSEPERATS4S2ETM3;
                validSEPERATS4S2ETM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS4S2ETM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S2ETM4 == 0 )
                    {
                        numeric randomValueSEPERATS4S2ETM4 = floor((rand(countS4S2total) + 1));      
                        validSEPERATS4S2ETM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S2ETM4 = pifSEPERATS4S2ETM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S2ETM4 == randomValueSEPERATS4S2ETM4 )
                            {
                                validSEPERATS4S2ETM4 = 0;
                            }
                        }
                    }
                pifSEPERATS4S2ETM4arrayRAND[i] = pifSEPERATS4S2ETM4array[randomValueSEPERATS4S2ETM4];
                pifSEPERATS4S2ETM4arrayRANDusedInd[i] = randomValueSEPERATS4S2ETM4;
                validSEPERATS4S2ETM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS4S2ETM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S2ETM5 == 0 )
                    {
                        numeric randomValueSEPERATS4S2ETM5 = floor((rand(countS4S2total) + 1));      
                        validSEPERATS4S2ETM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S2ETM5 = pifSEPERATS4S2ETM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S2ETM5 == randomValueSEPERATS4S2ETM5 )
                            {
                                validSEPERATS4S2ETM5 = 0;
                            }
                        }
                    }
                pifSEPERATS4S2ETM5arrayRAND[i] = pifSEPERATS4S2ETM5array[randomValueSEPERATS4S2ETM5];
                pifSEPERATS4S2ETM5arrayRANDusedInd[i] = randomValueSEPERATS4S2ETM5;
                validSEPERATS4S2ETM5 = 0;
                }
            
            ################ band 7
                
                numeric validSEPERATS4S2ETM7 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S2ETM7 == 0 )
                    {
                        numeric randomValueSEPERATS4S2ETM7 = floor((rand(countS4S2total) + 1));      
                        validSEPERATS4S2ETM7 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S2ETM7 = pifSEPERATS4S2ETM7arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S2ETM7 == randomValueSEPERATS4S2ETM7 )
                            {
                                validSEPERATS4S2ETM7 = 0;
                            }
                        }
                    }
                pifSEPERATS4S2ETM7arrayRAND[i] = pifSEPERATS4S2ETM7array[randomValueSEPERATS4S2ETM7];
                pifSEPERATS4S2ETM7arrayRANDusedInd[i] = randomValueSEPERATS4S2ETM7;
                validSEPERATS4S2ETM7 = 0;
                }
            
            #######################################
            
            	############# band 1
            
                numeric validSEPERATS4S3ETM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S3ETM1 == 0 )
                    {
                        numeric randomValueSEPERATS4S3ETM1 = floor((rand(countS4S3total) + 1));      
                        validSEPERATS4S3ETM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S3ETM1 = pifSEPERATS4S3ETM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S3ETM1 == randomValueSEPERATS4S3ETM1 )
                            {
                                validSEPERATS4S3ETM1 = 0;
                            }
                        }
                    }
                pifSEPERATS4S3ETM1arrayRAND[i] = pifSEPERATS4S3ETM1array[randomValueSEPERATS4S3ETM1];
                pifSEPERATS4S3ETM1arrayRANDusedInd[i] = randomValueSEPERATS4S3ETM1;
                validSEPERATS4S3ETM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS4S3ETM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S3ETM2 == 0 )
                    {
                        numeric randomValueSEPERATS4S3ETM2 = floor((rand(countS4S3total) + 1));      
                        validSEPERATS4S3ETM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S3ETM2 = pifSEPERATS4S3ETM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S3ETM2 == randomValueSEPERATS4S3ETM2 )
                            {
                                validSEPERATS4S3ETM2 = 0;
                            }
                        }
                    }
                pifSEPERATS4S3ETM2arrayRAND[i] = pifSEPERATS4S3ETM2array[randomValueSEPERATS4S3ETM2];
                pifSEPERATS4S3ETM2arrayRANDusedInd[i] = randomValueSEPERATS4S3ETM2;
                validSEPERATS4S3ETM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS4S3ETM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S3ETM3 == 0 )
                    {
                        numeric randomValueSEPERATS4S3ETM3 = floor((rand(countS4S3total) + 1));      
                        validSEPERATS4S3ETM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S3ETM3 = pifSEPERATS4S3ETM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S3ETM3 == randomValueSEPERATS4S3ETM3 )
                            {
                                validSEPERATS4S3ETM3 = 0;
                            }
                        }
                    }
                pifSEPERATS4S3ETM3arrayRAND[i] = pifSEPERATS4S3ETM3array[randomValueSEPERATS4S3ETM3];
                pifSEPERATS4S3ETM3arrayRANDusedInd[i] = randomValueSEPERATS4S3ETM3;
                validSEPERATS4S3ETM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS4S3ETM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S3ETM4 == 0 )
                    {
                        numeric randomValueSEPERATS4S3ETM4 = floor((rand(countS4S3total) + 1));      
                        validSEPERATS4S3ETM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S3ETM4 = pifSEPERATS4S3ETM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S3ETM4 == randomValueSEPERATS4S3ETM4 )
                            {
                                validSEPERATS4S3ETM4 = 0;
                            }
                        }
                    }
                pifSEPERATS4S3ETM4arrayRAND[i] = pifSEPERATS4S3ETM4array[randomValueSEPERATS4S3ETM4];
                pifSEPERATS4S3ETM4arrayRANDusedInd[i] = randomValueSEPERATS4S3ETM4;
                validSEPERATS4S3ETM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS4S3ETM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S3ETM5 == 0 )
                    {
                        numeric randomValueSEPERATS4S3ETM5 = floor((rand(countS4S3total) + 1));      
                        validSEPERATS4S3ETM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S3ETM5 = pifSEPERATS4S3ETM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S3ETM5 == randomValueSEPERATS4S3ETM5 )
                            {
                                validSEPERATS4S3ETM5 = 0;
                            }
                        }
                    }
                pifSEPERATS4S3ETM5arrayRAND[i] = pifSEPERATS4S3ETM5array[randomValueSEPERATS4S3ETM5];
                pifSEPERATS4S3ETM5arrayRANDusedInd[i] = randomValueSEPERATS4S3ETM5;
                validSEPERATS4S3ETM5 = 0;
                }
            
            ################ band 7
                
                    numeric validSEPERATS4S3ETM7 = 0;
                 
                    for i = 1 to minPifVAL
                    {
                        while ( validSEPERATS4S3ETM7 == 0 )
                        {
                            numeric randomValueSEPERATS4S3ETM7 = floor((rand(countS4S3total) + 1));      
                            validSEPERATS4S3ETM7 = 1;
                
                            for j = 1 to (i-1)
                            {
                                local numeric testValueSEPERATS4S3ETM7 = pifSEPERATS4S3ETM7arrayRANDusedInd[j];
                            
                                if ( testValueSEPERATS4S3ETM7 == randomValueSEPERATS4S3ETM7 )
                                {
                                    validSEPERATS4S3ETM7 = 0;
                                }
                            }
                        }
                    pifSEPERATS4S3ETM7arrayRAND[i] = pifSEPERATS4S3ETM7array[randomValueSEPERATS4S3ETM7];
                    pifSEPERATS4S3ETM7arrayRANDusedInd[i] = randomValueSEPERATS4S3ETM7;
                    validSEPERATS4S3ETM7 = 0;
                    }
			}
			else if ( sensors4 == 6 )
			{
			numeric pifSEPERATS4S1arrayCount = 1;
			numeric pifSEPERATS4S2arrayCount = 1;
			numeric pifSEPERATS4S3arrayCount = 1;
            	array pifSEPERATS4S1TM1array[countS4S1total];
            	array pifSEPERATS4S1TM2array[countS4S1total];
            	array pifSEPERATS4S1TM3array[countS4S1total];
            	array pifSEPERATS4S1TM4array[countS4S1total];
            	array pifSEPERATS4S1TM5array[countS4S1total];
            	array pifSEPERATS4S1TM7array[countS4S1total];
            
            	array pifSEPERATS4S1TM1arrayRAND[minPifVAL];
            	array pifSEPERATS4S1TM2arrayRAND[minPifVAL];
            	array pifSEPERATS4S1TM3arrayRAND[minPifVAL];
            	array pifSEPERATS4S1TM4arrayRAND[minPifVAL];
            	array pifSEPERATS4S1TM5arrayRAND[minPifVAL];
            	array pifSEPERATS4S1TM7arrayRAND[minPifVAL];
            
            	array pifSEPERATS4S1TM1arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS4S1TM2arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS4S1TM3arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS4S1TM4arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS4S1TM5arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS4S1TM7arrayRANDusedInd[minPifVAL];
            
            	array pifSEPERATS4S2TM1array[countS4S2total];
            	array pifSEPERATS4S2TM2array[countS4S2total];
            	array pifSEPERATS4S2TM3array[countS4S2total];
            	array pifSEPERATS4S2TM4array[countS4S2total];
            	array pifSEPERATS4S2TM5array[countS4S2total];
            	array pifSEPERATS4S2TM7array[countS4S2total];
            
            	array pifSEPERATS4S2TM1arrayRAND[minPifVAL];
                array pifSEPERATS4S2TM2arrayRAND[minPifVAL];
                array pifSEPERATS4S2TM3arrayRAND[minPifVAL];
                array pifSEPERATS4S2TM4arrayRAND[minPifVAL];
                array pifSEPERATS4S2TM5arrayRAND[minPifVAL];
                array pifSEPERATS4S2TM7arrayRAND[minPifVAL];
    
                array pifSEPERATS4S2TM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S2TM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S2TM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S2TM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S2TM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S2TM7arrayRANDusedInd[minPifVAL];
                
            	array pifSEPERATS4S3TM1array[countS4S3total];
            	array pifSEPERATS4S3TM2array[countS4S3total];
            	array pifSEPERATS4S3TM3array[countS4S3total];
            	array pifSEPERATS4S3TM4array[countS4S3total];
            	array pifSEPERATS4S3TM5array[countS4S3total];
            	array pifSEPERATS4S3TM7array[countS4S3total];
            
            	array pifSEPERATS4S3TM1arrayRAND[minPifVAL];
                array pifSEPERATS4S3TM2arrayRAND[minPifVAL];
                array pifSEPERATS4S3TM3arrayRAND[minPifVAL];
                array pifSEPERATS4S3TM4arrayRAND[minPifVAL];
         array pifSEPERATS4S3TM5arrayRAND[minPifVAL];
                array pifSEPERATS4S3TM7arrayRAND[minPifVAL];
    
                array pifSEPERATS4S3TM1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S3TM2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S3TM3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S3TM4arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S3TM5arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S3TM7arrayRANDusedInd[minPifVAL];
                	  for i = 1 to TMlins
                	  {
                    	for j = 1 to TMcols
                    	{     
                            if ( S4MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS4S1TM1array[pifSEPERATS4S1arrayCount] = REFS4TM1[i,j];                        
                                        pifSEPERATS4S1TM2array[pifSEPERATS4S1arrayCount] = REFS4TM2[i,j];                        
                                    pifSEPERATS4S1TM3array[pifSEPERATS4S1arrayCount] = REFS4TM3[i,j];
                            pifSEPERATS4S1TM4array[pifSEPERATS4S1arrayCount] = REFS4TM4[i,j];
                                    pifSEPERATS4S1TM5array[pifSEPERATS4S1arrayCount] = REFS4TM5[i,j];
                            pifSEPERATS4S1TM7array[pifSEPERATS4S1arrayCount] = REFS4TM7[i,j];
                                    pifSEPERATS4S1arrayCount = pifSEPERATS4S1arrayCount + 1;
                            }
        
                            if ( S4MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                            {
                            pifSEPERATS4S2TM1array[pifSEPERATS4S2arrayCount] = REFS4TM1[i,j];                        
                                        pifSEPERATS4S2TM2array[pifSEPERATS4S2arrayCount] = REFS4TM2[i,j];                        
                                    pifSEPERATS4S2TM3array[pifSEPERATS4S2arrayCount] = REFS4TM3[i,j];
                            pifSEPERATS4S2TM4array[pifSEPERATS4S2arrayCount] = REFS4TM4[i,j];
                                    pifSEPERATS4S2TM5array[pifSEPERATS4S2arrayCount] = REFS4TM5[i,j];
                            pifSEPERATS4S2TM7array[pifSEPERATS4S2arrayCount] = REFS4TM7[i,j];
                            pifSEPERATS4S2arrayCount = pifSEPERATS4S2arrayCount + 1;
                            }
        
                            if ( S4MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                            {
                            pifSEPERATS4S3TM1array[pifSEPERATS4S3arrayCount] = REFS4TM1[i,j];                        
                                        pifSEPERATS4S3TM2array[pifSEPERATS4S3arrayCount] = REFS4TM2[i,j];                        
                                    pifSEPERATS4S3TM3array[pifSEPERATS4S3arrayCount] = REFS4TM3[i,j];
                            pifSEPERATS4S3TM4array[pifSEPERATS4S3arrayCount] = REFS4TM4[i,j];
                                    pifSEPERATS4S3TM5array[pifSEPERATS4S3arrayCount] = REFS4TM5[i,j];
                            pifSEPERATS4S3TM7array[pifSEPERATS4S3arrayCount] = REFS4TM7[i,j];
                            pifSEPERATS4S3arrayCount = pifSEPERATS4S3arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ############# band 1
            
                numeric validSEPERATS4S1TM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S1TM1 == 0 )
                    {
                        numeric randomValueSEPERATS4S1TM1 = floor((rand(countS4S1total) + 1));      
                        validSEPERATS4S1TM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S1TM1 = pifSEPERATS4S1TM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S1TM1 == randomValueSEPERATS4S1TM1 )
                            {
                                validSEPERATS4S1TM1 = 0;
                            }
                        }
                    }
                pifSEPERATS4S1TM1arrayRAND[i] = pifSEPERATS4S1TM1array[randomValueSEPERATS4S1TM1];
                pifSEPERATS4S1TM1arrayRANDusedInd[i] = randomValueSEPERATS4S1TM1;
                validSEPERATS4S1TM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS4S1TM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S1TM2 == 0 )
                    {
                        numeric randomValueSEPERATS4S1TM2 = floor((rand(countS4S1total) + 1));      
                        validSEPERATS4S1TM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S1TM2 = pifSEPERATS4S1TM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S1TM2 == randomValueSEPERATS4S1TM2 )
                            {
                                validSEPERATS4S1TM2 = 0;
                            }
                        }
                    }
                pifSEPERATS4S1TM2arrayRAND[i] = pifSEPERATS4S1TM2array[randomValueSEPERATS4S1TM2];
                pifSEPERATS4S1TM2arrayRANDusedInd[i] = randomValueSEPERATS4S1TM2;
                validSEPERATS4S1TM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS4S1TM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S1TM3 == 0 )
                    {
                        numeric randomValueSEPERATS4S1TM3 = floor((rand(countS4S1total) + 1));      
                        validSEPERATS4S1TM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S1TM3 = pifSEPERATS4S1TM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S1TM3 == randomValueSEPERATS4S1TM3 )
                            {
                                validSEPERATS4S1TM3 = 0;
                            }
                        }
                    }
                pifSEPERATS4S1TM3arrayRAND[i] = pifSEPERATS4S1TM3array[randomValueSEPERATS4S1TM3];
                pifSEPERATS4S1TM3arrayRANDusedInd[i] = randomValueSEPERATS4S1TM3;
                validSEPERATS4S1TM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS4S1TM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S1TM4 == 0 )
                    {
                        numeric randomValueSEPERATS4S1TM4 = floor((rand(countS4S1total) + 1));      
                        validSEPERATS4S1TM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S1TM4 = pifSEPERATS4S1TM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S1TM4 == randomValueSEPERATS4S1TM4 )
                            {
                                validSEPERATS4S1TM4 = 0;
                            }
                        }
                    }
                pifSEPERATS4S1TM4arrayRAND[i] = pifSEPERATS4S1TM4array[randomValueSEPERATS4S1TM4];
                pifSEPERATS4S1TM4arrayRANDusedInd[i] = randomValueSEPERATS4S1TM4;
                validSEPERATS4S1TM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS4S1TM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S1TM5 == 0 )
                    {
                        numeric randomValueSEPERATS4S1TM5 = floor((rand(countS4S1total) + 1));      
                        validSEPERATS4S1TM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S1TM5 = pifSEPERATS4S1TM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S1TM5 == randomValueSEPERATS4S1TM5 )
                            {
                                validSEPERATS4S1TM5 = 0;
                            }
                        }
                    }
                pifSEPERATS4S1TM5arrayRAND[i] = pifSEPERATS4S1TM5array[randomValueSEPERATS4S1TM5];
                pifSEPERATS4S1TM5arrayRANDusedInd[i] = randomValueSEPERATS4S1TM5;
                validSEPERATS4S1TM5 = 0;
                }
            
            ################ band 7
                
                numeric validSEPERATS4S1TM7 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S1TM7 == 0 )
                    {
                        numeric randomValueSEPERATS4S1TM7 = floor((rand(countS4S1total) + 1));      
                        validSEPERATS4S1TM7 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S1TM7 = pifSEPERATS4S1TM7arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S1TM7 == randomValueSEPERATS4S1TM7 )
                            {
                                validSEPERATS4S1TM7 = 0;
                            }
                        }
                    }
                pifSEPERATS4S1TM7arrayRAND[i] = pifSEPERATS4S1TM7array[randomValueSEPERATS4S1TM7];
                pifSEPERATS4S1TM7arrayRANDusedInd[i] = randomValueSEPERATS4S1TM7;
                validSEPERATS4S1TM7 = 0;
                }
            
            
            ###################################################
            
            	############# band 1
            
                numeric validSEPERATS4S2TM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S2TM1 == 0 )
                    {
                        numeric randomValueSEPERATS4S2TM1 = floor((rand(countS4S2total) + 1));      
                        validSEPERATS4S2TM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S2TM1 = pifSEPERATS4S2TM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S2TM1 == randomValueSEPERATS4S2TM1 )
                            {
                                validSEPERATS4S2TM1 = 0;
                            }
                        }
                    }
                pifSEPERATS4S2TM1arrayRAND[i] = pifSEPERATS4S2TM1array[randomValueSEPERATS4S2TM1];
                pifSEPERATS4S2TM1arrayRANDusedInd[i] = randomValueSEPERATS4S2TM1;
                validSEPERATS4S2TM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS4S2TM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S2TM2 == 0 )
                    {
                        numeric randomValueSEPERATS4S2TM2 = floor((rand(countS4S2total) + 1));      
                        validSEPERATS4S2TM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S2TM2 = pifSEPERATS4S2TM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S2TM2 == randomValueSEPERATS4S2TM2 )
                            {
                                validSEPERATS4S2TM2 = 0;
                            }
                        }
                    }
                pifSEPERATS4S2TM2arrayRAND[i] = pifSEPERATS4S2TM2array[randomValueSEPERATS4S2TM2];
                pifSEPERATS4S2TM2arrayRANDusedInd[i] = randomValueSEPERATS4S2TM2;
                validSEPERATS4S2TM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS4S2TM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S2TM3 == 0 )
                    {
                        numeric randomValueSEPERATS4S2TM3 = floor((rand(countS4S2total) + 1));      
                        validSEPERATS4S2TM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S2TM3 = pifSEPERATS4S2TM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S2TM3 == randomValueSEPERATS4S2TM3 )
                            {
                                validSEPERATS4S2TM3 = 0;
                            }
                        }
                    }
                pifSEPERATS4S2TM3arrayRAND[i] = pifSEPERATS4S2TM3array[randomValueSEPERATS4S2TM3];
                pifSEPERATS4S2TM3arrayRANDusedInd[i] = randomValueSEPERATS4S2TM3;
                validSEPERATS4S2TM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS4S2TM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S2TM4 == 0 )
                    {
                        numeric randomValueSEPERATS4S2TM4 = floor((rand(countS4S2total) + 1));      
                        validSEPERATS4S2TM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S2TM4 = pifSEPERATS4S2TM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S2TM4 == randomValueSEPERATS4S2TM4 )
                            {
                                validSEPERATS4S2TM4 = 0;
                            }
                        }
                    }
                pifSEPERATS4S2TM4arrayRAND[i] = pifSEPERATS4S2TM4array[randomValueSEPERATS4S2TM4];
                pifSEPERATS4S2TM4arrayRANDusedInd[i] = randomValueSEPERATS4S2TM4;
                validSEPERATS4S2TM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS4S2TM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S2TM5 == 0 )
                    {
                        numeric randomValueSEPERATS4S2TM5 = floor((rand(countS4S2total) + 1));      
                        validSEPERATS4S2TM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S2TM5 = pifSEPERATS4S2TM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S2TM5 == randomValueSEPERATS4S2TM5 )
                            {
                                validSEPERATS4S2TM5 = 0;
                            }
                        }
                    }
                pifSEPERATS4S2TM5arrayRAND[i] = pifSEPERATS4S2TM5array[randomValueSEPERATS4S2TM5];
                pifSEPERATS4S2TM5arrayRANDusedInd[i] = randomValueSEPERATS4S2TM5;
                validSEPERATS4S2TM5 = 0;
                }
            
            ################ band 7
                
                numeric validSEPERATS4S2TM7 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S2TM7 == 0 )
                    {
                        numeric randomValueSEPERATS4S2TM7 = floor((rand(countS4S2total) + 1));      
                        validSEPERATS4S2TM7 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S2TM7 = pifSEPERATS4S2TM7arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S2TM7 == randomValueSEPERATS4S2TM7 )
                            {
                                validSEPERATS4S2TM7 = 0;
                            }
                        }
                    }
                pifSEPERATS4S2TM7arrayRAND[i] = pifSEPERATS4S2TM7array[randomValueSEPERATS4S2TM7];
                pifSEPERATS4S2TM7arrayRANDusedInd[i] = randomValueSEPERATS4S2TM7;
                validSEPERATS4S2TM7 = 0;
                }
            
            #######################################
            
            	############# band 1
            
                numeric validSEPERATS4S3TM1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S3TM1 == 0 )
                    {
                        numeric randomValueSEPERATS4S3TM1 = floor((rand(countS4S3total) + 1));      
                        validSEPERATS4S3TM1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S3TM1 = pifSEPERATS4S3TM1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S3TM1 == randomValueSEPERATS4S3TM1 )
                            {
                                validSEPERATS4S3TM1 = 0;
                            }
                        }
                    }
                pifSEPERATS4S3TM1arrayRAND[i] = pifSEPERATS4S3TM1array[randomValueSEPERATS4S3TM1];
                pifSEPERATS4S3TM1arrayRANDusedInd[i] = randomValueSEPERATS4S3TM1;
                validSEPERATS4S3TM1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS4S3TM2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S3TM2 == 0 )
                    {
                        numeric randomValueSEPERATS4S3TM2 = floor((rand(countS4S3total) + 1));      
                        validSEPERATS4S3TM2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S3TM2 = pifSEPERATS4S3TM2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S3TM2 == randomValueSEPERATS4S3TM2 )
                            {
                                validSEPERATS4S3TM2 = 0;
                            }
                        }
                    }
                pifSEPERATS4S3TM2arrayRAND[i] = pifSEPERATS4S3TM2array[randomValueSEPERATS4S3TM2];
                pifSEPERATS4S3TM2arrayRANDusedInd[i] = randomValueSEPERATS4S3TM2;
                validSEPERATS4S3TM2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS4S3TM3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S3TM3 == 0 )
                    {
                        numeric randomValueSEPERATS4S3TM3 = floor((rand(countS4S3total) + 1));      
                        validSEPERATS4S3TM3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S3TM3 = pifSEPERATS4S3TM3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S3TM3 == randomValueSEPERATS4S3TM3 )
                            {
                                validSEPERATS4S3TM3 = 0;
                            }
                        }
                    }
                pifSEPERATS4S3TM3arrayRAND[i] = pifSEPERATS4S3TM3array[randomValueSEPERATS4S3TM3];
                pifSEPERATS4S3TM3arrayRANDusedInd[i] = randomValueSEPERATS4S3TM3;
                validSEPERATS4S3TM3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS4S3TM4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S3TM4 == 0 )
                    {
                        numeric randomValueSEPERATS4S3TM4 = floor((rand(countS4S3total) + 1));      
                        validSEPERATS4S3TM4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S3TM4 = pifSEPERATS4S3TM4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S3TM4 == randomValueSEPERATS4S3TM4 )
                            {
                                validSEPERATS4S3TM4 = 0;
                            }
                        }
                    }
                pifSEPERATS4S3TM4arrayRAND[i] = pifSEPERATS4S3TM4array[randomValueSEPERATS4S3TM4];
                pifSEPERATS4S3TM4arrayRANDusedInd[i] = randomValueSEPERATS4S3TM4;
                validSEPERATS4S3TM4 = 0;
                }
            
            ############## band 5
            
                numeric validSEPERATS4S3TM5 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S3TM5 == 0 )
                    {
                        numeric randomValueSEPERATS4S3TM5 = floor((rand(countS4S3total) + 1));      
                        validSEPERATS4S3TM5 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S3TM5 = pifSEPERATS4S3TM5arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S3TM5 == randomValueSEPERATS4S3TM5 )
                            {
                                validSEPERATS4S3TM5 = 0;
                            }
                        }
                    }
                pifSEPERATS4S3TM5arrayRAND[i] = pifSEPERATS4S3TM5array[randomValueSEPERATS4S3TM5];
                pifSEPERATS4S3TM5arrayRANDusedInd[i] = randomValueSEPERATS4S3TM5;
                validSEPERATS4S3TM5 = 0;
                }
            
            ################ band 7
                
                    numeric validSEPERATS4S3TM7 = 0;
                 
                    for i = 1 to minPifVAL
                    {
                        while ( validSEPERATS4S3TM7 == 0 )
                        {
                            numeric randomValueSEPERATS4S3TM7 = floor((rand(countS4S3total) + 1));      
                            validSEPERATS4S3TM7 = 1;
                
                            for j = 1 to (i-1)
                            {
                                local numeric testValueSEPERATS4S3TM7 = pifSEPERATS4S3TM7arrayRANDusedInd[j];
                            
                                if ( testValueSEPERATS4S3TM7 == randomValueSEPERATS4S3TM7 )
                                {
                                    validSEPERATS4S3TM7 = 0;
                                }
                            }
                        }
                    pifSEPERATS4S3TM7arrayRAND[i] = pifSEPERATS4S3TM7array[randomValueSEPERATS4S3TM7];
                    pifSEPERATS4S3TM7arrayRANDusedInd[i] = randomValueSEPERATS4S3TM7;
                    validSEPERATS4S3TM7 = 0;
                    }
			}
			else
			{
			numeric pifSEPERATS4S1arrayCount = 1;
			numeric pifSEPERATS4S2arrayCount = 1;
			numeric pifSEPERATS4S3arrayCount = 1;
            	array pifSEPERATS4S1MSS1array[countS4S1total];
            	array pifSEPERATS4S1MSS2array[countS4S1total];
            	array pifSEPERATS4S1MSS3array[countS4S1total];
            	array pifSEPERATS4S1MSS4array[countS4S1total];
            
            	array pifSEPERATS4S1MSS1arrayRAND[minPifVAL];
            	array pifSEPERATS4S1MSS2arrayRAND[minPifVAL];
            	array pifSEPERATS4S1MSS3arrayRAND[minPifVAL];
            	array pifSEPERATS4S1MSS4arrayRAND[minPifVAL];
            	            
            	array pifSEPERATS4S1MSS1arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS4S1MSS2arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS4S1MSS3arrayRANDusedInd[minPifVAL];
            	array pifSEPERATS4S1MSS4arrayRANDusedInd[minPifVAL];
            
            	array pifSEPERATS4S2MSS1array[countS4S2total];
            	array pifSEPERATS4S2MSS2array[countS4S2total];
            	array pifSEPERATS4S2MSS3array[countS4S2total];
            	array pifSEPERATS4S2MSS4array[countS4S2total];
            
            	array pifSEPERATS4S2MSS1arrayRAND[minPifVAL];
                array pifSEPERATS4S2MSS2arrayRAND[minPifVAL];
                array pifSEPERATS4S2MSS3arrayRAND[minPifVAL];
                array pifSEPERATS4S2MSS4arrayRAND[minPifVAL];
                   
                array pifSEPERATS4S2MSS1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S2MSS2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S2MSS3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S2MSS4arrayRANDusedInd[minPifVAL];
                
            	array pifSEPERATS4S3MSS1array[countS4S3total];
            	array pifSEPERATS4S3MSS2array[countS4S3total];
            	array pifSEPERATS4S3MSS3array[countS4S3total];
            	array pifSEPERATS4S3MSS4array[countS4S3total];
            
            	array pifSEPERATS4S3MSS1arrayRAND[minPifVAL];
                array pifSEPERATS4S3MSS2arrayRAND[minPifVAL];
                array pifSEPERATS4S3MSS3arrayRAND[minPifVAL];
                array pifSEPERATS4S3MSS4arrayRAND[minPifVAL];
                   
                array pifSEPERATS4S3MSS1arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S3MSS2arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S3MSS3arrayRANDusedInd[minPifVAL];
                array pifSEPERATS4S3MSS4arrayRANDusedInd[minPifVAL];
                	  for i = 1 to MSSlins
                	  {
                    	for j = 1 to MSScols
                    	{     
                            if ( S4MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS4S1MSS1array[pifSEPERATS4S1arrayCount] = REFS4MSS1[i,j];                        
                                        pifSEPERATS4S1MSS2array[pifSEPERATS4S1arrayCount] = REFS4MSS2[i,j];                        
                                    pifSEPERATS4S1MSS3array[pifSEPERATS4S1arrayCount] = REFS4MSS3[i,j];
                            pifSEPERATS4S1MSS4array[pifSEPERATS4S1arrayCount] = REFS4MSS4[i,j];
                                    pifSEPERATS4S1arrayCount = pifSEPERATS4S1arrayCount + 1;
                            }
        
                            if ( S4MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                            {
                            pifSEPERATS4S2MSS1array[pifSEPERATS4S2arrayCount] = REFS4MSS1[i,j];                        
                                        pifSEPERATS4S2MSS2array[pifSEPERATS4S2arrayCount] = REFS4MSS2[i,j];                        
                                    pifSEPERATS4S2MSS3array[pifSEPERATS4S2arrayCount] = REFS4MSS3[i,j];
                            pifSEPERATS4S2MSS4array[pifSEPERATS4S2arrayCount] = REFS4MSS4[i,j];
                            pifSEPERATS4S2arrayCount = pifSEPERATS4S2arrayCount + 1;
                            }
        
                            if ( S4MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                            {
                            pifSEPERATS4S3MSS1array[pifSEPERATS4S3arrayCount] = REFS4MSS1[i,j];                        
                                        pifSEPERATS4S3MSS2array[pifSEPERATS4S3arrayCount] = REFS4MSS2[i,j];                        
                                    pifSEPERATS4S3MSS3array[pifSEPERATS4S3arrayCount] = REFS4MSS3[i,j];
                            pifSEPERATS4S3MSS4array[pifSEPERATS4S3arrayCount] = REFS4MSS4[i,j];
                            pifSEPERATS4S3arrayCount = pifSEPERATS4S3arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ############# band 1
            
                numeric validSEPERATS4S1MSS1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S1MSS1 == 0 )
                    {
                        numeric randomValueSEPERATS4S1MSS1 = floor((rand(countS4S1total) + 1));      
                        validSEPERATS4S1MSS1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S1MSS1 = pifSEPERATS4S1MSS1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S1MSS1 == randomValueSEPERATS4S1MSS1 )
                            {
                                validSEPERATS4S1MSS1 = 0;
                            }
                        }
                    }
                pifSEPERATS4S1MSS1arrayRAND[i] = pifSEPERATS4S1MSS1array[randomValueSEPERATS4S1MSS1];
                pifSEPERATS4S1MSS1arrayRANDusedInd[i] = randomValueSEPERATS4S1MSS1;
                validSEPERATS4S1MSS1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS4S1MSS2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S1MSS2 == 0 )
                    {
                        numeric randomValueSEPERATS4S1MSS2 = floor((rand(countS4S1total) + 1));      
                        validSEPERATS4S1MSS2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S1MSS2 = pifSEPERATS4S1MSS2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S1MSS2 == randomValueSEPERATS4S1MSS2 )
                            {
                                validSEPERATS4S1MSS2 = 0;
                            }
                        }
                    }
                pifSEPERATS4S1MSS2arrayRAND[i] = pifSEPERATS4S1MSS2array[randomValueSEPERATS4S1MSS2];
                pifSEPERATS4S1MSS2arrayRANDusedInd[i] = randomValueSEPERATS4S1MSS2;
                validSEPERATS4S1MSS2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS4S1MSS3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S1MSS3 == 0 )
                    {
                        numeric randomValueSEPERATS4S1MSS3 = floor((rand(countS4S1total) + 1));      
                        validSEPERATS4S1MSS3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S1MSS3 = pifSEPERATS4S1MSS3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S1MSS3 == randomValueSEPERATS4S1MSS3 )
                            {
                                validSEPERATS4S1MSS3 = 0;
                            }
                        }
                    }
                pifSEPERATS4S1MSS3arrayRAND[i] = pifSEPERATS4S1MSS3array[randomValueSEPERATS4S1MSS3];
                pifSEPERATS4S1MSS3arrayRANDusedInd[i] = randomValueSEPERATS4S1MSS3;
                validSEPERATS4S1MSS3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS4S1MSS4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S1MSS4 == 0 )
                    {
                        numeric randomValueSEPERATS4S1MSS4 = floor((rand(countS4S1total) + 1));      
                        validSEPERATS4S1MSS4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S1MSS4 = pifSEPERATS4S1MSS4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S1MSS4 == randomValueSEPERATS4S1MSS4 )
                            {
                                validSEPERATS4S1MSS4 = 0;
                            }
                        }
                    }
                pifSEPERATS4S1MSS4arrayRAND[i] = pifSEPERATS4S1MSS4array[randomValueSEPERATS4S1MSS4];
                pifSEPERATS4S1MSS4arrayRANDusedInd[i] = randomValueSEPERATS4S1MSS4;
                validSEPERATS4S1MSS4 = 0;
                }
            
            ###################################################
            
            	############# band 1
            
                numeric validSEPERATS4S2MSS1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S2MSS1 == 0 )
                    {
                        numeric randomValueSEPERATS4S2MSS1 = floor((rand(countS4S2total) + 1));      
                        validSEPERATS4S2MSS1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S2MSS1 = pifSEPERATS4S2MSS1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S2MSS1 == randomValueSEPERATS4S2MSS1 )
                            {
                                validSEPERATS4S2MSS1 = 0;
                            }
                        }
                    }
                pifSEPERATS4S2MSS1arrayRAND[i] = pifSEPERATS4S2MSS1array[randomValueSEPERATS4S2MSS1];
                pifSEPERATS4S2MSS1arrayRANDusedInd[i] = randomValueSEPERATS4S2MSS1;
                validSEPERATS4S2MSS1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS4S2MSS2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S2MSS2 == 0 )
                    {
                        numeric randomValueSEPERATS4S2MSS2 = floor((rand(countS4S2total) + 1));      
                        validSEPERATS4S2MSS2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S2MSS2 = pifSEPERATS4S2MSS2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S2MSS2 == randomValueSEPERATS4S2MSS2 )
                            {
                                validSEPERATS4S2MSS2 = 0;
                            }
                        }
                    }
                pifSEPERATS4S2MSS2arrayRAND[i] = pifSEPERATS4S2MSS2array[randomValueSEPERATS4S2MSS2];
                pifSEPERATS4S2MSS2arrayRANDusedInd[i] = randomValueSEPERATS4S2MSS2;
                validSEPERATS4S2MSS2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS4S2MSS3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S2MSS3 == 0 )
                    {
                        numeric randomValueSEPERATS4S2MSS3 = floor((rand(countS4S2total) + 1));      
                        validSEPERATS4S2MSS3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S2MSS3 = pifSEPERATS4S2MSS3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S2MSS3 == randomValueSEPERATS4S2MSS3 )
                            {
                                validSEPERATS4S2MSS3 = 0;
                            }
                        }
                    }
                pifSEPERATS4S2MSS3arrayRAND[i] = pifSEPERATS4S2MSS3array[randomValueSEPERATS4S2MSS3];
                pifSEPERATS4S2MSS3arrayRANDusedInd[i] = randomValueSEPERATS4S2MSS3;
                validSEPERATS4S2MSS3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS4S2MSS4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S2MSS4 == 0 )
                    {
                        numeric randomValueSEPERATS4S2MSS4 = floor((rand(countS4S2total) + 1));      
                        validSEPERATS4S2MSS4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S2MSS4 = pifSEPERATS4S2MSS4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S2MSS4 == randomValueSEPERATS4S2MSS4 )
                            {
                                validSEPERATS4S2MSS4 = 0;
                            }
                        }
                    }
                pifSEPERATS4S2MSS4arrayRAND[i] = pifSEPERATS4S2MSS4array[randomValueSEPERATS4S2MSS4];
                pifSEPERATS4S2MSS4arrayRANDusedInd[i] = randomValueSEPERATS4S2MSS4;
                validSEPERATS4S2MSS4 = 0;
                }
            
            #######################################
            
            	############# band 1
            
                numeric validSEPERATS4S3MSS1 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S3MSS1 == 0 )
                    {
                        numeric randomValueSEPERATS4S3MSS1 = floor((rand(countS4S3total) + 1));      
                        validSEPERATS4S3MSS1 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S3MSS1 = pifSEPERATS4S3MSS1arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S3MSS1 == randomValueSEPERATS4S3MSS1 )
                            {
                                validSEPERATS4S3MSS1 = 0;
                            }
                        }
                    }
                pifSEPERATS4S3MSS1arrayRAND[i] = pifSEPERATS4S3MSS1array[randomValueSEPERATS4S3MSS1];
                pifSEPERATS4S3MSS1arrayRANDusedInd[i] = randomValueSEPERATS4S3MSS1;
                validSEPERATS4S3MSS1 = 0;
                }
            
            ############# band 2
            
                numeric validSEPERATS4S3MSS2 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S3MSS2 == 0 )
                    {
                        numeric randomValueSEPERATS4S3MSS2 = floor((rand(countS4S3total) + 1));      
                        validSEPERATS4S3MSS2 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S3MSS2 = pifSEPERATS4S3MSS2arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S3MSS2 == randomValueSEPERATS4S3MSS2 )
                            {
                                validSEPERATS4S3MSS2 = 0;
                            }
                        }
                    }
                pifSEPERATS4S3MSS2arrayRAND[i] = pifSEPERATS4S3MSS2array[randomValueSEPERATS4S3MSS2];
                pifSEPERATS4S3MSS2arrayRANDusedInd[i] = randomValueSEPERATS4S3MSS2;
                validSEPERATS4S3MSS2 = 0;
                }
            
            ############## band 3
                
                numeric validSEPERATS4S3MSS3 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S3MSS3 == 0 )
                    {
                        numeric randomValueSEPERATS4S3MSS3 = floor((rand(countS4S3total) + 1));      
                        validSEPERATS4S3MSS3 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S3MSS3 = pifSEPERATS4S3MSS3arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S3MSS3 == randomValueSEPERATS4S3MSS3 )
                            {
                                validSEPERATS4S3MSS3 = 0;
                            }
                        }
                    }
                pifSEPERATS4S3MSS3arrayRAND[i] = pifSEPERATS4S3MSS3array[randomValueSEPERATS4S3MSS3];
                pifSEPERATS4S3MSS3arrayRANDusedInd[i] = randomValueSEPERATS4S3MSS3;
                validSEPERATS4S3MSS3 = 0;
                }
            
            ################ band 4
            
                numeric validSEPERATS4S3MSS4 = 0;
             
                for i = 1 to minPifVAL
                {
                    while ( validSEPERATS4S3MSS4 == 0 )
                    {
                        numeric randomValueSEPERATS4S3MSS4 = floor((rand(countS4S3total) + 1));      
                        validSEPERATS4S3MSS4 = 1;
            
                        for j = 1 to (i-1)
                        {
                            local numeric testValueSEPERATS4S3MSS4 = pifSEPERATS4S3MSS4arrayRANDusedInd[j];
                        
                            if ( testValueSEPERATS4S3MSS4 == randomValueSEPERATS4S3MSS4 )
                            {
                                validSEPERATS4S3MSS4 = 0;
                            }
                        }
                    }
                pifSEPERATS4S3MSS4arrayRAND[i] = pifSEPERATS4S3MSS4array[randomValueSEPERATS4S3MSS4];
                pifSEPERATS4S3MSS4arrayRANDusedInd[i] = randomValueSEPERATS4S3MSS4;
                validSEPERATS4S3MSS4 = 0;
                }
		}
			if ( sensors1 == 7 )
	            {
            	numeric pifSEPERATS1arrayCount = 1;
            	array pifSEPERATS1slaveETM1array[countS4S1total];
            	array pifSEPERATS1slaveETM2array[countS4S1total];
            	array pifSEPERATS1slaveETM3array[countS4S1total];
            	array pifSEPERATS1slaveETM4array[countS4S1total];
            	array pifSEPERATS1slaveETM5array[countS4S1total];
            	array pifSEPERATS1slaveETM7array[countS4S1total];
            
            	array pifSEPERATS1slaveETM1arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveETM2arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveETM3arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveETM4arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveETM5arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveETM7arrayRAND[minPifVAL];
            
			  for i = 1 to ETMlins
                	  {
                    	for j = 1 to ETMcols
                    	{     
                            if ( S4MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS1slaveETM1array[pifSEPERATS1arrayCount] = REFS1ETM1[i,j];
                                    pifSEPERATS1slaveETM2array[pifSEPERATS1arrayCount] = REFS1ETM2[i,j]; 
                                    pifSEPERATS1slaveETM3array[pifSEPERATS1arrayCount] = REFS1ETM3[i,j];
                                    pifSEPERATS1slaveETM4array[pifSEPERATS1arrayCount] = REFS1ETM4[i,j];
                                    pifSEPERATS1slaveETM5array[pifSEPERATS1arrayCount] = REFS1ETM5[i,j];
                                    pifSEPERATS1slaveETM7array[pifSEPERATS1arrayCount] = REFS1ETM7[i,j];
                                    pifSEPERATS1arrayCount = pifSEPERATS1arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
       	if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM1arrayRAND[i] = pifSEPERATS1slaveETM1array[pifSEPERATS4S1ETM1arrayRANDusedInd[i]];
                }
		}
               
       	else if ( sensors4 == 6 )
		{     
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM1arrayRAND[i] = pifSEPERATS1slaveETM1array[pifSEPERATS4S1TM1arrayRANDusedInd[i]];
                }       
		}
 
                ################ band 2
       	if ( sensors4 == 7 )
		{                         
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM2arrayRAND[i] = pifSEPERATS1slaveETM2array[pifSEPERATS4S1ETM2arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors4 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM2arrayRAND[i] = pifSEPERATS1slaveETM2array[pifSEPERATS4S1TM2arrayRANDusedInd[i]];
                }          
		}
                ################ band 3
             
       	if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM3arrayRAND[i] = pifSEPERATS1slaveETM3array[pifSEPERATS4S1ETM3arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors4 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM3arrayRAND[i] = pifSEPERATS1slaveETM3array[pifSEPERATS4S1TM3arrayRANDusedInd[i]];
                }           
		}
                ################ band 4
             
       	if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM4arrayRAND[i] = pifSEPERATS1slaveETM4array[pifSEPERATS4S1ETM4arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors4 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM4arrayRAND[i] = pifSEPERATS1slaveETM4array[pifSEPERATS4S1TM4arrayRANDusedInd[i]];
                }           
		}
                ################ band 5
             
       	if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM5arrayRAND[i] = pifSEPERATS1slaveETM5array[pifSEPERATS4S1ETM5arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors4 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM5arrayRAND[i] = pifSEPERATS1slaveETM5array[pifSEPERATS4S1TM5arrayRANDusedInd[i]];
                }           
		}
                ################ band 7
             
       	if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM7arrayRAND[i] = pifSEPERATS1slaveETM7array[pifSEPERATS4S1ETM7arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors4 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveETM7arrayRAND[i] = pifSEPERATS1slaveETM7array[pifSEPERATS4S1TM7arrayRANDusedInd[i]];
                }         
		}
       }
			else if ( sensors1 == 6 )
			{
			numeric pifSEPERATS1arrayCount = 1;
            	array pifSEPERATS1slaveTM1array[countS4S1total];
            	array pifSEPERATS1slaveTM2array[countS4S1total];
            	array pifSEPERATS1slaveTM3array[countS4S1total];
            	array pifSEPERATS1slaveTM4array[countS4S1total];
            	array pifSEPERATS1slaveTM5array[countS4S1total];
            	array pifSEPERATS1slaveTM7array[countS4S1total];
            
            	array pifSEPERATS1slaveTM1arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveTM2arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveTM3arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveTM4arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveTM5arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveTM7arrayRAND[minPifVAL];
            
			  for i = 1 to TMlins
                	  {
                    	for j = 1 to TMcols
                    	{     
                            if ( S4MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS1slaveTM1array[pifSEPERATS1arrayCount] = REFS1TM1[i,j];
                                    pifSEPERATS1slaveTM2array[pifSEPERATS1arrayCount] = REFS1TM2[i,j]; 
                                    pifSEPERATS1slaveTM3array[pifSEPERATS1arrayCount] = REFS1TM3[i,j];
                                    pifSEPERATS1slaveTM4array[pifSEPERATS1arrayCount] = REFS1TM4[i,j];
                                    pifSEPERATS1slaveTM5array[pifSEPERATS1arrayCount] = REFS1TM5[i,j];
                                    pifSEPERATS1slaveTM7array[pifSEPERATS1arrayCount] = REFS1TM7[i,j];
                                    pifSEPERATS1arrayCount = pifSEPERATS1arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
       	if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM1arrayRAND[i] = pifSEPERATS1slaveTM1array[pifSEPERATS4S1ETM1arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors4 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM1arrayRAND[i] = pifSEPERATS1slaveTM1array[pifSEPERATS4S1TM1arrayRANDusedInd[i]];
                }         
		}
                
                ################ band 2
             
       	if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM2arrayRAND[i] = pifSEPERATS1slaveTM2array[pifSEPERATS4S1ETM2arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors4 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM2arrayRAND[i] = pifSEPERATS1slaveTM2array[pifSEPERATS4S1TM2arrayRANDusedInd[i]];
                }          
		}
                ################ band 3
                  
       	if ( sensors4 == 7 )
		{                   
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM3arrayRAND[i] = pifSEPERATS1slaveTM3array[pifSEPERATS4S1ETM3arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors4 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM3arrayRAND[i] = pifSEPERATS1slaveTM3array[pifSEPERATS4S1TM3arrayRANDusedInd[i]];
                }         
		}
                ################ band 4
             
       	if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM4arrayRAND[i] = pifSEPERATS1slaveTM4array[pifSEPERATS4S1ETM4arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors4 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM4arrayRAND[i] = pifSEPERATS1slaveTM4array[pifSEPERATS4S1TM4arrayRANDusedInd[i]];
                }           
		}
                ################ band 5
             
       	if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM5arrayRAND[i] = pifSEPERATS1slaveTM5array[pifSEPERATS4S1ETM5arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors4 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM5arrayRAND[i] = pifSEPERATS1slaveTM5array[pifSEPERATS4S1TM5arrayRANDusedInd[i]];
                }          
		}
                ################ band 7
             
       	if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM7arrayRAND[i] = pifSEPERATS1slaveTM7array[pifSEPERATS4S1ETM7arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors4 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveTM7arrayRAND[i] = pifSEPERATS1slaveTM7array[pifSEPERATS4S1TM7arrayRANDusedInd[i]];
                }         
		}
	}
			else
			{
			numeric pifSEPERATS1arrayCount = 1;
            	array pifSEPERATS1slaveMSS1array[countS4S1total];
            	array pifSEPERATS1slaveMSS2array[countS4S1total];
            	array pifSEPERATS1slaveMSS3array[countS4S1total];
            	array pifSEPERATS1slaveMSS4array[countS4S1total];
            
            	array pifSEPERATS1slaveMSS1arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveMSS2arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveMSS3arrayRAND[minPifVAL];
            	array pifSEPERATS1slaveMSS4arrayRAND[minPifVAL];
            
			  for i = 1 to MSSlins
                	  {
                    	for j = 1 to MSScols
                    	{     
                            if ( S4MASK[i,j] == 1 && S1MASK[i,j] == 1 )
                            {
                                    pifSEPERATS1slaveMSS1array[pifSEPERATS1arrayCount] = REFS1MSS1[i,j];
                                    pifSEPERATS1slaveMSS2array[pifSEPERATS1arrayCount] = REFS1MSS2[i,j]; 
                                    pifSEPERATS1slaveMSS3array[pifSEPERATS1arrayCount] = REFS1MSS3[i,j];
                                    pifSEPERATS1slaveMSS4array[pifSEPERATS1arrayCount] = REFS1MSS4[i,j];
                                    pifSEPERATS1arrayCount = pifSEPERATS1arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
       	if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS1arrayRAND[i] = pifSEPERATS1slaveMSS1array[pifSEPERATS4S1ETM2arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors4 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS1arrayRAND[i] = pifSEPERATS1slaveMSS1array[pifSEPERATS4S1TM2arrayRANDusedInd[i]];
                }         
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS1arrayRAND[i] = pifSEPERATS1slaveMSS1array[pifSEPERATS4S1MSS1arrayRANDusedInd[i]];
                }
		}
                
                ################ band 2
             
       	if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS2arrayRAND[i] = pifSEPERATS1slaveMSS2array[pifSEPERATS4S1ETM3arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors4 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS2arrayRAND[i] = pifSEPERATS1slaveMSS2array[pifSEPERATS4S1TM3arrayRANDusedInd[i]];
                }            
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS2arrayRAND[i] = pifSEPERATS1slaveMSS2array[pifSEPERATS4S1MSS2arrayRANDusedInd[i]];
                }
		}
                
                ################ band 3
             
        if ( sensors4 == 5 or sensors4 == 4 or sensors4 == 3 or sensors4 == 2 or sensors4 == 1 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS3arrayRAND[i] = pifSEPERATS1slaveMSS3array[pifSEPERATS4S1MSS3arrayRANDusedInd[i]];
                }
		}
                
                ################ band 4
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS4arrayRAND[i] = pifSEPERATS1slaveMSS4array[pifSEPERATS4S1ETM4arrayRANDusedInd[i]];
                }
		}
       	else if ( sensors4 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS4arrayRAND[i] = pifSEPERATS1slaveMSS4array[pifSEPERATS4S1TM4arrayRANDusedInd[i]];
                }            
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS1slaveMSS4arrayRAND[i] = pifSEPERATS1slaveMSS4array[pifSEPERATS4S1MSS4arrayRANDusedInd[i]];
                }
		}
	}
			if ( sensors2 == 7 )
			{
			numeric pifSEPERATS2arrayCount = 1;
            	array pifSEPERATS2slaveETM1array[countS4S2total];
            	array pifSEPERATS2slaveETM2array[countS4S2total];
            	array pifSEPERATS2slaveETM3array[countS4S2total];
            	array pifSEPERATS2slaveETM4array[countS4S2total];
            	array pifSEPERATS2slaveETM5array[countS4S2total];
            	array pifSEPERATS2slaveETM7array[countS4S2total];
            
            	array pifSEPERATS2slaveETM1arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveETM2arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveETM3arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveETM4arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveETM5arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveETM7arrayRAND[minPifVAL];
            
			  for i = 1 to ETMlins
                	  {
                    	for j = 1 to ETMcols
                    	{     
                            if ( S4MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                            {
                                    pifSEPERATS2slaveETM1array[pifSEPERATS2arrayCount] = REFS2ETM1[i,j];
                                    pifSEPERATS2slaveETM2array[pifSEPERATS2arrayCount] = REFS2ETM2[i,j]; 
                                    pifSEPERATS2slaveETM3array[pifSEPERATS2arrayCount] = REFS2ETM3[i,j];
                                    pifSEPERATS2slaveETM4array[pifSEPERATS2arrayCount] = REFS2ETM4[i,j];
                                    pifSEPERATS2slaveETM5array[pifSEPERATS2arrayCount] = REFS2ETM5[i,j];
                                    pifSEPERATS2slaveETM7array[pifSEPERATS2arrayCount] = REFS2ETM7[i,j];
                                    pifSEPERATS2arrayCount = pifSEPERATS2arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM1arrayRAND[i] = pifSEPERATS2slaveETM1array[pifSEPERATS4S2ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM1arrayRAND[i] = pifSEPERATS2slaveETM1array[pifSEPERATS4S2TM1arrayRANDusedInd[i]];
                }            
		}
                
                ################ band 2
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM2arrayRAND[i] = pifSEPERATS2slaveETM2array[pifSEPERATS4S2ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM2arrayRAND[i] = pifSEPERATS2slaveETM2array[pifSEPERATS4S2TM2arrayRANDusedInd[i]];
                }         
		}
                ################ band 3
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM3arrayRAND[i] = pifSEPERATS2slaveETM3array[pifSEPERATS4S2ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM3arrayRAND[i] = pifSEPERATS2slaveETM3array[pifSEPERATS4S2TM3arrayRANDusedInd[i]];
                }          
		}
                ################ band 4
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM4arrayRAND[i] =pifSEPERATS2slaveETM4array[pifSEPERATS4S2ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM4arrayRAND[i] = pifSEPERATS2slaveETM4array[pifSEPERATS4S2TM4arrayRANDusedInd[i]];
                }          
		}
                ################ band 5
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM5arrayRAND[i] = pifSEPERATS2slaveETM5array[pifSEPERATS4S2ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM5arrayRAND[i] = pifSEPERATS2slaveETM5array[pifSEPERATS4S2TM5arrayRANDusedInd[i]];
                }          
		}
                ################ band 7
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM7arrayRAND[i] = pifSEPERATS2slaveETM7array[pifSEPERATS4S2ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveETM7arrayRAND[i] = pifSEPERATS2slaveETM7array[pifSEPERATS4S2TM7arrayRANDusedInd[i]];
                }
		}
	}
			else if ( sensors2 == 6 )
			{
			numeric pifSEPERATS2arrayCount = 1;
            	array pifSEPERATS2slaveTM1array[countS4S2total];
            	array pifSEPERATS2slaveTM2array[countS4S2total];
            	array pifSEPERATS2slaveTM3array[countS4S2total];
            	array pifSEPERATS2slaveTM4array[countS4S2total];
            	array pifSEPERATS2slaveTM5array[countS4S2total];
            	array pifSEPERATS2slaveTM7array[countS4S2total];
            
            	array pifSEPERATS2slaveTM1arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveTM2arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveTM3arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveTM4arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveTM5arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveTM7arrayRAND[minPifVAL];
            
			  for i = 1 to TMlins
                	  {
                    	for j = 1 to TMcols
                    	{     
                            if ( S4MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                            {
                                    pifSEPERATS2slaveTM1array[pifSEPERATS2arrayCount] = REFS2TM1[i,j];
                                    pifSEPERATS2slaveTM2array[pifSEPERATS2arrayCount] = REFS2TM2[i,j]; 
                                    pifSEPERATS2slaveTM3array[pifSEPERATS2arrayCount] = REFS2TM3[i,j];
                                    pifSEPERATS2slaveTM4array[pifSEPERATS2arrayCount] = REFS2TM4[i,j];
                                    pifSEPERATS2slaveTM5array[pifSEPERATS2arrayCount] = REFS2TM5[i,j];
                                    pifSEPERATS2slaveTM7array[pifSEPERATS2arrayCount] = REFS2TM7[i,j];
                                    pifSEPERATS2arrayCount = pifSEPERATS2arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM1arrayRAND[i] = pifSEPERATS2slaveTM1array[pifSEPERATS4S2ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM1arrayRAND[i] = pifSEPERATS2slaveTM1array[pifSEPERATS4S2TM1arrayRANDusedInd[i]];
                }            
		}
                
                ################ band 2
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM2arrayRAND[i] = pifSEPERATS2slaveTM2array[pifSEPERATS4S2ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM2arrayRAND[i] = pifSEPERATS2slaveTM2array[pifSEPERATS4S2TM2arrayRANDusedInd[i]];
                }          
		}
                ################ band 3
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM3arrayRAND[i] = pifSEPERATS2slaveTM3array[pifSEPERATS4S2ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM3arrayRAND[i] = pifSEPERATS2slaveTM3array[pifSEPERATS4S2TM3arrayRANDusedInd[i]];
                }            
		}
                ################ band 4
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM4arrayRAND[i] = pifSEPERATS2slaveTM4array[pifSEPERATS4S2ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM4arrayRAND[i] = pifSEPERATS2slaveTM4array[pifSEPERATS4S2TM4arrayRANDusedInd[i]];
                }            
		}
                ################ band 5
             
		if ( sensors4 == 7 )
		{                        
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM5arrayRAND[i] = pifSEPERATS2slaveTM5array[pifSEPERATS4S2ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM5arrayRAND[i] = pifSEPERATS2slaveTM5array[pifSEPERATS4S2TM5arrayRANDusedInd[i]];
                }           
		}
                ################ band 7
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM7arrayRAND[i] = pifSEPERATS2slaveTM7array[pifSEPERATS4S2ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveTM7arrayRAND[i] = pifSEPERATS2slaveTM7array[pifSEPERATS4S2TM7arrayRANDusedInd[i]];
                }           
		}
	}
			else
			{
			numeric pifSEPERATS2arrayCount = 1;
            	array pifSEPERATS2slaveMSS1array[countS4S2total];
            	array pifSEPERATS2slaveMSS2array[countS4S2total];
            	array pifSEPERATS2slaveMSS3array[countS4S2total];
            	array pifSEPERATS2slaveMSS4array[countS4S2total];
            
            	array pifSEPERATS2slaveMSS1arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveMSS2arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveMSS3arrayRAND[minPifVAL];
            	array pifSEPERATS2slaveMSS4arrayRAND[minPifVAL];
            
			  for i = 1 to MSSlins
                	  {
                    	for j = 1 to MSScols
                    	{     
                            if ( S4MASK[i,j] == 1 && S2MASK[i,j] == 1 )
                            {
                                    pifSEPERATS2slaveMSS1array[pifSEPERATS2arrayCount] = REFS2MSS1[i,j];
                                    pifSEPERATS2slaveMSS2array[pifSEPERATS2arrayCount] = REFS2MSS2[i,j]; 
                                    pifSEPERATS2slaveMSS3array[pifSEPERATS2arrayCount] = REFS2MSS3[i,j];
                                    pifSEPERATS2slaveMSS4array[pifSEPERATS2arrayCount] = REFS2MSS4[i,j];
                                    pifSEPERATS2arrayCount = pifSEPERATS2arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS1arrayRAND[i] = pifSEPERATS2slaveMSS1array[pifSEPERATS4S2ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS1arrayRAND[i] = pifSEPERATS2slaveMSS1array[pifSEPERATS4S2TM2arrayRANDusedInd[i]];
                }           
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS1arrayRAND[i] = pifSEPERATS2slaveMSS1array[pifSEPERATS4S2MSS1arrayRANDusedInd[i]];
                }
		}
		                
                ################ band 2
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS2arrayRAND[i] = pifSEPERATS2slaveMSS2array[pifSEPERATS4S2ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS2arrayRAND[i] = pifSEPERATS2slaveMSS2array[pifSEPERATS4S2TM3arrayRANDusedInd[i]];
                }          
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS2arrayRAND[i] = pifSEPERATS2slaveMSS2array[pifSEPERATS4S2MSS2arrayRANDusedInd[i]];
                }
		}
                
                ################ band 3
             
        if ( sensors4 == 5 or sensors4 == 4 or sensors4 == 3 or sensors4 == 2 or sensors4 == 1 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS3arrayRAND[i] = pifSEPERATS2slaveMSS3array[pifSEPERATS4S2MSS3arrayRANDusedInd[i]];
                }
		}
                
                ################ band 4
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS4arrayRAND[i] = pifSEPERATS2slaveMSS4array[pifSEPERATS4S2ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS4arrayRAND[i] = pifSEPERATS2slaveMSS4array[pifSEPERATS4S2TM4arrayRANDusedInd[i]];
                }           
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS2slaveMSS4arrayRAND[i] = pifSEPERATS2slaveMSS4array[pifSEPERATS4S2MSS4arrayRANDusedInd[i]];
                }
		}
	}
			if ( sensors3 == 7 )
			{
			numeric pifSEPERATS3arrayCount = 1;
            	array pifSEPERATS3slaveETM1array[countS4S3total];
            	array pifSEPERATS3slaveETM2array[countS4S3total];
            	array pifSEPERATS3slaveETM3array[countS4S3total];
            	array pifSEPERATS3slaveETM4array[countS4S3total];
            	array pifSEPERATS3slaveETM5array[countS4S3total];
            	array pifSEPERATS3slaveETM7array[countS4S3total];
            
            	array pifSEPERATS3slaveETM1arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveETM2arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveETM3arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveETM4arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveETM5arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveETM7arrayRAND[minPifVAL];
            
			  for i = 1 to ETMlins
                	  {
                    	for j = 1 to ETMcols
                    	{     
                            if ( S4MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                            {
                                    pifSEPERATS3slaveETM1array[pifSEPERATS3arrayCount] = REFS3ETM1[i,j];
                                    pifSEPERATS3slaveETM2array[pifSEPERATS3arrayCount] = REFS3ETM2[i,j]; 
                                    pifSEPERATS3slaveETM3array[pifSEPERATS3arrayCount] = REFS3ETM3[i,j];
                                    pifSEPERATS3slaveETM4array[pifSEPERATS3arrayCount] = REFS3ETM4[i,j];
                                    pifSEPERATS3slaveETM5array[pifSEPERATS3arrayCount] = REFS3ETM5[i,j];
                                    pifSEPERATS3slaveETM7array[pifSEPERATS3arrayCount] = REFS3ETM7[i,j];
                                    pifSEPERATS3arrayCount = pifSEPERATS3arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM1arrayRAND[i] = pifSEPERATS3slaveETM1array[pifSEPERATS4S3ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{     
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM1arrayRAND[i] = pifSEPERATS3slaveETM1array[pifSEPERATS4S3TM1arrayRANDusedInd[i]];
                }       
		}
                
                ################ band 2
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM2arrayRAND[i] = pifSEPERATS3slaveETM2array[pifSEPERATS4S3ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM2arrayRAND[i] = pifSEPERATS3slaveETM2array[pifSEPERATS4S3TM2arrayRANDusedInd[i]];
                }           
		}
                ################ band 3
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM3arrayRAND[i] = pifSEPERATS3slaveETM3array[pifSEPERATS4S3ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM3arrayRAND[i] = pifSEPERATS3slaveETM3array[pifSEPERATS4S3TM3arrayRANDusedInd[i]];
                }          
		}
                ################ band 4
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM4arrayRAND[i] = pifSEPERATS3slaveETM4array[pifSEPERATS4S3ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM4arrayRAND[i] = pifSEPERATS3slaveETM4array[pifSEPERATS4S3TM4arrayRANDusedInd[i]];
                }           
		}
                ################ band 5
             
		if ( sensors4 == 7 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM5arrayRAND[i] = pifSEPERATS3slaveETM5array[pifSEPERATS4S3ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM5arrayRAND[i] = pifSEPERATS3slaveETM5array[pifSEPERATS4S3TM5arrayRANDusedInd[i]];
                }           
		}
                ################ band 7
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM7arrayRAND[i] = pifSEPERATS3slaveETM7array[pifSEPERATS4S3ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{   
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveETM7arrayRAND[i] = pifSEPERATS3slaveETM7array[pifSEPERATS4S3TM7arrayRANDusedInd[i]];
                }         
		}
	}
			else if ( sensors3 == 6 )
			{
			numeric pifSEPERATS3arrayCount = 1;
            	array pifSEPERATS3slaveTM1array[countS4S3total];
            	array pifSEPERATS3slaveTM2array[countS4S3total];
            	array pifSEPERATS3slaveTM3array[countS4S3total];
            	array pifSEPERATS3slaveTM4array[countS4S3total];
            	array pifSEPERATS3slaveTM5array[countS4S3total];
            	array pifSEPERATS3slaveTM7array[countS4S3total];
            
            	array pifSEPERATS3slaveTM1arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveTM2arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveTM3arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveTM4arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveTM5arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveTM7arrayRAND[minPifVAL];
            
			  for i = 1 to TMlins
                	  {
                    	for j = 1 to TMcols
                    	{     
                            if ( S4MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                            {
                                    pifSEPERATS3slaveTM1array[pifSEPERATS3arrayCount] = REFS3TM1[i,j];
                                    pifSEPERATS3slaveTM2array[pifSEPERATS3arrayCount] = REFS3TM2[i,j]; 
                                    pifSEPERATS3slaveTM3array[pifSEPERATS3arrayCount] = REFS3TM3[i,j];
                                    pifSEPERATS3slaveTM4array[pifSEPERATS3arrayCount] = REFS3TM4[i,j];
                                    pifSEPERATS3slaveTM5array[pifSEPERATS3arrayCount] = REFS3TM5[i,j];
                                    pifSEPERATS3slaveTM7array[pifSEPERATS3arrayCount] = REFS3TM7[i,j];
                                    pifSEPERATS3arrayCount = pifSEPERATS3arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM1arrayRAND[i] = pifSEPERATS3slaveTM1array[pifSEPERATS4S3ETM1arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM1arrayRAND[i] = pifSEPERATS3slaveTM1array[pifSEPERATS4S3TM1arrayRANDusedInd[i]];
                }           
		}
                
                ################ band 2
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM2arrayRAND[i] = pifSEPERATS3slaveTM2array[pifSEPERATS4S3ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM2arrayRAND[i] = pifSEPERATS3slaveTM2array[pifSEPERATS4S3TM2arrayRANDusedInd[i]];
                }
		}
                ################ band 3
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM3arrayRAND[i] = pifSEPERATS3slaveTM3array[pifSEPERATS4S3ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM3arrayRAND[i] = pifSEPERATS3slaveTM3array[pifSEPERATS4S3TM3arrayRANDusedInd[i]];
                }           
		}
                ################ band 4
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM4arrayRAND[i] = pifSEPERATS3slaveTM4array[pifSEPERATS4S3ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM4arrayRAND[i] = pifSEPERATS3slaveTM4array[pifSEPERATS4S3TM4arrayRANDusedInd[i]];
                }           
		}
                ################ band 5
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM5arrayRAND[i] = pifSEPERATS3slaveTM5array[pifSEPERATS4S3ETM5arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM5arrayRAND[i] = pifSEPERATS3slaveTM5array[pifSEPERATS4S3TM5arrayRANDusedInd[i]];
                }            
		}
                ################ band 7
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM7arrayRAND[i] = pifSEPERATS3slaveTM7array[pifSEPERATS4S3ETM7arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveTM7arrayRAND[i] = pifSEPERATS3slaveTM7array[pifSEPERATS4S3TM7arrayRANDusedInd[i]];
                }          
		}
	}
			else
			{
			numeric pifSEPERATS3arrayCount = 1;
            	array pifSEPERATS3slaveMSS1array[countS4S3total];
            	array pifSEPERATS3slaveMSS2array[countS4S3total];
            	array pifSEPERATS3slaveMSS3array[countS4S3total];
            	array pifSEPERATS3slaveMSS4array[countS4S3total];
            
            	array pifSEPERATS3slaveMSS1arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveMSS2arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveMSS3arrayRAND[minPifVAL];
            	array pifSEPERATS3slaveMSS4arrayRAND[minPifVAL];
            
			  for i = 1 to MSSlins
                	  {
                    	for j = 1 to MSScols
                    	{     
                            if ( S4MASK[i,j] == 1 && S3MASK[i,j] == 1 )
                            {
                                    pifSEPERATS3slaveMSS1array[pifSEPERATS3arrayCount] = REFS3MSS1[i,j];
                                    pifSEPERATS3slaveMSS2array[pifSEPERATS3arrayCount] = REFS3MSS2[i,j]; 
                                    pifSEPERATS3slaveMSS3array[pifSEPERATS3arrayCount] = REFS3MSS3[i,j];
                                    pifSEPERATS3slaveMSS4array[pifSEPERATS3arrayCount] = REFS3MSS4[i,j];
                                    pifSEPERATS3arrayCount = pifSEPERATS3arrayCount + 1;
                            }
                    	}
                	  }
                	  
                	  ################ band 1
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS1arrayRAND[i] = pifSEPERATS3slaveMSS1array[pifSEPERATS4S3ETM2arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{  
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS1arrayRAND[i] = pifSEPERATS3slaveMSS1array[pifSEPERATS4S3TM2arrayRANDusedInd[i]];
                }          
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS1arrayRAND[i] = pifSEPERATS3slaveMSS1array[pifSEPERATS4S3MSS1arrayRANDusedInd[i]];
                }
		}
                
                ################ band 2
             
		if ( sensors4 == 7 )
		{                        
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS2arrayRAND[i] = pifSEPERATS3slaveMSS2array[pifSEPERATS4S3ETM3arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{ 
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS2arrayRAND[i] = pifSEPERATS3slaveMSS2array[pifSEPERATS4S3TM3arrayRANDusedInd[i]];
                }           
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS2arrayRAND[i] = pifSEPERATS3slaveMSS2array[pifSEPERATS4S3MSS2arrayRANDusedInd[i]];
                }
		}
                
                ################ band 3
             
        if ( sensors4 == 5 or sensors4 == 4 or sensors4 == 3 or sensors4 == 2 or sensors4 == 1 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS3arrayRAND[i] = pifSEPERATS3slaveMSS3array[pifSEPERATS4S3MSS3arrayRANDusedInd[i]];
                }
		}
    
                ################ band 4
             
		if ( sensors4 == 7 )
		{            
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS4arrayRAND[i] = pifSEPERATS3slaveMSS4array[pifSEPERATS4S3ETM4arrayRANDusedInd[i]];
                }
		}
		else if ( sensors4 == 6 )
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS4arrayRAND[i] = pifSEPERATS3slaveMSS4array[pifSEPERATS4S3TM4arrayRANDusedInd[i]];
                }            
		}
		else
		{
                for i = 1 to minPifVAL
                {
                pifSEPERATS3slaveMSS4arrayRAND[i] = pifSEPERATS3slaveMSS4array[pifSEPERATS4S3MSS4arrayRANDusedInd[i]];
                }
		}
	}
		}
	
		if ( pifSEPERATS4S1arrayCount < minPifVAL )
            {
               printf("For the PIF mask combination Scene 4 and Scene 1 %5i pixels were needed, but only %5i were found.\n", minPifVAL, pifSEPERATS4S1arrayCount);
            }
            
            if ( pifSEPERATS4S2arrayCount < minPifVAL )
            {
               printf("For the PIF mask combination Scene 4 and Scene 2 %5i pixels were needed, but only %5i were found.\n", minPifVAL, pifSEPERATS4S2arrayCount);
            }
            
            if ( pifSEPERATS4S3arrayCount < minPifVAL )
            {
               printf("For the PIF mask combination Scene 4 and Scene 3 %5i pixels were needed, but only %5i were found.\n", minPifVAL, pifSEPERATS4S3arrayCount);
            }
            if ( pifSEPERATS4S1arrayCount < minPifVAL && pifSEPERATS4S2arrayCount < minPifVAL && pifSEPERATS4S3arrayCount < minPifVAL )
            {
                printf("All PIF-masks have a smaller pixelcount than minPifVAL requires... %5i pixels are needed for each raster... Quitting...\n\n", minPifVAL);
                Exit();
            }
        }
}
#######################################################################################
#### Regression Calculation
#######################################################################################
if ( isTherePifMask == 1 )
{
    if ( slaveMaster == 1 )
    {
        if ( sensors1 == 7 )
        {
        printf("Scene 1 - Master Scene (ETM):\n");
        printf("Scene 1 array values used for regression computation:\n");
    
        printf("ETM1: %12f ", pifTOTALS1ETM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS1ETM1arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS1ETM1arrayRAND[minPifVAL]);
    
        printf("ETM2: %12f ", pifTOTALS1ETM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS1ETM2arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS1ETM2arrayRAND[minPifVAL]);
    
        printf("ETM3: %12f ", pifTOTALS1ETM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS1ETM3arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS1ETM3arrayRAND[minPifVAL]);
    
        printf("ETM4: %12f ", pifTOTALS1ETM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS1ETM4arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS1ETM4arrayRAND[minPifVAL]);
    
        printf("ETM5: %12f ", pifTOTALS1ETM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS1ETM5arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS1ETM5arrayRAND[minPifVAL]);
    
        printf("ETM7: %12f ", pifTOTALS1ETM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS1ETM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifTOTALS1ETM7arrayRAND[minPifVAL]);
    
                for i = 1 to ETMlins
                {
                    for j = 1 to ETMcols
                    {
                    OUT1ETM1[i,j] = REFS1ETM1[i,j];
                    OUT1ETM2[i,j] = REFS1ETM2[i,j];
                    OUT1ETM3[i,j] = REFS1ETM3[i,j];
                    OUT1ETM4[i,j] = REFS1ETM4[i,j];
                    OUT1ETM5[i,j] = REFS1ETM5[i,j];
                    OUT1ETM7[i,j] = REFS1ETM7[i,j];
                    }
                }
            
            CreatePyramid(OUT1ETM1);
            CreatePyramid(OUT1ETM2);
            CreatePyramid(OUT1ETM3);
            CreatePyramid(OUT1ETM4);
            CreatePyramid(OUT1ETM5);
            CreatePyramid(OUT1ETM7);
        
            CreateHistogram(OUT1ETM1);
            CreateHistogram(OUT1ETM2);
            CreateHistogram(OUT1ETM3);
            CreateHistogram(OUT1ETM4);
            CreateHistogram(OUT1ETM5);
            CreateHistogram(OUT1ETM7);
            CloseRaster(REFS1ETM1);
            CloseRaster(REFS1ETM2);
            CloseRaster(REFS1ETM3);
            CloseRaster(REFS1ETM4);
            CloseRaster(REFS1ETM5);
            CloseRaster(REFS1ETM7);
    
            CloseRaster(OUT1ETM1);
            CloseRaster(OUT1ETM2);
            CloseRaster(OUT1ETM3);
            CloseRaster(OUT1ETM4);
            CloseRaster(OUT1ETM5);
            CloseRaster(OUT1ETM7);
        
            printf("Scene 1 (Master) output was written, histogram created and pyramid written...\n\n\n");
   
            if ( sensors2 == 7 )
            {
            numeric xAritTOTALS2ETM1, xAritTOTALS2ETM2, xAritTOTALS2ETM3, xAritTOTALS2ETM4, xAritTOTALS2ETM5, xAritTOTALS2ETM7;
            numeric yAritTOTALS2ETM1, yAritTOTALS2ETM2, yAritTOTALS2ETM3, yAritTOTALS2ETM4, yAritTOTALS2ETM5, yAritTOTALS2ETM7;
    
            numeric aTOTALS2ETM1, aTOTALS2ETM2, aTOTALS2ETM3, aTOTALS2ETM4, aTOTALS2ETM5, aTOTALS2ETM7;
            numeric bTOTALS2ETM1, bTOTALS2ETM2, bTOTALS2ETM3, bTOTALS2ETM4, bTOTALS2ETM5, bTOTALS2ETM7;
            numeric rTOTALS2ETM1, rTOTALS2ETM2, rTOTALS2ETM3, rTOTALS2ETM4, rTOTALS2ETM5, rTOTALS2ETM7;
            numeric rQuadTOTALS2ETM1, rQuadTOTALS2ETM2, rQuadTOTALS2ETM3, rQuadTOTALS2ETM4, rQuadTOTALS2ETM5, rQuadTOTALS2ETM7;
            numeric syxTOTALS2ETM1, syxTOTALS2ETM2, syxTOTALS2ETM3, syxTOTALS2ETM4, syxTOTALS2ETM5, syxTOTALS2ETM7;
            numeric bStandTOTALS2ETM1, bStandTOTALS2ETM2, bStandTOTALS2ETM3, bStandTOTALS2ETM4, bStandTOTALS2ETM5, bStandTOTALS2ETM7;
            numeric aStandTOTALS2ETM1, aStandTOTALS2ETM2, aStandTOTALS2ETM3, aStandTOTALS2ETM4, aStandTOTALS2ETM5, aStandTOTALS2ETM7;
    
            numeric xTOTALS2ETM1 = 0;
            numeric xTOTALS2ETM2 = 0;
            numeric xTOTALS2ETM3 = 0;
            numeric xTOTALS2ETM4 = 0;
            numeric xTOTALS2ETM5 = 0;
            numeric xTOTALS2ETM7 = 0;
    
            numeric xQuadTOTALS2ETM1 = 0;
            numeric xQuadTOTALS2ETM2 = 0;
            numeric xQuadTOTALS2ETM3 = 0;
            numeric xQuadTOTALS2ETM4 = 0;
            numeric xQuadTOTALS2ETM5 = 0;
            numeric xQuadTOTALS2ETM7 = 0;
    
            numeric yTOTALS2ETM1 = 0;
            numeric yTOTALS2ETM2 = 0;
            numeric yTOTALS2ETM3 = 0;
            numeric yTOTALS2ETM4 = 0;
            numeric yTOTALS2ETM5 = 0;
            numeric yTOTALS2ETM7 = 0;
    
            numeric yQuadTOTALS2ETM1 = 0;
            numeric yQuadTOTALS2ETM2 = 0;
            numeric yQuadTOTALS2ETM3 = 0;
            numeric yQuadTOTALS2ETM4 = 0;
            numeric yQuadTOTALS2ETM5 = 0;
            numeric yQuadTOTALS2ETM7 = 0;
    
            numeric xyTOTALS2ETM1 = 0;
            numeric xyTOTALS2ETM2 = 0;
            numeric xyTOTALS2ETM3 = 0;
            numeric xyTOTALS2ETM4 = 0;
            numeric xyTOTALS2ETM5 = 0;
            numeric xyTOTALS2ETM7 = 0;
    
            numeric xxAritQuadTOTALS2ETM1 = 0;
            numeric xxAritQuadTOTALS2ETM2 = 0;
            numeric xxAritQuadTOTALS2ETM3 = 0;
            numeric xxAritQuadTOTALS2ETM4 = 0;
            numeric xxAritQuadTOTALS2ETM5 = 0;
            numeric xxAritQuadTOTALS2ETM7 = 0;
    
            numeric yyAritQuadTOTALS2ETM1 = 0;
            numeric yyAritQuadTOTALS2ETM2 = 0;
            numeric yyAritQuadTOTALS2ETM3 = 0;
            numeric yyAritQuadTOTALS2ETM4 = 0;
            numeric yyAritQuadTOTALS2ETM5 = 0;
            numeric yyAritQuadTOTALS2ETM7 = 0;
    
            numeric qXYTOTALS2ETM1 = 0;
            numeric qXYTOTALS2ETM2 = 0;
            numeric qXYTOTALS2ETM3 = 0;
            numeric qXYTOTALS2ETM4 = 0;
            numeric qXYTOTALS2ETM5 = 0;
            numeric qXYTOTALS2ETM7 = 0;
    
            for m = 1 to minPifVAL
            {		
                xTOTALS2ETM1 = xTOTALS2ETM1 + pifTOTALS1ETM1arrayRAND[m];
                xTOTALS2ETM2 = xTOTALS2ETM2 + pifTOTALS1ETM2arrayRAND[m];
                xTOTALS2ETM3 = xTOTALS2ETM3 + pifTOTALS1ETM3arrayRAND[m];
                xTOTALS2ETM4 = xTOTALS2ETM4 + pifTOTALS1ETM4arrayRAND[m];
                xTOTALS2ETM5 = xTOTALS2ETM5 + pifTOTALS1ETM5arrayRAND[m];
                xTOTALS2ETM7 = xTOTALS2ETM7 + pifTOTALS1ETM7arrayRAND[m];
    
                xQuadTOTALS2ETM1 = (xQuadTOTALS2ETM1 + (pifTOTALS1ETM1arrayRAND[m]^2));
                xQuadTOTALS2ETM2 = (xQuadTOTALS2ETM2 + (pifTOTALS1ETM2arrayRAND[m]^2));
                xQuadTOTALS2ETM3 = (xQuadTOTALS2ETM3 + (pifTOTALS1ETM3arrayRAND[m]^2));
                xQuadTOTALS2ETM4 = (xQuadTOTALS2ETM4 + (pifTOTALS1ETM4arrayRAND[m]^2));
                xQuadTOTALS2ETM5 = (xQuadTOTALS2ETM5 + (pifTOTALS1ETM5arrayRAND[m]^2));
                xQuadTOTALS2ETM7 = (xQuadTOTALS2ETM7 + (pifTOTALS1ETM7arrayRAND[m]^2));
    
                yTOTALS2ETM1 = yTOTALS2ETM1 + pifTOTALS2ETM1arrayRAND[m];
                yTOTALS2ETM2 = yTOTALS2ETM2 + pifTOTALS2ETM2arrayRAND[m];
                yTOTALS2ETM3 = yTOTALS2ETM3 + pifTOTALS2ETM3arrayRAND[m];
                yTOTALS2ETM4 = yTOTALS2ETM4 + pifTOTALS2ETM4arrayRAND[m];
                yTOTALS2ETM5 = yTOTALS2ETM5 + pifTOTALS2ETM5arrayRAND[m];
                yTOTALS2ETM7 = yTOTALS2ETM7 + pifTOTALS2ETM7arrayRAND[m];
                
                yQuadTOTALS2ETM1 = (yQuadTOTALS2ETM1 + (pifTOTALS2ETM1arrayRAND[m]^2));
                yQuadTOTALS2ETM2 = (yQuadTOTALS2ETM2 + (pifTOTALS2ETM2arrayRAND[m]^2));
                yQuadTOTALS2ETM3 = (yQuadTOTALS2ETM3 + (pifTOTALS2ETM3arrayRAND[m]^2));
                yQuadTOTALS2ETM4 = (yQuadTOTALS2ETM4 + (pifTOTALS2ETM4arrayRAND[m]^2));
                yQuadTOTALS2ETM5 = (yQuadTOTALS2ETM5 + (pifTOTALS2ETM5arrayRAND[m]^2));
                yQuadTOTALS2ETM7 = (yQuadTOTALS2ETM7 + (pifTOTALS2ETM7arrayRAND[m]^2));
    
                xyTOTALS2ETM1 = (xyTOTALS2ETM1 + (pifTOTALS1ETM1arrayRAND[m] * pifTOTALS2ETM1arrayRAND[m]));
                xyTOTALS2ETM2 = (xyTOTALS2ETM2 + (pifTOTALS1ETM2arrayRAND[m] * pifTOTALS2ETM2arrayRAND[m]));
                xyTOTALS2ETM3 = (xyTOTALS2ETM3 + (pifTOTALS1ETM3arrayRAND[m] * pifTOTALS2ETM3arrayRAND[m]));
                xyTOTALS2ETM4 = (xyTOTALS2ETM4 + (pifTOTALS1ETM4arrayRAND[m] * pifTOTALS2ETM4arrayRAND[m]));
                xyTOTALS2ETM5 = (xyTOTALS2ETM5 + (pifTOTALS1ETM5arrayRAND[m] * pifTOTALS2ETM5arrayRAND[m]));
                xyTOTALS2ETM7 = (xyTOTALS2ETM7 + (pifTOTALS1ETM7arrayRAND[m] * pifTOTALS2ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS2ETM1 = xTOTALS2ETM1 / minPifVAL;
            xAritTOTALS2ETM2 = xTOTALS2ETM2 / minPifVAL;
            xAritTOTALS2ETM3 = xTOTALS2ETM3 / minPifVAL;
            xAritTOTALS2ETM4 = xTOTALS2ETM4 / minPifVAL;
            xAritTOTALS2ETM5 = xTOTALS2ETM5 / minPifVAL;
            xAritTOTALS2ETM7 = xTOTALS2ETM7 / minPifVAL;
    
            yAritTOTALS2ETM1 = yTOTALS2ETM1 / minPifVAL;
            yAritTOTALS2ETM2 = yTOTALS2ETM2 / minPifVAL;
            yAritTOTALS2ETM3 = yTOTALS2ETM3 / minPifVAL;
            yAritTOTALS2ETM4 = yTOTALS2ETM4 / minPifVAL;
            yAritTOTALS2ETM5 = yTOTALS2ETM5 / minPifVAL;
            yAritTOTALS2ETM7 = yTOTALS2ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2ETM1 = (xxAritQuadTOTALS2ETM1 + ((pifTOTALS1ETM1arrayRAND[n] - xAritTOTALS2ETM1)^2));
                xxAritQuadTOTALS2ETM2 = (xxAritQuadTOTALS2ETM2 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS2ETM2)^2));
                xxAritQuadTOTALS2ETM3 = (xxAritQuadTOTALS2ETM3 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS2ETM3)^2));
                xxAritQuadTOTALS2ETM4 = (xxAritQuadTOTALS2ETM4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS2ETM4)^2));
                xxAritQuadTOTALS2ETM5 = (xxAritQuadTOTALS2ETM5 + ((pifTOTALS1ETM5arrayRAND[n] - xAritTOTALS2ETM5)^2));
                xxAritQuadTOTALS2ETM7 = (xxAritQuadTOTALS2ETM7 + ((pifTOTALS1ETM7arrayRAND[n] - xAritTOTALS2ETM7)^2));
    
                yyAritQuadTOTALS2ETM1 = (yyAritQuadTOTALS2ETM1 + ((pifTOTALS2ETM1arrayRAND[n] - yAritTOTALS2ETM1)^2));
                yyAritQuadTOTALS2ETM2 = (yyAritQuadTOTALS2ETM2 + ((pifTOTALS2ETM2arrayRAND[n] - yAritTOTALS2ETM2)^2));
                yyAritQuadTOTALS2ETM3 = (yyAritQuadTOTALS2ETM3 + ((pifTOTALS2ETM3arrayRAND[n] - yAritTOTALS2ETM3)^2));
                yyAritQuadTOTALS2ETM4 = (yyAritQuadTOTALS2ETM4 + ((pifTOTALS2ETM4arrayRAND[n] - yAritTOTALS2ETM4)^2));
                yyAritQuadTOTALS2ETM5 = (yyAritQuadTOTALS2ETM5 + ((pifTOTALS2ETM5arrayRAND[n] - yAritTOTALS2ETM5)^2));
                yyAritQuadTOTALS2ETM7 = (yyAritQuadTOTALS2ETM7 + ((pifTOTALS2ETM7arrayRAND[n] - yAritTOTALS2ETM7)^2));
    
                qXYTOTALS2ETM1 = (qXYTOTALS2ETM1 + ((pifTOTALS1ETM1arrayRAND[n] - xAritTOTALS2ETM1) * (pifTOTALS2ETM1arrayRAND[n] - yAritTOTALS2ETM1)));
                qXYTOTALS2ETM2 = (qXYTOTALS2ETM2 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS2ETM2) * (pifTOTALS2ETM2arrayRAND[n] - yAritTOTALS2ETM2)));
                qXYTOTALS2ETM3 = (qXYTOTALS2ETM3 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS2ETM3) * (pifTOTALS2ETM3arrayRAND[n] - yAritTOTALS2ETM3)));
                qXYTOTALS2ETM4 = (qXYTOTALS2ETM4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS2ETM4) * (pifTOTALS2ETM4arrayRAND[n] - yAritTOTALS2ETM4)));
                qXYTOTALS2ETM5 = (qXYTOTALS2ETM5 + ((pifTOTALS1ETM5arrayRAND[n] - xAritTOTALS2ETM5) * (pifTOTALS2ETM5arrayRAND[n] - yAritTOTALS2ETM5)));
                qXYTOTALS2ETM7 = (qXYTOTALS2ETM7 + ((pifTOTALS1ETM7arrayRAND[n] - xAritTOTALS2ETM7) * (pifTOTALS2ETM7arrayRAND[n] - yAritTOTALS2ETM7)));
            }
        
            aTOTALS2ETM1 = (((xQuadTOTALS2ETM1 * yTOTALS2ETM1) - (xTOTALS2ETM1 * xyTOTALS2ETM1)) / ((minPifVAL * xQuadTOTALS2ETM1) - (xTOTALS2ETM1^2)));
            aTOTALS2ETM2 = (((xQuadTOTALS2ETM2 * yTOTALS2ETM2) - (xTOTALS2ETM2 * xyTOTALS2ETM2)) / ((minPifVAL * xQuadTOTALS2ETM2) - (xTOTALS2ETM2^2)));
            aTOTALS2ETM3 = (((xQuadTOTALS2ETM3 * yTOTALS2ETM3) - (xTOTALS2ETM3 * xyTOTALS2ETM3)) / ((minPifVAL * xQuadTOTALS2ETM3) - (xTOTALS2ETM3^2)));
            aTOTALS2ETM4 = (((xQuadTOTALS2ETM4 * yTOTALS2ETM4) - (xTOTALS2ETM4 * xyTOTALS2ETM4)) / ((minPifVAL * xQuadTOTALS2ETM4) - (xTOTALS2ETM4^2)));
            aTOTALS2ETM5 = (((xQuadTOTALS2ETM5 * yTOTALS2ETM5) - (xTOTALS2ETM5 * xyTOTALS2ETM5)) / ((minPifVAL * xQuadTOTALS2ETM5) - (xTOTALS2ETM5^2)));
            aTOTALS2ETM7 = (((xQuadTOTALS2ETM7 * yTOTALS2ETM7) - (xTOTALS2ETM7 * xyTOTALS2ETM7)) / ((minPifVAL * xQuadTOTALS2ETM7) - (xTOTALS2ETM7^2)));
            
            bTOTALS2ETM1 = qXYTOTALS2ETM1 / xxAritQuadTOTALS2ETM1;
            bTOTALS2ETM2 = qXYTOTALS2ETM2 / xxAritQuadTOTALS2ETM2;
            bTOTALS2ETM3 = qXYTOTALS2ETM3 / xxAritQuadTOTALS2ETM3;
            bTOTALS2ETM4 = qXYTOTALS2ETM4 / xxAritQuadTOTALS2ETM4;
            bTOTALS2ETM5 = qXYTOTALS2ETM5 / xxAritQuadTOTALS2ETM5;
            bTOTALS2ETM7 = qXYTOTALS2ETM7 / xxAritQuadTOTALS2ETM7;
    
            rTOTALS2ETM1 = (qXYTOTALS2ETM1 / ((xxAritQuadTOTALS2ETM1 * yyAritQuadTOTALS2ETM1)^0.5));
            rTOTALS2ETM2 = (qXYTOTALS2ETM2 / ((xxAritQuadTOTALS2ETM2 * yyAritQuadTOTALS2ETM2)^0.5));
            rTOTALS2ETM3 = (qXYTOTALS2ETM3 / ((xxAritQuadTOTALS2ETM3 * yyAritQuadTOTALS2ETM3)^0.5));
            rTOTALS2ETM4 = (qXYTOTALS2ETM4 / ((xxAritQuadTOTALS2ETM4 * yyAritQuadTOTALS2ETM4)^0.5));
            rTOTALS2ETM5 = (qXYTOTALS2ETM5 / ((xxAritQuadTOTALS2ETM5 * yyAritQuadTOTALS2ETM5)^0.5));
            rTOTALS2ETM7 = (qXYTOTALS2ETM7 / ((xxAritQuadTOTALS2ETM7 * yyAritQuadTOTALS2ETM7)^0.5));
    
            rQuadTOTALS2ETM1 = ((rTOTALS2ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2ETM2 = ((rTOTALS2ETM2^2) * 100);
            rQuadTOTALS2ETM3 = ((rTOTALS2ETM3^2) * 100);
            rQuadTOTALS2ETM4 = ((rTOTALS2ETM4^2) * 100);
            rQuadTOTALS2ETM5 = ((rTOTALS2ETM5^2) * 100);
            rQuadTOTALS2ETM7 = ((rTOTALS2ETM7^2) * 100);
        
            syxTOTALS2ETM1 = (((yyAritQuadTOTALS2ETM1 - ((qXYTOTALS2ETM1^2) / xxAritQuadTOTALS2ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM2 = (((yyAritQuadTOTALS2ETM2 - ((qXYTOTALS2ETM2^2) / xxAritQuadTOTALS2ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM3 = (((yyAritQuadTOTALS2ETM3 - ((qXYTOTALS2ETM3^2) / xxAritQuadTOTALS2ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM4 = (((yyAritQuadTOTALS2ETM4 - ((qXYTOTALS2ETM4^2) / xxAritQuadTOTALS2ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM5 = (((yyAritQuadTOTALS2ETM5 - ((qXYTOTALS2ETM5^2) / xxAritQuadTOTALS2ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM7 = (((yyAritQuadTOTALS2ETM7 - ((qXYTOTALS2ETM7^2) / xxAritQuadTOTALS2ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2ETM1 = (((syxTOTALS2ETM1^2) / xxAritQuadTOTALS2ETM1)^0.5);
            bStandTOTALS2ETM2 = (((syxTOTALS2ETM2^2) / xxAritQuadTOTALS2ETM2)^0.5);
            bStandTOTALS2ETM3 = (((syxTOTALS2ETM3^2) / xxAritQuadTOTALS2ETM3)^0.5);
            bStandTOTALS2ETM4 = (((syxTOTALS2ETM4^2) / xxAritQuadTOTALS2ETM4)^0.5);
            bStandTOTALS2ETM5 = (((syxTOTALS2ETM5^2) / xxAritQuadTOTALS2ETM5)^0.5);
            bStandTOTALS2ETM7 = (((syxTOTALS2ETM7^2) / xxAritQuadTOTALS2ETM7)^0.5);
    
            aStandTOTALS2ETM1 = (bStandTOTALS2ETM1 * ((xQuadTOTALS2ETM1 / minPifVAL)^0.5));
            aStandTOTALS2ETM2 = (bStandTOTALS2ETM2 * ((xQuadTOTALS2ETM2 / minPifVAL)^0.5));
            aStandTOTALS2ETM3 = (bStandTOTALS2ETM3 * ((xQuadTOTALS2ETM3 / minPifVAL)^0.5));
            aStandTOTALS2ETM4 = (bStandTOTALS2ETM4 * ((xQuadTOTALS2ETM4 / minPifVAL)^0.5));
            aStandTOTALS2ETM5 = (bStandTOTALS2ETM5 * ((xQuadTOTALS2ETM5 / minPifVAL)^0.5));
            aStandTOTALS2ETM7 = (bStandTOTALS2ETM7 * ((xQuadTOTALS2ETM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM1, bTOTALS2ETM1, rTOTALS2ETM1, rQuadTOTALS2ETM1, aStandTOTALS2ETM1, bStandTOTALS2ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM2, bTOTALS2ETM2, rTOTALS2ETM2, rQuadTOTALS2ETM2, aStandTOTALS2ETM2, bStandTOTALS2ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM3, bTOTALS2ETM3, rTOTALS2ETM3, rQuadTOTALS2ETM3, aStandTOTALS2ETM3, bStandTOTALS2ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM4, bTOTALS2ETM4, rTOTALS2ETM4, rQuadTOTALS2ETM4, aStandTOTALS2ETM4, bStandTOTALS2ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM5, bTOTALS2ETM5, rTOTALS2ETM5, rQuadTOTALS2ETM5, aStandTOTALS2ETM5, bStandTOTALS2ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS2ETM7, bTOTALS2ETM7, rTOTALS2ETM7, rQuadTOTALS2ETM7, aStandTOTALS2ETM7, bStandTOTALS2ETM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS2ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS2ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS2ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS2ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS2ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS2ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS2ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT2ETM1[i,j] = (aTOTALS2ETM1 + (bTOTALS2ETM1 * REFS2ETM1[i,j]));
                    OUT2ETM2[i,j] = (aTOTALS2ETM2 + (bTOTALS2ETM2 * REFS2ETM2[i,j]));
                    OUT2ETM3[i,j] = (aTOTALS2ETM3 + (bTOTALS2ETM3 * REFS2ETM3[i,j]));
                    OUT2ETM4[i,j] = (aTOTALS2ETM4 + (bTOTALS2ETM4 * REFS2ETM4[i,j]));
                    OUT2ETM5[i,j] = (aTOTALS2ETM5 + (bTOTALS2ETM5 * REFS2ETM5[i,j]));
                    OUT2ETM7[i,j] = (aTOTALS2ETM7 + (bTOTALS2ETM7 * REFS2ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2ETM1);
        	CreatePyramid(OUT2ETM2);
        	CreatePyramid(OUT2ETM3);
        	CreatePyramid(OUT2ETM4);
        	CreatePyramid(OUT2ETM5);
        	CreatePyramid(OUT2ETM7);
        
        	CreateHistogram(OUT2ETM1);
        	CreateHistogram(OUT2ETM2);
        	CreateHistogram(OUT2ETM3);
        	CreateHistogram(OUT2ETM4);
        	CreateHistogram(OUT2ETM5);
        	CreateHistogram(OUT2ETM7);
    
            CloseRaster(REFS2ETM1);
            CloseRaster(REFS2ETM2);
            CloseRaster(REFS2ETM3);
            CloseRaster(REFS2ETM4);
            CloseRaster(REFS2ETM5);
            CloseRaster(REFS2ETM7);
    
            CloseRaster(OUT2ETM1);
            CloseRaster(OUT2ETM2);
            CloseRaster(OUT2ETM3);
            CloseRaster(OUT2ETM4);
            CloseRaster(OUT2ETM5);
            CloseRaster(OUT2ETM7);
	
        	printf("Scene 2 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors2 == 6 )
            {
            numeric xAritTOTALS2TM1, xAritTOTALS2TM2, xAritTOTALS2TM3, xAritTOTALS2TM4, xAritTOTALS2TM5, xAritTOTALS2TM7;
            numeric yAritTOTALS2TM1, yAritTOTALS2TM2, yAritTOTALS2TM3, yAritTOTALS2TM4, yAritTOTALS2TM5, yAritTOTALS2TM7;
    
            numeric aTOTALS2TM1, aTOTALS2TM2, aTOTALS2TM3, aTOTALS2TM4, aTOTALS2TM5, aTOTALS2TM7;
            numeric bTOTALS2TM1, bTOTALS2TM2, bTOTALS2TM3, bTOTALS2TM4, bTOTALS2TM5, bTOTALS2TM7;
            numeric rTOTALS2TM1, rTOTALS2TM2, rTOTALS2TM3, rTOTALS2TM4, rTOTALS2TM5, rTOTALS2TM7;
            numeric rQuadTOTALS2TM1, rQuadTOTALS2TM2, rQuadTOTALS2TM3, rQuadTOTALS2TM4, rQuadTOTALS2TM5, rQuadTOTALS2TM7;
            numeric syxTOTALS2TM1, syxTOTALS2TM2, syxTOTALS2TM3, syxTOTALS2TM4, syxTOTALS2TM5, syxTOTALS2TM7;
            numeric bStandTOTALS2TM1, bStandTOTALS2TM2, bStandTOTALS2TM3, bStandTOTALS2TM4, bStandTOTALS2TM5, bStandTOTALS2TM7;
            numeric aStandTOTALS2TM1, aStandTOTALS2TM2, aStandTOTALS2TM3, aStandTOTALS2TM4, aStandTOTALS2TM5, aStandTOTALS2TM7;
    
            numeric xTOTALS2TM1 = 0;
            numeric xTOTALS2TM2 = 0;
            numeric xTOTALS2TM3 = 0;
            numeric xTOTALS2TM4 = 0;
            numeric xTOTALS2TM5 = 0;
            numeric xTOTALS2TM7 = 0;
    
            numeric xQuadTOTALS2TM1 = 0;
            numeric xQuadTOTALS2TM2 = 0;
            numeric xQuadTOTALS2TM3 = 0;
            numeric xQuadTOTALS2TM4 = 0;
            numeric xQuadTOTALS2TM5 = 0;
            numeric xQuadTOTALS2TM7 = 0;
    
            numeric yTOTALS2TM1 = 0;
            numeric yTOTALS2TM2 = 0;
            numeric yTOTALS2TM3 = 0;
            numeric yTOTALS2TM4 = 0;
            numeric yTOTALS2TM5 = 0;
            numeric yTOTALS2TM7 = 0;
    
            numeric yQuadTOTALS2TM1 = 0;
            numeric yQuadTOTALS2TM2 = 0;
            numeric yQuadTOTALS2TM3 = 0;
            numeric yQuadTOTALS2TM4 = 0;
            numeric yQuadTOTALS2TM5 = 0;
            numeric yQuadTOTALS2TM7 = 0;
    
            numeric xyTOTALS2TM1 = 0;
            numeric xyTOTALS2TM2 = 0;
            numeric xyTOTALS2TM3 = 0;
            numeric xyTOTALS2TM4 = 0;
            numeric xyTOTALS2TM5 = 0;
            numeric xyTOTALS2TM7 = 0;
    
            numeric xxAritQuadTOTALS2TM1 = 0;
            numeric xxAritQuadTOTALS2TM2 = 0;
            numeric xxAritQuadTOTALS2TM3 = 0;
            numeric xxAritQuadTOTALS2TM4 = 0;
            numeric xxAritQuadTOTALS2TM5 = 0;
            numeric xxAritQuadTOTALS2TM7 = 0;
    
            numeric yyAritQuadTOTALS2TM1 = 0;
            numeric yyAritQuadTOTALS2TM2 = 0;
            numeric yyAritQuadTOTALS2TM3 = 0;
            numeric yyAritQuadTOTALS2TM4 = 0;
            numeric yyAritQuadTOTALS2TM5 = 0;
            numeric yyAritQuadTOTALS2TM7 = 0;
    
            numeric qXYTOTALS2TM1 = 0;
            numeric qXYTOTALS2TM2 = 0;
            numeric qXYTOTALS2TM3 = 0;
            numeric qXYTOTALS2TM4 = 0;
            numeric qXYTOTALS2TM5 = 0;
            numeric qXYTOTALS2TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS2TM1 = xTOTALS2TM1 + pifTOTALS1ETM1arrayRAND[m];
                xTOTALS2TM2 = xTOTALS2TM2 + pifTOTALS1ETM2arrayRAND[m];
                xTOTALS2TM3 = xTOTALS2TM3 + pifTOTALS1ETM3arrayRAND[m];
                xTOTALS2TM4 = xTOTALS2TM4 + pifTOTALS1ETM4arrayRAND[m];
                xTOTALS2TM5 = xTOTALS2TM5 + pifTOTALS1ETM5arrayRAND[m];
                xTOTALS2TM7 = xTOTALS2TM7 + pifTOTALS1ETM7arrayRAND[m];
    
                xQuadTOTALS2TM1 = (xQuadTOTALS2TM1 + (pifTOTALS1ETM1arrayRAND[m]^2));
                xQuadTOTALS2TM2 = (xQuadTOTALS2TM2 + (pifTOTALS1ETM2arrayRAND[m]^2));
                xQuadTOTALS2TM3 = (xQuadTOTALS2TM3 + (pifTOTALS1ETM3arrayRAND[m]^2));
                xQuadTOTALS2TM4 = (xQuadTOTALS2TM4 + (pifTOTALS1ETM4arrayRAND[m]^2));
                xQuadTOTALS2TM5 = (xQuadTOTALS2TM5 + (pifTOTALS1ETM5arrayRAND[m]^2));
                xQuadTOTALS2TM7 = (xQuadTOTALS2TM7 + (pifTOTALS1ETM7arrayRAND[m]^2));
    
                yTOTALS2TM1 = yTOTALS2TM1 + pifTOTALS2TM1arrayRAND[m];
                yTOTALS2TM2 = yTOTALS2TM2 + pifTOTALS2TM2arrayRAND[m];
                yTOTALS2TM3 = yTOTALS2TM3 + pifTOTALS2TM3arrayRAND[m];
                yTOTALS2TM4 = yTOTALS2TM4 + pifTOTALS2TM4arrayRAND[m];
                yTOTALS2TM5 = yTOTALS2TM5 + pifTOTALS2TM5arrayRAND[m];
                yTOTALS2TM7 = yTOTALS2TM7 + pifTOTALS2TM7arrayRAND[m];
                
                yQuadTOTALS2TM1 = (yQuadTOTALS2TM1 + (pifTOTALS2TM1arrayRAND[m]^2));
                yQuadTOTALS2TM2 = (yQuadTOTALS2TM2 + (pifTOTALS2TM2arrayRAND[m]^2));
                yQuadTOTALS2TM3 = (yQuadTOTALS2TM3 + (pifTOTALS2TM3arrayRAND[m]^2));
                yQuadTOTALS2TM4 = (yQuadTOTALS2TM4 + (pifTOTALS2TM4arrayRAND[m]^2));
                yQuadTOTALS2TM5 = (yQuadTOTALS2TM5 + (pifTOTALS2TM5arrayRAND[m]^2));
                yQuadTOTALS2TM7 = (yQuadTOTALS2TM7 + (pifTOTALS2TM7arrayRAND[m]^2));
    
                xyTOTALS2TM1 = (xyTOTALS2TM1 + (pifTOTALS1ETM1arrayRAND[m] * pifTOTALS2TM1arrayRAND[m]));
                xyTOTALS2TM2 = (xyTOTALS2TM2 + (pifTOTALS1ETM2arrayRAND[m] * pifTOTALS2TM2arrayRAND[m]));
                xyTOTALS2TM3 = (xyTOTALS2TM3 + (pifTOTALS1ETM3arrayRAND[m] * pifTOTALS2TM3arrayRAND[m]));
                xyTOTALS2TM4 = (xyTOTALS2TM4 + (pifTOTALS1ETM4arrayRAND[m] * pifTOTALS2TM4arrayRAND[m]));
                xyTOTALS2TM5 = (xyTOTALS2TM5 + (pifTOTALS1ETM5arrayRAND[m] * pifTOTALS2TM5arrayRAND[m]));
                xyTOTALS2TM7 = (xyTOTALS2TM7 + (pifTOTALS1ETM7arrayRAND[m] * pifTOTALS2TM7arrayRAND[m]));
            }	
            
            xAritTOTALS2TM1 = xTOTALS2TM1 / minPifVAL;
            xAritTOTALS2TM2 = xTOTALS2TM2 / minPifVAL;
            xAritTOTALS2TM3 = xTOTALS2TM3 / minPifVAL;
            xAritTOTALS2TM4 = xTOTALS2TM4 / minPifVAL;
            xAritTOTALS2TM5 = xTOTALS2TM5 / minPifVAL;
            xAritTOTALS2TM7 = xTOTALS2TM7 / minPifVAL;
    
            yAritTOTALS2TM1 = yTOTALS2TM1 / minPifVAL;
            yAritTOTALS2TM2 = yTOTALS2TM2 / minPifVAL;
            yAritTOTALS2TM3 = yTOTALS2TM3 / minPifVAL;
            yAritTOTALS2TM4 = yTOTALS2TM4 / minPifVAL;
            yAritTOTALS2TM5 = yTOTALS2TM5 / minPifVAL;
            yAritTOTALS2TM7 = yTOTALS2TM7 / minPifVAL;
      
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2TM1 = (xxAritQuadTOTALS2TM1 + ((pifTOTALS1ETM1arrayRAND[n] - xAritTOTALS2TM1)^2));
                xxAritQuadTOTALS2TM2 = (xxAritQuadTOTALS2TM2 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS2TM2)^2));
                xxAritQuadTOTALS2TM3 = (xxAritQuadTOTALS2TM3 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS2TM3)^2));
                xxAritQuadTOTALS2TM4 = (xxAritQuadTOTALS2TM4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS2TM4)^2));
                xxAritQuadTOTALS2TM5 = (xxAritQuadTOTALS2TM5 + ((pifTOTALS1ETM5arrayRAND[n] - xAritTOTALS2TM5)^2));
                xxAritQuadTOTALS2TM7 = (xxAritQuadTOTALS2TM7 + ((pifTOTALS1ETM7arrayRAND[n] - xAritTOTALS2TM7)^2));
    
                yyAritQuadTOTALS2TM1 = (yyAritQuadTOTALS2TM1 + ((pifTOTALS2TM1arrayRAND[n] - yAritTOTALS2TM1)^2));
                yyAritQuadTOTALS2TM2 = (yyAritQuadTOTALS2TM2 + ((pifTOTALS2TM2arrayRAND[n] - yAritTOTALS2TM2)^2));
                yyAritQuadTOTALS2TM3 = (yyAritQuadTOTALS2TM3 + ((pifTOTALS2TM3arrayRAND[n] - yAritTOTALS2TM3)^2));
                yyAritQuadTOTALS2TM4 = (yyAritQuadTOTALS2TM4 + ((pifTOTALS2TM4arrayRAND[n] - yAritTOTALS2TM4)^2));
                yyAritQuadTOTALS2TM5 = (yyAritQuadTOTALS2TM5 + ((pifTOTALS2TM5arrayRAND[n] - yAritTOTALS2TM5)^2));
                yyAritQuadTOTALS2TM7 = (yyAritQuadTOTALS2TM7 + ((pifTOTALS2TM7arrayRAND[n] - yAritTOTALS2TM7)^2));
    
                qXYTOTALS2TM1 = (qXYTOTALS2TM1 + ((pifTOTALS1ETM1arrayRAND[n] - xAritTOTALS2TM1) * (pifTOTALS2TM1arrayRAND[n] - yAritTOTALS2TM1)));
                qXYTOTALS2TM2 = (qXYTOTALS2TM2 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS2TM2) * (pifTOTALS2TM2arrayRAND[n] - yAritTOTALS2TM2)));
                qXYTOTALS2TM3 = (qXYTOTALS2TM3 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS2TM3) * (pifTOTALS2TM3arrayRAND[n] - yAritTOTALS2TM3)));
                qXYTOTALS2TM4 = (qXYTOTALS2TM4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS2TM4) * (pifTOTALS2TM4arrayRAND[n] - yAritTOTALS2TM4)));
                qXYTOTALS2TM5 = (qXYTOTALS2TM5 + ((pifTOTALS1ETM5arrayRAND[n] - xAritTOTALS2TM5) * (pifTOTALS2TM5arrayRAND[n] - yAritTOTALS2TM5)));
                qXYTOTALS2TM7 = (qXYTOTALS2TM7 + ((pifTOTALS1ETM7arrayRAND[n] - xAritTOTALS2TM7) * (pifTOTALS2TM7arrayRAND[n] - yAritTOTALS2TM7)));
            }
        
            aTOTALS2TM1 = (((xQuadTOTALS2TM1 * yTOTALS2TM1) - (xTOTALS2TM1 * xyTOTALS2TM1)) / ((minPifVAL * xQuadTOTALS2TM1) - (xTOTALS2TM1^2)));
            aTOTALS2TM2 = (((xQuadTOTALS2TM2 * yTOTALS2TM2) - (xTOTALS2TM2 * xyTOTALS2TM2)) / ((minPifVAL * xQuadTOTALS2TM2) - (xTOTALS2TM2^2)));
            aTOTALS2TM3 = (((xQuadTOTALS2TM3 * yTOTALS2TM3) - (xTOTALS2TM3 * xyTOTALS2TM3)) / ((minPifVAL * xQuadTOTALS2TM3) - (xTOTALS2TM3^2)));
            aTOTALS2TM4 = (((xQuadTOTALS2TM4 * yTOTALS2TM4) - (xTOTALS2TM4 * xyTOTALS2TM4)) / ((minPifVAL * xQuadTOTALS2TM4) - (xTOTALS2TM4^2)));
            aTOTALS2TM5 = (((xQuadTOTALS2TM5 * yTOTALS2TM5) - (xTOTALS2TM5 * xyTOTALS2TM5)) / ((minPifVAL * xQuadTOTALS2TM5) - (xTOTALS2TM5^2)));
            aTOTALS2TM7 = (((xQuadTOTALS2TM7 * yTOTALS2TM7) - (xTOTALS2TM7 * xyTOTALS2TM7)) / ((minPifVAL * xQuadTOTALS2TM7) - (xTOTALS2TM7^2)));
            
            bTOTALS2TM1 = qXYTOTALS2TM1 / xxAritQuadTOTALS2TM1;
            bTOTALS2TM2 = qXYTOTALS2TM2 / xxAritQuadTOTALS2TM2;
            bTOTALS2TM3 = qXYTOTALS2TM3 / xxAritQuadTOTALS2TM3;
            bTOTALS2TM4 = qXYTOTALS2TM4 / xxAritQuadTOTALS2TM4;
            bTOTALS2TM5 = qXYTOTALS2TM5 / xxAritQuadTOTALS2TM5;
            bTOTALS2TM7 = qXYTOTALS2TM7 / xxAritQuadTOTALS2TM7;
    
            rTOTALS2TM1 = (qXYTOTALS2TM1 / ((xxAritQuadTOTALS2TM1 * yyAritQuadTOTALS2TM1)^0.5));
            rTOTALS2TM2 = (qXYTOTALS2TM2 / ((xxAritQuadTOTALS2TM2 * yyAritQuadTOTALS2TM2)^0.5));
            rTOTALS2TM3 = (qXYTOTALS2TM3 / ((xxAritQuadTOTALS2TM3 * yyAritQuadTOTALS2TM3)^0.5));
            rTOTALS2TM4 = (qXYTOTALS2TM4 / ((xxAritQuadTOTALS2TM4 * yyAritQuadTOTALS2TM4)^0.5));
            rTOTALS2TM5 = (qXYTOTALS2TM5 / ((xxAritQuadTOTALS2TM5 * yyAritQuadTOTALS2TM5)^0.5));
            rTOTALS2TM7 = (qXYTOTALS2TM7 / ((xxAritQuadTOTALS2TM7 * yyAritQuadTOTALS2TM7)^0.5));
    
            rQuadTOTALS2TM1 = ((rTOTALS2TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2TM2 = ((rTOTALS2TM2^2) * 100);
            rQuadTOTALS2TM3 = ((rTOTALS2TM3^2) * 100);
            rQuadTOTALS2TM4 = ((rTOTALS2TM4^2) * 100);
            rQuadTOTALS2TM5 = ((rTOTALS2TM5^2) * 100);
            rQuadTOTALS2TM7 = ((rTOTALS2TM7^2) * 100);
        
            syxTOTALS2TM1 = (((yyAritQuadTOTALS2TM1 - ((qXYTOTALS2TM1^2) / xxAritQuadTOTALS2TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM2 = (((yyAritQuadTOTALS2TM2 - ((qXYTOTALS2TM2^2) / xxAritQuadTOTALS2TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM3 = (((yyAritQuadTOTALS2TM3 - ((qXYTOTALS2TM3^2) / xxAritQuadTOTALS2TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM4 = (((yyAritQuadTOTALS2TM4 - ((qXYTOTALS2TM4^2) / xxAritQuadTOTALS2TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM5 = (((yyAritQuadTOTALS2TM5 - ((qXYTOTALS2TM5^2) / xxAritQuadTOTALS2TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM7 = (((yyAritQuadTOTALS2TM7 - ((qXYTOTALS2TM7^2) / xxAritQuadTOTALS2TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2TM1 = (((syxTOTALS2TM1^2) / xxAritQuadTOTALS2TM1)^0.5);
            bStandTOTALS2TM2 = (((syxTOTALS2TM2^2) / xxAritQuadTOTALS2TM2)^0.5);
            bStandTOTALS2TM3 = (((syxTOTALS2TM3^2) / xxAritQuadTOTALS2TM3)^0.5);
            bStandTOTALS2TM4 = (((syxTOTALS2TM4^2) / xxAritQuadTOTALS2TM4)^0.5);
            bStandTOTALS2TM5 = (((syxTOTALS2TM5^2) / xxAritQuadTOTALS2TM5)^0.5);
            bStandTOTALS2TM7 = (((syxTOTALS2TM7^2) / xxAritQuadTOTALS2TM7)^0.5);
    
            aStandTOTALS2TM1 = (bStandTOTALS2TM1 * ((xQuadTOTALS2TM1 / minPifVAL)^0.5));
            aStandTOTALS2TM2 = (bStandTOTALS2TM2 * ((xQuadTOTALS2TM2 / minPifVAL)^0.5));
            aStandTOTALS2TM3 = (bStandTOTALS2TM3 * ((xQuadTOTALS2TM3 / minPifVAL)^0.5));
            aStandTOTALS2TM4 = (bStandTOTALS2TM4 * ((xQuadTOTALS2TM4 / minPifVAL)^0.5));
            aStandTOTALS2TM5 = (bStandTOTALS2TM5 * ((xQuadTOTALS2TM5 / minPifVAL)^0.5));
            aStandTOTALS2TM7 = (bStandTOTALS2TM7 * ((xQuadTOTALS2TM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM1, bTOTALS2TM1, rTOTALS2TM1, rQuadTOTALS2TM1, aStandTOTALS2TM1, bStandTOTALS2TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM2, bTOTALS2TM2, rTOTALS2TM2, rQuadTOTALS2TM2, aStandTOTALS2TM2, bStandTOTALS2TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM3, bTOTALS2TM3, rTOTALS2TM3, rQuadTOTALS2TM3, aStandTOTALS2TM3, bStandTOTALS2TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM4, bTOTALS2TM4, rTOTALS2TM4, rQuadTOTALS2TM4, aStandTOTALS2TM4, bStandTOTALS2TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM5, bTOTALS2TM5, rTOTALS2TM5, rQuadTOTALS2TM5, aStandTOTALS2TM5, bStandTOTALS2TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS2TM7, bTOTALS2TM7, rTOTALS2TM7, rQuadTOTALS2TM7, aStandTOTALS2TM7, bStandTOTALS2TM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS2TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS2TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS2TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS2TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS2TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS2TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS2TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT2TM1[i,j] = (aTOTALS2TM1 + (bTOTALS2TM1 * REFS2TM1[i,j]));
                    OUT2TM2[i,j] = (aTOTALS2TM2 + (bTOTALS2TM2 * REFS2TM2[i,j]));
                    OUT2TM3[i,j] = (aTOTALS2TM3 + (bTOTALS2TM3 * REFS2TM3[i,j]));
                    OUT2TM4[i,j] = (aTOTALS2TM4 + (bTOTALS2TM4 * REFS2TM4[i,j]));
                    OUT2TM5[i,j] = (aTOTALS2TM5 + (bTOTALS2TM5 * REFS2TM5[i,j]));
                    OUT2TM7[i,j] = (aTOTALS2TM7 + (bTOTALS2TM7 * REFS2TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2TM1);
        	CreatePyramid(OUT2TM2);
        	CreatePyramid(OUT2TM3);
        	CreatePyramid(OUT2TM4);
        	CreatePyramid(OUT2TM5);
        	CreatePyramid(OUT2TM7);
        
        	CreateHistogram(OUT2TM1);
        	CreateHistogram(OUT2TM2);
        	CreateHistogram(OUT2TM3);
        	CreateHistogram(OUT2TM4);
        	CreateHistogram(OUT2TM5);
        	CreateHistogram(OUT2TM7);
            CloseRaster(REFS2TM1);
            CloseRaster(REFS2TM2);
            CloseRaster(REFS2TM3);
            CloseRaster(REFS2TM4);
            CloseRaster(REFS2TM5);
            CloseRaster(REFS2TM7);
    
            CloseRaster(OUT2TM1);
            CloseRaster(OUT2TM2);
            CloseRaster(OUT2TM3);
            CloseRaster(OUT2TM4);
            CloseRaster(OUT2TM5);
            CloseRaster(OUT2TM7);
        
        	printf("Scene 2 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            else
            { 
            numeric xAritTOTALS2MSS1, xAritTOTALS2MSS2, xAritTOTALS2MSS4;
            numeric yAritTOTALS2MSS1, yAritTOTALS2MSS2, yAritTOTALS2MSS4;
    
            numeric aTOTALS2MSS1, aTOTALS2MSS2, aTOTALS2MSS4;
            numeric bTOTALS2MSS1, bTOTALS2MSS2, bTOTALS2MSS4;
            numeric rTOTALS2MSS1, rTOTALS2MSS2, rTOTALS2MSS4;
            numeric rQuadTOTALS2MSS1, rQuadTOTALS2MSS2, rQuadTOTALS2MSS4;
            numeric syxTOTALS2MSS1, syxTOTALS2MSS2, syxTOTALS2MSS4;
            numeric bStandTOTALS2MSS1, bStandTOTALS2MSS2, bStandTOTALS2MSS4;
            numeric aStandTOTALS2MSS1, aStandTOTALS2MSS2, aStandTOTALS2MSS4;
    
            numeric xTOTALS2MSS1 = 0;
            numeric xTOTALS2MSS2 = 0;
            numeric xTOTALS2MSS4 = 0;
    
            numeric xQuadTOTALS2MSS1 = 0;
            numeric xQuadTOTALS2MSS2 = 0;
            numeric xQuadTOTALS2MSS4 = 0;
    
            numeric yTOTALS2MSS1 = 0;
            numeric yTOTALS2MSS2 = 0;
            numeric yTOTALS2MSS4 = 0;
    
            numeric yQuadTOTALS2MSS1 = 0;
            numeric yQuadTOTALS2MSS2 = 0;
            numeric yQuadTOTALS2MSS4 = 0;
    
            numeric xyTOTALS2MSS1 = 0;
            numeric xyTOTALS2MSS2 = 0;
            numeric xyTOTALS2MSS4 = 0;
    
            numeric xxAritQuadTOTALS2MSS1 = 0;
            numeric xxAritQuadTOTALS2MSS2 = 0;
            numeric xxAritQuadTOTALS2MSS4 = 0;
    
            numeric yyAritQuadTOTALS2MSS1 = 0;
            numeric yyAritQuadTOTALS2MSS2 = 0;
            numeric yyAritQuadTOTALS2MSS4 = 0;
    
            numeric qXYTOTALS2MSS1 = 0;
            numeric qXYTOTALS2MSS2 = 0;
            numeric qXYTOTALS2MSS4 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS2MSS1 = xTOTALS2MSS1 + pifTOTALS1ETM2arrayRAND[m];
                xTOTALS2MSS2 = xTOTALS2MSS2 + pifTOTALS1ETM3arrayRAND[m];
                xTOTALS2MSS4 = xTOTALS2MSS4 + pifTOTALS1ETM4arrayRAND[m];
    
                xQuadTOTALS2MSS1 = (xQuadTOTALS2MSS1 + (pifTOTALS1ETM2arrayRAND[m]^2));
                xQuadTOTALS2MSS2 = (xQuadTOTALS2MSS2 + (pifTOTALS1ETM3arrayRAND[m]^2));
                xQuadTOTALS2MSS4 = (xQuadTOTALS2MSS4 + (pifTOTALS1ETM4arrayRAND[m]^2));
    
                yTOTALS2MSS1 = yTOTALS2MSS1 + pifTOTALS2MSS1arrayRAND[m];
                yTOTALS2MSS2 = yTOTALS2MSS2 + pifTOTALS2MSS2arrayRAND[m];
                yTOTALS2MSS4 = yTOTALS2MSS4 + pifTOTALS2MSS4arrayRAND[m];
                
                yQuadTOTALS2MSS1 = (yQuadTOTALS2MSS1 + (pifTOTALS2MSS1arrayRAND[m]^2));
                yQuadTOTALS2MSS2 = (yQuadTOTALS2MSS2 + (pifTOTALS2MSS2arrayRAND[m]^2));
                yQuadTOTALS2MSS4 = (yQuadTOTALS2MSS4 + (pifTOTALS2MSS4arrayRAND[m]^2));
    
                xyTOTALS2MSS1 = (xyTOTALS2MSS1 + (pifTOTALS1ETM2arrayRAND[m] * pifTOTALS2MSS1arrayRAND[m]));
                xyTOTALS2MSS2 = (xyTOTALS2MSS2 + (pifTOTALS1ETM3arrayRAND[m] * pifTOTALS2MSS2arrayRAND[m]));
                xyTOTALS2MSS4 = (xyTOTALS2MSS4 + (pifTOTALS1ETM4arrayRAND[m] * pifTOTALS2MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS2MSS1 = xTOTALS2MSS1 / minPifVAL;
            xAritTOTALS2MSS2 = xTOTALS2MSS2 / minPifVAL;
            xAritTOTALS2MSS4 = xTOTALS2MSS4 / minPifVAL;
    
            yAritTOTALS2MSS1 = yTOTALS2MSS1 / minPifVAL;
            yAritTOTALS2MSS2 = yTOTALS2MSS2 / minPifVAL;
            yAritTOTALS2MSS4 = yTOTALS2MSS4 / minPifVAL;
            
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2MSS1 = (xxAritQuadTOTALS2MSS1 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS2MSS1)^2));
                xxAritQuadTOTALS2MSS2 = (xxAritQuadTOTALS2MSS2 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS2MSS2)^2));
                xxAritQuadTOTALS2MSS4 = (xxAritQuadTOTALS2MSS4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS2MSS4)^2));
    
                yyAritQuadTOTALS2MSS1 = (yyAritQuadTOTALS2MSS1 + ((pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)^2));
                yyAritQuadTOTALS2MSS2 = (yyAritQuadTOTALS2MSS2 + ((pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)^2));
                yyAritQuadTOTALS2MSS4 = (yyAritQuadTOTALS2MSS4 + ((pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)^2));
    
                qXYTOTALS2MSS1 = (qXYTOTALS2MSS1 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS2MSS1) * (pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)));
                qXYTOTALS2MSS2 = (qXYTOTALS2MSS2 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS2MSS2) * (pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)));
                qXYTOTALS2MSS4 = (qXYTOTALS2MSS4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS2MSS4) * (pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)));
            }
        
            aTOTALS2MSS1 = (((xQuadTOTALS2MSS1 * yTOTALS2MSS1) - (xTOTALS2MSS1 * xyTOTALS2MSS1)) / ((minPifVAL * xQuadTOTALS2MSS1) - (xTOTALS2MSS1^2)));
            aTOTALS2MSS2 = (((xQuadTOTALS2MSS2 * yTOTALS2MSS2) - (xTOTALS2MSS2 * xyTOTALS2MSS2)) / ((minPifVAL * xQuadTOTALS2MSS2) - (xTOTALS2MSS2^2)));
            aTOTALS2MSS4 = (((xQuadTOTALS2MSS4 * yTOTALS2MSS4) - (xTOTALS2MSS4 * xyTOTALS2MSS4)) / ((minPifVAL * xQuadTOTALS2MSS4) - (xTOTALS2MSS4^2)));
            
            bTOTALS2MSS1 = qXYTOTALS2MSS1 / xxAritQuadTOTALS2MSS1;
            bTOTALS2MSS2 = qXYTOTALS2MSS2 / xxAritQuadTOTALS2MSS2;
            bTOTALS2MSS4 = qXYTOTALS2MSS4 / xxAritQuadTOTALS2MSS4;
    
            rTOTALS2MSS1 = (qXYTOTALS2MSS1 / ((xxAritQuadTOTALS2MSS1 * yyAritQuadTOTALS2MSS1)^0.5));
            rTOTALS2MSS2 = (qXYTOTALS2MSS2 / ((xxAritQuadTOTALS2MSS2 * yyAritQuadTOTALS2MSS2)^0.5));
            rTOTALS2MSS4 = (qXYTOTALS2MSS4 / ((xxAritQuadTOTALS2MSS4 * yyAritQuadTOTALS2MSS4)^0.5));
    
            rQuadTOTALS2MSS1 = ((rTOTALS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2MSS2 = ((rTOTALS2MSS2^2) * 100);
            rQuadTOTALS2MSS4 = ((rTOTALS2MSS4^2) * 100);
        
            syxTOTALS2MSS1 = (((yyAritQuadTOTALS2MSS1 - ((qXYTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS2 = (((yyAritQuadTOTALS2MSS2 - ((qXYTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS4 = (((yyAritQuadTOTALS2MSS4 - ((qXYTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2MSS1 = (((syxTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)^0.5);
            bStandTOTALS2MSS2 = (((syxTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)^0.5);
            bStandTOTALS2MSS4 = (((syxTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)^0.5);
    
            aStandTOTALS2MSS1 = (bStandTOTALS2MSS1 * ((xQuadTOTALS2MSS1 / minPifVAL)^0.5));
            aStandTOTALS2MSS2 = (bStandTOTALS2MSS2 * ((xQuadTOTALS2MSS2 / minPifVAL)^0.5));
            aStandTOTALS2MSS4 = (bStandTOTALS2MSS4 * ((xQuadTOTALS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS1, bTOTALS2MSS1, rTOTALS2MSS1, rQuadTOTALS2MSS1, aStandTOTALS2MSS1, bStandTOTALS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS2, bTOTALS2MSS2, rTOTALS2MSS2, rQuadTOTALS2MSS2, aStandTOTALS2MSS2, bStandTOTALS2MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS4, bTOTALS2MSS4, rTOTALS2MSS4, rQuadTOTALS2MSS4, aStandTOTALS2MSS4, bStandTOTALS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS2MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS2MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS2MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aTOTALS2MSS1 + (bTOTALS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aTOTALS2MSS2 + (bTOTALS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = REFS2MSS3[i,j];
                    OUT2MSS4[i,j] = (aTOTALS2MSS4 + (bTOTALS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT2MSS1);
        	CreatePyramid(OUT2MSS2);
        	CreatePyramid(OUT2MSS3);
        	CreatePyramid(OUT2MSS4);
        
        	CreateHistogram(OUT2MSS1);
        	CreateHistogram(OUT2MSS2);
        	CreateHistogram(OUT2MSS3);
        	CreateHistogram(OUT2MSS4);
            
            CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");         
            }
            
            if ( sensors3 == 7 )
            {
            numeric xAritTOTALS3ETM1, xAritTOTALS3ETM2, xAritTOTALS3ETM3, xAritTOTALS3ETM4, xAritTOTALS3ETM5, xAritTOTALS3ETM7;
            numeric yAritTOTALS3ETM1, yAritTOTALS3ETM2, yAritTOTALS3ETM3, yAritTOTALS3ETM4, yAritTOTALS3ETM5, yAritTOTALS3ETM7;
    
            numeric aTOTALS3ETM1, aTOTALS3ETM2, aTOTALS3ETM3, aTOTALS3ETM4, aTOTALS3ETM5, aTOTALS3ETM7;
            numeric bTOTALS3ETM1, bTOTALS3ETM2, bTOTALS3ETM3, bTOTALS3ETM4, bTOTALS3ETM5, bTOTALS3ETM7;
            numeric rTOTALS3ETM1, rTOTALS3ETM2, rTOTALS3ETM3, rTOTALS3ETM4, rTOTALS3ETM5, rTOTALS3ETM7;
            numeric rQuadTOTALS3ETM1, rQuadTOTALS3ETM2, rQuadTOTALS3ETM3, rQuadTOTALS3ETM4, rQuadTOTALS3ETM5, rQuadTOTALS3ETM7;
            numeric syxTOTALS3ETM1, syxTOTALS3ETM2, syxTOTALS3ETM3, syxTOTALS3ETM4, syxTOTALS3ETM5, syxTOTALS3ETM7;
            numeric bStandTOTALS3ETM1, bStandTOTALS3ETM2, bStandTOTALS3ETM3, bStandTOTALS3ETM4, bStandTOTALS3ETM5, bStandTOTALS3ETM7;
            numeric aStandTOTALS3ETM1, aStandTOTALS3ETM2, aStandTOTALS3ETM3, aStandTOTALS3ETM4, aStandTOTALS3ETM5, aStandTOTALS3ETM7;
    
            numeric xTOTALS3ETM1 = 0;
            numeric xTOTALS3ETM2 = 0;
            numeric xTOTALS3ETM3 = 0;
            numeric xTOTALS3ETM4 = 0;
            numeric xTOTALS3ETM5 = 0;
            numeric xTOTALS3ETM7 = 0;
    
            numeric xQuadTOTALS3ETM1 = 0;
            numeric xQuadTOTALS3ETM2 = 0;
            numeric xQuadTOTALS3ETM3 = 0;
            numeric xQuadTOTALS3ETM4 = 0;
            numeric xQuadTOTALS3ETM5 = 0;
            numeric xQuadTOTALS3ETM7 = 0;
    
            numeric yTOTALS3ETM1 = 0;
            numeric yTOTALS3ETM2 = 0;
            numeric yTOTALS3ETM3 = 0;
            numeric yTOTALS3ETM4 = 0;
            numeric yTOTALS3ETM5 = 0;
            numeric yTOTALS3ETM7 = 0;
    
            numeric yQuadTOTALS3ETM1 = 0;
            numeric yQuadTOTALS3ETM2 = 0;
            numeric yQuadTOTALS3ETM3 = 0;
            numeric yQuadTOTALS3ETM4 = 0;
            numeric yQuadTOTALS3ETM5 = 0;
            numeric yQuadTOTALS3ETM7 = 0;
    
            numeric xyTOTALS3ETM1 = 0;
            numeric xyTOTALS3ETM2 = 0;
            numeric xyTOTALS3ETM3 = 0;
            numeric xyTOTALS3ETM4 = 0;
            numeric xyTOTALS3ETM5 = 0;
            numeric xyTOTALS3ETM7 = 0;
    
            numeric xxAritQuadTOTALS3ETM1 = 0;
            numeric xxAritQuadTOTALS3ETM2 = 0;
            numeric xxAritQuadTOTALS3ETM3 = 0;
            numeric xxAritQuadTOTALS3ETM4 = 0;
            numeric xxAritQuadTOTALS3ETM5 = 0;
            numeric xxAritQuadTOTALS3ETM7 = 0;
    
            numeric yyAritQuadTOTALS3ETM1 = 0;
            numeric yyAritQuadTOTALS3ETM2 = 0;
            numeric yyAritQuadTOTALS3ETM3 = 0;
            numeric yyAritQuadTOTALS3ETM4 = 0;
            numeric yyAritQuadTOTALS3ETM5 = 0;
            numeric yyAritQuadTOTALS3ETM7 = 0;
    
            numeric qXYTOTALS3ETM1 = 0;
            numeric qXYTOTALS3ETM2 = 0;
            numeric qXYTOTALS3ETM3 = 0;
            numeric qXYTOTALS3ETM4 = 0;
            numeric qXYTOTALS3ETM5 = 0;
            numeric qXYTOTALS3ETM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS3ETM1 = xTOTALS3ETM1 + pifTOTALS1ETM1arrayRAND[m];
                xTOTALS3ETM2 = xTOTALS3ETM2 + pifTOTALS1ETM2arrayRAND[m];
                xTOTALS3ETM3 = xTOTALS3ETM3 + pifTOTALS1ETM3arrayRAND[m];
                xTOTALS3ETM4 = xTOTALS3ETM4 + pifTOTALS1ETM4arrayRAND[m];
                xTOTALS3ETM5 = xTOTALS3ETM5 + pifTOTALS1ETM5arrayRAND[m];
                xTOTALS3ETM7 = xTOTALS3ETM7 + pifTOTALS1ETM7arrayRAND[m];
    
                xQuadTOTALS3ETM1 = (xQuadTOTALS3ETM1 + (pifTOTALS1ETM1arrayRAND[m]^2));
                xQuadTOTALS3ETM2 = (xQuadTOTALS3ETM2 + (pifTOTALS1ETM2arrayRAND[m]^2));
                xQuadTOTALS3ETM3 = (xQuadTOTALS3ETM3 + (pifTOTALS1ETM3arrayRAND[m]^2));
                xQuadTOTALS3ETM4 = (xQuadTOTALS3ETM4 + (pifTOTALS1ETM4arrayRAND[m]^2));
                xQuadTOTALS3ETM5 = (xQuadTOTALS3ETM5 + (pifTOTALS1ETM5arrayRAND[m]^2));
                xQuadTOTALS3ETM7 = (xQuadTOTALS3ETM7 + (pifTOTALS1ETM7arrayRAND[m]^2));
    
                yTOTALS3ETM1 = yTOTALS3ETM1 + pifTOTALS3ETM1arrayRAND[m];
                yTOTALS3ETM2 = yTOTALS3ETM2 + pifTOTALS3ETM2arrayRAND[m];
                yTOTALS3ETM3 = yTOTALS3ETM3 + pifTOTALS3ETM3arrayRAND[m];
                yTOTALS3ETM4 = yTOTALS3ETM4 + pifTOTALS3ETM4arrayRAND[m];
                yTOTALS3ETM5 = yTOTALS3ETM5 + pifTOTALS3ETM5arrayRAND[m];
                yTOTALS3ETM7 = yTOTALS3ETM7 + pifTOTALS3ETM7arrayRAND[m];
                
                yQuadTOTALS3ETM1 = (yQuadTOTALS3ETM1 + (pifTOTALS3ETM1arrayRAND[m]^2));
                yQuadTOTALS3ETM2 = (yQuadTOTALS3ETM2 + (pifTOTALS3ETM2arrayRAND[m]^2));
                yQuadTOTALS3ETM3 = (yQuadTOTALS3ETM3 + (pifTOTALS3ETM3arrayRAND[m]^2));
                yQuadTOTALS3ETM4 = (yQuadTOTALS3ETM4 + (pifTOTALS3ETM4arrayRAND[m]^2));
                yQuadTOTALS3ETM5 = (yQuadTOTALS3ETM5 + (pifTOTALS3ETM5arrayRAND[m]^2));
                yQuadTOTALS3ETM7 = (yQuadTOTALS3ETM7 + (pifTOTALS3ETM7arrayRAND[m]^2));
    
                xyTOTALS3ETM1 = (xyTOTALS3ETM1 + (pifTOTALS1ETM1arrayRAND[m] * pifTOTALS3ETM1arrayRAND[m]));
                xyTOTALS3ETM2 = (xyTOTALS3ETM2 + (pifTOTALS1ETM2arrayRAND[m] * pifTOTALS3ETM2arrayRAND[m]));
                xyTOTALS3ETM3 = (xyTOTALS3ETM3 + (pifTOTALS1ETM3arrayRAND[m] * pifTOTALS3ETM3arrayRAND[m]));
                xyTOTALS3ETM4 = (xyTOTALS3ETM4 + (pifTOTALS1ETM4arrayRAND[m] * pifTOTALS3ETM4arrayRAND[m]));
                xyTOTALS3ETM5 = (xyTOTALS3ETM5 + (pifTOTALS1ETM5arrayRAND[m] * pifTOTALS3ETM5arrayRAND[m]));
                xyTOTALS3ETM7 = (xyTOTALS3ETM7 + (pifTOTALS1ETM7arrayRAND[m] * pifTOTALS3ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS3ETM1 = xTOTALS3ETM1 / minPifVAL;
            xAritTOTALS3ETM2 = xTOTALS3ETM2 / minPifVAL;
            xAritTOTALS3ETM3 = xTOTALS3ETM3 / minPifVAL;
            xAritTOTALS3ETM4 = xTOTALS3ETM4 / minPifVAL;
            xAritTOTALS3ETM5 = xTOTALS3ETM5 / minPifVAL;
            xAritTOTALS3ETM7 = xTOTALS3ETM7 / minPifVAL;
    
            yAritTOTALS3ETM1 = yTOTALS3ETM1 / minPifVAL;
            yAritTOTALS3ETM2 = yTOTALS3ETM2 / minPifVAL;
            yAritTOTALS3ETM3 = yTOTALS3ETM3 / minPifVAL;
            yAritTOTALS3ETM4 = yTOTALS3ETM4 / minPifVAL;
            yAritTOTALS3ETM5 = yTOTALS3ETM5 / minPifVAL;
            yAritTOTALS3ETM7 = yTOTALS3ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3ETM1 = (xxAritQuadTOTALS3ETM1 + ((pifTOTALS1ETM1arrayRAND[n] - xAritTOTALS3ETM1)^2));
                xxAritQuadTOTALS3ETM2 = (xxAritQuadTOTALS3ETM2 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS3ETM2)^2));
                xxAritQuadTOTALS3ETM3 = (xxAritQuadTOTALS3ETM3 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS3ETM3)^2));
                xxAritQuadTOTALS3ETM4 = (xxAritQuadTOTALS3ETM4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS3ETM4)^2));
                xxAritQuadTOTALS3ETM5 = (xxAritQuadTOTALS3ETM5 + ((pifTOTALS1ETM5arrayRAND[n] - xAritTOTALS3ETM5)^2));
                xxAritQuadTOTALS3ETM7 = (xxAritQuadTOTALS3ETM7 + ((pifTOTALS1ETM7arrayRAND[n] - xAritTOTALS3ETM7)^2));
    
                yyAritQuadTOTALS3ETM1 = (yyAritQuadTOTALS3ETM1 + ((pifTOTALS3ETM1arrayRAND[n] - yAritTOTALS3ETM1)^2));
                yyAritQuadTOTALS3ETM2 = (yyAritQuadTOTALS3ETM2 + ((pifTOTALS3ETM2arrayRAND[n] - yAritTOTALS3ETM2)^2));
                yyAritQuadTOTALS3ETM3 = (yyAritQuadTOTALS3ETM3 + ((pifTOTALS3ETM3arrayRAND[n] - yAritTOTALS3ETM3)^2));
                yyAritQuadTOTALS3ETM4 = (yyAritQuadTOTALS3ETM4 + ((pifTOTALS3ETM4arrayRAND[n] - yAritTOTALS3ETM4)^2));
                yyAritQuadTOTALS3ETM5 = (yyAritQuadTOTALS3ETM5 + ((pifTOTALS3ETM5arrayRAND[n] - yAritTOTALS3ETM5)^2));
                yyAritQuadTOTALS3ETM7 = (yyAritQuadTOTALS3ETM7 + ((pifTOTALS3ETM7arrayRAND[n] - yAritTOTALS3ETM7)^2));
    
                qXYTOTALS3ETM1 = (qXYTOTALS3ETM1 + ((pifTOTALS1ETM1arrayRAND[n] - xAritTOTALS3ETM1) * (pifTOTALS3ETM1arrayRAND[n] - yAritTOTALS3ETM1)));
                qXYTOTALS3ETM2 = (qXYTOTALS3ETM2 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS3ETM2) * (pifTOTALS3ETM2arrayRAND[n] - yAritTOTALS3ETM2)));
                qXYTOTALS3ETM3 = (qXYTOTALS3ETM3 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS3ETM3) * (pifTOTALS3ETM3arrayRAND[n] - yAritTOTALS3ETM3)));
                qXYTOTALS3ETM4 = (qXYTOTALS3ETM4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS3ETM4) * (pifTOTALS3ETM4arrayRAND[n] - yAritTOTALS3ETM4)));
                qXYTOTALS3ETM5 = (qXYTOTALS3ETM5 + ((pifTOTALS1ETM5arrayRAND[n] - xAritTOTALS3ETM5) * (pifTOTALS3ETM5arrayRAND[n] - yAritTOTALS3ETM5)));
                qXYTOTALS3ETM7 = (qXYTOTALS3ETM7 + ((pifTOTALS1ETM7arrayRAND[n] - xAritTOTALS3ETM7) * (pifTOTALS3ETM7arrayRAND[n] - yAritTOTALS3ETM7)));
            }
        
            aTOTALS3ETM1 = (((xQuadTOTALS3ETM1 * yTOTALS3ETM1) - (xTOTALS3ETM1 * xyTOTALS3ETM1)) / ((minPifVAL * xQuadTOTALS3ETM1) - (xTOTALS3ETM1^2)));
            aTOTALS3ETM2 = (((xQuadTOTALS3ETM2 * yTOTALS3ETM2) - (xTOTALS3ETM2 * xyTOTALS3ETM2)) / ((minPifVAL * xQuadTOTALS3ETM2) - (xTOTALS3ETM2^2)));
            aTOTALS3ETM3 = (((xQuadTOTALS3ETM3 * yTOTALS3ETM3) - (xTOTALS3ETM3 * xyTOTALS3ETM3)) / ((minPifVAL * xQuadTOTALS3ETM3) - (xTOTALS3ETM3^2)));
            aTOTALS3ETM4 = (((xQuadTOTALS3ETM4 * yTOTALS3ETM4) - (xTOTALS3ETM4 * xyTOTALS3ETM4)) / ((minPifVAL * xQuadTOTALS3ETM4) - (xTOTALS3ETM4^2)));
            aTOTALS3ETM5 = (((xQuadTOTALS3ETM5 * yTOTALS3ETM5) - (xTOTALS3ETM5 * xyTOTALS3ETM5)) / ((minPifVAL * xQuadTOTALS3ETM5) - (xTOTALS3ETM5^2)));
            aTOTALS3ETM7 = (((xQuadTOTALS3ETM7 * yTOTALS3ETM7) - (xTOTALS3ETM7 * xyTOTALS3ETM7)) / ((minPifVAL * xQuadTOTALS3ETM7) - (xTOTALS3ETM7^2)));
            
            bTOTALS3ETM1 = qXYTOTALS3ETM1 / xxAritQuadTOTALS3ETM1;
            bTOTALS3ETM2 = qXYTOTALS3ETM2 / xxAritQuadTOTALS3ETM2;
            bTOTALS3ETM3 = qXYTOTALS3ETM3 / xxAritQuadTOTALS3ETM3;
            bTOTALS3ETM4 = qXYTOTALS3ETM4 / xxAritQuadTOTALS3ETM4;
            bTOTALS3ETM5 = qXYTOTALS3ETM5 / xxAritQuadTOTALS3ETM5;
            bTOTALS3ETM7 = qXYTOTALS3ETM7 / xxAritQuadTOTALS3ETM7;
    
            rTOTALS3ETM1 = (qXYTOTALS3ETM1 / ((xxAritQuadTOTALS3ETM1 * yyAritQuadTOTALS3ETM1)^0.5));
            rTOTALS3ETM2 = (qXYTOTALS3ETM2 / ((xxAritQuadTOTALS3ETM2 * yyAritQuadTOTALS3ETM2)^0.5));
            rTOTALS3ETM3 = (qXYTOTALS3ETM3 / ((xxAritQuadTOTALS3ETM3 * yyAritQuadTOTALS3ETM3)^0.5));
            rTOTALS3ETM4 = (qXYTOTALS3ETM4 / ((xxAritQuadTOTALS3ETM4 * yyAritQuadTOTALS3ETM4)^0.5));
            rTOTALS3ETM5 = (qXYTOTALS3ETM5 / ((xxAritQuadTOTALS3ETM5 * yyAritQuadTOTALS3ETM5)^0.5));
            rTOTALS3ETM7 = (qXYTOTALS3ETM7 / ((xxAritQuadTOTALS3ETM7 * yyAritQuadTOTALS3ETM7)^0.5));
    
            rQuadTOTALS3ETM1 = ((rTOTALS3ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3ETM2 = ((rTOTALS3ETM2^2) * 100);
            rQuadTOTALS3ETM3 = ((rTOTALS3ETM3^2) * 100);
            rQuadTOTALS3ETM4 = ((rTOTALS3ETM4^2) * 100);
            rQuadTOTALS3ETM5 = ((rTOTALS3ETM5^2) * 100);
            rQuadTOTALS3ETM7 = ((rTOTALS3ETM7^2) * 100);
        
            syxTOTALS3ETM1 = (((yyAritQuadTOTALS3ETM1 - ((qXYTOTALS3ETM1^2) / xxAritQuadTOTALS3ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM2 = (((yyAritQuadTOTALS3ETM2 - ((qXYTOTALS3ETM2^2) / xxAritQuadTOTALS3ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM3 = (((yyAritQuadTOTALS3ETM3 - ((qXYTOTALS3ETM3^2) / xxAritQuadTOTALS3ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM4 = (((yyAritQuadTOTALS3ETM4 - ((qXYTOTALS3ETM4^2) / xxAritQuadTOTALS3ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM5 = (((yyAritQuadTOTALS3ETM5 - ((qXYTOTALS3ETM5^2) / xxAritQuadTOTALS3ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM7 = (((yyAritQuadTOTALS3ETM7 - ((qXYTOTALS3ETM7^2) / xxAritQuadTOTALS3ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3ETM1 = (((syxTOTALS3ETM1^2) / xxAritQuadTOTALS3ETM1)^0.5);
            bStandTOTALS3ETM2 = (((syxTOTALS3ETM2^2) / xxAritQuadTOTALS3ETM2)^0.5);
            bStandTOTALS3ETM3 = (((syxTOTALS3ETM3^2) / xxAritQuadTOTALS3ETM3)^0.5);
            bStandTOTALS3ETM4 = (((syxTOTALS3ETM4^2) / xxAritQuadTOTALS3ETM4)^0.5);
            bStandTOTALS3ETM5 = (((syxTOTALS3ETM5^2) / xxAritQuadTOTALS3ETM5)^0.5);
            bStandTOTALS3ETM7 = (((syxTOTALS3ETM7^2) / xxAritQuadTOTALS3ETM7)^0.5);
    
            aStandTOTALS3ETM1 = (bStandTOTALS3ETM1 * ((xQuadTOTALS3ETM1 / minPifVAL)^0.5));
            aStandTOTALS3ETM2 = (bStandTOTALS3ETM2 * ((xQuadTOTALS3ETM2 / minPifVAL)^0.5));
            aStandTOTALS3ETM3 = (bStandTOTALS3ETM3 * ((xQuadTOTALS3ETM3 / minPifVAL)^0.5));
            aStandTOTALS3ETM4 = (bStandTOTALS3ETM4 * ((xQuadTOTALS3ETM4 / minPifVAL)^0.5));
            aStandTOTALS3ETM5 = (bStandTOTALS3ETM5 * ((xQuadTOTALS3ETM5 / minPifVAL)^0.5));
            aStandTOTALS3ETM7 = (bStandTOTALS3ETM7 * ((xQuadTOTALS3ETM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM1, bTOTALS3ETM1, rTOTALS3ETM1, rQuadTOTALS3ETM1, aStandTOTALS3ETM1, bStandTOTALS3ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM2, bTOTALS3ETM2, rTOTALS3ETM2, rQuadTOTALS3ETM2, aStandTOTALS3ETM2, bStandTOTALS3ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM3, bTOTALS3ETM3, rTOTALS3ETM3, rQuadTOTALS3ETM3, aStandTOTALS3ETM3, bStandTOTALS3ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM4, bTOTALS3ETM4, rTOTALS3ETM4, rQuadTOTALS3ETM4, aStandTOTALS3ETM4, bStandTOTALS3ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM5, bTOTALS3ETM5, rTOTALS3ETM5, rQuadTOTALS3ETM5, aStandTOTALS3ETM5, bStandTOTALS3ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS3ETM7, bTOTALS3ETM7, rTOTALS3ETM7, rQuadTOTALS3ETM7, aStandTOTALS3ETM7, bStandTOTALS3ETM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS3ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS3ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS3ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS3ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS3ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS3ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS3ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT3ETM1[i,j] = (aTOTALS3ETM1 + (bTOTALS3ETM1 * REFS3ETM1[i,j]));
                    OUT3ETM2[i,j] = (aTOTALS3ETM2 + (bTOTALS3ETM2 * REFS3ETM2[i,j]));
                    OUT3ETM3[i,j] = (aTOTALS3ETM3 + (bTOTALS3ETM3 * REFS3ETM3[i,j]));
                    OUT3ETM4[i,j] = (aTOTALS3ETM4 + (bTOTALS3ETM4 * REFS3ETM4[i,j]));
                    OUT3ETM5[i,j] = (aTOTALS3ETM5 + (bTOTALS3ETM5 * REFS3ETM5[i,j]));
                    OUT3ETM7[i,j] = (aTOTALS3ETM7 + (bTOTALS3ETM7 * REFS3ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3ETM1);
        	CreatePyramid(OUT3ETM2);
        	CreatePyramid(OUT3ETM3);
        	CreatePyramid(OUT3ETM4);
        	CreatePyramid(OUT3ETM5);
        	CreatePyramid(OUT3ETM7);
        
        	CreateHistogram(OUT3ETM1);
        	CreateHistogram(OUT3ETM2);
        	CreateHistogram(OUT3ETM3);
        	CreateHistogram(OUT3ETM4);
        	CreateHistogram(OUT3ETM5);
        	CreateHistogram(OUT3ETM7);
            CloseRaster(REFS3ETM1);
            CloseRaster(REFS3ETM2);
            CloseRaster(REFS3ETM3);
            CloseRaster(REFS3ETM4);
            CloseRaster(REFS3ETM5);
            CloseRaster(REFS3ETM7);
    
            CloseRaster(OUT3ETM1);
            CloseRaster(OUT3ETM2);
            CloseRaster(OUT3ETM3);
            CloseRaster(OUT3ETM4);
            CloseRaster(OUT3ETM5);
            CloseRaster(OUT3ETM7);
        
        	printf("Scene 3 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors3 == 6 )
            {
            numeric xAritTOTALS3TM1, xAritTOTALS3TM2, xAritTOTALS3TM3, xAritTOTALS3TM4, xAritTOTALS3TM5, xAritTOTALS3TM7;
            numeric yAritTOTALS3TM1, yAritTOTALS3TM2, yAritTOTALS3TM3, yAritTOTALS3TM4, yAritTOTALS3TM5, yAritTOTALS3TM7;
    
            numeric aTOTALS3TM1, aTOTALS3TM2, aTOTALS3TM3, aTOTALS3TM4, aTOTALS3TM5, aTOTALS3TM7;
            numeric bTOTALS3TM1, bTOTALS3TM2, bTOTALS3TM3, bTOTALS3TM4, bTOTALS3TM5, bTOTALS3TM7;
            numeric rTOTALS3TM1, rTOTALS3TM2, rTOTALS3TM3, rTOTALS3TM4, rTOTALS3TM5, rTOTALS3TM7;
            numeric rQuadTOTALS3TM1, rQuadTOTALS3TM2, rQuadTOTALS3TM3, rQuadTOTALS3TM4, rQuadTOTALS3TM5, rQuadTOTALS3TM7;
            numeric syxTOTALS3TM1, syxTOTALS3TM2, syxTOTALS3TM3, syxTOTALS3TM4, syxTOTALS3TM5, syxTOTALS3TM7;
            numeric bStandTOTALS3TM1, bStandTOTALS3TM2, bStandTOTALS3TM3, bStandTOTALS3TM4, bStandTOTALS3TM5, bStandTOTALS3TM7;
            numeric aStandTOTALS3TM1, aStandTOTALS3TM2, aStandTOTALS3TM3, aStandTOTALS3TM4, aStandTOTALS3TM5, aStandTOTALS3TM7;
    
            numeric xTOTALS3TM1 = 0;
            numeric xTOTALS3TM2 = 0;
            numeric xTOTALS3TM3 = 0;
            numeric xTOTALS3TM4 = 0;
            numeric xTOTALS3TM5 = 0;
            numeric xTOTALS3TM7 = 0;
    
            numeric xQuadTOTALS3TM1 = 0;
            numeric xQuadTOTALS3TM2 = 0;
            numeric xQuadTOTALS3TM3 = 0;
            numeric xQuadTOTALS3TM4 = 0;
            numeric xQuadTOTALS3TM5 = 0;
            numeric xQuadTOTALS3TM7 = 0;
    
            numeric yTOTALS3TM1 = 0;
            numeric yTOTALS3TM2 = 0;
            numeric yTOTALS3TM3 = 0;
            numeric yTOTALS3TM4 = 0;
            numeric yTOTALS3TM5 = 0;
            numeric yTOTALS3TM7 = 0;
    
            numeric yQuadTOTALS3TM1 = 0;
            numeric yQuadTOTALS3TM2 = 0;
            numeric yQuadTOTALS3TM3 = 0;
            numeric yQuadTOTALS3TM4 = 0;
            numeric yQuadTOTALS3TM5 = 0;
            numeric yQuadTOTALS3TM7 = 0;
    
            numeric xyTOTALS3TM1 = 0;
            numeric xyTOTALS3TM2 = 0;
            numeric xyTOTALS3TM3 = 0;
            numeric xyTOTALS3TM4 = 0;
            numeric xyTOTALS3TM5 = 0;
            numeric xyTOTALS3TM7 = 0;
    
            numeric xxAritQuadTOTALS3TM1 = 0;
            numeric xxAritQuadTOTALS3TM2 = 0;
            numeric xxAritQuadTOTALS3TM3 = 0;
            numeric xxAritQuadTOTALS3TM4 = 0;
            numeric xxAritQuadTOTALS3TM5 = 0;
            numeric xxAritQuadTOTALS3TM7 = 0;
    
            numeric yyAritQuadTOTALS3TM1 = 0;
            numeric yyAritQuadTOTALS3TM2 = 0;
            numeric yyAritQuadTOTALS3TM3 = 0;
            numeric yyAritQuadTOTALS3TM4 = 0;
            numeric yyAritQuadTOTALS3TM5 = 0;
            numeric yyAritQuadTOTALS3TM7 = 0;
    
            numeric qXYTOTALS3TM1 = 0;
            numeric qXYTOTALS3TM2 = 0;
            numeric qXYTOTALS3TM3 = 0;
            numeric qXYTOTALS3TM4 = 0;
            numeric qXYTOTALS3TM5 = 0;
            numeric qXYTOTALS3TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS3TM1 = xTOTALS3TM1 + pifTOTALS1ETM1arrayRAND[m];
                xTOTALS3TM2 = xTOTALS3TM2 + pifTOTALS1ETM2arrayRAND[m];
                xTOTALS3TM3 = xTOTALS3TM3 + pifTOTALS1ETM3arrayRAND[m];
                xTOTALS3TM4 = xTOTALS3TM4 + pifTOTALS1ETM4arrayRAND[m];
                xTOTALS3TM5 = xTOTALS3TM5 + pifTOTALS1ETM5arrayRAND[m];
                xTOTALS3TM7 = xTOTALS3TM7 + pifTOTALS1ETM7arrayRAND[m];
    
                xQuadTOTALS3TM1 = (xQuadTOTALS3TM1 + (pifTOTALS1ETM1arrayRAND[m]^2));
                xQuadTOTALS3TM2 = (xQuadTOTALS3TM2 + (pifTOTALS1ETM2arrayRAND[m]^2));
                xQuadTOTALS3TM3 = (xQuadTOTALS3TM3 + (pifTOTALS1ETM3arrayRAND[m]^2));
                xQuadTOTALS3TM4 = (xQuadTOTALS3TM4 + (pifTOTALS1ETM4arrayRAND[m]^2));
                xQuadTOTALS3TM5 = (xQuadTOTALS3TM5 + (pifTOTALS1ETM5arrayRAND[m]^2));
                xQuadTOTALS3TM7 = (xQuadTOTALS3TM7 + (pifTOTALS1ETM7arrayRAND[m]^2));
    
                yTOTALS3TM1 = yTOTALS3TM1 + pifTOTALS3TM1arrayRAND[m];
                yTOTALS3TM2 = yTOTALS3TM2 + pifTOTALS3TM2arrayRAND[m];
                yTOTALS3TM3 = yTOTALS3TM3 + pifTOTALS3TM3arrayRAND[m];
                yTOTALS3TM4 = yTOTALS3TM4 + pifTOTALS3TM4arrayRAND[m];
                yTOTALS3TM5 = yTOTALS3TM5 + pifTOTALS3TM5arrayRAND[m];
                yTOTALS3TM7 = yTOTALS3TM7 + pifTOTALS3TM7arrayRAND[m];
                
                yQuadTOTALS3TM1 = (yQuadTOTALS3TM1 + (pifTOTALS3TM1arrayRAND[m]^2));
                yQuadTOTALS3TM2 = (yQuadTOTALS3TM2 + (pifTOTALS3TM2arrayRAND[m]^2));
                yQuadTOTALS3TM3 = (yQuadTOTALS3TM3 + (pifTOTALS3TM3arrayRAND[m]^2));
                yQuadTOTALS3TM4 = (yQuadTOTALS3TM4 + (pifTOTALS3TM4arrayRAND[m]^2));
                yQuadTOTALS3TM5 = (yQuadTOTALS3TM5 + (pifTOTALS3TM5arrayRAND[m]^2));
                yQuadTOTALS3TM7 = (yQuadTOTALS3TM7 + (pifTOTALS3TM7arrayRAND[m]^2));
    
                xyTOTALS3TM1 = (xyTOTALS3TM1 + (pifTOTALS1ETM1arrayRAND[m] * pifTOTALS3TM1arrayRAND[m]));
                xyTOTALS3TM2 = (xyTOTALS3TM2 + (pifTOTALS1ETM2arrayRAND[m] * pifTOTALS3TM2arrayRAND[m]));
                xyTOTALS3TM3 = (xyTOTALS3TM3 + (pifTOTALS1ETM3arrayRAND[m] * pifTOTALS3TM3arrayRAND[m]));
                xyTOTALS3TM4 = (xyTOTALS3TM4 + (pifTOTALS1ETM4arrayRAND[m] * pifTOTALS3TM4arrayRAND[m]));
                xyTOTALS3TM5 = (xyTOTALS3TM5 + (pifTOTALS1ETM5arrayRAND[m] * pifTOTALS3TM5arrayRAND[m]));
                xyTOTALS3TM7 = (xyTOTALS3TM7 + (pifTOTALS1ETM7arrayRAND[m] * pifTOTALS3TM7arrayRAND[m]));
            }	
            
            xAritTOTALS3TM1 = xTOTALS3TM1 / minPifVAL;
            xAritTOTALS3TM2 = xTOTALS3TM2 / minPifVAL;
            xAritTOTALS3TM3 = xTOTALS3TM3 / minPifVAL;
            xAritTOTALS3TM4 = xTOTALS3TM4 / minPifVAL;
            xAritTOTALS3TM5 = xTOTALS3TM5 / minPifVAL;
            xAritTOTALS3TM7 = xTOTALS3TM7 / minPifVAL;
    
            yAritTOTALS3TM1 = yTOTALS3TM1 / minPifVAL;
            yAritTOTALS3TM2 = yTOTALS3TM2 / minPifVAL;
            yAritTOTALS3TM3 = yTOTALS3TM3 / minPifVAL;
            yAritTOTALS3TM4 = yTOTALS3TM4 / minPifVAL;
            yAritTOTALS3TM5 = yTOTALS3TM5 / minPifVAL;
            yAritTOTALS3TM7 = yTOTALS3TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3TM1 = (xxAritQuadTOTALS3TM1 + ((pifTOTALS1ETM1arrayRAND[n] - xAritTOTALS3TM1)^2));
                xxAritQuadTOTALS3TM2 = (xxAritQuadTOTALS3TM2 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS3TM2)^2));
                xxAritQuadTOTALS3TM3 = (xxAritQuadTOTALS3TM3 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS3TM3)^2));
                xxAritQuadTOTALS3TM4 = (xxAritQuadTOTALS3TM4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS3TM4)^2));
                xxAritQuadTOTALS3TM5 = (xxAritQuadTOTALS3TM5 + ((pifTOTALS1ETM5arrayRAND[n] - xAritTOTALS3TM5)^2));
                xxAritQuadTOTALS3TM7 = (xxAritQuadTOTALS3TM7 + ((pifTOTALS1ETM7arrayRAND[n] - xAritTOTALS3TM7)^2));
    
                yyAritQuadTOTALS3TM1 = (yyAritQuadTOTALS3TM1 + ((pifTOTALS3TM1arrayRAND[n] - yAritTOTALS3TM1)^2));
                yyAritQuadTOTALS3TM2 = (yyAritQuadTOTALS3TM2 + ((pifTOTALS3TM2arrayRAND[n] - yAritTOTALS3TM2)^2));
                yyAritQuadTOTALS3TM3 = (yyAritQuadTOTALS3TM3 + ((pifTOTALS3TM3arrayRAND[n] - yAritTOTALS3TM3)^2));
                yyAritQuadTOTALS3TM4 = (yyAritQuadTOTALS3TM4 + ((pifTOTALS3TM4arrayRAND[n] - yAritTOTALS3TM4)^2));
                yyAritQuadTOTALS3TM5 = (yyAritQuadTOTALS3TM5 + ((pifTOTALS3TM5arrayRAND[n] - yAritTOTALS3TM5)^2));
                yyAritQuadTOTALS3TM7 = (yyAritQuadTOTALS3TM7 + ((pifTOTALS3TM7arrayRAND[n] - yAritTOTALS3TM7)^2));
    
                qXYTOTALS3TM1 = (qXYTOTALS3TM1 + ((pifTOTALS1ETM1arrayRAND[n] - xAritTOTALS3TM1) * (pifTOTALS3TM1arrayRAND[n] - yAritTOTALS3TM1)));
                qXYTOTALS3TM2 = (qXYTOTALS3TM2 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS3TM2) * (pifTOTALS3TM2arrayRAND[n] - yAritTOTALS3TM2)));
                qXYTOTALS3TM3 = (qXYTOTALS3TM3 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS3TM3) * (pifTOTALS3TM3arrayRAND[n] - yAritTOTALS3TM3)));
                qXYTOTALS3TM4 = (qXYTOTALS3TM4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS3TM4) * (pifTOTALS3TM4arrayRAND[n] - yAritTOTALS3TM4)));
                qXYTOTALS3TM5 = (qXYTOTALS3TM5 + ((pifTOTALS1ETM5arrayRAND[n] - xAritTOTALS3TM5) * (pifTOTALS3TM5arrayRAND[n] - yAritTOTALS3TM5)));
                qXYTOTALS3TM7 = (qXYTOTALS3TM7 + ((pifTOTALS1ETM7arrayRAND[n] - xAritTOTALS3TM7) * (pifTOTALS3TM7arrayRAND[n] - yAritTOTALS3TM7)));
            }
        
            aTOTALS3TM1 = (((xQuadTOTALS3TM1 * yTOTALS3TM1) - (xTOTALS3TM1 * xyTOTALS3TM1)) / ((minPifVAL * xQuadTOTALS3TM1) - (xTOTALS3TM1^2)));
            aTOTALS3TM2 = (((xQuadTOTALS3TM2 * yTOTALS3TM2) - (xTOTALS3TM2 * xyTOTALS3TM2)) / ((minPifVAL * xQuadTOTALS3TM2) - (xTOTALS3TM2^2)));
            aTOTALS3TM3 = (((xQuadTOTALS3TM3 * yTOTALS3TM3) - (xTOTALS3TM3 * xyTOTALS3TM3)) / ((minPifVAL * xQuadTOTALS3TM3) - (xTOTALS3TM3^2)));
            aTOTALS3TM4 = (((xQuadTOTALS3TM4 * yTOTALS3TM4) - (xTOTALS3TM4 * xyTOTALS3TM4)) / ((minPifVAL * xQuadTOTALS3TM4) - (xTOTALS3TM4^2)));
            aTOTALS3TM5 = (((xQuadTOTALS3TM5 * yTOTALS3TM5) - (xTOTALS3TM5 * xyTOTALS3TM5)) / ((minPifVAL * xQuadTOTALS3TM5) - (xTOTALS3TM5^2)));
            aTOTALS3TM7 = (((xQuadTOTALS3TM7 * yTOTALS3TM7) - (xTOTALS3TM7 * xyTOTALS3TM7)) / ((minPifVAL * xQuadTOTALS3TM7) - (xTOTALS3TM7^2)));
            
            bTOTALS3TM1 = qXYTOTALS3TM1 / xxAritQuadTOTALS3TM1;
            bTOTALS3TM2 = qXYTOTALS3TM2 / xxAritQuadTOTALS3TM2;
            bTOTALS3TM3 = qXYTOTALS3TM3 / xxAritQuadTOTALS3TM3;
            bTOTALS3TM4 = qXYTOTALS3TM4 / xxAritQuadTOTALS3TM4;
            bTOTALS3TM5 = qXYTOTALS3TM5 / xxAritQuadTOTALS3TM5;
            bTOTALS3TM7 = qXYTOTALS3TM7 / xxAritQuadTOTALS3TM7;
    
            rTOTALS3TM1 = (qXYTOTALS3TM1 / ((xxAritQuadTOTALS3TM1 * yyAritQuadTOTALS3TM1)^0.5));
            rTOTALS3TM2 = (qXYTOTALS3TM2 / ((xxAritQuadTOTALS3TM2 * yyAritQuadTOTALS3TM2)^0.5));
            rTOTALS3TM3 = (qXYTOTALS3TM3 / ((xxAritQuadTOTALS3TM3 * yyAritQuadTOTALS3TM3)^0.5));
            rTOTALS3TM4 = (qXYTOTALS3TM4 / ((xxAritQuadTOTALS3TM4 * yyAritQuadTOTALS3TM4)^0.5));
            rTOTALS3TM5 = (qXYTOTALS3TM5 / ((xxAritQuadTOTALS3TM5 * yyAritQuadTOTALS3TM5)^0.5));
            rTOTALS3TM7 = (qXYTOTALS3TM7 / ((xxAritQuadTOTALS3TM7 * yyAritQuadTOTALS3TM7)^0.5));
    
            rQuadTOTALS3TM1 = ((rTOTALS3TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3TM2 = ((rTOTALS3TM2^2) * 100);
            rQuadTOTALS3TM3 = ((rTOTALS3TM3^2) * 100);
            rQuadTOTALS3TM4 = ((rTOTALS3TM4^2) * 100);
            rQuadTOTALS3TM5 = ((rTOTALS3TM5^2) * 100);
            rQuadTOTALS3TM7 = ((rTOTALS3TM7^2) * 100);
        
            syxTOTALS3TM1 = (((yyAritQuadTOTALS3TM1 - ((qXYTOTALS3TM1^2) / xxAritQuadTOTALS3TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM2 = (((yyAritQuadTOTALS3TM2 - ((qXYTOTALS3TM2^2) / xxAritQuadTOTALS3TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM3 = (((yyAritQuadTOTALS3TM3 - ((qXYTOTALS3TM3^2) / xxAritQuadTOTALS3TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM4 = (((yyAritQuadTOTALS3TM4 - ((qXYTOTALS3TM4^2) / xxAritQuadTOTALS3TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM5 = (((yyAritQuadTOTALS3TM5 - ((qXYTOTALS3TM5^2) / xxAritQuadTOTALS3TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM7 = (((yyAritQuadTOTALS3TM7 - ((qXYTOTALS3TM7^2) / xxAritQuadTOTALS3TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3TM1 = (((syxTOTALS3TM1^2) / xxAritQuadTOTALS3TM1)^0.5);
            bStandTOTALS3TM2 = (((syxTOTALS3TM2^2) / xxAritQuadTOTALS3TM2)^0.5);
            bStandTOTALS3TM3 = (((syxTOTALS3TM3^2) / xxAritQuadTOTALS3TM3)^0.5);
            bStandTOTALS3TM4 = (((syxTOTALS3TM4^2) / xxAritQuadTOTALS3TM4)^0.5);
            bStandTOTALS3TM5 = (((syxTOTALS3TM5^2) / xxAritQuadTOTALS3TM5)^0.5);
            bStandTOTALS3TM7 = (((syxTOTALS3TM7^2) / xxAritQuadTOTALS3TM7)^0.5);
    
            aStandTOTALS3TM1 = (bStandTOTALS3TM1 * ((xQuadTOTALS3TM1 / minPifVAL)^0.5));
            aStandTOTALS3TM2 = (bStandTOTALS3TM2 * ((xQuadTOTALS3TM2 / minPifVAL)^0.5));
            aStandTOTALS3TM3 = (bStandTOTALS3TM3 * ((xQuadTOTALS3TM3 / minPifVAL)^0.5));
            aStandTOTALS3TM4 = (bStandTOTALS3TM4 * ((xQuadTOTALS3TM4 / minPifVAL)^0.5));
            aStandTOTALS3TM5 = (bStandTOTALS3TM5 * ((xQuadTOTALS3TM5 / minPifVAL)^0.5));
            aStandTOTALS3TM7 = (bStandTOTALS3TM7 * ((xQuadTOTALS3TM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM1, bTOTALS3TM1, rTOTALS3TM1, rQuadTOTALS3TM1, aStandTOTALS3TM1, bStandTOTALS3TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM2, bTOTALS3TM2, rTOTALS3TM2, rQuadTOTALS3TM2, aStandTOTALS3TM2, bStandTOTALS3TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM3, bTOTALS3TM3, rTOTALS3TM3, rQuadTOTALS3TM3, aStandTOTALS3TM3, bStandTOTALS3TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM4, bTOTALS3TM4, rTOTALS3TM4, rQuadTOTALS3TM4, aStandTOTALS3TM4, bStandTOTALS3TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM5, bTOTALS3TM5, rTOTALS3TM5, rQuadTOTALS3TM5, aStandTOTALS3TM5, bStandTOTALS3TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS3TM7, bTOTALS3TM7, rTOTALS3TM7, rQuadTOTALS3TM7, aStandTOTALS3TM7, bStandTOTALS3TM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS3TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS3TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS3TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS3TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS3TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS3TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS3TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT3TM1[i,j] = (aTOTALS3TM1 + (bTOTALS3TM1 * REFS3TM1[i,j]));
                    OUT3TM2[i,j] = (aTOTALS3TM2 + (bTOTALS3TM2 * REFS3TM2[i,j]));
                    OUT3TM3[i,j] = (aTOTALS3TM3 + (bTOTALS3TM3 * REFS3TM3[i,j]));
                    OUT3TM4[i,j] = (aTOTALS3TM4 + (bTOTALS3TM4 * REFS3TM4[i,j]));
                    OUT3TM5[i,j] = (aTOTALS3TM5 + (bTOTALS3TM5 * REFS3TM5[i,j]));
                    OUT3TM7[i,j] = (aTOTALS3TM7 + (bTOTALS3TM7 * REFS3TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3TM1);
        	CreatePyramid(OUT3TM2);
        	CreatePyramid(OUT3TM3);
        	CreatePyramid(OUT3TM4);
        	CreatePyramid(OUT3TM5);
        	CreatePyramid(OUT3TM7);
        
        	CreateHistogram(OUT3TM1);
        	CreateHistogram(OUT3TM2);
        	CreateHistogram(OUT3TM3);
        	CreateHistogram(OUT3TM4);
        	CreateHistogram(OUT3TM5);
        	CreateHistogram(OUT3TM7);
    
            CloseRaster(REFS3ETM1);
            CloseRaster(REFS3ETM2);
            CloseRaster(REFS3ETM3);
            CloseRaster(REFS3ETM4);
            CloseRaster(REFS3ETM5);
            CloseRaster(REFS3ETM7);
    
            CloseRaster(OUT3ETM1);
            CloseRaster(OUT3ETM2);
            CloseRaster(OUT3ETM3);
            CloseRaster(OUT3ETM4);
            CloseRaster(OUT3ETM5);
            CloseRaster(OUT3ETM7);
      
        	printf("Scene 3 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            { 
            numeric xAritTOTALS3MSS1, xAritTOTALS3MSS2, xAritTOTALS3MSS4;
            numeric yAritTOTALS3MSS1, yAritTOTALS3MSS2, yAritTOTALS3MSS4;
    
            numeric aTOTALS3MSS1, aTOTALS3MSS2, aTOTALS3MSS4;
            numeric bTOTALS3MSS1, bTOTALS3MSS2, bTOTALS3MSS4;
            numeric rTOTALS3MSS1, rTOTALS3MSS2, rTOTALS3MSS4;
            numeric rQuadTOTALS3MSS1, rQuadTOTALS3MSS2, rQuadTOTALS3MSS4;
            numeric syxTOTALS3MSS1, syxTOTALS3MSS2, syxTOTALS3MSS4;
            numeric bStandTOTALS3MSS1, bStandTOTALS3MSS2, bStandTOTALS3MSS4;
            numeric aStandTOTALS3MSS1, aStandTOTALS3MSS2, aStandTOTALS3MSS4;
    
            numeric xTOTALS3MSS1 = 0;
            numeric xTOTALS3MSS2 = 0;
            numeric xTOTALS3MSS4 = 0;
    
            numeric xQuadTOTALS3MSS1 = 0;
            numeric xQuadTOTALS3MSS2 = 0;
            numeric xQuadTOTALS3MSS4 = 0;
    
            numeric yTOTALS3MSS1 = 0;
            numeric yTOTALS3MSS2 = 0;
            numeric yTOTALS3MSS4 = 0;
    
            numeric yQuadTOTALS3MSS1 = 0;
            numeric yQuadTOTALS3MSS2 = 0;
            numeric yQuadTOTALS3MSS4 = 0;
    
            numeric xyTOTALS3MSS1 = 0;
            numeric xyTOTALS3MSS2 = 0;
            numeric xyTOTALS3MSS4 = 0;
    
            numeric xxAritQuadTOTALS3MSS1 = 0;
            numeric xxAritQuadTOTALS3MSS2 = 0;
            numeric xxAritQuadTOTALS3MSS4 = 0;
    
            numeric yyAritQuadTOTALS3MSS1 = 0;
            numeric yyAritQuadTOTALS3MSS2 = 0;
            numeric yyAritQuadTOTALS3MSS4 = 0;
    
            numeric qXYTOTALS3MSS1 = 0;
            numeric qXYTOTALS3MSS2 = 0;
            numeric qXYTOTALS3MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS3MSS1 = xTOTALS3MSS1 + pifTOTALS1ETM2arrayRAND[m];
                xTOTALS3MSS2 = xTOTALS3MSS2 + pifTOTALS1ETM3arrayRAND[m];
                xTOTALS3MSS4 = xTOTALS3MSS4 + pifTOTALS1ETM4arrayRAND[m];
    
                xQuadTOTALS3MSS1 = (xQuadTOTALS3MSS1 + (pifTOTALS1ETM2arrayRAND[m]^2));
                xQuadTOTALS3MSS2 = (xQuadTOTALS3MSS2 + (pifTOTALS1ETM3arrayRAND[m]^2));
                xQuadTOTALS3MSS4 = (xQuadTOTALS3MSS4 + (pifTOTALS1ETM4arrayRAND[m]^2));
    
                yTOTALS3MSS1 = yTOTALS3MSS1 + pifTOTALS3MSS1arrayRAND[m];
                yTOTALS3MSS2 = yTOTALS3MSS2 + pifTOTALS3MSS2arrayRAND[m];
                yTOTALS3MSS4 = yTOTALS3MSS4 + pifTOTALS3MSS4arrayRAND[m];
                
                yQuadTOTALS3MSS1 = (yQuadTOTALS3MSS1 + (pifTOTALS3MSS1arrayRAND[m]^2));
                yQuadTOTALS3MSS2 = (yQuadTOTALS3MSS2 + (pifTOTALS3MSS2arrayRAND[m]^2));
                yQuadTOTALS3MSS4 = (yQuadTOTALS3MSS4 + (pifTOTALS3MSS4arrayRAND[m]^2));
    
                xyTOTALS3MSS1 = (xyTOTALS3MSS1 + (pifTOTALS1ETM2arrayRAND[m] * pifTOTALS3MSS1arrayRAND[m]));
                xyTOTALS3MSS2 = (xyTOTALS3MSS2 + (pifTOTALS1ETM3arrayRAND[m] * pifTOTALS3MSS2arrayRAND[m]));
                xyTOTALS3MSS4 = (xyTOTALS3MSS4 + (pifTOTALS1ETM4arrayRAND[m] * pifTOTALS3MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS3MSS1 = xTOTALS3MSS1 / minPifVAL;
            xAritTOTALS3MSS2 = xTOTALS3MSS2 / minPifVAL;
            xAritTOTALS3MSS4 = xTOTALS3MSS4 / minPifVAL;
    
            yAritTOTALS3MSS1 = yTOTALS3MSS1 / minPifVAL;
            yAritTOTALS3MSS2 = yTOTALS3MSS2 / minPifVAL;
            yAritTOTALS3MSS4 = yTOTALS3MSS4 / minPifVAL;
            
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3MSS1 = (xxAritQuadTOTALS3MSS1 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS3MSS1)^2));
                xxAritQuadTOTALS3MSS2 = (xxAritQuadTOTALS3MSS2 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS3MSS2)^2));
                xxAritQuadTOTALS3MSS4 = (xxAritQuadTOTALS3MSS4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS3MSS4)^2));
    
                yyAritQuadTOTALS3MSS1 = (yyAritQuadTOTALS3MSS1 + ((pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)^2));
                yyAritQuadTOTALS3MSS2 = (yyAritQuadTOTALS3MSS2 + ((pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)^2));
                yyAritQuadTOTALS3MSS4 = (yyAritQuadTOTALS3MSS4 + ((pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)^2));
    
                qXYTOTALS3MSS1 = (qXYTOTALS3MSS1 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS3MSS1) * (pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)));
                qXYTOTALS3MSS2 = (qXYTOTALS3MSS2 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS3MSS2) * (pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)));
                qXYTOTALS3MSS4 = (qXYTOTALS3MSS4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS3MSS4) * (pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)));
            }
        
            aTOTALS3MSS1 = (((xQuadTOTALS3MSS1 * yTOTALS3MSS1) - (xTOTALS3MSS1 * xyTOTALS3MSS1)) / ((minPifVAL * xQuadTOTALS3MSS1) - (xTOTALS3MSS1^2)));
            aTOTALS3MSS2 = (((xQuadTOTALS3MSS2 * yTOTALS3MSS2) - (xTOTALS3MSS2 * xyTOTALS3MSS2)) / ((minPifVAL * xQuadTOTALS3MSS2) - (xTOTALS3MSS2^2)));
            aTOTALS3MSS4 = (((xQuadTOTALS3MSS4 * yTOTALS3MSS4) - (xTOTALS3MSS4 * xyTOTALS3MSS4)) / ((minPifVAL * xQuadTOTALS3MSS4) - (xTOTALS3MSS4^2)));
            
            bTOTALS3MSS1 = qXYTOTALS3MSS1 / xxAritQuadTOTALS3MSS1;
            bTOTALS3MSS2 = qXYTOTALS3MSS2 / xxAritQuadTOTALS3MSS2;
            bTOTALS3MSS4 = qXYTOTALS3MSS4 / xxAritQuadTOTALS3MSS4;
    
            rTOTALS3MSS1 = (qXYTOTALS3MSS1 / ((xxAritQuadTOTALS3MSS1 * yyAritQuadTOTALS3MSS1)^0.5));
            rTOTALS3MSS2 = (qXYTOTALS3MSS2 / ((xxAritQuadTOTALS3MSS2 * yyAritQuadTOTALS3MSS2)^0.5));
            rTOTALS3MSS4 = (qXYTOTALS3MSS4 / ((xxAritQuadTOTALS3MSS4 * yyAritQuadTOTALS3MSS4)^0.5));
    
            rQuadTOTALS3MSS1 = ((rTOTALS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3MSS2 = ((rTOTALS3MSS2^2) * 100);
            rQuadTOTALS3MSS4 = ((rTOTALS3MSS4^2) * 100);
        
            syxTOTALS3MSS1 = (((yyAritQuadTOTALS3MSS1 - ((qXYTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS2 = (((yyAritQuadTOTALS3MSS2 - ((qXYTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS4 = (((yyAritQuadTOTALS3MSS4 - ((qXYTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3MSS1 = (((syxTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)^0.5);
            bStandTOTALS3MSS2 = (((syxTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)^0.5);
            bStandTOTALS3MSS4 = (((syxTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)^0.5);
    
            aStandTOTALS3MSS1 = (bStandTOTALS3MSS1 * ((xQuadTOTALS3MSS1 / minPifVAL)^0.5));
            aStandTOTALS3MSS2 = (bStandTOTALS3MSS2 * ((xQuadTOTALS3MSS2 / minPifVAL)^0.5));
            aStandTOTALS3MSS4 = (bStandTOTALS3MSS4 * ((xQuadTOTALS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS1, bTOTALS3MSS1, rTOTALS3MSS1, rQuadTOTALS3MSS1, aStandTOTALS3MSS1, bStandTOTALS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS2, bTOTALS3MSS2, rTOTALS3MSS2, rQuadTOTALS3MSS2, aStandTOTALS3MSS2, bStandTOTALS3MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS4, bTOTALS3MSS4, rTOTALS3MSS4, rQuadTOTALS3MSS4, aStandTOTALS3MSS4, bStandTOTALS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS3MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS3MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS2arrayRAND[minPifVAL]);
        
            printf("MSS4: %12f ", pifTOTALS3MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aTOTALS3MSS1 + (bTOTALS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aTOTALS3MSS2 + (bTOTALS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = REFS3MSS3[i,j];
                    OUT3MSS4[i,j] = (aTOTALS3MSS4 + (bTOTALS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT3MSS1);
        	CreatePyramid(OUT3MSS2);
        	CreatePyramid(OUT3MSS3);
        	CreatePyramid(OUT3MSS4);
        
        	CreateHistogram(OUT3MSS1);
        	CreateHistogram(OUT3MSS2);
        	CreateHistogram(OUT3MSS3);
        	CreateHistogram(OUT3MSS4);
            CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
                    
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors4 == 7 )
            {
            numeric xAritTOTALS4ETM1, xAritTOTALS4ETM2, xAritTOTALS4ETM3, xAritTOTALS4ETM4, xAritTOTALS4ETM5, xAritTOTALS4ETM7;
            numeric yAritTOTALS4ETM1, yAritTOTALS4ETM2, yAritTOTALS4ETM3, yAritTOTALS4ETM4, yAritTOTALS4ETM5, yAritTOTALS4ETM7;
    
            numeric aTOTALS4ETM1, aTOTALS4ETM2, aTOTALS4ETM3, aTOTALS4ETM4, aTOTALS4ETM5, aTOTALS4ETM7;
            numeric bTOTALS4ETM1, bTOTALS4ETM2, bTOTALS4ETM3, bTOTALS4ETM4, bTOTALS4ETM5, bTOTALS4ETM7;
            numeric rTOTALS4ETM1, rTOTALS4ETM2, rTOTALS4ETM3, rTOTALS4ETM4, rTOTALS4ETM5, rTOTALS4ETM7;
            numeric rQuadTOTALS4ETM1, rQuadTOTALS4ETM2, rQuadTOTALS4ETM3, rQuadTOTALS4ETM4, rQuadTOTALS4ETM5, rQuadTOTALS4ETM7;
            numeric syxTOTALS4ETM1, syxTOTALS4ETM2, syxTOTALS4ETM3, syxTOTALS4ETM4, syxTOTALS4ETM5, syxTOTALS4ETM7;
            numeric bStandTOTALS4ETM1, bStandTOTALS4ETM2, bStandTOTALS4ETM3, bStandTOTALS4ETM4, bStandTOTALS4ETM5, bStandTOTALS4ETM7;
            numeric aStandTOTALS4ETM1, aStandTOTALS4ETM2, aStandTOTALS4ETM3, aStandTOTALS4ETM4, aStandTOTALS4ETM5, aStandTOTALS4ETM7;
    
            numeric xTOTALS4ETM1 = 0;
            numeric xTOTALS4ETM2 = 0;
            numeric xTOTALS4ETM3 = 0;
            numeric xTOTALS4ETM4 = 0;
            numeric xTOTALS4ETM5 = 0;
            numeric xTOTALS4ETM7 = 0;
    
            numeric xQuadTOTALS4ETM1 = 0;
            numeric xQuadTOTALS4ETM2 = 0;
            numeric xQuadTOTALS4ETM3 = 0;
            numeric xQuadTOTALS4ETM4 = 0;
            numeric xQuadTOTALS4ETM5 = 0;
            numeric xQuadTOTALS4ETM7 = 0;
    
            numeric yTOTALS4ETM1 = 0;
            numeric yTOTALS4ETM2 = 0;
            numeric yTOTALS4ETM3 = 0;
            numeric yTOTALS4ETM4 = 0;
            numeric yTOTALS4ETM5 = 0;
            numeric yTOTALS4ETM7 = 0;
    
            numeric yQuadTOTALS4ETM1 = 0;
            numeric yQuadTOTALS4ETM2 = 0;
            numeric yQuadTOTALS4ETM3 = 0;
            numeric yQuadTOTALS4ETM4 = 0;
            numeric yQuadTOTALS4ETM5 = 0;
            numeric yQuadTOTALS4ETM7 = 0;
    
            numeric xyTOTALS4ETM1 = 0;
            numeric xyTOTALS4ETM2 = 0;
            numeric xyTOTALS4ETM3 = 0;
            numeric xyTOTALS4ETM4 = 0;
            numeric xyTOTALS4ETM5 = 0;
            numeric xyTOTALS4ETM7 = 0;
    
            numeric xxAritQuadTOTALS4ETM1 = 0;
            numeric xxAritQuadTOTALS4ETM2 = 0;
            numeric xxAritQuadTOTALS4ETM3 = 0;
            numeric xxAritQuadTOTALS4ETM4 = 0;
            numeric xxAritQuadTOTALS4ETM5 = 0;
            numeric xxAritQuadTOTALS4ETM7 = 0;
    
            numeric yyAritQuadTOTALS4ETM1 = 0;
            numeric yyAritQuadTOTALS4ETM2 = 0;
            numeric yyAritQuadTOTALS4ETM3 = 0;
            numeric yyAritQuadTOTALS4ETM4 = 0;
            numeric yyAritQuadTOTALS4ETM5 = 0;
            numeric yyAritQuadTOTALS4ETM7 = 0;
    
            numeric qXYTOTALS4ETM1 = 0;
            numeric qXYTOTALS4ETM2 = 0;
            numeric qXYTOTALS4ETM3 = 0;
            numeric qXYTOTALS4ETM4 = 0;
            numeric qXYTOTALS4ETM5 = 0;
            numeric qXYTOTALS4ETM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS4ETM1 = xTOTALS4ETM1 + pifTOTALS1ETM1arrayRAND[m];
                xTOTALS4ETM2 = xTOTALS4ETM2 + pifTOTALS1ETM2arrayRAND[m];
                xTOTALS4ETM3 = xTOTALS4ETM3 + pifTOTALS1ETM3arrayRAND[m];
                xTOTALS4ETM4 = xTOTALS4ETM4 + pifTOTALS1ETM4arrayRAND[m];
                xTOTALS4ETM5 = xTOTALS4ETM5 + pifTOTALS1ETM5arrayRAND[m];
                xTOTALS4ETM7 = xTOTALS4ETM7 + pifTOTALS1ETM7arrayRAND[m];
    
                xQuadTOTALS4ETM1 = (xQuadTOTALS4ETM1 + (pifTOTALS1ETM1arrayRAND[m]^2));
                xQuadTOTALS4ETM2 = (xQuadTOTALS4ETM2 + (pifTOTALS1ETM2arrayRAND[m]^2));
                xQuadTOTALS4ETM3 = (xQuadTOTALS4ETM3 + (pifTOTALS1ETM3arrayRAND[m]^2));
                xQuadTOTALS4ETM4 = (xQuadTOTALS4ETM4 + (pifTOTALS1ETM4arrayRAND[m]^2));
                xQuadTOTALS4ETM5 = (xQuadTOTALS4ETM5 + (pifTOTALS1ETM5arrayRAND[m]^2));
                xQuadTOTALS4ETM7 = (xQuadTOTALS4ETM7 + (pifTOTALS1ETM7arrayRAND[m]^2));
    
                yTOTALS4ETM1 = yTOTALS4ETM1 + pifTOTALS4ETM1arrayRAND[m];
                yTOTALS4ETM2 = yTOTALS4ETM2 + pifTOTALS4ETM2arrayRAND[m];
                yTOTALS4ETM3 = yTOTALS4ETM3 + pifTOTALS4ETM3arrayRAND[m];
                yTOTALS4ETM4 = yTOTALS4ETM4 + pifTOTALS4ETM4arrayRAND[m];
                yTOTALS4ETM5 = yTOTALS4ETM5 + pifTOTALS4ETM5arrayRAND[m];
                yTOTALS4ETM7 = yTOTALS4ETM7 + pifTOTALS4ETM7arrayRAND[m];
                
                yQuadTOTALS4ETM1 = (yQuadTOTALS4ETM1 + (pifTOTALS4ETM1arrayRAND[m]^2));
                yQuadTOTALS4ETM2 = (yQuadTOTALS4ETM2 + (pifTOTALS4ETM2arrayRAND[m]^2));
                yQuadTOTALS4ETM3 = (yQuadTOTALS4ETM3 + (pifTOTALS4ETM3arrayRAND[m]^2));
                yQuadTOTALS4ETM4 = (yQuadTOTALS4ETM4 + (pifTOTALS4ETM4arrayRAND[m]^2));
                yQuadTOTALS4ETM5 = (yQuadTOTALS4ETM5 + (pifTOTALS4ETM5arrayRAND[m]^2));
                yQuadTOTALS4ETM7 = (yQuadTOTALS4ETM7 + (pifTOTALS4ETM7arrayRAND[m]^2));
    
                xyTOTALS4ETM1 = (xyTOTALS4ETM1 + (pifTOTALS1ETM1arrayRAND[m] * pifTOTALS4ETM1arrayRAND[m]));
                xyTOTALS4ETM2 = (xyTOTALS4ETM2 + (pifTOTALS1ETM2arrayRAND[m] * pifTOTALS4ETM2arrayRAND[m]));
                xyTOTALS4ETM3 = (xyTOTALS4ETM3 + (pifTOTALS1ETM3arrayRAND[m] * pifTOTALS4ETM3arrayRAND[m]));
                xyTOTALS4ETM4 = (xyTOTALS4ETM4 + (pifTOTALS1ETM4arrayRAND[m] * pifTOTALS4ETM4arrayRAND[m]));
                xyTOTALS4ETM5 = (xyTOTALS4ETM5 + (pifTOTALS1ETM5arrayRAND[m] * pifTOTALS4ETM5arrayRAND[m]));
                xyTOTALS4ETM7 = (xyTOTALS4ETM7 + (pifTOTALS1ETM7arrayRAND[m] * pifTOTALS4ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS4ETM1 = xTOTALS4ETM1 / minPifVAL;
            xAritTOTALS4ETM2 = xTOTALS4ETM2 / minPifVAL;
            xAritTOTALS4ETM3 = xTOTALS4ETM3 / minPifVAL;
            xAritTOTALS4ETM4 = xTOTALS4ETM4 / minPifVAL;
            xAritTOTALS4ETM5 = xTOTALS4ETM5 / minPifVAL;
            xAritTOTALS4ETM7 = xTOTALS4ETM7 / minPifVAL;
    
            yAritTOTALS4ETM1 = yTOTALS4ETM1 / minPifVAL;
            yAritTOTALS4ETM2 = yTOTALS4ETM2 / minPifVAL;
            yAritTOTALS4ETM3 = yTOTALS4ETM3 / minPifVAL;
            yAritTOTALS4ETM4 = yTOTALS4ETM4 / minPifVAL;
            yAritTOTALS4ETM5 = yTOTALS4ETM5 / minPifVAL;
            yAritTOTALS4ETM7 = yTOTALS4ETM7 / minPifVAL;
            
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4ETM1 = (xxAritQuadTOTALS4ETM1 + ((pifTOTALS1ETM1arrayRAND[n] - xAritTOTALS4ETM1)^2));
                xxAritQuadTOTALS4ETM2 = (xxAritQuadTOTALS4ETM2 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS4ETM2)^2));
                xxAritQuadTOTALS4ETM3 = (xxAritQuadTOTALS4ETM3 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS4ETM3)^2));
                xxAritQuadTOTALS4ETM4 = (xxAritQuadTOTALS4ETM4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS4ETM4)^2));
                xxAritQuadTOTALS4ETM5 = (xxAritQuadTOTALS4ETM5 + ((pifTOTALS1ETM5arrayRAND[n] - xAritTOTALS4ETM5)^2));
                xxAritQuadTOTALS4ETM7 = (xxAritQuadTOTALS4ETM7 + ((pifTOTALS1ETM7arrayRAND[n] - xAritTOTALS4ETM7)^2));
    
                yyAritQuadTOTALS4ETM1 = (yyAritQuadTOTALS4ETM1 + ((pifTOTALS4ETM1arrayRAND[n] - yAritTOTALS4ETM1)^2));
                yyAritQuadTOTALS4ETM2 = (yyAritQuadTOTALS4ETM2 + ((pifTOTALS4ETM2arrayRAND[n] - yAritTOTALS4ETM2)^2));
                yyAritQuadTOTALS4ETM3 = (yyAritQuadTOTALS4ETM3 + ((pifTOTALS4ETM3arrayRAND[n] - yAritTOTALS4ETM3)^2));
                yyAritQuadTOTALS4ETM4 = (yyAritQuadTOTALS4ETM4 + ((pifTOTALS4ETM4arrayRAND[n] - yAritTOTALS4ETM4)^2));
                yyAritQuadTOTALS4ETM5 = (yyAritQuadTOTALS4ETM5 + ((pifTOTALS4ETM5arrayRAND[n] - yAritTOTALS4ETM5)^2));
                yyAritQuadTOTALS4ETM7 = (yyAritQuadTOTALS4ETM7 + ((pifTOTALS4ETM7arrayRAND[n] - yAritTOTALS4ETM7)^2));
    
                qXYTOTALS4ETM1 = (qXYTOTALS4ETM1 + ((pifTOTALS1ETM1arrayRAND[n] - xAritTOTALS4ETM1) * (pifTOTALS4ETM1arrayRAND[n] - yAritTOTALS4ETM1)));
                qXYTOTALS4ETM2 = (qXYTOTALS4ETM2 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS4ETM2) * (pifTOTALS4ETM2arrayRAND[n] - yAritTOTALS4ETM2)));
                qXYTOTALS4ETM3 = (qXYTOTALS4ETM3 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS4ETM3) * (pifTOTALS4ETM3arrayRAND[n] - yAritTOTALS4ETM3)));
                qXYTOTALS4ETM4 = (qXYTOTALS4ETM4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS4ETM4) * (pifTOTALS4ETM4arrayRAND[n] - yAritTOTALS4ETM4)));
                qXYTOTALS4ETM5 = (qXYTOTALS4ETM5 + ((pifTOTALS1ETM5arrayRAND[n] - xAritTOTALS4ETM5) * (pifTOTALS4ETM5arrayRAND[n] - yAritTOTALS4ETM5)));
                qXYTOTALS4ETM7 = (qXYTOTALS4ETM7 + ((pifTOTALS1ETM7arrayRAND[n] - xAritTOTALS4ETM7) * (pifTOTALS4ETM7arrayRAND[n] - yAritTOTALS4ETM7)));
            }
        
            aTOTALS4ETM1 = (((xQuadTOTALS4ETM1 * yTOTALS4ETM1) - (xTOTALS4ETM1 * xyTOTALS4ETM1)) / ((minPifVAL * xQuadTOTALS4ETM1) - (xTOTALS4ETM1^2)));
            aTOTALS4ETM2 = (((xQuadTOTALS4ETM2 * yTOTALS4ETM2) - (xTOTALS4ETM2 * xyTOTALS4ETM2)) / ((minPifVAL * xQuadTOTALS4ETM2) - (xTOTALS4ETM2^2)));
            aTOTALS4ETM3 = (((xQuadTOTALS4ETM3 * yTOTALS4ETM3) - (xTOTALS4ETM3 * xyTOTALS4ETM3)) / ((minPifVAL * xQuadTOTALS4ETM3) - (xTOTALS4ETM3^2)));
            aTOTALS4ETM4 = (((xQuadTOTALS4ETM4 * yTOTALS4ETM4) - (xTOTALS4ETM4 * xyTOTALS4ETM4)) / ((minPifVAL * xQuadTOTALS4ETM4) - (xTOTALS4ETM4^2)));
            aTOTALS4ETM5 = (((xQuadTOTALS4ETM5 * yTOTALS4ETM5) - (xTOTALS4ETM5 * xyTOTALS4ETM5)) / ((minPifVAL * xQuadTOTALS4ETM5) - (xTOTALS4ETM5^2)));
            aTOTALS4ETM7 = (((xQuadTOTALS4ETM7 * yTOTALS4ETM7) - (xTOTALS4ETM7 * xyTOTALS4ETM7)) / ((minPifVAL * xQuadTOTALS4ETM7) - (xTOTALS4ETM7^2)));
            
            bTOTALS4ETM1 = qXYTOTALS4ETM1 / xxAritQuadTOTALS4ETM1;
            bTOTALS4ETM2 = qXYTOTALS4ETM2 / xxAritQuadTOTALS4ETM2;
            bTOTALS4ETM3 = qXYTOTALS4ETM3 / xxAritQuadTOTALS4ETM3;
            bTOTALS4ETM4 = qXYTOTALS4ETM4 / xxAritQuadTOTALS4ETM4;
            bTOTALS4ETM5 = qXYTOTALS4ETM5 / xxAritQuadTOTALS4ETM5;
            bTOTALS4ETM7 = qXYTOTALS4ETM7 / xxAritQuadTOTALS4ETM7;
    
            rTOTALS4ETM1 = (qXYTOTALS4ETM1 / ((xxAritQuadTOTALS4ETM1 * yyAritQuadTOTALS4ETM1)^0.5));
            rTOTALS4ETM2 = (qXYTOTALS4ETM2 / ((xxAritQuadTOTALS4ETM2 * yyAritQuadTOTALS4ETM2)^0.5));
            rTOTALS4ETM3 = (qXYTOTALS4ETM3 / ((xxAritQuadTOTALS4ETM3 * yyAritQuadTOTALS4ETM3)^0.5));
            rTOTALS4ETM4 = (qXYTOTALS4ETM4 / ((xxAritQuadTOTALS4ETM4 * yyAritQuadTOTALS4ETM4)^0.5));
            rTOTALS4ETM5 = (qXYTOTALS4ETM5 / ((xxAritQuadTOTALS4ETM5 * yyAritQuadTOTALS4ETM5)^0.5));
            rTOTALS4ETM7 = (qXYTOTALS4ETM7 / ((xxAritQuadTOTALS4ETM7 * yyAritQuadTOTALS4ETM7)^0.5));
    
            rQuadTOTALS4ETM1 = ((rTOTALS4ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4ETM2 = ((rTOTALS4ETM2^2) * 100);
            rQuadTOTALS4ETM3 = ((rTOTALS4ETM3^2) * 100);
            rQuadTOTALS4ETM4 = ((rTOTALS4ETM4^2) * 100);
            rQuadTOTALS4ETM5 = ((rTOTALS4ETM5^2) * 100);
            rQuadTOTALS4ETM7 = ((rTOTALS4ETM7^2) * 100);
        
            syxTOTALS4ETM1 = (((yyAritQuadTOTALS4ETM1 - ((qXYTOTALS4ETM1^2) / xxAritQuadTOTALS4ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM2 = (((yyAritQuadTOTALS4ETM2 - ((qXYTOTALS4ETM2^2) / xxAritQuadTOTALS4ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM3 = (((yyAritQuadTOTALS4ETM3 - ((qXYTOTALS4ETM3^2) / xxAritQuadTOTALS4ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM4 = (((yyAritQuadTOTALS4ETM4 - ((qXYTOTALS4ETM4^2) / xxAritQuadTOTALS4ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM5 = (((yyAritQuadTOTALS4ETM5 - ((qXYTOTALS4ETM5^2) / xxAritQuadTOTALS4ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM7 = (((yyAritQuadTOTALS4ETM7 - ((qXYTOTALS4ETM7^2) / xxAritQuadTOTALS4ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4ETM1 = (((syxTOTALS4ETM1^2) / xxAritQuadTOTALS4ETM1)^0.5);
            bStandTOTALS4ETM2 = (((syxTOTALS4ETM2^2) / xxAritQuadTOTALS4ETM2)^0.5);
            bStandTOTALS4ETM3 = (((syxTOTALS4ETM3^2) / xxAritQuadTOTALS4ETM3)^0.5);
            bStandTOTALS4ETM4 = (((syxTOTALS4ETM4^2) / xxAritQuadTOTALS4ETM4)^0.5);
            bStandTOTALS4ETM5 = (((syxTOTALS4ETM5^2) / xxAritQuadTOTALS4ETM5)^0.5);
            bStandTOTALS4ETM7 = (((syxTOTALS4ETM7^2) / xxAritQuadTOTALS4ETM7)^0.5);
    
            aStandTOTALS4ETM1 = (bStandTOTALS4ETM1 * ((xQuadTOTALS4ETM1 / minPifVAL)^0.5));
            aStandTOTALS4ETM2 = (bStandTOTALS4ETM2 * ((xQuadTOTALS4ETM2 / minPifVAL)^0.5));
            aStandTOTALS4ETM3 = (bStandTOTALS4ETM3 * ((xQuadTOTALS4ETM3 / minPifVAL)^0.5));
            aStandTOTALS4ETM4 = (bStandTOTALS4ETM4 * ((xQuadTOTALS4ETM4 / minPifVAL)^0.5));
            aStandTOTALS4ETM5 = (bStandTOTALS4ETM5 * ((xQuadTOTALS4ETM5 / minPifVAL)^0.5));
            aStandTOTALS4ETM7 = (bStandTOTALS4ETM7 * ((xQuadTOTALS4ETM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM1, bTOTALS4ETM1, rTOTALS4ETM1, rQuadTOTALS4ETM1, aStandTOTALS4ETM1, bStandTOTALS4ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM2, bTOTALS4ETM2, rTOTALS4ETM2, rQuadTOTALS4ETM2, aStandTOTALS4ETM2, bStandTOTALS4ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM3, bTOTALS4ETM3, rTOTALS4ETM3, rQuadTOTALS4ETM3, aStandTOTALS4ETM3, bStandTOTALS4ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM4, bTOTALS4ETM4, rTOTALS4ETM4, rQuadTOTALS4ETM4, aStandTOTALS4ETM4, bStandTOTALS4ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM5, bTOTALS4ETM5, rTOTALS4ETM5, rQuadTOTALS4ETM5, aStandTOTALS4ETM5, bStandTOTALS4ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS4ETM7, bTOTALS4ETM7, rTOTALS4ETM7, rQuadTOTALS4ETM7, aStandTOTALS4ETM7, bStandTOTALS4ETM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS4ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS4ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS4ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS4ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS4ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS4ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS4ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT4ETM1[i,j] = (aTOTALS4ETM1 + (bTOTALS4ETM1 * REFS4ETM1[i,j]));
                    OUT4ETM2[i,j] = (aTOTALS4ETM2 + (bTOTALS4ETM2 * REFS4ETM2[i,j]));
                    OUT4ETM3[i,j] = (aTOTALS4ETM3 + (bTOTALS4ETM3 * REFS4ETM3[i,j]));
                    OUT4ETM4[i,j] = (aTOTALS4ETM4 + (bTOTALS4ETM4 * REFS4ETM4[i,j]));
                    OUT4ETM5[i,j] = (aTOTALS4ETM5 + (bTOTALS4ETM5 * REFS4ETM5[i,j]));
                    OUT4ETM7[i,j] = (aTOTALS4ETM7 + (bTOTALS4ETM7 * REFS4ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4ETM1);
        	CreatePyramid(OUT4ETM2);
        	CreatePyramid(OUT4ETM3);
        	CreatePyramid(OUT4ETM4);
        	CreatePyramid(OUT4ETM5);
        	CreatePyramid(OUT4ETM7);
        
        	CreateHistogram(OUT4ETM1);
        	CreateHistogram(OUT4ETM2);
        	CreateHistogram(OUT4ETM3);
        	CreateHistogram(OUT4ETM4);
        	CreateHistogram(OUT4ETM5);
        	CreateHistogram(OUT4ETM7);
        
        	CloseRaster(REFS4ETM1);
            CloseRaster(REFS4ETM2);
            CloseRaster(REFS4ETM3);
            CloseRaster(REFS4ETM4);
            CloseRaster(REFS4ETM5);
            CloseRaster(REFS4ETM7);
    
            CloseRaster(OUT4ETM1);
            CloseRaster(OUT4ETM2);
            CloseRaster(OUT4ETM3);
            CloseRaster(OUT4ETM4);
            CloseRaster(OUT4ETM5);
            CloseRaster(OUT4ETM7);            
        
        	printf("Scene 4 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors4 == 6 )
            {
            numeric xAritTOTALS4TM1, xAritTOTALS4TM2, xAritTOTALS4TM3, xAritTOTALS4TM4, xAritTOTALS4TM5, xAritTOTALS4TM7;
            numeric yAritTOTALS4TM1, yAritTOTALS4TM2, yAritTOTALS4TM3, yAritTOTALS4TM4, yAritTOTALS4TM5, yAritTOTALS4TM7;
    
            numeric aTOTALS4TM1, aTOTALS4TM2, aTOTALS4TM3, aTOTALS4TM4, aTOTALS4TM5, aTOTALS4TM7;
            numeric bTOTALS4TM1, bTOTALS4TM2, bTOTALS4TM3, bTOTALS4TM4, bTOTALS4TM5, bTOTALS4TM7;
            numeric rTOTALS4TM1, rTOTALS4TM2, rTOTALS4TM3, rTOTALS4TM4, rTOTALS4TM5, rTOTALS4TM7;
            numeric rQuadTOTALS4TM1, rQuadTOTALS4TM2, rQuadTOTALS4TM3, rQuadTOTALS4TM4, rQuadTOTALS4TM5, rQuadTOTALS4TM7;
            numeric syxTOTALS4TM1, syxTOTALS4TM2, syxTOTALS4TM3, syxTOTALS4TM4, syxTOTALS4TM5, syxTOTALS4TM7;
            numeric bStandTOTALS4TM1, bStandTOTALS4TM2, bStandTOTALS4TM3, bStandTOTALS4TM4, bStandTOTALS4TM5, bStandTOTALS4TM7;
            numeric aStandTOTALS4TM1, aStandTOTALS4TM2, aStandTOTALS4TM3, aStandTOTALS4TM4, aStandTOTALS4TM5, aStandTOTALS4TM7;
    
            numeric xTOTALS4TM1 = 0;
            numeric xTOTALS4TM2 = 0;
            numeric xTOTALS4TM3 = 0;
            numeric xTOTALS4TM4 = 0;
            numeric xTOTALS4TM5 = 0;
            numeric xTOTALS4TM7 = 0;
    
            numeric xQuadTOTALS4TM1 = 0;
            numeric xQuadTOTALS4TM2 = 0;
            numeric xQuadTOTALS4TM3 = 0;
            numeric xQuadTOTALS4TM4 = 0;
            numeric xQuadTOTALS4TM5 = 0;
            numeric xQuadTOTALS4TM7 = 0;
    
            numeric yTOTALS4TM1 = 0;
            numeric yTOTALS4TM2 = 0;
            numeric yTOTALS4TM3 = 0;
            numeric yTOTALS4TM4 = 0;
            numeric yTOTALS4TM5 = 0;
            numeric yTOTALS4TM7 = 0;
    
            numeric yQuadTOTALS4TM1 = 0;
            numeric yQuadTOTALS4TM2 = 0;
            numeric yQuadTOTALS4TM3 = 0;
            numeric yQuadTOTALS4TM4 = 0;
            numeric yQuadTOTALS4TM5 = 0;
            numeric yQuadTOTALS4TM7 = 0;
    
            numeric xyTOTALS4TM1 = 0;
            numeric xyTOTALS4TM2 = 0;
            numeric xyTOTALS4TM3 = 0;
            numeric xyTOTALS4TM4 = 0;
            numeric xyTOTALS4TM5 = 0;
            numeric xyTOTALS4TM7 = 0;
    
            numeric xxAritQuadTOTALS4TM1 = 0;
            numeric xxAritQuadTOTALS4TM2 = 0;
            numeric xxAritQuadTOTALS4TM3 = 0;
            numeric xxAritQuadTOTALS4TM4 = 0;
            numeric xxAritQuadTOTALS4TM5 = 0;
            numeric xxAritQuadTOTALS4TM7 = 0;
    
            numeric yyAritQuadTOTALS4TM1 = 0;
            numeric yyAritQuadTOTALS4TM2 = 0;
            numeric yyAritQuadTOTALS4TM3 = 0;
            numeric yyAritQuadTOTALS4TM4 = 0;
            numeric yyAritQuadTOTALS4TM5 = 0;
            numeric yyAritQuadTOTALS4TM7 = 0;
    
            numeric qXYTOTALS4TM1 = 0;
            numeric qXYTOTALS4TM2 = 0;
            numeric qXYTOTALS4TM3 = 0;
            numeric qXYTOTALS4TM4 = 0;
            numeric qXYTOTALS4TM5 = 0;
            numeric qXYTOTALS4TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS4TM1 = xTOTALS4TM1 + pifTOTALS1ETM1arrayRAND[m];
                xTOTALS4TM2 = xTOTALS4TM2 + pifTOTALS1ETM2arrayRAND[m];
                xTOTALS4TM3 = xTOTALS4TM3 + pifTOTALS1ETM3arrayRAND[m];
                xTOTALS4TM4 = xTOTALS4TM4 + pifTOTALS1ETM4arrayRAND[m];
                xTOTALS4TM5 = xTOTALS4TM5 + pifTOTALS1ETM5arrayRAND[m];
                xTOTALS4TM7 = xTOTALS4TM7 + pifTOTALS1ETM7arrayRAND[m];
    
                xQuadTOTALS4TM1 = (xQuadTOTALS4TM1 + (pifTOTALS1ETM1arrayRAND[m]^2));
                xQuadTOTALS4TM2 = (xQuadTOTALS4TM2 + (pifTOTALS1ETM2arrayRAND[m]^2));
                xQuadTOTALS4TM3 = (xQuadTOTALS4TM3 + (pifTOTALS1ETM3arrayRAND[m]^2));
                xQuadTOTALS4TM4 = (xQuadTOTALS4TM4 + (pifTOTALS1ETM4arrayRAND[m]^2));
                xQuadTOTALS4TM5 = (xQuadTOTALS4TM5 + (pifTOTALS1ETM5arrayRAND[m]^2));
                xQuadTOTALS4TM7 = (xQuadTOTALS4TM7 + (pifTOTALS1ETM7arrayRAND[m]^2));
    
                yTOTALS4TM1 = yTOTALS4TM1 + pifTOTALS4TM1arrayRAND[m];
                yTOTALS4TM2 = yTOTALS4TM2 + pifTOTALS4TM2arrayRAND[m];
                yTOTALS4TM3 = yTOTALS4TM3 + pifTOTALS4TM3arrayRAND[m];
                yTOTALS4TM4 = yTOTALS4TM4 + pifTOTALS4TM4arrayRAND[m];
                yTOTALS4TM5 = yTOTALS4TM5 + pifTOTALS4TM5arrayRAND[m];
                yTOTALS4TM7 = yTOTALS4TM7 + pifTOTALS4TM7arrayRAND[m];
                
                yQuadTOTALS4TM1 = (yQuadTOTALS4TM1 + (pifTOTALS4TM1arrayRAND[m]^2));
                yQuadTOTALS4TM2 = (yQuadTOTALS4TM2 + (pifTOTALS4TM2arrayRAND[m]^2));
                yQuadTOTALS4TM3 = (yQuadTOTALS4TM3 + (pifTOTALS4TM3arrayRAND[m]^2));
                yQuadTOTALS4TM4 = (yQuadTOTALS4TM4 + (pifTOTALS4TM4arrayRAND[m]^2));
                yQuadTOTALS4TM5 = (yQuadTOTALS4TM5 + (pifTOTALS4TM5arrayRAND[m]^2));
                yQuadTOTALS4TM7 = (yQuadTOTALS4TM7 + (pifTOTALS4TM7arrayRAND[m]^2));
    
                xyTOTALS4TM1 = (xyTOTALS4TM1 + (pifTOTALS1ETM1arrayRAND[m] * pifTOTALS4TM1arrayRAND[m]));
                xyTOTALS4TM2 = (xyTOTALS4TM2 + (pifTOTALS1ETM2arrayRAND[m] * pifTOTALS4TM2arrayRAND[m]));
                xyTOTALS4TM3 = (xyTOTALS4TM3 + (pifTOTALS1ETM3arrayRAND[m] * pifTOTALS4TM3arrayRAND[m]));
                xyTOTALS4TM4 = (xyTOTALS4TM4 + (pifTOTALS1ETM4arrayRAND[m] * pifTOTALS4TM4arrayRAND[m]));
                xyTOTALS4TM5 = (xyTOTALS4TM5 + (pifTOTALS1ETM5arrayRAND[m] * pifTOTALS4TM5arrayRAND[m]));
                xyTOTALS4TM7 = (xyTOTALS4TM7 + (pifTOTALS1ETM7arrayRAND[m] * pifTOTALS4TM7arrayRAND[m]));
            }	
            
            xAritTOTALS4TM1 = xTOTALS4TM1 / minPifVAL;
            xAritTOTALS4TM2 = xTOTALS4TM2 / minPifVAL;
            xAritTOTALS4TM3 = xTOTALS4TM3 / minPifVAL;
            xAritTOTALS4TM4 = xTOTALS4TM4 / minPifVAL;
            xAritTOTALS4TM5 = xTOTALS4TM5 / minPifVAL;
            xAritTOTALS4TM7 = xTOTALS4TM7 / minPifVAL;
    
            yAritTOTALS4TM1 = yTOTALS4TM1 / minPifVAL;
            yAritTOTALS4TM2 = yTOTALS4TM2 / minPifVAL;
            yAritTOTALS4TM3 = yTOTALS4TM3 / minPifVAL;
            yAritTOTALS4TM4 = yTOTALS4TM4 / minPifVAL;
            yAritTOTALS4TM5 = yTOTALS4TM5 / minPifVAL;
            yAritTOTALS4TM7 = yTOTALS4TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4TM1 = (xxAritQuadTOTALS4TM1 + ((pifTOTALS1ETM1arrayRAND[n] - xAritTOTALS4TM1)^2));
                xxAritQuadTOTALS4TM2 = (xxAritQuadTOTALS4TM2 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS4TM2)^2));
                xxAritQuadTOTALS4TM3 = (xxAritQuadTOTALS4TM3 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS4TM3)^2));
                xxAritQuadTOTALS4TM4 = (xxAritQuadTOTALS4TM4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS4TM4)^2));
                xxAritQuadTOTALS4TM5 = (xxAritQuadTOTALS4TM5 + ((pifTOTALS1ETM5arrayRAND[n] - xAritTOTALS4TM5)^2));
                xxAritQuadTOTALS4TM7 = (xxAritQuadTOTALS4TM7 + ((pifTOTALS1ETM7arrayRAND[n] - xAritTOTALS4TM7)^2));
    
                yyAritQuadTOTALS4TM1 = (yyAritQuadTOTALS4TM1 + ((pifTOTALS4TM1arrayRAND[n] - yAritTOTALS4TM1)^2));
                yyAritQuadTOTALS4TM2 = (yyAritQuadTOTALS4TM2 + ((pifTOTALS4TM2arrayRAND[n] - yAritTOTALS4TM2)^2));
                yyAritQuadTOTALS4TM3 = (yyAritQuadTOTALS4TM3 + ((pifTOTALS4TM3arrayRAND[n] - yAritTOTALS4TM3)^2));
                yyAritQuadTOTALS4TM4 = (yyAritQuadTOTALS4TM4 + ((pifTOTALS4TM4arrayRAND[n] - yAritTOTALS4TM4)^2));
                yyAritQuadTOTALS4TM5 = (yyAritQuadTOTALS4TM5 + ((pifTOTALS4TM5arrayRAND[n] - yAritTOTALS4TM5)^2));
                yyAritQuadTOTALS4TM7 = (yyAritQuadTOTALS4TM7 + ((pifTOTALS4TM7arrayRAND[n] - yAritTOTALS4TM7)^2));
    
                qXYTOTALS4TM1 = (qXYTOTALS4TM1 + ((pifTOTALS1ETM1arrayRAND[n] - xAritTOTALS4TM1) * (pifTOTALS4TM1arrayRAND[n] - yAritTOTALS4TM1)));
                qXYTOTALS4TM2 = (qXYTOTALS4TM2 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS4TM2) * (pifTOTALS4TM2arrayRAND[n] - yAritTOTALS4TM2)));
                qXYTOTALS4TM3 = (qXYTOTALS4TM3 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS4TM3) * (pifTOTALS4TM3arrayRAND[n] - yAritTOTALS4TM3)));
                qXYTOTALS4TM4 = (qXYTOTALS4TM4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS4TM4) * (pifTOTALS4TM4arrayRAND[n] - yAritTOTALS4TM4)));
                qXYTOTALS4TM5 = (qXYTOTALS4TM5 + ((pifTOTALS1ETM5arrayRAND[n] - xAritTOTALS4TM5) * (pifTOTALS4TM5arrayRAND[n] - yAritTOTALS4TM5)));
                qXYTOTALS4TM7 = (qXYTOTALS4TM7 + ((pifTOTALS1ETM7arrayRAND[n] - xAritTOTALS4TM7) * (pifTOTALS4TM7arrayRAND[n] - yAritTOTALS4TM7)));
            }
        
            aTOTALS4TM1 = (((xQuadTOTALS4TM1 * yTOTALS4TM1) - (xTOTALS4TM1 * xyTOTALS4TM1)) / ((minPifVAL * xQuadTOTALS4TM1) - (xTOTALS4TM1^2)));
            aTOTALS4TM2 = (((xQuadTOTALS4TM2 * yTOTALS4TM2) - (xTOTALS4TM2 * xyTOTALS4TM2)) / ((minPifVAL * xQuadTOTALS4TM2) - (xTOTALS4TM2^2)));
            aTOTALS4TM3 = (((xQuadTOTALS4TM3 * yTOTALS4TM3) - (xTOTALS4TM3 * xyTOTALS4TM3)) / ((minPifVAL * xQuadTOTALS4TM3) - (xTOTALS4TM3^2)));
            aTOTALS4TM4 = (((xQuadTOTALS4TM4 * yTOTALS4TM4) - (xTOTALS4TM4 * xyTOTALS4TM4)) / ((minPifVAL * xQuadTOTALS4TM4) - (xTOTALS4TM4^2)));
            aTOTALS4TM5 = (((xQuadTOTALS4TM5 * yTOTALS4TM5) - (xTOTALS4TM5 * xyTOTALS4TM5)) / ((minPifVAL * xQuadTOTALS4TM5) - (xTOTALS4TM5^2)));
            aTOTALS4TM7 = (((xQuadTOTALS4TM7 * yTOTALS4TM7) - (xTOTALS4TM7 * xyTOTALS4TM7)) / ((minPifVAL * xQuadTOTALS4TM7) - (xTOTALS4TM7^2)));
            
            bTOTALS4TM1 = qXYTOTALS4TM1 / xxAritQuadTOTALS4TM1;
            bTOTALS4TM2 = qXYTOTALS4TM2 / xxAritQuadTOTALS4TM2;
            bTOTALS4TM3 = qXYTOTALS4TM3 / xxAritQuadTOTALS4TM3;
            bTOTALS4TM4 = qXYTOTALS4TM4 / xxAritQuadTOTALS4TM4;
            bTOTALS4TM5 = qXYTOTALS4TM5 / xxAritQuadTOTALS4TM5;
            bTOTALS4TM7 = qXYTOTALS4TM7 / xxAritQuadTOTALS4TM7;
    
            rTOTALS4TM1 = (qXYTOTALS4TM1 / ((xxAritQuadTOTALS4TM1 * yyAritQuadTOTALS4TM1)^0.5));
            rTOTALS4TM2 = (qXYTOTALS4TM2 / ((xxAritQuadTOTALS4TM2 * yyAritQuadTOTALS4TM2)^0.5));
            rTOTALS4TM3 = (qXYTOTALS4TM3 / ((xxAritQuadTOTALS4TM3 * yyAritQuadTOTALS4TM3)^0.5));
            rTOTALS4TM4 = (qXYTOTALS4TM4 / ((xxAritQuadTOTALS4TM4 * yyAritQuadTOTALS4TM4)^0.5));
            rTOTALS4TM5 = (qXYTOTALS4TM5 / ((xxAritQuadTOTALS4TM5 * yyAritQuadTOTALS4TM5)^0.5));
            rTOTALS4TM7 = (qXYTOTALS4TM7 / ((xxAritQuadTOTALS4TM7 * yyAritQuadTOTALS4TM7)^0.5));
    
            rQuadTOTALS4TM1 = ((rTOTALS4TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4TM2 = ((rTOTALS4TM2^2) * 100);
            rQuadTOTALS4TM3 = ((rTOTALS4TM3^2) * 100);
            rQuadTOTALS4TM4 = ((rTOTALS4TM4^2) * 100);
            rQuadTOTALS4TM5 = ((rTOTALS4TM5^2) * 100);
            rQuadTOTALS4TM7 = ((rTOTALS4TM7^2) * 100);
        
            syxTOTALS4TM1 = (((yyAritQuadTOTALS4TM1 - ((qXYTOTALS4TM1^2) / xxAritQuadTOTALS4TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM2 = (((yyAritQuadTOTALS4TM2 - ((qXYTOTALS4TM2^2) / xxAritQuadTOTALS4TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM3 = (((yyAritQuadTOTALS4TM3 - ((qXYTOTALS4TM3^2) / xxAritQuadTOTALS4TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM4 = (((yyAritQuadTOTALS4TM4 - ((qXYTOTALS4TM4^2) / xxAritQuadTOTALS4TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM5 = (((yyAritQuadTOTALS4TM5 - ((qXYTOTALS4TM5^2) / xxAritQuadTOTALS4TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM7 = (((yyAritQuadTOTALS4TM7 - ((qXYTOTALS4TM7^2) / xxAritQuadTOTALS4TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4TM1 = (((syxTOTALS4TM1^2) / xxAritQuadTOTALS4TM1)^0.5);
            bStandTOTALS4TM2 = (((syxTOTALS4TM2^2) / xxAritQuadTOTALS4TM2)^0.5);
            bStandTOTALS4TM3 = (((syxTOTALS4TM3^2) / xxAritQuadTOTALS4TM3)^0.5);
            bStandTOTALS4TM4 = (((syxTOTALS4TM4^2) / xxAritQuadTOTALS4TM4)^0.5);
            bStandTOTALS4TM5 = (((syxTOTALS4TM5^2) / xxAritQuadTOTALS4TM5)^0.5);
            bStandTOTALS4TM7 = (((syxTOTALS4TM7^2) / xxAritQuadTOTALS4TM7)^0.5);
    
            aStandTOTALS4TM1 = (bStandTOTALS4TM1 * ((xQuadTOTALS4TM1 / minPifVAL)^0.5));
            aStandTOTALS4TM2 = (bStandTOTALS4TM2 * ((xQuadTOTALS4TM2 / minPifVAL)^0.5));
            aStandTOTALS4TM3 = (bStandTOTALS4TM3 * ((xQuadTOTALS4TM3 / minPifVAL)^0.5));
            aStandTOTALS4TM4 = (bStandTOTALS4TM4 * ((xQuadTOTALS4TM4 / minPifVAL)^0.5));
            aStandTOTALS4TM5 = (bStandTOTALS4TM5 * ((xQuadTOTALS4TM5 / minPifVAL)^0.5));
            aStandTOTALS4TM7 = (bStandTOTALS4TM7 * ((xQuadTOTALS4TM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM1, bTOTALS4TM1, rTOTALS4TM1, rQuadTOTALS4TM1, aStandTOTALS4TM1, bStandTOTALS4TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM2, bTOTALS4TM2, rTOTALS4TM2, rQuadTOTALS4TM2, aStandTOTALS4TM2, bStandTOTALS4TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM3, bTOTALS4TM3, rTOTALS4TM3, rQuadTOTALS4TM3, aStandTOTALS4TM3, bStandTOTALS4TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM4, bTOTALS4TM4, rTOTALS4TM4, rQuadTOTALS4TM4, aStandTOTALS4TM4, bStandTOTALS4TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM5, bTOTALS4TM5, rTOTALS4TM5, rQuadTOTALS4TM5, aStandTOTALS4TM5, bStandTOTALS4TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS4TM7, bTOTALS4TM7, rTOTALS4TM7, rQuadTOTALS4TM7, aStandTOTALS4TM7, bStandTOTALS4TM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS4TM1arrayRAND[1]);
for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS4TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS4TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS4TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS4TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS4TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS4TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT4TM1[i,j] = (aTOTALS4TM1 + (bTOTALS4TM1 * REFS4TM1[i,j]));
                    OUT4TM2[i,j] = (aTOTALS4TM2 + (bTOTALS4TM2 * REFS4TM2[i,j]));
                    OUT4TM3[i,j] = (aTOTALS4TM3 + (bTOTALS4TM3 * REFS4TM3[i,j]));
                    OUT4TM4[i,j] = (aTOTALS4TM4 + (bTOTALS4TM4 * REFS4TM4[i,j]));
                    OUT4TM5[i,j] = (aTOTALS4TM5 + (bTOTALS4TM5 * REFS4TM5[i,j]));
                    OUT4TM7[i,j] = (aTOTALS4TM7 + (bTOTALS4TM7 * REFS4TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4TM1);
        	CreatePyramid(OUT4TM2);
        	CreatePyramid(OUT4TM3);
        	CreatePyramid(OUT4TM4);
        	CreatePyramid(OUT4TM5);
        	CreatePyramid(OUT4TM7);
        
        	CreateHistogram(OUT4TM1);
        	CreateHistogram(OUT4TM2);
        	CreateHistogram(OUT4TM3);
        	CreateHistogram(OUT4TM4);
        	CreateHistogram(OUT4TM5);
        	CreateHistogram(OUT4TM7);
        
        	CloseRaster(REFS4TM1);
            CloseRaster(REFS4TM2);
            CloseRaster(REFS4TM3);
            CloseRaster(REFS4TM4);
            CloseRaster(REFS4TM5);
            CloseRaster(REFS4TM7);
    
            CloseRaster(OUT4TM1);
            CloseRaster(OUT4TM2);
            CloseRaster(OUT4TM3);
            CloseRaster(OUT4TM4);
            CloseRaster(OUT4TM5);
            CloseRaster(OUT4TM7);
        
        	printf("Scene 4 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
           
            else
            { 
            numeric xAritTOTALS4MSS1, xAritTOTALS4MSS2, xAritTOTALS4MSS4;
            numeric yAritTOTALS4MSS1, yAritTOTALS4MSS2, yAritTOTALS4MSS4;
    
            numeric aTOTALS4MSS1, aTOTALS4MSS2, aTOTALS4MSS4;
            numeric bTOTALS4MSS1, bTOTALS4MSS2, bTOTALS4MSS4;
            numeric rTOTALS4MSS1, rTOTALS4MSS2, rTOTALS4MSS4;
            numeric rQuadTOTALS4MSS1, rQuadTOTALS4MSS2, rQuadTOTALS4MSS4;
            numeric syxTOTALS4MSS1, syxTOTALS4MSS2, syxTOTALS4MSS4;
            numeric bStandTOTALS4MSS1, bStandTOTALS4MSS2, bStandTOTALS4MSS4;
            numeric aStandTOTALS4MSS1, aStandTOTALS4MSS2, aStandTOTALS4MSS4;
    
            numeric xTOTALS4MSS1 = 0;
            numeric xTOTALS4MSS2 = 0;
            numeric xTOTALS4MSS4 = 0;
    
            numeric xQuadTOTALS4MSS1 = 0;
            numeric xQuadTOTALS4MSS2 = 0;
            numeric xQuadTOTALS4MSS4 = 0;
    
            numeric yTOTALS4MSS1 = 0;
            numeric yTOTALS4MSS2 = 0;
            numeric yTOTALS4MSS4 = 0;
    
            numeric yQuadTOTALS4MSS1 = 0;
            numeric yQuadTOTALS4MSS2 = 0;
            numeric yQuadTOTALS4MSS4 = 0;
    
            numeric xyTOTALS4MSS1 = 0;
            numeric xyTOTALS4MSS2 = 0;
            numeric xyTOTALS4MSS4 = 0;
    
            numeric xxAritQuadTOTALS4MSS1 = 0;
            numeric xxAritQuadTOTALS4MSS2 = 0;
            numeric xxAritQuadTOTALS4MSS4 = 0;
    
            numeric yyAritQuadTOTALS4MSS1 = 0;
            numeric yyAritQuadTOTALS4MSS2 = 0;
            numeric yyAritQuadTOTALS4MSS4 = 0;
    
            numeric qXYTOTALS4MSS1 = 0;
            numeric qXYTOTALS4MSS2 = 0;
            numeric qXYTOTALS4MSS4 = 0;
            for m = 1 to minPifVAL
                {		
                xTOTALS4MSS1 = xTOTALS4MSS1 + pifTOTALS1ETM2arrayRAND[m];
                xTOTALS4MSS2 = xTOTALS4MSS2 + pifTOTALS1ETM3arrayRAND[m];
                xTOTALS4MSS4 = xTOTALS4MSS4 + pifTOTALS1ETM4arrayRAND[m];
    
                xQuadTOTALS4MSS1 = (xQuadTOTALS4MSS1 + (pifTOTALS1ETM2arrayRAND[m]^2));
                xQuadTOTALS4MSS2 = (xQuadTOTALS4MSS2 + (pifTOTALS1ETM3arrayRAND[m]^2));
                xQuadTOTALS4MSS4 = (xQuadTOTALS4MSS4 + (pifTOTALS1ETM4arrayRAND[m]^2));
    
                yTOTALS4MSS1 = yTOTALS4MSS1 + pifTOTALS4MSS1arrayRAND[m];
                yTOTALS4MSS2 = yTOTALS4MSS2 + pifTOTALS4MSS2arrayRAND[m];
                yTOTALS4MSS4 = yTOTALS4MSS4 + pifTOTALS4MSS4arrayRAND[m];
                
                yQuadTOTALS4MSS1 = (yQuadTOTALS4MSS1 + (pifTOTALS4MSS1arrayRAND[m]^2));
                yQuadTOTALS4MSS2 = (yQuadTOTALS4MSS2 + (pifTOTALS4MSS2arrayRAND[m]^2));
                yQuadTOTALS4MSS4 = (yQuadTOTALS4MSS4 + (pifTOTALS4MSS4arrayRAND[m]^2));
    
                xyTOTALS4MSS1 = (xyTOTALS4MSS1 + (pifTOTALS1ETM2arrayRAND[m] * pifTOTALS4MSS1arrayRAND[m]));
                xyTOTALS4MSS2 = (xyTOTALS4MSS2 + (pifTOTALS1ETM3arrayRAND[m] * pifTOTALS4MSS2arrayRAND[m]));
                xyTOTALS4MSS4 = (xyTOTALS4MSS4 + (pifTOTALS1ETM4arrayRAND[m] * pifTOTALS4MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS4MSS1 = xTOTALS4MSS1 / minPifVAL;
            xAritTOTALS4MSS2 = xTOTALS4MSS2 / minPifVAL;
            xAritTOTALS4MSS4 = xTOTALS4MSS4 / minPifVAL;
    
            yAritTOTALS4MSS1 = yTOTALS4MSS1 / minPifVAL;
            yAritTOTALS4MSS2 = yTOTALS4MSS2 / minPifVAL;
            yAritTOTALS4MSS4 = yTOTALS4MSS4 / minPifVAL;
            
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4MSS1 = (xxAritQuadTOTALS4MSS1 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS4MSS1)^2));
                xxAritQuadTOTALS4MSS2 = (xxAritQuadTOTALS4MSS2 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS4MSS2)^2));
                xxAritQuadTOTALS4MSS4 = (xxAritQuadTOTALS4MSS4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS4MSS4)^2));
    
                yyAritQuadTOTALS4MSS1 = (yyAritQuadTOTALS4MSS1 + ((pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)^2));
                yyAritQuadTOTALS4MSS2 = (yyAritQuadTOTALS4MSS2 + ((pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)^2));
                yyAritQuadTOTALS4MSS4 = (yyAritQuadTOTALS4MSS4 + ((pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)^2));
    
                qXYTOTALS4MSS1 = (qXYTOTALS4MSS1 + ((pifTOTALS1ETM2arrayRAND[n] - xAritTOTALS4MSS1) * (pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)));
                qXYTOTALS4MSS2 = (qXYTOTALS4MSS2 + ((pifTOTALS1ETM3arrayRAND[n] - xAritTOTALS4MSS2) * (pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)));
                qXYTOTALS4MSS4 = (qXYTOTALS4MSS4 + ((pifTOTALS1ETM4arrayRAND[n] - xAritTOTALS4MSS4) * (pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)));
            }
        
            aTOTALS4MSS1 = (((xQuadTOTALS4MSS1 * yTOTALS4MSS1) - (xTOTALS4MSS1 * xyTOTALS4MSS1)) / ((minPifVAL * xQuadTOTALS4MSS1) - (xTOTALS4MSS1^2)));
            aTOTALS4MSS2 = (((xQuadTOTALS4MSS2 * yTOTALS4MSS2) - (xTOTALS4MSS2 * xyTOTALS4MSS2)) / ((minPifVAL * xQuadTOTALS4MSS2) - (xTOTALS4MSS2^2)));
            aTOTALS4MSS4 = (((xQuadTOTALS4MSS4 * yTOTALS4MSS4) - (xTOTALS4MSS4 * xyTOTALS4MSS4)) / ((minPifVAL * xQuadTOTALS4MSS4) - (xTOTALS4MSS4^2)));
            
            bTOTALS4MSS1 = qXYTOTALS4MSS1 / xxAritQuadTOTALS4MSS1;
            bTOTALS4MSS2 = qXYTOTALS4MSS2 / xxAritQuadTOTALS4MSS2;
            bTOTALS4MSS4 = qXYTOTALS4MSS4 / xxAritQuadTOTALS4MSS4;
    
            rTOTALS4MSS1 = (qXYTOTALS4MSS1 / ((xxAritQuadTOTALS4MSS1 * yyAritQuadTOTALS4MSS1)^0.5));
            rTOTALS4MSS2 = (qXYTOTALS4MSS2 / ((xxAritQuadTOTALS4MSS2 * yyAritQuadTOTALS4MSS2)^0.5));
            rTOTALS4MSS4 = (qXYTOTALS4MSS4 / ((xxAritQuadTOTALS4MSS4 * yyAritQuadTOTALS4MSS4)^0.5));
    
            rQuadTOTALS4MSS1 = ((rTOTALS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4MSS2 = ((rTOTALS4MSS2^2) * 100);
            rQuadTOTALS4MSS4 = ((rTOTALS4MSS4^2) * 100);
        
            syxTOTALS4MSS1 = (((yyAritQuadTOTALS4MSS1 - ((qXYTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS2 = (((yyAritQuadTOTALS4MSS2 - ((qXYTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS4 = (((yyAritQuadTOTALS4MSS4 - ((qXYTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4MSS1 = (((syxTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)^0.5);
            bStandTOTALS4MSS2 = (((syxTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)^0.5);
            bStandTOTALS4MSS4 = (((syxTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)^0.5);
    
            aStandTOTALS4MSS1 = (bStandTOTALS4MSS1 * ((xQuadTOTALS4MSS1 / minPifVAL)^0.5));
            aStandTOTALS4MSS2 = (bStandTOTALS4MSS2 * ((xQuadTOTALS4MSS2 / minPifVAL)^0.5));
            aStandTOTALS4MSS4 = (bStandTOTALS4MSS4 * ((xQuadTOTALS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS1, bTOTALS4MSS1, rTOTALS4MSS1, rQuadTOTALS4MSS1, aStandTOTALS4MSS1, bStandTOTALS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS2, bTOTALS4MSS2, rTOTALS4MSS2, rQuadTOTALS4MSS2, aStandTOTALS4MSS2, bStandTOTALS4MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS4, bTOTALS4MSS4, rTOTALS4MSS4, rQuadTOTALS4MSS4, aStandTOTALS4MSS4, bStandTOTALS4MSS4);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS4MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS4MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS2arrayRAND[minPifVAL]);
        
            printf("MSS4: %12f ", pifTOTALS4MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aTOTALS4MSS1 + (bTOTALS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aTOTALS4MSS2 + (bTOTALS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = REFS4MSS3[i,j];
                    OUT4MSS4[i,j] = (aTOTALS4MSS4 + (bTOTALS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT4MSS1);
        	CreatePyramid(OUT4MSS2);
        	CreatePyramid(OUT4MSS3);
        	CreatePyramid(OUT4MSS4);
        
        	CreateHistogram(OUT4MSS1);
        	CreateHistogram(OUT4MSS2);
        	CreateHistogram(OUT4MSS3);
        	CreateHistogram(OUT4MSS4);
        
        	CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
        }
        
        else if ( sensors1 == 6 )
        {
        printf("Scene 1 - Master Scene (TM):\n");
        printf("Scene 1 array values used for regression computation:\n");
    
        printf("TM1: %12f ", pifTOTALS1TM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS1TM1arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS1TM1arrayRAND[minPifVAL]);
    
        printf("TM2: %12f ", pifTOTALS1TM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS1TM2arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS1TM2arrayRAND[minPifVAL]);
    
        printf("TM3: %12f ", pifTOTALS1TM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS1TM3arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS1TM3arrayRAND[minPifVAL]);
    
        printf("TM4: %12f ", pifTOTALS1TM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS1TM4arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS1TM4arrayRAND[minPifVAL]);
    
        printf("TM5: %12f ", pifTOTALS1TM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS1TM5arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS1TM5arrayRAND[minPifVAL]);
    
        printf("TM7: %12f ", pifTOTALS1TM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS1TM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifTOTALS1TM7arrayRAND[minPifVAL]);
    
               
        for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                OUT1TM1[i,j] = REFS1TM1[i,j];
                OUT1TM2[i,j] = REFS1TM2[i,j];
                OUT1TM3[i,j] = REFS1TM3[i,j];
                OUT1TM4[i,j] = REFS1TM4[i,j];
                OUT1TM5[i,j] = REFS1TM5[i,j];
                OUT1TM7[i,j] = REFS1TM7[i,j];
                }
            }
        
        CreatePyramid(OUT1TM1);
        CreatePyramid(OUT1TM2);
        CreatePyramid(OUT1TM3);
        CreatePyramid(OUT1TM4);
        CreatePyramid(OUT1TM5);
        CreatePyramid(OUT1TM7);
    
        CreateHistogram(OUT1TM1);
        CreateHistogram(OUT1TM2);
        CreateHistogram(OUT1TM3);
        CreateHistogram(OUT1TM4);
        CreateHistogram(OUT1TM5);
        CreateHistogram(OUT1TM7);
        
        CloseRaster(REFS1TM1);
        CloseRaster(REFS1TM2);
        CloseRaster(REFS1TM3);
        CloseRaster(REFS1TM4);
        CloseRaster(REFS1TM5);
        CloseRaster(REFS1TM7);
        CloseRaster(OUT1TM1);
        CloseRaster(OUT1TM2);
        CloseRaster(OUT1TM3);
        CloseRaster(OUT1TM4);
        CloseRaster(OUT1TM5);
        CloseRaster(OUT1TM7);
    
        printf("Scene 1 (Master) output was written, histogram created and pyramid written\n\n\n");
        
            if ( sensors2 == 7 )
            {
            numeric xAritTOTALS2ETM1, xAritTOTALS2ETM2, xAritTOTALS2ETM3, xAritTOTALS2ETM4, xAritTOTALS2ETM5, xAritTOTALS2ETM7;
            numeric yAritTOTALS2ETM1, yAritTOTALS2ETM2, yAritTOTALS2ETM3, yAritTOTALS2ETM4, yAritTOTALS2ETM5, yAritTOTALS2ETM7;
    
            numeric aTOTALS2ETM1, aTOTALS2ETM2, aTOTALS2ETM3, aTOTALS2ETM4, aTOTALS2ETM5, aTOTALS2ETM7;
            numeric bTOTALS2ETM1, bTOTALS2ETM2, bTOTALS2ETM3, bTOTALS2ETM4, bTOTALS2ETM5, bTOTALS2ETM7;
            numeric rTOTALS2ETM1, rTOTALS2ETM2, rTOTALS2ETM3, rTOTALS2ETM4, rTOTALS2ETM5, rTOTALS2ETM7;
            numeric rQuadTOTALS2ETM1, rQuadTOTALS2ETM2, rQuadTOTALS2ETM3, rQuadTOTALS2ETM4, rQuadTOTALS2ETM5, rQuadTOTALS2ETM7;
            numeric syxTOTALS2ETM1, syxTOTALS2ETM2, syxTOTALS2ETM3, syxTOTALS2ETM4, syxTOTALS2ETM5, syxTOTALS2ETM7;
            numeric bStandTOTALS2ETM1, bStandTOTALS2ETM2, bStandTOTALS2ETM3, bStandTOTALS2ETM4, bStandTOTALS2ETM5, bStandTOTALS2ETM7;
            numeric aStandTOTALS2ETM1, aStandTOTALS2ETM2, aStandTOTALS2ETM3, aStandTOTALS2ETM4, aStandTOTALS2ETM5, aStandTOTALS2ETM7;
    
            numeric xTOTALS2ETM1 = 0;
            numeric xTOTALS2ETM2 = 0;
            numeric xTOTALS2ETM3 = 0;
            numeric xTOTALS2ETM4 = 0;
            numeric xTOTALS2ETM5 = 0;
            numeric xTOTALS2ETM7 = 0;
    
            numeric xQuadTOTALS2ETM1 = 0;
            numeric xQuadTOTALS2ETM2 = 0;
            numeric xQuadTOTALS2ETM3 = 0;
            numeric xQuadTOTALS2ETM4 = 0;
            numeric xQuadTOTALS2ETM5 = 0;
            numeric xQuadTOTALS2ETM7 = 0;
    
            numeric yTOTALS2ETM1 = 0;
            numeric yTOTALS2ETM2 = 0;
            numeric yTOTALS2ETM3 = 0;
            numeric yTOTALS2ETM4 = 0;
            numeric yTOTALS2ETM5 = 0;
            numeric yTOTALS2ETM7 = 0;
    
            numeric yQuadTOTALS2ETM1 = 0;
            numeric yQuadTOTALS2ETM2 = 0;
            numeric yQuadTOTALS2ETM3 = 0;
            numeric yQuadTOTALS2ETM4 = 0;
            numeric yQuadTOTALS2ETM5 = 0;
            numeric yQuadTOTALS2ETM7 = 0;
    
            numeric xyTOTALS2ETM1 = 0;
            numeric xyTOTALS2ETM2 = 0;
            numeric xyTOTALS2ETM3 = 0;
            numeric xyTOTALS2ETM4 = 0;
            numeric xyTOTALS2ETM5 = 0;
            numeric xyTOTALS2ETM7 = 0;
    
            numeric xxAritQuadTOTALS2ETM1 = 0;
            numeric xxAritQuadTOTALS2ETM2 = 0;
            numeric xxAritQuadTOTALS2ETM3 = 0;
            numeric xxAritQuadTOTALS2ETM4 = 0;
            numeric xxAritQuadTOTALS2ETM5 = 0;
            numeric xxAritQuadTOTALS2ETM7 = 0;
    
            numeric yyAritQuadTOTALS2ETM1 = 0;
            numeric yyAritQuadTOTALS2ETM2 = 0;
            numeric yyAritQuadTOTALS2ETM3 = 0;
            numeric yyAritQuadTOTALS2ETM4 = 0;
            numeric yyAritQuadTOTALS2ETM5 = 0;
            numeric yyAritQuadTOTALS2ETM7 = 0;
    
            numeric qXYTOTALS2ETM1 = 0;
            numeric qXYTOTALS2ETM2 = 0;
            numeric qXYTOTALS2ETM3 = 0;
            numeric qXYTOTALS2ETM4 = 0;
            numeric qXYTOTALS2ETM5 = 0;
            numeric qXYTOTALS2ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS2ETM1 = xTOTALS2ETM1 + pifTOTALS1TM1arrayRAND[m];
                xTOTALS2ETM2 = xTOTALS2ETM2 + pifTOTALS1TM2arrayRAND[m];
                xTOTALS2ETM3 = xTOTALS2ETM3 + pifTOTALS1TM3arrayRAND[m];
                xTOTALS2ETM4 = xTOTALS2ETM4 + pifTOTALS1TM4arrayRAND[m];
                xTOTALS2ETM5 = xTOTALS2ETM5 + pifTOTALS1TM5arrayRAND[m];
                xTOTALS2ETM7 = xTOTALS2ETM7 + pifTOTALS1TM7arrayRAND[m];
    
                xQuadTOTALS2ETM1 = (xQuadTOTALS2ETM1 + (pifTOTALS1TM1arrayRAND[m]^2));
                xQuadTOTALS2ETM2 = (xQuadTOTALS2ETM2 + (pifTOTALS1TM2arrayRAND[m]^2));
                xQuadTOTALS2ETM3 = (xQuadTOTALS2ETM3 + (pifTOTALS1TM3arrayRAND[m]^2));
                xQuadTOTALS2ETM4 = (xQuadTOTALS2ETM4 + (pifTOTALS1TM4arrayRAND[m]^2));
                xQuadTOTALS2ETM5 = (xQuadTOTALS2ETM5 + (pifTOTALS1TM5arrayRAND[m]^2));
                xQuadTOTALS2ETM7 = (xQuadTOTALS2ETM7 + (pifTOTALS1TM7arrayRAND[m]^2));
    
                yTOTALS2ETM1 = yTOTALS2ETM1 + pifTOTALS2ETM1arrayRAND[m];
                yTOTALS2ETM2 = yTOTALS2ETM2 + pifTOTALS2ETM2arrayRAND[m];
                yTOTALS2ETM3 = yTOTALS2ETM3 + pifTOTALS2ETM3arrayRAND[m];
                yTOTALS2ETM4 = yTOTALS2ETM4 + pifTOTALS2ETM4arrayRAND[m];
                yTOTALS2ETM5 = yTOTALS2ETM5 + pifTOTALS2ETM5arrayRAND[m];
                yTOTALS2ETM7 = yTOTALS2ETM7 + pifTOTALS2ETM7arrayRAND[m];
                
                yQuadTOTALS2ETM1 = (yQuadTOTALS2ETM1 + (pifTOTALS2ETM1arrayRAND[m]^2));
                yQuadTOTALS2ETM2 = (yQuadTOTALS2ETM2 + (pifTOTALS2ETM2arrayRAND[m]^2));
                yQuadTOTALS2ETM3 = (yQuadTOTALS2ETM3 + (pifTOTALS2ETM3arrayRAND[m]^2));
                yQuadTOTALS2ETM4 = (yQuadTOTALS2ETM4 + (pifTOTALS2ETM4arrayRAND[m]^2));
                yQuadTOTALS2ETM5 = (yQuadTOTALS2ETM5 + (pifTOTALS2ETM5arrayRAND[m]^2));
                yQuadTOTALS2ETM7 = (yQuadTOTALS2ETM7 + (pifTOTALS2ETM7arrayRAND[m]^2));
    
                xyTOTALS2ETM1 = (xyTOTALS2ETM1 + (pifTOTALS1TM1arrayRAND[m] * pifTOTALS2ETM1arrayRAND[m]));
                xyTOTALS2ETM2 = (xyTOTALS2ETM2 + (pifTOTALS1TM2arrayRAND[m] * pifTOTALS2ETM2arrayRAND[m]));
                xyTOTALS2ETM3 = (xyTOTALS2ETM3 + (pifTOTALS1TM3arrayRAND[m] * pifTOTALS2ETM3arrayRAND[m]));
                xyTOTALS2ETM4 = (xyTOTALS2ETM4 + (pifTOTALS1TM4arrayRAND[m] * pifTOTALS2ETM4arrayRAND[m]));
                xyTOTALS2ETM5 = (xyTOTALS2ETM5 + (pifTOTALS1TM5arrayRAND[m] * pifTOTALS2ETM5arrayRAND[m]));
                xyTOTALS2ETM7 = (xyTOTALS2ETM7 + (pifTOTALS1TM7arrayRAND[m] * pifTOTALS2ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS2ETM1 = xTOTALS2ETM1 / minPifVAL;
            xAritTOTALS2ETM2 = xTOTALS2ETM2 / minPifVAL;
            xAritTOTALS2ETM3 = xTOTALS2ETM3 / minPifVAL;
            xAritTOTALS2ETM4 = xTOTALS2ETM4 / minPifVAL;
            xAritTOTALS2ETM5 = xTOTALS2ETM5 / minPifVAL;
            xAritTOTALS2ETM7 = xTOTALS2ETM7 / minPifVAL;
    
            yAritTOTALS2ETM1 = yTOTALS2ETM1 / minPifVAL;
            yAritTOTALS2ETM2 = yTOTALS2ETM2 / minPifVAL;
            yAritTOTALS2ETM3 = yTOTALS2ETM3 / minPifVAL;
            yAritTOTALS2ETM4 = yTOTALS2ETM4 / minPifVAL;
            yAritTOTALS2ETM5 = yTOTALS2ETM5 / minPifVAL;
            yAritTOTALS2ETM7 = yTOTALS2ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2ETM1 = (xxAritQuadTOTALS2ETM1 + ((pifTOTALS1TM1arrayRAND[n] - xAritTOTALS2ETM1)^2));
                xxAritQuadTOTALS2ETM2 = (xxAritQuadTOTALS2ETM2 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS2ETM2)^2));
                xxAritQuadTOTALS2ETM3 = (xxAritQuadTOTALS2ETM3 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS2ETM3)^2));
                xxAritQuadTOTALS2ETM4 = (xxAritQuadTOTALS2ETM4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS2ETM4)^2));
                xxAritQuadTOTALS2ETM5 = (xxAritQuadTOTALS2ETM5 + ((pifTOTALS1TM5arrayRAND[n] - xAritTOTALS2ETM5)^2));
                xxAritQuadTOTALS2ETM7 = (xxAritQuadTOTALS2ETM7 + ((pifTOTALS1TM7arrayRAND[n] - xAritTOTALS2ETM7)^2));
    
                yyAritQuadTOTALS2ETM1 = (yyAritQuadTOTALS2ETM1 + ((pifTOTALS2ETM1arrayRAND[n] - yAritTOTALS2ETM1)^2));
                yyAritQuadTOTALS2ETM2 = (yyAritQuadTOTALS2ETM2 + ((pifTOTALS2ETM2arrayRAND[n] - yAritTOTALS2ETM2)^2));
                yyAritQuadTOTALS2ETM3 = (yyAritQuadTOTALS2ETM3 + ((pifTOTALS2ETM3arrayRAND[n] - yAritTOTALS2ETM3)^2));
                yyAritQuadTOTALS2ETM4 = (yyAritQuadTOTALS2ETM4 + ((pifTOTALS2ETM4arrayRAND[n] - yAritTOTALS2ETM4)^2));
                yyAritQuadTOTALS2ETM5 = (yyAritQuadTOTALS2ETM5 + ((pifTOTALS2ETM5arrayRAND[n] - yAritTOTALS2ETM5)^2));
                yyAritQuadTOTALS2ETM7 = (yyAritQuadTOTALS2ETM7 + ((pifTOTALS2ETM7arrayRAND[n] - yAritTOTALS2ETM7)^2));
    
                qXYTOTALS2ETM1 = (qXYTOTALS2ETM1 + ((pifTOTALS1TM1arrayRAND[n] - xAritTOTALS2ETM1) * (pifTOTALS2ETM1arrayRAND[n] - yAritTOTALS2ETM1)));
                qXYTOTALS2ETM2 = (qXYTOTALS2ETM2 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS2ETM2) * (pifTOTALS2ETM2arrayRAND[n] - yAritTOTALS2ETM2)));
                qXYTOTALS2ETM3 = (qXYTOTALS2ETM3 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS2ETM3) * (pifTOTALS2ETM3arrayRAND[n] - yAritTOTALS2ETM3)));
                qXYTOTALS2ETM4 = (qXYTOTALS2ETM4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS2ETM4) * (pifTOTALS2ETM4arrayRAND[n] - yAritTOTALS2ETM4)));
                qXYTOTALS2ETM5 = (qXYTOTALS2ETM5 + ((pifTOTALS1TM5arrayRAND[n] - xAritTOTALS2ETM5) * (pifTOTALS2ETM5arrayRAND[n] - yAritTOTALS2ETM5)));
                qXYTOTALS2ETM7 = (qXYTOTALS2ETM7 + ((pifTOTALS1TM7arrayRAND[n] - xAritTOTALS2ETM7) * (pifTOTALS2ETM7arrayRAND[n] - yAritTOTALS2ETM7)));
            }
        
            aTOTALS2ETM1 = (((xQuadTOTALS2ETM1 * yTOTALS2ETM1) - (xTOTALS2ETM1 * xyTOTALS2ETM1)) / ((minPifVAL * xQuadTOTALS2ETM1) - (xTOTALS2ETM1^2)));
            aTOTALS2ETM2 = (((xQuadTOTALS2ETM2 * yTOTALS2ETM2) - (xTOTALS2ETM2 * xyTOTALS2ETM2)) / ((minPifVAL * xQuadTOTALS2ETM2) - (xTOTALS2ETM2^2)));
            aTOTALS2ETM3 = (((xQuadTOTALS2ETM3 * yTOTALS2ETM3) - (xTOTALS2ETM3 * xyTOTALS2ETM3)) / ((minPifVAL * xQuadTOTALS2ETM3) - (xTOTALS2ETM3^2)));
            aTOTALS2ETM4 = (((xQuadTOTALS2ETM4 * yTOTALS2ETM4) - (xTOTALS2ETM4 * xyTOTALS2ETM4)) / ((minPifVAL * xQuadTOTALS2ETM4) - (xTOTALS2ETM4^2)));
            aTOTALS2ETM5 = (((xQuadTOTALS2ETM5 * yTOTALS2ETM5) - (xTOTALS2ETM5 * xyTOTALS2ETM5)) / ((minPifVAL * xQuadTOTALS2ETM5) - (xTOTALS2ETM5^2)));
            aTOTALS2ETM7 = (((xQuadTOTALS2ETM7 * yTOTALS2ETM7) - (xTOTALS2ETM7 * xyTOTALS2ETM7)) / ((minPifVAL * xQuadTOTALS2ETM7) - (xTOTALS2ETM7^2)));
            
            bTOTALS2ETM1 = qXYTOTALS2ETM1 / xxAritQuadTOTALS2ETM1;
            bTOTALS2ETM2 = qXYTOTALS2ETM2 / xxAritQuadTOTALS2ETM2;
            bTOTALS2ETM3 = qXYTOTALS2ETM3 / xxAritQuadTOTALS2ETM3;
            bTOTALS2ETM4 = qXYTOTALS2ETM4 / xxAritQuadTOTALS2ETM4;
            bTOTALS2ETM5 = qXYTOTALS2ETM5 / xxAritQuadTOTALS2ETM5;
            bTOTALS2ETM7 = qXYTOTALS2ETM7 / xxAritQuadTOTALS2ETM7;
    
            rTOTALS2ETM1 = (qXYTOTALS2ETM1 / ((xxAritQuadTOTALS2ETM1 * yyAritQuadTOTALS2ETM1)^0.5));
            rTOTALS2ETM2 = (qXYTOTALS2ETM2 / ((xxAritQuadTOTALS2ETM2 * yyAritQuadTOTALS2ETM2)^0.5));
            rTOTALS2ETM3 = (qXYTOTALS2ETM3 / ((xxAritQuadTOTALS2ETM3 * yyAritQuadTOTALS2ETM3)^0.5));
            rTOTALS2ETM4 = (qXYTOTALS2ETM4 / ((xxAritQuadTOTALS2ETM4 * yyAritQuadTOTALS2ETM4)^0.5));
            rTOTALS2ETM5 = (qXYTOTALS2ETM5 / ((xxAritQuadTOTALS2ETM5 * yyAritQuadTOTALS2ETM5)^0.5));
            rTOTALS2ETM7 = (qXYTOTALS2ETM7 / ((xxAritQuadTOTALS2ETM7 * yyAritQuadTOTALS2ETM7)^0.5));
    
            rQuadTOTALS2ETM1 = ((rTOTALS2ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2ETM2 = ((rTOTALS2ETM2^2) * 100);
            rQuadTOTALS2ETM3 = ((rTOTALS2ETM3^2) * 100);
            rQuadTOTALS2ETM4 = ((rTOTALS2ETM4^2) * 100);
            rQuadTOTALS2ETM5 = ((rTOTALS2ETM5^2) * 100);
            rQuadTOTALS2ETM7 = ((rTOTALS2ETM7^2) * 100);
        
            syxTOTALS2ETM1 = (((yyAritQuadTOTALS2ETM1 - ((qXYTOTALS2ETM1^2) / xxAritQuadTOTALS2ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM2 = (((yyAritQuadTOTALS2ETM2 - ((qXYTOTALS2ETM2^2) / xxAritQuadTOTALS2ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM3 = (((yyAritQuadTOTALS2ETM3 - ((qXYTOTALS2ETM3^2) / xxAritQuadTOTALS2ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM4 = (((yyAritQuadTOTALS2ETM4 - ((qXYTOTALS2ETM4^2) / xxAritQuadTOTALS2ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM5 = (((yyAritQuadTOTALS2ETM5 - ((qXYTOTALS2ETM5^2) / xxAritQuadTOTALS2ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM7 = (((yyAritQuadTOTALS2ETM7 - ((qXYTOTALS2ETM7^2) / xxAritQuadTOTALS2ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2ETM1 = (((syxTOTALS2ETM1^2) / xxAritQuadTOTALS2ETM1)^0.5);
            bStandTOTALS2ETM2 = (((syxTOTALS2ETM2^2) / xxAritQuadTOTALS2ETM2)^0.5);
            bStandTOTALS2ETM3 = (((syxTOTALS2ETM3^2) / xxAritQuadTOTALS2ETM3)^0.5);
            bStandTOTALS2ETM4 = (((syxTOTALS2ETM4^2) / xxAritQuadTOTALS2ETM4)^0.5);
            bStandTOTALS2ETM5 = (((syxTOTALS2ETM5^2) / xxAritQuadTOTALS2ETM5)^0.5);
            bStandTOTALS2ETM7 = (((syxTOTALS2ETM7^2) / xxAritQuadTOTALS2ETM7)^0.5);
    
            aStandTOTALS2ETM1 = (bStandTOTALS2ETM1 * ((xQuadTOTALS2ETM1 / minPifVAL)^0.5));
            aStandTOTALS2ETM2 = (bStandTOTALS2ETM2 * ((xQuadTOTALS2ETM2 / minPifVAL)^0.5));
            aStandTOTALS2ETM3 = (bStandTOTALS2ETM3 * ((xQuadTOTALS2ETM3 / minPifVAL)^0.5));
            aStandTOTALS2ETM4 = (bStandTOTALS2ETM4 * ((xQuadTOTALS2ETM4 / minPifVAL)^0.5));
            aStandTOTALS2ETM5 = (bStandTOTALS2ETM5 * ((xQuadTOTALS2ETM5 / minPifVAL)^0.5));
            aStandTOTALS2ETM7 = (bStandTOTALS2ETM7 * ((xQuadTOTALS2ETM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM1, bTOTALS2ETM1, rTOTALS2ETM1, rQuadTOTALS2ETM1, aStandTOTALS2ETM1, bStandTOTALS2ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM2, bTOTALS2ETM2, rTOTALS2ETM2, rQuadTOTALS2ETM2, aStandTOTALS2ETM2, bStandTOTALS2ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM3, bTOTALS2ETM3, rTOTALS2ETM3, rQuadTOTALS2ETM3, aStandTOTALS2ETM3, bStandTOTALS2ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM4, bTOTALS2ETM4, rTOTALS2ETM4, rQuadTOTALS2ETM4, aStandTOTALS2ETM4, bStandTOTALS2ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM5, bTOTALS2ETM5, rTOTALS2ETM5, rQuadTOTALS2ETM5, aStandTOTALS2ETM5, bStandTOTALS2ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS2ETM7, bTOTALS2ETM7, rTOTALS2ETM7, rQuadTOTALS2ETM7, aStandTOTALS2ETM7, bStandTOTALS2ETM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS2ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS2ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS2ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS2ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS2ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS2ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS2ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT2ETM1[i,j] = (aTOTALS2ETM1 + (bTOTALS2ETM1 * REFS2ETM1[i,j]));
                    OUT2ETM2[i,j] = (aTOTALS2ETM2 + (bTOTALS2ETM2 * REFS2ETM2[i,j]));
                    OUT2ETM3[i,j] = (aTOTALS2ETM3 + (bTOTALS2ETM3 * REFS2ETM3[i,j]));
                    OUT2ETM4[i,j] = (aTOTALS2ETM4 + (bTOTALS2ETM4 * REFS2ETM4[i,j]));
                    OUT2ETM5[i,j] = (aTOTALS2ETM5 + (bTOTALS2ETM5 * REFS2ETM5[i,j]));
                    OUT2ETM7[i,j] = (aTOTALS2ETM7 + (bTOTALS2ETM7 * REFS2ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2ETM1);
        	CreatePyramid(OUT2ETM2);
        	CreatePyramid(OUT2ETM3);
        	CreatePyramid(OUT2ETM4);
        	CreatePyramid(OUT2ETM5);
        	CreatePyramid(OUT2ETM7);
        
        	CreateHistogram(OUT2ETM1);
        	CreateHistogram(OUT2ETM2);
        	CreateHistogram(OUT2ETM3);
        	CreateHistogram(OUT2ETM4);
        	CreateHistogram(OUT2ETM5);
        	CreateHistogram(OUT2ETM7);
        
        	CloseRaster(REFS2ETM1);
            CloseRaster(REFS2ETM2);
            CloseRaster(REFS2ETM3);
            CloseRaster(REFS2ETM4);
            CloseRaster(REFS2ETM5);
            CloseRaster(REFS2ETM7);
    
            CloseRaster(OUT2ETM1);
            CloseRaster(OUT2ETM2);
            CloseRaster(OUT2ETM3);
            CloseRaster(OUT2ETM4);
            CloseRaster(OUT2ETM5);
            CloseRaster(OUT2ETM7);
        
        	printf("Scene 2 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
 
            }
            
            else if ( sensors2 == 6 )
            {
            numeric xAritTOTALS2TM1, xAritTOTALS2TM2, xAritTOTALS2TM3, xAritTOTALS2TM4, xAritTOTALS2TM5, xAritTOTALS2TM7;
            numeric yAritTOTALS2TM1, yAritTOTALS2TM2, yAritTOTALS2TM3, yAritTOTALS2TM4, yAritTOTALS2TM5, yAritTOTALS2TM7;
    
            numeric aTOTALS2TM1, aTOTALS2TM2, aTOTALS2TM3, aTOTALS2TM4, aTOTALS2TM5, aTOTALS2TM7;
            numeric bTOTALS2TM1, bTOTALS2TM2, bTOTALS2TM3, bTOTALS2TM4, bTOTALS2TM5, bTOTALS2TM7;
            numeric rTOTALS2TM1, rTOTALS2TM2, rTOTALS2TM3, rTOTALS2TM4, rTOTALS2TM5, rTOTALS2TM7;
            numeric rQuadTOTALS2TM1, rQuadTOTALS2TM2, rQuadTOTALS2TM3, rQuadTOTALS2TM4, rQuadTOTALS2TM5, rQuadTOTALS2TM7;
            numeric syxTOTALS2TM1, syxTOTALS2TM2, syxTOTALS2TM3, syxTOTALS2TM4, syxTOTALS2TM5, syxTOTALS2TM7;
            numeric bStandTOTALS2TM1, bStandTOTALS2TM2, bStandTOTALS2TM3, bStandTOTALS2TM4, bStandTOTALS2TM5, bStandTOTALS2TM7;
            numeric aStandTOTALS2TM1, aStandTOTALS2TM2, aStandTOTALS2TM3, aStandTOTALS2TM4, aStandTOTALS2TM5, aStandTOTALS2TM7;
    
            numeric xTOTALS2TM1 = 0;
            numeric xTOTALS2TM2 = 0;
            numeric xTOTALS2TM3 = 0;
            numeric xTOTALS2TM4 = 0;
            numeric xTOTALS2TM5 = 0;
            numeric xTOTALS2TM7 = 0;
    
            numeric xQuadTOTALS2TM1 = 0;
            numeric xQuadTOTALS2TM2 = 0;
            numeric xQuadTOTALS2TM3 = 0;
            numeric xQuadTOTALS2TM4 = 0;
            numeric xQuadTOTALS2TM5 = 0;
            numeric xQuadTOTALS2TM7 = 0;
    
            numeric yTOTALS2TM1 = 0;
            numeric yTOTALS2TM2 = 0;
            numeric yTOTALS2TM3 = 0;
            numeric yTOTALS2TM4 = 0;
            numeric yTOTALS2TM5 = 0;
            numeric yTOTALS2TM7 = 0;
    
            numeric yQuadTOTALS2TM1 = 0;
            numeric yQuadTOTALS2TM2 = 0;
            numeric yQuadTOTALS2TM3 = 0;
            numeric yQuadTOTALS2TM4 = 0;
            numeric yQuadTOTALS2TM5 = 0;
            numeric yQuadTOTALS2TM7 = 0;
    
            numeric xyTOTALS2TM1 = 0;
            numeric xyTOTALS2TM2 = 0;
            numeric xyTOTALS2TM3 = 0;
            numeric xyTOTALS2TM4 = 0;
            numeric xyTOTALS2TM5 = 0;
            numeric xyTOTALS2TM7 = 0;
    
            numeric xxAritQuadTOTALS2TM1 = 0;
            numeric xxAritQuadTOTALS2TM2 = 0;
            numeric xxAritQuadTOTALS2TM3 = 0;
            numeric xxAritQuadTOTALS2TM4 = 0;
            numeric xxAritQuadTOTALS2TM5 = 0;
            numeric xxAritQuadTOTALS2TM7 = 0;
    
            numeric yyAritQuadTOTALS2TM1 = 0;
            numeric yyAritQuadTOTALS2TM2 = 0;
            numeric yyAritQuadTOTALS2TM3 = 0;
            numeric yyAritQuadTOTALS2TM4 = 0;
            numeric yyAritQuadTOTALS2TM5 = 0;
            numeric yyAritQuadTOTALS2TM7 = 0;
    
            numeric qXYTOTALS2TM1 = 0;
            numeric qXYTOTALS2TM2 = 0;
            numeric qXYTOTALS2TM3 = 0;
            numeric qXYTOTALS2TM4 = 0;
            numeric qXYTOTALS2TM5 = 0;
            numeric qXYTOTALS2TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS2TM1 = xTOTALS2TM1 + pifTOTALS1TM1arrayRAND[m];
                xTOTALS2TM2 = xTOTALS2TM2 + pifTOTALS1TM2arrayRAND[m];
                xTOTALS2TM3 = xTOTALS2TM3 + pifTOTALS1TM3arrayRAND[m];
                xTOTALS2TM4 = xTOTALS2TM4 + pifTOTALS1TM4arrayRAND[m];
                xTOTALS2TM5 = xTOTALS2TM5 + pifTOTALS1TM5arrayRAND[m];
                xTOTALS2TM7 = xTOTALS2TM7 + pifTOTALS1TM7arrayRAND[m];
    
                xQuadTOTALS2TM1 = (xQuadTOTALS2TM1 + (pifTOTALS1TM1arrayRAND[m]^2));
                xQuadTOTALS2TM2 = (xQuadTOTALS2TM2 + (pifTOTALS1TM2arrayRAND[m]^2));
                xQuadTOTALS2TM3 = (xQuadTOTALS2TM3 + (pifTOTALS1TM3arrayRAND[m]^2));
                xQuadTOTALS2TM4 = (xQuadTOTALS2TM4 + (pifTOTALS1TM4arrayRAND[m]^2));
                xQuadTOTALS2TM5 = (xQuadTOTALS2TM5 + (pifTOTALS1TM5arrayRAND[m]^2));
                xQuadTOTALS2TM7 = (xQuadTOTALS2TM7 + (pifTOTALS1TM7arrayRAND[m]^2));
    
                yTOTALS2TM1 = yTOTALS2TM1 + pifTOTALS2TM1arrayRAND[m];
                yTOTALS2TM2 = yTOTALS2TM2 + pifTOTALS2TM2arrayRAND[m];
                yTOTALS2TM3 = yTOTALS2TM3 + pifTOTALS2TM3arrayRAND[m];
                yTOTALS2TM4 = yTOTALS2TM4 + pifTOTALS2TM4arrayRAND[m];
                yTOTALS2TM5 = yTOTALS2TM5 + pifTOTALS2TM5arrayRAND[m];
                yTOTALS2TM7 = yTOTALS2TM7 + pifTOTALS2TM7arrayRAND[m];
                
                yQuadTOTALS2TM1 = (yQuadTOTALS2TM1 + (pifTOTALS2TM1arrayRAND[m]^2));
                yQuadTOTALS2TM2 = (yQuadTOTALS2TM2 + (pifTOTALS2TM2arrayRAND[m]^2));
                yQuadTOTALS2TM3 = (yQuadTOTALS2TM3 + (pifTOTALS2TM3arrayRAND[m]^2));
                yQuadTOTALS2TM4 = (yQuadTOTALS2TM4 + (pifTOTALS2TM4arrayRAND[m]^2));
                yQuadTOTALS2TM5 = (yQuadTOTALS2TM5 + (pifTOTALS2TM5arrayRAND[m]^2));
                yQuadTOTALS2TM7 = (yQuadTOTALS2TM7 + (pifTOTALS2TM7arrayRAND[m]^2));
    
                xyTOTALS2TM1 = (xyTOTALS2TM1 + (pifTOTALS1TM1arrayRAND[m] * pifTOTALS2TM1arrayRAND[m]));
                xyTOTALS2TM2 = (xyTOTALS2TM2 + (pifTOTALS1TM2arrayRAND[m] * pifTOTALS2TM2arrayRAND[m]));
                xyTOTALS2TM3 = (xyTOTALS2TM3 + (pifTOTALS1TM3arrayRAND[m] * pifTOTALS2TM3arrayRAND[m]));
                xyTOTALS2TM4 = (xyTOTALS2TM4 + (pifTOTALS1TM4arrayRAND[m] * pifTOTALS2TM4arrayRAND[m]));
                xyTOTALS2TM5 = (xyTOTALS2TM5 + (pifTOTALS1TM5arrayRAND[m] * pifTOTALS2TM5arrayRAND[m]));
                xyTOTALS2TM7 = (xyTOTALS2TM7 + (pifTOTALS1TM7arrayRAND[m] * pifTOTALS2TM7arrayRAND[m]));
            }	
            
            xAritTOTALS2TM1 = xTOTALS2TM1 / minPifVAL;
            xAritTOTALS2TM2 = xTOTALS2TM2 / minPifVAL;
            xAritTOTALS2TM3 = xTOTALS2TM3 / minPifVAL;
            xAritTOTALS2TM4 = xTOTALS2TM4 / minPifVAL;
            xAritTOTALS2TM5 = xTOTALS2TM5 / minPifVAL;
            xAritTOTALS2TM7 = xTOTALS2TM7 / minPifVAL;
    
            yAritTOTALS2TM1 = yTOTALS2TM1 / minPifVAL;
            yAritTOTALS2TM2 = yTOTALS2TM2 / minPifVAL;
            yAritTOTALS2TM3 = yTOTALS2TM3 / minPifVAL;
            yAritTOTALS2TM4 = yTOTALS2TM4 / minPifVAL;
            yAritTOTALS2TM5 = yTOTALS2TM5 / minPifVAL;
            yAritTOTALS2TM7 = yTOTALS2TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2TM1 = (xxAritQuadTOTALS2TM1 + ((pifTOTALS1TM1arrayRAND[n] - xAritTOTALS2TM1)^2));
                xxAritQuadTOTALS2TM2 = (xxAritQuadTOTALS2TM2 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS2TM2)^2));
                xxAritQuadTOTALS2TM3 = (xxAritQuadTOTALS2TM3 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS2TM3)^2));
                xxAritQuadTOTALS2TM4 = (xxAritQuadTOTALS2TM4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS2TM4)^2));
                xxAritQuadTOTALS2TM5 = (xxAritQuadTOTALS2TM5 + ((pifTOTALS1TM5arrayRAND[n] - xAritTOTALS2TM5)^2));
                xxAritQuadTOTALS2TM7 = (xxAritQuadTOTALS2TM7 + ((pifTOTALS1TM7arrayRAND[n] - xAritTOTALS2TM7)^2));
    
                yyAritQuadTOTALS2TM1 = (yyAritQuadTOTALS2TM1 + ((pifTOTALS2TM1arrayRAND[n] - yAritTOTALS2TM1)^2));
                yyAritQuadTOTALS2TM2 = (yyAritQuadTOTALS2TM2 + ((pifTOTALS2TM2arrayRAND[n] - yAritTOTALS2TM2)^2));
                yyAritQuadTOTALS2TM3 = (yyAritQuadTOTALS2TM3 + ((pifTOTALS2TM3arrayRAND[n] - yAritTOTALS2TM3)^2));
                yyAritQuadTOTALS2TM4 = (yyAritQuadTOTALS2TM4 + ((pifTOTALS2TM4arrayRAND[n] - yAritTOTALS2TM4)^2));
                yyAritQuadTOTALS2TM5 = (yyAritQuadTOTALS2TM5 + ((pifTOTALS2TM5arrayRAND[n] - yAritTOTALS2TM5)^2));
                yyAritQuadTOTALS2TM7 = (yyAritQuadTOTALS2TM7 + ((pifTOTALS2TM7arrayRAND[n] - yAritTOTALS2TM7)^2));
    
                qXYTOTALS2TM1 = (qXYTOTALS2TM1 + ((pifTOTALS1TM1arrayRAND[n] - xAritTOTALS2TM1) * (pifTOTALS2TM1arrayRAND[n] - yAritTOTALS2TM1)));
                qXYTOTALS2TM2 = (qXYTOTALS2TM2 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS2TM2) * (pifTOTALS2TM2arrayRAND[n] - yAritTOTALS2TM2)));
                qXYTOTALS2TM3 = (qXYTOTALS2TM3 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS2TM3) * (pifTOTALS2TM3arrayRAND[n] - yAritTOTALS2TM3)));
                qXYTOTALS2TM4 = (qXYTOTALS2TM4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS2TM4) * (pifTOTALS2TM4arrayRAND[n] - yAritTOTALS2TM4)));
                qXYTOTALS2TM5 = (qXYTOTALS2TM5 + ((pifTOTALS1TM5arrayRAND[n] - xAritTOTALS2TM5) * (pifTOTALS2TM5arrayRAND[n] - yAritTOTALS2TM5)));
                qXYTOTALS2TM7 = (qXYTOTALS2TM7 + ((pifTOTALS1TM7arrayRAND[n] - xAritTOTALS2TM7) * (pifTOTALS2TM7arrayRAND[n] - yAritTOTALS2TM7)));
            }
        
            aTOTALS2TM1 = (((xQuadTOTALS2TM1 * yTOTALS2TM1) - (xTOTALS2TM1 * xyTOTALS2TM1)) / ((minPifVAL * xQuadTOTALS2TM1) - (xTOTALS2TM1^2)));
            aTOTALS2TM2 = (((xQuadTOTALS2TM2 * yTOTALS2TM2) - (xTOTALS2TM2 * xyTOTALS2TM2)) / ((minPifVAL * xQuadTOTALS2TM2) - (xTOTALS2TM2^2)));
            aTOTALS2TM3 = (((xQuadTOTALS2TM3 * yTOTALS2TM3) - (xTOTALS2TM3 * xyTOTALS2TM3)) / ((minPifVAL * xQuadTOTALS2TM3) - (xTOTALS2TM3^2)));
            aTOTALS2TM4 = (((xQuadTOTALS2TM4 * yTOTALS2TM4) - (xTOTALS2TM4 * xyTOTALS2TM4)) / ((minPifVAL * xQuadTOTALS2TM4) - (xTOTALS2TM4^2)));
            aTOTALS2TM5 = (((xQuadTOTALS2TM5 * yTOTALS2TM5) - (xTOTALS2TM5 * xyTOTALS2TM5)) / ((minPifVAL * xQuadTOTALS2TM5) - (xTOTALS2TM5^2)));
            aTOTALS2TM7 = (((xQuadTOTALS2TM7 * yTOTALS2TM7) - (xTOTALS2TM7 * xyTOTALS2TM7)) / ((minPifVAL * xQuadTOTALS2TM7) - (xTOTALS2TM7^2)));
            
            bTOTALS2TM1 = qXYTOTALS2TM1 / xxAritQuadTOTALS2TM1;
            bTOTALS2TM2 = qXYTOTALS2TM2 / xxAritQuadTOTALS2TM2;
            bTOTALS2TM3 = qXYTOTALS2TM3 / xxAritQuadTOTALS2TM3;
            bTOTALS2TM4 = qXYTOTALS2TM4 / xxAritQuadTOTALS2TM4;
            bTOTALS2TM5 = qXYTOTALS2TM5 / xxAritQuadTOTALS2TM5;
            bTOTALS2TM7 = qXYTOTALS2TM7 / xxAritQuadTOTALS2TM7;
    
            rTOTALS2TM1 = (qXYTOTALS2TM1 / ((xxAritQuadTOTALS2TM1 * yyAritQuadTOTALS2TM1)^0.5));
            rTOTALS2TM2 = (qXYTOTALS2TM2 / ((xxAritQuadTOTALS2TM2 * yyAritQuadTOTALS2TM2)^0.5));
            rTOTALS2TM3 = (qXYTOTALS2TM3 / ((xxAritQuadTOTALS2TM3 * yyAritQuadTOTALS2TM3)^0.5));
            rTOTALS2TM4 = (qXYTOTALS2TM4 / ((xxAritQuadTOTALS2TM4 * yyAritQuadTOTALS2TM4)^0.5));
            rTOTALS2TM5 = (qXYTOTALS2TM5 / ((xxAritQuadTOTALS2TM5 * yyAritQuadTOTALS2TM5)^0.5));
            rTOTALS2TM7 = (qXYTOTALS2TM7 / ((xxAritQuadTOTALS2TM7 * yyAritQuadTOTALS2TM7)^0.5));
    
            rQuadTOTALS2TM1 = ((rTOTALS2TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2TM2 = ((rTOTALS2TM2^2) * 100);
            rQuadTOTALS2TM3 = ((rTOTALS2TM3^2) * 100);
            rQuadTOTALS2TM4 = ((rTOTALS2TM4^2) * 100);
            rQuadTOTALS2TM5 = ((rTOTALS2TM5^2) * 100);
            rQuadTOTALS2TM7 = ((rTOTALS2TM7^2) * 100);
        
            syxTOTALS2TM1 = (((yyAritQuadTOTALS2TM1 - ((qXYTOTALS2TM1^2) / xxAritQuadTOTALS2TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM2 = (((yyAritQuadTOTALS2TM2 - ((qXYTOTALS2TM2^2) / xxAritQuadTOTALS2TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM3 = (((yyAritQuadTOTALS2TM3 - ((qXYTOTALS2TM3^2) / xxAritQuadTOTALS2TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM4 = (((yyAritQuadTOTALS2TM4 - ((qXYTOTALS2TM4^2) / xxAritQuadTOTALS2TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM5 = (((yyAritQuadTOTALS2TM5 - ((qXYTOTALS2TM5^2) / xxAritQuadTOTALS2TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM7 = (((yyAritQuadTOTALS2TM7 - ((qXYTOTALS2TM7^2) / xxAritQuadTOTALS2TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2TM1 = (((syxTOTALS2TM1^2) / xxAritQuadTOTALS2TM1)^0.5);
            bStandTOTALS2TM2 = (((syxTOTALS2TM2^2) / xxAritQuadTOTALS2TM2)^0.5);
            bStandTOTALS2TM3 = (((syxTOTALS2TM3^2) / xxAritQuadTOTALS2TM3)^0.5);
            bStandTOTALS2TM4 = (((syxTOTALS2TM4^2) / xxAritQuadTOTALS2TM4)^0.5);
            bStandTOTALS2TM5 = (((syxTOTALS2TM5^2) / xxAritQuadTOTALS2TM5)^0.5);
            bStandTOTALS2TM7 = (((syxTOTALS2TM7^2) / xxAritQuadTOTALS2TM7)^0.5);
    
            aStandTOTALS2TM1 = (bStandTOTALS2TM1 * ((xQuadTOTALS2TM1 / minPifVAL)^0.5));
            aStandTOTALS2TM2 = (bStandTOTALS2TM2 * ((xQuadTOTALS2TM2 / minPifVAL)^0.5));
            aStandTOTALS2TM3 = (bStandTOTALS2TM3 * ((xQuadTOTALS2TM3 / minPifVAL)^0.5));
            aStandTOTALS2TM4 = (bStandTOTALS2TM4 * ((xQuadTOTALS2TM4 / minPifVAL)^0.5));
            aStandTOTALS2TM5 = (bStandTOTALS2TM5 * ((xQuadTOTALS2TM5 / minPifVAL)^0.5));
            aStandTOTALS2TM7 = (bStandTOTALS2TM7 * ((xQuadTOTALS2TM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM1, bTOTALS2TM1, rTOTALS2TM1, rQuadTOTALS2TM1, aStandTOTALS2TM1, bStandTOTALS2TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM2, bTOTALS2TM2, rTOTALS2TM2, rQuadTOTALS2TM2, aStandTOTALS2TM2, bStandTOTALS2TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM3, bTOTALS2TM3, rTOTALS2TM3, rQuadTOTALS2TM3, aStandTOTALS2TM3, bStandTOTALS2TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM4, bTOTALS2TM4, rTOTALS2TM4, rQuadTOTALS2TM4, aStandTOTALS2TM4, bStandTOTALS2TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM5, bTOTALS2TM5, rTOTALS2TM5, rQuadTOTALS2TM5, aStandTOTALS2TM5, bStandTOTALS2TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS2TM7, bTOTALS2TM7, rTOTALS2TM7, rQuadTOTALS2TM7, aStandTOTALS2TM7, bStandTOTALS2TM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS2TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS2TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS2TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS2TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS2TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS2TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS2TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT2TM1[i,j] = (aTOTALS2TM1 + (bTOTALS2TM1 * REFS2TM1[i,j]));
                    OUT2TM2[i,j] = (aTOTALS2TM2 + (bTOTALS2TM2 * REFS2TM2[i,j]));
                    OUT2TM3[i,j] = (aTOTALS2TM3 + (bTOTALS2TM3 * REFS2TM3[i,j]));
                    OUT2TM4[i,j] = (aTOTALS2TM4 + (bTOTALS2TM4 * REFS2TM4[i,j]));
                    OUT2TM5[i,j] = (aTOTALS2TM5 + (bTOTALS2TM5 * REFS2TM5[i,j]));
                    OUT2TM7[i,j] = (aTOTALS2TM7 + (bTOTALS2TM7 * REFS2TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2TM1);
        	CreatePyramid(OUT2TM2);
        	CreatePyramid(OUT2TM3);
        	CreatePyramid(OUT2TM4);
        	CreatePyramid(OUT2TM5);
        	CreatePyramid(OUT2TM7);
        
        	CreateHistogram(OUT2TM1);
        	CreateHistogram(OUT2TM2);
        	CreateHistogram(OUT2TM3);
        	CreateHistogram(OUT2TM4);
        	CreateHistogram(OUT2TM5);
        	CreateHistogram(OUT2TM7);
        
        	CloseRaster(REFS2TM1);
            CloseRaster(REFS2TM2);
            CloseRaster(REFS2TM3);
            CloseRaster(REFS2TM4);
            CloseRaster(REFS2TM5);
            CloseRaster(REFS2TM7);
    
            CloseRaster(OUT2TM1);
            CloseRaster(OUT2TM2);
            CloseRaster(OUT2TM3);
            CloseRaster(OUT2TM4);
            CloseRaster(OUT2TM5);
            CloseRaster(OUT2TM7);
        
        	printf("Scene 2 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            { 
            numeric xAritTOTALS2MSS1, xAritTOTALS2MSS2, xAritTOTALS2MSS4;
            numeric yAritTOTALS2MSS1, yAritTOTALS2MSS2, yAritTOTALS2MSS4;
    
            numeric aTOTALS2MSS1, aTOTALS2MSS2, aTOTALS2MSS4;
            numeric bTOTALS2MSS1, bTOTALS2MSS2, bTOTALS2MSS4;
            numeric rTOTALS2MSS1, rTOTALS2MSS2, rTOTALS2MSS4;
            numeric rQuadTOTALS2MSS1, rQuadTOTALS2MSS2, rQuadTOTALS2MSS4;
            numeric syxTOTALS2MSS1, syxTOTALS2MSS2, syxTOTALS2MSS4;
            numeric bStandTOTALS2MSS1, bStandTOTALS2MSS2, bStandTOTALS2MSS4;
            numeric aStandTOTALS2MSS1, aStandTOTALS2MSS2, aStandTOTALS2MSS4;
    
            numeric xTOTALS2MSS1 = 0;
            numeric xTOTALS2MSS2 = 0;
            numeric xTOTALS2MSS4 = 0;
    
            numeric xQuadTOTALS2MSS1 = 0;
            numeric xQuadTOTALS2MSS2 = 0;
            numeric xQuadTOTALS2MSS4 = 0;
    
            numeric yTOTALS2MSS1 = 0;
            numeric yTOTALS2MSS2 = 0;
            numeric yTOTALS2MSS4 = 0;
    
            numeric yQuadTOTALS2MSS1 = 0;
            numeric yQuadTOTALS2MSS2 = 0;
            numeric yQuadTOTALS2MSS4 = 0;
    
            numeric xyTOTALS2MSS1 = 0;
            numeric xyTOTALS2MSS2 = 0;
            numeric xyTOTALS2MSS4 = 0;
    
            numeric xxAritQuadTOTALS2MSS1 = 0;
            numeric xxAritQuadTOTALS2MSS2 = 0;
            numeric xxAritQuadTOTALS2MSS4 = 0;
    
            numeric yyAritQuadTOTALS2MSS1 = 0;
            numeric yyAritQuadTOTALS2MSS2 = 0;
            numeric yyAritQuadTOTALS2MSS4 = 0;
    
            numeric qXYTOTALS2MSS1 = 0;
            numeric qXYTOTALS2MSS2 = 0;
            numeric qXYTOTALS2MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS2MSS1 = xTOTALS2MSS1 + pifTOTALS1TM2arrayRAND[m];
                xTOTALS2MSS2 = xTOTALS2MSS2 + pifTOTALS1TM3arrayRAND[m];
                xTOTALS2MSS4 = xTOTALS2MSS4 + pifTOTALS1TM4arrayRAND[m];
    
                xQuadTOTALS2MSS1 = (xQuadTOTALS2MSS1 + (pifTOTALS1TM2arrayRAND[m]^2));
                xQuadTOTALS2MSS2 = (xQuadTOTALS2MSS2 + (pifTOTALS1TM3arrayRAND[m]^2));
                xQuadTOTALS2MSS4 = (xQuadTOTALS2MSS4 + (pifTOTALS1TM4arrayRAND[m]^2));
    
                yTOTALS2MSS1 = yTOTALS2MSS1 + pifTOTALS2MSS1arrayRAND[m];
                yTOTALS2MSS2 = yTOTALS2MSS2 + pifTOTALS2MSS2arrayRAND[m];
                yTOTALS2MSS4 = yTOTALS2MSS4 + pifTOTALS2MSS4arrayRAND[m];
                
                yQuadTOTALS2MSS1 = (yQuadTOTALS2MSS1 + (pifTOTALS2MSS1arrayRAND[m]^2));
                yQuadTOTALS2MSS2 = (yQuadTOTALS2MSS2 + (pifTOTALS2MSS2arrayRAND[m]^2));
                yQuadTOTALS2MSS4 = (yQuadTOTALS2MSS4 + (pifTOTALS2MSS4arrayRAND[m]^2));
    
                xyTOTALS2MSS1 = (xyTOTALS2MSS1 + (pifTOTALS1TM2arrayRAND[m] * pifTOTALS2MSS1arrayRAND[m]));
                xyTOTALS2MSS2 = (xyTOTALS2MSS2 + (pifTOTALS1TM3arrayRAND[m] * pifTOTALS2MSS2arrayRAND[m]));
                xyTOTALS2MSS4 = (xyTOTALS2MSS4 + (pifTOTALS1TM4arrayRAND[m] * pifTOTALS2MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS2MSS1 = xTOTALS2MSS1 / minPifVAL;
            xAritTOTALS2MSS2 = xTOTALS2MSS2 / minPifVAL;
            xAritTOTALS2MSS3 = xTOTALS2MSS3 / minPifVAL;
            xAritTOTALS2MSS4 = xTOTALS2MSS4 / minPifVAL;
    
            yAritTOTALS2MSS1 = yTOTALS2MSS1 / minPifVAL;
            yAritTOTALS2MSS2 = yTOTALS2MSS2 / minPifVAL;
            yAritTOTALS2MSS3 = yTOTALS2MSS3 / minPifVAL;
            yAritTOTALS2MSS4 = yTOTALS2MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2MSS1 = (xxAritQuadTOTALS2MSS1 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS2MSS1)^2));
                xxAritQuadTOTALS2MSS2 = (xxAritQuadTOTALS2MSS2 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS2MSS2)^2));
                xxAritQuadTOTALS2MSS4 = (xxAritQuadTOTALS2MSS4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS2MSS4)^2));
    
                yyAritQuadTOTALS2MSS1 = (yyAritQuadTOTALS2MSS1 + ((pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)^2));
                yyAritQuadTOTALS2MSS2 = (yyAritQuadTOTALS2MSS2 + ((pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)^2));
                yyAritQuadTOTALS2MSS4 = (yyAritQuadTOTALS2MSS4 + ((pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)^2));
    
                qXYTOTALS2MSS1 = (qXYTOTALS2MSS1 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS2MSS1) * (pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)));
                qXYTOTALS2MSS2 = (qXYTOTALS2MSS2 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS2MSS2) * (pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)));
                qXYTOTALS2MSS4 = (qXYTOTALS2MSS4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS2MSS4) * (pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)));
            }
        
            aTOTALS2MSS1 = (((xQuadTOTALS2MSS1 * yTOTALS2MSS1) - (xTOTALS2MSS1 * xyTOTALS2MSS1)) / ((minPifVAL * xQuadTOTALS2MSS1) - (xTOTALS2MSS1^2)));
            aTOTALS2MSS2 = (((xQuadTOTALS2MSS2 * yTOTALS2MSS2) - (xTOTALS2MSS2 * xyTOTALS2MSS2)) / ((minPifVAL * xQuadTOTALS2MSS2) - (xTOTALS2MSS2^2)));
            aTOTALS2MSS4 = (((xQuadTOTALS2MSS4 * yTOTALS2MSS4) - (xTOTALS2MSS4 * xyTOTALS2MSS4)) / ((minPifVAL * xQuadTOTALS2MSS4) - (xTOTALS2MSS4^2)));
            
            bTOTALS2MSS1 = qXYTOTALS2MSS1 / xxAritQuadTOTALS2MSS1;
            bTOTALS2MSS2 = qXYTOTALS2MSS2 / xxAritQuadTOTALS2MSS2;
            bTOTALS2MSS4 = qXYTOTALS2MSS4 / xxAritQuadTOTALS2MSS4;
    
            rTOTALS2MSS1 = (qXYTOTALS2MSS1 / ((xxAritQuadTOTALS2MSS1 * yyAritQuadTOTALS2MSS1)^0.5));
            rTOTALS2MSS2 = (qXYTOTALS2MSS2 / ((xxAritQuadTOTALS2MSS2 * yyAritQuadTOTALS2MSS2)^0.5));
            rTOTALS2MSS4 = (qXYTOTALS2MSS4 / ((xxAritQuadTOTALS2MSS4 * yyAritQuadTOTALS2MSS4)^0.5));
    
            rQuadTOTALS2MSS1 = ((rTOTALS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2MSS2 = ((rTOTALS2MSS2^2) * 100);
            rQuadTOTALS2MSS4 = ((rTOTALS2MSS4^2) * 100);
        
            syxTOTALS2MSS1 = (((yyAritQuadTOTALS2MSS1 - ((qXYTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS2 = (((yyAritQuadTOTALS2MSS2 - ((qXYTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS4 = (((yyAritQuadTOTALS2MSS4 - ((qXYTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2MSS1 = (((syxTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)^0.5);
            bStandTOTALS2MSS2 = (((syxTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)^0.5);
            bStandTOTALS2MSS4 = (((syxTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)^0.5);
    
            aStandTOTALS2MSS1 = (bStandTOTALS2MSS1 * ((xQuadTOTALS2MSS1 / minPifVAL)^0.5));
            aStandTOTALS2MSS2 = (bStandTOTALS2MSS2 * ((xQuadTOTALS2MSS2 / minPifVAL)^0.5));
            aStandTOTALS2MSS4 = (bStandTOTALS2MSS4 * ((xQuadTOTALS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS1, bTOTALS2MSS1, rTOTALS2MSS1, rQuadTOTALS2MSS1, aStandTOTALS2MSS1, bStandTOTALS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS2, bTOTALS2MSS2, rTOTALS2MSS2, rQuadTOTALS2MSS2, aStandTOTALS2MSS2, bStandTOTALS2MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS4, bTOTALS2MSS4, rTOTALS2MSS4, rQuadTOTALS2MSS4, aStandTOTALS2MSS4, bStandTOTALS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS2MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS2MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS2arrayRAND[minPifVAL]);
        
            printf("MSS4: %12f ", pifTOTALS2MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aTOTALS2MSS1 + (bTOTALS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aTOTALS2MSS2 + (bTOTALS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = REFS2MSS3[i,j];
                    OUT2MSS4[i,j] = (aTOTALS2MSS4 + (bTOTALS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT2MSS1);
        	CreatePyramid(OUT2MSS2);
        	CreatePyramid(OUT2MSS3);
        	CreatePyramid(OUT2MSS4);
        
        	CreateHistogram(OUT2MSS1);
        	CreateHistogram(OUT2MSS2);
        	CreateHistogram(OUT2MSS3);
        	CreateHistogram(OUT2MSS4);
        
        	CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors3 == 7 )
            {
            numeric xAritTOTALS3ETM1, xAritTOTALS3ETM2, xAritTOTALS3ETM3, xAritTOTALS3ETM4, xAritTOTALS3ETM5, xAritTOTALS3ETM7;
            numeric yAritTOTALS3ETM1, yAritTOTALS3ETM2, yAritTOTALS3ETM3, yAritTOTALS3ETM4, yAritTOTALS3ETM5, yAritTOTALS3ETM7;
    
            numeric aTOTALS3ETM1, aTOTALS3ETM2, aTOTALS3ETM3, aTOTALS3ETM4, aTOTALS3ETM5, aTOTALS3ETM7;
            numeric bTOTALS3ETM1, bTOTALS3ETM2, bTOTALS3ETM3, bTOTALS3ETM4, bTOTALS3ETM5, bTOTALS3ETM7;
            numeric rTOTALS3ETM1, rTOTALS3ETM2, rTOTALS3ETM3, rTOTALS3ETM4, rTOTALS3ETM5, rTOTALS3ETM7;
            numeric rQuadTOTALS3ETM1, rQuadTOTALS3ETM2, rQuadTOTALS3ETM3, rQuadTOTALS3ETM4, rQuadTOTALS3ETM5, rQuadTOTALS3ETM7;
            numeric syxTOTALS3ETM1, syxTOTALS3ETM2, syxTOTALS3ETM3, syxTOTALS3ETM4, syxTOTALS3ETM5, syxTOTALS3ETM7;
            numeric bStandTOTALS3ETM1, bStandTOTALS3ETM2, bStandTOTALS3ETM3, bStandTOTALS3ETM4, bStandTOTALS3ETM5, bStandTOTALS3ETM7;
            numeric aStandTOTALS3ETM1, aStandTOTALS3ETM2, aStandTOTALS3ETM3, aStandTOTALS3ETM4, aStandTOTALS3ETM5, aStandTOTALS3ETM7;
    
            numeric xTOTALS3ETM1 = 0;
            numeric xTOTALS3ETM2 = 0;
            numeric xTOTALS3ETM3 = 0;
            numeric xTOTALS3ETM4 = 0;
            numeric xTOTALS3ETM5 = 0;
            numeric xTOTALS3ETM7 = 0;
    
            numeric xQuadTOTALS3ETM1 = 0;
            numeric xQuadTOTALS3ETM2 = 0;
            numeric xQuadTOTALS3ETM3 = 0;
            numeric xQuadTOTALS3ETM4 = 0;
            numeric xQuadTOTALS3ETM5 = 0;
            numeric xQuadTOTALS3ETM7 = 0;
    
            numeric yTOTALS3ETM1 = 0;
            numeric yTOTALS3ETM2 = 0;
            numeric yTOTALS3ETM3 = 0;
            numeric yTOTALS3ETM4 = 0;
            numeric yTOTALS3ETM5 = 0;
            numeric yTOTALS3ETM7 = 0;
    
            numeric yQuadTOTALS3ETM1 = 0;
            numeric yQuadTOTALS3ETM2 = 0;
            numeric yQuadTOTALS3ETM3 = 0;
            numeric yQuadTOTALS3ETM4 = 0;
            numeric yQuadTOTALS3ETM5 = 0;
            numeric yQuadTOTALS3ETM7 = 0;
    
            numeric xyTOTALS3ETM1 = 0;
            numeric xyTOTALS3ETM2 = 0;
            numeric xyTOTALS3ETM3 = 0;
            numeric xyTOTALS3ETM4 = 0;
            numeric xyTOTALS3ETM5 = 0;
            numeric xyTOTALS3ETM7 = 0;
    
            numeric xxAritQuadTOTALS3ETM1 = 0;
            numeric xxAritQuadTOTALS3ETM2 = 0;
            numeric xxAritQuadTOTALS3ETM3 = 0;
            numeric xxAritQuadTOTALS3ETM4 = 0;
            numeric xxAritQuadTOTALS3ETM5 = 0;
            numeric xxAritQuadTOTALS3ETM7 = 0;
    
            numeric yyAritQuadTOTALS3ETM1 = 0;
            numeric yyAritQuadTOTALS3ETM2 = 0;
            numeric yyAritQuadTOTALS3ETM3 = 0;
            numeric yyAritQuadTOTALS3ETM4 = 0;
            numeric yyAritQuadTOTALS3ETM5 = 0;
            numeric yyAritQuadTOTALS3ETM7 = 0;
    
            numeric qXYTOTALS3ETM1 = 0;
            numeric qXYTOTALS3ETM2 = 0;
            numeric qXYTOTALS3ETM3 = 0;
            numeric qXYTOTALS3ETM4 = 0;
            numeric qXYTOTALS3ETM5 = 0;
            numeric qXYTOTALS3ETM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS3ETM1 = xTOTALS3ETM1 + pifTOTALS1TM1arrayRAND[m];
                xTOTALS3ETM2 = xTOTALS3ETM2 + pifTOTALS1TM2arrayRAND[m];
                xTOTALS3ETM3 = xTOTALS3ETM3 + pifTOTALS1TM3arrayRAND[m];
                xTOTALS3ETM4 = xTOTALS3ETM4 + pifTOTALS1TM4arrayRAND[m];
                xTOTALS3ETM5 = xTOTALS3ETM5 + pifTOTALS1TM5arrayRAND[m];
                xTOTALS3ETM7 = xTOTALS3ETM7 + pifTOTALS1TM7arrayRAND[m];
    
                xQuadTOTALS3ETM1 = (xQuadTOTALS3ETM1 + (pifTOTALS1TM1arrayRAND[m]^2));
                xQuadTOTALS3ETM2 = (xQuadTOTALS3ETM2 + (pifTOTALS1TM2arrayRAND[m]^2));
                xQuadTOTALS3ETM3 = (xQuadTOTALS3ETM3 + (pifTOTALS1TM3arrayRAND[m]^2));
                xQuadTOTALS3ETM4 = (xQuadTOTALS3ETM4 + (pifTOTALS1TM4arrayRAND[m]^2));
                xQuadTOTALS3ETM5 = (xQuadTOTALS3ETM5 + (pifTOTALS1TM5arrayRAND[m]^2));
                xQuadTOTALS3ETM7 = (xQuadTOTALS3ETM7 + (pifTOTALS1TM7arrayRAND[m]^2));
    
                yTOTALS3ETM1 = yTOTALS3ETM1 + pifTOTALS3ETM1arrayRAND[m];
                yTOTALS3ETM2 = yTOTALS3ETM2 + pifTOTALS3ETM2arrayRAND[m];
                yTOTALS3ETM3 = yTOTALS3ETM3 + pifTOTALS3ETM3arrayRAND[m];
                yTOTALS3ETM4 = yTOTALS3ETM4 + pifTOTALS3ETM4arrayRAND[m];
                yTOTALS3ETM5 = yTOTALS3ETM5 + pifTOTALS3ETM5arrayRAND[m];
                yTOTALS3ETM7 = yTOTALS3ETM7 + pifTOTALS3ETM7arrayRAND[m];
                
                yQuadTOTALS3ETM1 = (yQuadTOTALS3ETM1 + (pifTOTALS3ETM1arrayRAND[m]^2));
                yQuadTOTALS3ETM2 = (yQuadTOTALS3ETM2 + (pifTOTALS3ETM2arrayRAND[m]^2));
                yQuadTOTALS3ETM3 = (yQuadTOTALS3ETM3 + (pifTOTALS3ETM3arrayRAND[m]^2));
                yQuadTOTALS3ETM4 = (yQuadTOTALS3ETM4 + (pifTOTALS3ETM4arrayRAND[m]^2));
                yQuadTOTALS3ETM5 = (yQuadTOTALS3ETM5 + (pifTOTALS3ETM5arrayRAND[m]^2));
                yQuadTOTALS3ETM7 = (yQuadTOTALS3ETM7 + (pifTOTALS3ETM7arrayRAND[m]^2));
    
                xyTOTALS3ETM1 = (xyTOTALS3ETM1 + (pifTOTALS1TM1arrayRAND[m] * pifTOTALS3ETM1arrayRAND[m]));
                xyTOTALS3ETM2 = (xyTOTALS3ETM2 + (pifTOTALS1TM2arrayRAND[m] * pifTOTALS3ETM2arrayRAND[m]));
                xyTOTALS3ETM3 = (xyTOTALS3ETM3 + (pifTOTALS1TM3arrayRAND[m] * pifTOTALS3ETM3arrayRAND[m]));
                xyTOTALS3ETM4 = (xyTOTALS3ETM4 + (pifTOTALS1TM4arrayRAND[m] * pifTOTALS3ETM4arrayRAND[m]));
                xyTOTALS3ETM5 = (xyTOTALS3ETM5 + (pifTOTALS1TM5arrayRAND[m] * pifTOTALS3ETM5arrayRAND[m]));
                xyTOTALS3ETM7 = (xyTOTALS3ETM7 + (pifTOTALS1TM7arrayRAND[m] * pifTOTALS3ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS3ETM1 = xTOTALS3ETM1 / minPifVAL;
            xAritTOTALS3ETM2 = xTOTALS3ETM2 / minPifVAL;
            xAritTOTALS3ETM3 = xTOTALS3ETM3 / minPifVAL;
            xAritTOTALS3ETM4 = xTOTALS3ETM4 / minPifVAL;
            xAritTOTALS3ETM5 = xTOTALS3ETM5 / minPifVAL;
            xAritTOTALS3ETM7 = xTOTALS3ETM7 / minPifVAL;
    
            yAritTOTALS3ETM1 = yTOTALS3ETM1 / minPifVAL;
            yAritTOTALS3ETM2 = yTOTALS3ETM2 / minPifVAL;
            yAritTOTALS3ETM3 = yTOTALS3ETM3 / minPifVAL;
            yAritTOTALS3ETM4 = yTOTALS3ETM4 / minPifVAL;
            yAritTOTALS3ETM5 = yTOTALS3ETM5 / minPifVAL;
            yAritTOTALS3ETM7 = yTOTALS3ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3ETM1 = (xxAritQuadTOTALS3ETM1 + ((pifTOTALS1TM1arrayRAND[n] - xAritTOTALS3ETM1)^2));
                xxAritQuadTOTALS3ETM2 = (xxAritQuadTOTALS3ETM2 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS3ETM2)^2));
                xxAritQuadTOTALS3ETM3 = (xxAritQuadTOTALS3ETM3 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS3ETM3)^2));
                xxAritQuadTOTALS3ETM4 = (xxAritQuadTOTALS3ETM4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS3ETM4)^2));
                xxAritQuadTOTALS3ETM5 = (xxAritQuadTOTALS3ETM5 + ((pifTOTALS1TM5arrayRAND[n] - xAritTOTALS3ETM5)^2));
                xxAritQuadTOTALS3ETM7 = (xxAritQuadTOTALS3ETM7 + ((pifTOTALS1TM7arrayRAND[n] - xAritTOTALS3ETM7)^2));
    
                yyAritQuadTOTALS3ETM1 = (yyAritQuadTOTALS3ETM1 + ((pifTOTALS3ETM1arrayRAND[n] - yAritTOTALS3ETM1)^2));
                yyAritQuadTOTALS3ETM2 = (yyAritQuadTOTALS3ETM2 + ((pifTOTALS3ETM2arrayRAND[n] - yAritTOTALS3ETM2)^2));
                yyAritQuadTOTALS3ETM3 = (yyAritQuadTOTALS3ETM3 + ((pifTOTALS3ETM3arrayRAND[n] - yAritTOTALS3ETM3)^2));
                yyAritQuadTOTALS3ETM4 = (yyAritQuadTOTALS3ETM4 + ((pifTOTALS3ETM4arrayRAND[n] - yAritTOTALS3ETM4)^2));
                yyAritQuadTOTALS3ETM5 = (yyAritQuadTOTALS3ETM5 + ((pifTOTALS3ETM5arrayRAND[n] - yAritTOTALS3ETM5)^2));
                yyAritQuadTOTALS3ETM7 = (yyAritQuadTOTALS3ETM7 + ((pifTOTALS3ETM7arrayRAND[n] - yAritTOTALS3ETM7)^2));
    
                qXYTOTALS3ETM1 = (qXYTOTALS3ETM1 + ((pifTOTALS1TM1arrayRAND[n] - xAritTOTALS3ETM1) * (pifTOTALS3ETM1arrayRAND[n] - yAritTOTALS3ETM1)));
                qXYTOTALS3ETM2 = (qXYTOTALS3ETM2 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS3ETM2) * (pifTOTALS3ETM2arrayRAND[n] - yAritTOTALS3ETM2)));
                qXYTOTALS3ETM3 = (qXYTOTALS3ETM3 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS3ETM3) * (pifTOTALS3ETM3arrayRAND[n] - yAritTOTALS3ETM3)));
                qXYTOTALS3ETM4 = (qXYTOTALS3ETM4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS3ETM4) * (pifTOTALS3ETM4arrayRAND[n] - yAritTOTALS3ETM4)));
                qXYTOTALS3ETM5 = (qXYTOTALS3ETM5 + ((pifTOTALS1TM5arrayRAND[n] - xAritTOTALS3ETM5) * (pifTOTALS3ETM5arrayRAND[n] - yAritTOTALS3ETM5)));
                qXYTOTALS3ETM7 = (qXYTOTALS3ETM7 + ((pifTOTALS1TM7arrayRAND[n] - xAritTOTALS3ETM7) * (pifTOTALS3ETM7arrayRAND[n] - yAritTOTALS3ETM7)));
            }
        
            aTOTALS3ETM1 = (((xQuadTOTALS3ETM1 * yTOTALS3ETM1) - (xTOTALS3ETM1 * xyTOTALS3ETM1)) / ((minPifVAL * xQuadTOTALS3ETM1) - (xTOTALS3ETM1^2)));
            aTOTALS3ETM2 = (((xQuadTOTALS3ETM2 * yTOTALS3ETM2) - (xTOTALS3ETM2 * xyTOTALS3ETM2)) / ((minPifVAL * xQuadTOTALS3ETM2) - (xTOTALS3ETM2^2)));
            aTOTALS3ETM3 = (((xQuadTOTALS3ETM3 * yTOTALS3ETM3) - (xTOTALS3ETM3 * xyTOTALS3ETM3)) / ((minPifVAL * xQuadTOTALS3ETM3) - (xTOTALS3ETM3^2)));
            aTOTALS3ETM4 = (((xQuadTOTALS3ETM4 * yTOTALS3ETM4) - (xTOTALS3ETM4 * xyTOTALS3ETM4)) / ((minPifVAL * xQuadTOTALS3ETM4) - (xTOTALS3ETM4^2)));
            aTOTALS3ETM5 = (((xQuadTOTALS3ETM5 * yTOTALS3ETM5) - (xTOTALS3ETM5 * xyTOTALS3ETM5)) / ((minPifVAL * xQuadTOTALS3ETM5) - (xTOTALS3ETM5^2)));
            aTOTALS3ETM7 = (((xQuadTOTALS3ETM7 * yTOTALS3ETM7) - (xTOTALS3ETM7 * xyTOTALS3ETM7)) / ((minPifVAL * xQuadTOTALS3ETM7) - (xTOTALS3ETM7^2)));
            
            bTOTALS3ETM1 = qXYTOTALS3ETM1 / xxAritQuadTOTALS3ETM1;
            bTOTALS3ETM2 = qXYTOTALS3ETM2 / xxAritQuadTOTALS3ETM2;
            bTOTALS3ETM3 = qXYTOTALS3ETM3 / xxAritQuadTOTALS3ETM3;
            bTOTALS3ETM4 = qXYTOTALS3ETM4 / xxAritQuadTOTALS3ETM4;
            bTOTALS3ETM5 = qXYTOTALS3ETM5 / xxAritQuadTOTALS3ETM5;
            bTOTALS3ETM7 = qXYTOTALS3ETM7 / xxAritQuadTOTALS3ETM7;
    
            rTOTALS3ETM1 = (qXYTOTALS3ETM1 / ((xxAritQuadTOTALS3ETM1 * yyAritQuadTOTALS3ETM1)^0.5));
            rTOTALS3ETM2 = (qXYTOTALS3ETM2 / ((xxAritQuadTOTALS3ETM2 * yyAritQuadTOTALS3ETM2)^0.5));
            rTOTALS3ETM3 =(qXYTOTALS3ETM3 / ((xxAritQuadTOTALS3ETM3 * yyAritQuadTOTALS3ETM3)^0.5));
            rTOTALS3ETM4 = (qXYTOTALS3ETM4 / ((xxAritQuadTOTALS3ETM4 * yyAritQuadTOTALS3ETM4)^0.5));
            rTOTALS3ETM5 = (qXYTOTALS3ETM5 / ((xxAritQuadTOTALS3ETM5 * yyAritQuadTOTALS3ETM5)^0.5));
            rTOTALS3ETM7 = (qXYTOTALS3ETM7 / ((xxAritQuadTOTALS3ETM7 * yyAritQuadTOTALS3ETM7)^0.5));
    
            rQuadTOTALS3ETM1 = ((rTOTALS3ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3ETM2 = ((rTOTALS3ETM2^2) * 100);
            rQuadTOTALS3ETM3 = ((rTOTALS3ETM3^2) * 100);
            rQuadTOTALS3ETM4 = ((rTOTALS3ETM4^2) * 100);
            rQuadTOTALS3ETM5 = ((rTOTALS3ETM5^2) * 100);
            rQuadTOTALS3ETM7 = ((rTOTALS3ETM7^2) * 100);
        
            syxTOTALS3ETM1 = (((yyAritQuadTOTALS3ETM1 - ((qXYTOTALS3ETM1^2) / xxAritQuadTOTALS3ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM2 = (((yyAritQuadTOTALS3ETM2 - ((qXYTOTALS3ETM2^2) / xxAritQuadTOTALS3ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM3 = (((yyAritQuadTOTALS3ETM3 - ((qXYTOTALS3ETM3^2) / xxAritQuadTOTALS3ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM4 = (((yyAritQuadTOTALS3ETM4 - ((qXYTOTALS3ETM4^2) / xxAritQuadTOTALS3ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM5 = (((yyAritQuadTOTALS3ETM5 - ((qXYTOTALS3ETM5^2) / xxAritQuadTOTALS3ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM7 = (((yyAritQuadTOTALS3ETM7 - ((qXYTOTALS3ETM7^2) / xxAritQuadTOTALS3ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3ETM1 = (((syxTOTALS3ETM1^2) / xxAritQuadTOTALS3ETM1)^0.5);
            bStandTOTALS3ETM2 = (((syxTOTALS3ETM2^2) / xxAritQuadTOTALS3ETM2)^0.5);
            bStandTOTALS3ETM3 = (((syxTOTALS3ETM3^2) / xxAritQuadTOTALS3ETM3)^0.5);
            bStandTOTALS3ETM4 = (((syxTOTALS3ETM4^2) / xxAritQuadTOTALS3ETM4)^0.5);
            bStandTOTALS3ETM5 = (((syxTOTALS3ETM5^2) / xxAritQuadTOTALS3ETM5)^0.5);
            bStandTOTALS3ETM7 = (((syxTOTALS3ETM7^2) / xxAritQuadTOTALS3ETM7)^0.5);
    
            aStandTOTALS3ETM1 = (bStandTOTALS3ETM1 * ((xQuadTOTALS3ETM1 / minPifVAL)^0.5));
            aStandTOTALS3ETM2 = (bStandTOTALS3ETM2 * ((xQuadTOTALS3ETM2 / minPifVAL)^0.5));
            aStandTOTALS3ETM3 = (bStandTOTALS3ETM3 * ((xQuadTOTALS3ETM3 / minPifVAL)^0.5));
            aStandTOTALS3ETM4 = (bStandTOTALS3ETM4 * ((xQuadTOTALS3ETM4 / minPifVAL)^0.5));
            aStandTOTALS3ETM5 = (bStandTOTALS3ETM5 * ((xQuadTOTALS3ETM5 / minPifVAL)^0.5));
            aStandTOTALS3ETM7 = (bStandTOTALS3ETM7 * ((xQuadTOTALS3ETM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM1, bTOTALS3ETM1, rTOTALS3ETM1, rQuadTOTALS3ETM1, aStandTOTALS3ETM1, bStandTOTALS3ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM2, bTOTALS3ETM2, rTOTALS3ETM2, rQuadTOTALS3ETM2, aStandTOTALS3ETM2, bStandTOTALS3ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM3, bTOTALS3ETM3, rTOTALS3ETM3, rQuadTOTALS3ETM3, aStandTOTALS3ETM3, bStandTOTALS3ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM4, bTOTALS3ETM4, rTOTALS3ETM4, rQuadTOTALS3ETM4, aStandTOTALS3ETM4, bStandTOTALS3ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM5, bTOTALS3ETM5, rTOTALS3ETM5, rQuadTOTALS3ETM5, aStandTOTALS3ETM5, bStandTOTALS3ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS3ETM7, bTOTALS3ETM7, rTOTALS3ETM7, rQuadTOTALS3ETM7, aStandTOTALS3ETM7, bStandTOTALS3ETM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS3ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS3ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS3ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS3ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS3ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS3ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS3ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT3ETM1[i,j] = (aTOTALS3ETM1 + (bTOTALS3ETM1 * REFS3ETM1[i,j]));
                    OUT3ETM2[i,j] = (aTOTALS3ETM2 + (bTOTALS3ETM2 * REFS3ETM2[i,j]));
                    OUT3ETM3[i,j] = (aTOTALS3ETM3 + (bTOTALS3ETM3 * REFS3ETM3[i,j]));
                    OUT3ETM4[i,j] = (aTOTALS3ETM4 + (bTOTALS3ETM4 * REFS3ETM4[i,j]));
                    OUT3ETM5[i,j] = (aTOTALS3ETM5 + (bTOTALS3ETM5 * REFS3ETM5[i,j]));
                    OUT3ETM7[i,j] = (aTOTALS3ETM7 + (bTOTALS3ETM7 * REFS3ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3ETM1);
        	CreatePyramid(OUT3ETM2);
        	CreatePyramid(OUT3ETM3);
        	CreatePyramid(OUT3ETM4);
        	CreatePyramid(OUT3ETM5);
        	CreatePyramid(OUT3ETM7);
        
        	CreateHistogram(OUT3ETM1);
        	CreateHistogram(OUT3ETM2);
        	CreateHistogram(OUT3ETM3);
        	CreateHistogram(OUT3ETM4);
        	CreateHistogram(OUT3ETM5);
        	CreateHistogram(OUT3ETM7);
        
        	CloseRaster(REFS3ETM1);
            CloseRaster(REFS3ETM2);
            CloseRaster(REFS3ETM3);
            CloseRaster(REFS3ETM4);
            CloseRaster(REFS3ETM5);
            CloseRaster(REFS3ETM7);
    
            CloseRaster(OUT3ETM1);
            CloseRaster(OUT3ETM2);
            CloseRaster(OUT3ETM3);
            CloseRaster(OUT3ETM4);
            CloseRaster(OUT3ETM5);
            CloseRaster(OUT3ETM7); 
        
        	printf("Scene 3 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors3 == 6 )
            {
            numeric xAritTOTALS3TM1, xAritTOTALS3TM2, xAritTOTALS3TM3, xAritTOTALS3TM4, xAritTOTALS3TM5, xAritTOTALS3TM7;
            numeric yAritTOTALS3TM1, yAritTOTALS3TM2, yAritTOTALS3TM3, yAritTOTALS3TM4, yAritTOTALS3TM5, yAritTOTALS3TM7;
    
            numeric aTOTALS3TM1, aTOTALS3TM2, aTOTALS3TM3, aTOTALS3TM4, aTOTALS3TM5, aTOTALS3TM7;
            numeric bTOTALS3TM1, bTOTALS3TM2, bTOTALS3TM3, bTOTALS3TM4, bTOTALS3TM5, bTOTALS3TM7;
            numeric rTOTALS3TM1, rTOTALS3TM2, rTOTALS3TM3, rTOTALS3TM4, rTOTALS3TM5, rTOTALS3TM7;
            numeric rQuadTOTALS3TM1, rQuadTOTALS3TM2, rQuadTOTALS3TM3, rQuadTOTALS3TM4, rQuadTOTALS3TM5, rQuadTOTALS3TM7;
            numeric syxTOTALS3TM1, syxTOTALS3TM2, syxTOTALS3TM3, syxTOTALS3TM4, syxTOTALS3TM5, syxTOTALS3TM7;
            numeric bStandTOTALS3TM1, bStandTOTALS3TM2, bStandTOTALS3TM3, bStandTOTALS3TM4, bStandTOTALS3TM5, bStandTOTALS3TM7;
            numeric aStandTOTALS3TM1, aStandTOTALS3TM2, aStandTOTALS3TM3, aStandTOTALS3TM4, aStandTOTALS3TM5, aStandTOTALS3TM7;
    
            numeric xTOTALS3TM1 = 0;
            numeric xTOTALS3TM2 = 0;
            numeric xTOTALS3TM3 = 0;
            numeric xTOTALS3TM4 = 0;
            numeric xTOTALS3TM5 = 0;
            numeric xTOTALS3TM7 = 0;
    
            numeric xQuadTOTALS3TM1 = 0;
            numeric xQuadTOTALS3TM2 = 0;
            numeric xQuadTOTALS3TM3 = 0;
            numeric xQuadTOTALS3TM4 = 0;
            numeric xQuadTOTALS3TM5 = 0;
            numeric xQuadTOTALS3TM7 = 0;
    
            numeric yTOTALS3TM1 = 0;
            numeric yTOTALS3TM2 = 0;
            numeric yTOTALS3TM3 = 0;
            numeric yTOTALS3TM4 = 0;
            numeric yTOTALS3TM5 = 0;
            numeric yTOTALS3TM7 = 0;
    
            numeric yQuadTOTALS3TM1 = 0;
            numeric yQuadTOTALS3TM2 = 0;
            numeric yQuadTOTALS3TM3 = 0;
            numeric yQuadTOTALS3TM4 = 0;
            numeric yQuadTOTALS3TM5 = 0;
            numeric yQuadTOTALS3TM7 = 0;
    
            numeric xyTOTALS3TM1 = 0;
            numeric xyTOTALS3TM2 = 0;
            numeric xyTOTALS3TM3 = 0;
            numeric xyTOTALS3TM4 = 0;
            numeric xyTOTALS3TM5 = 0;
            numeric xyTOTALS3TM7 = 0;
    
            numeric xxAritQuadTOTALS3TM1 = 0;
            numeric xxAritQuadTOTALS3TM2 = 0;
            numeric xxAritQuadTOTALS3TM3 = 0;
            numeric xxAritQuadTOTALS3TM4 = 0;
            numeric xxAritQuadTOTALS3TM5 = 0;
            numeric xxAritQuadTOTALS3TM7 = 0;
    
            numeric yyAritQuadTOTALS3TM1 = 0;
            numeric yyAritQuadTOTALS3TM2 = 0;
            numeric yyAritQuadTOTALS3TM3 = 0;
            numeric yyAritQuadTOTALS3TM4 = 0;
            numeric yyAritQuadTOTALS3TM5 = 0;
            numeric yyAritQuadTOTALS3TM7 = 0;
    
            numeric qXYTOTALS3TM1 = 0;
            numeric qXYTOTALS3TM2 = 0;
            numeric qXYTOTALS3TM3 = 0;
            numeric qXYTOTALS3TM4 = 0;
            numeric qXYTOTALS3TM5 = 0;
            numeric qXYTOTALS3TM7 = 0;
    
            for m = 1 to minPifVAL
                {		
                xTOTALS3TM1 = xTOTALS3TM1 + pifTOTALS1TM1arrayRAND[m];
                xTOTALS3TM2 = xTOTALS3TM2 + pifTOTALS1TM2arrayRAND[m];
                xTOTALS3TM3 = xTOTALS3TM3 + pifTOTALS1TM3arrayRAND[m];
                xTOTALS3TM4 = xTOTALS3TM4 + pifTOTALS1TM4arrayRAND[m];
                xTOTALS3TM5 = xTOTALS3TM5 + pifTOTALS1TM5arrayRAND[m];
                xTOTALS3TM7 = xTOTALS3TM7 + pifTOTALS1TM7arrayRAND[m];
    
                xQuadTOTALS3TM1 = (xQuadTOTALS3TM1 + (pifTOTALS1TM1arrayRAND[m]^2));
                xQuadTOTALS3TM2 = (xQuadTOTALS3TM2 + (pifTOTALS1TM2arrayRAND[m]^2));
                xQuadTOTALS3TM3 = (xQuadTOTALS3TM3 + (pifTOTALS1TM3arrayRAND[m]^2));
                xQuadTOTALS3TM4 = (xQuadTOTALS3TM4 + (pifTOTALS1TM4arrayRAND[m]^2));
                xQuadTOTALS3TM5 = (xQuadTOTALS3TM5 + (pifTOTALS1TM5arrayRAND[m]^2));
                xQuadTOTALS3TM7 = (xQuadTOTALS3TM7 + (pifTOTALS1TM7arrayRAND[m]^2));
    
                yTOTALS3TM1 = yTOTALS3TM1 + pifTOTALS3TM1arrayRAND[m];
                yTOTALS3TM2 = yTOTALS3TM2 + pifTOTALS3TM2arrayRAND[m];
                yTOTALS3TM3 = yTOTALS3TM3 + pifTOTALS3TM3arrayRAND[m];
                yTOTALS3TM4 = yTOTALS3TM4 + pifTOTALS3TM4arrayRAND[m];
                yTOTALS3TM5 = yTOTALS3TM5 + pifTOTALS3TM5arrayRAND[m];
                yTOTALS3TM7 = yTOTALS3TM7 + pifTOTALS3TM7arrayRAND[m];
                
                yQuadTOTALS3TM1 = (yQuadTOTALS3TM1 + (pifTOTALS3TM1arrayRAND[m]^2));
                yQuadTOTALS3TM2 = (yQuadTOTALS3TM2 + (pifTOTALS3TM2arrayRAND[m]^2));
                yQuadTOTALS3TM3 = (yQuadTOTALS3TM3 + (pifTOTALS3TM3arrayRAND[m]^2));
                yQuadTOTALS3TM4 = (yQuadTOTALS3TM4 + (pifTOTALS3TM4arrayRAND[m]^2));
                yQuadTOTALS3TM5 = (yQuadTOTALS3TM5 + (pifTOTALS3TM5arrayRAND[m]^2));
                yQuadTOTALS3TM7 = (yQuadTOTALS3TM7 + (pifTOTALS3TM7arrayRAND[m]^2));
    
                xyTOTALS3TM1 = (xyTOTALS3TM1 + (pifTOTALS1TM1arrayRAND[m] * pifTOTALS3TM1arrayRAND[m]));
                xyTOTALS3TM2 = (xyTOTALS3TM2 + (pifTOTALS1TM2arrayRAND[m] * pifTOTALS3TM2arrayRAND[m]));
                xyTOTALS3TM3 = (xyTOTALS3TM3 + (pifTOTALS1TM3arrayRAND[m] * pifTOTALS3TM3arrayRAND[m]));
                xyTOTALS3TM4 = (xyTOTALS3TM4 + (pifTOTALS1TM4arrayRAND[m] * pifTOTALS3TM4arrayRAND[m]));
                xyTOTALS3TM5 = (xyTOTALS3TM5 + (pifTOTALS1TM5arrayRAND[m] * pifTOTALS3TM5arrayRAND[m]));
                xyTOTALS3TM7 = (xyTOTALS3TM7 + (pifTOTALS1TM7arrayRAND[m] * pifTOTALS3TM7arrayRAND[m]));
            }	
            
            xAritTOTALS3TM1 = xTOTALS3TM1 / minPifVAL;
            xAritTOTALS3TM2 = xTOTALS3TM2 / minPifVAL;
            xAritTOTALS3TM3 = xTOTALS3TM3 / minPifVAL;
            xAritTOTALS3TM4 = xTOTALS3TM4 / minPifVAL;
            xAritTOTALS3TM5 = xTOTALS3TM5 / minPifVAL;
            xAritTOTALS3TM7 = xTOTALS3TM7 / minPifVAL;
    
            yAritTOTALS3TM1 = yTOTALS3TM1 / minPifVAL;
            yAritTOTALS3TM2 = yTOTALS3TM2 / minPifVAL;
            yAritTOTALS3TM3 = yTOTALS3TM3 / minPifVAL;
            yAritTOTALS3TM4 = yTOTALS3TM4 / minPifVAL;
            yAritTOTALS3TM5 = yTOTALS3TM5 / minPifVAL;
            yAritTOTALS3TM7 = yTOTALS3TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3TM1 = (xxAritQuadTOTALS3TM1 + ((pifTOTALS1TM1arrayRAND[n] - xAritTOTALS3TM1)^2));
                xxAritQuadTOTALS3TM2 = (xxAritQuadTOTALS3TM2 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS3TM2)^2));
                xxAritQuadTOTALS3TM3 = (xxAritQuadTOTALS3TM3 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS3TM3)^2));
                xxAritQuadTOTALS3TM4 = (xxAritQuadTOTALS3TM4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS3TM4)^2));
                xxAritQuadTOTALS3TM5 = (xxAritQuadTOTALS3TM5 + ((pifTOTALS1TM5arrayRAND[n] - xAritTOTALS3TM5)^2));
                xxAritQuadTOTALS3TM7 = (xxAritQuadTOTALS3TM7 + ((pifTOTALS1TM7arrayRAND[n] - xAritTOTALS3TM7)^2));
    
                yyAritQuadTOTALS3TM1 = (yyAritQuadTOTALS3TM1 + ((pifTOTALS3TM1arrayRAND[n] - yAritTOTALS3TM1)^2));
                yyAritQuadTOTALS3TM2 = (yyAritQuadTOTALS3TM2 + ((pifTOTALS3TM2arrayRAND[n] - yAritTOTALS3TM2)^2));
                yyAritQuadTOTALS3TM3 = (yyAritQuadTOTALS3TM3 + ((pifTOTALS3TM3arrayRAND[n] - yAritTOTALS3TM3)^2));
                yyAritQuadTOTALS3TM4 = (yyAritQuadTOTALS3TM4 + ((pifTOTALS3TM4arrayRAND[n] - yAritTOTALS3TM4)^2));
                yyAritQuadTOTALS3TM5 = (yyAritQuadTOTALS3TM5 + ((pifTOTALS3TM5arrayRAND[n] - yAritTOTALS3TM5)^2));
                yyAritQuadTOTALS3TM7 = (yyAritQuadTOTALS3TM7 + ((pifTOTALS3TM7arrayRAND[n] - yAritTOTALS3TM7)^2));
    
                qXYTOTALS3TM1 = (qXYTOTALS3TM1 + ((pifTOTALS1TM1arrayRAND[n] - xAritTOTALS3TM1) * (pifTOTALS3TM1arrayRAND[n] - yAritTOTALS3TM1)));
                qXYTOTALS3TM2 = (qXYTOTALS3TM2 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS3TM2) * (pifTOTALS3TM2arrayRAND[n] - yAritTOTALS3TM2)));
                qXYTOTALS3TM3 = (qXYTOTALS3TM3 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS3TM3) * (pifTOTALS3TM3arrayRAND[n] - yAritTOTALS3TM3)));
                qXYTOTALS3TM4 = (qXYTOTALS3TM4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS3TM4) * (pifTOTALS3TM4arrayRAND[n] - yAritTOTALS3TM4)));
                qXYTOTALS3TM5 = (qXYTOTALS3TM5 + ((pifTOTALS1TM5arrayRAND[n] - xAritTOTALS3TM5) * (pifTOTALS3TM5arrayRAND[n] - yAritTOTALS3TM5)));
                qXYTOTALS3TM7 = (qXYTOTALS3TM7 + ((pifTOTALS1TM7arrayRAND[n] - xAritTOTALS3TM7) * (pifTOTALS3TM7arrayRAND[n] - yAritTOTALS3TM7)));
            }
        
            aTOTALS3TM1 = (((xQuadTOTALS3TM1 * yTOTALS3TM1) - (xTOTALS3TM1 * xyTOTALS3TM1)) / ((minPifVAL * xQuadTOTALS3TM1) - (xTOTALS3TM1^2)));
            aTOTALS3TM2 = (((xQuadTOTALS3TM2 * yTOTALS3TM2) - (xTOTALS3TM2 * xyTOTALS3TM2)) / ((minPifVAL * xQuadTOTALS3TM2) - (xTOTALS3TM2^2)));
            aTOTALS3TM3 = (((xQuadTOTALS3TM3 * yTOTALS3TM3) - (xTOTALS3TM3 * xyTOTALS3TM3)) / ((minPifVAL * xQuadTOTALS3TM3) - (xTOTALS3TM3^2)));
            aTOTALS3TM4 = (((xQuadTOTALS3TM4 * yTOTALS3TM4) - (xTOTALS3TM4 * xyTOTALS3TM4)) / ((minPifVAL * xQuadTOTALS3TM4) - (xTOTALS3TM4^2)));
            aTOTALS3TM5 = (((xQuadTOTALS3TM5 * yTOTALS3TM5) - (xTOTALS3TM5 * xyTOTALS3TM5)) / ((minPifVAL * xQuadTOTALS3TM5) - (xTOTALS3TM5^2)));
            aTOTALS3TM7 = (((xQuadTOTALS3TM7 * yTOTALS3TM7) - (xTOTALS3TM7 * xyTOTALS3TM7)) / ((minPifVAL * xQuadTOTALS3TM7) - (xTOTALS3TM7^2)));
            
            bTOTALS3TM1 = qXYTOTALS3TM1 / xxAritQuadTOTALS3TM1;
            bTOTALS3TM2 = qXYTOTALS3TM2 / xxAritQuadTOTALS3TM2;
            bTOTALS3TM3 = qXYTOTALS3TM3 / xxAritQuadTOTALS3TM3;
            bTOTALS3TM4 = qXYTOTALS3TM4 / xxAritQuadTOTALS3TM4;
            bTOTALS3TM5 = qXYTOTALS3TM5 / xxAritQuadTOTALS3TM5;
            bTOTALS3TM7 = qXYTOTALS3TM7 / xxAritQuadTOTALS3TM7;
    
            rTOTALS3TM1 = (qXYTOTALS3TM1 / ((xxAritQuadTOTALS3TM1 * yyAritQuadTOTALS3TM1)^0.5));
            rTOTALS3TM2 = (qXYTOTALS3TM2 / ((xxAritQuadTOTALS3TM2 * yyAritQuadTOTALS3TM2)^0.5));
            rTOTALS3TM3 = (qXYTOTALS3TM3 / ((xxAritQuadTOTALS3TM3 * yyAritQuadTOTALS3TM3)^0.5));
            rTOTALS3TM4 = (qXYTOTALS3TM4 / ((xxAritQuadTOTALS3TM4 * yyAritQuadTOTALS3TM4)^0.5));
            rTOTALS3TM5 = (qXYTOTALS3TM5 / ((xxAritQuadTOTALS3TM5 * yyAritQuadTOTALS3TM5)^0.5));
            rTOTALS3TM7 = (qXYTOTALS3TM7 / ((xxAritQuadTOTALS3TM7 * yyAritQuadTOTALS3TM7)^0.5));
    
            rQuadTOTALS3TM1 = ((rTOTALS3TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3TM2 = ((rTOTALS3TM2^2) * 100);
            rQuadTOTALS3TM3 = ((rTOTALS3TM3^2) * 100);
            rQuadTOTALS3TM4 = ((rTOTALS3TM4^2) * 100);
            rQuadTOTALS3TM5 = ((rTOTALS3TM5^2) * 100);
            rQuadTOTALS3TM7 = ((rTOTALS3TM7^2) * 100);
        
            syxTOTALS3TM1 = (((yyAritQuadTOTALS3TM1 - ((qXYTOTALS3TM1^2) / xxAritQuadTOTALS3TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM2 = (((yyAritQuadTOTALS3TM2 - ((qXYTOTALS3TM2^2) / xxAritQuadTOTALS3TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM3 = (((yyAritQuadTOTALS3TM3 - ((qXYTOTALS3TM3^2) / xxAritQuadTOTALS3TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM4 = (((yyAritQuadTOTALS3TM4 - ((qXYTOTALS3TM4^2) / xxAritQuadTOTALS3TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM5 = (((yyAritQuadTOTALS3TM5 - ((qXYTOTALS3TM5^2) / xxAritQuadTOTALS3TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM7 = (((yyAritQuadTOTALS3TM7 - ((qXYTOTALS3TM7^2) / xxAritQuadTOTALS3TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3TM1 = (((syxTOTALS3TM1^2) / xxAritQuadTOTALS3TM1)^0.5);
            bStandTOTALS3TM2 = (((syxTOTALS3TM2^2) / xxAritQuadTOTALS3TM2)^0.5);
            bStandTOTALS3TM3 = (((syxTOTALS3TM3^2) / xxAritQuadTOTALS3TM3)^0.5);
            bStandTOTALS3TM4 = (((syxTOTALS3TM4^2) / xxAritQuadTOTALS3TM4)^0.5);
            bStandTOTALS3TM5 = (((syxTOTALS3TM5^2) / xxAritQuadTOTALS3TM5)^0.5);
            bStandTOTALS3TM7 = (((syxTOTALS3TM7^2) / xxAritQuadTOTALS3TM7)^0.5);
    
            aStandTOTALS3TM1 = (bStandTOTALS3TM1 * ((xQuadTOTALS3TM1 / minPifVAL)^0.5));
            aStandTOTALS3TM2 = (bStandTOTALS3TM2 * ((xQuadTOTALS3TM2 / minPifVAL)^0.5));
            aStandTOTALS3TM3 = (bStandTOTALS3TM3 * ((xQuadTOTALS3TM3 / minPifVAL)^0.5));
            aStandTOTALS3TM4 = (bStandTOTALS3TM4 * ((xQuadTOTALS3TM4 / minPifVAL)^0.5));
            aStandTOTALS3TM5 = (bStandTOTALS3TM5 * ((xQuadTOTALS3TM5 / minPifVAL)^0.5));
            aStandTOTALS3TM7 = (bStandTOTALS3TM7 * ((xQuadTOTALS3TM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM1, bTOTALS3TM1, rTOTALS3TM1, rQuadTOTALS3TM1, aStandTOTALS3TM1, bStandTOTALS3TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM2, bTOTALS3TM2, rTOTALS3TM2, rQuadTOTALS3TM2, aStandTOTALS3TM2, bStandTOTALS3TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM3, bTOTALS3TM3, rTOTALS3TM3, rQuadTOTALS3TM3, aStandTOTALS3TM3, bStandTOTALS3TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM4, bTOTALS3TM4, rTOTALS3TM4, rQuadTOTALS3TM4, aStandTOTALS3TM4, bStandTOTALS3TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM5, bTOTALS3TM5, rTOTALS3TM5, rQuadTOTALS3TM5, aStandTOTALS3TM5, bStandTOTALS3TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS3TM7, bTOTALS3TM7, rTOTALS3TM7, rQuadTOTALS3TM7, aStandTOTALS3TM7, bStandTOTALS3TM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS3TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS3TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS3TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS3TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS3TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS3TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS3TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT3TM1[i,j] = (aTOTALS3TM1 + (bTOTALS3TM1 * REFS3TM1[i,j]));
                    OUT3TM2[i,j] = (aTOTALS3TM2 + (bTOTALS3TM2 * REFS3TM2[i,j]));
                    OUT3TM3[i,j] = (aTOTALS3TM3 + (bTOTALS3TM3 * REFS3TM3[i,j]));
                    OUT3TM4[i,j] = (aTOTALS3TM4 + (bTOTALS3TM4 * REFS3TM4[i,j]));
                    OUT3TM5[i,j] = (aTOTALS3TM5 + (bTOTALS3TM5 * REFS3TM5[i,j]));
                    OUT3TM7[i,j] = (aTOTALS3TM7 + (bTOTALS3TM7 * REFS3TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3TM1);
        	CreatePyramid(OUT3TM2);
        	CreatePyramid(OUT3TM3);
        	CreatePyramid(OUT3TM4);
        	CreatePyramid(OUT3TM5);
        	CreatePyramid(OUT3TM7);
        
        	CreateHistogram(OUT3TM1);
        	CreateHistogram(OUT3TM2);
        	CreateHistogram(OUT3TM3);
        	CreateHistogram(OUT3TM4);
        	CreateHistogram(OUT3TM5);
        	CreateHistogram(OUT3TM7);
        
        	CloseRaster(REFS3TM1);
            CloseRaster(REFS3TM2);
            CloseRaster(REFS3TM3);
            CloseRaster(REFS3TM4);
            CloseRaster(REFS3TM5);
            CloseRaster(REFS3TM7);
    
            CloseRaster(OUT3TM1);
            CloseRaster(OUT3TM2);
            CloseRaster(OUT3TM3);
            CloseRaster(OUT3TM4);
            CloseRaster(OUT3TM5);
            CloseRaster(OUT3TM7);
        
        	printf("Scene 3 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            { 
            numeric xAritTOTALS3MSS1, xAritTOTALS3MSS2, xAritTOTALS3MSS4;
            numeric yAritTOTALS3MSS1, yAritTOTALS3MSS2,  yAritTOTALS3MSS4;
    
            numeric aTOTALS3MSS1, aTOTALS3MSS2, aTOTALS3MSS4;
            numeric bTOTALS3MSS1, bTOTALS3MSS2, bTOTALS3MSS4;
            numeric rTOTALS3MSS1, rTOTALS3MSS2, rTOTALS3MSS4;
            numeric rQuadTOTALS3MSS1, rQuadTOTALS3MSS2, rQuadTOTALS3MSS4;
            numeric syxTOTALS3MSS1, syxTOTALS3MSS2, syxTOTALS3MSS4;
            numeric bStandTOTALS3MSS1, bStandTOTALS3MSS2, bStandTOTALS3MSS4;
            numeric aStandTOTALS3MSS1, aStandTOTALS3MSS2, aStandTOTALS3MSS4;
    
            numeric xTOTALS3MSS1 = 0;
            numeric xTOTALS3MSS2 = 0;
            numeric xTOTALS3MSS4 = 0;
    
            numeric xQuadTOTALS3MSS1 = 0;
            numeric xQuadTOTALS3MSS2 = 0;
            numeric xQuadTOTALS3MSS4 = 0;
    
            numeric yTOTALS3MSS1 = 0;
            numeric yTOTALS3MSS2 = 0;
            numeric yTOTALS3MSS4 = 0;
    
            numeric yQuadTOTALS3MSS1 = 0;
            numeric yQuadTOTALS3MSS2 = 0;
            numeric yQuadTOTALS3MSS4 = 0;
    
            numeric xyTOTALS3MSS1 = 0;
            numeric xyTOTALS3MSS2 = 0;
            numeric xyTOTALS3MSS4 = 0;
    
            numeric xxAritQuadTOTALS3MSS1 = 0;
            numeric xxAritQuadTOTALS3MSS2 = 0;
            numeric xxAritQuadTOTALS3MSS4 = 0;
    
            numeric yyAritQuadTOTALS3MSS1 = 0;
            numeric yyAritQuadTOTALS3MSS2 = 0;
            numeric yyAritQuadTOTALS3MSS4 = 0;
    
            numeric qXYTOTALS3MSS1 = 0;
            numeric qXYTOTALS3MSS2 = 0;
            numeric qXYTOTALS3MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS3MSS1 = xTOTALS3MSS1 + pifTOTALS1TM2arrayRAND[m];
                xTOTALS3MSS2 = xTOTALS3MSS2 + pifTOTALS1TM3arrayRAND[m];
                xTOTALS3MSS4 = xTOTALS3MSS4 + pifTOTALS1TM4arrayRAND[m];
    
                xQuadTOTALS3MSS1 = (xQuadTOTALS3MSS1 + (pifTOTALS1TM2arrayRAND[m]^2));
                xQuadTOTALS3MSS2 = (xQuadTOTALS3MSS2 + (pifTOTALS1TM3arrayRAND[m]^2));
                xQuadTOTALS3MSS4 = (xQuadTOTALS3MSS4 + (pifTOTALS1TM4arrayRAND[m]^2));
    
                yTOTALS3MSS1 = yTOTALS3MSS1 + pifTOTALS3MSS1arrayRAND[m];
                yTOTALS3MSS2 = yTOTALS3MSS2 + pifTOTALS3MSS2arrayRAND[m];
                yTOTALS3MSS4 = yTOTALS3MSS4 + pifTOTALS3MSS4arrayRAND[m];
                
                yQuadTOTALS3MSS1 = (yQuadTOTALS3MSS1 + (pifTOTALS3MSS1arrayRAND[m]^2));
                yQuadTOTALS3MSS2 = (yQuadTOTALS3MSS2 + (pifTOTALS3MSS2arrayRAND[m]^2));
                yQuadTOTALS3MSS4 = (yQuadTOTALS3MSS4 + (pifTOTALS3MSS4arrayRAND[m]^2));
    
                xyTOTALS3MSS1 = (xyTOTALS3MSS1 + (pifTOTALS1TM2arrayRAND[m] * pifTOTALS3MSS1arrayRAND[m]));
                xyTOTALS3MSS2 = (xyTOTALS3MSS2 + (pifTOTALS1TM3arrayRAND[m] * pifTOTALS3MSS2arrayRAND[m]));
                xyTOTALS3MSS4 = (xyTOTALS3MSS4 + (pifTOTALS1TM4arrayRAND[m] * pifTOTALS3MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS3MSS1 = xTOTALS3MSS1 / minPifVAL;
            xAritTOTALS3MSS2 = xTOTALS3MSS2 / minPifVAL;
            xAritTOTALS3MSS4 = xTOTALS3MSS4 / minPifVAL;
    
            yAritTOTALS3MSS1 = yTOTALS3MSS1 / minPifVAL;
            yAritTOTALS3MSS2 = yTOTALS3MSS2 / minPifVAL;
            yAritTOTALS3MSS4 = yTOTALS3MSS4 / minPifVAL;
            
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3MSS1 = (xxAritQuadTOTALS3MSS1 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS3MSS1)^2));
                xxAritQuadTOTALS3MSS2 = (xxAritQuadTOTALS3MSS2 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS3MSS2)^2));
                xxAritQuadTOTALS3MSS4 = (xxAritQuadTOTALS3MSS4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS3MSS4)^2));
    
                yyAritQuadTOTALS3MSS1 = (yyAritQuadTOTALS3MSS1 + ((pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)^2));
                yyAritQuadTOTALS3MSS2 = (yyAritQuadTOTALS3MSS2 + ((pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)^2));
                yyAritQuadTOTALS3MSS4 = (yyAritQuadTOTALS3MSS4 + ((pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)^2));
    
                qXYTOTALS3MSS1 = (qXYTOTALS3MSS1 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS3MSS1) * (pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)));
                qXYTOTALS3MSS2 = (qXYTOTALS3MSS2 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS3MSS2) * (pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)));
                qXYTOTALS3MSS4 = (qXYTOTALS3MSS4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS3MSS4) * (pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)));
            }
        
            aTOTALS3MSS1 = (((xQuadTOTALS3MSS1 * yTOTALS3MSS1) - (xTOTALS3MSS1 * xyTOTALS3MSS1)) / ((minPifVAL * xQuadTOTALS3MSS1) - (xTOTALS3MSS1^2)));
            aTOTALS3MSS2 = (((xQuadTOTALS3MSS2 * yTOTALS3MSS2) - (xTOTALS3MSS2 * xyTOTALS3MSS2)) / ((minPifVAL * xQuadTOTALS3MSS2) - (xTOTALS3MSS2^2)));
            aTOTALS3MSS4 = (((xQuadTOTALS3MSS4 * yTOTALS3MSS4) - (xTOTALS3MSS4 * xyTOTALS3MSS4)) / ((minPifVAL * xQuadTOTALS3MSS4) - (xTOTALS3MSS4^2)));
            
            bTOTALS3MSS1 = qXYTOTALS3MSS1 / xxAritQuadTOTALS3MSS1;
            bTOTALS3MSS2 = qXYTOTALS3MSS2 / xxAritQuadTOTALS3MSS2;
            bTOTALS3MSS4 = qXYTOTALS3MSS4 / xxAritQuadTOTALS3MSS4;
    
            rTOTALS3MSS1 = (qXYTOTALS3MSS1 / ((xxAritQuadTOTALS3MSS1 * yyAritQuadTOTALS3MSS1)^0.5));
            rTOTALS3MSS2 = (qXYTOTALS3MSS2 / ((xxAritQuadTOTALS3MSS2 * yyAritQuadTOTALS3MSS2)^0.5));
            rTOTALS3MSS4 = (qXYTOTALS3MSS4 / ((xxAritQuadTOTALS3MSS4 * yyAritQuadTOTALS3MSS4)^0.5));
    
            rQuadTOTALS3MSS1 = ((rTOTALS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3MSS2 = ((rTOTALS3MSS2^2) * 100);
            rQuadTOTALS3MSS4 = ((rTOTALS3MSS4^2) * 100);
        
            syxTOTALS3MSS1 = (((yyAritQuadTOTALS3MSS1 - ((qXYTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS2 = (((yyAritQuadTOTALS3MSS2 - ((qXYTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS4 = (((yyAritQuadTOTALS3MSS4 - ((qXYTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3MSS1 = (((syxTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)^0.5);
            bStandTOTALS3MSS2 = (((syxTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)^0.5);
            bStandTOTALS3MSS4 = (((syxTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)^0.5);
    
            aStandTOTALS3MSS1 = (bStandTOTALS3MSS1 * ((xQuadTOTALS3MSS1 / minPifVAL)^0.5));
            aStandTOTALS3MSS2 = (bStandTOTALS3MSS2 * ((xQuadTOTALS3MSS2 / minPifVAL)^0.5));
            aStandTOTALS3MSS4 = (bStandTOTALS3MSS4 * ((xQuadTOTALS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS1, bTOTALS3MSS1, rTOTALS3MSS1, rQuadTOTALS3MSS1, aStandTOTALS3MSS1, bStandTOTALS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS2, bTOTALS3MSS2, rTOTALS3MSS2, rQuadTOTALS3MSS2, aStandTOTALS3MSS2, bStandTOTALS3MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS4, bTOTALS3MSS4, rTOTALS3MSS4, rQuadTOTALS3MSS4, aStandTOTALS3MSS4, bStandTOTALS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS3MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS3MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS2arrayRAND[minPifVAL]);
        
            printf("MSS4: %12f ", pifTOTALS3MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aTOTALS3MSS1 + (bTOTALS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aTOTALS3MSS2 + (bTOTALS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = REFS3MSS3[i,j];
                    OUT3MSS4[i,j] = (aTOTALS3MSS4 + (bTOTALS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT3MSS1);
        	CreatePyramid(OUT3MSS2);
        	CreatePyramid(OUT3MSS3);
        	CreatePyramid(OUT3MSS4);
        
        	CreateHistogram(OUT3MSS1);
        	CreateHistogram(OUT3MSS2);
        	CreateHistogram(OUT3MSS3);
        	CreateHistogram(OUT3MSS4);
        
        	CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
        
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors4 == 7 )
            {
            numeric xAritTOTALS4ETM1, xAritTOTALS4ETM2, xAritTOTALS4ETM3, xAritTOTALS4ETM4, xAritTOTALS4ETM5, xAritTOTALS4ETM7;
            numeric yAritTOTALS4ETM1, yAritTOTALS4ETM2, yAritTOTALS4ETM3, yAritTOTALS4ETM4, yAritTOTALS4ETM5, yAritTOTALS4ETM7;
    
            numeric aTOTALS4ETM1, aTOTALS4ETM2, aTOTALS4ETM3, aTOTALS4ETM4, aTOTALS4ETM5, aTOTALS4ETM7;
            numeric bTOTALS4ETM1, bTOTALS4ETM2, bTOTALS4ETM3, bTOTALS4ETM4, bTOTALS4ETM5, bTOTALS4ETM7;
            numeric rTOTALS4ETM1, rTOTALS4ETM2, rTOTALS4ETM3, rTOTALS4ETM4, rTOTALS4ETM5, rTOTALS4ETM7;
            numeric rQuadTOTALS4ETM1, rQuadTOTALS4ETM2, rQuadTOTALS4ETM3, rQuadTOTALS4ETM4, rQuadTOTALS4ETM5, rQuadTOTALS4ETM7;
            numeric syxTOTALS4ETM1, syxTOTALS4ETM2, syxTOTALS4ETM3, syxTOTALS4ETM4, syxTOTALS4ETM5, syxTOTALS4ETM7;
            numeric bStandTOTALS4ETM1, bStandTOTALS4ETM2, bStandTOTALS4ETM3, bStandTOTALS4ETM4, bStandTOTALS4ETM5, bStandTOTALS4ETM7;
            numeric aStandTOTALS4ETM1, aStandTOTALS4ETM2, aStandTOTALS4ETM3, aStandTOTALS4ETM4, aStandTOTALS4ETM5, aStandTOTALS4ETM7;
    
            numeric xTOTALS4ETM1 = 0;
            numeric xTOTALS4ETM2 = 0;
            numeric xTOTALS4ETM3 = 0;
            numeric xTOTALS4ETM4 = 0;
            numeric xTOTALS4ETM5 = 0;
            numeric xTOTALS4ETM7 = 0;
    
            numeric xQuadTOTALS4ETM1 = 0;
            numeric xQuadTOTALS4ETM2 = 0;
            numeric xQuadTOTALS4ETM3 = 0;
            numeric xQuadTOTALS4ETM4 = 0;
            numeric xQuadTOTALS4ETM5 = 0;
            numeric xQuadTOTALS4ETM7 = 0;
    
            numeric yTOTALS4ETM1 = 0;
            numeric yTOTALS4ETM2 = 0;
            numeric yTOTALS4ETM3 = 0;
            numeric yTOTALS4ETM4 = 0;
            numeric yTOTALS4ETM5 = 0;
            numeric yTOTALS4ETM7 = 0;
    
            numeric yQuadTOTALS4ETM1 = 0;
            numeric yQuadTOTALS4ETM2 = 0;
            numeric yQuadTOTALS4ETM3 = 0;
            numeric yQuadTOTALS4ETM4 = 0;
            numeric yQuadTOTALS4ETM5 = 0;
            numeric yQuadTOTALS4ETM7 = 0;
    
            numeric xyTOTALS4ETM1 = 0;
            numeric xyTOTALS4ETM2 = 0;
            numeric xyTOTALS4ETM3 = 0;
            numeric xyTOTALS4ETM4 = 0;
            numeric xyTOTALS4ETM5 = 0;
            numeric xyTOTALS4ETM7 = 0;
    
            numeric xxAritQuadTOTALS4ETM1 = 0;
            numeric xxAritQuadTOTALS4ETM2 = 0;
            numeric xxAritQuadTOTALS4ETM3 = 0;
            numeric xxAritQuadTOTALS4ETM4 = 0;
            numeric xxAritQuadTOTALS4ETM5 = 0;
            numeric xxAritQuadTOTALS4ETM7 = 0;
    
            numeric yyAritQuadTOTALS4ETM1 = 0;
            numeric yyAritQuadTOTALS4ETM2 = 0;
            numeric yyAritQuadTOTALS4ETM3 = 0;
            numeric yyAritQuadTOTALS4ETM4 = 0;
            numeric yyAritQuadTOTALS4ETM5 = 0;
            numeric yyAritQuadTOTALS4ETM7 = 0;
    
            numeric qXYTOTALS4ETM1 = 0;
            numeric qXYTOTALS4ETM2 = 0;
            numeric qXYTOTALS4ETM3 = 0;
            numeric qXYTOTALS4ETM4 = 0;
            numeric qXYTOTALS4ETM5 = 0;
            numeric qXYTOTALS4ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS4ETM1 = xTOTALS4ETM1 + pifTOTALS1TM1arrayRAND[m];
                xTOTALS4ETM2 = xTOTALS4ETM2 + pifTOTALS1TM2arrayRAND[m];
                xTOTALS4ETM3 = xTOTALS4ETM3 + pifTOTALS1TM3arrayRAND[m];
                xTOTALS4ETM4 = xTOTALS4ETM4 + pifTOTALS1TM4arrayRAND[m];
                xTOTALS4ETM5 = xTOTALS4ETM5 + pifTOTALS1TM5arrayRAND[m];
                xTOTALS4ETM7 = xTOTALS4ETM7 + pifTOTALS1TM7arrayRAND[m];
    
                xQuadTOTALS4ETM1 = (xQuadTOTALS4ETM1 + (pifTOTALS1TM1arrayRAND[m]^2));
                xQuadTOTALS4ETM2 = (xQuadTOTALS4ETM2 + (pifTOTALS1TM2arrayRAND[m]^2));
                xQuadTOTALS4ETM3 = (xQuadTOTALS4ETM3 + (pifTOTALS1TM3arrayRAND[m]^2));
                xQuadTOTALS4ETM4 = (xQuadTOTALS4ETM4 + (pifTOTALS1TM4arrayRAND[m]^2));
                xQuadTOTALS4ETM5 = (xQuadTOTALS4ETM5 + (pifTOTALS1TM5arrayRAND[m]^2));
                xQuadTOTALS4ETM7 = (xQuadTOTALS4ETM7 + (pifTOTALS1TM7arrayRAND[m]^2));
    
                yTOTALS4ETM1 = yTOTALS4ETM1 + pifTOTALS4ETM1arrayRAND[m];
                yTOTALS4ETM2 = yTOTALS4ETM2 + pifTOTALS4ETM2arrayRAND[m];
                yTOTALS4ETM3 = yTOTALS4ETM3 + pifTOTALS4ETM3arrayRAND[m];
                yTOTALS4ETM4 = yTOTALS4ETM4 + pifTOTALS4ETM4arrayRAND[m];
                yTOTALS4ETM5 = yTOTALS4ETM5 + pifTOTALS4ETM5arrayRAND[m];
                yTOTALS4ETM7 = yTOTALS4ETM7 + pifTOTALS4ETM7arrayRAND[m];
                
                yQuadTOTALS4ETM1 = (yQuadTOTALS4ETM1 + (pifTOTALS4ETM1arrayRAND[m]^2));
                yQuadTOTALS4ETM2 = (yQuadTOTALS4ETM2 + (pifTOTALS4ETM2arrayRAND[m]^2));
                yQuadTOTALS4ETM3 = (yQuadTOTALS4ETM3 + (pifTOTALS4ETM3arrayRAND[m]^2));
                yQuadTOTALS4ETM4 = (yQuadTOTALS4ETM4 + (pifTOTALS4ETM4arrayRAND[m]^2));
                yQuadTOTALS4ETM5 = (yQuadTOTALS4ETM5 + (pifTOTALS4ETM5arrayRAND[m]^2));
                yQuadTOTALS4ETM7 = (yQuadTOTALS4ETM7 + (pifTOTALS4ETM7arrayRAND[m]^2));
    
                xyTOTALS4ETM1 = (xyTOTALS4ETM1 + (pifTOTALS1TM1arrayRAND[m] * pifTOTALS4ETM1arrayRAND[m]));
                xyTOTALS4ETM2 = (xyTOTALS4ETM2 + (pifTOTALS1TM2arrayRAND[m] * pifTOTALS4ETM2arrayRAND[m]));
                xyTOTALS4ETM3 = (xyTOTALS4ETM3 + (pifTOTALS1TM3arrayRAND[m] * pifTOTALS4ETM3arrayRAND[m]));
                xyTOTALS4ETM4 = (xyTOTALS4ETM4 + (pifTOTALS1TM4arrayRAND[m] * pifTOTALS4ETM4arrayRAND[m]));
                xyTOTALS4ETM5 = (xyTOTALS4ETM5 + (pifTOTALS1TM5arrayRAND[m] * pifTOTALS4ETM5arrayRAND[m]));
                xyTOTALS4ETM7 = (xyTOTALS4ETM7 + (pifTOTALS1TM7arrayRAND[m] * pifTOTALS4ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS4ETM1 = xTOTALS4ETM1 / minPifVAL;
            xAritTOTALS4ETM2 = xTOTALS4ETM2 / minPifVAL;
            xAritTOTALS4ETM3 = xTOTALS4ETM3 / minPifVAL;
            xAritTOTALS4ETM4 = xTOTALS4ETM4 / minPifVAL;
            xAritTOTALS4ETM5 = xTOTALS4ETM5 / minPifVAL;
            xAritTOTALS4ETM7 = xTOTALS4ETM7 / minPifVAL;
    
            yAritTOTALS4ETM1 = yTOTALS4ETM1 / minPifVAL;
            yAritTOTALS4ETM2 = yTOTALS4ETM2 / minPifVAL;
            yAritTOTALS4ETM3 = yTOTALS4ETM3 / minPifVAL;
            yAritTOTALS4ETM4 = yTOTALS4ETM4 / minPifVAL;
            yAritTOTALS4ETM5 = yTOTALS4ETM5 / minPifVAL;
            yAritTOTALS4ETM7 = yTOTALS4ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4ETM1 = (xxAritQuadTOTALS4ETM1 + ((pifTOTALS1TM1arrayRAND[n] - xAritTOTALS4ETM1)^2));
                xxAritQuadTOTALS4ETM2 = (xxAritQuadTOTALS4ETM2 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS4ETM2)^2));
                xxAritQuadTOTALS4ETM3 = (xxAritQuadTOTALS4ETM3 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS4ETM3)^2));
                xxAritQuadTOTALS4ETM4 = (xxAritQuadTOTALS4ETM4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS4ETM4)^2));
                xxAritQuadTOTALS4ETM5 = (xxAritQuadTOTALS4ETM5 + ((pifTOTALS1TM5arrayRAND[n] - xAritTOTALS4ETM5)^2));
                xxAritQuadTOTALS4ETM7 = (xxAritQuadTOTALS4ETM7 + ((pifTOTALS1TM7arrayRAND[n] - xAritTOTALS4ETM7)^2));
    
                yyAritQuadTOTALS4ETM1 = (yyAritQuadTOTALS4ETM1 + ((pifTOTALS4ETM1arrayRAND[n] - yAritTOTALS4ETM1)^2));
                yyAritQuadTOTALS4ETM2 = (yyAritQuadTOTALS4ETM2 + ((pifTOTALS4ETM2arrayRAND[n] - yAritTOTALS4ETM2)^2));
                yyAritQuadTOTALS4ETM3 = (yyAritQuadTOTALS4ETM3 + ((pifTOTALS4ETM3arrayRAND[n] - yAritTOTALS4ETM3)^2));
                yyAritQuadTOTALS4ETM4 = (yyAritQuadTOTALS4ETM4 + ((pifTOTALS4ETM4arrayRAND[n] - yAritTOTALS4ETM4)^2));
                yyAritQuadTOTALS4ETM5 = (yyAritQuadTOTALS4ETM5 + ((pifTOTALS4ETM5arrayRAND[n] - yAritTOTALS4ETM5)^2));
                yyAritQuadTOTALS4ETM7 = (yyAritQuadTOTALS4ETM7 + ((pifTOTALS4ETM7arrayRAND[n] - yAritTOTALS4ETM7)^2));
    
                qXYTOTALS4ETM1 = (qXYTOTALS4ETM1 + ((pifTOTALS1TM1arrayRAND[n] - xAritTOTALS4ETM1) * (pifTOTALS4ETM1arrayRAND[n] - yAritTOTALS4ETM1)));
                qXYTOTALS4ETM2 = (qXYTOTALS4ETM2 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS4ETM2) * (pifTOTALS4ETM2arrayRAND[n] - yAritTOTALS4ETM2)));
                qXYTOTALS4ETM3 = (qXYTOTALS4ETM3 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS4ETM3) * (pifTOTALS4ETM3arrayRAND[n] - yAritTOTALS4ETM3)));
                qXYTOTALS4ETM4 = (qXYTOTALS4ETM4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS4ETM4) * (pifTOTALS4ETM4arrayRAND[n] - yAritTOTALS4ETM4)));
                qXYTOTALS4ETM5 = (qXYTOTALS4ETM5 + ((pifTOTALS1TM5arrayRAND[n] - xAritTOTALS4ETM5) * (pifTOTALS4ETM5arrayRAND[n] - yAritTOTALS4ETM5)));
                qXYTOTALS4ETM7 = (qXYTOTALS4ETM7 + ((pifTOTALS1TM7arrayRAND[n] - xAritTOTALS4ETM7) * (pifTOTALS4ETM7arrayRAND[n] - yAritTOTALS4ETM7)));
            }
        
            aTOTALS4ETM1 = (((xQuadTOTALS4ETM1 * yTOTALS4ETM1) - (xTOTALS4ETM1 * xyTOTALS4ETM1)) / ((minPifVAL * xQuadTOTALS4ETM1) - (xTOTALS4ETM1^2)));
            aTOTALS4ETM2 = (((xQuadTOTALS4ETM2 * yTOTALS4ETM2) - (xTOTALS4ETM2 * xyTOTALS4ETM2)) / ((minPifVAL * xQuadTOTALS4ETM2) - (xTOTALS4ETM2^2)));
            aTOTALS4ETM3 = (((xQuadTOTALS4ETM3 * yTOTALS4ETM3) - (xTOTALS4ETM3 * xyTOTALS4ETM3)) / ((minPifVAL * xQuadTOTALS4ETM3) - (xTOTALS4ETM3^2)));
            aTOTALS4ETM4 = (((xQuadTOTALS4ETM4 * yTOTALS4ETM4) - (xTOTALS4ETM4 * xyTOTALS4ETM4)) / ((minPifVAL * xQuadTOTALS4ETM4) - (xTOTALS4ETM4^2)));
            aTOTALS4ETM5 = (((xQuadTOTALS4ETM5 * yTOTALS4ETM5) - (xTOTALS4ETM5 * xyTOTALS4ETM5)) / ((minPifVAL * xQuadTOTALS4ETM5) - (xTOTALS4ETM5^2)));
            aTOTALS4ETM7 = (((xQuadTOTALS4ETM7 * yTOTALS4ETM7) - (xTOTALS4ETM7 * xyTOTALS4ETM7)) / ((minPifVAL * xQuadTOTALS4ETM7) - (xTOTALS4ETM7^2)));
            
            bTOTALS4ETM1 = qXYTOTALS4ETM1 / xxAritQuadTOTALS4ETM1;
            bTOTALS4ETM2 = qXYTOTALS4ETM2 / xxAritQuadTOTALS4ETM2;
            bTOTALS4ETM3 = qXYTOTALS4ETM3 / xxAritQuadTOTALS4ETM3;
            bTOTALS4ETM4 = qXYTOTALS4ETM4 / xxAritQuadTOTALS4ETM4;
            bTOTALS4ETM5 = qXYTOTALS4ETM5 / xxAritQuadTOTALS4ETM5;
            bTOTALS4ETM7 = qXYTOTALS4ETM7 / xxAritQuadTOTALS4ETM7;
    
            rTOTALS4ETM1 = (qXYTOTALS4ETM1 / ((xxAritQuadTOTALS4ETM1 * yyAritQuadTOTALS4ETM1)^0.5));
            rTOTALS4ETM2 = (qXYTOTALS4ETM2 / ((xxAritQuadTOTALS4ETM2 * yyAritQuadTOTALS4ETM2)^0.5));
            rTOTALS4ETM3 = (qXYTOTALS4ETM3 / ((xxAritQuadTOTALS4ETM3 * yyAritQuadTOTALS4ETM3)^0.5));
            rTOTALS4ETM4 = (qXYTOTALS4ETM4 / ((xxAritQuadTOTALS4ETM4 * yyAritQuadTOTALS4ETM4)^0.5));
            rTOTALS4ETM5 = (qXYTOTALS4ETM5 / ((xxAritQuadTOTALS4ETM5 * yyAritQuadTOTALS4ETM5)^0.5));
            rTOTALS4ETM7 = (qXYTOTALS4ETM7 / ((xxAritQuadTOTALS4ETM7 * yyAritQuadTOTALS4ETM7)^0.5));
    
            rQuadTOTALS4ETM1 = ((rTOTALS4ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4ETM2 = ((rTOTALS4ETM2^2) * 100);
            rQuadTOTALS4ETM3 = ((rTOTALS4ETM3^2) * 100);
            rQuadTOTALS4ETM4 = ((rTOTALS4ETM4^2) * 100);
            rQuadTOTALS4ETM5 = ((rTOTALS4ETM5^2) * 100);
            rQuadTOTALS4ETM7 = ((rTOTALS4ETM7^2) * 100);
        
            syxTOTALS4ETM1 = (((yyAritQuadTOTALS4ETM1 - ((qXYTOTALS4ETM1^2) / xxAritQuadTOTALS4ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM2 = (((yyAritQuadTOTALS4ETM2 - ((qXYTOTALS4ETM2^2) / xxAritQuadTOTALS4ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM3 = (((yyAritQuadTOTALS4ETM3 - ((qXYTOTALS4ETM3^2) / xxAritQuadTOTALS4ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM4 = (((yyAritQuadTOTALS4ETM4 - ((qXYTOTALS4ETM4^2) / xxAritQuadTOTALS4ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM5 = (((yyAritQuadTOTALS4ETM5 - ((qXYTOTALS4ETM5^2) / xxAritQuadTOTALS4ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM7 = (((yyAritQuadTOTALS4ETM7 - ((qXYTOTALS4ETM7^2) / xxAritQuadTOTALS4ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4ETM1 = (((syxTOTALS4ETM1^2) / xxAritQuadTOTALS4ETM1)^0.5);
            bStandTOTALS4ETM2 = (((syxTOTALS4ETM2^2) / xxAritQuadTOTALS4ETM2)^0.5);
            bStandTOTALS4ETM3 = (((syxTOTALS4ETM3^2) / xxAritQuadTOTALS4ETM3)^0.5);
            bStandTOTALS4ETM4 = (((syxTOTALS4ETM4^2) / xxAritQuadTOTALS4ETM4)^0.5);
            bStandTOTALS4ETM5 = (((syxTOTALS4ETM5^2) / xxAritQuadTOTALS4ETM5)^0.5);
            bStandTOTALS4ETM7 = (((syxTOTALS4ETM7^2) / xxAritQuadTOTALS4ETM7)^0.5);
    
            aStandTOTALS4ETM1 = (bStandTOTALS4ETM1 * ((xQuadTOTALS4ETM1 / minPifVAL)^0.5));
            aStandTOTALS4ETM2 = (bStandTOTALS4ETM2 * ((xQuadTOTALS4ETM2 / minPifVAL)^0.5));
            aStandTOTALS4ETM3 = (bStandTOTALS4ETM3 * ((xQuadTOTALS4ETM3 / minPifVAL)^0.5));
            aStandTOTALS4ETM4 = (bStandTOTALS4ETM4 * ((xQuadTOTALS4ETM4 / minPifVAL)^0.5));
            aStandTOTALS4ETM5 = (bStandTOTALS4ETM5 * ((xQuadTOTALS4ETM5 / minPifVAL)^0.5));
            aStandTOTALS4ETM7 = (bStandTOTALS4ETM7 * ((xQuadTOTALS4ETM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM1, bTOTALS4ETM1, rTOTALS4ETM1, rQuadTOTALS4ETM1, aStandTOTALS4ETM1, bStandTOTALS4ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM2, bTOTALS4ETM2, rTOTALS4ETM2, rQuadTOTALS4ETM2, aStandTOTALS4ETM2, bStandTOTALS4ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM3, bTOTALS4ETM3, rTOTALS4ETM3, rQuadTOTALS4ETM3, aStandTOTALS4ETM3, bStandTOTALS4ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM4, bTOTALS4ETM4, rTOTALS4ETM4, rQuadTOTALS4ETM4, aStandTOTALS4ETM4, bStandTOTALS4ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM5, bTOTALS4ETM5, rTOTALS4ETM5, rQuadTOTALS4ETM5, aStandTOTALS4ETM5, bStandTOTALS4ETM5);
           printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS4ETM7, bTOTALS4ETM7, rTOTALS4ETM7, rQuadTOTALS4ETM7, aStandTOTALS4ETM7, bStandTOTALS4ETM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS4ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS4ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS4ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS4ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS4ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS4ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS4ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT4ETM1[i,j] = (aTOTALS4ETM1 + (bTOTALS4ETM1 * REFS4ETM1[i,j]));
                    OUT4ETM2[i,j] = (aTOTALS4ETM2 + (bTOTALS4ETM2 * REFS4ETM2[i,j]));
                    OUT4ETM3[i,j] = (aTOTALS4ETM3 + (bTOTALS4ETM3 * REFS4ETM3[i,j]));
                    OUT4ETM4[i,j] = (aTOTALS4ETM4 + (bTOTALS4ETM4 * REFS4ETM4[i,j]));
                    OUT4ETM5[i,j] = (aTOTALS4ETM5 + (bTOTALS4ETM5 * REFS4ETM5[i,j]));
                    OUT4ETM7[i,j] = (aTOTALS4ETM7 + (bTOTALS4ETM7 * REFS4ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4ETM1);
        	CreatePyramid(OUT4ETM2);
        	CreatePyramid(OUT4ETM3);
        	CreatePyramid(OUT4ETM4);
        	CreatePyramid(OUT4ETM5);
        	CreatePyramid(OUT4ETM7);
        
        	CreateHistogram(OUT4ETM1);
        	CreateHistogram(OUT4ETM2);
        	CreateHistogram(OUT4ETM3);
        	CreateHistogram(OUT4ETM4);
        	CreateHistogram(OUT4ETM5);
        	CreateHistogram(OUT4ETM7);
        
        	CloseRaster(REFS4ETM1);
            CloseRaster(REFS4ETM2);
            CloseRaster(REFS4ETM3);
            CloseRaster(REFS4ETM4);
            CloseRaster(REFS4ETM5);
            CloseRaster(REFS4ETM7);
    
            CloseRaster(OUT4ETM1);
            CloseRaster(OUT4ETM2);
            CloseRaster(OUT4ETM3);
            CloseRaster(OUT4ETM4);
            CloseRaster(OUT4ETM5);
            CloseRaster(OUT4ETM7);
        
        	printf("Scene 4 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors4 == 6 )
            {
            numeric xAritTOTALS4TM1, xAritTOTALS4TM2, xAritTOTALS4TM3, xAritTOTALS4TM4, xAritTOTALS4TM5, xAritTOTALS4TM7;
            numeric yAritTOTALS4TM1, yAritTOTALS4TM2, yAritTOTALS4TM3, yAritTOTALS4TM4, yAritTOTALS4TM5, yAritTOTALS4TM7;
    
            numeric aTOTALS4TM1, aTOTALS4TM2, aTOTALS4TM3, aTOTALS4TM4, aTOTALS4TM5, aTOTALS4TM7;
            numeric bTOTALS4TM1, bTOTALS4TM2, bTOTALS4TM3, bTOTALS4TM4, bTOTALS4TM5, bTOTALS4TM7;
            numeric rTOTALS4TM1, rTOTALS4TM2, rTOTALS4TM3, rTOTALS4TM4, rTOTALS4TM5, rTOTALS4TM7;
            numeric rQuadTOTALS4TM1, rQuadTOTALS4TM2, rQuadTOTALS4TM3, rQuadTOTALS4TM4, rQuadTOTALS4TM5, rQuadTOTALS4TM7;
            numeric syxTOTALS4TM1, syxTOTALS4TM2, syxTOTALS4TM3, syxTOTALS4TM4, syxTOTALS4TM5, syxTOTALS4TM7;
            numeric bStandTOTALS4TM1, bStandTOTALS4TM2, bStandTOTALS4TM3, bStandTOTALS4TM4, bStandTOTALS4TM5, bStandTOTALS4TM7;
            numeric aStandTOTALS4TM1, aStandTOTALS4TM2, aStandTOTALS4TM3, aStandTOTALS4TM4, aStandTOTALS4TM5, aStandTOTALS4TM7;
    
            numeric xTOTALS4TM1 = 0;
            numeric xTOTALS4TM2 = 0;
            numeric xTOTALS4TM3 = 0;
            numeric xTOTALS4TM4 = 0;
            numeric xTOTALS4TM5 = 0;
            numeric xTOTALS4TM7 = 0;
    
            numeric xQuadTOTALS4TM1 = 0;
            numeric xQuadTOTALS4TM2 = 0;
            numeric xQuadTOTALS4TM3 = 0;
            numeric xQuadTOTALS4TM4 = 0;
            numeric xQuadTOTALS4TM5 = 0;
            numeric xQuadTOTALS4TM7 = 0;
    
            numeric yTOTALS4TM1 = 0;
            numeric yTOTALS4TM2 = 0;
            numeric yTOTALS4TM3 = 0;
            numeric yTOTALS4TM4 = 0;
            numeric yTOTALS4TM5 = 0;
            numeric yTOTALS4TM7 = 0;
    
            numeric yQuadTOTALS4TM1 = 0;
            numeric yQuadTOTALS4TM2 = 0;
            numeric yQuadTOTALS4TM3 = 0;
            numeric yQuadTOTALS4TM4 = 0;
            numeric yQuadTOTALS4TM5 = 0;
            numeric yQuadTOTALS4TM7 = 0;
    
            numeric xyTOTALS4TM1 = 0;
            numeric xyTOTALS4TM2 = 0;
            numeric xyTOTALS4TM3 = 0;
            numeric xyTOTALS4TM4 = 0;
            numeric xyTOTALS4TM5 = 0;
            numeric xyTOTALS4TM7 = 0;
    
            numeric xxAritQuadTOTALS4TM1 = 0;
            numeric xxAritQuadTOTALS4TM2 = 0;
            numeric xxAritQuadTOTALS4TM3 = 0;
            numeric xxAritQuadTOTALS4TM4 = 0;
            numeric xxAritQuadTOTALS4TM5 = 0;
            numeric xxAritQuadTOTALS4TM7 = 0;
    
            numeric yyAritQuadTOTALS4TM1 = 0;
            numeric yyAritQuadTOTALS4TM2 = 0;
            numeric yyAritQuadTOTALS4TM3 = 0;
            numeric yyAritQuadTOTALS4TM4 = 0;
            numeric yyAritQuadTOTALS4TM5 = 0;
            numeric yyAritQuadTOTALS4TM7 = 0;
    
            numeric qXYTOTALS4TM1 = 0;
            numeric qXYTOTALS4TM2 = 0;
            numeric qXYTOTALS4TM3 = 0;
            numeric qXYTOTALS4TM4 = 0;
            numeric qXYTOTALS4TM5 = 0;
            numeric qXYTOTALS4TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS4TM1 = xTOTALS4TM1 + pifTOTALS1TM1arrayRAND[m];
                xTOTALS4TM2 = xTOTALS4TM2 + pifTOTALS1TM2arrayRAND[m];
                xTOTALS4TM3 = xTOTALS4TM3 + pifTOTALS1TM3arrayRAND[m];
                xTOTALS4TM4 = xTOTALS4TM4 + pifTOTALS1TM4arrayRAND[m];
                xTOTALS4TM5 = xTOTALS4TM5 + pifTOTALS1TM5arrayRAND[m];
                xTOTALS4TM7 = xTOTALS4TM7 + pifTOTALS1TM7arrayRAND[m];
    
                xQuadTOTALS4TM1 = (xQuadTOTALS4TM1 + (pifTOTALS1TM1arrayRAND[m]^2));
                xQuadTOTALS4TM2 = (xQuadTOTALS4TM2 + (pifTOTALS1TM2arrayRAND[m]^2));
                xQuadTOTALS4TM3 = (xQuadTOTALS4TM3 + (pifTOTALS1TM3arrayRAND[m]^2));
                xQuadTOTALS4TM4 = (xQuadTOTALS4TM4 + (pifTOTALS1TM4arrayRAND[m]^2));
                xQuadTOTALS4TM5 = (xQuadTOTALS4TM5 + (pifTOTALS1TM5arrayRAND[m]^2));
                xQuadTOTALS4TM7 = (xQuadTOTALS4TM7 + (pifTOTALS1TM7arrayRAND[m]^2));
    
                yTOTALS4TM1 = yTOTALS4TM1 + pifTOTALS4TM1arrayRAND[m];
                yTOTALS4TM2 = yTOTALS4TM2 + pifTOTALS4TM2arrayRAND[m];
                yTOTALS4TM3 = yTOTALS4TM3 + pifTOTALS4TM3arrayRAND[m];
                yTOTALS4TM4 = yTOTALS4TM4 + pifTOTALS4TM4arrayRAND[m];
                yTOTALS4TM5 = yTOTALS4TM5 + pifTOTALS4TM5arrayRAND[m];
                yTOTALS4TM7 = yTOTALS4TM7 + pifTOTALS4TM7arrayRAND[m];
                
                yQuadTOTALS4TM1 = (yQuadTOTALS4TM1 + (pifTOTALS4TM1arrayRAND[m]^2));
                yQuadTOTALS4TM2 = (yQuadTOTALS4TM2 + (pifTOTALS4TM2arrayRAND[m]^2));
                yQuadTOTALS4TM3 = (yQuadTOTALS4TM3 + (pifTOTALS4TM3arrayRAND[m]^2));
                yQuadTOTALS4TM4 = (yQuadTOTALS4TM4 + (pifTOTALS4TM4arrayRAND[m]^2));
                yQuadTOTALS4TM5 = (yQuadTOTALS4TM5 + (pifTOTALS4TM5arrayRAND[m]^2));
                yQuadTOTALS4TM7 = (yQuadTOTALS4TM7 + (pifTOTALS4TM7arrayRAND[m]^2));
    
                xyTOTALS4TM1 = (xyTOTALS4TM1 + (pifTOTALS1TM1arrayRAND[m] * pifTOTALS4TM1arrayRAND[m]));
                xyTOTALS4TM2 = (xyTOTALS4TM2 + (pifTOTALS1TM2arrayRAND[m] * pifTOTALS4TM2arrayRAND[m]));
                xyTOTALS4TM3 = (xyTOTALS4TM3 + (pifTOTALS1TM3arrayRAND[m] * pifTOTALS4TM3arrayRAND[m]));
                xyTOTALS4TM4 = (xyTOTALS4TM4 + (pifTOTALS1TM4arrayRAND[m] * pifTOTALS4TM4arrayRAND[m]));
                xyTOTALS4TM5 = (xyTOTALS4TM5 + (pifTOTALS1TM5arrayRAND[m] * pifTOTALS4TM5arrayRAND[m]));
                xyTOTALS4TM7 = (xyTOTALS4TM7 + (pifTOTALS1TM7arrayRAND[m] * pifTOTALS4TM7arrayRAND[m]));
            }	
            
            xAritTOTALS4TM1 = xTOTALS4TM1 / minPifVAL;
            xAritTOTALS4TM2 = xTOTALS4TM2 / minPifVAL;
            xAritTOTALS4TM3 = xTOTALS4TM3 / minPifVAL;
            xAritTOTALS4TM4 = xTOTALS4TM4 / minPifVAL;
            xAritTOTALS4TM5 = xTOTALS4TM5 / minPifVAL;
            xAritTOTALS4TM7 = xTOTALS4TM7 / minPifVAL;
    
            yAritTOTALS4TM1 = yTOTALS4TM1 / minPifVAL;
            yAritTOTALS4TM2 = yTOTALS4TM2 / minPifVAL;
            yAritTOTALS4TM3 = yTOTALS4TM3 / minPifVAL;
            yAritTOTALS4TM4 = yTOTALS4TM4 / minPifVAL;
            yAritTOTALS4TM5 = yTOTALS4TM5 / minPifVAL;
            yAritTOTALS4TM7 = yTOTALS4TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4TM1 = (xxAritQuadTOTALS4TM1 + ((pifTOTALS1TM1arrayRAND[n] - xAritTOTALS4TM1)^2));
                xxAritQuadTOTALS4TM2 = (xxAritQuadTOTALS4TM2 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS4TM2)^2));
                xxAritQuadTOTALS4TM3 = (xxAritQuadTOTALS4TM3 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS4TM3)^2));
                xxAritQuadTOTALS4TM4 = (xxAritQuadTOTALS4TM4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS4TM4)^2));
                xxAritQuadTOTALS4TM5 = (xxAritQuadTOTALS4TM5 + ((pifTOTALS1TM5arrayRAND[n] - xAritTOTALS4TM5)^2));
                xxAritQuadTOTALS4TM7 = (xxAritQuadTOTALS4TM7 + ((pifTOTALS1TM7arrayRAND[n] - xAritTOTALS4TM7)^2));
    
                yyAritQuadTOTALS4TM1 = (yyAritQuadTOTALS4TM1 + ((pifTOTALS4TM1arrayRAND[n] - yAritTOTALS4TM1)^2));
                yyAritQuadTOTALS4TM2 = (yyAritQuadTOTALS4TM2 + ((pifTOTALS4TM2arrayRAND[n] - yAritTOTALS4TM2)^2));
                yyAritQuadTOTALS4TM3 = (yyAritQuadTOTALS4TM3 + ((pifTOTALS4TM3arrayRAND[n] - yAritTOTALS4TM3)^2));
                yyAritQuadTOTALS4TM4 = (yyAritQuadTOTALS4TM4 + ((pifTOTALS4TM4arrayRAND[n] - yAritTOTALS4TM4)^2));
                yyAritQuadTOTALS4TM5 = (yyAritQuadTOTALS4TM5 + ((pifTOTALS4TM5arrayRAND[n] - yAritTOTALS4TM5)^2));
                yyAritQuadTOTALS4TM7 = (yyAritQuadTOTALS4TM7 + ((pifTOTALS4TM7arrayRAND[n] - yAritTOTALS4TM7)^2));
    
                qXYTOTALS4TM1 = (qXYTOTALS4TM1 + ((pifTOTALS1TM1arrayRAND[n] - xAritTOTALS4TM1) * (pifTOTALS4TM1arrayRAND[n] - yAritTOTALS4TM1)));
                qXYTOTALS4TM2 = (qXYTOTALS4TM2 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS4TM2) * (pifTOTALS4TM2arrayRAND[n] - yAritTOTALS4TM2)));
                qXYTOTALS4TM3 = (qXYTOTALS4TM3 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS4TM3) * (pifTOTALS4TM3arrayRAND[n] - yAritTOTALS4TM3)));
                qXYTOTALS4TM4 = (qXYTOTALS4TM4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS4TM4) * (pifTOTALS4TM4arrayRAND[n] - yAritTOTALS4TM4)));
                qXYTOTALS4TM5 = (qXYTOTALS4TM5 + ((pifTOTALS1TM5arrayRAND[n] - xAritTOTALS4TM5) * (pifTOTALS4TM5arrayRAND[n] - yAritTOTALS4TM5)));
                qXYTOTALS4TM7 = (qXYTOTALS4TM7 + ((pifTOTALS1TM7arrayRAND[n] - xAritTOTALS4TM7) * (pifTOTALS4TM7arrayRAND[n] - yAritTOTALS4TM7)));
            }
        
            aTOTALS4TM1 = (((xQuadTOTALS4TM1 * yTOTALS4TM1) - (xTOTALS4TM1 * xyTOTALS4TM1)) / ((minPifVAL * xQuadTOTALS4TM1) - (xTOTALS4TM1^2)));
            aTOTALS4TM2 = (((xQuadTOTALS4TM2 * yTOTALS4TM2) - (xTOTALS4TM2 * xyTOTALS4TM2)) / ((minPifVAL * xQuadTOTALS4TM2) - (xTOTALS4TM2^2)));
            aTOTALS4TM3 = (((xQuadTOTALS4TM3 * yTOTALS4TM3) - (xTOTALS4TM3 * xyTOTALS4TM3)) / ((minPifVAL * xQuadTOTALS4TM3) - (xTOTALS4TM3^2)));
            aTOTALS4TM4 = (((xQuadTOTALS4TM4 * yTOTALS4TM4) - (xTOTALS4TM4 * xyTOTALS4TM4)) / ((minPifVAL * xQuadTOTALS4TM4) - (xTOTALS4TM4^2)));
            aTOTALS4TM5 = (((xQuadTOTALS4TM5 * yTOTALS4TM5) - (xTOTALS4TM5 * xyTOTALS4TM5)) / ((minPifVAL * xQuadTOTALS4TM5) - (xTOTALS4TM5^2)));
            aTOTALS4TM7 = (((xQuadTOTALS4TM7 * yTOTALS4TM7) - (xTOTALS4TM7 * xyTOTALS4TM7)) / ((minPifVAL * xQuadTOTALS4TM7) - (xTOTALS4TM7^2)));
            
            bTOTALS4TM1 = qXYTOTALS4TM1 / xxAritQuadTOTALS4TM1;
            bTOTALS4TM2 = qXYTOTALS4TM2 / xxAritQuadTOTALS4TM2;
            bTOTALS4TM3 = qXYTOTALS4TM3 / xxAritQuadTOTALS4TM3;
            bTOTALS4TM4 = qXYTOTALS4TM4 / xxAritQuadTOTALS4TM4;
            bTOTALS4TM5 = qXYTOTALS4TM5 / xxAritQuadTOTALS4TM5;
            bTOTALS4TM7 = qXYTOTALS4TM7 / xxAritQuadTOTALS4TM7;
    
            rTOTALS4TM1 = (qXYTOTALS4TM1 / ((xxAritQuadTOTALS4TM1 * yyAritQuadTOTALS4TM1)^0.5));
            rTOTALS4TM2 = (qXYTOTALS4TM2 / ((xxAritQuadTOTALS4TM2 * yyAritQuadTOTALS4TM2)^0.5));
            rTOTALS4TM3 = (qXYTOTALS4TM3 / ((xxAritQuadTOTALS4TM3 * yyAritQuadTOTALS4TM3)^0.5));
            rTOTALS4TM4 = (qXYTOTALS4TM4 / ((xxAritQuadTOTALS4TM4 * yyAritQuadTOTALS4TM4)^0.5));
            rTOTALS4TM5 = (qXYTOTALS4TM5 / ((xxAritQuadTOTALS4TM5 * yyAritQuadTOTALS4TM5)^0.5));
            rTOTALS4TM7 = (qXYTOTALS4TM7 / ((xxAritQuadTOTALS4TM7 * yyAritQuadTOTALS4TM7)^0.5));
    
            rQuadTOTALS4TM1 = ((rTOTALS4TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4TM2 = ((rTOTALS4TM2^2) * 100);
            rQuadTOTALS4TM3 = ((rTOTALS4TM3^2) * 100);
            rQuadTOTALS4TM4 = ((rTOTALS4TM4^2) * 100);
            rQuadTOTALS4TM5 = ((rTOTALS4TM5^2) * 100);
            rQuadTOTALS4TM7 = ((rTOTALS4TM7^2) * 100);
        
            syxTOTALS4TM1 = (((yyAritQuadTOTALS4TM1 - ((qXYTOTALS4TM1^2) / xxAritQuadTOTALS4TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM2 = (((yyAritQuadTOTALS4TM2 - ((qXYTOTALS4TM2^2) / xxAritQuadTOTALS4TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM3 = (((yyAritQuadTOTALS4TM3 - ((qXYTOTALS4TM3^2) / xxAritQuadTOTALS4TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM4 = (((yyAritQuadTOTALS4TM4 - ((qXYTOTALS4TM4^2) / xxAritQuadTOTALS4TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM5 = (((yyAritQuadTOTALS4TM5 - ((qXYTOTALS4TM5^2) / xxAritQuadTOTALS4TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM7 = (((yyAritQuadTOTALS4TM7 - ((qXYTOTALS4TM7^2) / xxAritQuadTOTALS4TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4TM1 = (((syxTOTALS4TM1^2) / xxAritQuadTOTALS4TM1)^0.5);
            bStandTOTALS4TM2 = (((syxTOTALS4TM2^2) / xxAritQuadTOTALS4TM2)^0.5);
            bStandTOTALS4TM3 = (((syxTOTALS4TM3^2) / xxAritQuadTOTALS4TM3)^0.5);
            bStandTOTALS4TM4 = (((syxTOTALS4TM4^2) / xxAritQuadTOTALS4TM4)^0.5);
            bStandTOTALS4TM5 = (((syxTOTALS4TM5^2) / xxAritQuadTOTALS4TM5)^0.5);
            bStandTOTALS4TM7 = (((syxTOTALS4TM7^2) / xxAritQuadTOTALS4TM7)^0.5);
    
            aStandTOTALS4TM1 = (bStandTOTALS4TM1 * ((xQuadTOTALS4TM1 / minPifVAL)^0.5));
            aStandTOTALS4TM2 = (bStandTOTALS4TM2 * ((xQuadTOTALS4TM2 / minPifVAL)^0.5));
            aStandTOTALS4TM3 = (bStandTOTALS4TM3 * ((xQuadTOTALS4TM3 / minPifVAL)^0.5));
            aStandTOTALS4TM4 = (bStandTOTALS4TM4 * ((xQuadTOTALS4TM4 / minPifVAL)^0.5));
            aStandTOTALS4TM5 = (bStandTOTALS4TM5 * ((xQuadTOTALS4TM5 / minPifVAL)^0.5));
            aStandTOTALS4TM7 = (bStandTOTALS4TM7 * ((xQuadTOTALS4TM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM1, bTOTALS4TM1, rTOTALS4TM1, rQuadTOTALS4TM1, aStandTOTALS4TM1, bStandTOTALS4TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM2, bTOTALS4TM2, rTOTALS4TM2, rQuadTOTALS4TM2, aStandTOTALS4TM2, bStandTOTALS4TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM3, bTOTALS4TM3, rTOTALS4TM3, rQuadTOTALS4TM3, aStandTOTALS4TM3, bStandTOTALS4TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM4, bTOTALS4TM4, rTOTALS4TM4, rQuadTOTALS4TM4, aStandTOTALS4TM4, bStandTOTALS4TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM5, bTOTALS4TM5, rTOTALS4TM5, rQuadTOTALS4TM5, aStandTOTALS4TM5, bStandTOTALS4TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS4TM7, bTOTALS4TM7, rTOTALS4TM7, rQuadTOTALS4TM7, aStandTOTALS4TM7, bStandTOTALS4TM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS4TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS4TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS4TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS4TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS4TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS4TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS4TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT4TM1[i,j] = (aTOTALS4TM1 + (bTOTALS4TM1 * REFS4TM1[i,j]));
                    OUT4TM2[i,j] = (aTOTALS4TM2 + (bTOTALS4TM2 * REFS4TM2[i,j]));
                    OUT4TM3[i,j] = (aTOTALS4TM3 + (bTOTALS4TM3 * REFS4TM3[i,j]));
                    OUT4TM4[i,j] = (aTOTALS4TM4 + (bTOTALS4TM4 * REFS4TM4[i,j]));
                    OUT4TM5[i,j] = (aTOTALS4TM5 + (bTOTALS4TM5 * REFS4TM5[i,j]));
                    OUT4TM7[i,j] = (aTOTALS4TM7 + (bTOTALS4TM7 * REFS4TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4TM1);
        	CreatePyramid(OUT4TM2);
        	CreatePyramid(OUT4TM3);
        	CreatePyramid(OUT4TM4);
        	CreatePyramid(OUT4TM5);
        	CreatePyramid(OUT4TM7);
        
        	CreateHistogram(OUT4TM1);
        	CreateHistogram(OUT4TM2);
        	CreateHistogram(OUT4TM3);
        	CreateHistogram(OUT4TM4);
        	CreateHistogram(OUT4TM5);
        	CreateHistogram(OUT4TM7);
        
        	CloseRaster(REFS4TM1);
            CloseRaster(REFS4TM2);
            CloseRaster(REFS4TM3);
            CloseRaster(REFS4TM4);
            CloseRaster(REFS4TM5);
            CloseRaster(REFS4TM7);
    
            CloseRaster(OUT4TM1);
            CloseRaster(OUT4TM2);
            CloseRaster(OUT4TM3);
            CloseRaster(OUT4TM4);
            CloseRaster(OUT4TM5);
            CloseRaster(OUT4TM7);
        
        	printf("Scene 4 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            { 
            numeric xAritTOTALS4MSS1, xAritTOTALS4MSS2, xAritTOTALS4MSS4;
            numeric yAritTOTALS4MSS1, yAritTOTALS4MSS2, yAritTOTALS4MSS4;
    
            numeric aTOTALS4MSS1, aTOTALS4MSS2, aTOTALS4MSS4;
            numeric bTOTALS4MSS1, bTOTALS4MSS2, bTOTALS4MSS4;
            numeric rTOTALS4MSS1, rTOTALS4MSS2, rTOTALS4MSS4;
            numeric rQuadTOTALS4MSS1, rQuadTOTALS4MSS2, rQuadTOTALS4MSS4;
            numeric syxTOTALS4MSS1, syxTOTALS4MSS2, syxTOTALS4MSS4;
            numeric bStandTOTALS4MSS1, bStandTOTALS4MSS2, bStandTOTALS4MSS4;
            numeric aStandTOTALS4MSS1, aStandTOTALS4MSS2, aStandTOTALS4MSS4;
    
            numeric xTOTALS4MSS1 = 0;
            numeric xTOTALS4MSS2 = 0;
            numeric xTOTALS4MSS4 = 0;
    
            numeric xQuadTOTALS4MSS1 = 0;
            numeric xQuadTOTALS4MSS2 = 0;
            numeric xQuadTOTALS4MSS4 = 0;
    
            numeric yTOTALS4MSS1 = 0;
            numeric yTOTALS4MSS2 = 0;
            numeric yTOTALS4MSS4 = 0;
    
            numeric yQuadTOTALS4MSS1 = 0;
            numeric yQuadTOTALS4MSS2 = 0;
            numeric yQuadTOTALS4MSS4 = 0;
    
            numeric xyTOTALS4MSS1 = 0;
            numeric xyTOTALS4MSS2 = 0;
            numeric xyTOTALS4MSS4 = 0;
    
            numeric xxAritQuadTOTALS4MSS1 = 0;
            numeric xxAritQuadTOTALS4MSS2 = 0;
            numeric xxAritQuadTOTALS4MSS4 = 0;
    
            numeric yyAritQuadTOTALS4MSS1 = 0;
            numeric yyAritQuadTOTALS4MSS2 = 0;
            numeric yyAritQuadTOTALS4MSS4 = 0;
    
            numeric qXYTOTALS4MSS1 = 0;
            numeric qXYTOTALS4MSS2 = 0;
            numeric qXYTOTALS4MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS4MSS1 = xTOTALS4MSS1 + pifTOTALS1TM2arrayRAND[m];
                xTOTALS4MSS2 = xTOTALS4MSS2 + pifTOTALS1TM3arrayRAND[m];
                xTOTALS4MSS4 = xTOTALS4MSS4 + pifTOTALS1TM4arrayRAND[m];
    
                xQuadTOTALS4MSS1 = (xQuadTOTALS4MSS1 + (pifTOTALS1TM2arrayRAND[m]^2));
                xQuadTOTALS4MSS2 = (xQuadTOTALS4MSS2 + (pifTOTALS1TM3arrayRAND[m]^2));
                xQuadTOTALS4MSS4 = (xQuadTOTALS4MSS4 + (pifTOTALS1TM4arrayRAND[m]^2));
    
                yTOTALS4MSS1 = yTOTALS4MSS1 + pifTOTALS4MSS1arrayRAND[m];
                yTOTALS4MSS2 = yTOTALS4MSS2 + pifTOTALS4MSS2arrayRAND[m];
                yTOTALS4MSS4 = yTOTALS4MSS4 + pifTOTALS4MSS4arrayRAND[m];
                
                yQuadTOTALS4MSS1 = (yQuadTOTALS4MSS1 + (pifTOTALS4MSS1arrayRAND[m]^2));
                yQuadTOTALS4MSS2 = (yQuadTOTALS4MSS2 + (pifTOTALS4MSS2arrayRAND[m]^2));
                yQuadTOTALS4MSS4 = (yQuadTOTALS4MSS4 + (pifTOTALS4MSS4arrayRAND[m]^2));
    
                xyTOTALS4MSS1 = (xyTOTALS4MSS1 + (pifTOTALS1TM2arrayRAND[m] * pifTOTALS4MSS1arrayRAND[m]));
                xyTOTALS4MSS2 = (xyTOTALS4MSS2 + (pifTOTALS1TM3arrayRAND[m] * pifTOTALS4MSS2arrayRAND[m]));
                xyTOTALS4MSS4 = (xyTOTALS4MSS4 + (pifTOTALS1TM4arrayRAND[m] * pifTOTALS4MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS4MSS1 = xTOTALS4MSS1 / minPifVAL;
            xAritTOTALS4MSS2 = xTOTALS4MSS2 / minPifVAL;
            xAritTOTALS4MSS4 = xTOTALS4MSS4 / minPifVAL;
    
            yAritTOTALS4MSS1 = yTOTALS4MSS1 / minPifVAL;
            yAritTOTALS4MSS2 = yTOTALS4MSS2 / minPifVAL;
            yAritTOTALS4MSS4 = yTOTALS4MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4MSS1 = (xxAritQuadTOTALS4MSS1 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS4MSS1)^2));
                xxAritQuadTOTALS4MSS2 = (xxAritQuadTOTALS4MSS2 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS4MSS2)^2));
                xxAritQuadTOTALS4MSS4 = (xxAritQuadTOTALS4MSS4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS4MSS4)^2));
    
                yyAritQuadTOTALS4MSS1 = (yyAritQuadTOTALS4MSS1 + ((pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)^2));
                yyAritQuadTOTALS4MSS2 = (yyAritQuadTOTALS4MSS2 + ((pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)^2));
                yyAritQuadTOTALS4MSS4 = (yyAritQuadTOTALS4MSS4 + ((pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)^2));
    
                qXYTOTALS4MSS1 = (qXYTOTALS4MSS1 + ((pifTOTALS1TM2arrayRAND[n] - xAritTOTALS4MSS1) * (pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)));
                qXYTOTALS4MSS2 = (qXYTOTALS4MSS2 + ((pifTOTALS1TM3arrayRAND[n] - xAritTOTALS4MSS2) * (pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)));
                qXYTOTALS4MSS4 = (qXYTOTALS4MSS4 + ((pifTOTALS1TM4arrayRAND[n] - xAritTOTALS4MSS4) * (pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)));
            }
        
            aTOTALS4MSS1 = (((xQuadTOTALS4MSS1 * yTOTALS4MSS1) - (xTOTALS4MSS1 * xyTOTALS4MSS1)) / ((minPifVAL * xQuadTOTALS4MSS1) - (xTOTALS4MSS1^2)));
            aTOTALS4MSS2 = (((xQuadTOTALS4MSS2 * yTOTALS4MSS2) - (xTOTALS4MSS2 * xyTOTALS4MSS2)) / ((minPifVAL * xQuadTOTALS4MSS2) - (xTOTALS4MSS2^2)));
            aTOTALS4MSS4 = (((xQuadTOTALS4MSS4 * yTOTALS4MSS4) - (xTOTALS4MSS4 * xyTOTALS4MSS4)) / ((minPifVAL * xQuadTOTALS4MSS4) - (xTOTALS4MSS4^2)));
            
            bTOTALS4MSS1 = qXYTOTALS4MSS1 / xxAritQuadTOTALS4MSS1;
            bTOTALS4MSS2 = qXYTOTALS4MSS2 / xxAritQuadTOTALS4MSS2;
            bTOTALS4MSS4 = qXYTOTALS4MSS4 / xxAritQuadTOTALS4MSS4;
    
            rTOTALS4MSS1 = (qXYTOTALS4MSS1 / ((xxAritQuadTOTALS4MSS1 * yyAritQuadTOTALS4MSS1)^0.5));
            rTOTALS4MSS2 = (qXYTOTALS4MSS2 / ((xxAritQuadTOTALS4MSS2 * yyAritQuadTOTALS4MSS2)^0.5));
            rTOTALS4MSS4 = (qXYTOTALS4MSS4 / ((xxAritQuadTOTALS4MSS4 * yyAritQuadTOTALS4MSS4)^0.5));
    
            rQuadTOTALS4MSS1 = ((rTOTALS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4MSS2 = ((rTOTALS4MSS2^2) * 100);
            rQuadTOTALS4MSS4 = ((rTOTALS4MSS4^2) * 100);
        
            syxTOTALS4MSS1 = (((yyAritQuadTOTALS4MSS1 - ((qXYTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS2 = (((yyAritQuadTOTALS4MSS2 - ((qXYTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS4 = (((yyAritQuadTOTALS4MSS4 - ((qXYTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4MSS1 = (((syxTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)^0.5);
            bStandTOTALS4MSS2 = (((syxTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)^0.5);
            bStandTOTALS4MSS4 = (((syxTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)^0.5);
    
            aStandTOTALS4MSS1 = (bStandTOTALS4MSS1 * ((xQuadTOTALS4MSS1 / minPifVAL)^0.5));
            aStandTOTALS4MSS2 = (bStandTOTALS4MSS2 * ((xQuadTOTALS4MSS2 / minPifVAL)^0.5));
            aStandTOTALS4MSS4 = (bStandTOTALS4MSS4 * ((xQuadTOTALS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS1, bTOTALS4MSS1, rTOTALS4MSS1, rQuadTOTALS4MSS1, aStandTOTALS4MSS1, bStandTOTALS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS2, bTOTALS4MSS2, rTOTALS4MSS2, rQuadTOTALS4MSS2, aStandTOTALS4MSS2, bStandTOTALS4MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS4, bTOTALS4MSS4, rTOTALS4MSS4, rQuadTOTALS4MSS4, aStandTOTALS4MSS4, bStandTOTALS4MSS4);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS4MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS4MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS4MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aTOTALS4MSS1 + (bTOTALS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aTOTALS4MSS2 + (bTOTALS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = REFS4MSS3[i,j];
                    OUT4MSS4[i,j] = (aTOTALS4MSS4 + (bTOTALS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT4MSS1);
        	CreatePyramid(OUT4MSS2);
        	CreatePyramid(OUT4MSS3);
        	CreatePyramid(OUT4MSS4);
        
        	CreateHistogram(OUT4MSS1);
        	CreateHistogram(OUT4MSS2);
        	CreateHistogram(OUT4MSS3);
        	CreateHistogram(OUT4MSS4);
        
        	CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
        }
        
        else
        {
        printf("Scene 1 - Master Scene (MSS):\n");
        printf("Scene 1 array values used for regression computation:\n");
    
        printf("MSS1: %12f ", pifTOTALS1MSS1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS1MSS1arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS1MSS1arrayRAND[minPifVAL]);
    
        printf("MSS2: %12f ", pifTOTALS1MSS2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS1MSS2arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS1MSS2arrayRAND[minPifVAL]);
    
        printf("MSS3: %12f ", pifTOTALS1MSS3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS1MSS3arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS1MSS3arrayRAND[minPifVAL]);
    
        printf("MSS4: %12f ", pifTOTALS1MSS4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS1MSS4arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS1MSS4arrayRAND[minPifVAL]);
            
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                OUT1MSS1[i,j] = REFS1MSS1[i,j];
                OUT1MSS2[i,j] = REFS1MSS2[i,j];
                OUT1MSS3[i,j] = REFS1MSS3[i,j];
                OUT1MSS4[i,j] = REFS1MSS4[i,j];
                }
            }
        
        CreatePyramid(OUT1MSS1);
        CreatePyramid(OUT1MSS2);
        CreatePyramid(OUT1MSS3);
        CreatePyramid(OUT1MSS4);
    
        CreateHistogram(OUT1MSS1);
        CreateHistogram(OUT1MSS2);
        CreateHistogram(OUT1MSS3);
        CreateHistogram(OUT1MSS4);
        
        CloseRaster(REFS1MSS1);
        CloseRaster(REFS1MSS2);
        CloseRaster(REFS1MSS3);
        CloseRaster(REFS1MSS4);
        CloseRaster(OUT1MSS1);
        CloseRaster(OUT1MSS2);
        CloseRaster(OUT1MSS3);
        CloseRaster(OUT1MSS4);
        printf("Scene 1 (Master) output was written, histogram created and pyramid written\n\n\n");
        
            if ( sensors2 == 7 )
            {
            	printf("Master: Scene 1 (MSS), Slave: Scene 2 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors2 == 6 )
            {
                  printf("Master: Scene 1 (MSS), Slave: Scene 2 (TM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            { 
            numeric xAritTOTALS2MSS1, xAritTOTALS2MSS2, xAritTOTALS2MSS3, xAritTOTALS2MSS4;
            numeric yAritTOTALS2MSS1, yAritTOTALS2MSS2, yAritTOTALS2MSS3, yAritTOTALS2MSS4;
    
            numeric aTOTALS2MSS1, aTOTALS2MSS2, aTOTALS2MSS3, aTOTALS2MSS4;
            numeric bTOTALS2MSS1, bTOTALS2MSS2, bTOTALS2MSS3, bTOTALS2MSS4;
            numeric rTOTALS2MSS1, rTOTALS2MSS2, rTOTALS2MSS3, rTOTALS2MSS4;
            numeric rQuadTOTALS2MSS1, rQuadTOTALS2MSS2, rQuadTOTALS2MSS3, rQuadTOTALS2MSS4;
            numeric syxTOTALS2MSS1, syxTOTALS2MSS2, syxTOTALS2MSS3, syxTOTALS2MSS4;
            numeric bStandTOTALS2MSS1, bStandTOTALS2MSS2, bStandTOTALS2MSS3, bStandTOTALS2MSS4;
            numeric aStandTOTALS2MSS1, aStandTOTALS2MSS2, aStandTOTALS2MSS3, aStandTOTALS2MSS4;
    
            numeric xTOTALS2MSS1 = 0;
            numeric xTOTALS2MSS2 = 0;
            numeric xTOTALS2MSS3 = 0;
            numeric xTOTALS2MSS4 = 0;
    
            numeric xQuadTOTALS2MSS1 = 0;
            numeric xQuadTOTALS2MSS2 = 0;
            numeric xQuadTOTALS2MSS3 = 0;
            numeric xQuadTOTALS2MSS4 = 0;
    
            numeric yTOTALS2MSS1 = 0;
            numeric yTOTALS2MSS2 = 0;
            numeric yTOTALS2MSS3 = 0;
            numeric yTOTALS2MSS4 = 0;
    
            numeric yQuadTOTALS2MSS1 = 0;
            numeric yQuadTOTALS2MSS2 = 0;
            numeric yQuadTOTALS2MSS3 = 0;
            numeric yQuadTOTALS2MSS4 = 0;
    
            numeric xyTOTALS2MSS1 = 0;
            numeric xyTOTALS2MSS2 = 0;
            numeric xyTOTALS2MSS3 = 0;
            numeric xyTOTALS2MSS4 = 0;
    
            numeric xxAritQuadTOTALS2MSS1 = 0;
            numeric xxAritQuadTOTALS2MSS2 = 0;
            numeric xxAritQuadTOTALS2MSS3 = 0;
            numeric xxAritQuadTOTALS2MSS4 = 0;
    
            numeric yyAritQuadTOTALS2MSS1 = 0;
            numeric yyAritQuadTOTALS2MSS2 = 0;
            numeric yyAritQuadTOTALS2MSS3 = 0;
            numeric yyAritQuadTOTALS2MSS4 = 0;
    
            numeric qXYTOTALS2MSS1 = 0;
            numeric qXYTOTALS2MSS2 = 0;
            numeric qXYTOTALS2MSS3 = 0;
            numeric qXYTOTALS2MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS2MSS1 = xTOTALS2MSS1 + pifTOTALS1MSS1arrayRAND[m];
                xTOTALS2MSS2 = xTOTALS2MSS2 + pifTOTALS1MSS2arrayRAND[m];
                xTOTALS2MSS3 = xTOTALS2MSS3 + pifTOTALS1MSS3arrayRAND[m];
                xTOTALS2MSS4 = xTOTALS2MSS4 + pifTOTALS1MSS4arrayRAND[m];
    
                xQuadTOTALS2MSS1 = (xQuadTOTALS2MSS1 + (pifTOTALS1MSS1arrayRAND[m]^2));
                xQuadTOTALS2MSS2 = (xQuadTOTALS2MSS2 + (pifTOTALS1MSS2arrayRAND[m]^2));
                xQuadTOTALS2MSS3 = (xQuadTOTALS2MSS3 + (pifTOTALS1MSS3arrayRAND[m]^2));
                xQuadTOTALS2MSS4 = (xQuadTOTALS2MSS4 + (pifTOTALS1MSS4arrayRAND[m]^2));
    
                yTOTALS2MSS1 = yTOTALS2MSS1 + pifTOTALS2MSS1arrayRAND[m];
                yTOTALS2MSS2 = yTOTALS2MSS2 + pifTOTALS2MSS2arrayRAND[m];
                yTOTALS2MSS3 = yTOTALS2MSS3 + pifTOTALS2MSS3arrayRAND[m];
                yTOTALS2MSS4 = yTOTALS2MSS4 + pifTOTALS2MSS4arrayRAND[m];
                
                yQuadTOTALS2MSS1 = (yQuadTOTALS2MSS1 + (pifTOTALS2MSS1arrayRAND[m]^2));
                yQuadTOTALS2MSS2 = (yQuadTOTALS2MSS2 + (pifTOTALS2MSS2arrayRAND[m]^2));
                yQuadTOTALS2MSS3 = (yQuadTOTALS2MSS3 + (pifTOTALS2MSS3arrayRAND[m]^2));
                yQuadTOTALS2MSS4 = (yQuadTOTALS2MSS4 + (pifTOTALS2MSS4arrayRAND[m]^2));
    
                xyTOTALS2MSS1 = (xyTOTALS2MSS1 + (pifTOTALS1MSS1arrayRAND[m] * pifTOTALS2MSS1arrayRAND[m]));
                xyTOTALS2MSS2 = (xyTOTALS2MSS2 + (pifTOTALS1MSS2arrayRAND[m] * pifTOTALS2MSS2arrayRAND[m]));
                xyTOTALS2MSS3 = (xyTOTALS2MSS3 + (pifTOTALS1MSS3arrayRAND[m] * pifTOTALS2MSS3arrayRAND[m]));
                xyTOTALS2MSS4 = (xyTOTALS2MSS4 + (pifTOTALS1MSS4arrayRAND[m] * pifTOTALS2MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS2MSS1 = xTOTALS2MSS1 / minPifVAL;
            xAritTOTALS2MSS2 = xTOTALS2MSS2 / minPifVAL;
            xAritTOTALS2MSS3 = xTOTALS2MSS3 / minPifVAL;
            xAritTOTALS2MSS4 = xTOTALS2MSS4 / minPifVAL;
    
            yAritTOTALS2MSS1 = yTOTALS2MSS1 / minPifVAL;
            yAritTOTALS2MSS2 = yTOTALS2MSS2 / minPifVAL;
            yAritTOTALS2MSS3 = yTOTALS2MSS3 / minPifVAL;
            yAritTOTALS2MSS4 = yTOTALS2MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2MSS1 = (xxAritQuadTOTALS2MSS1 + ((pifTOTALS1MSS1arrayRAND[n] - xAritTOTALS2MSS1)^2));
                xxAritQuadTOTALS2MSS2 = (xxAritQuadTOTALS2MSS2 + ((pifTOTALS1MSS2arrayRAND[n] - xAritTOTALS2MSS2)^2));
                xxAritQuadTOTALS2MSS3 = (xxAritQuadTOTALS2MSS3 + ((pifTOTALS1MSS3arrayRAND[n] - xAritTOTALS2MSS3)^2));
                xxAritQuadTOTALS2MSS4 = (xxAritQuadTOTALS2MSS4 + ((pifTOTALS1MSS4arrayRAND[n] - xAritTOTALS2MSS4)^2));
    
                yyAritQuadTOTALS2MSS1 = (yyAritQuadTOTALS2MSS1 + ((pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)^2));
                yyAritQuadTOTALS2MSS2 = (yyAritQuadTOTALS2MSS2 + ((pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)^2));
                yyAritQuadTOTALS2MSS3 = (yyAritQuadTOTALS2MSS3 + ((pifTOTALS2MSS3arrayRAND[n] - yAritTOTALS2MSS3)^2));
                yyAritQuadTOTALS2MSS4 = (yyAritQuadTOTALS2MSS4 + ((pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)^2));
    
                qXYTOTALS2MSS1 = (qXYTOTALS2MSS1 + ((pifTOTALS1MSS1arrayRAND[n] - xAritTOTALS2MSS1) * (pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)));
                qXYTOTALS2MSS2 = (qXYTOTALS2MSS2 + ((pifTOTALS1MSS2arrayRAND[n] - xAritTOTALS2MSS2) * (pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)));
                qXYTOTALS2MSS3 = (qXYTOTALS2MSS3 + ((pifTOTALS1MSS3arrayRAND[n] - xAritTOTALS2MSS3) * (pifTOTALS2MSS3arrayRAND[n] - yAritTOTALS2MSS3)));
                qXYTOTALS2MSS4 = (qXYTOTALS2MSS4 + ((pifTOTALS1MSS4arrayRAND[n] - xAritTOTALS2MSS4) * (pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)));
            }
        
            aTOTALS2MSS1 = (((xQuadTOTALS2MSS1 * yTOTALS2MSS1) - (xTOTALS2MSS1 * xyTOTALS2MSS1)) / ((minPifVAL * xQuadTOTALS2MSS1) - (xTOTALS2MSS1^2)));
            aTOTALS2MSS2 = (((xQuadTOTALS2MSS2 * yTOTALS2MSS2) - (xTOTALS2MSS2 * xyTOTALS2MSS2)) / ((minPifVAL * xQuadTOTALS2MSS2) - (xTOTALS2MSS2^2)));
            aTOTALS2MSS3 = (((xQuadTOTALS2MSS3 * yTOTALS2MSS3) - (xTOTALS2MSS3 * xyTOTALS2MSS3)) / ((minPifVAL * xQuadTOTALS2MSS3) - (xTOTALS2MSS3^2)));
            aTOTALS2MSS4 = (((xQuadTOTALS2MSS4 * yTOTALS2MSS4) - (xTOTALS2MSS4 * xyTOTALS2MSS4)) / ((minPifVAL * xQuadTOTALS2MSS4) - (xTOTALS2MSS4^2)));
            
            bTOTALS2MSS1 = qXYTOTALS2MSS1 / xxAritQuadTOTALS2MSS1;
            bTOTALS2MSS2 = qXYTOTALS2MSS2 / xxAritQuadTOTALS2MSS2;
            bTOTALS2MSS3 = qXYTOTALS2MSS3 / xxAritQuadTOTALS2MSS3;
            bTOTALS2MSS4 = qXYTOTALS2MSS4 / xxAritQuadTOTALS2MSS4;
    
            rTOTALS2MSS1 = (qXYTOTALS2MSS1 / ((xxAritQuadTOTALS2MSS1 * yyAritQuadTOTALS2MSS1)^0.5));
            rTOTALS2MSS2 = (qXYTOTALS2MSS2 / ((xxAritQuadTOTALS2MSS2 * yyAritQuadTOTALS2MSS2)^0.5));
            rTOTALS2MSS3 = (qXYTOTALS2MSS3 / ((xxAritQuadTOTALS2MSS3 * yyAritQuadTOTALS2MSS3)^0.5));
            rTOTALS2MSS4 = (qXYTOTALS2MSS4 / ((xxAritQuadTOTALS2MSS4 * yyAritQuadTOTALS2MSS4)^0.5));
    
            rQuadTOTALS2MSS1 = ((rTOTALS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2MSS2 = ((rTOTALS2MSS2^2) * 100);
            rQuadTOTALS2MSS3 = ((rTOTALS2MSS3^2) * 100);
            rQuadTOTALS2MSS4 = ((rTOTALS2MSS4^2) * 100);
        
            syxTOTALS2MSS1 = (((yyAritQuadTOTALS2MSS1 - ((qXYTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS2 = (((yyAritQuadTOTALS2MSS2 - ((qXYTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS3 = (((yyAritQuadTOTALS2MSS3 - ((qXYTOTALS2MSS3^2) / xxAritQuadTOTALS2MSS3)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS4 = (((yyAritQuadTOTALS2MSS4 - ((qXYTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2MSS1 = (((syxTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)^0.5);
            bStandTOTALS2MSS2 = (((syxTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)^0.5);
            bStandTOTALS2MSS3 = (((syxTOTALS2MSS3^2) / xxAritQuadTOTALS2MSS3)^0.5);
            bStandTOTALS2MSS4 = (((syxTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)^0.5);
    
            aStandTOTALS2MSS1 = (bStandTOTALS2MSS1 * ((xQuadTOTALS2MSS1 / minPifVAL)^0.5));
            aStandTOTALS2MSS2 = (bStandTOTALS2MSS2 * ((xQuadTOTALS2MSS2 / minPifVAL)^0.5));
            aStandTOTALS2MSS3 = (bStandTOTALS2MSS3 * ((xQuadTOTALS2MSS3 / minPifVAL)^0.5));
            aStandTOTALS2MSS4 = (bStandTOTALS2MSS4 * ((xQuadTOTALS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS1, bTOTALS2MSS1, rTOTALS2MSS1, rQuadTOTALS2MSS1, aStandTOTALS2MSS1, bStandTOTALS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS2, bTOTALS2MSS2, rTOTALS2MSS2, rQuadTOTALS2MSS2, aStandTOTALS2MSS2, bStandTOTALS2MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS3, bTOTALS2MSS3, rTOTALS2MSS3, rQuadTOTALS2MSS3, aStandTOTALS2MSS3, bStandTOTALS2MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS4, bTOTALS2MSS4, rTOTALS2MSS4, rQuadTOTALS2MSS4, aStandTOTALS2MSS4, bStandTOTALS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS2MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS2MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifTOTALS2MSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS2MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aTOTALS2MSS1 + (bTOTALS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aTOTALS2MSS2 + (bTOTALS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = (aTOTALS2MSS3 + (bTOTALS2MSS3 * REFS2MSS3[i,j]));
                    OUT2MSS4[i,j] = (aTOTALS2MSS4 + (bTOTALS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT2MSS1);
        	CreatePyramid(OUT2MSS2);
        	CreatePyramid(OUT2MSS3);
        	CreatePyramid(OUT2MSS4);
        
        	CreateHistogram(OUT2MSS1);
        	CreateHistogram(OUT2MSS2);
        	CreateHistogram(OUT2MSS3);
        	CreateHistogram(OUT2MSS4);
        
        	CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors3 == 7 )
            {
            	printf("Master: Scene 1 (MSS), Slave: Scene 3 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors3 == 6 )
            {
                  printf("Master: Scene 1 (MSS), Slave: Scene 3 (TM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            { 
            numeric xAritTOTALS3MSS1, xAritTOTALS3MSS2, xAritTOTALS3MSS3, xAritTOTALS3MSS4;
            numeric yAritTOTALS3MSS1, yAritTOTALS3MSS2, yAritTOTALS3MSS3, yAritTOTALS3MSS4;
    
            numeric aTOTALS3MSS1, aTOTALS3MSS2, aTOTALS3MSS3, aTOTALS3MSS4;
            numeric bTOTALS3MSS1, bTOTALS3MSS2, bTOTALS3MSS3, bTOTALS3MSS4;
            numeric rTOTALS3MSS1, rTOTALS3MSS2, rTOTALS3MSS3, rTOTALS3MSS4;
            numeric rQuadTOTALS3MSS1, rQuadTOTALS3MSS2, rQuadTOTALS3MSS3, rQuadTOTALS3MSS4;
            numeric syxTOTALS3MSS1, syxTOTALS3MSS2, syxTOTALS3MSS3, syxTOTALS3MSS4;
            numeric bStandTOTALS3MSS1, bStandTOTALS3MSS2, bStandTOTALS3MSS3, bStandTOTALS3MSS4;
            numeric aStandTOTALS3MSS1, aStandTOTALS3MSS2, aStandTOTALS3MSS3, aStandTOTALS3MSS4;
    
            numeric xTOTALS3MSS1 = 0;
            numeric xTOTALS3MSS2 = 0;
            numeric xTOTALS3MSS3 = 0;
            numeric xTOTALS3MSS4 = 0;
    
            numeric xQuadTOTALS3MSS1 = 0;
            numeric xQuadTOTALS3MSS2 = 0;
            numeric xQuadTOTALS3MSS3 = 0;
            numeric xQuadTOTALS3MSS4 = 0;
    
            numeric yTOTALS3MSS1 = 0;
            numeric yTOTALS3MSS2 = 0;
            numeric yTOTALS3MSS3 = 0;
            numeric yTOTALS3MSS4 = 0;
    
            numeric yQuadTOTALS3MSS1 = 0;
            numeric yQuadTOTALS3MSS2 = 0;
            numeric yQuadTOTALS3MSS3 = 0;
            numeric yQuadTOTALS3MSS4 = 0;
    
            numeric xyTOTALS3MSS1 = 0;
            numeric xyTOTALS3MSS2 = 0;
            numeric xyTOTALS3MSS3 = 0;
            numeric xyTOTALS3MSS4 = 0;
    
            numeric xxAritQuadTOTALS3MSS1 = 0;
            numeric xxAritQuadTOTALS3MSS2 = 0;
            numeric xxAritQuadTOTALS3MSS3 = 0;
            numeric xxAritQuadTOTALS3MSS4 = 0;
    
            numeric yyAritQuadTOTALS3MSS1 = 0;
            numeric yyAritQuadTOTALS3MSS2 = 0;
            numeric yyAritQuadTOTALS3MSS3 = 0;
            numeric yyAritQuadTOTALS3MSS4 = 0;
    
            numeric qXYTOTALS3MSS1 = 0;
            numeric qXYTOTALS3MSS2 = 0;
            numeric qXYTOTALS3MSS3 = 0;
            numeric qXYTOTALS3MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS3MSS1 = xTOTALS3MSS1 + pifTOTALS1MSS1arrayRAND[m];
                xTOTALS3MSS2 = xTOTALS3MSS2 + pifTOTALS1MSS2arrayRAND[m];
                xTOTALS3MSS3 = xTOTALS3MSS3 + pifTOTALS1MSS3arrayRAND[m];
                xTOTALS3MSS4 = xTOTALS3MSS4 + pifTOTALS1MSS4arrayRAND[m];
    
                xQuadTOTALS3MSS1 = (xQuadTOTALS3MSS1 + (pifTOTALS1MSS1arrayRAND[m]^2));
                xQuadTOTALS3MSS2 = (xQuadTOTALS3MSS2 + (pifTOTALS1MSS2arrayRAND[m]^2));
                xQuadTOTALS3MSS3 = (xQuadTOTALS3MSS3 + (pifTOTALS1MSS3arrayRAND[m]^2));
                xQuadTOTALS3MSS4 = (xQuadTOTALS3MSS4 + (pifTOTALS1MSS4arrayRAND[m]^2));
    
                yTOTALS3MSS1 = yTOTALS3MSS1 + pifTOTALS3MSS1arrayRAND[m];
                yTOTALS3MSS2 = yTOTALS3MSS2 + pifTOTALS3MSS2arrayRAND[m];
                yTOTALS3MSS3 = yTOTALS3MSS3 + pifTOTALS3MSS3arrayRAND[m];
                yTOTALS3MSS4 = yTOTALS3MSS4 + pifTOTALS3MSS4arrayRAND[m];
                
                yQuadTOTALS3MSS1 = (yQuadTOTALS3MSS1 + (pifTOTALS3MSS1arrayRAND[m]^2));
                yQuadTOTALS3MSS2 = (yQuadTOTALS3MSS2 + (pifTOTALS3MSS2arrayRAND[m]^2));
                yQuadTOTALS3MSS3 = (yQuadTOTALS3MSS3 + (pifTOTALS3MSS3arrayRAND[m]^2));
                yQuadTOTALS3MSS4 = (yQuadTOTALS3MSS4 + (pifTOTALS3MSS4arrayRAND[m]^2));
    
                xyTOTALS3MSS1 = (xyTOTALS3MSS1 + (pifTOTALS1MSS1arrayRAND[m] * pifTOTALS3MSS1arrayRAND[m]));
                xyTOTALS3MSS2 = (xyTOTALS3MSS2 + (pifTOTALS1MSS2arrayRAND[m] * pifTOTALS3MSS2arrayRAND[m]));
                xyTOTALS3MSS3 = (xyTOTALS3MSS3 + (pifTOTALS1MSS3arrayRAND[m] * pifTOTALS3MSS3arrayRAND[m]));
                xyTOTALS3MSS4 = (xyTOTALS3MSS4 + (pifTOTALS1MSS4arrayRAND[m] * pifTOTALS3MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS3MSS1 = xTOTALS3MSS1 / minPifVAL;
            xAritTOTALS3MSS2 = xTOTALS3MSS2 / minPifVAL;
            xAritTOTALS3MSS3 = xTOTALS3MSS3 / minPifVAL;
            xAritTOTALS3MSS4 = xTOTALS3MSS4 / minPifVAL;
    
            yAritTOTALS3MSS1 = yTOTALS3MSS1 / minPifVAL;
            yAritTOTALS3MSS2 = yTOTALS3MSS2 / minPifVAL;
            yAritTOTALS3MSS3 = yTOTALS3MSS3 / minPifVAL;
            yAritTOTALS3MSS4 = yTOTALS3MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3MSS1 = (xxAritQuadTOTALS3MSS1 + ((pifTOTALS1MSS1arrayRAND[n] - xAritTOTALS3MSS1)^2));
                xxAritQuadTOTALS3MSS2 = (xxAritQuadTOTALS3MSS2 + ((pifTOTALS1MSS2arrayRAND[n] - xAritTOTALS3MSS2)^2));
                xxAritQuadTOTALS3MSS3 = (xxAritQuadTOTALS3MSS3 + ((pifTOTALS1MSS3arrayRAND[n] - xAritTOTALS3MSS3)^2));
                xxAritQuadTOTALS3MSS4 = (xxAritQuadTOTALS3MSS4 + ((pifTOTALS1MSS4arrayRAND[n] - xAritTOTALS3MSS4)^2));
    
                yyAritQuadTOTALS3MSS1 = (yyAritQuadTOTALS3MSS1 + ((pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)^2));
                yyAritQuadTOTALS3MSS2 = (yyAritQuadTOTALS3MSS2 + ((pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)^2));
                yyAritQuadTOTALS3MSS3 = (yyAritQuadTOTALS3MSS3 + ((pifTOTALS3MSS3arrayRAND[n] - yAritTOTALS3MSS3)^2));
                yyAritQuadTOTALS3MSS4 = (yyAritQuadTOTALS3MSS4 + ((pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)^2));
    
                qXYTOTALS3MSS1 = (qXYTOTALS3MSS1 + ((pifTOTALS1MSS1arrayRAND[n] - xAritTOTALS3MSS1) * (pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)));
                qXYTOTALS3MSS2 = (qXYTOTALS3MSS2 + ((pifTOTALS1MSS2arrayRAND[n] - xAritTOTALS3MSS2) * (pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)));
                qXYTOTALS3MSS3 = (qXYTOTALS3MSS3 + ((pifTOTALS1MSS3arrayRAND[n] - xAritTOTALS3MSS3) * (pifTOTALS3MSS3arrayRAND[n] - yAritTOTALS3MSS3)));
                qXYTOTALS3MSS4 = (qXYTOTALS3MSS4 + ((pifTOTALS1MSS4arrayRAND[n] - xAritTOTALS3MSS4) * (pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)));
            }
        
            aTOTALS3MSS1 = (((xQuadTOTALS3MSS1 * yTOTALS3MSS1) - (xTOTALS3MSS1 * xyTOTALS3MSS1)) / ((minPifVAL * xQuadTOTALS3MSS1) - (xTOTALS3MSS1^2)));
            aTOTALS3MSS2 = (((xQuadTOTALS3MSS2 * yTOTALS3MSS2) - (xTOTALS3MSS2 * xyTOTALS3MSS2)) / ((minPifVAL * xQuadTOTALS3MSS2) - (xTOTALS3MSS2^2)));
            aTOTALS3MSS3 = (((xQuadTOTALS3MSS3 * yTOTALS3MSS3) - (xTOTALS3MSS3 * xyTOTALS3MSS3)) / ((minPifVAL * xQuadTOTALS3MSS3) - (xTOTALS3MSS3^2)));
            aTOTALS3MSS4 = (((xQuadTOTALS3MSS4 * yTOTALS3MSS4) - (xTOTALS3MSS4 * xyTOTALS3MSS4)) / ((minPifVAL * xQuadTOTALS3MSS4) - (xTOTALS3MSS4^2)));
            
            bTOTALS3MSS1 = qXYTOTALS3MSS1 / xxAritQuadTOTALS3MSS1;
            bTOTALS3MSS2 = qXYTOTALS3MSS2 / xxAritQuadTOTALS3MSS2;
            bTOTALS3MSS3 = qXYTOTALS3MSS3 / xxAritQuadTOTALS3MSS3;
            bTOTALS3MSS4 = qXYTOTALS3MSS4 / xxAritQuadTOTALS3MSS4;
    
            rTOTALS3MSS1 = (qXYTOTALS3MSS1 / ((xxAritQuadTOTALS3MSS1 * yyAritQuadTOTALS3MSS1)^0.5));
            rTOTALS3MSS2 = (qXYTOTALS3MSS2 / ((xxAritQuadTOTALS3MSS2 * yyAritQuadTOTALS3MSS2)^0.5));
            rTOTALS3MSS3 = (qXYTOTALS3MSS3 / ((xxAritQuadTOTALS3MSS3 * yyAritQuadTOTALS3MSS3)^0.5));
            rTOTALS3MSS4 = (qXYTOTALS3MSS4 / ((xxAritQuadTOTALS3MSS4 * yyAritQuadTOTALS3MSS4)^0.5));
    
            rQuadTOTALS3MSS1 = ((rTOTALS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3MSS2 = ((rTOTALS3MSS2^2) * 100);
            rQuadTOTALS3MSS3 = ((rTOTALS3MSS3^2) * 100);
            rQuadTOTALS3MSS4 = ((rTOTALS3MSS4^2) * 100);
        
            syxTOTALS3MSS1 = (((yyAritQuadTOTALS3MSS1 - ((qXYTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS2 = (((yyAritQuadTOTALS3MSS2 - ((qXYTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS3 = (((yyAritQuadTOTALS3MSS3 - ((qXYTOTALS3MSS3^2) / xxAritQuadTOTALS3MSS3)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS4 = (((yyAritQuadTOTALS3MSS4 - ((qXYTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3MSS1 = (((syxTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)^0.5);
            bStandTOTALS3MSS2 = (((syxTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)^0.5);
            bStandTOTALS3MSS3 = (((syxTOTALS3MSS3^2) / xxAritQuadTOTALS3MSS3)^0.5);
            bStandTOTALS3MSS4 = (((syxTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)^0.5);
    
            aStandTOTALS3MSS1 = (bStandTOTALS3MSS1 * ((xQuadTOTALS3MSS1 / minPifVAL)^0.5));
            aStandTOTALS3MSS2 = (bStandTOTALS3MSS2 * ((xQuadTOTALS3MSS2 / minPifVAL)^0.5));
            aStandTOTALS3MSS3 = (bStandTOTALS3MSS3 * ((xQuadTOTALS3MSS3 / minPifVAL)^0.5));
            aStandTOTALS3MSS4 = (bStandTOTALS3MSS4 * ((xQuadTOTALS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS1, bTOTALS3MSS1, rTOTALS3MSS1, rQuadTOTALS3MSS1, aStandTOTALS3MSS1, bStandTOTALS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS2, bTOTALS3MSS2, rTOTALS3MSS2, rQuadTOTALS3MSS2, aStandTOTALS3MSS2, bStandTOTALS3MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS3, bTOTALS3MSS3, rTOTALS3MSS3, rQuadTOTALS3MSS3, aStandTOTALS3MSS3, bStandTOTALS3MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS4, bTOTALS3MSS4, rTOTALS3MSS4, rQuadTOTALS3MSS4, aStandTOTALS3MSS4, bStandTOTALS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS3MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS3MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifTOTALS3MSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS3MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aTOTALS3MSS1 + (bTOTALS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aTOTALS3MSS2 + (bTOTALS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = (aTOTALS3MSS3 + (bTOTALS3MSS3 * REFS3MSS3[i,j]));
                    OUT3MSS4[i,j] = (aTOTALS3MSS4 + (bTOTALS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT3MSS1);
        	CreatePyramid(OUT3MSS2);
        	CreatePyramid(OUT3MSS3);
        	CreatePyramid(OUT3MSS4);
        
        	CreateHistogram(OUT3MSS1);
        	CreateHistogram(OUT3MSS2);
        	CreateHistogram(OUT3MSS3);
        	CreateHistogram(OUT3MSS4);
        
        	CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
        
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors4 == 7 )
            {
            	printf("Master: Scene 1 (MSS), Slave: Scene 4 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors4 == 6 )
            {
                  printf("Master: Scene 1 (MSS), Slave: Scene 4 (TM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            { 
            numeric xAritTOTALS4MSS1, xAritTOTALS4MSS2, xAritTOTALS4MSS3, xAritTOTALS4MSS4;
            numeric yAritTOTALS4MSS1, yAritTOTALS4MSS2, yAritTOTALS4MSS3, yAritTOTALS4MSS4;
    
            numeric aTOTALS4MSS1, aTOTALS4MSS2, aTOTALS4MSS3, aTOTALS4MSS4;
            numeric bTOTALS4MSS1, bTOTALS4MSS2, bTOTALS4MSS3, bTOTALS4MSS4;
            numeric rTOTALS4MSS1, rTOTALS4MSS2, rTOTALS4MSS3, rTOTALS4MSS4;
            numeric rQuadTOTALS4MSS1, rQuadTOTALS4MSS2, rQuadTOTALS4MSS3, rQuadTOTALS4MSS4;
            numeric syxTOTALS4MSS1, syxTOTALS4MSS2, syxTOTALS4MSS3, syxTOTALS4MSS4;
            numeric bStandTOTALS4MSS1, bStandTOTALS4MSS2, bStandTOTALS4MSS3, bStandTOTALS4MSS4;
            numeric aStandTOTALS4MSS1, aStandTOTALS4MSS2, aStandTOTALS4MSS3, aStandTOTALS4MSS4;
    
            numeric xTOTALS4MSS1 = 0;
            numeric xTOTALS4MSS2 = 0;
            numeric xTOTALS4MSS3 = 0;
            numeric xTOTALS4MSS4 = 0;
    
            numeric xQuadTOTALS4MSS1 = 0;
            numeric xQuadTOTALS4MSS2 = 0;
            numeric xQuadTOTALS4MSS3 = 0;
            numeric xQuadTOTALS4MSS4 = 0;
    
            numeric yTOTALS4MSS1 = 0;
            numeric yTOTALS4MSS2 = 0;
            numeric yTOTALS4MSS3 = 0;
            numeric yTOTALS4MSS4 = 0;
    
            numeric yQuadTOTALS4MSS1 = 0;
            numeric yQuadTOTALS4MSS2 = 0;
            numeric yQuadTOTALS4MSS3 = 0;
            numeric yQuadTOTALS4MSS4 = 0;
    
            numeric xyTOTALS4MSS1 = 0;
            numeric xyTOTALS4MSS2 = 0;
            numeric xyTOTALS4MSS3 = 0;
            numeric xyTOTALS4MSS4 = 0;
    
            numeric xxAritQuadTOTALS4MSS1 = 0;
            numeric xxAritQuadTOTALS4MSS2 = 0;
            numeric xxAritQuadTOTALS4MSS3 = 0;
            numeric xxAritQuadTOTALS4MSS4 = 0;
    
            numeric yyAritQuadTOTALS4MSS1 = 0;
            numeric yyAritQuadTOTALS4MSS2 = 0;
            numeric yyAritQuadTOTALS4MSS3 = 0;
            numeric yyAritQuadTOTALS4MSS4 = 0;
    
            numeric qXYTOTALS4MSS1 = 0;
            numeric qXYTOTALS4MSS2 = 0;
            numeric qXYTOTALS4MSS3 = 0;
            numeric qXYTOTALS4MSS4 = 0;
    
            for m = 1 to minPifVAL
                {		
                xTOTALS4MSS1 = xTOTALS4MSS1 + pifTOTALS1MSS1arrayRAND[m];
                xTOTALS4MSS2 = xTOTALS4MSS2 + pifTOTALS1MSS2arrayRAND[m];
                xTOTALS4MSS3 = xTOTALS4MSS3 + pifTOTALS1MSS3arrayRAND[m];
                xTOTALS4MSS4 = xTOTALS4MSS4 + pifTOTALS1MSS4arrayRAND[m];
    
                xQuadTOTALS4MSS1 = (xQuadTOTALS4MSS1 + (pifTOTALS1MSS1arrayRAND[m]^2));
                xQuadTOTALS4MSS2 = (xQuadTOTALS4MSS2 + (pifTOTALS1MSS2arrayRAND[m]^2));
                xQuadTOTALS4MSS3 = (xQuadTOTALS4MSS3 + (pifTOTALS1MSS3arrayRAND[m]^2));
                xQuadTOTALS4MSS4 = (xQuadTOTALS4MSS4 + (pifTOTALS1MSS4arrayRAND[m]^2));
    
                yTOTALS4MSS1 = yTOTALS4MSS1 + pifTOTALS4MSS1arrayRAND[m];
                yTOTALS4MSS2 = yTOTALS4MSS2 + pifTOTALS4MSS2arrayRAND[m];
                yTOTALS4MSS3 = yTOTALS4MSS3 + pifTOTALS4MSS3arrayRAND[m];
                yTOTALS4MSS4 = yTOTALS4MSS4 + pifTOTALS4MSS4arrayRAND[m];
                
                yQuadTOTALS4MSS1 = (yQuadTOTALS4MSS1 + (pifTOTALS4MSS1arrayRAND[m]^2));
                yQuadTOTALS4MSS2 = (yQuadTOTALS4MSS2 + (pifTOTALS4MSS2arrayRAND[m]^2));
                yQuadTOTALS4MSS3 = (yQuadTOTALS4MSS3 + (pifTOTALS4MSS3arrayRAND[m]^2));
                yQuadTOTALS4MSS4 = (yQuadTOTALS4MSS4 + (pifTOTALS4MSS4arrayRAND[m]^2));
    
                xyTOTALS4MSS1 = (xyTOTALS4MSS1 + (pifTOTALS1MSS1arrayRAND[m] * pifTOTALS4MSS1arrayRAND[m]));
                xyTOTALS4MSS2 = (xyTOTALS4MSS2 + (pifTOTALS1MSS2arrayRAND[m] * pifTOTALS4MSS2arrayRAND[m]));
                xyTOTALS4MSS3 = (xyTOTALS4MSS3 + (pifTOTALS1MSS3arrayRAND[m] * pifTOTALS4MSS3arrayRAND[m]));
                xyTOTALS4MSS4 = (xyTOTALS4MSS4 + (pifTOTALS1MSS4arrayRAND[m] * pifTOTALS4MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS4MSS1 = xTOTALS4MSS1 / minPifVAL;
            xAritTOTALS4MSS2 = xTOTALS4MSS2 / minPifVAL;
            xAritTOTALS4MSS3 = xTOTALS4MSS3 / minPifVAL;
            xAritTOTALS4MSS4 = xTOTALS4MSS4 / minPifVAL;
    
            yAritTOTALS4MSS1 = yTOTALS4MSS1 / minPifVAL;
            yAritTOTALS4MSS2 = yTOTALS4MSS2 / minPifVAL;
            yAritTOTALS4MSS3 = yTOTALS4MSS3 / minPifVAL;
            yAritTOTALS4MSS4 = yTOTALS4MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4MSS1 = (xxAritQuadTOTALS4MSS1 + ((pifTOTALS1MSS1arrayRAND[n] - xAritTOTALS4MSS1)^2));
                xxAritQuadTOTALS4MSS2 = (xxAritQuadTOTALS4MSS2 + ((pifTOTALS1MSS2arrayRAND[n] - xAritTOTALS4MSS2)^2));
                xxAritQuadTOTALS4MSS3 = (xxAritQuadTOTALS4MSS3 + ((pifTOTALS1MSS3arrayRAND[n] - xAritTOTALS4MSS3)^2));
                xxAritQuadTOTALS4MSS4 = (xxAritQuadTOTALS4MSS4 + ((pifTOTALS1MSS4arrayRAND[n] - xAritTOTALS4MSS4)^2));
    
                yyAritQuadTOTALS4MSS1 = (yyAritQuadTOTALS4MSS1 + ((pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)^2));
                yyAritQuadTOTALS4MSS2 = (yyAritQuadTOTALS4MSS2 + ((pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)^2));
                yyAritQuadTOTALS4MSS3 = (yyAritQuadTOTALS4MSS3 + ((pifTOTALS4MSS3arrayRAND[n] - yAritTOTALS4MSS3)^2));
                yyAritQuadTOTALS4MSS4 = (yyAritQuadTOTALS4MSS4 + ((pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)^2));
    
                qXYTOTALS4MSS1 = (qXYTOTALS4MSS1 + ((pifTOTALS1MSS1arrayRAND[n] - xAritTOTALS4MSS1) * (pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)));
                qXYTOTALS4MSS2 = (qXYTOTALS4MSS2 + ((pifTOTALS1MSS2arrayRAND[n] - xAritTOTALS4MSS2) * (pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)));
                qXYTOTALS4MSS3 = (qXYTOTALS4MSS3 + ((pifTOTALS1MSS3arrayRAND[n] - xAritTOTALS4MSS3) * (pifTOTALS4MSS3arrayRAND[n] - yAritTOTALS4MSS3)));
                qXYTOTALS4MSS4 = (qXYTOTALS4MSS4 + ((pifTOTALS1MSS4arrayRAND[n] - xAritTOTALS4MSS4) * (pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)));
            }
        
            aTOTALS4MSS1 = (((xQuadTOTALS4MSS1 * yTOTALS4MSS1) - (xTOTALS4MSS1 * xyTOTALS4MSS1)) / ((minPifVAL * xQuadTOTALS4MSS1) - (xTOTALS4MSS1^2)));
            aTOTALS4MSS2 = (((xQuadTOTALS4MSS2 * yTOTALS4MSS2) - (xTOTALS4MSS2 * xyTOTALS4MSS2)) / ((minPifVAL * xQuadTOTALS4MSS2) - (xTOTALS4MSS2^2)));
            aTOTALS4MSS3 = (((xQuadTOTALS4MSS3 * yTOTALS4MSS3) - (xTOTALS4MSS3 * xyTOTALS4MSS3)) / ((minPifVAL * xQuadTOTALS4MSS3) - (xTOTALS4MSS3^2)));
            aTOTALS4MSS4 = (((xQuadTOTALS4MSS4 * yTOTALS4MSS4) - (xTOTALS4MSS4 * xyTOTALS4MSS4)) / ((minPifVAL * xQuadTOTALS4MSS4) - (xTOTALS4MSS4^2)));
            
            bTOTALS4MSS1 = qXYTOTALS4MSS1 / xxAritQuadTOTALS4MSS1;
            bTOTALS4MSS2 = qXYTOTALS4MSS2 / xxAritQuadTOTALS4MSS2;
            bTOTALS4MSS3 = qXYTOTALS4MSS3 / xxAritQuadTOTALS4MSS3;
            bTOTALS4MSS4 = qXYTOTALS4MSS4 / xxAritQuadTOTALS4MSS4;
    
            rTOTALS4MSS1 = (qXYTOTALS4MSS1 / ((xxAritQuadTOTALS4MSS1 * yyAritQuadTOTALS4MSS1)^0.5));
            rTOTALS4MSS2 = (qXYTOTALS4MSS2 / ((xxAritQuadTOTALS4MSS2 * yyAritQuadTOTALS4MSS2)^0.5));
            rTOTALS4MSS3 = (qXYTOTALS4MSS3 / ((xxAritQuadTOTALS4MSS3 * yyAritQuadTOTALS4MSS3)^0.5));
            rTOTALS4MSS4 = (qXYTOTALS4MSS4 / ((xxAritQuadTOTALS4MSS4 * yyAritQuadTOTALS4MSS4)^0.5));
    
            rQuadTOTALS4MSS1 = ((rTOTALS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4MSS2 = ((rTOTALS4MSS2^2) * 100);
            rQuadTOTALS4MSS3 = ((rTOTALS4MSS3^2) * 100);
            rQuadTOTALS4MSS4 = ((rTOTALS4MSS4^2) * 100);
        
            syxTOTALS4MSS1 = (((yyAritQuadTOTALS4MSS1 - ((qXYTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS2 = (((yyAritQuadTOTALS4MSS2 - ((qXYTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS3 = (((yyAritQuadTOTALS4MSS3 - ((qXYTOTALS4MSS3^2) / xxAritQuadTOTALS4MSS3)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS4 = (((yyAritQuadTOTALS4MSS4 - ((qXYTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4MSS1 = (((syxTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)^0.5);
            bStandTOTALS4MSS2 = (((syxTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)^0.5);
            bStandTOTALS4MSS3 = (((syxTOTALS4MSS3^2) / xxAritQuadTOTALS4MSS3)^0.5);
            bStandTOTALS4MSS4 = (((syxTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)^0.5);
    
            aStandTOTALS4MSS1 = (bStandTOTALS4MSS1 * ((xQuadTOTALS4MSS1 / minPifVAL)^0.5));
            aStandTOTALS4MSS2 = (bStandTOTALS4MSS2 * ((xQuadTOTALS4MSS2 / minPifVAL)^0.5));
            aStandTOTALS4MSS3 = (bStandTOTALS4MSS3 * ((xQuadTOTALS4MSS3 / minPifVAL)^0.5));
            aStandTOTALS4MSS4 = (bStandTOTALS4MSS4 * ((xQuadTOTALS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS1, bTOTALS4MSS1, rTOTALS4MSS1, rQuadTOTALS4MSS1, aStandTOTALS4MSS1, bStandTOTALS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS2, bTOTALS4MSS2, rTOTALS4MSS2, rQuadTOTALS4MSS2, aStandTOTALS4MSS2, bStandTOTALS4MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS3, bTOTALS4MSS3, rTOTALS4MSS3, rQuadTOTALS4MSS3, aStandTOTALS4MSS3, bStandTOTALS4MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS4, bTOTALS4MSS4, rTOTALS4MSS4, rQuadTOTALS4MSS4, aStandTOTALS4MSS4, bStandTOTALS4MSS4);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS4MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS4MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifTOTALS4MSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS4MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aTOTALS4MSS1 + (bTOTALS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aTOTALS4MSS2 + (bTOTALS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = (aTOTALS4MSS3 + (bTOTALS4MSS3 * REFS4MSS3[i,j]));
                    OUT4MSS4[i,j] = (aTOTALS4MSS4 + (bTOTALS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT4MSS1);
        	CreatePyramid(OUT4MSS2);
        	CreatePyramid(OUT4MSS3);
        	CreatePyramid(OUT4MSS4);
        
        	CreateHistogram(OUT4MSS1);
        	CreateHistogram(OUT4MSS2);
        	CreateHistogram(OUT4MSS3);
        	CreateHistogram(OUT4MSS4);
        
        	CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
        }
	}
	else if ( slaveMaster == 2 )
	{
        if ( sensors2 == 7 )
        {
        printf("Scene 2 - Master Scene (ETM):\n");
        printf("Scene 2 array values used for regression computation:\n");
    
        printf("ETM1: %12f ", pifTOTALS2ETM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS2ETM1arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS2ETM1arrayRAND[minPifVAL]);
    
        printf("ETM2: %12f ", pifTOTALS2ETM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS2ETM2arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS2ETM2arrayRAND[minPifVAL]);
    
        printf("ETM3: %12f ", pifTOTALS2ETM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS2ETM3arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS2ETM3arrayRAND[minPifVAL]);
    
        printf("ETM4: %12f ", pifTOTALS2ETM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS2ETM4arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS2ETM4arrayRAND[minPifVAL]);
    
        printf("ETM5: %12f ", pifTOTALS2ETM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS2ETM5arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS2ETM5arrayRAND[minPifVAL]);
    
        printf("ETM7: %12f ", pifTOTALS2ETM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS2ETM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifTOTALS2ETM7arrayRAND[minPifVAL]);
             
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                OUT2ETM1[i,j] = REFS2ETM1[i,j];
                OUT2ETM2[i,j] = REFS2ETM2[i,j];
                OUT2ETM3[i,j] = REFS2ETM3[i,j];
                OUT2ETM4[i,j] = REFS2ETM4[i,j];
                OUT2ETM5[i,j] = REFS2ETM5[i,j];
                OUT2ETM7[i,j] = REFS2ETM7[i,j];
                }
            }
        
        CreatePyramid(OUT2ETM1);
        CreatePyramid(OUT2ETM2);
        CreatePyramid(OUT2ETM3);
        CreatePyramid(OUT2ETM4);
        CreatePyramid(OUT2ETM5);
        CreatePyramid(OUT2ETM7);
    
        CreateHistogram(OUT2ETM1);
        CreateHistogram(OUT2ETM2);
        CreateHistogram(OUT2ETM3);
        CreateHistogram(OUT2ETM4);
        CreateHistogram(OUT2ETM5);
        CreateHistogram(OUT2ETM7);
        
        CloseRaster(REFS2ETM1);
		CloseRaster(REFS2ETM2);
		CloseRaster(REFS2ETM3);
		CloseRaster(REFS2ETM4);
		CloseRaster(REFS2ETM5);
		CloseRaster(REFS2ETM7);
		CloseRaster(OUT2ETM1);
		CloseRaster(OUT2ETM2);
		CloseRaster(OUT2ETM3);
		CloseRaster(OUT2ETM4);
		CloseRaster(OUT2ETM5);
		CloseRaster(OUT2ETM7);
    
        printf("Scene 2 (Master) output was written, histogram created and pyramid written\n\n\n");
 
            if ( sensors1 == 7 )
            {
            numeric xAritTOTALS1ETM1, xAritTOTALS1ETM2, xAritTOTALS1ETM3, xAritTOTALS1ETM4, xAritTOTALS1ETM5, xAritTOTALS1ETM7;
            numeric yAritTOTALS1ETM1, yAritTOTALS1ETM2, yAritTOTALS1ETM3, yAritTOTALS1ETM4, yAritTOTALS1ETM5, yAritTOTALS1ETM7;
    
            numeric aTOTALS1ETM1, aTOTALS1ETM2, aTOTALS1ETM3, aTOTALS1ETM4, aTOTALS1ETM5, aTOTALS1ETM7;
            numeric bTOTALS1ETM1, bTOTALS1ETM2, bTOTALS1ETM3, bTOTALS1ETM4, bTOTALS1ETM5, bTOTALS1ETM7;
            numeric rTOTALS1ETM1, rTOTALS1ETM2, rTOTALS1ETM3, rTOTALS1ETM4, rTOTALS1ETM5, rTOTALS1ETM7;
            numeric rQuadTOTALS1ETM1, rQuadTOTALS1ETM2, rQuadTOTALS1ETM3, rQuadTOTALS1ETM4, rQuadTOTALS1ETM5, rQuadTOTALS1ETM7;
            numeric syxTOTALS1ETM1, syxTOTALS1ETM2, syxTOTALS1ETM3, syxTOTALS1ETM4, syxTOTALS1ETM5, syxTOTALS1ETM7;
            numeric bStandTOTALS1ETM1, bStandTOTALS1ETM2, bStandTOTALS1ETM3, bStandTOTALS1ETM4, bStandTOTALS1ETM5, bStandTOTALS1ETM7;
            numeric aStandTOTALS1ETM1, aStandTOTALS1ETM2, aStandTOTALS1ETM3, aStandTOTALS1ETM4, aStandTOTALS1ETM5, aStandTOTALS1ETM7;
    
            numeric xTOTALS1ETM1 = 0;
            numeric xTOTALS1ETM2 = 0;
            numeric xTOTALS1ETM3 = 0;
            numeric xTOTALS1ETM4 = 0;
            numeric xTOTALS1ETM5 = 0;
            numeric xTOTALS1ETM7 = 0;
    
            numeric xQuadTOTALS1ETM1 = 0;
            numeric xQuadTOTALS1ETM2 = 0;
            numeric xQuadTOTALS1ETM3 = 0;
            numeric xQuadTOTALS1ETM4 = 0;
            numeric xQuadTOTALS1ETM5 = 0;
            numeric xQuadTOTALS1ETM7 = 0;
    
            numeric yTOTALS1ETM1 = 0;
            numeric yTOTALS1ETM2 = 0;
            numeric yTOTALS1ETM3 = 0;
            numeric yTOTALS1ETM4 = 0;
            numeric yTOTALS1ETM5 = 0;
            numeric yTOTALS1ETM7 = 0;
    
            numeric yQuadTOTALS1ETM1 = 0;
            numeric yQuadTOTALS1ETM2 = 0;
            numeric yQuadTOTALS1ETM3 = 0;
            numeric yQuadTOTALS1ETM4 = 0;
            numeric yQuadTOTALS1ETM5 = 0;
            numeric yQuadTOTALS1ETM7 = 0;
    
            numeric xyTOTALS1ETM1 = 0;
            numeric xyTOTALS1ETM2 = 0;
            numeric xyTOTALS1ETM3 = 0;
            numeric xyTOTALS1ETM4 = 0;
            numeric xyTOTALS1ETM5 = 0;
            numeric xyTOTALS1ETM7 = 0;
    
            numeric xxAritQuadTOTALS1ETM1 = 0;
            numeric xxAritQuadTOTALS1ETM2 = 0;
            numeric xxAritQuadTOTALS1ETM3 = 0;
            numeric xxAritQuadTOTALS1ETM4 = 0;
            numeric xxAritQuadTOTALS1ETM5 = 0;
            numeric xxAritQuadTOTALS1ETM7 = 0;
    
            numeric yyAritQuadTOTALS1ETM1 = 0;
            numeric yyAritQuadTOTALS1ETM2 = 0;
            numeric yyAritQuadTOTALS1ETM3 = 0;
            numeric yyAritQuadTOTALS1ETM4 = 0;
            numeric yyAritQuadTOTALS1ETM5 = 0;
            numeric yyAritQuadTOTALS1ETM7 = 0;
    
            numeric qXYTOTALS1ETM1 = 0;
            numeric qXYTOTALS1ETM2 = 0;
            numeric qXYTOTALS1ETM3 = 0;
            numeric qXYTOTALS1ETM4 = 0;
            numeric qXYTOTALS1ETM5 = 0;
            numeric qXYTOTALS1ETM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS1ETM1 = xTOTALS1ETM1 + pifTOTALS2ETM1arrayRAND[m];
                xTOTALS1ETM2 = xTOTALS1ETM2 + pifTOTALS2ETM2arrayRAND[m];
                xTOTALS1ETM3 = xTOTALS1ETM3 + pifTOTALS2ETM3arrayRAND[m];
                xTOTALS1ETM4 = xTOTALS1ETM4 + pifTOTALS2ETM4arrayRAND[m];
                xTOTALS1ETM5 = xTOTALS1ETM5 + pifTOTALS2ETM5arrayRAND[m];
                xTOTALS1ETM7 = xTOTALS1ETM7 + pifTOTALS2ETM7arrayRAND[m];
    
                xQuadTOTALS1ETM1 = (xQuadTOTALS1ETM1 + (pifTOTALS2ETM1arrayRAND[m]^2));
                xQuadTOTALS1ETM2 = (xQuadTOTALS1ETM2 + (pifTOTALS2ETM2arrayRAND[m]^2));
                xQuadTOTALS1ETM3 = (xQuadTOTALS1ETM3 + (pifTOTALS2ETM3arrayRAND[m]^2));
                xQuadTOTALS1ETM4 = (xQuadTOTALS1ETM4 + (pifTOTALS2ETM4arrayRAND[m]^2));
                xQuadTOTALS1ETM5 = (xQuadTOTALS1ETM5 + (pifTOTALS2ETM5arrayRAND[m]^2));
                xQuadTOTALS1ETM7 = (xQuadTOTALS1ETM7 + (pifTOTALS2ETM7arrayRAND[m]^2));
    
                yTOTALS1ETM1 = yTOTALS1ETM1 + pifTOTALS1ETM1arrayRAND[m];
                yTOTALS1ETM2 = yTOTALS1ETM2 + pifTOTALS1ETM2arrayRAND[m];
                yTOTALS1ETM3 = yTOTALS1ETM3 + pifTOTALS1ETM3arrayRAND[m];
                yTOTALS1ETM4 = yTOTALS1ETM4 + pifTOTALS1ETM4arrayRAND[m];
                yTOTALS1ETM5 = yTOTALS1ETM5 + pifTOTALS1ETM5arrayRAND[m];
                yTOTALS1ETM7 = yTOTALS1ETM7 + pifTOTALS1ETM7arrayRAND[m];
                
                yQuadTOTALS1ETM1 = (yQuadTOTALS1ETM1 + (pifTOTALS1ETM1arrayRAND[m]^2));
                yQuadTOTALS1ETM2 = (yQuadTOTALS1ETM2 + (pifTOTALS1ETM2arrayRAND[m]^2));
                yQuadTOTALS1ETM3 = (yQuadTOTALS1ETM3 + (pifTOTALS1ETM3arrayRAND[m]^2));
                yQuadTOTALS1ETM4 = (yQuadTOTALS1ETM4 + (pifTOTALS1ETM4arrayRAND[m]^2));
                yQuadTOTALS1ETM5 = (yQuadTOTALS1ETM5 + (pifTOTALS1ETM5arrayRAND[m]^2));
                yQuadTOTALS1ETM7 = (yQuadTOTALS1ETM7 + (pifTOTALS1ETM7arrayRAND[m]^2));
    
                xyTOTALS1ETM1 = (xyTOTALS1ETM1 + (pifTOTALS2ETM1arrayRAND[m] * pifTOTALS1ETM1arrayRAND[m]));
                xyTOTALS1ETM2 = (xyTOTALS1ETM2 + (pifTOTALS2ETM2arrayRAND[m] * pifTOTALS1ETM2arrayRAND[m]));
                xyTOTALS1ETM3 = (xyTOTALS1ETM3 + (pifTOTALS2ETM3arrayRAND[m] * pifTOTALS1ETM3arrayRAND[m]));
                xyTOTALS1ETM4 = (xyTOTALS1ETM4 + (pifTOTALS2ETM4arrayRAND[m] * pifTOTALS1ETM4arrayRAND[m]));
                xyTOTALS1ETM5 = (xyTOTALS1ETM5 + (pifTOTALS2ETM5arrayRAND[m] * pifTOTALS1ETM5arrayRAND[m]));
                xyTOTALS1ETM7 = (xyTOTALS1ETM7 + (pifTOTALS2ETM7arrayRAND[m] * pifTOTALS1ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS1ETM1 = xTOTALS1ETM1 / minPifVAL;
            xAritTOTALS1ETM2 = xTOTALS1ETM2 / minPifVAL;
            xAritTOTALS1ETM3 = xTOTALS1ETM3 / minPifVAL;
            xAritTOTALS1ETM4 = xTOTALS1ETM4 / minPifVAL;
            xAritTOTALS1ETM5 = xTOTALS1ETM5 / minPifVAL;
            xAritTOTALS1ETM7 = xTOTALS1ETM7 / minPifVAL;
    
            yAritTOTALS1ETM1 = yTOTALS1ETM1 / minPifVAL;
            yAritTOTALS1ETM2 = yTOTALS1ETM2 / minPifVAL;
            yAritTOTALS1ETM3 = yTOTALS1ETM3 / minPifVAL;
            yAritTOTALS1ETM4 = yTOTALS1ETM4 / minPifVAL;
            yAritTOTALS1ETM5 = yTOTALS1ETM5 / minPifVAL;
            yAritTOTALS1ETM7 = yTOTALS1ETM7 / minPifVAL;
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1ETM1 = (xxAritQuadTOTALS1ETM1 + ((pifTOTALS2ETM1arrayRAND[n] - xAritTOTALS1ETM1)^2));
                xxAritQuadTOTALS1ETM2 = (xxAritQuadTOTALS1ETM2 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS1ETM2)^2));
                xxAritQuadTOTALS1ETM3 = (xxAritQuadTOTALS1ETM3 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS1ETM3)^2));
                xxAritQuadTOTALS1ETM4 = (xxAritQuadTOTALS1ETM4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS1ETM4)^2));
                xxAritQuadTOTALS1ETM5 = (xxAritQuadTOTALS1ETM5 + ((pifTOTALS2ETM5arrayRAND[n] - xAritTOTALS1ETM5)^2));
                xxAritQuadTOTALS1ETM7 = (xxAritQuadTOTALS1ETM7 + ((pifTOTALS2ETM7arrayRAND[n] - xAritTOTALS1ETM7)^2));
    
                yyAritQuadTOTALS1ETM1 = (yyAritQuadTOTALS1ETM1 + ((pifTOTALS1ETM1arrayRAND[n] - yAritTOTALS1ETM1)^2));
                yyAritQuadTOTALS1ETM2 = (yyAritQuadTOTALS1ETM2 + ((pifTOTALS1ETM2arrayRAND[n] - yAritTOTALS1ETM2)^2));
                yyAritQuadTOTALS1ETM3 = (yyAritQuadTOTALS1ETM3 + ((pifTOTALS1ETM3arrayRAND[n] - yAritTOTALS1ETM3)^2));
                yyAritQuadTOTALS1ETM4 = (yyAritQuadTOTALS1ETM4 + ((pifTOTALS1ETM4arrayRAND[n] - yAritTOTALS1ETM4)^2));
                yyAritQuadTOTALS1ETM5 = (yyAritQuadTOTALS1ETM5 + ((pifTOTALS1ETM5arrayRAND[n] - yAritTOTALS1ETM5)^2));
                yyAritQuadTOTALS1ETM7 = (yyAritQuadTOTALS1ETM7 + ((pifTOTALS1ETM7arrayRAND[n] - yAritTOTALS1ETM7)^2));
    
                qXYTOTALS1ETM1 = (qXYTOTALS1ETM1 + ((pifTOTALS2ETM1arrayRAND[n] - xAritTOTALS1ETM1) * (pifTOTALS1ETM1arrayRAND[n] - yAritTOTALS1ETM1)));
                qXYTOTALS1ETM2 = (qXYTOTALS1ETM2 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS1ETM2) * (pifTOTALS1ETM2arrayRAND[n] - yAritTOTALS1ETM2)));
                qXYTOTALS1ETM3 = (qXYTOTALS1ETM3 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS1ETM3) * (pifTOTALS1ETM3arrayRAND[n] - yAritTOTALS1ETM3)));
                qXYTOTALS1ETM4 = (qXYTOTALS1ETM4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS1ETM4) * (pifTOTALS1ETM4arrayRAND[n] - yAritTOTALS1ETM4)));
                qXYTOTALS1ETM5 = (qXYTOTALS1ETM5 + ((pifTOTALS2ETM5arrayRAND[n] - xAritTOTALS1ETM5) * (pifTOTALS1ETM5arrayRAND[n] - yAritTOTALS1ETM5)));
                qXYTOTALS1ETM7 = (qXYTOTALS1ETM7 + ((pifTOTALS2ETM7arrayRAND[n] - xAritTOTALS1ETM7) * (pifTOTALS1ETM7arrayRAND[n] - yAritTOTALS1ETM7)));
            }
        
            aTOTALS1ETM1 = (((xQuadTOTALS1ETM1 * yTOTALS1ETM1) - (xTOTALS1ETM1 * xyTOTALS1ETM1)) / ((minPifVAL * xQuadTOTALS1ETM1) - (xTOTALS1ETM1^2)));
            aTOTALS1ETM2 = (((xQuadTOTALS1ETM2 * yTOTALS1ETM2) - (xTOTALS1ETM2 * xyTOTALS1ETM2)) / ((minPifVAL * xQuadTOTALS1ETM2) - (xTOTALS1ETM2^2)));
            aTOTALS1ETM3 = (((xQuadTOTALS1ETM3 * yTOTALS1ETM3) - (xTOTALS1ETM3 * xyTOTALS1ETM3)) / ((minPifVAL * xQuadTOTALS1ETM3) - (xTOTALS1ETM3^2)));
            aTOTALS1ETM4 = (((xQuadTOTALS1ETM4 * yTOTALS1ETM4) - (xTOTALS1ETM4 * xyTOTALS1ETM4)) / ((minPifVAL * xQuadTOTALS1ETM4) - (xTOTALS1ETM4^2)));
            aTOTALS1ETM5 = (((xQuadTOTALS1ETM5 * yTOTALS1ETM5) - (xTOTALS1ETM5 * xyTOTALS1ETM5)) / ((minPifVAL * xQuadTOTALS1ETM5) - (xTOTALS1ETM5^2)));
            aTOTALS1ETM7 = (((xQuadTOTALS1ETM7 * yTOTALS1ETM7) - (xTOTALS1ETM7 * xyTOTALS1ETM7)) / ((minPifVAL * xQuadTOTALS1ETM7) - (xTOTALS1ETM7^2)));
            
            bTOTALS1ETM1 = qXYTOTALS1ETM1 / xxAritQuadTOTALS1ETM1;
            bTOTALS1ETM2 = qXYTOTALS1ETM2 / xxAritQuadTOTALS1ETM2;
            bTOTALS1ETM3 = qXYTOTALS1ETM3 / xxAritQuadTOTALS1ETM3;
            bTOTALS1ETM4 = qXYTOTALS1ETM4 / xxAritQuadTOTALS1ETM4;
            bTOTALS1ETM5 = qXYTOTALS1ETM5 / xxAritQuadTOTALS1ETM5;
            bTOTALS1ETM7 = qXYTOTALS1ETM7 / xxAritQuadTOTALS1ETM7;
    
            rTOTALS1ETM1 = (qXYTOTALS1ETM1 / ((xxAritQuadTOTALS1ETM1 * yyAritQuadTOTALS1ETM1)^0.5));
            rTOTALS1ETM2 = (qXYTOTALS1ETM2 / ((xxAritQuadTOTALS1ETM2 * yyAritQuadTOTALS1ETM2)^0.5));
            rTOTALS1ETM3 = (qXYTOTALS1ETM3 / ((xxAritQuadTOTALS1ETM3 * yyAritQuadTOTALS1ETM3)^0.5));
            rTOTALS1ETM4 = (qXYTOTALS1ETM4 / ((xxAritQuadTOTALS1ETM4 * yyAritQuadTOTALS1ETM4)^0.5));
            rTOTALS1ETM5 = (qXYTOTALS1ETM5 / ((xxAritQuadTOTALS1ETM5 * yyAritQuadTOTALS1ETM5)^0.5));
            rTOTALS1ETM7 = (qXYTOTALS1ETM7 / ((xxAritQuadTOTALS1ETM7 * yyAritQuadTOTALS1ETM7)^0.5));
    
            rQuadTOTALS1ETM1 = ((rTOTALS1ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1ETM2 = ((rTOTALS1ETM2^2) * 100);
            rQuadTOTALS1ETM3 = ((rTOTALS1ETM3^2) * 100);
            rQuadTOTALS1ETM4 = ((rTOTALS1ETM4^2) * 100);
            rQuadTOTALS1ETM5 = ((rTOTALS1ETM5^2) * 100);
            rQuadTOTALS1ETM7 = ((rTOTALS1ETM7^2) * 100);
        
            syxTOTALS1ETM1 = (((yyAritQuadTOTALS1ETM1 - ((qXYTOTALS1ETM1^2) / xxAritQuadTOTALS1ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM2 = (((yyAritQuadTOTALS1ETM2 - ((qXYTOTALS1ETM2^2) / xxAritQuadTOTALS1ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM3 = (((yyAritQuadTOTALS1ETM3 - ((qXYTOTALS1ETM3^2) / xxAritQuadTOTALS1ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM4 = (((yyAritQuadTOTALS1ETM4 - ((qXYTOTALS1ETM4^2) / xxAritQuadTOTALS1ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM5 = (((yyAritQuadTOTALS1ETM5 - ((qXYTOTALS1ETM5^2) / xxAritQuadTOTALS1ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM7 = (((yyAritQuadTOTALS1ETM7 - ((qXYTOTALS1ETM7^2) / xxAritQuadTOTALS1ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1ETM1 = (((syxTOTALS1ETM1^2) / xxAritQuadTOTALS1ETM1)^0.5);
            bStandTOTALS1ETM2 = (((syxTOTALS1ETM2^2) / xxAritQuadTOTALS1ETM2)^0.5);
            bStandTOTALS1ETM3 = (((syxTOTALS1ETM3^2) / xxAritQuadTOTALS1ETM3)^0.5);
            bStandTOTALS1ETM4 = (((syxTOTALS1ETM4^2) / xxAritQuadTOTALS1ETM4)^0.5);
            bStandTOTALS1ETM5 = (((syxTOTALS1ETM5^2) / xxAritQuadTOTALS1ETM5)^0.5);
            bStandTOTALS1ETM7 = (((syxTOTALS1ETM7^2) / xxAritQuadTOTALS1ETM7)^0.5);
    
            aStandTOTALS1ETM1 = (bStandTOTALS1ETM1 * ((xQuadTOTALS1ETM1 / minPifVAL)^0.5));
            aStandTOTALS1ETM2 = (bStandTOTALS1ETM2 * ((xQuadTOTALS1ETM2 / minPifVAL)^0.5));
            aStandTOTALS1ETM3 = (bStandTOTALS1ETM3 * ((xQuadTOTALS1ETM3 / minPifVAL)^0.5));
            aStandTOTALS1ETM4 = (bStandTOTALS1ETM4 * ((xQuadTOTALS1ETM4 / minPifVAL)^0.5));
            aStandTOTALS1ETM5 = (bStandTOTALS1ETM5 * ((xQuadTOTALS1ETM5 / minPifVAL)^0.5));
            aStandTOTALS1ETM7 = (bStandTOTALS1ETM7 * ((xQuadTOTALS1ETM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM1, bTOTALS1ETM1, rTOTALS1ETM1, rQuadTOTALS1ETM1, aStandTOTALS1ETM1, bStandTOTALS1ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM2, bTOTALS1ETM2, rTOTALS1ETM2, rQuadTOTALS1ETM2, aStandTOTALS1ETM2, bStandTOTALS1ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM3, bTOTALS1ETM3, rTOTALS1ETM3, rQuadTOTALS1ETM3, aStandTOTALS1ETM3, bStandTOTALS1ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM4, bTOTALS1ETM4, rTOTALS1ETM4, rQuadTOTALS1ETM4, aStandTOTALS1ETM4, bStandTOTALS1ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM5, bTOTALS1ETM5, rTOTALS1ETM5, rQuadTOTALS1ETM5, aStandTOTALS1ETM5, bStandTOTALS1ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS1ETM7, bTOTALS1ETM7, rTOTALS1ETM7, rQuadTOTALS1ETM7, aStandTOTALS1ETM7, bStandTOTALS1ETM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS1ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS1ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS1ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS1ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS1ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS1ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS1ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT1ETM1[i,j] = (aTOTALS1ETM1 + (bTOTALS1ETM1 * REFS1ETM1[i,j]));
                    OUT1ETM2[i,j] = (aTOTALS1ETM2 + (bTOTALS1ETM2 * REFS1ETM2[i,j]));
                    OUT1ETM3[i,j] = (aTOTALS1ETM3 + (bTOTALS1ETM3 * REFS1ETM3[i,j]));
                    OUT1ETM4[i,j] = (aTOTALS1ETM4 + (bTOTALS1ETM4 * REFS1ETM4[i,j]));
                    OUT1ETM5[i,j] = (aTOTALS1ETM5 + (bTOTALS1ETM5 * REFS1ETM5[i,j]));
                    OUT1ETM7[i,j] = (aTOTALS1ETM7 + (bTOTALS1ETM7 * REFS1ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1ETM1);
        	CreatePyramid(OUT1ETM2);
        	CreatePyramid(OUT1ETM3);
        	CreatePyramid(OUT1ETM4);
        	CreatePyramid(OUT1ETM5);
        	CreatePyramid(OUT1ETM7);
        
        	CreateHistogram(OUT1ETM1);
        	CreateHistogram(OUT1ETM2);
        	CreateHistogram(OUT1ETM3);
        	CreateHistogram(OUT1ETM4);
        	CreateHistogram(OUT1ETM5);
        	CreateHistogram(OUT1ETM7);
        
        	CloseRaster(REFS1ETM1);
            CloseRaster(REFS1ETM2);
            CloseRaster(REFS1ETM3);
            CloseRaster(REFS1ETM4);
            CloseRaster(REFS1ETM5);
            CloseRaster(REFS1ETM7);
    
            CloseRaster(OUT1ETM1);
            CloseRaster(OUT1ETM2);
            CloseRaster(OUT1ETM3);
            CloseRaster(OUT1ETM4);
            CloseRaster(OUT1ETM5);
            CloseRaster(OUT1ETM7);
        
        	printf("Scene 1 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors1 == 6 )
            {
            numeric xAritTOTALS1TM1, xAritTOTALS1TM2, xAritTOTALS1TM3, xAritTOTALS1TM4, xAritTOTALS1TM5, xAritTOTALS1TM7;
            numeric yAritTOTALS1TM1, yAritTOTALS1TM2, yAritTOTALS1TM3, yAritTOTALS1TM4, yAritTOTALS1TM5, yAritTOTALS1TM7;
    
            numeric aTOTALS1TM1, aTOTALS1TM2, aTOTALS1TM3, aTOTALS1TM4, aTOTALS1TM5, aTOTALS1TM7;
            numeric bTOTALS1TM1, bTOTALS1TM2, bTOTALS1TM3, bTOTALS1TM4, bTOTALS1TM5, bTOTALS1TM7;
            numeric rTOTALS1TM1, rTOTALS1TM2, rTOTALS1TM3, rTOTALS1TM4, rTOTALS1TM5, rTOTALS1TM7;
            numeric rQuadTOTALS1TM1, rQuadTOTALS1TM2, rQuadTOTALS1TM3, rQuadTOTALS1TM4, rQuadTOTALS1TM5, rQuadTOTALS1TM7;
            numeric syxTOTALS1TM1, syxTOTALS1TM2, syxTOTALS1TM3, syxTOTALS1TM4, syxTOTALS1TM5, syxTOTALS1TM7;
            numeric bStandTOTALS1TM1, bStandTOTALS1TM2, bStandTOTALS1TM3, bStandTOTALS1TM4, bStandTOTALS1TM5, bStandTOTALS1TM7;
            numeric aStandTOTALS1TM1, aStandTOTALS1TM2, aStandTOTALS1TM3, aStandTOTALS1TM4, aStandTOTALS1TM5, aStandTOTALS1TM7;
    
            numeric xTOTALS1TM1 = 0;
            numeric xTOTALS1TM2 = 0;
            numeric xTOTALS1TM3 = 0;
            numeric xTOTALS1TM4 = 0;
            numeric xTOTALS1TM5 = 0;
            numeric xTOTALS1TM7 = 0;
    
            numeric xQuadTOTALS1TM1 = 0;
            numeric xQuadTOTALS1TM2 = 0;
            numeric xQuadTOTALS1TM3 = 0;
            numeric xQuadTOTALS1TM4 = 0;
            numeric xQuadTOTALS1TM5 = 0;
            numeric xQuadTOTALS1TM7 = 0;
    
            numeric yTOTALS1TM1 = 0;
            numeric yTOTALS1TM2 = 0;
            numeric yTOTALS1TM3 = 0;
            numeric yTOTALS1TM4 = 0;
            numeric yTOTALS1TM5 = 0;
            numeric yTOTALS1TM7 = 0;
    
            numeric yQuadTOTALS1TM1 = 0;
            numeric yQuadTOTALS1TM2 = 0;
            numeric yQuadTOTALS1TM3 = 0;
            numeric yQuadTOTALS1TM4 = 0;
            numeric yQuadTOTALS1TM5 = 0;
            numeric yQuadTOTALS1TM7 = 0;
    
            numeric xyTOTALS1TM1 = 0;
            numeric xyTOTALS1TM2 = 0;
            numeric xyTOTALS1TM3 = 0;
            numeric xyTOTALS1TM4 = 0;
            numeric xyTOTALS1TM5 = 0;
            numeric xyTOTALS1TM7 = 0;
    
            numeric xxAritQuadTOTALS1TM1 = 0;
            numeric xxAritQuadTOTALS1TM2 = 0;
            numeric xxAritQuadTOTALS1TM3 = 0;
            numeric xxAritQuadTOTALS1TM4 = 0;
            numeric xxAritQuadTOTALS1TM5 = 0;
            numeric xxAritQuadTOTALS1TM7 = 0;
    
            numeric yyAritQuadTOTALS1TM1 = 0;
            numeric yyAritQuadTOTALS1TM2 = 0;
            numeric yyAritQuadTOTALS1TM3 = 0;
            numeric yyAritQuadTOTALS1TM4 = 0;
            numeric yyAritQuadTOTALS1TM5 = 0;
            numeric yyAritQuadTOTALS1TM7 = 0;
    
            numeric qXYTOTALS1TM1 = 0;
            numeric qXYTOTALS1TM2 = 0;
            numeric qXYTOTALS1TM3 = 0;
            numeric qXYTOTALS1TM4 = 0;
            numeric qXYTOTALS1TM5 = 0;
            numeric qXYTOTALS1TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS1TM1 = xTOTALS1TM1 + pifTOTALS2ETM1arrayRAND[m];
                xTOTALS1TM2 = xTOTALS1TM2 + pifTOTALS2ETM2arrayRAND[m];
                xTOTALS1TM3 = xTOTALS1TM3 + pifTOTALS2ETM3arrayRAND[m];
                xTOTALS1TM4 = xTOTALS1TM4 + pifTOTALS2ETM4arrayRAND[m];
                xTOTALS1TM5 = xTOTALS1TM5 + pifTOTALS2ETM5arrayRAND[m];
                xTOTALS1TM7 = xTOTALS1TM7 + pifTOTALS2ETM7arrayRAND[m];
    
                xQuadTOTALS1TM1 = (xQuadTOTALS1TM1 + (pifTOTALS2ETM1arrayRAND[m]^2));
                xQuadTOTALS1TM2 = (xQuadTOTALS1TM2 + (pifTOTALS2ETM2arrayRAND[m]^2));
                xQuadTOTALS1TM3 = (xQuadTOTALS1TM3 + (pifTOTALS2ETM3arrayRAND[m]^2));
                xQuadTOTALS1TM4 = (xQuadTOTALS1TM4 + (pifTOTALS2ETM4arrayRAND[m]^2));
                xQuadTOTALS1TM5 = (xQuadTOTALS1TM5 + (pifTOTALS2ETM5arrayRAND[m]^2));
                xQuadTOTALS1TM7 = (xQuadTOTALS1TM7 + (pifTOTALS2ETM7arrayRAND[m]^2));
    
                yTOTALS1TM1 = yTOTALS1TM1 + pifTOTALS1TM1arrayRAND[m];
                yTOTALS1TM2 = yTOTALS1TM2 + pifTOTALS1TM2arrayRAND[m];
                yTOTALS1TM3 = yTOTALS1TM3 + pifTOTALS1TM3arrayRAND[m];
                yTOTALS1TM4 = yTOTALS1TM4 + pifTOTALS1TM4arrayRAND[m];
                yTOTALS1TM5 = yTOTALS1TM5 + pifTOTALS1TM5arrayRAND[m];
                yTOTALS1TM7 = yTOTALS1TM7 + pifTOTALS1TM7arrayRAND[m];
                
                yQuadTOTALS1TM1 = (yQuadTOTALS1TM1 + (pifTOTALS1TM1arrayRAND[m]^2));
                yQuadTOTALS1TM2 = (yQuadTOTALS1TM2 + (pifTOTALS1TM2arrayRAND[m]^2));
                yQuadTOTALS1TM3 = (yQuadTOTALS1TM3 + (pifTOTALS1TM3arrayRAND[m]^2));
                yQuadTOTALS1TM4 = (yQuadTOTALS1TM4 + (pifTOTALS1TM4arrayRAND[m]^2));
                yQuadTOTALS1TM5 = (yQuadTOTALS1TM5 + (pifTOTALS1TM5arrayRAND[m]^2));
                yQuadTOTALS1TM7 = (yQuadTOTALS1TM7 + (pifTOTALS1TM7arrayRAND[m]^2));
    
                xyTOTALS1TM1 = (xyTOTALS1TM1 + (pifTOTALS2ETM1arrayRAND[m] * pifTOTALS1TM1arrayRAND[m]));
                xyTOTALS1TM2 = (xyTOTALS1TM2 + (pifTOTALS2ETM2arrayRAND[m] * pifTOTALS1TM2arrayRAND[m]));
                xyTOTALS1TM3 = (xyTOTALS1TM3 + (pifTOTALS2ETM3arrayRAND[m] * pifTOTALS1TM3arrayRAND[m]));
                xyTOTALS1TM4 = (xyTOTALS1TM4 + (pifTOTALS2ETM4arrayRAND[m] * pifTOTALS1TM4arrayRAND[m]));
                xyTOTALS1TM5 = (xyTOTALS1TM5 + (pifTOTALS2ETM5arrayRAND[m] * pifTOTALS1TM5arrayRAND[m]));
                xyTOTALS1TM7 = (xyTOTALS1TM7 + (pifTOTALS2ETM7arrayRAND[m] * pifTOTALS1TM7arrayRAND[m]));
            }	
            
            xAritTOTALS1TM1 = xTOTALS1TM1 / minPifVAL;
            xAritTOTALS1TM2 = xTOTALS1TM2 / minPifVAL;
            xAritTOTALS1TM3 = xTOTALS1TM3 / minPifVAL;
            xAritTOTALS1TM4 = xTOTALS1TM4 / minPifVAL;
            xAritTOTALS1TM5 = xTOTALS1TM5 / minPifVAL;
            xAritTOTALS1TM7 = xTOTALS1TM7 / minPifVAL;
    
            yAritTOTALS1TM1 = yTOTALS1TM1 / minPifVAL;
            yAritTOTALS1TM2 = yTOTALS1TM2 / minPifVAL;
            yAritTOTALS1TM3 = yTOTALS1TM3 / minPifVAL;
            yAritTOTALS1TM4 = yTOTALS1TM4 / minPifVAL;
            yAritTOTALS1TM5 = yTOTALS1TM5 / minPifVAL;
            yAritTOTALS1TM7 = yTOTALS1TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1TM1 = (xxAritQuadTOTALS1TM1 + ((pifTOTALS2ETM7arrayRAND[n] - xAritTOTALS1TM1)^2));
                xxAritQuadTOTALS1TM2 = (xxAritQuadTOTALS1TM2 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS1TM2)^2));
                xxAritQuadTOTALS1TM3 = (xxAritQuadTOTALS1TM3 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS1TM3)^2));
                xxAritQuadTOTALS1TM4 = (xxAritQuadTOTALS1TM4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS1TM4)^2));
                xxAritQuadTOTALS1TM5 = (xxAritQuadTOTALS1TM5 + ((pifTOTALS2ETM5arrayRAND[n] - xAritTOTALS1TM5)^2));
                xxAritQuadTOTALS1TM7 = (xxAritQuadTOTALS1TM7 + ((pifTOTALS2ETM7arrayRAND[n] - xAritTOTALS1TM7)^2));
    
                yyAritQuadTOTALS1TM1 = (yyAritQuadTOTALS1TM1 + ((pifTOTALS1TM1arrayRAND[n] - yAritTOTALS1TM1)^2));
                yyAritQuadTOTALS1TM2 = (yyAritQuadTOTALS1TM2 + ((pifTOTALS1TM2arrayRAND[n] - yAritTOTALS1TM2)^2));
                yyAritQuadTOTALS1TM3 = (yyAritQuadTOTALS1TM3 + ((pifTOTALS1TM3arrayRAND[n] - yAritTOTALS1TM3)^2));
                yyAritQuadTOTALS1TM4 = (yyAritQuadTOTALS1TM4 + ((pifTOTALS1TM4arrayRAND[n] - yAritTOTALS1TM4)^2));
                yyAritQuadTOTALS1TM5 = (yyAritQuadTOTALS1TM5 + ((pifTOTALS1TM5arrayRAND[n] - yAritTOTALS1TM5)^2));
                yyAritQuadTOTALS1TM7 = (yyAritQuadTOTALS1TM7 + ((pifTOTALS1TM7arrayRAND[n] - yAritTOTALS1TM7)^2));
    
                qXYTOTALS1TM1 = (qXYTOTALS1TM1 + ((pifTOTALS2ETM7arrayRAND[n] - xAritTOTALS1TM1) * (pifTOTALS1TM1arrayRAND[n] - yAritTOTALS1TM1)));
                qXYTOTALS1TM2 = (qXYTOTALS1TM2 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS1TM2) * (pifTOTALS1TM2arrayRAND[n] - yAritTOTALS1TM2)));
                qXYTOTALS1TM3 = (qXYTOTALS1TM3 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS1TM3) * (pifTOTALS1TM3arrayRAND[n] - yAritTOTALS1TM3)));
                qXYTOTALS1TM4 = (qXYTOTALS1TM4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS1TM4) * (pifTOTALS1TM4arrayRAND[n] - yAritTOTALS1TM4)));
                qXYTOTALS1TM5 = (qXYTOTALS1TM5 + ((pifTOTALS2ETM5arrayRAND[n] - xAritTOTALS1TM5) * (pifTOTALS1TM5arrayRAND[n] - yAritTOTALS1TM5)));
                qXYTOTALS1TM7 = (qXYTOTALS1TM7 + ((pifTOTALS2ETM7arrayRAND[n] - xAritTOTALS1TM7) * (pifTOTALS1TM7arrayRAND[n] - yAritTOTALS1TM7)));
            }
        
            aTOTALS1TM1 = (((xQuadTOTALS1TM1 * yTOTALS1TM1) - (xTOTALS1TM1 * xyTOTALS1TM1)) / ((minPifVAL * xQuadTOTALS1TM1) - (xTOTALS1TM1^2)));
            aTOTALS1TM2 = (((xQuadTOTALS1TM2 * yTOTALS1TM2) - (xTOTALS1TM2 * xyTOTALS1TM2)) / ((minPifVAL * xQuadTOTALS1TM2) - (xTOTALS1TM2^2)));
            aTOTALS1TM3 = (((xQuadTOTALS1TM3 * yTOTALS1TM3) - (xTOTALS1TM3 * xyTOTALS1TM3)) / ((minPifVAL * xQuadTOTALS1TM3) - (xTOTALS1TM3^2)));
            aTOTALS1TM4 = (((xQuadTOTALS1TM4 * yTOTALS1TM4) - (xTOTALS1TM4 * xyTOTALS1TM4)) / ((minPifVAL * xQuadTOTALS1TM4) - (xTOTALS1TM4^2)));
            aTOTALS1TM5 = (((xQuadTOTALS1TM5 * yTOTALS1TM5) - (xTOTALS1TM5 * xyTOTALS1TM5)) / ((minPifVAL * xQuadTOTALS1TM5) - (xTOTALS1TM5^2)));
            aTOTALS1TM7 = (((xQuadTOTALS1TM7 * yTOTALS1TM7) - (xTOTALS1TM7 * xyTOTALS1TM7)) / ((minPifVAL * xQuadTOTALS1TM7) - (xTOTALS1TM7^2)));
            
            bTOTALS1TM1 = qXYTOTALS1TM1 / xxAritQuadTOTALS1TM1;
            bTOTALS1TM2 = qXYTOTALS1TM2 / xxAritQuadTOTALS1TM2;
            bTOTALS1TM3 = qXYTOTALS1TM3 / xxAritQuadTOTALS1TM3;
            bTOTALS1TM4 = qXYTOTALS1TM4 / xxAritQuadTOTALS1TM4;
            bTOTALS1TM5 = qXYTOTALS1TM5 / xxAritQuadTOTALS1TM5;
            bTOTALS1TM7 = qXYTOTALS1TM7 / xxAritQuadTOTALS1TM7;
    
            rTOTALS1TM1 = (qXYTOTALS1TM1 / ((xxAritQuadTOTALS1TM1 * yyAritQuadTOTALS1TM1)^0.5));
            rTOTALS1TM2 = (qXYTOTALS1TM2 / ((xxAritQuadTOTALS1TM2 * yyAritQuadTOTALS1TM2)^0.5));
            rTOTALS1TM3 = (qXYTOTALS1TM3 / ((xxAritQuadTOTALS1TM3 * yyAritQuadTOTALS1TM3)^0.5));
            rTOTALS1TM4 = (qXYTOTALS1TM4 / ((xxAritQuadTOTALS1TM4 * yyAritQuadTOTALS1TM4)^0.5));
            rTOTALS1TM5 = (qXYTOTALS1TM5 / ((xxAritQuadTOTALS1TM5 * yyAritQuadTOTALS1TM5)^0.5));
            rTOTALS1TM7 = (qXYTOTALS1TM7 / ((xxAritQuadTOTALS1TM7 * yyAritQuadTOTALS1TM7)^0.5));
    
            rQuadTOTALS1TM1 = ((rTOTALS1TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1TM2 = ((rTOTALS1TM2^2) * 100);
            rQuadTOTALS1TM3 = ((rTOTALS1TM3^2) * 100);
            rQuadTOTALS1TM4 = ((rTOTALS1TM4^2) * 100);
            rQuadTOTALS1TM5 = ((rTOTALS1TM5^2) * 100);
            rQuadTOTALS1TM7 = ((rTOTALS1TM7^2) * 100);
        
            syxTOTALS1TM1 = (((yyAritQuadTOTALS1TM1 - ((qXYTOTALS1TM1^2) / xxAritQuadTOTALS1TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM2 = (((yyAritQuadTOTALS1TM2 - ((qXYTOTALS1TM2^2) / xxAritQuadTOTALS1TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM3 = (((yyAritQuadTOTALS1TM3 - ((qXYTOTALS1TM3^2) / xxAritQuadTOTALS1TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM4 = (((yyAritQuadTOTALS1TM4 - ((qXYTOTALS1TM4^2) / xxAritQuadTOTALS1TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM5 = (((yyAritQuadTOTALS1TM5 - ((qXYTOTALS1TM5^2) / xxAritQuadTOTALS1TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM7 = (((yyAritQuadTOTALS1TM7 - ((qXYTOTALS1TM7^2) / xxAritQuadTOTALS1TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1TM1 = (((syxTOTALS1TM1^2) / xxAritQuadTOTALS1TM1)^0.5);
            bStandTOTALS1TM2 = (((syxTOTALS1TM2^2) / xxAritQuadTOTALS1TM2)^0.5);
            bStandTOTALS1TM3 = (((syxTOTALS1TM3^2) / xxAritQuadTOTALS1TM3)^0.5);
            bStandTOTALS1TM4 = (((syxTOTALS1TM4^2) / xxAritQuadTOTALS1TM4)^0.5);
            bStandTOTALS1TM5 = (((syxTOTALS1TM5^2) / xxAritQuadTOTALS1TM5)^0.5);
            bStandTOTALS1TM7 = (((syxTOTALS1TM7^2) / xxAritQuadTOTALS1TM7)^0.5);
    
            aStandTOTALS1TM1 = (bStandTOTALS1TM1 * ((xQuadTOTALS1TM1 / minPifVAL)^0.5));
            aStandTOTALS1TM2 = (bStandTOTALS1TM2 * ((xQuadTOTALS1TM2 / minPifVAL)^0.5));
            aStandTOTALS1TM3 = (bStandTOTALS1TM3 * ((xQuadTOTALS1TM3 / minPifVAL)^0.5));
            aStandTOTALS1TM4 = (bStandTOTALS1TM4 * ((xQuadTOTALS1TM4 / minPifVAL)^0.5));
            aStandTOTALS1TM5 = (bStandTOTALS1TM5 * ((xQuadTOTALS1TM5 / minPifVAL)^0.5));
            aStandTOTALS1TM7 = (bStandTOTALS1TM7 * ((xQuadTOTALS1TM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM1, bTOTALS1TM1, rTOTALS1TM1, rQuadTOTALS1TM1, aStandTOTALS1TM1, bStandTOTALS1TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM2, bTOTALS1TM2, rTOTALS1TM2, rQuadTOTALS1TM2, aStandTOTALS1TM2, bStandTOTALS1TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM3, bTOTALS1TM3, rTOTALS1TM3, rQuadTOTALS1TM3, aStandTOTALS1TM3, bStandTOTALS1TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM4, bTOTALS1TM4, rTOTALS1TM4, rQuadTOTALS1TM4, aStandTOTALS1TM4, bStandTOTALS1TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM5, bTOTALS1TM5, rTOTALS1TM5, rQuadTOTALS1TM5, aStandTOTALS1TM5, bStandTOTALS1TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS1TM7, bTOTALS1TM7, rTOTALS1TM7, rQuadTOTALS1TM7, aStandTOTALS1TM7, bStandTOTALS1TM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS1TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS1TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS1TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS1TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS1TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS1TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS1TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT1TM1[i,j] = (aTOTALS1TM1 + (bTOTALS1TM1 * REFS1TM1[i,j]));
                    OUT1TM2[i,j] = (aTOTALS1TM2 + (bTOTALS1TM2 * REFS1TM2[i,j]));
                    OUT1TM3[i,j] = (aTOTALS1TM3 + (bTOTALS1TM3 * REFS1TM3[i,j]));
                    OUT1TM4[i,j] = (aTOTALS1TM4 + (bTOTALS1TM4 * REFS1TM4[i,j]));
                    OUT1TM5[i,j] = (aTOTALS1TM5 + (bTOTALS1TM5 * REFS1TM5[i,j]));
                    OUT1TM7[i,j] = (aTOTALS1TM7 + (bTOTALS1TM7 * REFS1TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1TM1);
        	CreatePyramid(OUT1TM2);
        	CreatePyramid(OUT1TM3);
        	CreatePyramid(OUT1TM4);
        	CreatePyramid(OUT1TM5);
        	CreatePyramid(OUT1TM7);
        
        	CreateHistogram(OUT1TM1);
        	CreateHistogram(OUT1TM2);
        	CreateHistogram(OUT1TM3);
        	CreateHistogram(OUT1TM4);
        	CreateHistogram(OUT1TM5);
        	CreateHistogram(OUT1TM7);
        
        	CloseRaster(REFS1TM1);
            CloseRaster(REFS1TM2);
            CloseRaster(REFS1TM3);
            CloseRaster(REFS1TM4);
            CloseRaster(REFS1TM5);
            CloseRaster(REFS1TM7);
    
            CloseRaster(OUT1TM1);
            CloseRaster(OUT1TM2);
            CloseRaster(OUT1TM3);
            CloseRaster(OUT1TM4);
            CloseRaster(OUT1TM5);
            CloseRaster(OUT1TM7);
        
        	printf("Scene 1 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS1MSS1, xAritTOTALS1MSS2, xAritTOTALS1MSS4;
            numeric yAritTOTALS1MSS1, yAritTOTALS1MSS2, yAritTOTALS1MSS4;
    
            numeric aTOTALS1MSS1, aTOTALS1MSS2, aTOTALS1MSS4;
            numeric bTOTALS1MSS1, bTOTALS1MSS2, bTOTALS1MSS4;
            numeric rTOTALS1MSS1, rTOTALS1MSS2, rTOTALS1MSS4;
            numeric rQuadTOTALS1MSS1, rQuadTOTALS1MSS2, rQuadTOTALS1MSS4;
            numeric syxTOTALS1MSS1, syxTOTALS1MSS2, syxTOTALS1MSS4;
            numeric bStandTOTALS1MSS1, bStandTOTALS1MSS2, bStandTOTALS1MSS4;
            numeric aStandTOTALS1MSS1, aStandTOTALS1MSS2, aStandTOTALS1MSS4;
    
            numeric xTOTALS1MSS1 = 0;
            numeric xTOTALS1MSS2 = 0;
            numeric xTOTALS1MSS4 = 0;
    
            numeric xQuadTOTALS1MSS1 = 0;
            numeric xQuadTOTALS1MSS2 = 0;
            numeric xQuadTOTALS1MSS4 = 0;
    
            numeric yTOTALS1MSS1 = 0;
            numeric yTOTALS1MSS2 = 0;
            numeric yTOTALS1MSS4 = 0;
    
            numeric yQuadTOTALS1MSS1 = 0;
            numeric yQuadTOTALS1MSS2 = 0;
            numeric yQuadTOTALS1MSS4 = 0;
    
            numeric xyTOTALS1MSS1 = 0;
            numeric xyTOTALS1MSS2 = 0;
            numeric xyTOTALS1MSS4 = 0;
    
            numeric xxAritQuadTOTALS1MSS1 = 0;
            numeric xxAritQuadTOTALS1MSS2 = 0;
            numeric xxAritQuadTOTALS1MSS4 = 0;
    
            numeric yyAritQuadTOTALS1MSS1 = 0;
            numeric yyAritQuadTOTALS1MSS2 = 0;
            numeric yyAritQuadTOTALS1MSS4 = 0;
    
            numeric qXYTOTALS1MSS1 = 0;
            numeric qXYTOTALS1MSS2 = 0;
            numeric qXYTOTALS1MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS1MSS1 = xTOTALS1MSS1 + pifTOTALS2ETM2arrayRAND[m];
                xTOTALS1MSS2 = xTOTALS1MSS2 + pifTOTALS2ETM3arrayRAND[m];
                xTOTALS1MSS4 = xTOTALS1MSS4 + pifTOTALS2ETM4arrayRAND[m];
    
                xQuadTOTALS1MSS1 = (xQuadTOTALS1MSS1 + (pifTOTALS2ETM2arrayRAND[m]^2));
                xQuadTOTALS1MSS2 = (xQuadTOTALS1MSS2 + (pifTOTALS2ETM3arrayRAND[m]^2));
                xQuadTOTALS1MSS3 = (xQuadTOTALS1MSS3 + (pifTOTALS2ETM4arrayRAND[m]^2));
                xQuadTOTALS1MSS4 = (xQuadTOTALS1MSS4 + (pifTOTALS2ETM4arrayRAND[m]^2));
    
                yTOTALS1MSS1 = yTOTALS1MSS1 + pifTOTALS1MSS1arrayRAND[m];
                yTOTALS1MSS2 = yTOTALS1MSS2 + pifTOTALS1MSS2arrayRAND[m];
                yTOTALS1MSS4 = yTOTALS1MSS4 + pifTOTALS1MSS4arrayRAND[m];
                
                yQuadTOTALS1MSS1 = (yQuadTOTALS1MSS1 + (pifTOTALS1MSS1arrayRAND[m]^2));
                yQuadTOTALS1MSS2 = (yQuadTOTALS1MSS2 + (pifTOTALS1MSS2arrayRAND[m]^2));
                yQuadTOTALS1MSS4 = (yQuadTOTALS1MSS4 + (pifTOTALS1MSS4arrayRAND[m]^2));
    
                xyTOTALS1MSS1 = (xyTOTALS1MSS1 + (pifTOTALS2ETM2arrayRAND[m] * pifTOTALS1MSS1arrayRAND[m]));
                xyTOTALS1MSS2 = (xyTOTALS1MSS2 + (pifTOTALS2ETM3arrayRAND[m] * pifTOTALS1MSS2arrayRAND[m]));
                xyTOTALS1MSS4 = (xyTOTALS1MSS4 + (pifTOTALS2ETM4arrayRAND[m] * pifTOTALS1MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS1MSS1 = xTOTALS1MSS1 / minPifVAL;
            xAritTOTALS1MSS2 = xTOTALS1MSS2 / minPifVAL;
            xAritTOTALS1MSS4 = xTOTALS1MSS4 / minPifVAL;
    
            yAritTOTALS1MSS1 = yTOTALS1MSS1 / minPifVAL;
            yAritTOTALS1MSS2 = yTOTALS1MSS2 / minPifVAL;
            yAritTOTALS1MSS4 = yTOTALS1MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1MSS1 = (xxAritQuadTOTALS1MSS1 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS1MSS1)^2));
                xxAritQuadTOTALS1MSS2 = (xxAritQuadTOTALS1MSS2 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS1MSS2)^2));
                xxAritQuadTOTALS1MSS4 = (xxAritQuadTOTALS1MSS4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS1MSS4)^2));
    
                yyAritQuadTOTALS1MSS1 = (yyAritQuadTOTALS1MSS1 + ((pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)^2));
                yyAritQuadTOTALS1MSS2 = (yyAritQuadTOTALS1MSS2 + ((pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)^2));
                yyAritQuadTOTALS1MSS4 = (yyAritQuadTOTALS1MSS4 + ((pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)^2));
    
                qXYTOTALS1MSS1 = (qXYTOTALS1MSS1 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS1MSS1) * (pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)));
                qXYTOTALS1MSS2 = (qXYTOTALS1MSS2 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS1MSS2) * (pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)));
                qXYTOTALS1MSS4 = (qXYTOTALS1MSS4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS1MSS4) * (pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)));
            }
        
            aTOTALS1MSS1 = (((xQuadTOTALS1MSS1 * yTOTALS1MSS1) - (xTOTALS1MSS1 * xyTOTALS1MSS1)) / ((minPifVAL * xQuadTOTALS1MSS1) - (xTOTALS1MSS1^2)));
            aTOTALS1MSS2 = (((xQuadTOTALS1MSS2 * yTOTALS1MSS2) - (xTOTALS1MSS2 * xyTOTALS1MSS2)) / ((minPifVAL * xQuadTOTALS1MSS2) - (xTOTALS1MSS2^2)));
            aTOTALS1MSS4 = (((xQuadTOTALS1MSS4 * yTOTALS1MSS4) - (xTOTALS1MSS4 * xyTOTALS1MSS4)) / ((minPifVAL * xQuadTOTALS1MSS4) - (xTOTALS1MSS4^2)));
            
            bTOTALS1MSS1 = qXYTOTALS1MSS1 / xxAritQuadTOTALS1MSS1;
            bTOTALS1MSS2 = qXYTOTALS1MSS2 / xxAritQuadTOTALS1MSS2;
            bTOTALS1MSS4 = qXYTOTALS1MSS4 / xxAritQuadTOTALS1MSS4;
    
            rTOTALS1MSS1 = (qXYTOTALS1MSS1 / ((xxAritQuadTOTALS1MSS1 * yyAritQuadTOTALS1MSS1)^0.5));
            rTOTALS1MSS2 = (qXYTOTALS1MSS2 / ((xxAritQuadTOTALS1MSS2 * yyAritQuadTOTALS1MSS2)^0.5));
            rTOTALS1MSS4 = (qXYTOTALS1MSS4 / ((xxAritQuadTOTALS1MSS4 * yyAritQuadTOTALS1MSS4)^0.5));
    
            rQuadTOTALS1MSS1 = ((rTOTALS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1MSS2 = ((rTOTALS1MSS2^2) * 100);
            rQuadTOTALS1MSS4 = ((rTOTALS1MSS4^2) * 100);
        
            syxTOTALS1MSS1 = (((yyAritQuadTOTALS1MSS1 - ((qXYTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS2 = (((yyAritQuadTOTALS1MSS2 - ((qXYTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS4 = (((yyAritQuadTOTALS1MSS4 - ((qXYTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1MSS1 = (((syxTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)^0.5);
            bStandTOTALS1MSS2 = (((syxTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)^0.5);
            bStandTOTALS1MSS4 = (((syxTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)^0.5);
    
            aStandTOTALS1MSS1 = (bStandTOTALS1MSS1 * ((xQuadTOTALS1MSS1 / minPifVAL)^0.5));
            aStandTOTALS1MSS2 = (bStandTOTALS1MSS2 * ((xQuadTOTALS1MSS2 / minPifVAL)^0.5));
            aStandTOTALS1MSS4 = (bStandTOTALS1MSS4 * ((xQuadTOTALS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS1, bTOTALS1MSS1, rTOTALS1MSS1, rQuadTOTALS1MSS1, aStandTOTALS1MSS1, bStandTOTALS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS2, bTOTALS1MSS2, rTOTALS1MSS2, rQuadTOTALS1MSS2, aStandTOTALS1MSS2, bStandTOTALS1MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS4, bTOTALS1MSS4, rTOTALS1MSS4, rQuadTOTALS1MSS4, aStandTOTALS1MSS4, bStandTOTALS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS1MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS1MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS2arrayRAND[minPifVAL]);
        
            printf("MSS4: %12f ", pifTOTALS1MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aTOTALS1MSS1 + (bTOTALS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aTOTALS1MSS2 + (bTOTALS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = REFS1MSS3[i,j];
                    OUT1MSS4[i,j] = (aTOTALS1MSS4 + (bTOTALS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT1MSS1);
        	CreatePyramid(OUT1MSS2);
        	CreatePyramid(OUT1MSS3);
        	CreatePyramid(OUT1MSS4);
        
        	CreateHistogram(OUT1MSS1);
        	CreateHistogram(OUT1MSS2);
        	CreateHistogram(OUT1MSS3);
        	CreateHistogram(OUT1MSS4);
        
        	CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors3 == 7 )
            {
            numeric xAritTOTALS3ETM1, xAritTOTALS3ETM2, xAritTOTALS3ETM3, xAritTOTALS3ETM4, xAritTOTALS3ETM5, xAritTOTALS3ETM7;
            numeric yAritTOTALS3ETM1, yAritTOTALS3ETM2, yAritTOTALS3ETM3, yAritTOTALS3ETM4, yAritTOTALS3ETM5, yAritTOTALS3ETM7;
    
            numeric aTOTALS3ETM1, aTOTALS3ETM2, aTOTALS3ETM3, aTOTALS3ETM4, aTOTALS3ETM5, aTOTALS3ETM7;
            numeric bTOTALS3ETM1, bTOTALS3ETM2, bTOTALS3ETM3, bTOTALS3ETM4, bTOTALS3ETM5, bTOTALS3ETM7;
            numeric rTOTALS3ETM1, rTOTALS3ETM2, rTOTALS3ETM3, rTOTALS3ETM4, rTOTALS3ETM5, rTOTALS3ETM7;
            numeric rQuadTOTALS3ETM1, rQuadTOTALS3ETM2, rQuadTOTALS3ETM3, rQuadTOTALS3ETM4, rQuadTOTALS3ETM5, rQuadTOTALS3ETM7;
            numeric syxTOTALS3ETM1, syxTOTALS3ETM2, syxTOTALS3ETM3, syxTOTALS3ETM4, syxTOTALS3ETM5, syxTOTALS3ETM7;
            numeric bStandTOTALS3ETM1, bStandTOTALS3ETM2, bStandTOTALS3ETM3, bStandTOTALS3ETM4, bStandTOTALS3ETM5, bStandTOTALS3ETM7;
            numeric aStandTOTALS3ETM1, aStandTOTALS3ETM2, aStandTOTALS3ETM3, aStandTOTALS3ETM4, aStandTOTALS3ETM5, aStandTOTALS3ETM7;
    
            numeric xTOTALS3ETM1 = 0;
            numeric xTOTALS3ETM2 = 0;
            numeric xTOTALS3ETM3 = 0;
            numeric xTOTALS3ETM4 = 0;
            numeric xTOTALS3ETM5 = 0;
            numeric xTOTALS3ETM7 = 0;
    
            numeric xQuadTOTALS3ETM1 = 0;
            numeric xQuadTOTALS3ETM2 = 0;
            numeric xQuadTOTALS3ETM3 = 0;
            numeric xQuadTOTALS3ETM4 = 0;
            numeric xQuadTOTALS3ETM5 = 0;
            numeric xQuadTOTALS3ETM7 = 0;
    
            numeric yTOTALS3ETM1 = 0;
            numeric yTOTALS3ETM2 = 0;
            numeric yTOTALS3ETM3 = 0;
            numeric yTOTALS3ETM4 = 0;
            numeric yTOTALS3ETM5 = 0;
            numeric yTOTALS3ETM7 = 0;
    
            numeric yQuadTOTALS3ETM1 = 0;
            numeric yQuadTOTALS3ETM2 = 0;
            numeric yQuadTOTALS3ETM3 = 0;
            numeric yQuadTOTALS3ETM4 = 0;
            numeric yQuadTOTALS3ETM5 = 0;
            numeric yQuadTOTALS3ETM7 = 0;
    
            numeric xyTOTALS3ETM1 = 0;
            numeric xyTOTALS3ETM2 = 0;
            numeric xyTOTALS3ETM3 = 0;
            numeric xyTOTALS3ETM4 = 0;
            numeric xyTOTALS3ETM5 = 0;
            numeric xyTOTALS3ETM7 = 0;
    
            numeric xxAritQuadTOTALS3ETM1 = 0;
            numeric xxAritQuadTOTALS3ETM2 = 0;
            numeric xxAritQuadTOTALS3ETM3 = 0;
            numeric xxAritQuadTOTALS3ETM4 = 0;
            numeric xxAritQuadTOTALS3ETM5 = 0;
            numeric xxAritQuadTOTALS3ETM7 = 0;
    
            numeric yyAritQuadTOTALS3ETM1 = 0;
            numeric yyAritQuadTOTALS3ETM2 = 0;
            numeric yyAritQuadTOTALS3ETM3 = 0;
            numeric yyAritQuadTOTALS3ETM4 = 0;
            numeric yyAritQuadTOTALS3ETM5 = 0;
            numeric yyAritQuadTOTALS3ETM7 = 0;
    
            numeric qXYTOTALS3ETM1 = 0;
            numeric qXYTOTALS3ETM2 = 0;
            numeric qXYTOTALS3ETM3 = 0;
            numeric qXYTOTALS3ETM4 = 0;
            numeric qXYTOTALS3ETM5 = 0;
            numeric qXYTOTALS3ETM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS3ETM1 = xTOTALS3ETM1 + pifTOTALS2ETM1arrayRAND[m];
                xTOTALS3ETM2 = xTOTALS3ETM2 + pifTOTALS2ETM2arrayRAND[m];
                xTOTALS3ETM3 = xTOTALS3ETM3 + pifTOTALS2ETM3arrayRAND[m];
                xTOTALS3ETM4 = xTOTALS3ETM4 + pifTOTALS2ETM4arrayRAND[m];
                xTOTALS3ETM5 = xTOTALS3ETM5 + pifTOTALS2ETM5arrayRAND[m];
                xTOTALS3ETM7 = xTOTALS3ETM7 + pifTOTALS2ETM7arrayRAND[m];
    
                xQuadTOTALS3ETM1 = (xQuadTOTALS3ETM1 + (pifTOTALS2ETM1arrayRAND[m]^2));
                xQuadTOTALS3ETM2 = (xQuadTOTALS3ETM2 + (pifTOTALS2ETM2arrayRAND[m]^2));
                xQuadTOTALS3ETM3 = (xQuadTOTALS3ETM3 + (pifTOTALS2ETM3arrayRAND[m]^2));
             xQuadTOTALS3ETM4 = (xQuadTOTALS3ETM4 + (pifTOTALS2ETM4arrayRAND[m]^2));
                xQuadTOTALS3ETM5 = (xQuadTOTALS3ETM5 + (pifTOTALS2ETM5arrayRAND[m]^2));
                xQuadTOTALS3ETM7 = (xQuadTOTALS3ETM7 + (pifTOTALS2ETM7arrayRAND[m]^2));
    
                yTOTALS3ETM1 = yTOTALS3ETM1 + pifTOTALS3ETM1arrayRAND[m];
                yTOTALS3ETM2 = yTOTALS3ETM2 + pifTOTALS3ETM2arrayRAND[m];
                yTOTALS3ETM3 = yTOTALS3ETM3 + pifTOTALS3ETM3arrayRAND[m];
                yTOTALS3ETM4 = yTOTALS3ETM4 + pifTOTALS3ETM4arrayRAND[m];
                yTOTALS3ETM5 = yTOTALS3ETM5 + pifTOTALS3ETM5arrayRAND[m];
                yTOTALS3ETM7 = yTOTALS3ETM7 + pifTOTALS3ETM7arrayRAND[m];
                
                yQuadTOTALS3ETM1 = (yQuadTOTALS3ETM1 + (pifTOTALS3ETM1arrayRAND[m]^2));
                yQuadTOTALS3ETM2 = (yQuadTOTALS3ETM2 + (pifTOTALS3ETM2arrayRAND[m]^2));
                yQuadTOTALS3ETM3 = (yQuadTOTALS3ETM3 + (pifTOTALS3ETM3arrayRAND[m]^2));
                yQuadTOTALS3ETM4 = (yQuadTOTALS3ETM4 + (pifTOTALS3ETM4arrayRAND[m]^2));
                yQuadTOTALS3ETM5 = (yQuadTOTALS3ETM5 + (pifTOTALS3ETM5arrayRAND[m]^2));
                yQuadTOTALS3ETM7 = (yQuadTOTALS3ETM7 + (pifTOTALS3ETM7arrayRAND[m]^2));
    
                xyTOTALS3ETM1 = (xyTOTALS3ETM1 + (pifTOTALS2ETM1arrayRAND[m] * pifTOTALS3ETM1arrayRAND[m]));
                xyTOTALS3ETM2 = (xyTOTALS3ETM2 + (pifTOTALS2ETM2arrayRAND[m] * pifTOTALS3ETM2arrayRAND[m]));
                xyTOTALS3ETM3 = (xyTOTALS3ETM3 + (pifTOTALS2ETM3arrayRAND[m] * pifTOTALS3ETM3arrayRAND[m]));
                xyTOTALS3ETM4 = (xyTOTALS3ETM4 + (pifTOTALS2ETM4arrayRAND[m] * pifTOTALS3ETM4arrayRAND[m]));
                xyTOTALS3ETM5 = (xyTOTALS3ETM5 + (pifTOTALS2ETM5arrayRAND[m] * pifTOTALS3ETM5arrayRAND[m]));
                xyTOTALS3ETM7 = (xyTOTALS3ETM7 + (pifTOTALS2ETM7arrayRAND[m] * pifTOTALS3ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS3ETM1 = xTOTALS3ETM1 / minPifVAL;
            xAritTOTALS3ETM2 = xTOTALS3ETM2 / minPifVAL;
            xAritTOTALS3ETM3 = xTOTALS3ETM3 / minPifVAL;
            xAritTOTALS3ETM4 = xTOTALS3ETM4 / minPifVAL;
            xAritTOTALS3ETM5 = xTOTALS3ETM5 / minPifVAL;
            xAritTOTALS3ETM7 = xTOTALS3ETM7 / minPifVAL;
    
            yAritTOTALS3ETM1 = yTOTALS3ETM1 / minPifVAL;
            yAritTOTALS3ETM2 = yTOTALS3ETM2 / minPifVAL;
            yAritTOTALS3ETM3 = yTOTALS3ETM3 / minPifVAL;
            yAritTOTALS3ETM4 = yTOTALS3ETM4 / minPifVAL;
            yAritTOTALS3ETM5 = yTOTALS3ETM5 / minPifVAL;
            yAritTOTALS3ETM7 = yTOTALS3ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3ETM1 = (xxAritQuadTOTALS3ETM1 + ((pifTOTALS2ETM1arrayRAND[n] - xAritTOTALS3ETM1)^2));
                xxAritQuadTOTALS3ETM2 = (xxAritQuadTOTALS3ETM2 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS3ETM2)^2));
                xxAritQuadTOTALS3ETM3 = (xxAritQuadTOTALS3ETM3 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS3ETM3)^2));
                xxAritQuadTOTALS3ETM4 = (xxAritQuadTOTALS3ETM4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS3ETM4)^2));
                xxAritQuadTOTALS3ETM5 = (xxAritQuadTOTALS3ETM5 + ((pifTOTALS2ETM5arrayRAND[n] - xAritTOTALS3ETM5)^2));
                xxAritQuadTOTALS3ETM7 = (xxAritQuadTOTALS3ETM7 + ((pifTOTALS2ETM7arrayRAND[n] - xAritTOTALS3ETM7)^2));
    
                yyAritQuadTOTALS3ETM1 = (yyAritQuadTOTALS3ETM1 + ((pifTOTALS3ETM1arrayRAND[n] - yAritTOTALS3ETM1)^2));
                yyAritQuadTOTALS3ETM2 = (yyAritQuadTOTALS3ETM2 + ((pifTOTALS3ETM2arrayRAND[n] - yAritTOTALS3ETM2)^2));
                yyAritQuadTOTALS3ETM3 = (yyAritQuadTOTALS3ETM3 + ((pifTOTALS3ETM3arrayRAND[n] - yAritTOTALS3ETM3)^2));
                yyAritQuadTOTALS3ETM4 = (yyAritQuadTOTALS3ETM4 + ((pifTOTALS3ETM4arrayRAND[n] - yAritTOTALS3ETM4)^2));
                yyAritQuadTOTALS3ETM5 = (yyAritQuadTOTALS3ETM5 + ((pifTOTALS3ETM5arrayRAND[n] - yAritTOTALS3ETM5)^2));
                yyAritQuadTOTALS3ETM7 = (yyAritQuadTOTALS3ETM7 + ((pifTOTALS3ETM7arrayRAND[n] - yAritTOTALS3ETM7)^2));
    
                qXYTOTALS3ETM1 = (qXYTOTALS3ETM1 + ((pifTOTALS2ETM1arrayRAND[n] - xAritTOTALS3ETM1) * (pifTOTALS3ETM1arrayRAND[n] - yAritTOTALS3ETM1)));
                qXYTOTALS3ETM2 = (qXYTOTALS3ETM2 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS3ETM2) * (pifTOTALS3ETM2arrayRAND[n] - yAritTOTALS3ETM2)));
                qXYTOTALS3ETM3 = (qXYTOTALS3ETM3 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS3ETM3) * (pifTOTALS3ETM3arrayRAND[n] - yAritTOTALS3ETM3)));
                qXYTOTALS3ETM4 = (qXYTOTALS3ETM4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS3ETM4) * (pifTOTALS3ETM4arrayRAND[n] - yAritTOTALS3ETM4)));
                qXYTOTALS3ETM5 = (qXYTOTALS3ETM5 + ((pifTOTALS2ETM5arrayRAND[n] - xAritTOTALS3ETM5) * (pifTOTALS3ETM5arrayRAND[n] - yAritTOTALS3ETM5)));
                qXYTOTALS3ETM7 = (qXYTOTALS3ETM7 + ((pifTOTALS2ETM7arrayRAND[n] - xAritTOTALS3ETM7) * (pifTOTALS3ETM7arrayRAND[n] - yAritTOTALS3ETM7)));
            }
        
            aTOTALS3ETM1 = (((xQuadTOTALS3ETM1 * yTOTALS3ETM1) - (xTOTALS3ETM1 * xyTOTALS3ETM1)) / ((minPifVAL * xQuadTOTALS3ETM1) - (xTOTALS3ETM1^2)));
            aTOTALS3ETM2 = (((xQuadTOTALS3ETM2 * yTOTALS3ETM2) - (xTOTALS3ETM2 * xyTOTALS3ETM2)) / ((minPifVAL * xQuadTOTALS3ETM2) - (xTOTALS3ETM2^2)));
            aTOTALS3ETM3 = (((xQuadTOTALS3ETM3 * yTOTALS3ETM3) - (xTOTALS3ETM3 * xyTOTALS3ETM3)) / ((minPifVAL * xQuadTOTALS3ETM3) - (xTOTALS3ETM3^2)));
            aTOTALS3ETM4 = (((xQuadTOTALS3ETM4 * yTOTALS3ETM4) - (xTOTALS3ETM4 * xyTOTALS3ETM4)) / ((minPifVAL * xQuadTOTALS3ETM4) - (xTOTALS3ETM4^2)));
            aTOTALS3ETM5 = (((xQuadTOTALS3ETM5 * yTOTALS3ETM5) - (xTOTALS3ETM5 * xyTOTALS3ETM5)) / ((minPifVAL * xQuadTOTALS3ETM5) - (xTOTALS3ETM5^2)));
            aTOTALS3ETM7 = (((xQuadTOTALS3ETM7 * yTOTALS3ETM7) - (xTOTALS3ETM7 * xyTOTALS3ETM7)) / ((minPifVAL * xQuadTOTALS3ETM7) - (xTOTALS3ETM7^2)));
            
            bTOTALS3ETM1 = qXYTOTALS3ETM1 / xxAritQuadTOTALS3ETM1;
            bTOTALS3ETM2 = qXYTOTALS3ETM2 / xxAritQuadTOTALS3ETM2;
            bTOTALS3ETM3 = qXYTOTALS3ETM3 / xxAritQuadTOTALS3ETM3;
            bTOTALS3ETM4 = qXYTOTALS3ETM4 / xxAritQuadTOTALS3ETM4;
            bTOTALS3ETM5 = qXYTOTALS3ETM5 / xxAritQuadTOTALS3ETM5;
            bTOTALS3ETM7 = qXYTOTALS3ETM7 / xxAritQuadTOTALS3ETM7;
    
            rTOTALS3ETM1 = (qXYTOTALS3ETM1 / ((xxAritQuadTOTALS3ETM1 * yyAritQuadTOTALS3ETM1)^0.5));
            rTOTALS3ETM2 = (qXYTOTALS3ETM2 / ((xxAritQuadTOTALS3ETM2 * yyAritQuadTOTALS3ETM2)^0.5));
            rTOTALS3ETM3 = (qXYTOTALS3ETM3 / ((xxAritQuadTOTALS3ETM3 * yyAritQuadTOTALS3ETM3)^0.5));
            rTOTALS3ETM4 = (qXYTOTALS3ETM4 / ((xxAritQuadTOTALS3ETM4 * yyAritQuadTOTALS3ETM4)^0.5));
            rTOTALS3ETM5 = (qXYTOTALS3ETM5 / ((xxAritQuadTOTALS3ETM5 * yyAritQuadTOTALS3ETM5)^0.5));
            rTOTALS3ETM7 = (qXYTOTALS3ETM7 / ((xxAritQuadTOTALS3ETM7 * yyAritQuadTOTALS3ETM7)^0.5));
    
            rQuadTOTALS3ETM1 = ((rTOTALS3ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3ETM2 = ((rTOTALS3ETM2^2) * 100);
            rQuadTOTALS3ETM3 = ((rTOTALS3ETM3^2) * 100);
            rQuadTOTALS3ETM4 = ((rTOTALS3ETM4^2) * 100);
            rQuadTOTALS3ETM5 = ((rTOTALS3ETM5^2) * 100);
            rQuadTOTALS3ETM7 = ((rTOTALS3ETM7^2) * 100);
        
            syxTOTALS3ETM1 = (((yyAritQuadTOTALS3ETM1 - ((qXYTOTALS3ETM1^2) / xxAritQuadTOTALS3ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM2 = (((yyAritQuadTOTALS3ETM2 - ((qXYTOTALS3ETM2^2) / xxAritQuadTOTALS3ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM3 = (((yyAritQuadTOTALS3ETM3 - ((qXYTOTALS3ETM3^2) / xxAritQuadTOTALS3ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM4 = (((yyAritQuadTOTALS3ETM4 - ((qXYTOTALS3ETM4^2) / xxAritQuadTOTALS3ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM5 = (((yyAritQuadTOTALS3ETM5 - ((qXYTOTALS3ETM5^2) / xxAritQuadTOTALS3ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM7 = (((yyAritQuadTOTALS3ETM7 - ((qXYTOTALS3ETM7^2) / xxAritQuadTOTALS3ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3ETM1 = (((syxTOTALS3ETM1^2) / xxAritQuadTOTALS3ETM1)^0.5);
            bStandTOTALS3ETM2 = (((syxTOTALS3ETM2^2) / xxAritQuadTOTALS3ETM2)^0.5);
            bStandTOTALS3ETM3 = (((syxTOTALS3ETM3^2) / xxAritQuadTOTALS3ETM3)^0.5);
            bStandTOTALS3ETM4 = (((syxTOTALS3ETM4^2) / xxAritQuadTOTALS3ETM4)^0.5);
            bStandTOTALS3ETM5 = (((syxTOTALS3ETM5^2) / xxAritQuadTOTALS3ETM5)^0.5);
            bStandTOTALS3ETM7 = (((syxTOTALS3ETM7^2) / xxAritQuadTOTALS3ETM7)^0.5);
    
            aStandTOTALS3ETM1 = (bStandTOTALS3ETM1 * ((xQuadTOTALS3ETM1 / minPifVAL)^0.5));
            aStandTOTALS3ETM2 = (bStandTOTALS3ETM2 * ((xQuadTOTALS3ETM2 / minPifVAL)^0.5));
            aStandTOTALS3ETM3 = (bStandTOTALS3ETM3 * ((xQuadTOTALS3ETM3 / minPifVAL)^0.5));
            aStandTOTALS3ETM4 = (bStandTOTALS3ETM4 * ((xQuadTOTALS3ETM4 / minPifVAL)^0.5));
            aStandTOTALS3ETM5 = (bStandTOTALS3ETM5 * ((xQuadTOTALS3ETM5 / minPifVAL)^0.5));
            aStandTOTALS3ETM7 = (bStandTOTALS3ETM7 * ((xQuadTOTALS3ETM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM1, bTOTALS3ETM1, rTOTALS3ETM1, rQuadTOTALS3ETM1, aStandTOTALS3ETM1, bStandTOTALS3ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM2, bTOTALS3ETM2, rTOTALS3ETM2, rQuadTOTALS3ETM2, aStandTOTALS3ETM2, bStandTOTALS3ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM3, bTOTALS3ETM3, rTOTALS3ETM3, rQuadTOTALS3ETM3, aStandTOTALS3ETM3, bStandTOTALS3ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM4, bTOTALS3ETM4, rTOTALS3ETM4, rQuadTOTALS3ETM4, aStandTOTALS3ETM4, bStandTOTALS3ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM5, bTOTALS3ETM5, rTOTALS3ETM5, rQuadTOTALS3ETM5, aStandTOTALS3ETM5, bStandTOTALS3ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS3ETM7, bTOTALS3ETM7, rTOTALS3ETM7, rQuadTOTALS3ETM7, aStandTOTALS3ETM7, bStandTOTALS3ETM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS3ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS3ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS3ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS3ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS3ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS3ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS3ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT3ETM1[i,j] = (aTOTALS3ETM1 + (bTOTALS3ETM1 * REFS3ETM1[i,j]));
                    OUT3ETM2[i,j] = (aTOTALS3ETM2 + (bTOTALS3ETM2 * REFS3ETM2[i,j]));
                    OUT3ETM3[i,j] = (aTOTALS3ETM3 + (bTOTALS3ETM3 * REFS3ETM3[i,j]));
                    OUT3ETM4[i,j] = (aTOTALS3ETM4 + (bTOTALS3ETM4 * REFS3ETM4[i,j]));
                    OUT3ETM5[i,j] = (aTOTALS3ETM5 + (bTOTALS3ETM5 * REFS3ETM5[i,j]));
                    OUT3ETM7[i,j] = (aTOTALS3ETM7 + (bTOTALS3ETM7 * REFS3ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3ETM1);
        	CreatePyramid(OUT3ETM2);
        	CreatePyramid(OUT3ETM3);
        	CreatePyramid(OUT3ETM4);
        	CreatePyramid(OUT3ETM5);
        	CreatePyramid(OUT3ETM7);
        
        	CreateHistogram(OUT3ETM1);
        	CreateHistogram(OUT3ETM2);
        	CreateHistogram(OUT3ETM3);
        	CreateHistogram(OUT3ETM4);
        	CreateHistogram(OUT3ETM5);
        	CreateHistogram(OUT3ETM7);
        
        	CloseRaster(REFS3ETM1);
            CloseRaster(REFS3ETM2);
            CloseRaster(REFS3ETM3);
            CloseRaster(REFS3ETM4);
            CloseRaster(REFS3ETM5);
            CloseRaster(REFS3ETM7);
    
            CloseRaster(OUT3ETM1);
            CloseRaster(OUT3ETM2);
            CloseRaster(OUT3ETM3);
            CloseRaster(OUT3ETM4);
            CloseRaster(OUT3ETM5);
            CloseRaster(OUT3ETM7);
        
        	printf("Scene 3 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors3 == 6 )
            {
            numeric xAritTOTALS3TM1, xAritTOTALS3TM2, xAritTOTALS3TM3, xAritTOTALS3TM4, xAritTOTALS3TM5, xAritTOTALS3TM7;
            numeric yAritTOTALS3TM1, yAritTOTALS3TM2, yAritTOTALS3TM3, yAritTOTALS3TM4, yAritTOTALS3TM5, yAritTOTALS3TM7;
    
            numeric aTOTALS3TM1, aTOTALS3TM2, aTOTALS3TM3, aTOTALS3TM4, aTOTALS3TM5, aTOTALS3TM7;
            numeric bTOTALS3TM1, bTOTALS3TM2, bTOTALS3TM3, bTOTALS3TM4, bTOTALS3TM5, bTOTALS3TM7;
            numeric rTOTALS3TM1, rTOTALS3TM2, rTOTALS3TM3, rTOTALS3TM4, rTOTALS3TM5, rTOTALS3TM7;
            numeric rQuadTOTALS3TM1, rQuadTOTALS3TM2, rQuadTOTALS3TM3, rQuadTOTALS3TM4, rQuadTOTALS3TM5, rQuadTOTALS3TM7;
            numeric syxTOTALS3TM1, syxTOTALS3TM2, syxTOTALS3TM3, syxTOTALS3TM4, syxTOTALS3TM5, syxTOTALS3TM7;
            numeric bStandTOTALS3TM1, bStandTOTALS3TM2, bStandTOTALS3TM3, bStandTOTALS3TM4, bStandTOTALS3TM5, bStandTOTALS3TM7;
            numeric aStandTOTALS3TM1, aStandTOTALS3TM2, aStandTOTALS3TM3, aStandTOTALS3TM4, aStandTOTALS3TM5, aStandTOTALS3TM7;
    
            numeric xTOTALS3TM1 = 0;
            numeric xTOTALS3TM2 = 0;
            numeric xTOTALS3TM3 = 0;
            numeric xTOTALS3TM4 = 0;
            numeric xTOTALS3TM5 = 0;
            numeric xTOTALS3TM7 = 0;
    
            numeric xQuadTOTALS3TM1 = 0;
            numeric xQuadTOTALS3TM2 = 0;
            numeric xQuadTOTALS3TM3 = 0;
            numeric xQuadTOTALS3TM4 = 0;
            numeric xQuadTOTALS3TM5 = 0;
            numeric xQuadTOTALS3TM7 = 0;
    
            numeric yTOTALS3TM1 = 0;
            numeric yTOTALS3TM2 = 0;
            numeric yTOTALS3TM3 = 0;
            numeric yTOTALS3TM4 = 0;
            numeric yTOTALS3TM5 = 0;
            numeric yTOTALS3TM7 = 0;
    
            numeric yQuadTOTALS3TM1 = 0;
            numeric yQuadTOTALS3TM2 = 0;
            numeric yQuadTOTALS3TM3 = 0;
            numeric yQuadTOTALS3TM4 = 0;
            numeric yQuadTOTALS3TM5 = 0;
            numeric yQuadTOTALS3TM7 = 0;
    
            numeric xyTOTALS3TM1 = 0;
            numeric xyTOTALS3TM2 = 0;
            numeric xyTOTALS3TM3 = 0;
            numeric xyTOTALS3TM4 = 0;
            numeric xyTOTALS3TM5 = 0;
            numeric xyTOTALS3TM7 = 0;
    
            numeric xxAritQuadTOTALS3TM1 = 0;
            numeric xxAritQuadTOTALS3TM2 = 0;
            numeric xxAritQuadTOTALS3TM3 = 0;
            numeric xxAritQuadTOTALS3TM4 = 0;
            numeric xxAritQuadTOTALS3TM5 = 0;
            numeric xxAritQuadTOTALS3TM7 = 0;
    
            numeric yyAritQuadTOTALS3TM1 = 0;
            numeric yyAritQuadTOTALS3TM2 = 0;
            numeric yyAritQuadTOTALS3TM3 = 0;
            numeric yyAritQuadTOTALS3TM4 = 0;
            numeric yyAritQuadTOTALS3TM5 = 0;
            numeric yyAritQuadTOTALS3TM7 = 0;
    
            numeric qXYTOTALS3TM1 = 0;
            numeric qXYTOTALS3TM2 = 0;
            numeric qXYTOTALS3TM3 = 0;
            numeric qXYTOTALS3TM4 = 0;
            numeric qXYTOTALS3TM5 = 0;
            numeric qXYTOTALS3TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS3TM1 = xTOTALS3TM1 + pifTOTALS2ETM1arrayRAND[m];
                xTOTALS3TM2 = xTOTALS3TM2 + pifTOTALS2ETM2arrayRAND[m];
                xTOTALS3TM3 = xTOTALS3TM3 + pifTOTALS2ETM3arrayRAND[m];
                xTOTALS3TM4 = xTOTALS3TM4 + pifTOTALS2ETM4arrayRAND[m];
                xTOTALS3TM5 = xTOTALS3TM5 + pifTOTALS2ETM5arrayRAND[m];
                xTOTALS3TM7 = xTOTALS3TM7 + pifTOTALS2ETM7arrayRAND[m];
    
                xQuadTOTALS3TM1 = (xQuadTOTALS3TM1 + (pifTOTALS2ETM1arrayRAND[m]^2));
                xQuadTOTALS3TM2 = (xQuadTOTALS3TM2 + (pifTOTALS2ETM2arrayRAND[m]^2));
                xQuadTOTALS3TM3 = (xQuadTOTALS3TM3 + (pifTOTALS2ETM3arrayRAND[m]^2));
                xQuadTOTALS3TM4 = (xQuadTOTALS3TM4 + (pifTOTALS2ETM4arrayRAND[m]^2));
                xQuadTOTALS3TM5 = (xQuadTOTALS3TM5 + (pifTOTALS2ETM5arrayRAND[m]^2));
                xQuadTOTALS3TM7 = (xQuadTOTALS3TM7 + (pifTOTALS2ETM7arrayRAND[m]^2));
    
                yTOTALS3TM1 = yTOTALS3TM1 + pifTOTALS3TM1arrayRAND[m];
                yTOTALS3TM2 = yTOTALS3TM2 + pifTOTALS3TM2arrayRAND[m];
                yTOTALS3TM3 = yTOTALS3TM3 + pifTOTALS3TM3arrayRAND[m];
                yTOTALS3TM4 = yTOTALS3TM4 + pifTOTALS3TM4arrayRAND[m];
                yTOTALS3TM5 = yTOTALS3TM5 + pifTOTALS3TM5arrayRAND[m];
                yTOTALS3TM7 = yTOTALS3TM7 + pifTOTALS3TM7arrayRAND[m];
                
                yQuadTOTALS3TM1 = (yQuadTOTALS3TM1 + (pifTOTALS3TM1arrayRAND[m]^2));
                yQuadTOTALS3TM2 = (yQuadTOTALS3TM2 + (pifTOTALS3TM2arrayRAND[m]^2));
                yQuadTOTALS3TM3 = (yQuadTOTALS3TM3 + (pifTOTALS3TM3arrayRAND[m]^2));
                yQuadTOTALS3TM4 = (yQuadTOTALS3TM4 + (pifTOTALS3TM4arrayRAND[m]^2));
                yQuadTOTALS3TM5 = (yQuadTOTALS3TM5 + (pifTOTALS3TM5arrayRAND[m]^2));
                yQuadTOTALS3TM7 = (yQuadTOTALS3TM7 + (pifTOTALS3TM7arrayRAND[m]^2));
    
                xyTOTALS3TM1 = (xyTOTALS3TM1 + (pifTOTALS2ETM1arrayRAND[m] * pifTOTALS3TM1arrayRAND[m]));
                xyTOTALS3TM2 = (xyTOTALS3TM2 + (pifTOTALS2ETM2arrayRAND[m] * pifTOTALS3TM2arrayRAND[m]));
                xyTOTALS3TM3 = (xyTOTALS3TM3 + (pifTOTALS2ETM3arrayRAND[m] * pifTOTALS3TM3arrayRAND[m]));
                xyTOTALS3TM4 = (xyTOTALS3TM4 + (pifTOTALS2ETM4arrayRAND[m] * pifTOTALS3TM4arrayRAND[m]));
                xyTOTALS3TM5 = (xyTOTALS3TM5 + (pifTOTALS2ETM5arrayRAND[m] * pifTOTALS3TM5arrayRAND[m]));
                xyTOTALS3TM7 = (xyTOTALS3TM7 + (pifTOTALS2ETM7arrayRAND[m] * pifTOTALS3TM7arrayRAND[m]));
            }	
            
            xAritTOTALS3TM1 = xTOTALS3TM1 / minPifVAL;
            xAritTOTALS3TM2 = xTOTALS3TM2 / minPifVAL;
            xAritTOTALS3TM3 = xTOTALS3TM3 / minPifVAL;
            xAritTOTALS3TM4 = xTOTALS3TM4 / minPifVAL;
            xAritTOTALS3TM5 = xTOTALS3TM5 / minPifVAL;
            xAritTOTALS3TM7 = xTOTALS3TM7 / minPifVAL;
    
            yAritTOTALS3TM1 = yTOTALS3TM1 / minPifVAL;
            yAritTOTALS3TM2 = yTOTALS3TM2 / minPifVAL;
            yAritTOTALS3TM3 = yTOTALS3TM3 / minPifVAL;
            yAritTOTALS3TM4 = yTOTALS3TM4 / minPifVAL;
            yAritTOTALS3TM5 = yTOTALS3TM5 / minPifVAL;
            yAritTOTALS3TM7 = yTOTALS3TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3TM1 = (xxAritQuadTOTALS3TM1 + ((pifTOTALS2ETM1arrayRAND[n] - xAritTOTALS3TM1)^2));
                xxAritQuadTOTALS3TM2 = (xxAritQuadTOTALS3TM2 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS3TM2)^2));
                xxAritQuadTOTALS3TM3 = (xxAritQuadTOTALS3TM3 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS3TM3)^2));
                xxAritQuadTOTALS3TM4 = (xxAritQuadTOTALS3TM4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS3TM4)^2));
                xxAritQuadTOTALS3TM5 = (xxAritQuadTOTALS3TM5 + ((pifTOTALS2ETM5arrayRAND[n] - xAritTOTALS3TM5)^2));
                xxAritQuadTOTALS3TM7 = (xxAritQuadTOTALS3TM7 + ((pifTOTALS2ETM7arrayRAND[n] - xAritTOTALS3TM7)^2));
    
                yyAritQuadTOTALS3TM1 = (yyAritQuadTOTALS3TM1 + ((pifTOTALS3TM1arrayRAND[n] - yAritTOTALS3TM1)^2));
                yyAritQuadTOTALS3TM2 = (yyAritQuadTOTALS3TM2 + ((pifTOTALS3TM2arrayRAND[n] - yAritTOTALS3TM2)^2));
                yyAritQuadTOTALS3TM3 = (yyAritQuadTOTALS3TM3 + ((pifTOTALS3TM3arrayRAND[n] - yAritTOTALS3TM3)^2));
                yyAritQuadTOTALS3TM4 = (yyAritQuadTOTALS3TM4 + ((pifTOTALS3TM4arrayRAND[n] - yAritTOTALS3TM4)^2));
                yyAritQuadTOTALS3TM5 = (yyAritQuadTOTALS3TM5 + ((pifTOTALS3TM5arrayRAND[n] - yAritTOTALS3TM5)^2));
                yyAritQuadTOTALS3TM7 = (yyAritQuadTOTALS3TM7 + ((pifTOTALS3TM7arrayRAND[n] - yAritTOTALS3TM7)^2));
    
                qXYTOTALS3TM1 = (qXYTOTALS3TM1 + ((pifTOTALS2ETM1arrayRAND[n] - xAritTOTALS3TM1) * (pifTOTALS3TM1arrayRAND[n] - yAritTOTALS3TM1)));
                qXYTOTALS3TM2 = (qXYTOTALS3TM2 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS3TM2) * (pifTOTALS3TM2arrayRAND[n] - yAritTOTALS3TM2)));
                qXYTOTALS3TM3 = (qXYTOTALS3TM3 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS3TM3) * (pifTOTALS3TM3arrayRAND[n] - yAritTOTALS3TM3)));
                qXYTOTALS3TM4 = (qXYTOTALS3TM4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS3TM4) * (pifTOTALS3TM4arrayRAND[n] - yAritTOTALS3TM4)));
                qXYTOTALS3TM5 = (qXYTOTALS3TM5 + ((pifTOTALS2ETM5arrayRAND[n] - xAritTOTALS3TM5) * (pifTOTALS3TM5arrayRAND[n] - yAritTOTALS3TM5)));
                qXYTOTALS3TM7 = (qXYTOTALS3TM7 + ((pifTOTALS2ETM7arrayRAND[n] - xAritTOTALS3TM7) * (pifTOTALS3TM7arrayRAND[n] - yAritTOTALS3TM7)));
            }
        
            aTOTALS3TM1 = (((xQuadTOTALS3TM1 * yTOTALS3TM1) - (xTOTALS3TM1 * xyTOTALS3TM1)) / ((minPifVAL * xQuadTOTALS3TM1) - (xTOTALS3TM1^2)));
            aTOTALS3TM2 = (((xQuadTOTALS3TM2 * yTOTALS3TM2) - (xTOTALS3TM2 * xyTOTALS3TM2)) / ((minPifVAL * xQuadTOTALS3TM2) - (xTOTALS3TM2^2)));
            aTOTALS3TM3 = (((xQuadTOTALS3TM3 * yTOTALS3TM3) - (xTOTALS3TM3 * xyTOTALS3TM3)) / ((minPifVAL * xQuadTOTALS3TM3) - (xTOTALS3TM3^2)));
            aTOTALS3TM4 = (((xQuadTOTALS3TM4 * yTOTALS3TM4) - (xTOTALS3TM4 * xyTOTALS3TM4)) / ((minPifVAL * xQuadTOTALS3TM4) - (xTOTALS3TM4^2)));
            aTOTALS3TM5 = (((xQuadTOTALS3TM5 * yTOTALS3TM5) - (xTOTALS3TM5 * xyTOTALS3TM5)) / ((minPifVAL * xQuadTOTALS3TM5) - (xTOTALS3TM5^2)));
            aTOTALS3TM7 = (((xQuadTOTALS3TM7 * yTOTALS3TM7) - (xTOTALS3TM7 * xyTOTALS3TM7)) / ((minPifVAL * xQuadTOTALS3TM7) - (xTOTALS3TM7^2)));
            
            bTOTALS3TM1 = qXYTOTALS3TM1 / xxAritQuadTOTALS3TM1;
            bTOTALS3TM2 = qXYTOTALS3TM2 / xxAritQuadTOTALS3TM2;
            bTOTALS3TM3 = qXYTOTALS3TM3 / xxAritQuadTOTALS3TM3;
            bTOTALS3TM4 = qXYTOTALS3TM4 / xxAritQuadTOTALS3TM4;
            bTOTALS3TM5 = qXYTOTALS3TM5 / xxAritQuadTOTALS3TM5;
            bTOTALS3TM7 = qXYTOTALS3TM7 / xxAritQuadTOTALS3TM7;
    
            rTOTALS3TM1 = (qXYTOTALS3TM1 / ((xxAritQuadTOTALS3TM1 * yyAritQuadTOTALS3TM1)^0.5));
            rTOTALS3TM2 = (qXYTOTALS3TM2 / ((xxAritQuadTOTALS3TM2 * yyAritQuadTOTALS3TM2)^0.5));
            rTOTALS3TM3 = (qXYTOTALS3TM3 / ((xxAritQuadTOTALS3TM3 * yyAritQuadTOTALS3TM3)^0.5));
            rTOTALS3TM4 = (qXYTOTALS3TM4 / ((xxAritQuadTOTALS3TM4 * yyAritQuadTOTALS3TM4)^0.5));
            rTOTALS3TM5 = (qXYTOTALS3TM5 / ((xxAritQuadTOTALS3TM5 * yyAritQuadTOTALS3TM5)^0.5));
            rTOTALS3TM7 = (qXYTOTALS3TM7 / ((xxAritQuadTOTALS3TM7 * yyAritQuadTOTALS3TM7)^0.5));
    
            rQuadTOTALS3TM1 = ((rTOTALS3TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3TM2 = ((rTOTALS3TM2^2) * 100);
            rQuadTOTALS3TM3 = ((rTOTALS3TM3^2) * 100);
            rQuadTOTALS3TM4 = ((rTOTALS3TM4^2) * 100);
            rQuadTOTALS3TM5 = ((rTOTALS3TM5^2) * 100);
            rQuadTOTALS3TM7 = ((rTOTALS3TM7^2) * 100);
        
            syxTOTALS3TM1 = (((yyAritQuadTOTALS3TM1 - ((qXYTOTALS3TM1^2) / xxAritQuadTOTALS3TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM2 = (((yyAritQuadTOTALS3TM2 - ((qXYTOTALS3TM2^2) / xxAritQuadTOTALS3TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM3 = (((yyAritQuadTOTALS3TM3 - ((qXYTOTALS3TM3^2) / xxAritQuadTOTALS3TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM4 = (((yyAritQuadTOTALS3TM4 - ((qXYTOTALS3TM4^2) / xxAritQuadTOTALS3TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM5 = (((yyAritQuadTOTALS3TM5 - ((qXYTOTALS3TM5^2) / xxAritQuadTOTALS3TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM7 = (((yyAritQuadTOTALS3TM7 - ((qXYTOTALS3TM7^2) / xxAritQuadTOTALS3TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3TM1 = (((syxTOTALS3TM1^2) / xxAritQuadTOTALS3TM1)^0.5);
            bStandTOTALS3TM2 = (((syxTOTALS3TM2^2) / xxAritQuadTOTALS3TM2)^0.5);
            bStandTOTALS3TM3 = (((syxTOTALS3TM3^2) / xxAritQuadTOTALS3TM3)^0.5);
            bStandTOTALS3TM4 = (((syxTOTALS3TM4^2) / xxAritQuadTOTALS3TM4)^0.5);
            bStandTOTALS3TM5 = (((syxTOTALS3TM5^2) / xxAritQuadTOTALS3TM5)^0.5);
            bStandTOTALS3TM7 = (((syxTOTALS3TM7^2) / xxAritQuadTOTALS3TM7)^0.5);
    
            aStandTOTALS3TM1 = (bStandTOTALS3TM1 * ((xQuadTOTALS3TM1 / minPifVAL)^0.5));
            aStandTOTALS3TM2 = (bStandTOTALS3TM2 * ((xQuadTOTALS3TM2 / minPifVAL)^0.5));
            aStandTOTALS3TM3 = (bStandTOTALS3TM3 * ((xQuadTOTALS3TM3 / minPifVAL)^0.5));
            aStandTOTALS3TM4 = (bStandTOTALS3TM4 * ((xQuadTOTALS3TM4 / minPifVAL)^0.5));
            aStandTOTALS3TM5 = (bStandTOTALS3TM5 * ((xQuadTOTALS3TM5 / minPifVAL)^0.5));
            aStandTOTALS3TM7 = (bStandTOTALS3TM7 * ((xQuadTOTALS3TM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM1, bTOTALS3TM1, rTOTALS3TM1, rQuadTOTALS3TM1, aStandTOTALS3TM1, bStandTOTALS3TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM2, bTOTALS3TM2, rTOTALS3TM2, rQuadTOTALS3TM2, aStandTOTALS3TM2, bStandTOTALS3TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM3, bTOTALS3TM3, rTOTALS3TM3, rQuadTOTALS3TM3, aStandTOTALS3TM3, bStandTOTALS3TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM4, bTOTALS3TM4, rTOTALS3TM4, rQuadTOTALS3TM4, aStandTOTALS3TM4, bStandTOTALS3TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM5, bTOTALS3TM5, rTOTALS3TM5, rQuadTOTALS3TM5, aStandTOTALS3TM5, bStandTOTALS3TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS3TM7, bTOTALS3TM7, rTOTALS3TM7, rQuadTOTALS3TM7, aStandTOTALS3TM7, bStandTOTALS3TM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS3TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS3TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS3TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS3TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS3TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS3TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS3TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT3TM1[i,j] = (aTOTALS3TM1 + (bTOTALS3TM1 * REFS3TM1[i,j]));
                    OUT3TM2[i,j] = (aTOTALS3TM2 + (bTOTALS3TM2 * REFS3TM2[i,j]));
                    OUT3TM3[i,j] = (aTOTALS3TM3 + (bTOTALS3TM3 * REFS3TM3[i,j]));
                    OUT3TM4[i,j] = (aTOTALS3TM4 + (bTOTALS3TM4 * REFS3TM4[i,j]));
                    OUT3TM5[i,j] = (aTOTALS3TM5 + (bTOTALS3TM5 * REFS3TM5[i,j]));
                    OUT3TM7[i,j] = (aTOTALS3TM7 + (bTOTALS3TM7 * REFS3TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3TM1);
        	CreatePyramid(OUT3TM2);
        	CreatePyramid(OUT3TM3);
        	CreatePyramid(OUT3TM4);
        	CreatePyramid(OUT3TM5);
        	CreatePyramid(OUT3TM7);
        
        	CreateHistogram(OUT3TM1);
        	CreateHistogram(OUT3TM2);
        	CreateHistogram(OUT3TM3);
        	CreateHistogram(OUT3TM4);
        	CreateHistogram(OUT3TM5);
        	CreateHistogram(OUT3TM7);
        
        	CloseRaster(REFS3TM1);
            CloseRaster(REFS3TM2);
            CloseRaster(REFS3TM3);
            CloseRaster(REFS3TM4);
            CloseRaster(REFS3TM5);
            CloseRaster(REFS3TM7);
    
            CloseRaster(OUT3TM1);
            CloseRaster(OUT3TM2);
            CloseRaster(OUT3TM3);
            CloseRaster(OUT3TM4);
            CloseRaster(OUT3TM5);
            CloseRaster(OUT3TM7);
        
        	printf("Scene 3 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS3MSS1, xAritTOTALS3MSS2, xAritTOTALS3MSS4;
            numeric yAritTOTALS3MSS1, yAritTOTALS3MSS2, yAritTOTALS3MSS4;
    
            numeric aTOTALS3MSS1, aTOTALS3MSS2, aTOTALS3MSS4;
            numeric bTOTALS3MSS1, bTOTALS3MSS2, bTOTALS3MSS4;
            numeric rTOTALS3MSS1, rTOTALS3MSS2, rTOTALS3MSS4;
            numeric rQuadTOTALS3MSS1, rQuadTOTALS3MSS2, rQuadTOTALS3MSS4;
            numeric syxTOTALS3MSS1, syxTOTALS3MSS2, syxTOTALS3MSS4;
            numeric bStandTOTALS3MSS1, bStandTOTALS3MSS2, bStandTOTALS3MSS4;
            numeric aStandTOTALS3MSS1, aStandTOTALS3MSS2, aStandTOTALS3MSS4;
    
            numeric xTOTALS3MSS1 = 0;
            numeric xTOTALS3MSS2 = 0;
            numeric xTOTALS3MSS4 = 0;
    
            numeric xQuadTOTALS3MSS1 = 0;
            numeric xQuadTOTALS3MSS2 = 0;
            numeric xQuadTOTALS3MSS4 = 0;
    
            numeric yTOTALS3MSS1 = 0;
            numeric yTOTALS3MSS2 = 0;
            numeric yTOTALS3MSS4 = 0;
    
            numeric yQuadTOTALS3MSS1 = 0;
            numeric yQuadTOTALS3MSS2 = 0;
            numeric yQuadTOTALS3MSS4 = 0;
    
            numeric xyTOTALS3MSS1 = 0;
            numeric xyTOTALS3MSS2 = 0;
            numeric xyTOTALS3MSS4 = 0;
    
            numeric xxAritQuadTOTALS3MSS1 = 0;
            numeric xxAritQuadTOTALS3MSS2 = 0;
            numeric xxAritQuadTOTALS3MSS4 = 0;
    
            numeric yyAritQuadTOTALS3MSS1 = 0;
            numeric yyAritQuadTOTALS3MSS2 = 0;
            numeric yyAritQuadTOTALS3MSS4 = 0;
    
            numeric qXYTOTALS3MSS1 = 0;
            numeric qXYTOTALS3MSS2 = 0;
            numeric qXYTOTALS3MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS3MSS1 = xTOTALS3MSS1 + pifTOTALS2ETM2arrayRAND[m];
                xTOTALS3MSS2 = xTOTALS3MSS2 + pifTOTALS2ETM3arrayRAND[m];
                xTOTALS3MSS4 = xTOTALS3MSS4 + pifTOTALS2ETM4arrayRAND[m];
    
                xQuadTOTALS3MSS1 = (xQuadTOTALS3MSS1 + (pifTOTALS2ETM2arrayRAND[m]^2));
                xQuadTOTALS3MSS2 = (xQuadTOTALS3MSS2 + (pifTOTALS2ETM3arrayRAND[m]^2));
                xQuadTOTALS3MSS4 = (xQuadTOTALS3MSS4 + (pifTOTALS2ETM4arrayRAND[m]^2));
    
                yTOTALS3MSS1 = yTOTALS3MSS1 + pifTOTALS3MSS1arrayRAND[m];
                yTOTALS3MSS2 = yTOTALS3MSS2 + pifTOTALS3MSS2arrayRAND[m];
                yTOTALS3MSS4 = yTOTALS3MSS4 + pifTOTALS3MSS4arrayRAND[m];
                
                yQuadTOTALS3MSS1 = (yQuadTOTALS3MSS1 + (pifTOTALS3MSS1arrayRAND[m]^2));
                yQuadTOTALS3MSS2 = (yQuadTOTALS3MSS2 + (pifTOTALS3MSS2arrayRAND[m]^2));
                yQuadTOTALS3MSS4 = (yQuadTOTALS3MSS4 + (pifTOTALS3MSS4arrayRAND[m]^2));
    
                xyTOTALS3MSS1 = (xyTOTALS3MSS1 + (pifTOTALS2ETM2arrayRAND[m] * pifTOTALS3MSS1arrayRAND[m]));
                xyTOTALS3MSS2 = (xyTOTALS3MSS2 + (pifTOTALS2ETM3arrayRAND[m] * pifTOTALS3MSS2arrayRAND[m]));
                xyTOTALS3MSS4 = (xyTOTALS3MSS4 + (pifTOTALS2ETM4arrayRAND[m] * pifTOTALS3MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS3MSS1 = xTOTALS3MSS1 / minPifVAL;
            xAritTOTALS3MSS2 = xTOTALS3MSS2 / minPifVAL;
            xAritTOTALS3MSS4 = xTOTALS3MSS4 / minPifVAL;
    
            yAritTOTALS3MSS1 = yTOTALS3MSS1 / minPifVAL;
            yAritTOTALS3MSS2 = yTOTALS3MSS2 / minPifVAL;
            yAritTOTALS3MSS4 = yTOTALS3MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3MSS1 = (xxAritQuadTOTALS3MSS1 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS3MSS1)^2));
                xxAritQuadTOTALS3MSS2 = (xxAritQuadTOTALS3MSS2 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS3MSS2)^2));
                xxAritQuadTOTALS3MSS4 = (xxAritQuadTOTALS3MSS4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS3MSS4)^2));
    
                yyAritQuadTOTALS3MSS1 = (yyAritQuadTOTALS3MSS1 + ((pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)^2));
                yyAritQuadTOTALS3MSS2 = (yyAritQuadTOTALS3MSS2 + ((pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)^2));
                yyAritQuadTOTALS3MSS4 = (yyAritQuadTOTALS3MSS4 + ((pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)^2));
    
                qXYTOTALS3MSS1 = (qXYTOTALS3MSS1 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS3MSS1) * (pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)));
                qXYTOTALS3MSS2 = (qXYTOTALS3MSS2 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS3MSS2) * (pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)));
                qXYTOTALS3MSS4 = (qXYTOTALS3MSS4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS3MSS4) * (pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)));
            }
        
            aTOTALS3MSS1 = (((xQuadTOTALS3MSS1 * yTOTALS3MSS1) - (xTOTALS3MSS1 * xyTOTALS3MSS1)) / ((minPifVAL * xQuadTOTALS3MSS1) - (xTOTALS3MSS1^2)));
            aTOTALS3MSS2 = (((xQuadTOTALS3MSS2 * yTOTALS3MSS2) - (xTOTALS3MSS2 * xyTOTALS3MSS2)) / ((minPifVAL * xQuadTOTALS3MSS2) - (xTOTALS3MSS2^2)));
            aTOTALS3MSS4 = (((xQuadTOTALS3MSS4 * yTOTALS3MSS4) - (xTOTALS3MSS4 * xyTOTALS3MSS4)) / ((minPifVAL * xQuadTOTALS3MSS4) - (xTOTALS3MSS4^2)));
            
            bTOTALS3MSS1 = qXYTOTALS3MSS1 / xxAritQuadTOTALS3MSS1;
            bTOTALS3MSS2 = qXYTOTALS3MSS2 / xxAritQuadTOTALS3MSS2;
            bTOTALS3MSS4 = qXYTOTALS3MSS4 / xxAritQuadTOTALS3MSS4;
    
            rTOTALS3MSS1 = (qXYTOTALS3MSS1 / ((xxAritQuadTOTALS3MSS1 * yyAritQuadTOTALS3MSS1)^0.5));
            rTOTALS3MSS2 = (qXYTOTALS3MSS2 / ((xxAritQuadTOTALS3MSS2 * yyAritQuadTOTALS3MSS2)^0.5));
            rTOTALS3MSS4 = (qXYTOTALS3MSS4 / ((xxAritQuadTOTALS3MSS4 * yyAritQuadTOTALS3MSS4)^0.5));
    
            rQuadTOTALS3MSS1 = ((rTOTALS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3MSS2 = ((rTOTALS3MSS2^2) * 100);
            rQuadTOTALS3MSS4 = ((rTOTALS3MSS4^2) * 100);
        
            syxTOTALS3MSS1 = (((yyAritQuadTOTALS3MSS1 - ((qXYTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS2 = (((yyAritQuadTOTALS3MSS2 - ((qXYTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS4 = (((yyAritQuadTOTALS3MSS4 - ((qXYTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3MSS1 = (((syxTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)^0.5);
            bStandTOTALS3MSS2 = (((syxTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)^0.5);
            bStandTOTALS3MSS4 = (((syxTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)^0.5);
    
            aStandTOTALS3MSS1 = (bStandTOTALS3MSS1 * ((xQuadTOTALS3MSS1 / minPifVAL)^0.5));
            aStandTOTALS3MSS2 = (bStandTOTALS3MSS2 * ((xQuadTOTALS3MSS2 / minPifVAL)^0.5));
            aStandTOTALS3MSS4 = (bStandTOTALS3MSS4 * ((xQuadTOTALS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS1, bTOTALS3MSS1, rTOTALS3MSS1, rQuadTOTALS3MSS1, aStandTOTALS3MSS1, bStandTOTALS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS2, bTOTALS3MSS2, rTOTALS3MSS2, rQuadTOTALS3MSS2, aStandTOTALS3MSS2, bStandTOTALS3MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS4, bTOTALS3MSS4, rTOTALS3MSS4, rQuadTOTALS3MSS4, aStandTOTALS3MSS4, bStandTOTALS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS3MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS3MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS2arrayRAND[minPifVAL]);
        
            printf("MSS4: %12f ", pifTOTALS3MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aTOTALS3MSS1 + (bTOTALS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aTOTALS3MSS2 + (bTOTALS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = REFS3MSS3[i,j];
                    OUT3MSS4[i,j] = (aTOTALS3MSS4 + (bTOTALS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT3MSS1);
        	CreatePyramid(OUT3MSS2);
        	CreatePyramid(OUT3MSS3);
        	CreatePyramid(OUT3MSS4);
        
        	CreateHistogram(OUT3MSS1);
        	CreateHistogram(OUT3MSS2);
        	CreateHistogram(OUT3MSS3);
        	CreateHistogram(OUT3MSS4);
        
        	CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
        
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors4 == 7 )
            {
            numeric xAritTOTALS4ETM1, xAritTOTALS4ETM2, xAritTOTALS4ETM3, xAritTOTALS4ETM4, xAritTOTALS4ETM5, xAritTOTALS4ETM7;
            numeric yAritTOTALS4ETM1, yAritTOTALS4ETM2, yAritTOTALS4ETM3, yAritTOTALS4ETM4, yAritTOTALS4ETM5, yAritTOTALS4ETM7;
    
            numeric aTOTALS4ETM1, aTOTALS4ETM2, aTOTALS4ETM3, aTOTALS4ETM4, aTOTALS4ETM5, aTOTALS4ETM7;
            numeric bTOTALS4ETM1, bTOTALS4ETM2, bTOTALS4ETM3, bTOTALS4ETM4, bTOTALS4ETM5, bTOTALS4ETM7;
            numeric rTOTALS4ETM1, rTOTALS4ETM2, rTOTALS4ETM3, rTOTALS4ETM4, rTOTALS4ETM5, rTOTALS4ETM7;
            numeric rQuadTOTALS4ETM1, rQuadTOTALS4ETM2, rQuadTOTALS4ETM3, rQuadTOTALS4ETM4, rQuadTOTALS4ETM5, rQuadTOTALS4ETM7;
            numeric syxTOTALS4ETM1, syxTOTALS4ETM2, syxTOTALS4ETM3, syxTOTALS4ETM4, syxTOTALS4ETM5, syxTOTALS4ETM7;
            numeric bStandTOTALS4ETM1, bStandTOTALS4ETM2, bStandTOTALS4ETM3, bStandTOTALS4ETM4, bStandTOTALS4ETM5, bStandTOTALS4ETM7;
            numeric aStandTOTALS4ETM1, aStandTOTALS4ETM2, aStandTOTALS4ETM3, aStandTOTALS4ETM4, aStandTOTALS4ETM5, aStandTOTALS4ETM7;
    
            numeric xTOTALS4ETM1 = 0;
            numeric xTOTALS4ETM2 = 0;
            numeric xTOTALS4ETM3 = 0;
            numeric xTOTALS4ETM4 = 0;
            numeric xTOTALS4ETM5 = 0;
            numeric xTOTALS4ETM7 = 0;
    
            numeric xQuadTOTALS4ETM1 = 0;
            numeric xQuadTOTALS4ETM2 = 0;
            numeric xQuadTOTALS4ETM3 = 0;
            numeric xQuadTOTALS4ETM4 = 0;
            numeric xQuadTOTALS4ETM5 = 0;
            numeric xQuadTOTALS4ETM7 = 0;
    
            numeric yTOTALS4ETM1 = 0;
            numeric yTOTALS4ETM2 = 0;
            numeric yTOTALS4ETM3 = 0;
            numeric yTOTALS4ETM4 = 0;
            numeric yTOTALS4ETM5 = 0;
            numeric yTOTALS4ETM7 = 0;
    
            numeric yQuadTOTALS4ETM1 = 0;
            numeric yQuadTOTALS4ETM2 = 0;
            numeric yQuadTOTALS4ETM3 = 0;
            numeric yQuadTOTALS4ETM4 = 0;
            numeric yQuadTOTALS4ETM5 = 0;
            numeric yQuadTOTALS4ETM7 = 0;
    
            numeric xyTOTALS4ETM1 = 0;
            numeric xyTOTALS4ETM2 = 0;
            numeric xyTOTALS4ETM3 = 0;
            numeric xyTOTALS4ETM4 = 0;
            numeric xyTOTALS4ETM5 = 0;
            numeric xyTOTALS4ETM7 = 0;
    
            numeric xxAritQuadTOTALS4ETM1 = 0;
            numeric xxAritQuadTOTALS4ETM2 = 0;
            numeric xxAritQuadTOTALS4ETM3 = 0;
            numeric xxAritQuadTOTALS4ETM4 = 0;
            numeric xxAritQuadTOTALS4ETM5 = 0;
            numeric xxAritQuadTOTALS4ETM7 = 0;
    
            numeric yyAritQuadTOTALS4ETM1 = 0;
            numeric yyAritQuadTOTALS4ETM2 = 0;
            numeric yyAritQuadTOTALS4ETM3 = 0;
            numeric yyAritQuadTOTALS4ETM4 = 0;
            numeric yyAritQuadTOTALS4ETM5 = 0;
            numeric yyAritQuadTOTALS4ETM7 = 0;
    
            numeric qXYTOTALS4ETM1 = 0;
            numeric qXYTOTALS4ETM2 = 0;
            numeric qXYTOTALS4ETM3 = 0;
            numeric qXYTOTALS4ETM4 = 0;
            numeric qXYTOTALS4ETM5 = 0;
            numeric qXYTOTALS4ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS4ETM1 = xTOTALS4ETM1 + pifTOTALS2ETM1arrayRAND[m];
                xTOTALS4ETM2 = xTOTALS4ETM2 + pifTOTALS2ETM2arrayRAND[m];
                xTOTALS4ETM3 = xTOTALS4ETM3 + pifTOTALS2ETM3arrayRAND[m];
                xTOTALS4ETM4 = xTOTALS4ETM4 + pifTOTALS2ETM4arrayRAND[m];
                xTOTALS4ETM5 = xTOTALS4ETM5 + pifTOTALS2ETM5arrayRAND[m];
                xTOTALS4ETM7 = xTOTALS4ETM7 + pifTOTALS2ETM7arrayRAND[m];
    
                xQuadTOTALS4ETM1 = (xQuadTOTALS4ETM1 + (pifTOTALS2ETM1arrayRAND[m]^2));
                xQuadTOTALS4ETM2 = (xQuadTOTALS4ETM2 + (pifTOTALS2ETM2arrayRAND[m]^2));
                xQuadTOTALS4ETM3 = (xQuadTOTALS4ETM3 + (pifTOTALS2ETM3arrayRAND[m]^2));
                xQuadTOTALS4ETM4 = (xQuadTOTALS4ETM4 + (pifTOTALS2ETM4arrayRAND[m]^2));
                xQuadTOTALS4ETM5 = (xQuadTOTALS4ETM5 + (pifTOTALS2ETM5arrayRAND[m]^2));
                xQuadTOTALS4ETM7 = (xQuadTOTALS4ETM7 + (pifTOTALS2ETM7arrayRAND[m]^2));
    
                yTOTALS4ETM1 = yTOTALS4ETM1 + pifTOTALS4ETM1arrayRAND[m];
                yTOTALS4ETM2 = yTOTALS4ETM2 + pifTOTALS4ETM2arrayRAND[m];
                yTOTALS4ETM3 = yTOTALS4ETM3 + pifTOTALS4ETM3arrayRAND[m];
                yTOTALS4ETM4 = yTOTALS4ETM4 + pifTOTALS4ETM4arrayRAND[m];
                yTOTALS4ETM5 = yTOTALS4ETM5 + pifTOTALS4ETM5arrayRAND[m];
                yTOTALS4ETM7 = yTOTALS4ETM7 + pifTOTALS4ETM7arrayRAND[m];
                
                yQuadTOTALS4ETM1 = (yQuadTOTALS4ETM1 + (pifTOTALS4ETM1arrayRAND[m]^2));
                yQuadTOTALS4ETM2 = (yQuadTOTALS4ETM2 + (pifTOTALS4ETM2arrayRAND[m]^2));
                yQuadTOTALS4ETM3 = (yQuadTOTALS4ETM3 + (pifTOTALS4ETM3arrayRAND[m]^2));
                yQuadTOTALS4ETM4 = (yQuadTOTALS4ETM4 + (pifTOTALS4ETM4arrayRAND[m]^2));
                yQuadTOTALS4ETM5 = (yQuadTOTALS4ETM5 + (pifTOTALS4ETM5arrayRAND[m]^2));
                yQuadTOTALS4ETM7 = (yQuadTOTALS4ETM7 + (pifTOTALS4ETM7arrayRAND[m]^2));
    
                xyTOTALS4ETM1 = (xyTOTALS4ETM1 + (pifTOTALS2ETM1arrayRAND[m] * pifTOTALS4ETM1arrayRAND[m]));
                xyTOTALS4ETM2 = (xyTOTALS4ETM2 + (pifTOTALS2ETM2arrayRAND[m] * pifTOTALS4ETM2arrayRAND[m]));
                xyTOTALS4ETM3 = (xyTOTALS4ETM3 + (pifTOTALS2ETM3arrayRAND[m] * pifTOTALS4ETM3arrayRAND[m]));
                xyTOTALS4ETM4 = (xyTOTALS4ETM4 + (pifTOTALS2ETM4arrayRAND[m] * pifTOTALS4ETM4arrayRAND[m]));
                xyTOTALS4ETM5 = (xyTOTALS4ETM5 + (pifTOTALS2ETM5arrayRAND[m] * pifTOTALS4ETM5arrayRAND[m]));
                xyTOTALS4ETM7 = (xyTOTALS4ETM7 + (pifTOTALS2ETM7arrayRAND[m] * pifTOTALS4ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS4ETM1 = xTOTALS4ETM1 / minPifVAL;
            xAritTOTALS4ETM2 = xTOTALS4ETM2 / minPifVAL;
            xAritTOTALS4ETM3 = xTOTALS4ETM3 / minPifVAL;
            xAritTOTALS4ETM4 = xTOTALS4ETM4 / minPifVAL;
            xAritTOTALS4ETM5 = xTOTALS4ETM5 / minPifVAL;
            xAritTOTALS4ETM7 = xTOTALS4ETM7 / minPifVAL;
    
            yAritTOTALS4ETM1 = yTOTALS4ETM1 / minPifVAL;
            yAritTOTALS4ETM2 = yTOTALS4ETM2 / minPifVAL;
            yAritTOTALS4ETM3 = yTOTALS4ETM3 / minPifVAL;
            yAritTOTALS4ETM4 = yTOTALS4ETM4 / minPifVAL;
            yAritTOTALS4ETM5 = yTOTALS4ETM5 / minPifVAL;
            yAritTOTALS4ETM7 = yTOTALS4ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4ETM1 = (xxAritQuadTOTALS4ETM1 + ((pifTOTALS2ETM1arrayRAND[n] - xAritTOTALS4ETM1)^2));
                xxAritQuadTOTALS4ETM2 = (xxAritQuadTOTALS4ETM2 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS4ETM2)^2));
                xxAritQuadTOTALS4ETM3 = (xxAritQuadTOTALS4ETM3 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS4ETM3)^2));
                xxAritQuadTOTALS4ETM4 = (xxAritQuadTOTALS4ETM4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS4ETM4)^2));
                xxAritQuadTOTALS4ETM5 = (xxAritQuadTOTALS4ETM5 + ((pifTOTALS2ETM5arrayRAND[n] - xAritTOTALS4ETM5)^2));
                xxAritQuadTOTALS4ETM7 = (xxAritQuadTOTALS4ETM7 + ((pifTOTALS2ETM7arrayRAND[n] - xAritTOTALS4ETM7)^2));
    
                yyAritQuadTOTALS4ETM1 = (yyAritQuadTOTALS4ETM1 + ((pifTOTALS4ETM1arrayRAND[n] - yAritTOTALS4ETM1)^2));
                yyAritQuadTOTALS4ETM2 = (yyAritQuadTOTALS4ETM2 + ((pifTOTALS4ETM2arrayRAND[n] - yAritTOTALS4ETM2)^2));
                yyAritQuadTOTALS4ETM3 = (yyAritQuadTOTALS4ETM3 + ((pifTOTALS4ETM3arrayRAND[n] - yAritTOTALS4ETM3)^2));
                yyAritQuadTOTALS4ETM4 = (yyAritQuadTOTALS4ETM4 + ((pifTOTALS4ETM4arrayRAND[n] - yAritTOTALS4ETM4)^2));
                yyAritQuadTOTALS4ETM5 = (yyAritQuadTOTALS4ETM5 + ((pifTOTALS4ETM5arrayRAND[n] - yAritTOTALS4ETM5)^2));
                yyAritQuadTOTALS4ETM7 = (yyAritQuadTOTALS4ETM7 + ((pifTOTALS4ETM7arrayRAND[n] - yAritTOTALS4ETM7)^2));
    
                qXYTOTALS4ETM1 = (qXYTOTALS4ETM1 + ((pifTOTALS2ETM1arrayRAND[n] - xAritTOTALS4ETM1) * (pifTOTALS4ETM1arrayRAND[n] - yAritTOTALS4ETM1)));
                qXYTOTALS4ETM2 = (qXYTOTALS4ETM2 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS4ETM2) * (pifTOTALS4ETM2arrayRAND[n] - yAritTOTALS4ETM2)));
                qXYTOTALS4ETM3 = (qXYTOTALS4ETM3 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS4ETM3) * (pifTOTALS4ETM3arrayRAND[n] - yAritTOTALS4ETM3)));
                qXYTOTALS4ETM4 = (qXYTOTALS4ETM4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS4ETM4) * (pifTOTALS4ETM4arrayRAND[n] - yAritTOTALS4ETM4)));
                qXYTOTALS4ETM5 = (qXYTOTALS4ETM5 + ((pifTOTALS2ETM5arrayRAND[n] - xAritTOTALS4ETM5) * (pifTOTALS4ETM5arrayRAND[n] - yAritTOTALS4ETM5)));
                qXYTOTALS4ETM7 = (qXYTOTALS4ETM7 + ((pifTOTALS2ETM7arrayRAND[n] - xAritTOTALS4ETM7) * (pifTOTALS4ETM7arrayRAND[n] - yAritTOTALS4ETM7)));
            }
        
            aTOTALS4ETM1 = (((xQuadTOTALS4ETM1 * yTOTALS4ETM1) - (xTOTALS4ETM1 * xyTOTALS4ETM1)) / ((minPifVAL * xQuadTOTALS4ETM1) - (xTOTALS4ETM1^2)));
            aTOTALS4ETM2 = (((xQuadTOTALS4ETM2 * yTOTALS4ETM2) - (xTOTALS4ETM2 * xyTOTALS4ETM2)) / ((minPifVAL * xQuadTOTALS4ETM2) - (xTOTALS4ETM2^2)));
            aTOTALS4ETM3 = (((xQuadTOTALS4ETM3 * yTOTALS4ETM3) - (xTOTALS4ETM3 * xyTOTALS4ETM3)) / ((minPifVAL * xQuadTOTALS4ETM3) - (xTOTALS4ETM3^2)));
            aTOTALS4ETM4 = (((xQuadTOTALS4ETM4 * yTOTALS4ETM4) - (xTOTALS4ETM4 * xyTOTALS4ETM4)) / ((minPifVAL * xQuadTOTALS4ETM4) - (xTOTALS4ETM4^2)));
            aTOTALS4ETM5 = (((xQuadTOTALS4ETM5 * yTOTALS4ETM5) - (xTOTALS4ETM5 * xyTOTALS4ETM5)) / ((minPifVAL * xQuadTOTALS4ETM5) - (xTOTALS4ETM5^2)));
            aTOTALS4ETM7 = (((xQuadTOTALS4ETM7 * yTOTALS4ETM7) - (xTOTALS4ETM7 * xyTOTALS4ETM7)) / ((minPifVAL * xQuadTOTALS4ETM7) - (xTOTALS4ETM7^2)));
            
            bTOTALS4ETM1 = qXYTOTALS4ETM1 / xxAritQuadTOTALS4ETM1;
            bTOTALS4ETM2 = qXYTOTALS4ETM2 / xxAritQuadTOTALS4ETM2;
            bTOTALS4ETM3 = qXYTOTALS4ETM3 / xxAritQuadTOTALS4ETM3;
            bTOTALS4ETM4 = qXYTOTALS4ETM4 / xxAritQuadTOTALS4ETM4;
            bTOTALS4ETM5 = qXYTOTALS4ETM5 / xxAritQuadTOTALS4ETM5;
            bTOTALS4ETM7 = qXYTOTALS4ETM7 / xxAritQuadTOTALS4ETM7;
    
            rTOTALS4ETM1 = (qXYTOTALS4ETM1 / ((xxAritQuadTOTALS4ETM1 * yyAritQuadTOTALS4ETM1)^0.5));
            rTOTALS4ETM2 = (qXYTOTALS4ETM2 / ((xxAritQuadTOTALS4ETM2 * yyAritQuadTOTALS4ETM2)^0.5));
            rTOTALS4ETM3 = (qXYTOTALS4ETM3 / ((xxAritQuadTOTALS4ETM3 * yyAritQuadTOTALS4ETM3)^0.5));
            rTOTALS4ETM4 = (qXYTOTALS4ETM4 / ((xxAritQuadTOTALS4ETM4 * yyAritQuadTOTALS4ETM4)^0.5));
            rTOTALS4ETM5 = (qXYTOTALS4ETM5 / ((xxAritQuadTOTALS4ETM5 * yyAritQuadTOTALS4ETM5)^0.5));
            rTOTALS4ETM7 = (qXYTOTALS4ETM7 / ((xxAritQuadTOTALS4ETM7 * yyAritQuadTOTALS4ETM7)^0.5));
    
            rQuadTOTALS4ETM1 = ((rTOTALS4ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4ETM2 = ((rTOTALS4ETM2^2) * 100);
            rQuadTOTALS4ETM3 = ((rTOTALS4ETM3^2) * 100);
            rQuadTOTALS4ETM4 = ((rTOTALS4ETM4^2) * 100);
            rQuadTOTALS4ETM5 = ((rTOTALS4ETM5^2) * 100);
            rQuadTOTALS4ETM7 = ((rTOTALS4ETM7^2) * 100);
        
            syxTOTALS4ETM1 = (((yyAritQuadTOTALS4ETM1 - ((qXYTOTALS4ETM1^2) / xxAritQuadTOTALS4ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM2 = (((yyAritQuadTOTALS4ETM2 - ((qXYTOTALS4ETM2^2) / xxAritQuadTOTALS4ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM3 = (((yyAritQuadTOTALS4ETM3 - ((qXYTOTALS4ETM3^2) / xxAritQuadTOTALS4ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM4 = (((yyAritQuadTOTALS4ETM4 - ((qXYTOTALS4ETM4^2) / xxAritQuadTOTALS4ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM5 = (((yyAritQuadTOTALS4ETM5 - ((qXYTOTALS4ETM5^2) / xxAritQuadTOTALS4ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM7 = (((yyAritQuadTOTALS4ETM7 - ((qXYTOTALS4ETM7^2) / xxAritQuadTOTALS4ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4ETM1 = (((syxTOTALS4ETM1^2) / xxAritQuadTOTALS4ETM1)^0.5);
            bStandTOTALS4ETM2 = (((syxTOTALS4ETM2^2) / xxAritQuadTOTALS4ETM2)^0.5);
            bStandTOTALS4ETM3 = (((syxTOTALS4ETM3^2) / xxAritQuadTOTALS4ETM3)^0.5);
            bStandTOTALS4ETM4 = (((syxTOTALS4ETM4^2) / xxAritQuadTOTALS4ETM4)^0.5);
            bStandTOTALS4ETM5 = (((syxTOTALS4ETM5^2) / xxAritQuadTOTALS4ETM5)^0.5);
            bStandTOTALS4ETM7 = (((syxTOTALS4ETM7^2) / xxAritQuadTOTALS4ETM7)^0.5);
    
            aStandTOTALS4ETM1 = (bStandTOTALS4ETM1 * ((xQuadTOTALS4ETM1 / minPifVAL)^0.5));
            aStandTOTALS4ETM2 = (bStandTOTALS4ETM2 * ((xQuadTOTALS4ETM2 / minPifVAL)^0.5));
            aStandTOTALS4ETM3 = (bStandTOTALS4ETM3 * ((xQuadTOTALS4ETM3 / minPifVAL)^0.5));
            aStandTOTALS4ETM4 = (bStandTOTALS4ETM4 * ((xQuadTOTALS4ETM4 / minPifVAL)^0.5));
            aStandTOTALS4ETM5 = (bStandTOTALS4ETM5 * ((xQuadTOTALS4ETM5 / minPifVAL)^0.5));
            aStandTOTALS4ETM7 = (bStandTOTALS4ETM7 * ((xQuadTOTALS4ETM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM1, bTOTALS4ETM1, rTOTALS4ETM1, rQuadTOTALS4ETM1, aStandTOTALS4ETM1, bStandTOTALS4ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM2, bTOTALS4ETM2, rTOTALS4ETM2, rQuadTOTALS4ETM2, aStandTOTALS4ETM2, bStandTOTALS4ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM3, bTOTALS4ETM3, rTOTALS4ETM3, rQuadTOTALS4ETM3, aStandTOTALS4ETM3, bStandTOTALS4ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM4, bTOTALS4ETM4, rTOTALS4ETM4, rQuadTOTALS4ETM4, aStandTOTALS4ETM4, bStandTOTALS4ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM5, bTOTALS4ETM5, rTOTALS4ETM5, rQuadTOTALS4ETM5, aStandTOTALS4ETM5, bStandTOTALS4ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS4ETM7, bTOTALS4ETM7, rTOTALS4ETM7, rQuadTOTALS4ETM7, aStandTOTALS4ETM7, bStandTOTALS4ETM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS4ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS4ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS4ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS4ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS4ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS4ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS4ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT4ETM1[i,j] = (aTOTALS4ETM1 + (bTOTALS4ETM1 * REFS4ETM1[i,j]));
                    OUT4ETM2[i,j] = (aTOTALS4ETM2 + (bTOTALS4ETM2 * REFS4ETM2[i,j]));
                    OUT4ETM3[i,j] = (aTOTALS4ETM3 + (bTOTALS4ETM3 * REFS4ETM3[i,j]));
                    OUT4ETM4[i,j] = (aTOTALS4ETM4 + (bTOTALS4ETM4 * REFS4ETM4[i,j]));
                    OUT4ETM5[i,j] = (aTOTALS4ETM5 + (bTOTALS4ETM5 * REFS4ETM5[i,j]));
                    OUT4ETM7[i,j] = (aTOTALS4ETM7 + (bTOTALS4ETM7 * REFS4ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4ETM1);
        	CreatePyramid(OUT4ETM2);
        	CreatePyramid(OUT4ETM3);
        	CreatePyramid(OUT4ETM4);
        	CreatePyramid(OUT4ETM5);
        	CreatePyramid(OUT4ETM7);
        
        	CreateHistogram(OUT4ETM1);
        	CreateHistogram(OUT4ETM2);
        	CreateHistogram(OUT4ETM3);
        	CreateHistogram(OUT4ETM4);
        	CreateHistogram(OUT4ETM5);
        	CreateHistogram(OUT4ETM7);
        
        	CloseRaster(REFS4ETM1);
            CloseRaster(REFS4ETM2);
            CloseRaster(REFS4ETM3);
            CloseRaster(REFS4ETM4);
            CloseRaster(REFS4ETM5);
            CloseRaster(REFS4ETM7);
    
            CloseRaster(OUT4ETM1);
            CloseRaster(OUT4ETM2);
            CloseRaster(OUT4ETM3);
            CloseRaster(OUT4ETM4);
            CloseRaster(OUT4ETM5);
            CloseRaster(OUT4ETM7);
        
        	printf("Scene 4 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors4 == 6 )
            {
            numeric xAritTOTALS4TM1, xAritTOTALS4TM2, xAritTOTALS4TM3, xAritTOTALS4TM4, xAritTOTALS4TM5, xAritTOTALS4TM7;
            numeric yAritTOTALS4TM1, yAritTOTALS4TM2, yAritTOTALS4TM3, yAritTOTALS4TM4, yAritTOTALS4TM5, yAritTOTALS4TM7;
    
            numeric aTOTALS4TM1, aTOTALS4TM2, aTOTALS4TM3, aTOTALS4TM4, aTOTALS4TM5, aTOTALS4TM7;
            numeric bTOTALS4TM1, bTOTALS4TM2, bTOTALS4TM3, bTOTALS4TM4, bTOTALS4TM5, bTOTALS4TM7;
            numeric rTOTALS4TM1, rTOTALS4TM2, rTOTALS4TM3, rTOTALS4TM4, rTOTALS4TM5, rTOTALS4TM7;
            numeric rQuadTOTALS4TM1, rQuadTOTALS4TM2, rQuadTOTALS4TM3, rQuadTOTALS4TM4, rQuadTOTALS4TM5, rQuadTOTALS4TM7;
            numeric syxTOTALS4TM1, syxTOTALS4TM2, syxTOTALS4TM3, syxTOTALS4TM4, syxTOTALS4TM5, syxTOTALS4TM7;
            numeric bStandTOTALS4TM1, bStandTOTALS4TM2, bStandTOTALS4TM3, bStandTOTALS4TM4, bStandTOTALS4TM5, bStandTOTALS4TM7;
            numeric aStandTOTALS4TM1, aStandTOTALS4TM2, aStandTOTALS4TM3, aStandTOTALS4TM4, aStandTOTALS4TM5, aStandTOTALS4TM7;
    
            numeric xTOTALS4TM1 = 0;
            numeric xTOTALS4TM2 = 0;
            numeric xTOTALS4TM3 = 0;
            numeric xTOTALS4TM4 = 0;
            numeric xTOTALS4TM5 = 0;
            numeric xTOTALS4TM7 = 0;
    
            numeric xQuadTOTALS4TM1 = 0;
            numeric xQuadTOTALS4TM2 = 0;
            numeric xQuadTOTALS4TM3 = 0;
            numeric xQuadTOTALS4TM4 = 0;
            numeric xQuadTOTALS4TM5 = 0;
            numeric xQuadTOTALS4TM7 = 0;
    
            numeric yTOTALS4TM1 = 0;
            numeric yTOTALS4TM2 = 0;
            numeric yTOTALS4TM3 = 0;
            numeric yTOTALS4TM4 = 0;
            numeric yTOTALS4TM5 = 0;
            numeric yTOTALS4TM7 = 0;
    
            numeric yQuadTOTALS4TM1 = 0;
            numeric yQuadTOTALS4TM2 = 0;
            numeric yQuadTOTALS4TM3 = 0;
            numeric yQuadTOTALS4TM4 = 0;
            numeric yQuadTOTALS4TM5 = 0;
            numeric yQuadTOTALS4TM7 = 0;
    
            numeric xyTOTALS4TM1 = 0;
            numeric xyTOTALS4TM2 = 0;
            numeric xyTOTALS4TM3 = 0;
            numeric xyTOTALS4TM4 = 0;
            numeric xyTOTALS4TM5 = 0;
            numeric xyTOTALS4TM7 = 0;
    
            numeric xxAritQuadTOTALS4TM1 = 0;
            numeric xxAritQuadTOTALS4TM2 = 0;
            numeric xxAritQuadTOTALS4TM3 = 0;
            numeric xxAritQuadTOTALS4TM4 = 0;
            numeric xxAritQuadTOTALS4TM5 = 0;
            numeric xxAritQuadTOTALS4TM7 = 0;
    
            numeric yyAritQuadTOTALS4TM1 = 0;
            numeric yyAritQuadTOTALS4TM2 = 0;
            numeric yyAritQuadTOTALS4TM3 = 0;
            numeric yyAritQuadTOTALS4TM4 = 0;
            numeric yyAritQuadTOTALS4TM5 = 0;
            numeric yyAritQuadTOTALS4TM7 = 0;
    
            numeric qXYTOTALS4TM1 = 0;
            numeric qXYTOTALS4TM2 = 0;
            numeric qXYTOTALS4TM3 = 0;
            numeric qXYTOTALS4TM4 = 0;
            numeric qXYTOTALS4TM5 = 0;
            numeric qXYTOTALS4TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS4TM1 = xTOTALS4TM1 + pifTOTALS2ETM1arrayRAND[m];
                xTOTALS4TM2 = xTOTALS4TM2 + pifTOTALS2ETM2arrayRAND[m];
                xTOTALS4TM3 = xTOTALS4TM3 + pifTOTALS2ETM3arrayRAND[m];
                xTOTALS4TM4 = xTOTALS4TM4 + pifTOTALS2ETM4arrayRAND[m];
                xTOTALS4TM5 = xTOTALS4TM5 + pifTOTALS2ETM5arrayRAND[m];
                xTOTALS4TM7 = xTOTALS4TM7 + pifTOTALS2ETM7arrayRAND[m];
    
                xQuadTOTALS4TM1 = (xQuadTOTALS4TM1 + (pifTOTALS2ETM1arrayRAND[m]^2));
                xQuadTOTALS4TM2 = (xQuadTOTALS4TM2 + (pifTOTALS2ETM2arrayRAND[m]^2));
                xQuadTOTALS4TM3 = (xQuadTOTALS4TM3 + (pifTOTALS2ETM3arrayRAND[m]^2));
                xQuadTOTALS4TM4 = (xQuadTOTALS4TM4 + (pifTOTALS2ETM4arrayRAND[m]^2));
                xQuadTOTALS4TM5 = (xQuadTOTALS4TM5 + (pifTOTALS2ETM5arrayRAND[m]^2));
                xQuadTOTALS4TM7 = (xQuadTOTALS4TM7 + (pifTOTALS2ETM7arrayRAND[m]^2));
    
                yTOTALS4TM1 = yTOTALS4TM1 + pifTOTALS4TM1arrayRAND[m];
                yTOTALS4TM2 = yTOTALS4TM2 + pifTOTALS4TM2arrayRAND[m];
                yTOTALS4TM3 = yTOTALS4TM3 + pifTOTALS4TM3arrayRAND[m];
                yTOTALS4TM4 = yTOTALS4TM4 + pifTOTALS4TM4arrayRAND[m];
                yTOTALS4TM5 = yTOTALS4TM5 + pifTOTALS4TM5arrayRAND[m];
                yTOTALS4TM7 = yTOTALS4TM7 + pifTOTALS4TM7arrayRAND[m];
                
                yQuadTOTALS4TM1 = (yQuadTOTALS4TM1 + (pifTOTALS4TM1arrayRAND[m]^2));
                yQuadTOTALS4TM2 = (yQuadTOTALS4TM2 + (pifTOTALS4TM2arrayRAND[m]^2));
                yQuadTOTALS4TM3 = (yQuadTOTALS4TM3 + (pifTOTALS4TM3arrayRAND[m]^2));
                yQuadTOTALS4TM4 = (yQuadTOTALS4TM4 + (pifTOTALS4TM4arrayRAND[m]^2));
                yQuadTOTALS4TM5 = (yQuadTOTALS4TM5 + (pifTOTALS4TM5arrayRAND[m]^2));
                yQuadTOTALS4TM7 = (yQuadTOTALS4TM7 + (pifTOTALS4TM7arrayRAND[m]^2));
    
                xyTOTALS4TM1 = (xyTOTALS4TM1 + (pifTOTALS2ETM1arrayRAND[m] * pifTOTALS4TM1arrayRAND[m]));
                xyTOTALS4TM2 = (xyTOTALS4TM2 + (pifTOTALS2ETM2arrayRAND[m] * pifTOTALS4TM2arrayRAND[m]));
                xyTOTALS4TM3 = (xyTOTALS4TM3 + (pifTOTALS2ETM3arrayRAND[m] * pifTOTALS4TM3arrayRAND[m]));
                xyTOTALS4TM4 = (xyTOTALS4TM4 + (pifTOTALS2ETM4arrayRAND[m] * pifTOTALS4TM4arrayRAND[m]));
                xyTOTALS4TM5 = (xyTOTALS4TM5 + (pifTOTALS2ETM5arrayRAND[m] * pifTOTALS4TM5arrayRAND[m]));
                xyTOTALS4TM7 = (xyTOTALS4TM7 + (pifTOTALS2ETM7arrayRAND[m] * pifTOTALS4TM7arrayRAND[m]));
            }	
            
            xAritTOTALS4TM1 = xTOTALS4TM1 / minPifVAL;
            xAritTOTALS4TM2 = xTOTALS4TM2 / minPifVAL;
            xAritTOTALS4TM3 = xTOTALS4TM3 / minPifVAL;
            xAritTOTALS4TM4 = xTOTALS4TM4 / minPifVAL;
            xAritTOTALS4TM5 = xTOTALS4TM5 / minPifVAL;
            xAritTOTALS4TM7 = xTOTALS4TM7 / minPifVAL;
    
            yAritTOTALS4TM1 = yTOTALS4TM1 / minPifVAL;
            yAritTOTALS4TM2 = yTOTALS4TM2 / minPifVAL;
            yAritTOTALS4TM3 = yTOTALS4TM3 / minPifVAL;
            yAritTOTALS4TM4 = yTOTALS4TM4 / minPifVAL;
            yAritTOTALS4TM5 = yTOTALS4TM5 / minPifVAL;
            yAritTOTALS4TM7 = yTOTALS4TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4TM1 = (xxAritQuadTOTALS4TM1 + ((pifTOTALS2ETM1arrayRAND[n] - xAritTOTALS4TM1)^2));
                xxAritQuadTOTALS4TM2 = (xxAritQuadTOTALS4TM2 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS4TM2)^2));
                xxAritQuadTOTALS4TM3 = (xxAritQuadTOTALS4TM3 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS4TM3)^2));
                xxAritQuadTOTALS4TM4 = (xxAritQuadTOTALS4TM4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS4TM4)^2));
                xxAritQuadTOTALS4TM5 = (xxAritQuadTOTALS4TM5 + ((pifTOTALS2ETM5arrayRAND[n] - xAritTOTALS4TM5)^2));
                xxAritQuadTOTALS4TM7 = (xxAritQuadTOTALS4TM7 + ((pifTOTALS2ETM7arrayRAND[n] - xAritTOTALS4TM7)^2));
    
                yyAritQuadTOTALS4TM1 = (yyAritQuadTOTALS4TM1 + ((pifTOTALS4TM1arrayRAND[n] - yAritTOTALS4TM1)^2));
                yyAritQuadTOTALS4TM2 = (yyAritQuadTOTALS4TM2 + ((pifTOTALS4TM2arrayRAND[n] - yAritTOTALS4TM2)^2));
                yyAritQuadTOTALS4TM3 = (yyAritQuadTOTALS4TM3 + ((pifTOTALS4TM3arrayRAND[n] - yAritTOTALS4TM3)^2));
                yyAritQuadTOTALS4TM4 = (yyAritQuadTOTALS4TM4 + ((pifTOTALS4TM4arrayRAND[n] - yAritTOTALS4TM4)^2));
                yyAritQuadTOTALS4TM5 = (yyAritQuadTOTALS4TM5 + ((pifTOTALS4TM5arrayRAND[n] - yAritTOTALS4TM5)^2));
                yyAritQuadTOTALS4TM7 = (yyAritQuadTOTALS4TM7 + ((pifTOTALS4TM7arrayRAND[n] - yAritTOTALS4TM7)^2));
    
                qXYTOTALS4TM1 = (qXYTOTALS4TM1 + ((pifTOTALS2ETM1arrayRAND[n] - xAritTOTALS4TM1) * (pifTOTALS4TM1arrayRAND[n] - yAritTOTALS4TM1)));
                qXYTOTALS4TM2 = (qXYTOTALS4TM2 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS4TM2) * (pifTOTALS4TM2arrayRAND[n] - yAritTOTALS4TM2)));
                qXYTOTALS4TM3 = (qXYTOTALS4TM3 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS4TM3) * (pifTOTALS4TM3arrayRAND[n] - yAritTOTALS4TM3)));
                qXYTOTALS4TM4 = (qXYTOTALS4TM4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS4TM4) * (pifTOTALS4TM4arrayRAND[n] - yAritTOTALS4TM4)));
                qXYTOTALS4TM5 = (qXYTOTALS4TM5 + ((pifTOTALS2ETM5arrayRAND[n] - xAritTOTALS4TM5) * (pifTOTALS4TM5arrayRAND[n] - yAritTOTALS4TM5)));
                qXYTOTALS4TM7 = (qXYTOTALS4TM7 + ((pifTOTALS2ETM7arrayRAND[n] - xAritTOTALS4TM7) * (pifTOTALS4TM7arrayRAND[n] - yAritTOTALS4TM7)));
            }
        
            aTOTALS4TM1 = (((xQuadTOTALS4TM1 * yTOTALS4TM1) - (xTOTALS4TM1 * xyTOTALS4TM1)) / ((minPifVAL * xQuadTOTALS4TM1) - (xTOTALS4TM1^2)));
            aTOTALS4TM2 = (((xQuadTOTALS4TM2 * yTOTALS4TM2) - (xTOTALS4TM2 * xyTOTALS4TM2)) / ((minPifVAL * xQuadTOTALS4TM2) - (xTOTALS4TM2^2)));
            aTOTALS4TM3 = (((xQuadTOTALS4TM3 * yTOTALS4TM3) - (xTOTALS4TM3 * xyTOTALS4TM3)) / ((minPifVAL * xQuadTOTALS4TM3) - (xTOTALS4TM3^2)));
            aTOTALS4TM4 = (((xQuadTOTALS4TM4 * yTOTALS4TM4) - (xTOTALS4TM4 * xyTOTALS4TM4)) / ((minPifVAL * xQuadTOTALS4TM4) - (xTOTALS4TM4^2)));
            aTOTALS4TM5 = (((xQuadTOTALS4TM5 * yTOTALS4TM5) - (xTOTALS4TM5 * xyTOTALS4TM5)) / ((minPifVAL * xQuadTOTALS4TM5) - (xTOTALS4TM5^2)));
            aTOTALS4TM7 = (((xQuadTOTALS4TM7 * yTOTALS4TM7) - (xTOTALS4TM7 * xyTOTALS4TM7)) / ((minPifVAL * xQuadTOTALS4TM7) - (xTOTALS4TM7^2)));
            
            bTOTALS4TM1 = qXYTOTALS4TM1 / xxAritQuadTOTALS4TM1;
            bTOTALS4TM2 = qXYTOTALS4TM2 / xxAritQuadTOTALS4TM2;
            bTOTALS4TM3 = qXYTOTALS4TM3 / xxAritQuadTOTALS4TM3;
            bTOTALS4TM4 = qXYTOTALS4TM4 / xxAritQuadTOTALS4TM4;
            bTOTALS4TM5 = qXYTOTALS4TM5 / xxAritQuadTOTALS4TM5;
            bTOTALS4TM7 = qXYTOTALS4TM7 / xxAritQuadTOTALS4TM7;
    
            rTOTALS4TM1 = (qXYTOTALS4TM1 / ((xxAritQuadTOTALS4TM1 * yyAritQuadTOTALS4TM1)^0.5));
            rTOTALS4TM2 = (qXYTOTALS4TM2 / ((xxAritQuadTOTALS4TM2 * yyAritQuadTOTALS4TM2)^0.5));
            rTOTALS4TM3 = (qXYTOTALS4TM3 / ((xxAritQuadTOTALS4TM3 * yyAritQuadTOTALS4TM3)^0.5));
            rTOTALS4TM4 = (qXYTOTALS4TM4 / ((xxAritQuadTOTALS4TM4 * yyAritQuadTOTALS4TM4)^0.5));
            rTOTALS4TM5 = (qXYTOTALS4TM5 / ((xxAritQuadTOTALS4TM5 * yyAritQuadTOTALS4TM5)^0.5));
            rTOTALS4TM7 = (qXYTOTALS4TM7 / ((xxAritQuadTOTALS4TM7 * yyAritQuadTOTALS4TM7)^0.5));
    
            rQuadTOTALS4TM1 = ((rTOTALS4TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4TM2 = ((rTOTALS4TM2^2) * 100);
            rQuadTOTALS4TM3 = ((rTOTALS4TM3^2) * 100);
            rQuadTOTALS4TM4 = ((rTOTALS4TM4^2) * 100);
            rQuadTOTALS4TM5 = ((rTOTALS4TM5^2) * 100);
            rQuadTOTALS4TM7 = ((rTOTALS4TM7^2) * 100);
        
            syxTOTALS4TM1 = (((yyAritQuadTOTALS4TM1 - ((qXYTOTALS4TM1^2) / xxAritQuadTOTALS4TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM2 = (((yyAritQuadTOTALS4TM2 - ((qXYTOTALS4TM2^2) / xxAritQuadTOTALS4TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM3 = (((yyAritQuadTOTALS4TM3 - ((qXYTOTALS4TM3^2) / xxAritQuadTOTALS4TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM4 = (((yyAritQuadTOTALS4TM4 - ((qXYTOTALS4TM4^2) / xxAritQuadTOTALS4TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM5 = (((yyAritQuadTOTALS4TM5 - ((qXYTOTALS4TM5^2) / xxAritQuadTOTALS4TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM7 = (((yyAritQuadTOTALS4TM7 - ((qXYTOTALS4TM7^2) / xxAritQuadTOTALS4TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4TM1 = (((syxTOTALS4TM1^2) / xxAritQuadTOTALS4TM1)^0.5);
            bStandTOTALS4TM2 = (((syxTOTALS4TM2^2) / xxAritQuadTOTALS4TM2)^0.5);
            bStandTOTALS4TM3 = (((syxTOTALS4TM3^2) / xxAritQuadTOTALS4TM3)^0.5);
            bStandTOTALS4TM4 = (((syxTOTALS4TM4^2) / xxAritQuadTOTALS4TM4)^0.5);
            bStandTOTALS4TM5 = (((syxTOTALS4TM5^2) / xxAritQuadTOTALS4TM5)^0.5);
            bStandTOTALS4TM7 = (((syxTOTALS4TM7^2) / xxAritQuadTOTALS4TM7)^0.5);
    
            aStandTOTALS4TM1 = (bStandTOTALS4TM1 * ((xQuadTOTALS4TM1 / minPifVAL)^0.5));
            aStandTOTALS4TM2 = (bStandTOTALS4TM2 * ((xQuadTOTALS4TM2 / minPifVAL)^0.5));
            aStandTOTALS4TM3 = (bStandTOTALS4TM3 * ((xQuadTOTALS4TM3 / minPifVAL)^0.5));
            aStandTOTALS4TM4 = (bStandTOTALS4TM4 * ((xQuadTOTALS4TM4 / minPifVAL)^0.5));
            aStandTOTALS4TM5 = (bStandTOTALS4TM5 * ((xQuadTOTALS4TM5 / minPifVAL)^0.5));
            aStandTOTALS4TM7 = (bStandTOTALS4TM7 * ((xQuadTOTALS4TM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM1, bTOTALS4TM1, rTOTALS4TM1, rQuadTOTALS4TM1, aStandTOTALS4TM1, bStandTOTALS4TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM2, bTOTALS4TM2, rTOTALS4TM2, rQuadTOTALS4TM2, aStandTOTALS4TM2, bStandTOTALS4TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM3, bTOTALS4TM3, rTOTALS4TM3, rQuadTOTALS4TM3, aStandTOTALS4TM3, bStandTOTALS4TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM4, bTOTALS4TM4, rTOTALS4TM4, rQuadTOTALS4TM4, aStandTOTALS4TM4, bStandTOTALS4TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM5, bTOTALS4TM5, rTOTALS4TM5, rQuadTOTALS4TM5, aStandTOTALS4TM5, bStandTOTALS4TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS4TM7, bTOTALS4TM7, rTOTALS4TM7, rQuadTOTALS4TM7, aStandTOTALS4TM7, bStandTOTALS4TM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS4TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS4TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS4TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS4TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS4TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS4TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS4TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT4TM1[i,j] = (aTOTALS4TM1 + (bTOTALS4TM1 * REFS4TM1[i,j]));
                    OUT4TM2[i,j] = (aTOTALS4TM2 + (bTOTALS4TM2 * REFS4TM2[i,j]));
                    OUT4TM3[i,j] = (aTOTALS4TM3 + (bTOTALS4TM3 * REFS4TM3[i,j]));
                    OUT4TM4[i,j] = (aTOTALS4TM4 + (bTOTALS4TM4 * REFS4TM4[i,j]));
                    OUT4TM5[i,j] = (aTOTALS4TM5 + (bTOTALS4TM5 * REFS4TM5[i,j]));
                    OUT4TM7[i,j] = (aTOTALS4TM7 + (bTOTALS4TM7 * REFS4TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4TM1);
        	CreatePyramid(OUT4TM2);
        	CreatePyramid(OUT4TM3);
        	CreatePyramid(OUT4TM4);
        	CreatePyramid(OUT4TM5);
        	CreatePyramid(OUT4TM7);
        
        	CreateHistogram(OUT4TM1);
        	CreateHistogram(OUT4TM2);
        	CreateHistogram(OUT4TM3);
        	CreateHistogram(OUT4TM4);
        	CreateHistogram(OUT4TM5);
        	CreateHistogram(OUT4TM7);
        
        	CloseRaster(REFS4TM1);
            CloseRaster(REFS4TM2);
            CloseRaster(REFS4TM3);
            CloseRaster(REFS4TM4);
            CloseRaster(REFS4TM5);
            CloseRaster(REFS4TM7);
    
            CloseRaster(OUT4TM1);
            CloseRaster(OUT4TM2);
            CloseRaster(OUT4TM3);
            CloseRaster(OUT4TM4);
            CloseRaster(OUT4TM5);
            CloseRaster(OUT4TM7);
        
        	printf("Scene 4 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS4MSS1, xAritTOTALS4MSS2, xAritTOTALS4MSS4;
            numeric yAritTOTALS4MSS1, yAritTOTALS4MSS2, yAritTOTALS4MSS4;
    
            numeric aTOTALS4MSS1, aTOTALS4MSS2, aTOTALS4MSS4;
            numeric bTOTALS4MSS1, bTOTALS4MSS2, bTOTALS4MSS4;
            numeric rTOTALS4MSS1, rTOTALS4MSS2, rTOTALS4MSS4;
            numeric rQuadTOTALS4MSS1, rQuadTOTALS4MSS2, rQuadTOTALS4MSS4;
            numeric syxTOTALS4MSS1, syxTOTALS4MSS2, syxTOTALS4MSS4;
            numeric bStandTOTALS4MSS1, bStandTOTALS4MSS2, bStandTOTALS4MSS4;
            numeric aStandTOTALS4MSS1, aStandTOTALS4MSS2, aStandTOTALS4MSS4;
    
            numeric xTOTALS4MSS1 = 0;
            numeric xTOTALS4MSS2 = 0;
            numeric xTOTALS4MSS4 = 0;
    
            numeric xQuadTOTALS4MSS1 = 0;
            numeric xQuadTOTALS4MSS2 = 0;
            numeric xQuadTOTALS4MSS4 = 0;
    
            numeric yTOTALS4MSS1 = 0;
            numeric yTOTALS4MSS2 = 0;
            numeric yTOTALS4MSS4 = 0;
    
            numeric yQuadTOTALS4MSS1 = 0;
            numeric yQuadTOTALS4MSS2 = 0;
            numeric yQuadTOTALS4MSS4 = 0;
    
            numeric xyTOTALS4MSS1 = 0;
            numeric xyTOTALS4MSS2 = 0;
            numeric xyTOTALS4MSS4 = 0;
    
            numeric xxAritQuadTOTALS4MSS1 = 0;
            numeric xxAritQuadTOTALS4MSS2 = 0;
            numeric xxAritQuadTOTALS4MSS4 = 0;
    
            numeric yyAritQuadTOTALS4MSS1 = 0;
            numeric yyAritQuadTOTALS4MSS2 = 0;
            numeric yyAritQuadTOTALS4MSS4 = 0;
    
            numeric qXYTOTALS4MSS1 = 0;
            numeric qXYTOTALS4MSS2 = 0;
            numeric qXYTOTALS4MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS4MSS1 = xTOTALS4MSS1 + pifTOTALS2ETM2arrayRAND[m];
                xTOTALS4MSS2 = xTOTALS4MSS2 + pifTOTALS2ETM3arrayRAND[m];
                xTOTALS4MSS4 = xTOTALS4MSS4 + pifTOTALS2ETM4arrayRAND[m];
    
                xQuadTOTALS4MSS1 = (xQuadTOTALS4MSS1 + (pifTOTALS2ETM2arrayRAND[m]^2));
                xQuadTOTALS4MSS2 = (xQuadTOTALS4MSS2 + (pifTOTALS2ETM3arrayRAND[m]^2));
                xQuadTOTALS4MSS4 = (xQuadTOTALS4MSS4 + (pifTOTALS2ETM4arrayRAND[m]^2));
    
                yTOTALS4MSS1 = yTOTALS4MSS1 + pifTOTALS4MSS1arrayRAND[m];
                yTOTALS4MSS2 = yTOTALS4MSS2 + pifTOTALS4MSS2arrayRAND[m];
                yTOTALS4MSS4 = yTOTALS4MSS4 + pifTOTALS4MSS4arrayRAND[m];
                
                yQuadTOTALS4MSS1 = (yQuadTOTALS4MSS1 + (pifTOTALS4MSS1arrayRAND[m]^2));
                yQuadTOTALS4MSS2 = (yQuadTOTALS4MSS2 + (pifTOTALS4MSS2arrayRAND[m]^2));
                yQuadTOTALS4MSS4 = (yQuadTOTALS4MSS4 + (pifTOTALS4MSS4arrayRAND[m]^2));
    
                xyTOTALS4MSS1 = (xyTOTALS4MSS1 + (pifTOTALS2ETM2arrayRAND[m] * pifTOTALS4MSS1arrayRAND[m]));
                xyTOTALS4MSS2 = (xyTOTALS4MSS2 + (pifTOTALS2ETM3arrayRAND[m] * pifTOTALS4MSS2arrayRAND[m]));
                xyTOTALS4MSS4 = (xyTOTALS4MSS4 + (pifTOTALS2ETM4arrayRAND[m] * pifTOTALS4MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS4MSS1 = xTOTALS4MSS1 / minPifVAL;
            xAritTOTALS4MSS2 = xTOTALS4MSS2 / minPifVAL;
            xAritTOTALS4MSS4 = xTOTALS4MSS4 / minPifVAL;
    
            yAritTOTALS4MSS1 = yTOTALS4MSS1 / minPifVAL;
            yAritTOTALS4MSS2 = yTOTALS4MSS2 / minPifVAL;
            yAritTOTALS4MSS4 = yTOTALS4MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4MSS1 = (xxAritQuadTOTALS4MSS1 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS4MSS1)^2));
                xxAritQuadTOTALS4MSS2 = (xxAritQuadTOTALS4MSS2 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS4MSS2)^2));
                xxAritQuadTOTALS4MSS4 = (xxAritQuadTOTALS4MSS4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS4MSS4)^2));
    
                yyAritQuadTOTALS4MSS1 = (yyAritQuadTOTALS4MSS1 + ((pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)^2));
                yyAritQuadTOTALS4MSS2 = (yyAritQuadTOTALS4MSS2 + ((pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)^2));
                yyAritQuadTOTALS4MSS4 = (yyAritQuadTOTALS4MSS4 + ((pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)^2));
    
                qXYTOTALS4MSS1 = (qXYTOTALS4MSS1 + ((pifTOTALS2ETM2arrayRAND[n] - xAritTOTALS4MSS1) * (pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)));
                qXYTOTALS4MSS2 = (qXYTOTALS4MSS2 + ((pifTOTALS2ETM3arrayRAND[n] - xAritTOTALS4MSS2) * (pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)));
                qXYTOTALS4MSS4 = (qXYTOTALS4MSS4 + ((pifTOTALS2ETM4arrayRAND[n] - xAritTOTALS4MSS4) * (pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)));
            }
        
            aTOTALS4MSS1 = (((xQuadTOTALS4MSS1 * yTOTALS4MSS1) - (xTOTALS4MSS1 * xyTOTALS4MSS1)) / ((minPifVAL * xQuadTOTALS4MSS1) - (xTOTALS4MSS1^2)));
            aTOTALS4MSS2 = (((xQuadTOTALS4MSS2 * yTOTALS4MSS2) - (xTOTALS4MSS2 * xyTOTALS4MSS2)) / ((minPifVAL * xQuadTOTALS4MSS2) - (xTOTALS4MSS2^2)));
            aTOTALS4MSS4 = (((xQuadTOTALS4MSS4 * yTOTALS4MSS4) - (xTOTALS4MSS4 * xyTOTALS4MSS4)) / ((minPifVAL * xQuadTOTALS4MSS4) - (xTOTALS4MSS4^2)));
            
            bTOTALS4MSS1 = qXYTOTALS4MSS1 / xxAritQuadTOTALS4MSS1;
            bTOTALS4MSS2 = qXYTOTALS4MSS2 / xxAritQuadTOTALS4MSS2;
            bTOTALS4MSS4 = qXYTOTALS4MSS4 / xxAritQuadTOTALS4MSS4;
    
            rTOTALS4MSS1 = (qXYTOTALS4MSS1 / ((xxAritQuadTOTALS4MSS1 * yyAritQuadTOTALS4MSS1)^0.5));
            rTOTALS4MSS2 = (qXYTOTALS4MSS2 / ((xxAritQuadTOTALS4MSS2 * yyAritQuadTOTALS4MSS2)^0.5));
            rTOTALS4MSS4 = (qXYTOTALS4MSS4 / ((xxAritQuadTOTALS4MSS4 * yyAritQuadTOTALS4MSS4)^0.5));
    
            rQuadTOTALS4MSS1 = ((rTOTALS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4MSS2 = ((rTOTALS4MSS2^2) * 100);
            rQuadTOTALS4MSS4 = ((rTOTALS4MSS4^2) * 100);
        
            syxTOTALS4MSS1 = (((yyAritQuadTOTALS4MSS1 - ((qXYTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS2 = (((yyAritQuadTOTALS4MSS2 - ((qXYTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS4 = (((yyAritQuadTOTALS4MSS4 - ((qXYTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4MSS1 = (((syxTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)^0.5);
            bStandTOTALS4MSS2 = (((syxTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)^0.5);
            bStandTOTALS4MSS4 = (((syxTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)^0.5);
    
            aStandTOTALS4MSS1 = (bStandTOTALS4MSS1 * ((xQuadTOTALS4MSS1 / minPifVAL)^0.5));
            aStandTOTALS4MSS2 = (bStandTOTALS4MSS2 * ((xQuadTOTALS4MSS2 / minPifVAL)^0.5));
            aStandTOTALS4MSS4 = (bStandTOTALS4MSS4 * ((xQuadTOTALS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS1, bTOTALS4MSS1, rTOTALS4MSS1, rQuadTOTALS4MSS1, aStandTOTALS4MSS1, bStandTOTALS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS2, bTOTALS4MSS2, rTOTALS4MSS2, rQuadTOTALS4MSS2, aStandTOTALS4MSS2, bStandTOTALS4MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS4, bTOTALS4MSS4, rTOTALS4MSS4, rQuadTOTALS4MSS4, aStandTOTALS4MSS4, bStandTOTALS4MSS4);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS4MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS4MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS2arrayRAND[minPifVAL]);
        
            printf("MSS4: %12f ", pifTOTALS4MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aTOTALS4MSS1 + (bTOTALS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aTOTALS4MSS2 + (bTOTALS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = REFS4MSS3[i,j];
                    OUT4MSS4[i,j] = (aTOTALS4MSS4 + (bTOTALS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT4MSS1);
        	CreatePyramid(OUT4MSS2);
        	CreatePyramid(OUT4MSS3);
        	CreatePyramid(OUT4MSS4);
        
        	CreateHistogram(OUT4MSS1);
        	CreateHistogram(OUT4MSS2);
        	CreateHistogram(OUT4MSS3);
        	CreateHistogram(OUT4MSS4);
        
        	CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }   
        }
        
        else if ( sensors2 == 6 )
        {
        printf("Scene 2 - Master Scene (TM):\n");
        printf("Scene 2 array values used for regression computation:\n");
    
        printf("TM1: %12f ", pifTOTALS2TM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS2TM1arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS2TM1arrayRAND[minPifVAL]);
    
        printf("TM2: %12f ", pifTOTALS2TM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS2TM2arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS2TM2arrayRAND[minPifVAL]);
    
        printf("TM3: %12f ", pifTOTALS2TM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS2TM3arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS2TM3arrayRAND[minPifVAL]);
    
        printf("TM4: %12f ", pifTOTALS2TM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS2TM4arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS2TM4arrayRAND[minPifVAL]);
    
        printf("TM5: %12f ", pifTOTALS2TM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS2TM5arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS2TM5arrayRAND[minPifVAL]);
    
        printf("TM7: %12f ", pifTOTALS2TM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS2TM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifTOTALS2TM7arrayRAND[minPifVAL]);
                  
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                OUT2TM1[i,j] = REFS2TM1[i,j];
                OUT2TM2[i,j] = REFS2TM2[i,j];
                OUT2TM3[i,j] = REFS2TM3[i,j];
                OUT2TM4[i,j] = REFS2TM4[i,j];
                OUT2TM5[i,j] = REFS2TM5[i,j];
                OUT2TM7[i,j] = REFS2TM7[i,j];
                }
            }
        
        CreatePyramid(OUT2TM1);
        CreatePyramid(OUT2TM2);
        CreatePyramid(OUT2TM3);
        CreatePyramid(OUT2TM4);
        CreatePyramid(OUT2TM5);
        CreatePyramid(OUT2TM7);
    
        CreateHistogram(OUT2TM1);
        CreateHistogram(OUT2TM2);
        CreateHistogram(OUT2TM3);
        CreateHistogram(OUT2TM4);
        CreateHistogram(OUT2TM5);
        CreateHistogram(OUT2TM7);
        
        CloseRaster(REFS2TM1);
        CloseRaster(REFS2TM2);
        CloseRaster(REFS2TM3);
        CloseRaster(REFS2TM4);
        CloseRaster(REFS2TM5);
        CloseRaster(REFS2TM7);
        CloseRaster(OUT2TM1);
        CloseRaster(OUT2TM2);
        CloseRaster(OUT2TM3);
        CloseRaster(OUT2TM4);
        CloseRaster(OUT2TM5);
        CloseRaster(OUT2TM7);
    
        printf("Scene 2 (Master) output was written, histogram created and pyramid written\n\n\n");
        
            if ( sensors1 == 7 )
            {
            numeric xAritTOTALS1ETM1, xAritTOTALS1ETM2, xAritTOTALS1ETM3, xAritTOTALS1ETM4, xAritTOTALS1ETM5, xAritTOTALS1ETM7;
            numeric yAritTOTALS1ETM1, yAritTOTALS1ETM2, yAritTOTALS1ETM3, yAritTOTALS1ETM4, yAritTOTALS1ETM5, yAritTOTALS1ETM7;
    
            numeric aTOTALS1ETM1, aTOTALS1ETM2, aTOTALS1ETM3, aTOTALS1ETM4, aTOTALS1ETM5, aTOTALS1ETM7;
            numeric bTOTALS1ETM1, bTOTALS1ETM2, bTOTALS1ETM3, bTOTALS1ETM4, bTOTALS1ETM5, bTOTALS1ETM7;
            numeric rTOTALS1ETM1, rTOTALS1ETM2, rTOTALS1ETM3, rTOTALS1ETM4, rTOTALS1ETM5, rTOTALS1ETM7;
            numeric rQuadTOTALS1ETM1, rQuadTOTALS1ETM2, rQuadTOTALS1ETM3, rQuadTOTALS1ETM4, rQuadTOTALS1ETM5, rQuadTOTALS1ETM7;
            numeric syxTOTALS1ETM1, syxTOTALS1ETM2, syxTOTALS1ETM3, syxTOTALS1ETM4, syxTOTALS1ETM5, syxTOTALS1ETM7;
            numeric bStandTOTALS1ETM1, bStandTOTALS1ETM2, bStandTOTALS1ETM3, bStandTOTALS1ETM4, bStandTOTALS1ETM5, bStandTOTALS1ETM7;
            numeric aStandTOTALS1ETM1, aStandTOTALS1ETM2, aStandTOTALS1ETM3, aStandTOTALS1ETM4, aStandTOTALS1ETM5, aStandTOTALS1ETM7;
    
            numeric xTOTALS1ETM1 = 0;
            numeric xTOTALS1ETM2 = 0;
            numeric xTOTALS1ETM3 = 0;
            numeric xTOTALS1ETM4 = 0;
            numeric xTOTALS1ETM5 = 0;
            numeric xTOTALS1ETM7 = 0;
    
            numeric xQuadTOTALS1ETM1 = 0;
            numeric xQuadTOTALS1ETM2 = 0;
            numeric xQuadTOTALS1ETM3 = 0;
            numeric xQuadTOTALS1ETM4 = 0;
            numeric xQuadTOTALS1ETM5 = 0;
            numeric xQuadTOTALS1ETM7 = 0;
    
            numeric yTOTALS1ETM1 = 0;
            numeric yTOTALS1ETM2 = 0;
            numeric yTOTALS1ETM3 = 0;
            numeric yTOTALS1ETM4 = 0;
            numeric yTOTALS1ETM5 = 0;
            numeric yTOTALS1ETM7 = 0;
    
            numeric yQuadTOTALS1ETM1 = 0;
            numeric yQuadTOTALS1ETM2 = 0;
            numeric yQuadTOTALS1ETM3 = 0;
            numeric yQuadTOTALS1ETM4 = 0;
            numeric yQuadTOTALS1ETM5 = 0;
            numeric yQuadTOTALS1ETM7 = 0;
    
            numeric xyTOTALS1ETM1 = 0;
            numeric xyTOTALS1ETM2 = 0;
            numeric xyTOTALS1ETM3 = 0;
            numeric xyTOTALS1ETM4 = 0;
            numeric xyTOTALS1ETM5 = 0;
            numeric xyTOTALS1ETM7 = 0;
    
            numeric xxAritQuadTOTALS1ETM1 = 0;
            numeric xxAritQuadTOTALS1ETM2 = 0;
            numeric xxAritQuadTOTALS1ETM3 = 0;
            numeric xxAritQuadTOTALS1ETM4 = 0;
            numeric xxAritQuadTOTALS1ETM5 = 0;
            numeric xxAritQuadTOTALS1ETM7 = 0;
    
            numeric yyAritQuadTOTALS1ETM1 = 0;
            numeric yyAritQuadTOTALS1ETM2 = 0;
            numeric yyAritQuadTOTALS1ETM3 = 0;
            numeric yyAritQuadTOTALS1ETM4 = 0;
            numeric yyAritQuadTOTALS1ETM5 = 0;
            numeric yyAritQuadTOTALS1ETM7 = 0;
    
            numeric qXYTOTALS1ETM1 = 0;
            numeric qXYTOTALS1ETM2 = 0;
            numeric qXYTOTALS1ETM3 = 0;
            numeric qXYTOTALS1ETM4 = 0;
            numeric qXYTOTALS1ETM5 = 0;
            numeric qXYTOTALS1ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS1ETM1 = xTOTALS1ETM1 + pifTOTALS2TM1arrayRAND[m];
                xTOTALS1ETM2 = xTOTALS1ETM2 + pifTOTALS2TM2arrayRAND[m];
                xTOTALS1ETM3 = xTOTALS1ETM3 + pifTOTALS2TM3arrayRAND[m];
                xTOTALS1ETM4 = xTOTALS1ETM4 + pifTOTALS2TM4arrayRAND[m];
                xTOTALS1ETM5 = xTOTALS1ETM5 + pifTOTALS2TM5arrayRAND[m];
                xTOTALS1ETM7 = xTOTALS1ETM7 + pifTOTALS2TM7arrayRAND[m];
    
                xQuadTOTALS1ETM1 = (xQuadTOTALS1ETM1 + (pifTOTALS2TM1arrayRAND[m]^2));
                xQuadTOTALS1ETM2 = (xQuadTOTALS1ETM2 + (pifTOTALS2TM2arrayRAND[m]^2));
                xQuadTOTALS1ETM3 = (xQuadTOTALS1ETM3 + (pifTOTALS2TM3arrayRAND[m]^2));
                xQuadTOTALS1ETM4 = (xQuadTOTALS1ETM4 + (pifTOTALS2TM4arrayRAND[m]^2));
                xQuadTOTALS1ETM5 = (xQuadTOTALS1ETM5 + (pifTOTALS2TM5arrayRAND[m]^2));
                xQuadTOTALS1ETM7 = (xQuadTOTALS1ETM7 + (pifTOTALS2TM7arrayRAND[m]^2));
    
                yTOTALS1ETM1 = yTOTALS1ETM1 + pifTOTALS1ETM1arrayRAND[m];
                yTOTALS1ETM2 = yTOTALS1ETM2 + pifTOTALS1ETM2arrayRAND[m];
                yTOTALS1ETM3 = yTOTALS1ETM3 + pifTOTALS1ETM3arrayRAND[m];
                yTOTALS1ETM4 = yTOTALS1ETM4 + pifTOTALS1ETM4arrayRAND[m];
                yTOTALS1ETM5 = yTOTALS1ETM5 + pifTOTALS1ETM5arrayRAND[m];
                yTOTALS1ETM7 = yTOTALS1ETM7 + pifTOTALS1ETM7arrayRAND[m];
                
                yQuadTOTALS1ETM1 = (yQuadTOTALS1ETM1 + (pifTOTALS1ETM1arrayRAND[m]^2));
                yQuadTOTALS1ETM2 = (yQuadTOTALS1ETM2 + (pifTOTALS1ETM2arrayRAND[m]^2));
                yQuadTOTALS1ETM3 = (yQuadTOTALS1ETM3 + (pifTOTALS1ETM3arrayRAND[m]^2));
                yQuadTOTALS1ETM4 = (yQuadTOTALS1ETM4 + (pifTOTALS1ETM4arrayRAND[m]^2));
                yQuadTOTALS1ETM5 = (yQuadTOTALS1ETM5 + (pifTOTALS1ETM5arrayRAND[m]^2));
                yQuadTOTALS1ETM7 = (yQuadTOTALS1ETM7 + (pifTOTALS1ETM7arrayRAND[m]^2));
    
                xyTOTALS1ETM1 = (xyTOTALS1ETM1 + (pifTOTALS2TM1arrayRAND[m] * pifTOTALS1ETM1arrayRAND[m]));
                xyTOTALS1ETM2 = (xyTOTALS1ETM2 + (pifTOTALS2TM2arrayRAND[m] * pifTOTALS1ETM2arrayRAND[m]));
                xyTOTALS1ETM3 = (xyTOTALS1ETM3 + (pifTOTALS2TM3arrayRAND[m] * pifTOTALS1ETM3arrayRAND[m]));
                xyTOTALS1ETM4 = (xyTOTALS1ETM4 + (pifTOTALS2TM4arrayRAND[m] * pifTOTALS1ETM4arrayRAND[m]));
                xyTOTALS1ETM5 = (xyTOTALS1ETM5 + (pifTOTALS2TM5arrayRAND[m] * pifTOTALS1ETM5arrayRAND[m]));
                xyTOTALS1ETM7 = (xyTOTALS1ETM7 + (pifTOTALS2TM7arrayRAND[m] * pifTOTALS1ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS1ETM1 = xTOTALS1ETM1 / minPifVAL;
            xAritTOTALS1ETM2 = xTOTALS1ETM2 / minPifVAL;
            xAritTOTALS1ETM3 = xTOTALS1ETM3 / minPifVAL;
            xAritTOTALS1ETM4 = xTOTALS1ETM4 / minPifVAL;
            xAritTOTALS1ETM5 = xTOTALS1ETM5 / minPifVAL;
            xAritTOTALS1ETM7 = xTOTALS1ETM7 / minPifVAL;
    
            yAritTOTALS1ETM1 = yTOTALS1ETM1 / minPifVAL;
            yAritTOTALS1ETM2 = yTOTALS1ETM2 / minPifVAL;
            yAritTOTALS1ETM3 = yTOTALS1ETM3 / minPifVAL;
            yAritTOTALS1ETM4 = yTOTALS1ETM4 / minPifVAL;
            yAritTOTALS1ETM5 = yTOTALS1ETM5 / minPifVAL;
            yAritTOTALS1ETM7 = yTOTALS1ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1ETM1 = (xxAritQuadTOTALS1ETM1 + ((pifTOTALS2TM1arrayRAND[n] - xAritTOTALS1ETM1)^2));
                xxAritQuadTOTALS1ETM2 = (xxAritQuadTOTALS1ETM2 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS1ETM2)^2));
                xxAritQuadTOTALS1ETM3 = (xxAritQuadTOTALS1ETM3 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS1ETM3)^2));
                xxAritQuadTOTALS1ETM4 = (xxAritQuadTOTALS1ETM4 + ((pifTOTALS2TM4arrayRAND[n] - xAritTOTALS1ETM4)^2));
                xxAritQuadTOTALS1ETM5 = (xxAritQuadTOTALS1ETM5 + ((pifTOTALS2TM5arrayRAND[n] - xAritTOTALS1ETM5)^2));
                xxAritQuadTOTALS1ETM7 = (xxAritQuadTOTALS1ETM7 + ((pifTOTALS2TM7arrayRAND[n] - xAritTOTALS1ETM7)^2));
    
                yyAritQuadTOTALS1ETM1 = (yyAritQuadTOTALS1ETM1 + ((pifTOTALS1ETM1arrayRAND[n] - yAritTOTALS1ETM1)^2));
                yyAritQuadTOTALS1ETM2 = (yyAritQuadTOTALS1ETM2 + ((pifTOTALS1ETM2arrayRAND[n] - yAritTOTALS1ETM2)^2));
                yyAritQuadTOTALS1ETM3 = (yyAritQuadTOTALS1ETM3 + ((pifTOTALS1ETM3arrayRAND[n] - yAritTOTALS1ETM3)^2));
                yyAritQuadTOTALS1ETM4 = (yyAritQuadTOTALS1ETM4 + ((pifTOTALS1ETM4arrayRAND[n] - yAritTOTALS1ETM4)^2));
                yyAritQuadTOTALS1ETM5 = (yyAritQuadTOTALS1ETM5 + ((pifTOTALS1ETM5arrayRAND[n] - yAritTOTALS1ETM5)^2));
                yyAritQuadTOTALS1ETM7 = (yyAritQuadTOTALS1ETM7 + ((pifTOTALS1ETM7arrayRAND[n] - yAritTOTALS1ETM7)^2));
    
                qXYTOTALS1ETM1 = (qXYTOTALS1ETM1 + ((pifTOTALS2TM1arrayRAND[n] - xAritTOTALS1ETM1) * (pifTOTALS1ETM1arrayRAND[n] - yAritTOTALS1ETM1)));
                qXYTOTALS1ETM2 = (qXYTOTALS1ETM2 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS1ETM2) * (pifTOTALS1ETM2arrayRAND[n] - yAritTOTALS1ETM2)));
                qXYTOTALS1ETM3 = (qXYTOTALS1ETM3 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS1ETM3) * (pifTOTALS1ETM3arrayRAND[n] - yAritTOTALS1ETM3)));
                qXYTOTALS1ETM4 = (qXYTOTALS1ETM4 + ((pifTOTALS2TM4arrayRAND[n] - xAritTOTALS1ETM4) * (pifTOTALS1ETM4arrayRAND[n] - yAritTOTALS1ETM4)));
                qXYTOTALS1ETM5 = (qXYTOTALS1ETM5 + ((pifTOTALS2TM5arrayRAND[n] - xAritTOTALS1ETM5) * (pifTOTALS1ETM5arrayRAND[n] - yAritTOTALS1ETM5)));
                qXYTOTALS1ETM7 = (qXYTOTALS1ETM7 + ((pifTOTALS2TM7arrayRAND[n] - xAritTOTALS1ETM7) * (pifTOTALS1ETM7arrayRAND[n] - yAritTOTALS1ETM7)));
            }
        
            aTOTALS1ETM1 = (((xQuadTOTALS1ETM1 * yTOTALS1ETM1) - (xTOTALS1ETM1 * xyTOTALS1ETM1)) / ((minPifVAL * xQuadTOTALS1ETM1) - (xTOTALS1ETM1^2)));
            aTOTALS1ETM2 = (((xQuadTOTALS1ETM2 * yTOTALS1ETM2) - (xTOTALS1ETM2 * xyTOTALS1ETM2)) / ((minPifVAL * xQuadTOTALS1ETM2) - (xTOTALS1ETM2^2)));
            aTOTALS1ETM3 = (((xQuadTOTALS1ETM3 * yTOTALS1ETM3) - (xTOTALS1ETM3 * xyTOTALS1ETM3)) / ((minPifVAL * xQuadTOTALS1ETM3) - (xTOTALS1ETM3^2)));
            aTOTALS1ETM4 = (((xQuadTOTALS1ETM4 * yTOTALS1ETM4) - (xTOTALS1ETM4 * xyTOTALS1ETM4)) / ((minPifVAL * xQuadTOTALS1ETM4) - (xTOTALS1ETM4^2)));
            aTOTALS1ETM5 = (((xQuadTOTALS1ETM5 * yTOTALS1ETM5) - (xTOTALS1ETM5 * xyTOTALS1ETM5)) / ((minPifVAL * xQuadTOTALS1ETM5) - (xTOTALS1ETM5^2)));
            aTOTALS1ETM7 = (((xQuadTOTALS1ETM7 * yTOTALS1ETM7) - (xTOTALS1ETM7 * xyTOTALS1ETM7)) / ((minPifVAL * xQuadTOTALS1ETM7) - (xTOTALS1ETM7^2)));
            
            bTOTALS1ETM1 = qXYTOTALS1ETM1 / xxAritQuadTOTALS1ETM1;
            bTOTALS1ETM2 = qXYTOTALS1ETM2 / xxAritQuadTOTALS1ETM2;
            bTOTALS1ETM3 = qXYTOTALS1ETM3 / xxAritQuadTOTALS1ETM3;
            bTOTALS1ETM4 = qXYTOTALS1ETM4 / xxAritQuadTOTALS1ETM4;
            bTOTALS1ETM5 = qXYTOTALS1ETM5 / xxAritQuadTOTALS1ETM5;
            bTOTALS1ETM7 = qXYTOTALS1ETM7 / xxAritQuadTOTALS1ETM7;
    
            rTOTALS1ETM1 = (qXYTOTALS1ETM1 / ((xxAritQuadTOTALS1ETM1 * yyAritQuadTOTALS1ETM1)^0.5));
            rTOTALS1ETM2 = (qXYTOTALS1ETM2 / ((xxAritQuadTOTALS1ETM2 * yyAritQuadTOTALS1ETM2)^0.5));
            rTOTALS1ETM3 = (qXYTOTALS1ETM3 / ((xxAritQuadTOTALS1ETM3 * yyAritQuadTOTALS1ETM3)^0.5));
            rTOTALS1ETM4 = (qXYTOTALS1ETM4 / ((xxAritQuadTOTALS1ETM4 * yyAritQuadTOTALS1ETM4)^0.5));
            rTOTALS1ETM5 = (qXYTOTALS1ETM5 / ((xxAritQuadTOTALS1ETM5 * yyAritQuadTOTALS1ETM5)^0.5));
            rTOTALS1ETM7 = (qXYTOTALS1ETM7 / ((xxAritQuadTOTALS1ETM7 * yyAritQuadTOTALS1ETM7)^0.5));
    
            rQuadTOTALS1ETM1 = ((rTOTALS1ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1ETM2 = ((rTOTALS1ETM2^2) * 100);
            rQuadTOTALS1ETM3 = ((rTOTALS1ETM3^2) * 100);
            rQuadTOTALS1ETM4 = ((rTOTALS1ETM4^2) * 100);
            rQuadTOTALS1ETM5 = ((rTOTALS1ETM5^2) * 100);
            rQuadTOTALS1ETM7 = ((rTOTALS1ETM7^2) * 100);
        
            syxTOTALS1ETM1 = (((yyAritQuadTOTALS1ETM1 - ((qXYTOTALS1ETM1^2) / xxAritQuadTOTALS1ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM2 = (((yyAritQuadTOTALS1ETM2 - ((qXYTOTALS1ETM2^2) / xxAritQuadTOTALS1ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM3 = (((yyAritQuadTOTALS1ETM3 - ((qXYTOTALS1ETM3^2) / xxAritQuadTOTALS1ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM4 = (((yyAritQuadTOTALS1ETM4 - ((qXYTOTALS1ETM4^2) / xxAritQuadTOTALS1ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM5 = (((yyAritQuadTOTALS1ETM5 - ((qXYTOTALS1ETM5^2) / xxAritQuadTOTALS1ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM7 = (((yyAritQuadTOTALS1ETM7 - ((qXYTOTALS1ETM7^2) / xxAritQuadTOTALS1ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1ETM1 = (((syxTOTALS1ETM1^2) / xxAritQuadTOTALS1ETM1)^0.5);
            bStandTOTALS1ETM2 = (((syxTOTALS1ETM2^2) / xxAritQuadTOTALS1ETM2)^0.5);
            bStandTOTALS1ETM3 = (((syxTOTALS1ETM3^2) / xxAritQuadTOTALS1ETM3)^0.5);
            bStandTOTALS1ETM4 = (((syxTOTALS1ETM4^2) / xxAritQuadTOTALS1ETM4)^0.5);
            bStandTOTALS1ETM5 = (((syxTOTALS1ETM5^2) / xxAritQuadTOTALS1ETM5)^0.5);
            bStandTOTALS1ETM7 = (((syxTOTALS1ETM7^2) / xxAritQuadTOTALS1ETM7)^0.5);
    
            aStandTOTALS1ETM1 = (bStandTOTALS1ETM1 * ((xQuadTOTALS1ETM1 / minPifVAL)^0.5));
            aStandTOTALS1ETM2 = (bStandTOTALS1ETM2 * ((xQuadTOTALS1ETM2 / minPifVAL)^0.5));
            aStandTOTALS1ETM3 = (bStandTOTALS1ETM3 * ((xQuadTOTALS1ETM3 / minPifVAL)^0.5));
            aStandTOTALS1ETM4 = (bStandTOTALS1ETM4 * ((xQuadTOTALS1ETM4 / minPifVAL)^0.5));
            aStandTOTALS1ETM5 = (bStandTOTALS1ETM5 * ((xQuadTOTALS1ETM5 / minPifVAL)^0.5));
            aStandTOTALS1ETM7 = (bStandTOTALS1ETM7 * ((xQuadTOTALS1ETM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM1, bTOTALS1ETM1, rTOTALS1ETM1, rQuadTOTALS1ETM1, aStandTOTALS1ETM1, bStandTOTALS1ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM2, bTOTALS1ETM2, rTOTALS1ETM2, rQuadTOTALS1ETM2, aStandTOTALS1ETM2, bStandTOTALS1ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM3, bTOTALS1ETM3, rTOTALS1ETM3, rQuadTOTALS1ETM3, aStandTOTALS1ETM3, bStandTOTALS1ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM4, bTOTALS1ETM4, rTOTALS1ETM4, rQuadTOTALS1ETM4, aStandTOTALS1ETM4, bStandTOTALS1ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM5, bTOTALS1ETM5, rTOTALS1ETM5, rQuadTOTALS1ETM5, aStandTOTALS1ETM5, bStandTOTALS1ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS1ETM7, bTOTALS1ETM7, rTOTALS1ETM7, rQuadTOTALS1ETM7, aStandTOTALS1ETM7, bStandTOTALS1ETM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS1ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS1ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS1ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS1ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS1ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS1ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS1ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT1ETM1[i,j] = (aTOTALS1ETM1 + (bTOTALS1ETM1 * REFS1ETM1[i,j]));
                    OUT1ETM2[i,j] = (aTOTALS1ETM2 + (bTOTALS1ETM2 * REFS1ETM2[i,j]));
                    OUT1ETM3[i,j] = (aTOTALS1ETM3 + (bTOTALS1ETM3 * REFS1ETM3[i,j]));
                    OUT1ETM4[i,j] = (aTOTALS1ETM4 + (bTOTALS1ETM4 * REFS1ETM4[i,j]));
                    OUT1ETM5[i,j] = (aTOTALS1ETM5 + (bTOTALS1ETM5 * REFS1ETM5[i,j]));
                    OUT1ETM7[i,j] = (aTOTALS1ETM7 + (bTOTALS1ETM7 * REFS1ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1ETM1);
        	CreatePyramid(OUT1ETM2);
        	CreatePyramid(OUT1ETM3);
        	CreatePyramid(OUT1ETM4);
        	CreatePyramid(OUT1ETM5);
        	CreatePyramid(OUT1ETM7);
        
        	CreateHistogram(OUT1ETM1);
        	CreateHistogram(OUT1ETM2);
        	CreateHistogram(OUT1ETM3);
        	CreateHistogram(OUT1ETM4);
        	CreateHistogram(OUT1ETM5);
        	CreateHistogram(OUT1ETM7);
        
        	CloseRaster(REFS1ETM1);
            CloseRaster(REFS1ETM2);
            CloseRaster(REFS1ETM3);
            CloseRaster(REFS1ETM4);
            CloseRaster(REFS1ETM5);
            CloseRaster(REFS1ETM7);
    
            CloseRaster(OUT1ETM1);
            CloseRaster(OUT1ETM2);
            CloseRaster(OUT1ETM3);
            CloseRaster(OUT1ETM4);
            CloseRaster(OUT1ETM5);
            CloseRaster(OUT1ETM7);
        
        	printf("Scene 1 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors1 == 6 )
            {
            numeric xAritTOTALS1TM1, xAritTOTALS1TM2, xAritTOTALS1TM3, xAritTOTALS1TM4, xAritTOTALS1TM5, xAritTOTALS1TM7;
            numeric yAritTOTALS1TM1, yAritTOTALS1TM2, yAritTOTALS1TM3, yAritTOTALS1TM4, yAritTOTALS1TM5, yAritTOTALS1TM7;
    
            numeric aTOTALS1TM1, aTOTALS1TM2, aTOTALS1TM3, aTOTALS1TM4, aTOTALS1TM5, aTOTALS1TM7;
            numeric bTOTALS1TM1, bTOTALS1TM2, bTOTALS1TM3, bTOTALS1TM4, bTOTALS1TM5, bTOTALS1TM7;
            numeric rTOTALS1TM1, rTOTALS1TM2, rTOTALS1TM3, rTOTALS1TM4, rTOTALS1TM5, rTOTALS1TM7;
            numeric rQuadTOTALS1TM1, rQuadTOTALS1TM2, rQuadTOTALS1TM3, rQuadTOTALS1TM4, rQuadTOTALS1TM5, rQuadTOTALS1TM7;
            numeric syxTOTALS1TM1, syxTOTALS1TM2, syxTOTALS1TM3, syxTOTALS1TM4, syxTOTALS1TM5, syxTOTALS1TM7;
            numeric bStandTOTALS1TM1, bStandTOTALS1TM2, bStandTOTALS1TM3, bStandTOTALS1TM4, bStandTOTALS1TM5, bStandTOTALS1TM7;
            numeric aStandTOTALS1TM1, aStandTOTALS1TM2, aStandTOTALS1TM3, aStandTOTALS1TM4, aStandTOTALS1TM5, aStandTOTALS1TM7;
    
            numeric xTOTALS1TM1 = 0;
            numeric xTOTALS1TM2 = 0;
            numeric xTOTALS1TM3 = 0;
            numeric xTOTALS1TM4 = 0;
            numeric xTOTALS1TM5 = 0;
            numeric xTOTALS1TM7 = 0;
    
            numeric xQuadTOTALS1TM1 = 0;
            numeric xQuadTOTALS1TM2 = 0;
            numeric xQuadTOTALS1TM3 = 0;
            numeric xQuadTOTALS1TM4 = 0;
            numeric xQuadTOTALS1TM5 = 0;
            numeric xQuadTOTALS1TM7 = 0;
    
            numeric yTOTALS1TM1 = 0;
            numeric yTOTALS1TM2 = 0;
            numeric yTOTALS1TM3 = 0;
            numeric yTOTALS1TM4 = 0;
            numeric yTOTALS1TM5 = 0;
            numeric yTOTALS1TM7 = 0;
    
            numeric yQuadTOTALS1TM1 = 0;
            numeric yQuadTOTALS1TM2 = 0;
            numeric yQuadTOTALS1TM3 = 0;
            numeric yQuadTOTALS1TM4 = 0;
            numeric yQuadTOTALS1TM5 = 0;
            numeric yQuadTOTALS1TM7 = 0;
    
            numeric xyTOTALS1TM1 = 0;
            numeric xyTOTALS1TM2 = 0;
            numeric xyTOTALS1TM3 = 0;
            numeric xyTOTALS1TM4 = 0;
            numeric xyTOTALS1TM5 = 0;
            numeric xyTOTALS1TM7 = 0;
    
            numeric xxAritQuadTOTALS1TM1 = 0;
            numeric xxAritQuadTOTALS1TM2 = 0;
            numeric xxAritQuadTOTALS1TM3 = 0;
            numeric xxAritQuadTOTALS1TM4 = 0;
            numeric xxAritQuadTOTALS1TM5 = 0;
            numeric xxAritQuadTOTALS1TM7 = 0;
    
            numeric yyAritQuadTOTALS1TM1 = 0;
            numeric yyAritQuadTOTALS1TM2 = 0;
            numeric yyAritQuadTOTALS1TM3 = 0;
            numeric yyAritQuadTOTALS1TM4 = 0;
            numeric yyAritQuadTOTALS1TM5 = 0;
            numeric yyAritQuadTOTALS1TM7 = 0;
    
            numeric qXYTOTALS1TM1 = 0;
            numeric qXYTOTALS1TM2 = 0;
            numeric qXYTOTALS1TM3 = 0;
            numeric qXYTOTALS1TM4 = 0;
            numeric qXYTOTALS1TM5 = 0;
            numeric qXYTOTALS1TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS1TM1 = xTOTALS1TM1 + pifTOTALS2TM1arrayRAND[m];
                xTOTALS1TM2 = xTOTALS1TM2 + pifTOTALS2TM2arrayRAND[m];
                xTOTALS1TM3 = xTOTALS1TM3 + pifTOTALS2TM3arrayRAND[m];
                xTOTALS1TM4 = xTOTALS1TM4 + pifTOTALS2TM4arrayRAND[m];
                xTOTALS1TM5 = xTOTALS1TM5 + pifTOTALS2TM5arrayRAND[m];
                xTOTALS1TM7 = xTOTALS1TM7 + pifTOTALS2TM7arrayRAND[m];
    
                xQuadTOTALS1TM1 = (xQuadTOTALS1TM1 + (pifTOTALS2TM1arrayRAND[m]^2));
                xQuadTOTALS1TM2 = (xQuadTOTALS1TM2 + (pifTOTALS2TM2arrayRAND[m]^2));
                xQuadTOTALS1TM3 = (xQuadTOTALS1TM3 + (pifTOTALS2TM3arrayRAND[m]^2));
                xQuadTOTALS1TM4 = (xQuadTOTALS1TM4 + (pifTOTALS2TM4arrayRAND[m]^2));
                xQuadTOTALS1TM5 = (xQuadTOTALS1TM5 + (pifTOTALS2TM5arrayRAND[m]^2));
                xQuadTOTALS1TM7 = (xQuadTOTALS1TM7 + (pifTOTALS2TM7arrayRAND[m]^2));
    
                yTOTALS1TM1 = yTOTALS1TM1 + pifTOTALS1TM1arrayRAND[m];
                yTOTALS1TM2 = yTOTALS1TM2 + pifTOTALS1TM2arrayRAND[m];
                yTOTALS1TM3 = yTOTALS1TM3 + pifTOTALS1TM3arrayRAND[m];
                yTOTALS1TM4 = yTOTALS1TM4 + pifTOTALS1TM4arrayRAND[m];
                yTOTALS1TM5 = yTOTALS1TM5 + pifTOTALS1TM5arrayRAND[m];
                yTOTALS1TM7 = yTOTALS1TM7 + pifTOTALS1TM7arrayRAND[m];
                
                yQuadTOTALS1TM1 = (yQuadTOTALS1TM1 + (pifTOTALS1TM1arrayRAND[m]^2));
                yQuadTOTALS1TM2 = (yQuadTOTALS1TM2 + (pifTOTALS1TM2arrayRAND[m]^2));
                yQuadTOTALS1TM3 = (yQuadTOTALS1TM3 + (pifTOTALS1TM3arrayRAND[m]^2));
                yQuadTOTALS1TM4 = (yQuadTOTALS1TM4 + (pifTOTALS1TM4arrayRAND[m]^2));
                yQuadTOTALS1TM5 = (yQuadTOTALS1TM5 + (pifTOTALS1TM5arrayRAND[m]^2));
                yQuadTOTALS1TM7 = (yQuadTOTALS1TM7 + (pifTOTALS1TM7arrayRAND[m]^2));
    
                xyTOTALS1TM1 = (xyTOTALS1TM1 + (pifTOTALS2TM1arrayRAND[m] * pifTOTALS1TM1arrayRAND[m]));
                xyTOTALS1TM2 = (xyTOTALS1TM2 + (pifTOTALS2TM2arrayRAND[m] * pifTOTALS1TM2arrayRAND[m]));
                xyTOTALS1TM3 = (xyTOTALS1TM3 + (pifTOTALS2TM3arrayRAND[m] * pifTOTALS1TM3arrayRAND[m]));
                xyTOTALS1TM4 = (xyTOTALS1TM4 + (pifTOTALS2TM4arrayRAND[m] * pifTOTALS1TM4arrayRAND[m]));
                xyTOTALS1TM5 = (xyTOTALS1TM5 + (pifTOTALS2TM5arrayRAND[m] * pifTOTALS1TM5arrayRAND[m]));
                xyTOTALS1TM7 = (xyTOTALS1TM7 + (pifTOTALS2TM7arrayRAND[m] * pifTOTALS1TM7arrayRAND[m]));
            }	
            
            xAritTOTALS1TM1 = xTOTALS1TM1 / minPifVAL;
            xAritTOTALS1TM2 = xTOTALS1TM2 / minPifVAL;
            xAritTOTALS1TM3 = xTOTALS1TM3 / minPifVAL;
            xAritTOTALS1TM4 = xTOTALS1TM4 / minPifVAL;
            xAritTOTALS1TM5 = xTOTALS1TM5 / minPifVAL;
            xAritTOTALS1TM7 = xTOTALS1TM7 / minPifVAL;
    
            yAritTOTALS1TM1 = yTOTALS1TM1 / minPifVAL;
            yAritTOTALS1TM2 = yTOTALS1TM2 / minPifVAL;
            yAritTOTALS1TM3 = yTOTALS1TM3 / minPifVAL;
            yAritTOTALS1TM4 = yTOTALS1TM4 / minPifVAL;
            yAritTOTALS1TM5 = yTOTALS1TM5 / minPifVAL;
            yAritTOTALS1TM7 = yTOTALS1TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1TM1 = (xxAritQuadTOTALS1TM1 + ((pifTOTALS2TM1arrayRAND[n] - xAritTOTALS1TM1)^2));
                xxAritQuadTOTALS1TM2 = (xxAritQuadTOTALS1TM2 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS1TM2)^2));
                xxAritQuadTOTALS1TM3 = (xxAritQuadTOTALS1TM3 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS1TM3)^2));
                xxAritQuadTOTALS1TM4 = (xxAritQuadTOTALS1TM4 + ((pifTOTALS2TM4arrayRAND[n] - xAritTOTALS1TM4)^2));
                xxAritQuadTOTALS1TM5 = (xxAritQuadTOTALS1TM5 + ((pifTOTALS2TM5arrayRAND[n] - xAritTOTALS1TM5)^2));
                xxAritQuadTOTALS1TM7 = (xxAritQuadTOTALS1TM7 + ((pifTOTALS2TM7arrayRAND[n] - xAritTOTALS1TM7)^2));
    
                yyAritQuadTOTALS1TM1 = (yyAritQuadTOTALS1TM1 + ((pifTOTALS1TM1arrayRAND[n] - yAritTOTALS1TM1)^2));
                yyAritQuadTOTALS1TM2 = (yyAritQuadTOTALS1TM2 + ((pifTOTALS1TM2arrayRAND[n] - yAritTOTALS1TM2)^2));
                yyAritQuadTOTALS1TM3 = (yyAritQuadTOTALS1TM3 + ((pifTOTALS1TM3arrayRAND[n] - yAritTOTALS1TM3)^2));
                yyAritQuadTOTALS1TM4 = (yyAritQuadTOTALS1TM4 + ((pifTOTALS1TM4arrayRAND[n] - yAritTOTALS1TM4)^2));
                yyAritQuadTOTALS1TM5 = (yyAritQuadTOTALS1TM5 + ((pifTOTALS1TM5arrayRAND[n] - yAritTOTALS1TM5)^2));
                yyAritQuadTOTALS1TM7 = (yyAritQuadTOTALS1TM7 + ((pifTOTALS1TM7arrayRAND[n] - yAritTOTALS1TM7)^2));
    
                qXYTOTALS1TM1 = (qXYTOTALS1TM1 + ((pifTOTALS2TM1arrayRAND[n] - xAritTOTALS1TM1) * (pifTOTALS1TM1arrayRAND[n] - yAritTOTALS1TM1)));
                qXYTOTALS1TM2 = (qXYTOTALS1TM2 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS1TM2) * (pifTOTALS1TM2arrayRAND[n] - yAritTOTALS1TM2)));
                qXYTOTALS1TM3 = (qXYTOTALS1TM3 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS1TM3) * (pifTOTALS1TM3arrayRAND[n] - yAritTOTALS1TM3)));
                qXYTOTALS1TM4 = (qXYTOTALS1TM4 + ((pifTOTALS2TM4arrayRAND[n] - xAritTOTALS1TM4) * (pifTOTALS1TM4arrayRAND[n] - yAritTOTALS1TM4)));
                qXYTOTALS1TM5 = (qXYTOTALS1TM5 + ((pifTOTALS2TM5arrayRAND[n] - xAritTOTALS1TM5) * (pifTOTALS1TM5arrayRAND[n] - yAritTOTALS1TM5)));
                qXYTOTALS1TM7 = (qXYTOTALS1TM7 + ((pifTOTALS2TM7arrayRAND[n] - xAritTOTALS1TM7) * (pifTOTALS1TM7arrayRAND[n] - yAritTOTALS1TM7)));
            }
        
            aTOTALS1TM1 = (((xQuadTOTALS1TM1 * yTOTALS1TM1) - (xTOTALS1TM1 * xyTOTALS1TM1)) / ((minPifVAL * xQuadTOTALS1TM1) - (xTOTALS1TM1^2)));
            aTOTALS1TM2 = (((xQuadTOTALS1TM2 * yTOTALS1TM2) - (xTOTALS1TM2 * xyTOTALS1TM2)) / ((minPifVAL * xQuadTOTALS1TM2) - (xTOTALS1TM2^2)));
            aTOTALS1TM3 = (((xQuadTOTALS1TM3 * yTOTALS1TM3) - (xTOTALS1TM3 * xyTOTALS1TM3)) / ((minPifVAL * xQuadTOTALS1TM3) - (xTOTALS1TM3^2)));
            aTOTALS1TM4 = (((xQuadTOTALS1TM4 * yTOTALS1TM4) - (xTOTALS1TM4 * xyTOTALS1TM4)) / ((minPifVAL * xQuadTOTALS1TM4) - (xTOTALS1TM4^2)));
            aTOTALS1TM5 = (((xQuadTOTALS1TM5 * yTOTALS1TM5) - (xTOTALS1TM5 * xyTOTALS1TM5)) / ((minPifVAL * xQuadTOTALS1TM5) - (xTOTALS1TM5^2)));
            aTOTALS1TM7 = (((xQuadTOTALS1TM7 * yTOTALS1TM7) - (xTOTALS1TM7 * xyTOTALS1TM7)) / ((minPifVAL * xQuadTOTALS1TM7) - (xTOTALS1TM7^2)));
            
            bTOTALS1TM1 = qXYTOTALS1TM1 / xxAritQuadTOTALS1TM1;
            bTOTALS1TM2 = qXYTOTALS1TM2 / xxAritQuadTOTALS1TM2;
            bTOTALS1TM3 = qXYTOTALS1TM3 / xxAritQuadTOTALS1TM3;
            bTOTALS1TM4 = qXYTOTALS1TM4 / xxAritQuadTOTALS1TM4;
            bTOTALS1TM5 = qXYTOTALS1TM5 / xxAritQuadTOTALS1TM5;
            bTOTALS1TM7 = qXYTOTALS1TM7 / xxAritQuadTOTALS1TM7;
    
            rTOTALS1TM1 = (qXYTOTALS1TM1 / ((xxAritQuadTOTALS1TM1 * yyAritQuadTOTALS1TM1)^0.5));
            rTOTALS1TM2 = (qXYTOTALS1TM2 / ((xxAritQuadTOTALS1TM2 * yyAritQuadTOTALS1TM2)^0.5));
            rTOTALS1TM3 = (qXYTOTALS1TM3 / ((xxAritQuadTOTALS1TM3 * yyAritQuadTOTALS1TM3)^0.5));
            rTOTALS1TM4 = (qXYTOTALS1TM4 / ((xxAritQuadTOTALS1TM4 * yyAritQuadTOTALS1TM4)^0.5));
            rTOTALS1TM5 = (qXYTOTALS1TM5 / ((xxAritQuadTOTALS1TM5 * yyAritQuadTOTALS1TM5)^0.5));
            rTOTALS1TM7 = (qXYTOTALS1TM7 / ((xxAritQuadTOTALS1TM7 * yyAritQuadTOTALS1TM7)^0.5));
    
            rQuadTOTALS1TM1 = ((rTOTALS1TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1TM2 = ((rTOTALS1TM2^2) * 100);
            rQuadTOTALS1TM3 = ((rTOTALS1TM3^2) * 100);
            rQuadTOTALS1TM4 = ((rTOTALS1TM4^2) * 100);
            rQuadTOTALS1TM5 = ((rTOTALS1TM5^2) * 100);
            rQuadTOTALS1TM7 = ((rTOTALS1TM7^2) * 100);
        
            syxTOTALS1TM1 = (((yyAritQuadTOTALS1TM1 - ((qXYTOTALS1TM1^2) / xxAritQuadTOTALS1TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM2 = (((yyAritQuadTOTALS1TM2 - ((qXYTOTALS1TM2^2) / xxAritQuadTOTALS1TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM3 = (((yyAritQuadTOTALS1TM3 - ((qXYTOTALS1TM3^2) / xxAritQuadTOTALS1TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM4 = (((yyAritQuadTOTALS1TM4 - ((qXYTOTALS1TM4^2) / xxAritQuadTOTALS1TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM5 = (((yyAritQuadTOTALS1TM5 - ((qXYTOTALS1TM5^2) / xxAritQuadTOTALS1TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM7 = (((yyAritQuadTOTALS1TM7 - ((qXYTOTALS1TM7^2) / xxAritQuadTOTALS1TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1TM1 = (((syxTOTALS1TM1^2) / xxAritQuadTOTALS1TM1)^0.5);
            bStandTOTALS1TM2 = (((syxTOTALS1TM2^2) / xxAritQuadTOTALS1TM2)^0.5);
            bStandTOTALS1TM3 = (((syxTOTALS1TM3^2) / xxAritQuadTOTALS1TM3)^0.5);
            bStandTOTALS1TM4 = (((syxTOTALS1TM4^2) / xxAritQuadTOTALS1TM4)^0.5);
            bStandTOTALS1TM5 = (((syxTOTALS1TM5^2) / xxAritQuadTOTALS1TM5)^0.5);
            bStandTOTALS1TM7 = (((syxTOTALS1TM7^2) / xxAritQuadTOTALS1TM7)^0.5);
    
            aStandTOTALS1TM1 = (bStandTOTALS1TM1 * ((xQuadTOTALS1TM1 / minPifVAL)^0.5));
            aStandTOTALS1TM2 = (bStandTOTALS1TM2 * ((xQuadTOTALS1TM2 / minPifVAL)^0.5));
            aStandTOTALS1TM3 = (bStandTOTALS1TM3 * ((xQuadTOTALS1TM3 / minPifVAL)^0.5));
            aStandTOTALS1TM4 = (bStandTOTALS1TM4 * ((xQuadTOTALS1TM4 / minPifVAL)^0.5));
            aStandTOTALS1TM5 = (bStandTOTALS1TM5 * ((xQuadTOTALS1TM5 / minPifVAL)^0.5));
            aStandTOTALS1TM7 = (bStandTOTALS1TM7 * ((xQuadTOTALS1TM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM1, bTOTALS1TM1, rTOTALS1TM1, rQuadTOTALS1TM1, aStandTOTALS1TM1, bStandTOTALS1TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM2, bTOTALS1TM2, rTOTALS1TM2, rQuadTOTALS1TM2, aStandTOTALS1TM2, bStandTOTALS1TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM3, bTOTALS1TM3, rTOTALS1TM3, rQuadTOTALS1TM3, aStandTOTALS1TM3, bStandTOTALS1TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM4, bTOTALS1TM4, rTOTALS1TM4, rQuadTOTALS1TM4, aStandTOTALS1TM4, bStandTOTALS1TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM5, bTOTALS1TM5, rTOTALS1TM5, rQuadTOTALS1TM5, aStandTOTALS1TM5, bStandTOTALS1TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS1TM7, bTOTALS1TM7, rTOTALS1TM7, rQuadTOTALS1TM7, aStandTOTALS1TM7, bStandTOTALS1TM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS1TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS1TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS1TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS1TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS1TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS1TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS1TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT1TM1[i,j] = (aTOTALS1TM1 + (bTOTALS1TM1 * REFS1TM1[i,j]));
                    OUT1TM2[i,j] = (aTOTALS1TM2 + (bTOTALS1TM2 * REFS1TM2[i,j]));
                    OUT1TM3[i,j] = (aTOTALS1TM3 + (bTOTALS1TM3 * REFS1TM3[i,j]));
                    OUT1TM4[i,j] = (aTOTALS1TM4 + (bTOTALS1TM4 * REFS1TM4[i,j]));
                    OUT1TM5[i,j] = (aTOTALS1TM5 + (bTOTALS1TM5 * REFS1TM5[i,j]));
                    OUT1TM7[i,j] = (aTOTALS1TM7 + (bTOTALS1TM7 * REFS1TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1TM1);
        	CreatePyramid(OUT1TM2);
        	CreatePyramid(OUT1TM3);
        	CreatePyramid(OUT1TM4);
        	CreatePyramid(OUT1TM5);
        	CreatePyramid(OUT1TM7);
        
        	CreateHistogram(OUT1TM1);
        	CreateHistogram(OUT1TM2);
        	CreateHistogram(OUT1TM3);
        	CreateHistogram(OUT1TM4);
        	CreateHistogram(OUT1TM5);
        	CreateHistogram(OUT1TM7);
        
        	CloseRaster(REFS1TM1);
            CloseRaster(REFS1TM2);
            CloseRaster(REFS1TM3);
            CloseRaster(REFS1TM4);
            CloseRaster(REFS1TM5);
            CloseRaster(REFS1TM7);
    
            CloseRaster(OUT1TM1);
            CloseRaster(OUT1TM2);
            CloseRaster(OUT1TM3);
            CloseRaster(OUT1TM4);
            CloseRaster(OUT1TM5);
            CloseRaster(OUT1TM7);
        
        	printf("Scene 1 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS1MSS1, xAritTOTALS1MSS2, xAritTOTALS1MSS4;
            numeric yAritTOTALS1MSS1, yAritTOTALS1MSS2, yAritTOTALS1MSS4;
    
            numeric aTOTALS1MSS1, aTOTALS1MSS2, aTOTALS1MSS4;
            numeric bTOTALS1MSS1, bTOTALS1MSS2, bTOTALS1MSS4;
            numeric rTOTALS1MSS1, rTOTALS1MSS2, rTOTALS1MSS4;
            numeric rQuadTOTALS1MSS1, rQuadTOTALS1MSS2, rQuadTOTALS1MSS4;
            numeric syxTOTALS1MSS1, syxTOTALS1MSS2, syxTOTALS1MSS4;
            numeric bStandTOTALS1MSS1, bStandTOTALS1MSS2, bStandTOTALS1MSS4;
            numeric aStandTOTALS1MSS1, aStandTOTALS1MSS2, aStandTOTALS1MSS4;
    
            numeric xTOTALS1MSS1 = 0;
            numeric xTOTALS1MSS2 = 0;
            numeric xTOTALS1MSS4 = 0;
    
            numeric xQuadTOTALS1MSS1 = 0;
            numeric xQuadTOTALS1MSS2 = 0;
            numeric xQuadTOTALS1MSS4 = 0;
    
            numeric yTOTALS1MSS1 = 0;
            numeric yTOTALS1MSS2 = 0;
            numeric yTOTALS1MSS3 = 0;
            numeric yTOTALS1MSS4 = 0;
    
            numeric yQuadTOTALS1MSS1 = 0;
            numeric yQuadTOTALS1MSS2 = 0;
            numeric yQuadTOTALS1MSS4 = 0;
    
            numeric xyTOTALS1MSS1 = 0;
            numeric xyTOTALS1MSS2 = 0;
            numeric xyTOTALS1MSS4 = 0;
    
            numeric xxAritQuadTOTALS1MSS1 = 0;
            numeric xxAritQuadTOTALS1MSS2 = 0;
            numeric xxAritQuadTOTALS1MSS4 = 0;
    
            numeric yyAritQuadTOTALS1MSS1 = 0;
            numeric yyAritQuadTOTALS1MSS2 = 0;
            numeric yyAritQuadTOTALS1MSS4 = 0;
    
            numeric qXYTOTALS1MSS1 = 0;
            numeric qXYTOTALS1MSS2 = 0;
            numeric qXYTOTALS1MSS4 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS1MSS1 = xTOTALS1MSS1 + pifTOTALS2TM2arrayRAND[m];
                xTOTALS1MSS2 = xTOTALS1MSS2 + pifTOTALS2TM3arrayRAND[m];
                xTOTALS1MSS4 = xTOTALS1MSS4 + pifTOTALS2TM4arrayRAND[m];
    
                xQuadTOTALS1MSS1 = (xQuadTOTALS1MSS1 + (pifTOTALS2TM2arrayRAND[m]^2));
                xQuadTOTALS1MSS2 = (xQuadTOTALS1MSS2 + (pifTOTALS2TM3arrayRAND[m]^2));
                xQuadTOTALS1MSS4 = (xQuadTOTALS1MSS4 + (pifTOTALS2TM4arrayRAND[m]^2));
    
                yTOTALS1MSS1 = yTOTALS1MSS1 + pifTOTALS1MSS1arrayRAND[m];
                yTOTALS1MSS2 = yTOTALS1MSS2 + pifTOTALS1MSS2arrayRAND[m];
                yTOTALS1MSS4 = yTOTALS1MSS4 + pifTOTALS1MSS4arrayRAND[m];
                
                yQuadTOTALS1MSS1 = (yQuadTOTALS1MSS1 + (pifTOTALS1MSS1arrayRAND[m]^2));
                yQuadTOTALS1MSS2 = (yQuadTOTALS1MSS2 + (pifTOTALS1MSS2arrayRAND[m]^2));
                yQuadTOTALS1MSS4 = (yQuadTOTALS1MSS4 + (pifTOTALS1MSS4arrayRAND[m]^2));
    
                xyTOTALS1MSS1 = (xyTOTALS1MSS1 + (pifTOTALS2TM2arrayRAND[m] * pifTOTALS1MSS1arrayRAND[m]));
                xyTOTALS1MSS2 = (xyTOTALS1MSS2 + (pifTOTALS2TM3arrayRAND[m] * pifTOTALS1MSS2arrayRAND[m]));
                xyTOTALS1MSS4 = (xyTOTALS1MSS4 + (pifTOTALS2TM4arrayRAND[m] * pifTOTALS1MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS1MSS1 = xTOTALS1MSS1 / minPifVAL;
            xAritTOTALS1MSS2 = xTOTALS1MSS2 / minPifVAL;
            xAritTOTALS1MSS4 = xTOTALS1MSS4 / minPifVAL;
    
            yAritTOTALS1MSS1 = yTOTALS1MSS1 / minPifVAL;
            yAritTOTALS1MSS2 = yTOTALS1MSS2 / minPifVAL;
            yAritTOTALS1MSS4 = yTOTALS1MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1MSS1 = (xxAritQuadTOTALS1MSS1 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS1MSS1)^2));
                xxAritQuadTOTALS1MSS2 = (xxAritQuadTOTALS1MSS2 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS1MSS2)^2));
                xxAritQuadTOTALS1MSS4 = (xxAritQuadTOTALS1MSS4 + ((pifTOTALS2TM4arrayRAND[n] - xAritTOTALS1MSS4)^2));
    
                yyAritQuadTOTALS1MSS1 = (yyAritQuadTOTALS1MSS1 + ((pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)^2));
                yyAritQuadTOTALS1MSS2 = (yyAritQuadTOTALS1MSS2 + ((pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)^2));
                yyAritQuadTOTALS1MSS4 = (yyAritQuadTOTALS1MSS4 + ((pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)^2));
    
                qXYTOTALS1MSS1 = (qXYTOTALS1MSS1 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS1MSS1) * (pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)));
                qXYTOTALS1MSS2 = (qXYTOTALS1MSS2 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS1MSS2) * (pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)));
                qXYTOTALS1MSS4 = (qXYTOTALS1MSS4 + ((pifTOTALS2TM4arrayRAND[n] - xAritTOTALS1MSS4) * (pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)));
            }
        
            aTOTALS1MSS1 = (((xQuadTOTALS1MSS1 * yTOTALS1MSS1) - (xTOTALS1MSS1 * xyTOTALS1MSS1)) / ((minPifVAL * xQuadTOTALS1MSS1) - (xTOTALS1MSS1^2)));
            aTOTALS1MSS2 = (((xQuadTOTALS1MSS2 * yTOTALS1MSS2) - (xTOTALS1MSS2 * xyTOTALS1MSS2)) / ((minPifVAL * xQuadTOTALS1MSS2) - (xTOTALS1MSS2^2)));
            aTOTALS1MSS4 = (((xQuadTOTALS1MSS4 * yTOTALS1MSS4) - (xTOTALS1MSS4 * xyTOTALS1MSS4)) / ((minPifVAL * xQuadTOTALS1MSS4) - (xTOTALS1MSS4^2)));
            
            bTOTALS1MSS1 = qXYTOTALS1MSS1 / xxAritQuadTOTALS1MSS1;
            bTOTALS1MSS2 = qXYTOTALS1MSS2 / xxAritQuadTOTALS1MSS2;
            bTOTALS1MSS4 = qXYTOTALS1MSS4 / xxAritQuadTOTALS1MSS4;
    
            rTOTALS1MSS1 = (qXYTOTALS1MSS1 / ((xxAritQuadTOTALS1MSS1 * yyAritQuadTOTALS1MSS1)^0.5));
            rTOTALS1MSS2 = (qXYTOTALS1MSS2 / ((xxAritQuadTOTALS1MSS2 * yyAritQuadTOTALS1MSS2)^0.5));
            rTOTALS1MSS4 = (qXYTOTALS1MSS4 / ((xxAritQuadTOTALS1MSS4 * yyAritQuadTOTALS1MSS4)^0.5));
    
            rQuadTOTALS1MSS1 = ((rTOTALS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1MSS2 = ((rTOTALS1MSS2^2) * 100);
            rQuadTOTALS1MSS4 = ((rTOTALS1MSS4^2) * 100);
        
            syxTOTALS1MSS1 = (((yyAritQuadTOTALS1MSS1 - ((qXYTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS2 = (((yyAritQuadTOTALS1MSS2 - ((qXYTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS4 = (((yyAritQuadTOTALS1MSS4 - ((qXYTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1MSS1 = (((syxTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)^0.5);
            bStandTOTALS1MSS2 = (((syxTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)^0.5);
            bStandTOTALS1MSS4 = (((syxTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)^0.5);
    
            aStandTOTALS1MSS1 = (bStandTOTALS1MSS1 * ((xQuadTOTALS1MSS1 / minPifVAL)^0.5));
            aStandTOTALS1MSS2 = (bStandTOTALS1MSS2 * ((xQuadTOTALS1MSS2 / minPifVAL)^0.5));
            aStandTOTALS1MSS4 = (bStandTOTALS1MSS4 * ((xQuadTOTALS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS1, bTOTALS1MSS1, rTOTALS1MSS1, rQuadTOTALS1MSS1, aStandTOTALS1MSS1, bStandTOTALS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS2, bTOTALS1MSS2, rTOTALS1MSS2, rQuadTOTALS1MSS2, aStandTOTALS1MSS2, bStandTOTALS1MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS4, bTOTALS1MSS4, rTOTALS1MSS4, rQuadTOTALS1MSS4, aStandTOTALS1MSS4, bStandTOTALS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS1MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS1MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS2arrayRAND[minPifVAL]);
        
            printf("MSS4: %12f ", pifTOTALS1MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aTOTALS1MSS1 + (bTOTALS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aTOTALS1MSS2 + (bTOTALS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = REFS1MSS3[i,j];
                    OUT1MSS4[i,j] = (aTOTALS1MSS4 + (bTOTALS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT1MSS1);
        	CreatePyramid(OUT1MSS2);
        	CreatePyramid(OUT1MSS3);
        	CreatePyramid(OUT1MSS4);
        
        	CreateHistogram(OUT1MSS1);
        	CreateHistogram(OUT1MSS2);
        	CreateHistogram(OUT1MSS3);
        	CreateHistogram(OUT1MSS4);
        
        	CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors3 == 7 )
            {
            numeric xAritTOTALS3ETM1, xAritTOTALS3ETM2, xAritTOTALS3ETM3, xAritTOTALS3ETM4, xAritTOTALS3ETM5, xAritTOTALS3ETM7;
            numeric yAritTOTALS3ETM1, yAritTOTALS3ETM2, yAritTOTALS3ETM3, yAritTOTALS3ETM4, yAritTOTALS3ETM5, yAritTOTALS3ETM7;
    
            numeric aTOTALS3ETM1, aTOTALS3ETM2, aTOTALS3ETM3, aTOTALS3ETM4, aTOTALS3ETM5, aTOTALS3ETM7;
            numeric bTOTALS3ETM1, bTOTALS3ETM2, bTOTALS3ETM3, bTOTALS3ETM4, bTOTALS3ETM5, bTOTALS3ETM7;
            numeric rTOTALS3ETM1, rTOTALS3ETM2, rTOTALS3ETM3, rTOTALS3ETM4, rTOTALS3ETM5, rTOTALS3ETM7;
            numeric rQuadTOTALS3ETM1, rQuadTOTALS3ETM2, rQuadTOTALS3ETM3, rQuadTOTALS3ETM4, rQuadTOTALS3ETM5, rQuadTOTALS3ETM7;
            numeric syxTOTALS3ETM1, syxTOTALS3ETM2, syxTOTALS3ETM3, syxTOTALS3ETM4, syxTOTALS3ETM5, syxTOTALS3ETM7;
            numeric bStandTOTALS3ETM1, bStandTOTALS3ETM2, bStandTOTALS3ETM3, bStandTOTALS3ETM4, bStandTOTALS3ETM5, bStandTOTALS3ETM7;
            numeric aStandTOTALS3ETM1, aStandTOTALS3ETM2, aStandTOTALS3ETM3, aStandTOTALS3ETM4, aStandTOTALS3ETM5, aStandTOTALS3ETM7;
    
            numeric xTOTALS3ETM1 = 0;
            numeric xTOTALS3ETM2 = 0;
            numeric xTOTALS3ETM3 = 0;
            numeric xTOTALS3ETM4 = 0;
            numeric xTOTALS3ETM5 = 0;
            numeric xTOTALS3ETM7 = 0;
    
            numeric xQuadTOTALS3ETM1 = 0;
            numeric xQuadTOTALS3ETM2 = 0;
            numeric xQuadTOTALS3ETM3 = 0;
            numeric xQuadTOTALS3ETM4 = 0;
            numeric xQuadTOTALS3ETM5 = 0;
            numeric xQuadTOTALS3ETM7 = 0;
    
            numeric yTOTALS3ETM1 = 0;
            numeric yTOTALS3ETM2 = 0;
            numeric yTOTALS3ETM3 = 0;
            numeric yTOTALS3ETM4 = 0;
            numeric yTOTALS3ETM5 = 0;
            numeric yTOTALS3ETM7 = 0;
    
            numeric yQuadTOTALS3ETM1 = 0;
            numeric yQuadTOTALS3ETM2 = 0;
            numeric yQuadTOTALS3ETM3 = 0;
            numeric yQuadTOTALS3ETM4 = 0;
            numeric yQuadTOTALS3ETM5 = 0;
            numeric yQuadTOTALS3ETM7 = 0;
    
            numeric xyTOTALS3ETM1 = 0;
            numeric xyTOTALS3ETM2 = 0;
            numeric xyTOTALS3ETM3 = 0;
            numeric xyTOTALS3ETM4 = 0;
            numeric xyTOTALS3ETM5 = 0;
            numeric xyTOTALS3ETM7 = 0;
    
            numeric xxAritQuadTOTALS3ETM1 = 0;
            numeric xxAritQuadTOTALS3ETM2 = 0;
            numeric xxAritQuadTOTALS3ETM3 = 0;
            numeric xxAritQuadTOTALS3ETM4 = 0;
            numeric xxAritQuadTOTALS3ETM5 = 0;
            numeric xxAritQuadTOTALS3ETM7 = 0;
    
            numeric yyAritQuadTOTALS3ETM1 = 0;
            numeric yyAritQuadTOTALS3ETM2 = 0;
            numeric yyAritQuadTOTALS3ETM3 = 0;
            numeric yyAritQuadTOTALS3ETM4 = 0;
            numeric yyAritQuadTOTALS3ETM5 = 0;
            numeric yyAritQuadTOTALS3ETM7 = 0;
    
            numeric qXYTOTALS3ETM1 = 0;
            numeric qXYTOTALS3ETM2 = 0;
            numeric qXYTOTALS3ETM3 = 0;
            numeric qXYTOTALS3ETM4 = 0;
            numeric qXYTOTALS3ETM5 = 0;
            numeric qXYTOTALS3ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS3ETM1 = xTOTALS3ETM1 + pifTOTALS2TM1arrayRAND[m];
                xTOTALS3ETM2 = xTOTALS3ETM2 + pifTOTALS2TM2arrayRAND[m];
                xTOTALS3ETM3 = xTOTALS3ETM3 + pifTOTALS2TM3arrayRAND[m];
                xTOTALS3ETM4 = xTOTALS3ETM4 + pifTOTALS2TM4arrayRAND[m];
                xTOTALS3ETM5 = xTOTALS3ETM5 + pifTOTALS2TM5arrayRAND[m];
                xTOTALS3ETM7 = xTOTALS3ETM7 + pifTOTALS2TM7arrayRAND[m];
    
                xQuadTOTALS3ETM1 = (xQuadTOTALS3ETM1 + (pifTOTALS2TM1arrayRAND[m]^2));
                xQuadTOTALS3ETM2 = (xQuadTOTALS3ETM2 + (pifTOTALS2TM2arrayRAND[m]^2));
                xQuadTOTALS3ETM3 = (xQuadTOTALS3ETM3 + (pifTOTALS2TM3arrayRAND[m]^2));
                xQuadTOTALS3ETM4 = (xQuadTOTALS3ETM4 + (pifTOTALS2TM4arrayRAND[m]^2));
                xQuadTOTALS3ETM5 = (xQuadTOTALS3ETM5 + (pifTOTALS2TM5arrayRAND[m]^2));
                xQuadTOTALS3ETM7 = (xQuadTOTALS3ETM7 + (pifTOTALS2TM7arrayRAND[m]^2));
    
                yTOTALS3ETM1 = yTOTALS3ETM1 + pifTOTALS3ETM1arrayRAND[m];
                yTOTALS3ETM2 = yTOTALS3ETM2 + pifTOTALS3ETM2arrayRAND[m];
                yTOTALS3ETM3 = yTOTALS3ETM3 + pifTOTALS3ETM3arrayRAND[m];
                yTOTALS3ETM4 = yTOTALS3ETM4 + pifTOTALS3ETM4arrayRAND[m];
                yTOTALS3ETM5 = yTOTALS3ETM5 + pifTOTALS3ETM5arrayRAND[m];
                yTOTALS3ETM7 = yTOTALS3ETM7 + pifTOTALS3ETM7arrayRAND[m];
                
                yQuadTOTALS3ETM1 = (yQuadTOTALS3ETM1 + (pifTOTALS3ETM1arrayRAND[m]^2));
                yQuadTOTALS3ETM2 = (yQuadTOTALS3ETM2 + (pifTOTALS3ETM2arrayRAND[m]^2));
                yQuadTOTALS3ETM3 = (yQuadTOTALS3ETM3 + (pifTOTALS3ETM3arrayRAND[m]^2));
                yQuadTOTALS3ETM4 = (yQuadTOTALS3ETM4 + (pifTOTALS3ETM4arrayRAND[m]^2));
                yQuadTOTALS3ETM5 = (yQuadTOTALS3ETM5 + (pifTOTALS3ETM5arrayRAND[m]^2));
                yQuadTOTALS3ETM7 = (yQuadTOTALS3ETM7 + (pifTOTALS3ETM7arrayRAND[m]^2));
    
                xyTOTALS3ETM1 = (xyTOTALS3ETM1 + (pifTOTALS2TM1arrayRAND[m] * pifTOTALS3ETM1arrayRAND[m]));
                xyTOTALS3ETM2 = (xyTOTALS3ETM2 + (pifTOTALS2TM2arrayRAND[m] * pifTOTALS3ETM2arrayRAND[m]));
                xyTOTALS3ETM3 = (xyTOTALS3ETM3 + (pifTOTALS2TM3arrayRAND[m] * pifTOTALS3ETM3arrayRAND[m]));
                xyTOTALS3ETM4 = (xyTOTALS3ETM4 + (pifTOTALS2TM4arrayRAND[m] * pifTOTALS3ETM4arrayRAND[m]));
                xyTOTALS3ETM5 = (xyTOTALS3ETM5 + (pifTOTALS2TM5arrayRAND[m] * pifTOTALS3ETM5arrayRAND[m]));
                xyTOTALS3ETM7 = (xyTOTALS3ETM7 + (pifTOTALS2TM7arrayRAND[m] * pifTOTALS3ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS3ETM1 = xTOTALS3ETM1 / minPifVAL;
            xAritTOTALS3ETM2 = xTOTALS3ETM2 / minPifVAL;
            xAritTOTALS3ETM3 = xTOTALS3ETM3 / minPifVAL;
            xAritTOTALS3ETM4 = xTOTALS3ETM4 / minPifVAL;
            xAritTOTALS3ETM5 = xTOTALS3ETM5 / minPifVAL;
            xAritTOTALS3ETM7 = xTOTALS3ETM7 / minPifVAL;
    
            yAritTOTALS3ETM1 = yTOTALS3ETM1 / minPifVAL;
            yAritTOTALS3ETM2 = yTOTALS3ETM2 / minPifVAL;
            yAritTOTALS3ETM3 = yTOTALS3ETM3 / minPifVAL;
            yAritTOTALS3ETM4 = yTOTALS3ETM4 / minPifVAL;
            yAritTOTALS3ETM5 = yTOTALS3ETM5 / minPifVAL;
            yAritTOTALS3ETM7 = yTOTALS3ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3ETM1 = (xxAritQuadTOTALS3ETM1 + ((pifTOTALS2TM1arrayRAND[n] - xAritTOTALS3ETM1)^2));
                xxAritQuadTOTALS3ETM2 = (xxAritQuadTOTALS3ETM2 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS3ETM2)^2));
                xxAritQuadTOTALS3ETM3 = (xxAritQuadTOTALS3ETM3 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS3ETM3)^2));
                xxAritQuadTOTALS3ETM4 = (xxAritQuadTOTALS3ETM4 + ((pifTOTALS2TM4arrayRAND[n] - xAritTOTALS3ETM4)^2));
                xxAritQuadTOTALS3ETM5 = (xxAritQuadTOTALS3ETM5 + ((pifTOTALS2TM5arrayRAND[n] - xAritTOTALS3ETM5)^2));
                xxAritQuadTOTALS3ETM7 = (xxAritQuadTOTALS3ETM7 + ((pifTOTALS2TM7arrayRAND[n] - xAritTOTALS3ETM7)^2));
    
                yyAritQuadTOTALS3ETM1 = (yyAritQuadTOTALS3ETM1 + ((pifTOTALS3ETM1arrayRAND[n] - yAritTOTALS3ETM1)^2));
                yyAritQuadTOTALS3ETM2 = (yyAritQuadTOTALS3ETM2 + ((pifTOTALS3ETM2arrayRAND[n] - yAritTOTALS3ETM2)^2));
                yyAritQuadTOTALS3ETM3 = (yyAritQuadTOTALS3ETM3 + ((pifTOTALS3ETM3arrayRAND[n] - yAritTOTALS3ETM3)^2));
                yyAritQuadTOTALS3ETM4 = (yyAritQuadTOTALS3ETM4 + ((pifTOTALS3ETM4arrayRAND[n] - yAritTOTALS3ETM4)^2));
                yyAritQuadTOTALS3ETM5 = (yyAritQuadTOTALS3ETM5 + ((pifTOTALS3ETM5arrayRAND[n] - yAritTOTALS3ETM5)^2));
                yyAritQuadTOTALS3ETM7 = (yyAritQuadTOTALS3ETM7 + ((pifTOTALS3ETM7arrayRAND[n] - yAritTOTALS3ETM7)^2));
    
                qXYTOTALS3ETM1 = (qXYTOTALS3ETM1 + ((pifTOTALS2TM1arrayRAND[n] - xAritTOTALS3ETM1) * (pifTOTALS3ETM1arrayRAND[n] - yAritTOTALS3ETM1)));
                qXYTOTALS3ETM2 = (qXYTOTALS3ETM2 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS3ETM2) * (pifTOTALS3ETM2arrayRAND[n] - yAritTOTALS3ETM2)));
                qXYTOTALS3ETM3 = (qXYTOTALS3ETM3 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS3ETM3) * (pifTOTALS3ETM3arrayRAND[n] - yAritTOTALS3ETM3)));
                qXYTOTALS3ETM4 = (qXYTOTALS3ETM4 + ((pifTOTALS2TM4arrayRAND[n] - xAritTOTALS3ETM4) * (pifTOTALS3ETM4arrayRAND[n] - yAritTOTALS3ETM4)));
                qXYTOTALS3ETM5 = (qXYTOTALS3ETM5 + ((pifTOTALS2TM5arrayRAND[n] - xAritTOTALS3ETM5) * (pifTOTALS3ETM5arrayRAND[n] - yAritTOTALS3ETM5)));
                qXYTOTALS3ETM7 = (qXYTOTALS3ETM7 + ((pifTOTALS2TM7arrayRAND[n] - xAritTOTALS3ETM7) * (pifTOTALS3ETM7arrayRAND[n] - yAritTOTALS3ETM7)));
            }
        
            aTOTALS3ETM1 = (((xQuadTOTALS3ETM1 * yTOTALS3ETM1) - (xTOTALS3ETM1 * xyTOTALS3ETM1)) / ((minPifVAL * xQuadTOTALS3ETM1) - (xTOTALS3ETM1^2)));
            aTOTALS3ETM2 = (((xQuadTOTALS3ETM2 * yTOTALS3ETM2) - (xTOTALS3ETM2 * xyTOTALS3ETM2)) / ((minPifVAL * xQuadTOTALS3ETM2) - (xTOTALS3ETM2^2)));
            aTOTALS3ETM3 = (((xQuadTOTALS3ETM3 * yTOTALS3ETM3) - (xTOTALS3ETM3 * xyTOTALS3ETM3)) / ((minPifVAL * xQuadTOTALS3ETM3) - (xTOTALS3ETM3^2)));
            aTOTALS3ETM4 = (((xQuadTOTALS3ETM4 * yTOTALS3ETM4) - (xTOTALS3ETM4 * xyTOTALS3ETM4)) / ((minPifVAL * xQuadTOTALS3ETM4) - (xTOTALS3ETM4^2)));
            aTOTALS3ETM5 = (((xQuadTOTALS3ETM5 * yTOTALS3ETM5) - (xTOTALS3ETM5 * xyTOTALS3ETM5)) / ((minPifVAL * xQuadTOTALS3ETM5) - (xTOTALS3ETM5^2)));
            aTOTALS3ETM7 = (((xQuadTOTALS3ETM7 * yTOTALS3ETM7) - (xTOTALS3ETM7 * xyTOTALS3ETM7)) / ((minPifVAL * xQuadTOTALS3ETM7) - (xTOTALS3ETM7^2)));
            
            bTOTALS3ETM1 = qXYTOTALS3ETM1 / xxAritQuadTOTALS3ETM1;
            bTOTALS3ETM2 = qXYTOTALS3ETM2 / xxAritQuadTOTALS3ETM2;
            bTOTALS3ETM3 = qXYTOTALS3ETM3 / xxAritQuadTOTALS3ETM3;
            bTOTALS3ETM4 = qXYTOTALS3ETM4 / xxAritQuadTOTALS3ETM4;
            bTOTALS3ETM5 = qXYTOTALS3ETM5 / xxAritQuadTOTALS3ETM5;
            bTOTALS3ETM7 = qXYTOTALS3ETM7 / xxAritQuadTOTALS3ETM7;
    
            rTOTALS3ETM1 = (qXYTOTALS3ETM1 / ((xxAritQuadTOTALS3ETM1 * yyAritQuadTOTALS3ETM1)^0.5));
            rTOTALS3ETM2 = (qXYTOTALS3ETM2 / ((xxAritQuadTOTALS3ETM2 * yyAritQuadTOTALS3ETM2)^0.5));
            rTOTALS3ETM3 = (qXYTOTALS3ETM3 / ((xxAritQuadTOTALS3ETM3 * yyAritQuadTOTALS3ETM3)^0.5));
            rTOTALS3ETM4 = (qXYTOTALS3ETM4 / ((xxAritQuadTOTALS3ETM4 * yyAritQuadTOTALS3ETM4)^0.5));
            rTOTALS3ETM5 = (qXYTOTALS3ETM5 / ((xxAritQuadTOTALS3ETM5 * yyAritQuadTOTALS3ETM5)^0.5));
            rTOTALS3ETM7 = (qXYTOTALS3ETM7 / ((xxAritQuadTOTALS3ETM7 * yyAritQuadTOTALS3ETM7)^0.5));
    
            rQuadTOTALS3ETM1 = ((rTOTALS3ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3ETM2 = ((rTOTALS3ETM2^2) * 100);
            rQuadTOTALS3ETM3 = ((rTOTALS3ETM3^2) * 100);
            rQuadTOTALS3ETM4 = ((rTOTALS3ETM4^2) * 100);
            rQuadTOTALS3ETM5 = ((rTOTALS3ETM5^2) * 100);
            rQuadTOTALS3ETM7 = ((rTOTALS3ETM7^2) * 100);
        
            syxTOTALS3ETM1 = (((yyAritQuadTOTALS3ETM1 - ((qXYTOTALS3ETM1^2) / xxAritQuadTOTALS3ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM2 = (((yyAritQuadTOTALS3ETM2 - ((qXYTOTALS3ETM2^2) / xxAritQuadTOTALS3ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM3 = (((yyAritQuadTOTALS3ETM3 - ((qXYTOTALS3ETM3^2) / xxAritQuadTOTALS3ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM4 = (((yyAritQuadTOTALS3ETM4 - ((qXYTOTALS3ETM4^2) / xxAritQuadTOTALS3ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM5 = (((yyAritQuadTOTALS3ETM5 - ((qXYTOTALS3ETM5^2) / xxAritQuadTOTALS3ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM7 = (((yyAritQuadTOTALS3ETM7 - ((qXYTOTALS3ETM7^2) / xxAritQuadTOTALS3ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3ETM1 = (((syxTOTALS3ETM1^2) / xxAritQuadTOTALS3ETM1)^0.5);
            bStandTOTALS3ETM2 = (((syxTOTALS3ETM2^2) / xxAritQuadTOTALS3ETM2)^0.5);
            bStandTOTALS3ETM3 = (((syxTOTALS3ETM3^2) / xxAritQuadTOTALS3ETM3)^0.5);
            bStandTOTALS3ETM4 = (((syxTOTALS3ETM4^2) / xxAritQuadTOTALS3ETM4)^0.5);
            bStandTOTALS3ETM5 = (((syxTOTALS3ETM5^2) / xxAritQuadTOTALS3ETM5)^0.5);
            bStandTOTALS3ETM7 = (((syxTOTALS3ETM7^2) / xxAritQuadTOTALS3ETM7)^0.5);
    
            aStandTOTALS3ETM1 = (bStandTOTALS3ETM1 * ((xQuadTOTALS3ETM1 / minPifVAL)^0.5));
            aStandTOTALS3ETM2 = (bStandTOTALS3ETM2 * ((xQuadTOTALS3ETM2 / minPifVAL)^0.5));
            aStandTOTALS3ETM3 = (bStandTOTALS3ETM3 * ((xQuadTOTALS3ETM3 / minPifVAL)^0.5));
            aStandTOTALS3ETM4 = (bStandTOTALS3ETM4 * ((xQuadTOTALS3ETM4 / minPifVAL)^0.5));
            aStandTOTALS3ETM5 = (bStandTOTALS3ETM5 * ((xQuadTOTALS3ETM5 / minPifVAL)^0.5));
            aStandTOTALS3ETM7 = (bStandTOTALS3ETM7 * ((xQuadTOTALS3ETM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM1, bTOTALS3ETM1, rTOTALS3ETM1, rQuadTOTALS3ETM1, aStandTOTALS3ETM1, bStandTOTALS3ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM2, bTOTALS3ETM2, rTOTALS3ETM2, rQuadTOTALS3ETM2, aStandTOTALS3ETM2, bStandTOTALS3ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM3, bTOTALS3ETM3, rTOTALS3ETM3, rQuadTOTALS3ETM3, aStandTOTALS3ETM3, bStandTOTALS3ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM4, bTOTALS3ETM4, rTOTALS3ETM4, rQuadTOTALS3ETM4, aStandTOTALS3ETM4, bStandTOTALS3ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM5, bTOTALS3ETM5, rTOTALS3ETM5, rQuadTOTALS3ETM5, aStandTOTALS3ETM5, bStandTOTALS3ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS3ETM7, bTOTALS3ETM7, rTOTALS3ETM7, rQuadTOTALS3ETM7, aStandTOTALS3ETM7, bStandTOTALS3ETM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS3ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS3ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS3ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS3ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS3ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS3ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS3ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT3ETM1[i,j] = (aTOTALS3ETM1 + (bTOTALS3ETM1 * REFS3ETM1[i,j]));
                    OUT3ETM2[i,j] = (aTOTALS3ETM2 + (bTOTALS3ETM2 * REFS3ETM2[i,j]));
                    OUT3ETM3[i,j] = (aTOTALS3ETM3 + (bTOTALS3ETM3 * REFS3ETM3[i,j]));
                    OUT3ETM4[i,j] = (aTOTALS3ETM4 + (bTOTALS3ETM4 * REFS3ETM4[i,j]));
                    OUT3ETM5[i,j] = (aTOTALS3ETM5 + (bTOTALS3ETM5 * REFS3ETM5[i,j]));
                    OUT3ETM7[i,j] = (aTOTALS3ETM7 + (bTOTALS3ETM7 * REFS3ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3ETM1);
        	CreatePyramid(OUT3ETM2);
        	CreatePyramid(OUT3ETM3);
        	CreatePyramid(OUT3ETM4);
        	CreatePyramid(OUT3ETM5);
        	CreatePyramid(OUT3ETM7);
        
        	CreateHistogram(OUT3ETM1);
        	CreateHistogram(OUT3ETM2);
        	CreateHistogram(OUT3ETM3);
        	CreateHistogram(OUT3ETM4);
        	CreateHistogram(OUT3ETM5);
        	CreateHistogram(OUT3ETM7);
        
        	CloseRaster(REFS3ETM1);
            CloseRaster(REFS3ETM2);
            CloseRaster(REFS3ETM3);
            CloseRaster(REFS3ETM4);
            CloseRaster(REFS3ETM5);
            CloseRaster(REFS3ETM7);
    
            CloseRaster(OUT3ETM1);
            CloseRaster(OUT3ETM2);
            CloseRaster(OUT3ETM3);
            CloseRaster(OUT3ETM4);
            CloseRaster(OUT3ETM5);
            CloseRaster(OUT3ETM7);  
        
        	printf("Scene 3 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors3 == 6 )
            {
            numeric xAritTOTALS3TM1, xAritTOTALS3TM2, xAritTOTALS3TM3, xAritTOTALS3TM4, xAritTOTALS3TM5, xAritTOTALS3TM7;
            numeric yAritTOTALS3TM1, yAritTOTALS3TM2, yAritTOTALS3TM3, yAritTOTALS3TM4, yAritTOTALS3TM5, yAritTOTALS3TM7;
    
            numeric aTOTALS3TM1, aTOTALS3TM2, aTOTALS3TM3, aTOTALS3TM4, aTOTALS3TM5, aTOTALS3TM7;
            numeric bTOTALS3TM1, bTOTALS3TM2, bTOTALS3TM3, bTOTALS3TM4, bTOTALS3TM5, bTOTALS3TM7;
            numeric rTOTALS3TM1, rTOTALS3TM2, rTOTALS3TM3, rTOTALS3TM4, rTOTALS3TM5, rTOTALS3TM7;
            numeric rQuadTOTALS3TM1, rQuadTOTALS3TM2, rQuadTOTALS3TM3, rQuadTOTALS3TM4, rQuadTOTALS3TM5, rQuadTOTALS3TM7;
            numeric syxTOTALS3TM1, syxTOTALS3TM2, syxTOTALS3TM3, syxTOTALS3TM4, syxTOTALS3TM5, syxTOTALS3TM7;
            numeric bStandTOTALS3TM1, bStandTOTALS3TM2, bStandTOTALS3TM3, bStandTOTALS3TM4, bStandTOTALS3TM5, bStandTOTALS3TM7;
            numeric aStandTOTALS3TM1, aStandTOTALS3TM2, aStandTOTALS3TM3, aStandTOTALS3TM4, aStandTOTALS3TM5, aStandTOTALS3TM7;
    
            numeric xTOTALS3TM1 = 0;
            numeric xTOTALS3TM2 = 0;
            numeric xTOTALS3TM3 = 0;
            numeric xTOTALS3TM4 = 0;
            numeric xTOTALS3TM5 = 0;
            numeric xTOTALS3TM7 = 0;
    
            numeric xQuadTOTALS3TM1 = 0;
            numeric xQuadTOTALS3TM2 = 0;
            numeric xQuadTOTALS3TM3 = 0;
            numeric xQuadTOTALS3TM4 = 0;
            numeric xQuadTOTALS3TM5 = 0;
            numeric xQuadTOTALS3TM7 = 0;
    
            numeric yTOTALS3TM1 = 0;
            numeric yTOTALS3TM2 = 0;
            numeric yTOTALS3TM3 = 0;
            numeric yTOTALS3TM4 = 0;
            numeric yTOTALS3TM5 = 0;
            numeric yTOTALS3TM7 = 0;
    
            numeric yQuadTOTALS3TM1 = 0;
            numeric yQuadTOTALS3TM2 = 0;
            numeric yQuadTOTALS3TM3 = 0;
            numeric yQuadTOTALS3TM4 = 0;
            numeric yQuadTOTALS3TM5 = 0;
            numeric yQuadTOTALS3TM7 = 0;
    
            numeric xyTOTALS3TM1 = 0;
            numeric xyTOTALS3TM2 = 0;
            numeric xyTOTALS3TM3 = 0;
            numeric xyTOTALS3TM4 = 0;
            numeric xyTOTALS3TM5 = 0;
            numeric xyTOTALS3TM7 = 0;
    
            numeric xxAritQuadTOTALS3TM1 = 0;
            numeric xxAritQuadTOTALS3TM2 = 0;
            numeric xxAritQuadTOTALS3TM3 = 0;
            numeric xxAritQuadTOTALS3TM4 = 0;
            numeric xxAritQuadTOTALS3TM5 = 0;
            numeric xxAritQuadTOTALS3TM7 = 0;
    
            numeric yyAritQuadTOTALS3TM1 = 0;
            numeric yyAritQuadTOTALS3TM2 = 0;
            numeric yyAritQuadTOTALS3TM3 = 0;
            numeric yyAritQuadTOTALS3TM4 = 0;
            numeric yyAritQuadTOTALS3TM5 = 0;
            numeric yyAritQuadTOTALS3TM7 = 0;
    
            numeric qXYTOTALS3TM1 = 0;
            numeric qXYTOTALS3TM2 = 0;
            numeric qXYTOTALS3TM3 = 0;
            numeric qXYTOTALS3TM4 = 0;
            numeric qXYTOTALS3TM5 = 0;
            numeric qXYTOTALS3TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS3TM1 = xTOTALS3TM1 + pifTOTALS2TM1arrayRAND[m];
                xTOTALS3TM2 = xTOTALS3TM2 + pifTOTALS2TM2arrayRAND[m];
                xTOTALS3TM3 = xTOTALS3TM3 + pifTOTALS2TM3arrayRAND[m];
                xTOTALS3TM4 = xTOTALS3TM4 + pifTOTALS2TM4arrayRAND[m];
                xTOTALS3TM5 = xTOTALS3TM5 + pifTOTALS2TM5arrayRAND[m];
                xTOTALS3TM7 = xTOTALS3TM7 + pifTOTALS2TM7arrayRAND[m];
    
                xQuadTOTALS3TM1 = (xQuadTOTALS3TM1 + (pifTOTALS2TM1arrayRAND[m]^2));
                xQuadTOTALS3TM2 = (xQuadTOTALS3TM2 + (pifTOTALS2TM2arrayRAND[m]^2));
                xQuadTOTALS3TM3 = (xQuadTOTALS3TM3 + (pifTOTALS2TM3arrayRAND[m]^2));
                xQuadTOTALS3TM4 = (xQuadTOTALS3TM4 + (pifTOTALS2TM4arrayRAND[m]^2));
                xQuadTOTALS3TM5 = (xQuadTOTALS3TM5 + (pifTOTALS2TM5arrayRAND[m]^2));
                xQuadTOTALS3TM7 = (xQuadTOTALS3TM7 + (pifTOTALS2TM7arrayRAND[m]^2));
    
                yTOTALS3TM1 = yTOTALS3TM1 + pifTOTALS3TM1arrayRAND[m];
                yTOTALS3TM2 = yTOTALS3TM2 + pifTOTALS3TM2arrayRAND[m];
                yTOTALS3TM3 = yTOTALS3TM3 + pifTOTALS3TM3arrayRAND[m];
                yTOTALS3TM4 = yTOTALS3TM4 + pifTOTALS3TM4arrayRAND[m];
                yTOTALS3TM5 = yTOTALS3TM5 + pifTOTALS3TM5arrayRAND[m];
                yTOTALS3TM7 = yTOTALS3TM7 + pifTOTALS3TM7arrayRAND[m];
                
                yQuadTOTALS3TM1 = (yQuadTOTALS3TM1 + (pifTOTALS3TM1arrayRAND[m]^2));
                yQuadTOTALS3TM2 = (yQuadTOTALS3TM2 + (pifTOTALS3TM2arrayRAND[m]^2));
                yQuadTOTALS3TM3 = (yQuadTOTALS3TM3 + (pifTOTALS3TM3arrayRAND[m]^2));
                yQuadTOTALS3TM4 = (yQuadTOTALS3TM4 + (pifTOTALS3TM4arrayRAND[m]^2));
                yQuadTOTALS3TM5 = (yQuadTOTALS3TM5 + (pifTOTALS3TM5arrayRAND[m]^2));
                yQuadTOTALS3TM7 = (yQuadTOTALS3TM7 + (pifTOTALS3TM7arrayRAND[m]^2));
    
                xyTOTALS3TM1 = (xyTOTALS3TM1 + (pifTOTALS2TM1arrayRAND[m] * pifTOTALS3TM1arrayRAND[m]));
                xyTOTALS3TM2 = (xyTOTALS3TM2 + (pifTOTALS2TM2arrayRAND[m] * pifTOTALS3TM2arrayRAND[m]));
                xyTOTALS3TM3 = (xyTOTALS3TM3 + (pifTOTALS2TM3arrayRAND[m] * pifTOTALS3TM3arrayRAND[m]));
                xyTOTALS3TM4 = (xyTOTALS3TM4 + (pifTOTALS2TM4arrayRAND[m] * pifTOTALS3TM4arrayRAND[m]));
                xyTOTALS3TM5 = (xyTOTALS3TM5 + (pifTOTALS2TM5arrayRAND[m] * pifTOTALS3TM5arrayRAND[m]));
                xyTOTALS3TM7 = (xyTOTALS3TM7 + (pifTOTALS2TM7arrayRAND[m] * pifTOTALS3TM7arrayRAND[m]));
            }	
            
            xAritTOTALS3TM1 = xTOTALS3TM1 / minPifVAL;
            xAritTOTALS3TM2 = xTOTALS3TM2 / minPifVAL;
            xAritTOTALS3TM3 = xTOTALS3TM3 / minPifVAL;
            xAritTOTALS3TM4 = xTOTALS3TM4 / minPifVAL;
            xAritTOTALS3TM5 = xTOTALS3TM5 / minPifVAL;
            xAritTOTALS3TM7 = xTOTALS3TM7 / minPifVAL;
    
            yAritTOTALS3TM1 = yTOTALS3TM1 / minPifVAL;
            yAritTOTALS3TM2 = yTOTALS3TM2 / minPifVAL;
            yAritTOTALS3TM3 = yTOTALS3TM3 / minPifVAL;
            yAritTOTALS3TM4 = yTOTALS3TM4 / minPifVAL;
            yAritTOTALS3TM5 = yTOTALS3TM5 / minPifVAL;
            yAritTOTALS3TM7 = yTOTALS3TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3TM1 = (xxAritQuadTOTALS3TM1 + ((pifTOTALS2TM1arrayRAND[n] - xAritTOTALS3TM1)^2));
                xxAritQuadTOTALS3TM2 = (xxAritQuadTOTALS3TM2 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS3TM2)^2));
                xxAritQuadTOTALS3TM3 = (xxAritQuadTOTALS3TM3 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS3TM3)^2));
                xxAritQuadTOTALS3TM4 = (xxAritQuadTOTALS3TM4 + ((pifTOTALS2TM4arrayRAND[n] - xAritTOTALS3TM4)^2));
                xxAritQuadTOTALS3TM5 = (xxAritQuadTOTALS3TM5 + ((pifTOTALS2TM5arrayRAND[n] - xAritTOTALS3TM5)^2));
                xxAritQuadTOTALS3TM7 = (xxAritQuadTOTALS3TM7 + ((pifTOTALS2TM7arrayRAND[n] - xAritTOTALS3TM7)^2));
    
                yyAritQuadTOTALS3TM1 = (yyAritQuadTOTALS3TM1 + ((pifTOTALS3TM1arrayRAND[n] - yAritTOTALS3TM1)^2));
                yyAritQuadTOTALS3TM2 = (yyAritQuadTOTALS3TM2 + ((pifTOTALS3TM2arrayRAND[n] - yAritTOTALS3TM2)^2));
                yyAritQuadTOTALS3TM3 = (yyAritQuadTOTALS3TM3 + ((pifTOTALS3TM3arrayRAND[n] - yAritTOTALS3TM3)^2));
                yyAritQuadTOTALS3TM4 = (yyAritQuadTOTALS3TM4 + ((pifTOTALS3TM4arrayRAND[n] - yAritTOTALS3TM4)^2));
                yyAritQuadTOTALS3TM5 = (yyAritQuadTOTALS3TM5 + ((pifTOTALS3TM5arrayRAND[n] - yAritTOTALS3TM5)^2));
                yyAritQuadTOTALS3TM7 = (yyAritQuadTOTALS3TM7 + ((pifTOTALS3TM7arrayRAND[n] - yAritTOTALS3TM7)^2));
    
                qXYTOTALS3TM1 = (qXYTOTALS3TM1 + ((pifTOTALS2TM1arrayRAND[n] - xAritTOTALS3TM1) * (pifTOTALS3TM1arrayRAND[n] - yAritTOTALS3TM1)));
                qXYTOTALS3TM2 = (qXYTOTALS3TM2 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS3TM2) * (pifTOTALS3TM2arrayRAND[n] - yAritTOTALS3TM2)));
                qXYTOTALS3TM3 = (qXYTOTALS3TM3 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS3TM3) * (pifTOTALS3TM3arrayRAND[n] - yAritTOTALS3TM3)));
                qXYTOTALS3TM4 = (qXYTOTALS3TM4 + ((pifTOTALS2TM4arrayRAND[n] - xAritTOTALS3TM4) * (pifTOTALS3TM4arrayRAND[n] - yAritTOTALS3TM4)));
                qXYTOTALS3TM5 = (qXYTOTALS3TM5 + ((pifTOTALS2TM5arrayRAND[n] - xAritTOTALS3TM5) * (pifTOTALS3TM5arrayRAND[n] - yAritTOTALS3TM5)));
                qXYTOTALS3TM7 = (qXYTOTALS3TM7 + ((pifTOTALS2TM7arrayRAND[n] - xAritTOTALS3TM7) * (pifTOTALS3TM7arrayRAND[n] - yAritTOTALS3TM7)));
            }
        
            aTOTALS3TM1 = (((xQuadTOTALS3TM1 * yTOTALS3TM1) - (xTOTALS3TM1 * xyTOTALS3TM1)) / ((minPifVAL * xQuadTOTALS3TM1) - (xTOTALS3TM1^2)));
            aTOTALS3TM2 = (((xQuadTOTALS3TM2 * yTOTALS3TM2) - (xTOTALS3TM2 * xyTOTALS3TM2)) / ((minPifVAL * xQuadTOTALS3TM2) - (xTOTALS3TM2^2)));
            aTOTALS3TM3 = (((xQuadTOTALS3TM3 * yTOTALS3TM3) - (xTOTALS3TM3 * xyTOTALS3TM3)) / ((minPifVAL * xQuadTOTALS3TM3) - (xTOTALS3TM3^2)));
            aTOTALS3TM4 = (((xQuadTOTALS3TM4 * yTOTALS3TM4) - (xTOTALS3TM4 * xyTOTALS3TM4)) / ((minPifVAL * xQuadTOTALS3TM4) - (xTOTALS3TM4^2)));
            aTOTALS3TM5 = (((xQuadTOTALS3TM5 * yTOTALS3TM5) - (xTOTALS3TM5 * xyTOTALS3TM5)) / ((minPifVAL * xQuadTOTALS3TM5) - (xTOTALS3TM5^2)));
            aTOTALS3TM7 = (((xQuadTOTALS3TM7 * yTOTALS3TM7) - (xTOTALS3TM7 * xyTOTALS3TM7)) / ((minPifVAL * xQuadTOTALS3TM7) - (xTOTALS3TM7^2)));
            
            bTOTALS3TM1 = qXYTOTALS3TM1 / xxAritQuadTOTALS3TM1;
            bTOTALS3TM2 = qXYTOTALS3TM2 / xxAritQuadTOTALS3TM2;
            bTOTALS3TM3 = qXYTOTALS3TM3 / xxAritQuadTOTALS3TM3;
            bTOTALS3TM4 = qXYTOTALS3TM4 / xxAritQuadTOTALS3TM4;
            bTOTALS3TM5 = qXYTOTALS3TM5 / xxAritQuadTOTALS3TM5;
            bTOTALS3TM7 = qXYTOTALS3TM7 / xxAritQuadTOTALS3TM7;
    
            rTOTALS3TM1 = (qXYTOTALS3TM1 / ((xxAritQuadTOTALS3TM1 * yyAritQuadTOTALS3TM1)^0.5));
            rTOTALS3TM2 = (qXYTOTALS3TM2 / ((xxAritQuadTOTALS3TM2 * yyAritQuadTOTALS3TM2)^0.5));
            rTOTALS3TM3 = (qXYTOTALS3TM3 / ((xxAritQuadTOTALS3TM3 * yyAritQuadTOTALS3TM3)^0.5));
            rTOTALS3TM4 = (qXYTOTALS3TM4 / ((xxAritQuadTOTALS3TM4 * yyAritQuadTOTALS3TM4)^0.5));
            rTOTALS3TM5 = (qXYTOTALS3TM5 / ((xxAritQuadTOTALS3TM5 * yyAritQuadTOTALS3TM5)^0.5));
            rTOTALS3TM7 = (qXYTOTALS3TM7 / ((xxAritQuadTOTALS3TM7 * yyAritQuadTOTALS3TM7)^0.5));
    
            rQuadTOTALS3TM1 = ((rTOTALS3TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3TM2 = ((rTOTALS3TM2^2) * 100);
            rQuadTOTALS3TM3 = ((rTOTALS3TM3^2) * 100);
            rQuadTOTALS3TM4 = ((rTOTALS3TM4^2) * 100);
            rQuadTOTALS3TM5 = ((rTOTALS3TM5^2) * 100);
            rQuadTOTALS3TM7 = ((rTOTALS3TM7^2) * 100);
        
            syxTOTALS3TM1 = (((yyAritQuadTOTALS3TM1 - ((qXYTOTALS3TM1^2) / xxAritQuadTOTALS3TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM2 = (((yyAritQuadTOTALS3TM2 - ((qXYTOTALS3TM2^2) / xxAritQuadTOTALS3TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM3 = (((yyAritQuadTOTALS3TM3 - ((qXYTOTALS3TM3^2) / xxAritQuadTOTALS3TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM4 = (((yyAritQuadTOTALS3TM4 - ((qXYTOTALS3TM4^2) / xxAritQuadTOTALS3TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM5 = (((yyAritQuadTOTALS3TM5 - ((qXYTOTALS3TM5^2) / xxAritQuadTOTALS3TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM7 = (((yyAritQuadTOTALS3TM7 - ((qXYTOTALS3TM7^2) / xxAritQuadTOTALS3TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3TM1 = (((syxTOTALS3TM1^2) / xxAritQuadTOTALS3TM1)^0.5);
            bStandTOTALS3TM2 = (((syxTOTALS3TM2^2) / xxAritQuadTOTALS3TM2)^0.5);
            bStandTOTALS3TM3 = (((syxTOTALS3TM3^2) / xxAritQuadTOTALS3TM3)^0.5);
            bStandTOTALS3TM4 = (((syxTOTALS3TM4^2) / xxAritQuadTOTALS3TM4)^0.5);
            bStandTOTALS3TM5 = (((syxTOTALS3TM5^2) / xxAritQuadTOTALS3TM5)^0.5);
            bStandTOTALS3TM7 = (((syxTOTALS3TM7^2) / xxAritQuadTOTALS3TM7)^0.5);
    
            aStandTOTALS3TM1 = (bStandTOTALS3TM1 * ((xQuadTOTALS3TM1 / minPifVAL)^0.5));
            aStandTOTALS3TM2 = (bStandTOTALS3TM2 * ((xQuadTOTALS3TM2 / minPifVAL)^0.5));
            aStandTOTALS3TM3 = (bStandTOTALS3TM3 * ((xQuadTOTALS3TM3 / minPifVAL)^0.5));
            aStandTOTALS3TM4 = (bStandTOTALS3TM4 * ((xQuadTOTALS3TM4 / minPifVAL)^0.5));
            aStandTOTALS3TM5 = (bStandTOTALS3TM5 * ((xQuadTOTALS3TM5 / minPifVAL)^0.5));
            aStandTOTALS3TM7 = (bStandTOTALS3TM7 * ((xQuadTOTALS3TM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM1, bTOTALS3TM1, rTOTALS3TM1, rQuadTOTALS3TM1, aStandTOTALS3TM1, bStandTOTALS3TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM2, bTOTALS3TM2, rTOTALS3TM2, rQuadTOTALS3TM2, aStandTOTALS3TM2, bStandTOTALS3TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM3, bTOTALS3TM3, rTOTALS3TM3, rQuadTOTALS3TM3, aStandTOTALS3TM3, bStandTOTALS3TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM4, bTOTALS3TM4, rTOTALS3TM4, rQuadTOTALS3TM4, aStandTOTALS3TM4, bStandTOTALS3TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM5, bTOTALS3TM5, rTOTALS3TM5, rQuadTOTALS3TM5, aStandTOTALS3TM5, bStandTOTALS3TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS3TM7, bTOTALS3TM7, rTOTALS3TM7, rQuadTOTALS3TM7, aStandTOTALS3TM7, bStandTOTALS3TM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS3TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS3TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS3TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS3TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS3TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS3TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS3TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT3TM1[i,j] = (aTOTALS3TM1 + (bTOTALS3TM1 * REFS3TM1[i,j]));
                    OUT3TM2[i,j] = (aTOTALS3TM2 + (bTOTALS3TM2 * REFS3TM2[i,j]));
                    OUT3TM3[i,j] = (aTOTALS3TM3 + (bTOTALS3TM3 * REFS3TM3[i,j]));
                    OUT3TM4[i,j] = (aTOTALS3TM4 + (bTOTALS3TM4 * REFS3TM4[i,j]));
                    OUT3TM5[i,j] = (aTOTALS3TM5 + (bTOTALS3TM5 * REFS3TM5[i,j]));
                    OUT3TM7[i,j] = (aTOTALS3TM7 + (bTOTALS3TM7 * REFS3TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3TM1);
        	CreatePyramid(OUT3TM2);
        	CreatePyramid(OUT3TM3);
        	CreatePyramid(OUT3TM4);
        	CreatePyramid(OUT3TM5);
        	CreatePyramid(OUT3TM7);
        
        	CreateHistogram(OUT3TM1);
        	CreateHistogram(OUT3TM2);
        	CreateHistogram(OUT3TM3);
        	CreateHistogram(OUT3TM4);
        	CreateHistogram(OUT3TM5);
        	CreateHistogram(OUT3TM7);
        
        	CloseRaster(REFS3TM1);
            CloseRaster(REFS3TM2);
            CloseRaster(REFS3TM3);
            CloseRaster(REFS3TM4);
            CloseRaster(REFS3TM5);
            CloseRaster(REFS3TM7);
    
            CloseRaster(OUT3TM1);
            CloseRaster(OUT3TM2);
            CloseRaster(OUT3TM3);
            CloseRaster(OUT3TM4);
            CloseRaster(OUT3TM5);
            CloseRaster(OUT3TM7);
        
        	printf("Scene 3 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS3MSS1, xAritTOTALS3MSS2, xAritTOTALS3MSS4;
            numeric yAritTOTALS3MSS1, yAritTOTALS3MSS2, yAritTOTALS3MSS4;
    
            numeric aTOTALS3MSS1, aTOTALS3MSS2, aTOTALS3MSS4;
            numeric bTOTALS3MSS1, bTOTALS3MSS2, bTOTALS3MSS4;
            numeric rTOTALS3MSS1, rTOTALS3MSS2, rTOTALS3MSS4;
            numeric rQuadTOTALS3MSS1, rQuadTOTALS3MSS2, rQuadTOTALS3MSS4;
            numeric syxTOTALS3MSS1, syxTOTALS3MSS2, syxTOTALS3MSS4;
            numeric bStandTOTALS3MSS1, bStandTOTALS3MSS2, bStandTOTALS3MSS4;
            numeric aStandTOTALS3MSS1, aStandTOTALS3MSS2, aStandTOTALS3MSS4;
    
            numeric xTOTALS3MSS1 = 0;
            numeric xTOTALS3MSS2 = 0;
            numeric xTOTALS3MSS4 = 0;
    
            numeric xQuadTOTALS3MSS1 = 0;
            numeric xQuadTOTALS3MSS2 = 0;
            numeric xQuadTOTALS3MSS4 = 0;
    
            numeric yTOTALS3MSS1 = 0;
            numeric yTOTALS3MSS2 = 0;
            numeric yTOTALS3MSS4 = 0;
    
            numeric yQuadTOTALS3MSS1 = 0;
            numeric yQuadTOTALS3MSS2 = 0;
            numeric yQuadTOTALS3MSS4 = 0;
    
            numeric xyTOTALS3MSS1 = 0;
            numeric xyTOTALS3MSS2 = 0;
            numeric xyTOTALS3MSS4 = 0;
    
            numeric xxAritQuadTOTALS3MSS1 = 0;
            numeric xxAritQuadTOTALS3MSS2 = 0;
            numeric xxAritQuadTOTALS3MSS4 = 0;
    
            numeric yyAritQuadTOTALS3MSS1 = 0;
            numeric yyAritQuadTOTALS3MSS2 = 0;
            numeric yyAritQuadTOTALS3MSS4 = 0;
    
            numeric qXYTOTALS3MSS1 = 0;
            numeric qXYTOTALS3MSS2 = 0;
            numeric qXYTOTALS3MSS4 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS3MSS1 = xTOTALS3MSS1 + pifTOTALS2TM2arrayRAND[m];
                xTOTALS3MSS2 = xTOTALS3MSS2 + pifTOTALS2TM3arrayRAND[m];
                xTOTALS3MSS4 = xTOTALS3MSS4 + pifTOTALS2TM4arrayRAND[m];
    
                xQuadTOTALS3MSS1 = (xQuadTOTALS3MSS1 + (pifTOTALS2TM2arrayRAND[m]^2));
                xQuadTOTALS3MSS2 = (xQuadTOTALS3MSS2 + (pifTOTALS2TM3arrayRAND[m]^2));
                xQuadTOTALS3MSS4 = (xQuadTOTALS3MSS4 + (pifTOTALS2TM4arrayRAND[m]^2));
    
                yTOTALS3MSS1 = yTOTALS3MSS1 + pifTOTALS3MSS1arrayRAND[m];
                yTOTALS3MSS2 = yTOTALS3MSS2 + pifTOTALS3MSS2arrayRAND[m];
                yTOTALS3MSS4 = yTOTALS3MSS4 + pifTOTALS3MSS4arrayRAND[m];
                
                yQuadTOTALS3MSS1 = (yQuadTOTALS3MSS1 + (pifTOTALS3MSS1arrayRAND[m]^2));
                yQuadTOTALS3MSS2 = (yQuadTOTALS3MSS2 + (pifTOTALS3MSS2arrayRAND[m]^2));
                yQuadTOTALS3MSS4 = (yQuadTOTALS3MSS4 + (pifTOTALS3MSS4arrayRAND[m]^2));
    
                xyTOTALS3MSS1 = (xyTOTALS3MSS1 + (pifTOTALS2TM2arrayRAND[m] * pifTOTALS3MSS1arrayRAND[m]));
                xyTOTALS3MSS2 = (xyTOTALS3MSS2 + (pifTOTALS2TM3arrayRAND[m] * pifTOTALS3MSS2arrayRAND[m]));
                xyTOTALS3MSS4 = (xyTOTALS3MSS4 + (pifTOTALS2TM4arrayRAND[m] * pifTOTALS3MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS3MSS1 = xTOTALS3MSS1 / minPifVAL;
            xAritTOTALS3MSS2 = xTOTALS3MSS2 / minPifVAL;
            xAritTOTALS3MSS4 = xTOTALS3MSS4 / minPifVAL;
    
            yAritTOTALS3MSS1 = yTOTALS3MSS1 / minPifVAL;
            yAritTOTALS3MSS2 = yTOTALS3MSS2 / minPifVAL;
            yAritTOTALS3MSS4 = yTOTALS3MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3MSS1 = (xxAritQuadTOTALS3MSS1 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS3MSS1)^2));
                xxAritQuadTOTALS3MSS2 = (xxAritQuadTOTALS3MSS2 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS3MSS2)^2));
                xxAritQuadTOTALS3MSS4 = (xxAritQuadTOTALS3MSS4 + ((pifTOTALS2TM4arrayRAND[n] - xAritTOTALS3MSS4)^2));
    
                yyAritQuadTOTALS3MSS1 = (yyAritQuadTOTALS3MSS1 + ((pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)^2));
                yyAritQuadTOTALS3MSS2 = (yyAritQuadTOTALS3MSS2 + ((pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)^2));
                yyAritQuadTOTALS3MSS4 = (yyAritQuadTOTALS3MSS4 + ((pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)^2));
    
                qXYTOTALS3MSS1 = (qXYTOTALS3MSS1 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS3MSS1) * (pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)));
                qXYTOTALS3MSS2 = (qXYTOTALS3MSS2 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS3MSS2) * (pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)));
                qXYTOTALS3MSS4 = (qXYTOTALS3MSS4 + ((pifTOTALS2TM4arrayRAND[n] - xAritTOTALS3MSS4) * (pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)));
            }
        
            aTOTALS3MSS1 = (((xQuadTOTALS3MSS1 * yTOTALS3MSS1) - (xTOTALS3MSS1 * xyTOTALS3MSS1)) / ((minPifVAL * xQuadTOTALS3MSS1) - (xTOTALS3MSS1^2)));
            aTOTALS3MSS2 = (((xQuadTOTALS3MSS2 * yTOTALS3MSS2) - (xTOTALS3MSS2 * xyTOTALS3MSS2)) / ((minPifVAL * xQuadTOTALS3MSS2) - (xTOTALS3MSS2^2)));
            aTOTALS3MSS4 = (((xQuadTOTALS3MSS4 * yTOTALS3MSS4) - (xTOTALS3MSS4 * xyTOTALS3MSS4)) / ((minPifVAL * xQuadTOTALS3MSS4) - (xTOTALS3MSS4^2)));
            
            bTOTALS3MSS1 = qXYTOTALS3MSS1 / xxAritQuadTOTALS3MSS1;
            bTOTALS3MSS2 = qXYTOTALS3MSS2 / xxAritQuadTOTALS3MSS2;
            bTOTALS3MSS4 = qXYTOTALS3MSS4 / xxAritQuadTOTALS3MSS4;
    
            rTOTALS3MSS1 = (qXYTOTALS3MSS1 / ((xxAritQuadTOTALS3MSS1 * yyAritQuadTOTALS3MSS1)^0.5));
            rTOTALS3MSS2 = (qXYTOTALS3MSS2 / ((xxAritQuadTOTALS3MSS2 * yyAritQuadTOTALS3MSS2)^0.5));
            rTOTALS3MSS4 = (qXYTOTALS3MSS4 / ((xxAritQuadTOTALS3MSS4 * yyAritQuadTOTALS3MSS4)^0.5));
    
            rQuadTOTALS3MSS1 = ((rTOTALS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3MSS2 = ((rTOTALS3MSS2^2) * 100);
            rQuadTOTALS3MSS4 = ((rTOTALS3MSS4^2) * 100);
        
            syxTOTALS3MSS1 = (((yyAritQuadTOTALS3MSS1 - ((qXYTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS2 = (((yyAritQuadTOTALS3MSS2 - ((qXYTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS4 = (((yyAritQuadTOTALS3MSS4 - ((qXYTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3MSS1 = (((syxTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)^0.5);
            bStandTOTALS3MSS2 = (((syxTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)^0.5);
            bStandTOTALS3MSS4 = (((syxTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)^0.5);
    
            aStandTOTALS3MSS1 = (bStandTOTALS3MSS1 * ((xQuadTOTALS3MSS1 / minPifVAL)^0.5));
            aStandTOTALS3MSS2 = (bStandTOTALS3MSS2 * ((xQuadTOTALS3MSS2 / minPifVAL)^0.5));
            aStandTOTALS3MSS4 = (bStandTOTALS3MSS4 * ((xQuadTOTALS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS1, bTOTALS3MSS1, rTOTALS3MSS1, rQuadTOTALS3MSS1, aStandTOTALS3MSS1, bStandTOTALS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS2, bTOTALS3MSS2, rTOTALS3MSS2, rQuadTOTALS3MSS2, aStandTOTALS3MSS2, bStandTOTALS3MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS4, bTOTALS3MSS4, rTOTALS3MSS4, rQuadTOTALS3MSS4, aStandTOTALS3MSS4, bStandTOTALS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS3MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS3MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS2arrayRAND[minPifVAL]);
        
            printf("MSS4: %12f ", pifTOTALS3MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aTOTALS3MSS1 + (bTOTALS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aTOTALS3MSS2 + (bTOTALS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = REFS3MSS3[i,j];
                    OUT3MSS4[i,j] = (aTOTALS3MSS4 + (bTOTALS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT3MSS1);
        	CreatePyramid(OUT3MSS2);
        	CreatePyramid(OUT3MSS3);
        	CreatePyramid(OUT3MSS4);
        
        	CreateHistogram(OUT3MSS1);
        	CreateHistogram(OUT3MSS2);
        	CreateHistogram(OUT3MSS3);
        	CreateHistogram(OUT3MSS4);
        
        	CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
        
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors4 == 7 )
            {
            numeric xAritTOTALS4ETM1, xAritTOTALS4ETM2, xAritTOTALS4ETM3, xAritTOTALS4ETM4, xAritTOTALS4ETM5, xAritTOTALS4ETM7;
            numeric yAritTOTALS4ETM1, yAritTOTALS4ETM2, yAritTOTALS4ETM3, yAritTOTALS4ETM4, yAritTOTALS4ETM5, yAritTOTALS4ETM7;
    
            numeric aTOTALS4ETM1, aTOTALS4ETM2, aTOTALS4ETM3, aTOTALS4ETM4, aTOTALS4ETM5, aTOTALS4ETM7;
            numeric bTOTALS4ETM1, bTOTALS4ETM2, bTOTALS4ETM3, bTOTALS4ETM4, bTOTALS4ETM5, bTOTALS4ETM7;
            numeric rTOTALS4ETM1, rTOTALS4ETM2, rTOTALS4ETM3, rTOTALS4ETM4, rTOTALS4ETM5, rTOTALS4ETM7;
            numeric rQuadTOTALS4ETM1, rQuadTOTALS4ETM2, rQuadTOTALS4ETM3, rQuadTOTALS4ETM4, rQuadTOTALS4ETM5, rQuadTOTALS4ETM7;
            numeric syxTOTALS4ETM1, syxTOTALS4ETM2, syxTOTALS4ETM3, syxTOTALS4ETM4, syxTOTALS4ETM5, syxTOTALS4ETM7;
            numeric bStandTOTALS4ETM1, bStandTOTALS4ETM2, bStandTOTALS4ETM3, bStandTOTALS4ETM4, bStandTOTALS4ETM5, bStandTOTALS4ETM7;
            numeric aStandTOTALS4ETM1, aStandTOTALS4ETM2, aStandTOTALS4ETM3, aStandTOTALS4ETM4, aStandTOTALS4ETM5, aStandTOTALS4ETM7;
    
            numeric xTOTALS4ETM1 = 0;
            numeric xTOTALS4ETM2 = 0;
            numeric xTOTALS4ETM3 = 0;
            numeric xTOTALS4ETM4 = 0;
            numeric xTOTALS4ETM5 = 0;
            numeric xTOTALS4ETM7 = 0;
    
            numeric xQuadTOTALS4ETM1 = 0;
            numeric xQuadTOTALS4ETM2 = 0;
            numeric xQuadTOTALS4ETM3 = 0;
            numeric xQuadTOTALS4ETM4 = 0;
            numeric xQuadTOTALS4ETM5 = 0;
            numeric xQuadTOTALS4ETM7 = 0;
    
            numeric yTOTALS4ETM1 = 0;
            numeric yTOTALS4ETM2 = 0;
            numeric yTOTALS4ETM3 = 0;
            numeric yTOTALS4ETM4 = 0;
            numeric yTOTALS4ETM5 = 0;
            numeric yTOTALS4ETM7 = 0;
    
            numeric yQuadTOTALS4ETM1 = 0;
            numeric yQuadTOTALS4ETM2 = 0;
            numeric yQuadTOTALS4ETM3 = 0;
            numeric yQuadTOTALS4ETM4 = 0;
            numeric yQuadTOTALS4ETM5 = 0;
            numeric yQuadTOTALS4ETM7 = 0;
    
            numeric xyTOTALS4ETM1 = 0;
            numeric xyTOTALS4ETM2 = 0;
            numeric xyTOTALS4ETM3 = 0;
            numeric xyTOTALS4ETM4 = 0;
            numeric xyTOTALS4ETM5 = 0;
            numeric xyTOTALS4ETM7 = 0;
    
            numeric xxAritQuadTOTALS4ETM1 = 0;
            numeric xxAritQuadTOTALS4ETM2 = 0;
            numeric xxAritQuadTOTALS4ETM3 = 0;
            numeric xxAritQuadTOTALS4ETM4 = 0;
            numeric xxAritQuadTOTALS4ETM5 = 0;
            numeric xxAritQuadTOTALS4ETM7 = 0;
    
            numeric yyAritQuadTOTALS4ETM1 = 0;
            numeric yyAritQuadTOTALS4ETM2 = 0;
            numeric yyAritQuadTOTALS4ETM3 = 0;
            numeric yyAritQuadTOTALS4ETM4 = 0;
            numeric yyAritQuadTOTALS4ETM5 = 0;
            numeric yyAritQuadTOTALS4ETM7 = 0;
    
            numeric qXYTOTALS4ETM1 = 0;
            numeric qXYTOTALS4ETM2 = 0;
            numeric qXYTOTALS4ETM3 = 0;
            numeric qXYTOTALS4ETM4 = 0;
            numeric qXYTOTALS4ETM5 = 0;
            numeric qXYTOTALS4ETM7 = 0;
            
            for m = 1 to minPifVAL
           {		
                xTOTALS4ETM1 = xTOTALS4ETM1 + pifTOTALS2TM1arrayRAND[m];
                xTOTALS4ETM2 = xTOTALS4ETM2 + pifTOTALS2TM2arrayRAND[m];
                xTOTALS4ETM3 = xTOTALS4ETM3 + pifTOTALS2TM3arrayRAND[m];
                xTOTALS4ETM4 = xTOTALS4ETM4 + pifTOTALS2TM4arrayRAND[m];
                xTOTALS4ETM5 = xTOTALS4ETM5 + pifTOTALS2TM5arrayRAND[m];
                xTOTALS4ETM7 = xTOTALS4ETM7 + pifTOTALS2TM7arrayRAND[m];
    
                xQuadTOTALS4ETM1 = (xQuadTOTALS4ETM1 + (pifTOTALS2TM1arrayRAND[m]^2));
                xQuadTOTALS4ETM2 = (xQuadTOTALS4ETM2 + (pifTOTALS2TM2arrayRAND[m]^2));
                xQuadTOTALS4ETM3 = (xQuadTOTALS4ETM3 + (pifTOTALS2TM3arrayRAND[m]^2));
                xQuadTOTALS4ETM4 = (xQuadTOTALS4ETM4 + (pifTOTALS2TM4arrayRAND[m]^2));
                xQuadTOTALS4ETM5 = (xQuadTOTALS4ETM5 + (pifTOTALS2TM5arrayRAND[m]^2));
                xQuadTOTALS4ETM7 = (xQuadTOTALS4ETM7 + (pifTOTALS2TM7arrayRAND[m]^2));
    
                yTOTALS4ETM1 = yTOTALS4ETM1 + pifTOTALS4ETM1arrayRAND[m];
                yTOTALS4ETM2 = yTOTALS4ETM2 + pifTOTALS4ETM2arrayRAND[m];
                yTOTALS4ETM3 = yTOTALS4ETM3 + pifTOTALS4ETM3arrayRAND[m];
                yTOTALS4ETM4 = yTOTALS4ETM4 + pifTOTALS4ETM4arrayRAND[m];
                yTOTALS4ETM5 = yTOTALS4ETM5 + pifTOTALS4ETM5arrayRAND[m];
                yTOTALS4ETM7 = yTOTALS4ETM7 + pifTOTALS4ETM7arrayRAND[m];
                
                yQuadTOTALS4ETM1 = (yQuadTOTALS4ETM1 + (pifTOTALS4ETM1arrayRAND[m]^2));
                yQuadTOTALS4ETM2 = (yQuadTOTALS4ETM2 + (pifTOTALS4ETM2arrayRAND[m]^2));
                yQuadTOTALS4ETM3 = (yQuadTOTALS4ETM3 + (pifTOTALS4ETM3arrayRAND[m]^2));
                yQuadTOTALS4ETM4 = (yQuadTOTALS4ETM4 + (pifTOTALS4ETM4arrayRAND[m]^2));
                yQuadTOTALS4ETM5 = (yQuadTOTALS4ETM5 + (pifTOTALS4ETM5arrayRAND[m]^2));
                yQuadTOTALS4ETM7 = (yQuadTOTALS4ETM7 + (pifTOTALS4ETM7arrayRAND[m]^2));
    
                xyTOTALS4ETM1 = (xyTOTALS4ETM1 + (pifTOTALS2TM1arrayRAND[m] * pifTOTALS4ETM1arrayRAND[m]));
                xyTOTALS4ETM2 = (xyTOTALS4ETM2 + (pifTOTALS2TM2arrayRAND[m] * pifTOTALS4ETM2arrayRAND[m]));
                xyTOTALS4ETM3 = (xyTOTALS4ETM3 + (pifTOTALS2TM3arrayRAND[m] * pifTOTALS4ETM3arrayRAND[m]));
                xyTOTALS4ETM4 = (xyTOTALS4ETM4 + (pifTOTALS2TM4arrayRAND[m] * pifTOTALS4ETM4arrayRAND[m]));
                xyTOTALS4ETM5 = (xyTOTALS4ETM5 + (pifTOTALS2TM5arrayRAND[m] * pifTOTALS4ETM5arrayRAND[m]));
                xyTOTALS4ETM7 = (xyTOTALS4ETM7 + (pifTOTALS2TM7arrayRAND[m] * pifTOTALS4ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS4ETM1 = xTOTALS4ETM1 / minPifVAL;
            xAritTOTALS4ETM2 = xTOTALS4ETM2 / minPifVAL;
            xAritTOTALS4ETM3 = xTOTALS4ETM3 / minPifVAL;
            xAritTOTALS4ETM4 = xTOTALS4ETM4 / minPifVAL;
            xAritTOTALS4ETM5 = xTOTALS4ETM5 / minPifVAL;
            xAritTOTALS4ETM7 = xTOTALS4ETM7 / minPifVAL;
    
            yAritTOTALS4ETM1 = yTOTALS4ETM1 / minPifVAL;
            yAritTOTALS4ETM2 = yTOTALS4ETM2 / minPifVAL;
            yAritTOTALS4ETM3 = yTOTALS4ETM3 / minPifVAL;
            yAritTOTALS4ETM4 = yTOTALS4ETM4 / minPifVAL;
            yAritTOTALS4ETM5 = yTOTALS4ETM5 / minPifVAL;
            yAritTOTALS4ETM7 = yTOTALS4ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4ETM1 = (xxAritQuadTOTALS4ETM1 + ((pifTOTALS2TM1arrayRAND[n] - xAritTOTALS4ETM1)^2));
                xxAritQuadTOTALS4ETM2 = (xxAritQuadTOTALS4ETM2 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS4ETM2)^2));
                xxAritQuadTOTALS4ETM3 = (xxAritQuadTOTALS4ETM3 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS4ETM3)^2));
                xxAritQuadTOTALS4ETM4 = (xxAritQuadTOTALS4ETM4 + ((pifTOTALS2TM4arrayRAND[n] - xAritTOTALS4ETM4)^2));
                xxAritQuadTOTALS4ETM5 = (xxAritQuadTOTALS4ETM5 + ((pifTOTALS2TM5arrayRAND[n] - xAritTOTALS4ETM5)^2));
                xxAritQuadTOTALS4ETM7 = (xxAritQuadTOTALS4ETM7 + ((pifTOTALS2TM7arrayRAND[n] - xAritTOTALS4ETM7)^2));
    
                yyAritQuadTOTALS4ETM1 = (yyAritQuadTOTALS4ETM1 + ((pifTOTALS4ETM1arrayRAND[n] - yAritTOTALS4ETM1)^2));
                yyAritQuadTOTALS4ETM2 = (yyAritQuadTOTALS4ETM2 + ((pifTOTALS4ETM2arrayRAND[n] - yAritTOTALS4ETM2)^2));
                yyAritQuadTOTALS4ETM3 = (yyAritQuadTOTALS4ETM3 + ((pifTOTALS4ETM3arrayRAND[n] - yAritTOTALS4ETM3)^2));
                yyAritQuadTOTALS4ETM4 = (yyAritQuadTOTALS4ETM4 + ((pifTOTALS4ETM4arrayRAND[n] - yAritTOTALS4ETM4)^2));
                yyAritQuadTOTALS4ETM5 = (yyAritQuadTOTALS4ETM5 + ((pifTOTALS4ETM5arrayRAND[n] - yAritTOTALS4ETM5)^2));
                yyAritQuadTOTALS4ETM7 = (yyAritQuadTOTALS4ETM7 + ((pifTOTALS4ETM7arrayRAND[n] - yAritTOTALS4ETM7)^2));
    
                qXYTOTALS4ETM1 = (qXYTOTALS4ETM1 + ((pifTOTALS2TM1arrayRAND[n] - xAritTOTALS4ETM1) * (pifTOTALS4ETM1arrayRAND[n] - yAritTOTALS4ETM1)));
                qXYTOTALS4ETM2 = (qXYTOTALS4ETM2 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS4ETM2) * (pifTOTALS4ETM2arrayRAND[n] - yAritTOTALS4ETM2)));
                qXYTOTALS4ETM3 = (qXYTOTALS4ETM3 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS4ETM3) * (pifTOTALS4ETM3arrayRAND[n] - yAritTOTALS4ETM3)));
                qXYTOTALS4ETM4 = (qXYTOTALS4ETM4 + ((pifTOTALS2TM4arrayRAND[n] - xAritTOTALS4ETM4) * (pifTOTALS4ETM4arrayRAND[n] - yAritTOTALS4ETM4)));
                qXYTOTALS4ETM5 = (qXYTOTALS4ETM5 + ((pifTOTALS2TM5arrayRAND[n] - xAritTOTALS4ETM5) * (pifTOTALS4ETM5arrayRAND[n] - yAritTOTALS4ETM5)));
                qXYTOTALS4ETM7 = (qXYTOTALS4ETM7 + ((pifTOTALS2TM7arrayRAND[n] - xAritTOTALS4ETM7) * (pifTOTALS4ETM7arrayRAND[n] - yAritTOTALS4ETM7)));
            }
        
            aTOTALS4ETM1 = (((xQuadTOTALS4ETM1 * yTOTALS4ETM1) - (xTOTALS4ETM1 * xyTOTALS4ETM1)) / ((minPifVAL * xQuadTOTALS4ETM1) - (xTOTALS4ETM1^2)));
            aTOTALS4ETM2 = (((xQuadTOTALS4ETM2 * yTOTALS4ETM2) - (xTOTALS4ETM2 * xyTOTALS4ETM2)) / ((minPifVAL * xQuadTOTALS4ETM2) - (xTOTALS4ETM2^2)));
            aTOTALS4ETM3 = (((xQuadTOTALS4ETM3 * yTOTALS4ETM3) - (xTOTALS4ETM3 * xyTOTALS4ETM3)) / ((minPifVAL * xQuadTOTALS4ETM3) - (xTOTALS4ETM3^2)));
            aTOTALS4ETM4 = (((xQuadTOTALS4ETM4 * yTOTALS4ETM4) - (xTOTALS4ETM4 * xyTOTALS4ETM4)) / ((minPifVAL * xQuadTOTALS4ETM4) - (xTOTALS4ETM4^2)));
            aTOTALS4ETM5 = (((xQuadTOTALS4ETM5 * yTOTALS4ETM5) - (xTOTALS4ETM5 * xyTOTALS4ETM5)) / ((minPifVAL * xQuadTOTALS4ETM5) - (xTOTALS4ETM5^2)));
            aTOTALS4ETM7 = (((xQuadTOTALS4ETM7 * yTOTALS4ETM7) - (xTOTALS4ETM7 * xyTOTALS4ETM7)) / ((minPifVAL * xQuadTOTALS4ETM7) - (xTOTALS4ETM7^2)));
            
            bTOTALS4ETM1 = qXYTOTALS4ETM1 / xxAritQuadTOTALS4ETM1;
            bTOTALS4ETM2 = qXYTOTALS4ETM2 / xxAritQuadTOTALS4ETM2;
            bTOTALS4ETM3 = qXYTOTALS4ETM3 / xxAritQuadTOTALS4ETM3;
            bTOTALS4ETM4 = qXYTOTALS4ETM4 / xxAritQuadTOTALS4ETM4;
            bTOTALS4ETM5 = qXYTOTALS4ETM5 / xxAritQuadTOTALS4ETM5;
            bTOTALS4ETM7 = qXYTOTALS4ETM7 / xxAritQuadTOTALS4ETM7;
    
            rTOTALS4ETM1 = (qXYTOTALS4ETM1 / ((xxAritQuadTOTALS4ETM1 * yyAritQuadTOTALS4ETM1)^0.5));
            rTOTALS4ETM2 = (qXYTOTALS4ETM2 / ((xxAritQuadTOTALS4ETM2 * yyAritQuadTOTALS4ETM2)^0.5));
            rTOTALS4ETM3 = (qXYTOTALS4ETM3 / ((xxAritQuadTOTALS4ETM3 * yyAritQuadTOTALS4ETM3)^0.5));
            rTOTALS4ETM4 = (qXYTOTALS4ETM4 / ((xxAritQuadTOTALS4ETM4 * yyAritQuadTOTALS4ETM4)^0.5));
            rTOTALS4ETM5 = (qXYTOTALS4ETM5 / ((xxAritQuadTOTALS4ETM5 * yyAritQuadTOTALS4ETM5)^0.5));
            rTOTALS4ETM7 = (qXYTOTALS4ETM7 / ((xxAritQuadTOTALS4ETM7 * yyAritQuadTOTALS4ETM7)^0.5));
    
            rQuadTOTALS4ETM1 = ((rTOTALS4ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4ETM2 = ((rTOTALS4ETM2^2) * 100);
            rQuadTOTALS4ETM3 = ((rTOTALS4ETM3^2) * 100);
            rQuadTOTALS4ETM4 = ((rTOTALS4ETM4^2) * 100);
            rQuadTOTALS4ETM5 = ((rTOTALS4ETM5^2) * 100);
            rQuadTOTALS4ETM7 = ((rTOTALS4ETM7^2) * 100);
        
            syxTOTALS4ETM1 = (((yyAritQuadTOTALS4ETM1 - ((qXYTOTALS4ETM1^2) / xxAritQuadTOTALS4ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM2 = (((yyAritQuadTOTALS4ETM2 - ((qXYTOTALS4ETM2^2) / xxAritQuadTOTALS4ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM3 = (((yyAritQuadTOTALS4ETM3 - ((qXYTOTALS4ETM3^2) / xxAritQuadTOTALS4ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM4 = (((yyAritQuadTOTALS4ETM4 - ((qXYTOTALS4ETM4^2) / xxAritQuadTOTALS4ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM5 = (((yyAritQuadTOTALS4ETM5 - ((qXYTOTALS4ETM5^2) / xxAritQuadTOTALS4ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM7 = (((yyAritQuadTOTALS4ETM7 - ((qXYTOTALS4ETM7^2) / xxAritQuadTOTALS4ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4ETM1 = (((syxTOTALS4ETM1^2) / xxAritQuadTOTALS4ETM1)^0.5);
            bStandTOTALS4ETM2 = (((syxTOTALS4ETM2^2) / xxAritQuadTOTALS4ETM2)^0.5);
            bStandTOTALS4ETM3 = (((syxTOTALS4ETM3^2) / xxAritQuadTOTALS4ETM3)^0.5);
            bStandTOTALS4ETM4 = (((syxTOTALS4ETM4^2) / xxAritQuadTOTALS4ETM4)^0.5);
            bStandTOTALS4ETM5 = (((syxTOTALS4ETM5^2) / xxAritQuadTOTALS4ETM5)^0.5);
            bStandTOTALS4ETM7 = (((syxTOTALS4ETM7^2) / xxAritQuadTOTALS4ETM7)^0.5);
    
            aStandTOTALS4ETM1 = (bStandTOTALS4ETM1 * ((xQuadTOTALS4ETM1 / minPifVAL)^0.5));
            aStandTOTALS4ETM2 = (bStandTOTALS4ETM2 * ((xQuadTOTALS4ETM2 / minPifVAL)^0.5));
            aStandTOTALS4ETM3 = (bStandTOTALS4ETM3 * ((xQuadTOTALS4ETM3 / minPifVAL)^0.5));
            aStandTOTALS4ETM4 = (bStandTOTALS4ETM4 * ((xQuadTOTALS4ETM4 / minPifVAL)^0.5));
            aStandTOTALS4ETM5 = (bStandTOTALS4ETM5 * ((xQuadTOTALS4ETM5 / minPifVAL)^0.5));
            aStandTOTALS4ETM7 = (bStandTOTALS4ETM7 * ((xQuadTOTALS4ETM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM1, bTOTALS4ETM1, rTOTALS4ETM1, rQuadTOTALS4ETM1, aStandTOTALS4ETM1, bStandTOTALS4ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM2, bTOTALS4ETM2, rTOTALS4ETM2, rQuadTOTALS4ETM2, aStandTOTALS4ETM2, bStandTOTALS4ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM3, bTOTALS4ETM3, rTOTALS4ETM3, rQuadTOTALS4ETM3, aStandTOTALS4ETM3, bStandTOTALS4ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM4, bTOTALS4ETM4, rTOTALS4ETM4, rQuadTOTALS4ETM4, aStandTOTALS4ETM4, bStandTOTALS4ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM5, bTOTALS4ETM5, rTOTALS4ETM5, rQuadTOTALS4ETM5, aStandTOTALS4ETM5, bStandTOTALS4ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS4ETM7, bTOTALS4ETM7, rTOTALS4ETM7, rQuadTOTALS4ETM7, aStandTOTALS4ETM7, bStandTOTALS4ETM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS4ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM1arrayRAND[o]);
            }
            printf("%12f\n",pifTOTALS4ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS4ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS4ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS4ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS4ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS4ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS4ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT4ETM1[i,j] = (aTOTALS4ETM1 + (bTOTALS4ETM1 * REFS4ETM1[i,j]));
                    OUT4ETM2[i,j] = (aTOTALS4ETM2 + (bTOTALS4ETM2 * REFS4ETM2[i,j]));
                    OUT4ETM3[i,j] = (aTOTALS4ETM3 + (bTOTALS4ETM3 * REFS4ETM3[i,j]));
                    OUT4ETM4[i,j] = (aTOTALS4ETM4 + (bTOTALS4ETM4 * REFS4ETM4[i,j]));
                    OUT4ETM5[i,j] = (aTOTALS4ETM5 + (bTOTALS4ETM5 * REFS4ETM5[i,j]));
                    OUT4ETM7[i,j] = (aTOTALS4ETM7 + (bTOTALS4ETM7 * REFS4ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4ETM1);
        	CreatePyramid(OUT4ETM2);
        	CreatePyramid(OUT4ETM3);
        	CreatePyramid(OUT4ETM4);
        	CreatePyramid(OUT4ETM5);
        	CreatePyramid(OUT4ETM7);
        
        	CreateHistogram(OUT4ETM1);
        	CreateHistogram(OUT4ETM2);
        	CreateHistogram(OUT4ETM3);
        	CreateHistogram(OUT4ETM4);
        	CreateHistogram(OUT4ETM5);
        	CreateHistogram(OUT4ETM7);
        
        	CloseRaster(REFS4ETM1);
            CloseRaster(REFS4ETM2);
            CloseRaster(REFS4ETM3);
            CloseRaster(REFS4ETM4);
            CloseRaster(REFS4ETM5);
            CloseRaster(REFS4ETM7);
    
            CloseRaster(OUT4ETM1);
            CloseRaster(OUT4ETM2);
            CloseRaster(OUT4ETM3);
            CloseRaster(OUT4ETM4);
            CloseRaster(OUT4ETM5);
            CloseRaster(OUT4ETM7);      
        
        	printf("Scene 4 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors4 == 6 )
            {
            numeric xAritTOTALS4TM1, xAritTOTALS4TM2, xAritTOTALS4TM3, xAritTOTALS4TM4, xAritTOTALS4TM5, xAritTOTALS4TM7;
            numeric yAritTOTALS4TM1, yAritTOTALS4TM2, yAritTOTALS4TM3, yAritTOTALS4TM4, yAritTOTALS4TM5, yAritTOTALS4TM7;
    
            numeric aTOTALS4TM1, aTOTALS4TM2, aTOTALS4TM3, aTOTALS4TM4, aTOTALS4TM5, aTOTALS4TM7;
            numeric bTOTALS4TM1, bTOTALS4TM2, bTOTALS4TM3, bTOTALS4TM4, bTOTALS4TM5, bTOTALS4TM7;
            numeric rTOTALS4TM1, rTOTALS4TM2, rTOTALS4TM3, rTOTALS4TM4, rTOTALS4TM5, rTOTALS4TM7;
            numeric rQuadTOTALS4TM1, rQuadTOTALS4TM2, rQuadTOTALS4TM3, rQuadTOTALS4TM4, rQuadTOTALS4TM5, rQuadTOTALS4TM7;
            numeric syxTOTALS4TM1, syxTOTALS4TM2, syxTOTALS4TM3, syxTOTALS4TM4, syxTOTALS4TM5, syxTOTALS4TM7;
            numeric bStandTOTALS4TM1, bStandTOTALS4TM2, bStandTOTALS4TM3, bStandTOTALS4TM4, bStandTOTALS4TM5, bStandTOTALS4TM7;
            numeric aStandTOTALS4TM1, aStandTOTALS4TM2, aStandTOTALS4TM3, aStandTOTALS4TM4, aStandTOTALS4TM5, aStandTOTALS4TM7;
    
            numeric xTOTALS4TM1 = 0;
            numeric xTOTALS4TM2 = 0;
            numeric xTOTALS4TM3 = 0;
            numeric xTOTALS4TM4 = 0;
            numeric xTOTALS4TM5 = 0;
            numeric xTOTALS4TM7 = 0;
    
            numeric xQuadTOTALS4TM1 = 0;
            numeric xQuadTOTALS4TM2 = 0;
            numeric xQuadTOTALS4TM3 = 0;
            numeric xQuadTOTALS4TM4 = 0;
            numeric xQuadTOTALS4TM5 = 0;
            numeric xQuadTOTALS4TM7 = 0;
    
            numeric yTOTALS4TM1 = 0;
            numeric yTOTALS4TM2 = 0;
            numeric yTOTALS4TM3 = 0;
            numeric yTOTALS4TM4 = 0;
            numeric yTOTALS4TM5 = 0;
            numeric yTOTALS4TM7 = 0;
    
            numeric yQuadTOTALS4TM1 = 0;
            numeric yQuadTOTALS4TM2 = 0;
            numeric yQuadTOTALS4TM3 = 0;
            numeric yQuadTOTALS4TM4 = 0;
            numeric yQuadTOTALS4TM5 = 0;
            numeric yQuadTOTALS4TM7 = 0;
    
            numeric xyTOTALS4TM1 = 0;
            numeric xyTOTALS4TM2 = 0;
            numeric xyTOTALS4TM3 = 0;
            numeric xyTOTALS4TM4 = 0;
            numeric xyTOTALS4TM5 = 0;
            numeric xyTOTALS4TM7 = 0;
    
            numeric xxAritQuadTOTALS4TM1 = 0;
            numeric xxAritQuadTOTALS4TM2 = 0;
            numeric xxAritQuadTOTALS4TM3 = 0;
            numeric xxAritQuadTOTALS4TM4 = 0;
            numeric xxAritQuadTOTALS4TM5 = 0;
            numeric xxAritQuadTOTALS4TM7 = 0;
    
            numeric yyAritQuadTOTALS4TM1 = 0;
            numeric yyAritQuadTOTALS4TM2 = 0;
            numeric yyAritQuadTOTALS4TM3 = 0;
            numeric yyAritQuadTOTALS4TM4 = 0;
            numeric yyAritQuadTOTALS4TM5 = 0;
            numeric yyAritQuadTOTALS4TM7 = 0;
    
            numeric qXYTOTALS4TM1 = 0;
            numeric qXYTOTALS4TM2 = 0;
            numeric qXYTOTALS4TM3 = 0;
            numeric qXYTOTALS4TM4 = 0;
            numeric qXYTOTALS4TM5 = 0;
            numeric qXYTOTALS4TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS4TM1 = xTOTALS4TM1 + pifTOTALS2TM1arrayRAND[m];
                xTOTALS4TM2 = xTOTALS4TM2 + pifTOTALS2TM2arrayRAND[m];
                xTOTALS4TM3 = xTOTALS4TM3 + pifTOTALS2TM3arrayRAND[m];
                xTOTALS4TM4 = xTOTALS4TM4 + pifTOTALS2TM4arrayRAND[m];
                xTOTALS4TM5 = xTOTALS4TM5 + pifTOTALS2TM5arrayRAND[m];
                xTOTALS4TM7 = xTOTALS4TM7 + pifTOTALS2TM7arrayRAND[m];
    
                xQuadTOTALS4TM1 = (xQuadTOTALS4TM1 + (pifTOTALS2TM1arrayRAND[m]^2));
                xQuadTOTALS4TM2 = (xQuadTOTALS4TM2 + (pifTOTALS2TM2arrayRAND[m]^2));
                xQuadTOTALS4TM3 = (xQuadTOTALS4TM3 + (pifTOTALS2TM3arrayRAND[m]^2));
                xQuadTOTALS4TM4 = (xQuadTOTALS4TM4 + (pifTOTALS2TM4arrayRAND[m]^2));
                xQuadTOTALS4TM5 = (xQuadTOTALS4TM5 + (pifTOTALS2TM5arrayRAND[m]^2));
                xQuadTOTALS4TM7 = (xQuadTOTALS4TM7 + (pifTOTALS2TM7arrayRAND[m]^2));
    
                yTOTALS4TM1 = yTOTALS4TM1 + pifTOTALS4TM1arrayRAND[m];
                yTOTALS4TM2 = yTOTALS4TM2 + pifTOTALS4TM2arrayRAND[m];
                yTOTALS4TM3 = yTOTALS4TM3 + pifTOTALS4TM3arrayRAND[m];
                yTOTALS4TM4 = yTOTALS4TM4 + pifTOTALS4TM4arrayRAND[m];
                yTOTALS4TM5 = yTOTALS4TM5 + pifTOTALS4TM5arrayRAND[m];
                yTOTALS4TM7 = yTOTALS4TM7 + pifTOTALS4TM7arrayRAND[m];
                
                yQuadTOTALS4TM1 = (yQuadTOTALS4TM1 + (pifTOTALS4TM1arrayRAND[m]^2));
                yQuadTOTALS4TM2 = (yQuadTOTALS4TM2 + (pifTOTALS4TM2arrayRAND[m]^2));
                yQuadTOTALS4TM3 = (yQuadTOTALS4TM3 + (pifTOTALS4TM3arrayRAND[m]^2));
                yQuadTOTALS4TM4 = (yQuadTOTALS4TM4 + (pifTOTALS4TM4arrayRAND[m]^2));
                yQuadTOTALS4TM5 = (yQuadTOTALS4TM5 + (pifTOTALS4TM5arrayRAND[m]^2));
                yQuadTOTALS4TM7 = (yQuadTOTALS4TM7 + (pifTOTALS4TM7arrayRAND[m]^2));
    
                xyTOTALS4TM1 = (xyTOTALS4TM1 + (pifTOTALS2TM1arrayRAND[m] * pifTOTALS4TM1arrayRAND[m]));
                xyTOTALS4TM2 = (xyTOTALS4TM2 + (pifTOTALS2TM2arrayRAND[m] * pifTOTALS4TM2arrayRAND[m]));
                xyTOTALS4TM3 = (xyTOTALS4TM3 + (pifTOTALS2TM3arrayRAND[m] * pifTOTALS4TM3arrayRAND[m]));
                xyTOTALS4TM4 = (xyTOTALS4TM4 + (pifTOTALS2TM4arrayRAND[m] * pifTOTALS4TM4arrayRAND[m]));
                xyTOTALS4TM5 = (xyTOTALS4TM5 + (pifTOTALS2TM5arrayRAND[m] * pifTOTALS4TM5arrayRAND[m]));
                xyTOTALS4TM7 = (xyTOTALS4TM7 + (pifTOTALS2TM7arrayRAND[m] * pifTOTALS4TM7arrayRAND[m]));
            }	
            
            xAritTOTALS4TM1 = xTOTALS4TM1 / minPifVAL;
            xAritTOTALS4TM2 = xTOTALS4TM2 / minPifVAL;
            xAritTOTALS4TM3 = xTOTALS4TM3 / minPifVAL;
            xAritTOTALS4TM4 = xTOTALS4TM4 / minPifVAL;
            xAritTOTALS4TM5 = xTOTALS4TM5 / minPifVAL;
            xAritTOTALS4TM7 = xTOTALS4TM7 / minPifVAL;
    
            yAritTOTALS4TM1 = yTOTALS4TM1 / minPifVAL;
            yAritTOTALS4TM2 = yTOTALS4TM2 / minPifVAL;
            yAritTOTALS4TM3 = yTOTALS4TM3 / minPifVAL;
            yAritTOTALS4TM4 = yTOTALS4TM4 / minPifVAL;
            yAritTOTALS4TM5 = yTOTALS4TM5 / minPifVAL;
            yAritTOTALS4TM7 = yTOTALS4TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4TM1 = (xxAritQuadTOTALS4TM1 + ((pifTOTALS2TM1arrayRAND[n] - xAritTOTALS4TM1)^2));
                xxAritQuadTOTALS4TM2 = (xxAritQuadTOTALS4TM2 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS4TM2)^2));
                xxAritQuadTOTALS4TM3 = (xxAritQuadTOTALS4TM3 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS4TM3)^2));
                xxAritQuadTOTALS4TM4 = (xxAritQuadTOTALS4TM4 + ((pifTOTALS2TM4arrayRAND[n] - xAritTOTALS4TM4)^2));
                xxAritQuadTOTALS4TM5 = (xxAritQuadTOTALS4TM5 + ((pifTOTALS2TM5arrayRAND[n] - xAritTOTALS4TM5)^2));
                xxAritQuadTOTALS4TM7 = (xxAritQuadTOTALS4TM7 + ((pifTOTALS2TM7arrayRAND[n] - xAritTOTALS4TM7)^2));
    
                yyAritQuadTOTALS4TM1 = (yyAritQuadTOTALS4TM1 + ((pifTOTALS4TM1arrayRAND[n] - yAritTOTALS4TM1)^2));
                yyAritQuadTOTALS4TM2 = (yyAritQuadTOTALS4TM2 + ((pifTOTALS4TM2arrayRAND[n] - yAritTOTALS4TM2)^2));
                yyAritQuadTOTALS4TM3 = (yyAritQuadTOTALS4TM3 + ((pifTOTALS4TM3arrayRAND[n] - yAritTOTALS4TM3)^2));
                yyAritQuadTOTALS4TM4 = (yyAritQuadTOTALS4TM4 + ((pifTOTALS4TM4arrayRAND[n] - yAritTOTALS4TM4)^2));
                yyAritQuadTOTALS4TM5 = (yyAritQuadTOTALS4TM5 + ((pifTOTALS4TM5arrayRAND[n] - yAritTOTALS4TM5)^2));
                yyAritQuadTOTALS4TM7 = (yyAritQuadTOTALS4TM7 + ((pifTOTALS4TM7arrayRAND[n] - yAritTOTALS4TM7)^2));
    
                qXYTOTALS4TM1 = (qXYTOTALS4TM1 + ((pifTOTALS2TM1arrayRAND[n] - xAritTOTALS4TM1) * (pifTOTALS4TM1arrayRAND[n] - yAritTOTALS4TM1)));
                qXYTOTALS4TM2 = (qXYTOTALS4TM2 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS4TM2) * (pifTOTALS4TM2arrayRAND[n] - yAritTOTALS4TM2)));
                qXYTOTALS4TM3 = (qXYTOTALS4TM3 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS4TM3) * (pifTOTALS4TM3arrayRAND[n] - yAritTOTALS4TM3)));
                qXYTOTALS4TM4 = (qXYTOTALS4TM4 + ((pifTOTALS2TM4arrayRAND[n] - xAritTOTALS4TM4) * (pifTOTALS4TM4arrayRAND[n] - yAritTOTALS4TM4)));
                qXYTOTALS4TM5 = (qXYTOTALS4TM5 + ((pifTOTALS2TM5arrayRAND[n] - xAritTOTALS4TM5) * (pifTOTALS4TM5arrayRAND[n] - yAritTOTALS4TM5)));
                qXYTOTALS4TM7 = (qXYTOTALS4TM7 + ((pifTOTALS2TM7arrayRAND[n] - xAritTOTALS4TM7) * (pifTOTALS4TM7arrayRAND[n] - yAritTOTALS4TM7)));
            }
        
            aTOTALS4TM1 = (((xQuadTOTALS4TM1 * yTOTALS4TM1) - (xTOTALS4TM1 * xyTOTALS4TM1)) / ((minPifVAL * xQuadTOTALS4TM1) - (xTOTALS4TM1^2)));
            aTOTALS4TM2 = (((xQuadTOTALS4TM2 * yTOTALS4TM2) - (xTOTALS4TM2 * xyTOTALS4TM2)) / ((minPifVAL * xQuadTOTALS4TM2) - (xTOTALS4TM2^2)));
            aTOTALS4TM3 = (((xQuadTOTALS4TM3 * yTOTALS4TM3) - (xTOTALS4TM3 * xyTOTALS4TM3)) / ((minPifVAL * xQuadTOTALS4TM3) - (xTOTALS4TM3^2)));
            aTOTALS4TM4 = (((xQuadTOTALS4TM4 * yTOTALS4TM4) - (xTOTALS4TM4 * xyTOTALS4TM4)) / ((minPifVAL * xQuadTOTALS4TM4) - (xTOTALS4TM4^2)));
            aTOTALS4TM5 = (((xQuadTOTALS4TM5 * yTOTALS4TM5) - (xTOTALS4TM5 * xyTOTALS4TM5)) / ((minPifVAL * xQuadTOTALS4TM5) - (xTOTALS4TM5^2)));
            aTOTALS4TM7 = (((xQuadTOTALS4TM7 * yTOTALS4TM7) - (xTOTALS4TM7 * xyTOTALS4TM7)) / ((minPifVAL * xQuadTOTALS4TM7) - (xTOTALS4TM7^2)));
            
            bTOTALS4TM1 = qXYTOTALS4TM1 / xxAritQuadTOTALS4TM1;
            bTOTALS4TM2 = qXYTOTALS4TM2 / xxAritQuadTOTALS4TM2;
            bTOTALS4TM3 = qXYTOTALS4TM3 / xxAritQuadTOTALS4TM3;
            bTOTALS4TM4 = qXYTOTALS4TM4 / xxAritQuadTOTALS4TM4;
            bTOTALS4TM5 = qXYTOTALS4TM5 / xxAritQuadTOTALS4TM5;
            bTOTALS4TM7 = qXYTOTALS4TM7 / xxAritQuadTOTALS4TM7;
    
            rTOTALS4TM1 = (qXYTOTALS4TM1 / ((xxAritQuadTOTALS4TM1 * yyAritQuadTOTALS4TM1)^0.5));
            rTOTALS4TM2 = (qXYTOTALS4TM2 / ((xxAritQuadTOTALS4TM2 * yyAritQuadTOTALS4TM2)^0.5));
            rTOTALS4TM3 = (qXYTOTALS4TM3 / ((xxAritQuadTOTALS4TM3 * yyAritQuadTOTALS4TM3)^0.5));
            rTOTALS4TM4 = (qXYTOTALS4TM4 / ((xxAritQuadTOTALS4TM4 * yyAritQuadTOTALS4TM4)^0.5));
            rTOTALS4TM5 = (qXYTOTALS4TM5 / ((xxAritQuadTOTALS4TM5 * yyAritQuadTOTALS4TM5)^0.5));
            rTOTALS4TM7 = (qXYTOTALS4TM7 / ((xxAritQuadTOTALS4TM7 * yyAritQuadTOTALS4TM7)^0.5));
    
            rQuadTOTALS4TM1 = ((rTOTALS4TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4TM2 = ((rTOTALS4TM2^2) * 100);
            rQuadTOTALS4TM3 = ((rTOTALS4TM3^2) * 100);
            rQuadTOTALS4TM4 = ((rTOTALS4TM4^2) * 100);
            rQuadTOTALS4TM5 = ((rTOTALS4TM5^2) * 100);
            rQuadTOTALS4TM7 = ((rTOTALS4TM7^2) * 100);
        
            syxTOTALS4TM1 = (((yyAritQuadTOTALS4TM1 - ((qXYTOTALS4TM1^2) / xxAritQuadTOTALS4TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM2 = (((yyAritQuadTOTALS4TM2 - ((qXYTOTALS4TM2^2) / xxAritQuadTOTALS4TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM3 = (((yyAritQuadTOTALS4TM3 - ((qXYTOTALS4TM3^2) / xxAritQuadTOTALS4TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM4 = (((yyAritQuadTOTALS4TM4 - ((qXYTOTALS4TM4^2) / xxAritQuadTOTALS4TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM5 = (((yyAritQuadTOTALS4TM5 - ((qXYTOTALS4TM5^2) / xxAritQuadTOTALS4TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM7 = (((yyAritQuadTOTALS4TM7 - ((qXYTOTALS4TM7^2) / xxAritQuadTOTALS4TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4TM1 = (((syxTOTALS4TM1^2) / xxAritQuadTOTALS4TM1)^0.5);
            bStandTOTALS4TM2 = (((syxTOTALS4TM2^2) / xxAritQuadTOTALS4TM2)^0.5);
            bStandTOTALS4TM3 = (((syxTOTALS4TM3^2) / xxAritQuadTOTALS4TM3)^0.5);
            bStandTOTALS4TM4 = (((syxTOTALS4TM4^2) / xxAritQuadTOTALS4TM4)^0.5);
            bStandTOTALS4TM5 = (((syxTOTALS4TM5^2) / xxAritQuadTOTALS4TM5)^0.5);
            bStandTOTALS4TM7 = (((syxTOTALS4TM7^2) / xxAritQuadTOTALS4TM7)^0.5);
    
            aStandTOTALS4TM1 = (bStandTOTALS4TM1 * ((xQuadTOTALS4TM1 / minPifVAL)^0.5));
            aStandTOTALS4TM2 = (bStandTOTALS4TM2 * ((xQuadTOTALS4TM2 / minPifVAL)^0.5));
            aStandTOTALS4TM3 = (bStandTOTALS4TM3 * ((xQuadTOTALS4TM3 / minPifVAL)^0.5));
            aStandTOTALS4TM4 = (bStandTOTALS4TM4 * ((xQuadTOTALS4TM4 / minPifVAL)^0.5));
            aStandTOTALS4TM5 = (bStandTOTALS4TM5 * ((xQuadTOTALS4TM5 / minPifVAL)^0.5));
            aStandTOTALS4TM7 = (bStandTOTALS4TM7 * ((xQuadTOTALS4TM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM1, bTOTALS4TM1, rTOTALS4TM1, rQuadTOTALS4TM1, aStandTOTALS4TM1, bStandTOTALS4TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM2, bTOTALS4TM2, rTOTALS4TM2, rQuadTOTALS4TM2, aStandTOTALS4TM2, bStandTOTALS4TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM3, bTOTALS4TM3, rTOTALS4TM3, rQuadTOTALS4TM3, aStandTOTALS4TM3, bStandTOTALS4TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM4, bTOTALS4TM4, rTOTALS4TM4, rQuadTOTALS4TM4, aStandTOTALS4TM4, bStandTOTALS4TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM5, bTOTALS4TM5, rTOTALS4TM5, rQuadTOTALS4TM5, aStandTOTALS4TM5, bStandTOTALS4TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS4TM7, bTOTALS4TM7, rTOTALS4TM7, rQuadTOTALS4TM7, aStandTOTALS4TM7, bStandTOTALS4TM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS4TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS4TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM2arrayRAND[o]);
  }
            printf("%12f\n", pifTOTALS4TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS4TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS4TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS4TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS4TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS4TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT4TM1[i,j] = (aTOTALS4TM1 + (bTOTALS4TM1 * REFS4TM1[i,j]));
                    OUT4TM2[i,j] = (aTOTALS4TM2 + (bTOTALS4TM2 * REFS4TM2[i,j]));
                    OUT4TM3[i,j] = (aTOTALS4TM3 + (bTOTALS4TM3 * REFS4TM3[i,j]));
                    OUT4TM4[i,j] = (aTOTALS4TM4 + (bTOTALS4TM4 * REFS4TM4[i,j]));
                    OUT4TM5[i,j] = (aTOTALS4TM5 + (bTOTALS4TM5 * REFS4TM5[i,j]));
                    OUT4TM7[i,j] = (aTOTALS4TM7 + (bTOTALS4TM7 * REFS4TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4TM1);
        	CreatePyramid(OUT4TM2);
        	CreatePyramid(OUT4TM3);
        	CreatePyramid(OUT4TM4);
        	CreatePyramid(OUT4TM5);
        	CreatePyramid(OUT4TM7);
        
        	CreateHistogram(OUT4TM1);
        	CreateHistogram(OUT4TM2);
        	CreateHistogram(OUT4TM3);
        	CreateHistogram(OUT4TM4);
        	CreateHistogram(OUT4TM5);
        	CreateHistogram(OUT4TM7);
        
        	CloseRaster(REFS4TM1);
            CloseRaster(REFS4TM2);
            CloseRaster(REFS4TM3);
            CloseRaster(REFS4TM4);
            CloseRaster(REFS4TM5);
            CloseRaster(REFS4TM7);
    
            CloseRaster(OUT4TM1);
            CloseRaster(OUT4TM2);
            CloseRaster(OUT4TM3);
            CloseRaster(OUT4TM4);
            CloseRaster(OUT4TM5);
            CloseRaster(OUT4TM7);
        
        	printf("Scene 4 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS4MSS1, xAritTOTALS4MSS2, xAritTOTALS4MSS4;
            numeric yAritTOTALS4MSS1, yAritTOTALS4MSS2, yAritTOTALS4MSS4;
    
            numeric aTOTALS4MSS1, aTOTALS4MSS2, aTOTALS4MSS4;
            numeric bTOTALS4MSS1, bTOTALS4MSS2, bTOTALS4MSS4;
            numeric rTOTALS4MSS1, rTOTALS4MSS2, rTOTALS4MSS4;
            numeric rQuadTOTALS4MSS1, rQuadTOTALS4MSS2, rQuadTOTALS4MSS4;
            numeric syxTOTALS4MSS1, syxTOTALS4MSS2, syxTOTALS4MSS4;
            numeric bStandTOTALS4MSS1, bStandTOTALS4MSS2, bStandTOTALS4MSS4;
            numeric aStandTOTALS4MSS1, aStandTOTALS4MSS2, aStandTOTALS4MSS4;
    
            numeric xTOTALS4MSS1 = 0;
            numeric xTOTALS4MSS2 = 0;
            numeric xTOTALS4MSS4 = 0;
    
            numeric xQuadTOTALS4MSS1 = 0;
            numeric xQuadTOTALS4MSS2 = 0;
            numeric xQuadTOTALS4MSS4 = 0;
    
            numeric yTOTALS4MSS1 = 0;
            numeric yTOTALS4MSS2 = 0;
            numeric yTOTALS4MSS4 = 0;
    
            numeric yQuadTOTALS4MSS1 = 0;
            numeric yQuadTOTALS4MSS2 = 0;
            numeric yQuadTOTALS4MSS4 = 0;
    
            numeric xyTOTALS4MSS1 = 0;
            numeric xyTOTALS4MSS2 = 0;
            numeric xyTOTALS4MSS4 = 0;
    
            numeric xxAritQuadTOTALS4MSS1 = 0;
            numeric xxAritQuadTOTALS4MSS2 = 0;
            numeric xxAritQuadTOTALS4MSS4 = 0;
    
            numeric yyAritQuadTOTALS4MSS1 = 0;
            numeric yyAritQuadTOTALS4MSS2 = 0;
            numeric yyAritQuadTOTALS4MSS4 = 0;
    
            numeric qXYTOTALS4MSS1 = 0;
            numeric qXYTOTALS4MSS2 = 0;
            numeric qXYTOTALS4MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS4MSS1 = xTOTALS4MSS1 + pifTOTALS2TM2arrayRAND[m];
                xTOTALS4MSS2 = xTOTALS4MSS2 + pifTOTALS2TM3arrayRAND[m];
                xTOTALS4MSS4 = xTOTALS4MSS4 + pifTOTALS2TM4arrayRAND[m];
    
                xQuadTOTALS4MSS1 = (xQuadTOTALS4MSS1 + (pifTOTALS2TM2arrayRAND[m]^2));
                xQuadTOTALS4MSS2 = (xQuadTOTALS4MSS2 + (pifTOTALS2TM3arrayRAND[m]^2));
                xQuadTOTALS4MSS4 = (xQuadTOTALS4MSS4 + (pifTOTALS2TM4arrayRAND[m]^2));
    
                yTOTALS4MSS1 = yTOTALS4MSS1 + pifTOTALS4MSS1arrayRAND[m];
                yTOTALS4MSS2 = yTOTALS4MSS2 + pifTOTALS4MSS2arrayRAND[m];
                yTOTALS4MSS4 = yTOTALS4MSS4 + pifTOTALS4MSS4arrayRAND[m];
                
                yQuadTOTALS4MSS1 = (yQuadTOTALS4MSS1 + (pifTOTALS4MSS1arrayRAND[m]^2));
                yQuadTOTALS4MSS2 = (yQuadTOTALS4MSS2 + (pifTOTALS4MSS2arrayRAND[m]^2));
                yQuadTOTALS4MSS4 = (yQuadTOTALS4MSS4 + (pifTOTALS4MSS4arrayRAND[m]^2));
    
                xyTOTALS4MSS1 = (xyTOTALS4MSS1 + (pifTOTALS2TM2arrayRAND[m] * pifTOTALS4MSS1arrayRAND[m]));
                xyTOTALS4MSS2 = (xyTOTALS4MSS2 + (pifTOTALS2TM3arrayRAND[m] * pifTOTALS4MSS2arrayRAND[m]));
                xyTOTALS4MSS4 = (xyTOTALS4MSS4 + (pifTOTALS2TM4arrayRAND[m] * pifTOTALS4MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS4MSS1 = xTOTALS4MSS1 / minPifVAL;
            xAritTOTALS4MSS2 = xTOTALS4MSS2 / minPifVAL;
            xAritTOTALS4MSS4 = xTOTALS4MSS4 / minPifVAL;
    
            yAritTOTALS4MSS1 = yTOTALS4MSS1 / minPifVAL;
            yAritTOTALS4MSS2 = yTOTALS4MSS2 / minPifVAL;
            yAritTOTALS4MSS4 = yTOTALS4MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4MSS1 = (xxAritQuadTOTALS4MSS1 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS4MSS1)^2));
                xxAritQuadTOTALS4MSS2 = (xxAritQuadTOTALS4MSS2 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS4MSS2)^2));
                xxAritQuadTOTALS4MSS4 = (xxAritQuadTOTALS4MSS4 + ((pifTOTALS2TM4arrayRAND[n] - xAritTOTALS4MSS4)^2));
    
                yyAritQuadTOTALS4MSS1 = (yyAritQuadTOTALS4MSS1 + ((pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)^2));
                yyAritQuadTOTALS4MSS2 = (yyAritQuadTOTALS4MSS2 + ((pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)^2));
                yyAritQuadTOTALS4MSS4 = (yyAritQuadTOTALS4MSS4 + ((pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)^2));
    
                qXYTOTALS4MSS1 = (qXYTOTALS4MSS1 + ((pifTOTALS2TM2arrayRAND[n] - xAritTOTALS4MSS1) * (pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)));
                qXYTOTALS4MSS2 = (qXYTOTALS4MSS2 + ((pifTOTALS2TM3arrayRAND[n] - xAritTOTALS4MSS2) * (pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)));
                qXYTOTALS4MSS4 = (qXYTOTALS4MSS4 + ((pifTOTALS2TM5arrayRAND[n] - xAritTOTALS4MSS4) * (pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)));
            }
        
            aTOTALS4MSS1 = (((xQuadTOTALS4MSS1 * yTOTALS4MSS1) - (xTOTALS4MSS1 * xyTOTALS4MSS1)) / ((minPifVAL * xQuadTOTALS4MSS1) - (xTOTALS4MSS1^2)));
            aTOTALS4MSS2 = (((xQuadTOTALS4MSS2 * yTOTALS4MSS2) - (xTOTALS4MSS2 * xyTOTALS4MSS2)) / ((minPifVAL * xQuadTOTALS4MSS2) - (xTOTALS4MSS2^2)));
            aTOTALS4MSS4 = (((xQuadTOTALS4MSS4 * yTOTALS4MSS4) - (xTOTALS4MSS4 * xyTOTALS4MSS4)) / ((minPifVAL * xQuadTOTALS4MSS4) - (xTOTALS4MSS4^2)));
            
            bTOTALS4MSS1 = qXYTOTALS4MSS1 / xxAritQuadTOTALS4MSS1;
            bTOTALS4MSS2 = qXYTOTALS4MSS2 / xxAritQuadTOTALS4MSS2;
            bTOTALS4MSS4 = qXYTOTALS4MSS4 / xxAritQuadTOTALS4MSS4;
    
            rTOTALS4MSS1 = (qXYTOTALS4MSS1 / ((xxAritQuadTOTALS4MSS1 * yyAritQuadTOTALS4MSS1)^0.5));
            rTOTALS4MSS2 = (qXYTOTALS4MSS2 / ((xxAritQuadTOTALS4MSS2 * yyAritQuadTOTALS4MSS2)^0.5));
            rTOTALS4MSS4 = (qXYTOTALS4MSS4 / ((xxAritQuadTOTALS4MSS4 * yyAritQuadTOTALS4MSS4)^0.5));
    
            rQuadTOTALS4MSS1 = ((rTOTALS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4MSS2 = ((rTOTALS4MSS2^2) * 100);
            rQuadTOTALS4MSS4 = ((rTOTALS4MSS4^2) * 100);
        
            syxTOTALS4MSS1 = (((yyAritQuadTOTALS4MSS1 - ((qXYTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS2 = (((yyAritQuadTOTALS4MSS2 - ((qXYTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS4 = (((yyAritQuadTOTALS4MSS4 - ((qXYTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4MSS1 = (((syxTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)^0.5);
            bStandTOTALS4MSS2 = (((syxTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)^0.5);
            bStandTOTALS4MSS4 = (((syxTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)^0.5);
    
            aStandTOTALS4MSS1 = (bStandTOTALS4MSS1 * ((xQuadTOTALS4MSS1 / minPifVAL)^0.5));
            aStandTOTALS4MSS2 = (bStandTOTALS4MSS2 * ((xQuadTOTALS4MSS2 / minPifVAL)^0.5));
            aStandTOTALS4MSS4 = (bStandTOTALS4MSS4 * ((xQuadTOTALS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS1, bTOTALS4MSS1, rTOTALS4MSS1, rQuadTOTALS4MSS1, aStandTOTALS4MSS1, bStandTOTALS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS2, bTOTALS4MSS2, rTOTALS4MSS2, rQuadTOTALS4MSS2, aStandTOTALS4MSS2, bStandTOTALS4MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS4, bTOTALS4MSS4, rTOTALS4MSS4, rQuadTOTALS4MSS4, aStandTOTALS4MSS4, bStandTOTALS4MSS4);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS4MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS4MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS2arrayRAND[minPifVAL]);
        
            printf("MSS4: %12f ", pifTOTALS4MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aTOTALS4MSS1 + (bTOTALS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aTOTALS4MSS2 + (bTOTALS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = REFS4MSS3[i,j];
                    OUT4MSS4[i,j] = (aTOTALS4MSS4 + (bTOTALS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT4MSS1);
        	CreatePyramid(OUT4MSS2);
        	CreatePyramid(OUT4MSS3);
        	CreatePyramid(OUT4MSS4);
        
        	CreateHistogram(OUT4MSS1);
        	CreateHistogram(OUT4MSS2);
        	CreateHistogram(OUT4MSS3);
        	CreateHistogram(OUT4MSS4);
        
        	CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
        }
        
        else
        {
        printf("Scene 2 - Master Scene (MSS):\n");
        printf("Scene 2 array values used for regression computation:\n");
    
        printf("MSS1: %12f ", pifTOTALS2MSS1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS2MSS1arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS2MSS1arrayRAND[minPifVAL]);
    
        printf("MSS2: %12f ", pifTOTALS2MSS2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS2MSS2arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS2MSS2arrayRAND[minPifVAL]);
    
        printf("MSS3: %12f ", pifTOTALS2MSS3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS2MSS3arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS2MSS3arrayRAND[minPifVAL]);
    
        printf("MSS4: %12f ", pifTOTALS2MSS4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS2MSS4arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS2MSS4arrayRAND[minPifVAL]);
            
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                OUT2MSS1[i,j] = REFS2MSS1[i,j];
                OUT2MSS2[i,j] = REFS2MSS2[i,j];
                OUT2MSS3[i,j] = REFS2MSS3[i,j];
                OUT2MSS4[i,j] = REFS2MSS4[i,j];
                }
            }
        
        CreatePyramid(OUT2MSS1);
        CreatePyramid(OUT2MSS2);
        CreatePyramid(OUT2MSS3);
        CreatePyramid(OUT2MSS4);
    
        CreateHistogram(OUT2MSS1);
        CreateHistogram(OUT2MSS2);
        CreateHistogram(OUT2MSS3);
        CreateHistogram(OUT2MSS4);
        
        CloseRaster(REFS2MSS1);
        CloseRaster(REFS2MSS2);
        CloseRaster(REFS2MSS3);
        CloseRaster(REFS2MSS4);
        CloseRaster(OUT2MSS1);
        CloseRaster(OUT2MSS2);
        CloseRaster(OUT2MSS3);
        CloseRaster(OUT2MSS4);
        printf("Scene 2 (Master) output was written, histogram created and pyramid written\n\n\n");
        
            if ( sensors1 == 7 )
            {
            	printf("Master: Scene 2 (MSS), Slave: Scene 1 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors1 == 6 )
            {
                  printf("Master: Scene 2 (MSS), Slave: Scene 1 (TM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS1MSS1, xAritTOTALS1MSS2, xAritTOTALS1MSS3, xAritTOTALS1MSS4;
            numeric yAritTOTALS1MSS1, yAritTOTALS1MSS2, yAritTOTALS1MSS3, yAritTOTALS1MSS4;
    
            numeric aTOTALS1MSS1, aTOTALS1MSS2, aTOTALS1MSS3, aTOTALS1MSS4;
            numeric bTOTALS1MSS1, bTOTALS1MSS2, bTOTALS1MSS3, bTOTALS1MSS4;
            numeric rTOTALS1MSS1, rTOTALS1MSS2, rTOTALS1MSS3, rTOTALS1MSS4;
            numeric rQuadTOTALS1MSS1, rQuadTOTALS1MSS2, rQuadTOTALS1MSS3, rQuadTOTALS1MSS4;
            numeric syxTOTALS1MSS1, syxTOTALS1MSS2, syxTOTALS1MSS3, syxTOTALS1MSS4;
            numeric bStandTOTALS1MSS1, bStandTOTALS1MSS2, bStandTOTALS1MSS3, bStandTOTALS1MSS4;
            numeric aStandTOTALS1MSS1, aStandTOTALS1MSS2, aStandTOTALS1MSS3, aStandTOTALS1MSS4;
    
            numeric xTOTALS1MSS1 = 0;
            numeric xTOTALS1MSS2 = 0;
            numeric xTOTALS1MSS3 = 0;
            numeric xTOTALS1MSS4 = 0;
    
            numeric xQuadTOTALS1MSS1 = 0;
            numeric xQuadTOTALS1MSS2 = 0;
            numeric xQuadTOTALS1MSS3 = 0;
            numeric xQuadTOTALS1MSS4 = 0;
    
            numeric yTOTALS1MSS1 = 0;
            numeric yTOTALS1MSS2 = 0;
            numeric yTOTALS1MSS3 = 0;
            numeric yTOTALS1MSS4 = 0;
    
            numeric yQuadTOTALS1MSS1 = 0;
            numeric yQuadTOTALS1MSS2 = 0;
            numeric yQuadTOTALS1MSS3 = 0;
            numeric yQuadTOTALS1MSS4 = 0;
    
            numeric xyTOTALS1MSS1 = 0;
            numeric xyTOTALS1MSS2 = 0;
            numeric xyTOTALS1MSS3 = 0;
            numeric xyTOTALS1MSS4 = 0;
    
            numeric xxAritQuadTOTALS1MSS1 = 0;
            numeric xxAritQuadTOTALS1MSS2 = 0;
            numeric xxAritQuadTOTALS1MSS3 = 0;
            numeric xxAritQuadTOTALS1MSS4 = 0;
    
            numeric yyAritQuadTOTALS1MSS1 = 0;
            numeric yyAritQuadTOTALS1MSS2 = 0;
            numeric yyAritQuadTOTALS1MSS3 = 0;
            numeric yyAritQuadTOTALS1MSS4 = 0;
    
            numeric qXYTOTALS1MSS1 = 0;
            numeric qXYTOTALS1MSS2 = 0;
            numeric qXYTOTALS1MSS3 = 0;
            numeric qXYTOTALS1MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS1MSS1 = xTOTALS1MSS1 + pifTOTALS2MSS1arrayRAND[m];
                xTOTALS1MSS2 = xTOTALS1MSS2 + pifTOTALS2MSS2arrayRAND[m];
                xTOTALS1MSS3 = xTOTALS1MSS3 + pifTOTALS2MSS3arrayRAND[m];
                xTOTALS1MSS4 = xTOTALS1MSS4 + pifTOTALS2MSS4arrayRAND[m];
    
                xQuadTOTALS1MSS1 = (xQuadTOTALS1MSS1 + (pifTOTALS2MSS1arrayRAND[m]^2));
                xQuadTOTALS1MSS2 = (xQuadTOTALS1MSS2 + (pifTOTALS2MSS2arrayRAND[m]^2));
                xQuadTOTALS1MSS3 = (xQuadTOTALS1MSS3 + (pifTOTALS2MSS3arrayRAND[m]^2));
                xQuadTOTALS1MSS4 = (xQuadTOTALS1MSS4 + (pifTOTALS2MSS4arrayRAND[m]^2));
    
                yTOTALS1MSS1 = yTOTALS1MSS1 + pifTOTALS1MSS1arrayRAND[m];
                yTOTALS1MSS2 = yTOTALS1MSS2 + pifTOTALS1MSS2arrayRAND[m];
                yTOTALS1MSS3 = yTOTALS1MSS3 + pifTOTALS1MSS3arrayRAND[m];
                yTOTALS1MSS4 = yTOTALS1MSS4 + pifTOTALS1MSS4arrayRAND[m];
                
                yQuadTOTALS1MSS1 = (yQuadTOTALS1MSS1 + (pifTOTALS1MSS1arrayRAND[m]^2));
                yQuadTOTALS1MSS2 = (yQuadTOTALS1MSS2 + (pifTOTALS1MSS2arrayRAND[m]^2));
                yQuadTOTALS1MSS3 = (yQuadTOTALS1MSS3 + (pifTOTALS1MSS3arrayRAND[m]^2));
                yQuadTOTALS1MSS4 = (yQuadTOTALS1MSS4 + (pifTOTALS1MSS4arrayRAND[m]^2));
    
                xyTOTALS1MSS1 = (xyTOTALS1MSS1 + (pifTOTALS2MSS1arrayRAND[m] * pifTOTALS1MSS1arrayRAND[m]));
                xyTOTALS1MSS2 = (xyTOTALS1MSS2 + (pifTOTALS2MSS2arrayRAND[m] * pifTOTALS1MSS2arrayRAND[m]));
                xyTOTALS1MSS3 = (xyTOTALS1MSS3 + (pifTOTALS2MSS3arrayRAND[m] * pifTOTALS1MSS3arrayRAND[m]));
                xyTOTALS1MSS4 = (xyTOTALS1MSS4 + (pifTOTALS2MSS4arrayRAND[m] * pifTOTALS1MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS1MSS1 = xTOTALS1MSS1 / minPifVAL;
            xAritTOTALS1MSS2 = xTOTALS1MSS2 / minPifVAL;
            xAritTOTALS1MSS3 = xTOTALS1MSS3 / minPifVAL;
            xAritTOTALS1MSS4 = xTOTALS1MSS4 / minPifVAL;
    
            yAritTOTALS1MSS1 = yTOTALS1MSS1 / minPifVAL;
            yAritTOTALS1MSS2 = yTOTALS1MSS2 / minPifVAL;
            yAritTOTALS1MSS3 = yTOTALS1MSS3 / minPifVAL;
            yAritTOTALS1MSS4 = yTOTALS1MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1MSS1 = (xxAritQuadTOTALS1MSS1 + ((pifTOTALS2MSS1arrayRAND[n] - xAritTOTALS1MSS1)^2));
                xxAritQuadTOTALS1MSS2 = (xxAritQuadTOTALS1MSS2 + ((pifTOTALS2MSS2arrayRAND[n] - xAritTOTALS1MSS2)^2));
                xxAritQuadTOTALS1MSS3 = (xxAritQuadTOTALS1MSS3 + ((pifTOTALS2MSS3arrayRAND[n] - xAritTOTALS1MSS3)^2));
                xxAritQuadTOTALS1MSS4 = (xxAritQuadTOTALS1MSS4 + ((pifTOTALS2MSS4arrayRAND[n] - xAritTOTALS1MSS4)^2));
    
                yyAritQuadTOTALS1MSS1 = (yyAritQuadTOTALS1MSS1 + ((pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)^2));
                yyAritQuadTOTALS1MSS2 = (yyAritQuadTOTALS1MSS2 + ((pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)^2));
                yyAritQuadTOTALS1MSS3 = (yyAritQuadTOTALS1MSS3 + ((pifTOTALS1MSS3arrayRAND[n] - yAritTOTALS1MSS3)^2));
                yyAritQuadTOTALS1MSS4 = (yyAritQuadTOTALS1MSS4 + ((pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)^2));
    
                qXYTOTALS1MSS1 = (qXYTOTALS1MSS1 + ((pifTOTALS2MSS1arrayRAND[n] - xAritTOTALS1MSS1) * (pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)));
                qXYTOTALS1MSS2 = (qXYTOTALS1MSS2 + ((pifTOTALS2MSS2arrayRAND[n] - xAritTOTALS1MSS2) * (pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)));
                qXYTOTALS1MSS3 = (qXYTOTALS1MSS3 + ((pifTOTALS2MSS3arrayRAND[n] - xAritTOTALS1MSS3) * (pifTOTALS1MSS3arrayRAND[n] - yAritTOTALS1MSS3)));
                qXYTOTALS1MSS4 = (qXYTOTALS1MSS4 + ((pifTOTALS2MSS4arrayRAND[n] - xAritTOTALS1MSS4) * (pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)));
            }
        
            aTOTALS1MSS1 = (((xQuadTOTALS1MSS1 * yTOTALS1MSS1) - (xTOTALS1MSS1 * xyTOTALS1MSS1)) / ((minPifVAL * xQuadTOTALS1MSS1) - (xTOTALS1MSS1^2)));
            aTOTALS1MSS2 = (((xQuadTOTALS1MSS2 * yTOTALS1MSS2) - (xTOTALS1MSS2 * xyTOTALS1MSS2)) / ((minPifVAL * xQuadTOTALS1MSS2) - (xTOTALS1MSS2^2)));
            aTOTALS1MSS3 = (((xQuadTOTALS1MSS3 * yTOTALS1MSS3) - (xTOTALS1MSS3 * xyTOTALS1MSS3)) / ((minPifVAL * xQuadTOTALS1MSS3) - (xTOTALS1MSS3^2)));
            aTOTALS1MSS4 = (((xQuadTOTALS1MSS4 * yTOTALS1MSS4) - (xTOTALS1MSS4 * xyTOTALS1MSS4)) / ((minPifVAL * xQuadTOTALS1MSS4) - (xTOTALS1MSS4^2)));
            
            bTOTALS1MSS1 = qXYTOTALS1MSS1 / xxAritQuadTOTALS1MSS1;
            bTOTALS1MSS2 = qXYTOTALS1MSS2 / xxAritQuadTOTALS1MSS2;
            bTOTALS1MSS3 = qXYTOTALS1MSS3 / xxAritQuadTOTALS1MSS3;
            bTOTALS1MSS4 = qXYTOTALS1MSS4 / xxAritQuadTOTALS1MSS4;
    
            rTOTALS1MSS1 = (qXYTOTALS1MSS1 / ((xxAritQuadTOTALS1MSS1 * yyAritQuadTOTALS1MSS1)^0.5));
            rTOTALS1MSS2 = (qXYTOTALS1MSS2 / ((xxAritQuadTOTALS1MSS2 * yyAritQuadTOTALS1MSS2)^0.5));
            rTOTALS1MSS3 = (qXYTOTALS1MSS3 / ((xxAritQuadTOTALS1MSS3 * yyAritQuadTOTALS1MSS3)^0.5));
            rTOTALS1MSS4 = (qXYTOTALS1MSS4 / ((xxAritQuadTOTALS1MSS4 * yyAritQuadTOTALS1MSS4)^0.5));
    
            rQuadTOTALS1MSS1 = ((rTOTALS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1MSS2 = ((rTOTALS1MSS2^2) * 100);
            rQuadTOTALS1MSS3 = ((rTOTALS1MSS3^2) * 100);
            rQuadTOTALS1MSS4 = ((rTOTALS1MSS4^2) * 100);
        
            syxTOTALS1MSS1 = (((yyAritQuadTOTALS1MSS1 - ((qXYTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS2 = (((yyAritQuadTOTALS1MSS2 - ((qXYTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS3 = (((yyAritQuadTOTALS1MSS3 - ((qXYTOTALS1MSS3^2) / xxAritQuadTOTALS1MSS3)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS4 = (((yyAritQuadTOTALS1MSS4 - ((qXYTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1MSS1 = (((syxTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)^0.5);
            bStandTOTALS1MSS2 = (((syxTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)^0.5);
            bStandTOTALS1MSS3 = (((syxTOTALS1MSS3^2) / xxAritQuadTOTALS1MSS3)^0.5);
            bStandTOTALS1MSS4 = (((syxTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)^0.5);
    
            aStandTOTALS1MSS1 = (bStandTOTALS1MSS1 * ((xQuadTOTALS1MSS1 / minPifVAL)^0.5));
            aStandTOTALS1MSS2 = (bStandTOTALS1MSS2 * ((xQuadTOTALS1MSS2 / minPifVAL)^0.5));
            aStandTOTALS1MSS3 = (bStandTOTALS1MSS3 * ((xQuadTOTALS1MSS3 / minPifVAL)^0.5));
            aStandTOTALS1MSS4 = (bStandTOTALS1MSS4 * ((xQuadTOTALS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS1, bTOTALS1MSS1, rTOTALS1MSS1, rQuadTOTALS1MSS1, aStandTOTALS1MSS1, bStandTOTALS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS2, bTOTALS1MSS2, rTOTALS1MSS2, rQuadTOTALS1MSS2, aStandTOTALS1MSS2, bStandTOTALS1MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS3, bTOTALS1MSS3, rTOTALS1MSS3, rQuadTOTALS1MSS3, aStandTOTALS1MSS3, bStandTOTALS1MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS4, bTOTALS1MSS4, rTOTALS1MSS4, rQuadTOTALS1MSS4, aStandTOTALS1MSS4, bStandTOTALS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS1MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS1MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifTOTALS1MSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS1MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aTOTALS1MSS1 + (bTOTALS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aTOTALS1MSS2 + (bTOTALS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = (aTOTALS1MSS3 + (bTOTALS1MSS3 * REFS1MSS3[i,j]));
                    OUT1MSS4[i,j] = (aTOTALS1MSS4 + (bTOTALS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT1MSS1);
        	CreatePyramid(OUT1MSS2);
        	CreatePyramid(OUT1MSS3);
        	CreatePyramid(OUT1MSS4);
        
        	CreateHistogram(OUT1MSS1);
        	CreateHistogram(OUT1MSS2);
        	CreateHistogram(OUT1MSS3);
        	CreateHistogram(OUT1MSS4);
        
        	CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors3 == 7 )
            {
            	printf("Master: Scene 2 (MSS), Slave: Scene 3 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors3 == 6 )
            {
            	printf("Master: Scene 2 (MSS), Slave: Scene 3 (TM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS3MSS1, xAritTOTALS3MSS2, xAritTOTALS3MSS3, xAritTOTALS3MSS4;
            numeric yAritTOTALS3MSS1, yAritTOTALS3MSS2, yAritTOTALS3MSS3, yAritTOTALS3MSS4;
    
            numeric aTOTALS3MSS1, aTOTALS3MSS2, aTOTALS3MSS3, aTOTALS3MSS4;
            numeric bTOTALS3MSS1, bTOTALS3MSS2, bTOTALS3MSS3, bTOTALS3MSS4;
            numeric rTOTALS3MSS1, rTOTALS3MSS2, rTOTALS3MSS3, rTOTALS3MSS4;
            numeric rQuadTOTALS3MSS1, rQuadTOTALS3MSS2, rQuadTOTALS3MSS3, rQuadTOTALS3MSS4;
            numeric syxTOTALS3MSS1, syxTOTALS3MSS2, syxTOTALS3MSS3, syxTOTALS3MSS4;
            numeric bStandTOTALS3MSS1, bStandTOTALS3MSS2, bStandTOTALS3MSS3, bStandTOTALS3MSS4;
            numeric aStandTOTALS3MSS1, aStandTOTALS3MSS2, aStandTOTALS3MSS3, aStandTOTALS3MSS4;
    
            numeric xTOTALS3MSS1 = 0;
            numeric xTOTALS3MSS2 = 0;
            numeric xTOTALS3MSS3 = 0;
            numeric xTOTALS3MSS4 = 0;
    
            numeric xQuadTOTALS3MSS1 = 0;
            numeric xQuadTOTALS3MSS2 = 0;
            numeric xQuadTOTALS3MSS3 = 0;
            numeric xQuadTOTALS3MSS4 = 0;
    
            numeric yTOTALS3MSS1 = 0;
            numeric yTOTALS3MSS2 = 0;
            numeric yTOTALS3MSS3 = 0;
            numeric yTOTALS3MSS4 = 0;
    
            numeric yQuadTOTALS3MSS1 = 0;
            numeric yQuadTOTALS3MSS2 = 0;
            numeric yQuadTOTALS3MSS3 = 0;
            numeric yQuadTOTALS3MSS4 = 0;
    
            numeric xyTOTALS3MSS1 = 0;
            numeric xyTOTALS3MSS2 = 0;
            numeric xyTOTALS3MSS3 = 0;
            numeric xyTOTALS3MSS4 = 0;
    
            numeric xxAritQuadTOTALS3MSS1 = 0;
            numeric xxAritQuadTOTALS3MSS2 = 0;
            numeric xxAritQuadTOTALS3MSS3 = 0;
            numeric xxAritQuadTOTALS3MSS4 = 0;
    
            numeric yyAritQuadTOTALS3MSS1 = 0;
            numeric yyAritQuadTOTALS3MSS2 = 0;
            numeric yyAritQuadTOTALS3MSS3 = 0;
            numeric yyAritQuadTOTALS3MSS4 = 0;
    
            numeric qXYTOTALS3MSS1 = 0;
            numeric qXYTOTALS3MSS2 = 0;
            numeric qXYTOTALS3MSS3 = 0;
            numeric qXYTOTALS3MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS3MSS1 = xTOTALS3MSS1 + pifTOTALS2MSS1arrayRAND[m];
                xTOTALS3MSS2 = xTOTALS3MSS2 + pifTOTALS2MSS2arrayRAND[m];
                xTOTALS3MSS3 = xTOTALS3MSS3 + pifTOTALS2MSS3arrayRAND[m];
                xTOTALS3MSS4 = xTOTALS3MSS4 + pifTOTALS2MSS4arrayRAND[m];
    
                xQuadTOTALS3MSS1 = (xQuadTOTALS3MSS1 + (pifTOTALS2MSS1arrayRAND[m]^2));
                xQuadTOTALS3MSS2 = (xQuadTOTALS3MSS2 + (pifTOTALS2MSS2arrayRAND[m]^2));
                xQuadTOTALS3MSS3 = (xQuadTOTALS3MSS3 + (pifTOTALS2MSS3arrayRAND[m]^2));
                xQuadTOTALS3MSS4 = (xQuadTOTALS3MSS4 + (pifTOTALS2MSS4arrayRAND[m]^2));
    
                yTOTALS3MSS1 = yTOTALS3MSS1 + pifTOTALS3MSS1arrayRAND[m];
                yTOTALS3MSS2 = yTOTALS3MSS2 + pifTOTALS3MSS2arrayRAND[m];
                yTOTALS3MSS3 = yTOTALS3MSS3 + pifTOTALS3MSS3arrayRAND[m];
                yTOTALS3MSS4 = yTOTALS3MSS4 + pifTOTALS3MSS4arrayRAND[m];
                
                yQuadTOTALS3MSS1 = (yQuadTOTALS3MSS1 + (pifTOTALS3MSS1arrayRAND[m]^2));
                yQuadTOTALS3MSS2 = (yQuadTOTALS3MSS2 + (pifTOTALS3MSS2arrayRAND[m]^2));
                yQuadTOTALS3MSS3 = (yQuadTOTALS3MSS3 + (pifTOTALS3MSS3arrayRAND[m]^2));
                yQuadTOTALS3MSS4 = (yQuadTOTALS3MSS4 + (pifTOTALS3MSS4arrayRAND[m]^2));
    
                xyTOTALS3MSS1 = (xyTOTALS3MSS1 + (pifTOTALS2MSS1arrayRAND[m] * pifTOTALS3MSS1arrayRAND[m]));
                xyTOTALS3MSS2 = (xyTOTALS3MSS2 + (pifTOTALS2MSS2arrayRAND[m] * pifTOTALS3MSS2arrayRAND[m]));
                xyTOTALS3MSS3 = (xyTOTALS3MSS3 + (pifTOTALS2MSS3arrayRAND[m] * pifTOTALS3MSS3arrayRAND[m]));
                xyTOTALS3MSS4 = (xyTOTALS3MSS4 + (pifTOTALS2MSS4arrayRAND[m] * pifTOTALS3MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS3MSS1 = xTOTALS3MSS1 / minPifVAL;
            xAritTOTALS3MSS2 = xTOTALS3MSS2 / minPifVAL;
            xAritTOTALS3MSS3 = xTOTALS3MSS3 / minPifVAL;
            xAritTOTALS3MSS4 = xTOTALS3MSS4 / minPifVAL;
    
            yAritTOTALS3MSS1 = yTOTALS3MSS1 / minPifVAL;
            yAritTOTALS3MSS2 = yTOTALS3MSS2 / minPifVAL;
            yAritTOTALS3MSS3 = yTOTALS3MSS3 / minPifVAL;
            yAritTOTALS3MSS4 = yTOTALS3MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3MSS1 = (xxAritQuadTOTALS3MSS1 + ((pifTOTALS2MSS1arrayRAND[n] - xAritTOTALS3MSS1)^2));
                xxAritQuadTOTALS3MSS2 = (xxAritQuadTOTALS3MSS2 + ((pifTOTALS2MSS2arrayRAND[n] - xAritTOTALS3MSS2)^2));
                xxAritQuadTOTALS3MSS3 = (xxAritQuadTOTALS3MSS3 + ((pifTOTALS2MSS3arrayRAND[n] - xAritTOTALS3MSS3)^2));
                xxAritQuadTOTALS3MSS4 = (xxAritQuadTOTALS3MSS4 + ((pifTOTALS2MSS4arrayRAND[n] - xAritTOTALS3MSS4)^2));
    
                yyAritQuadTOTALS3MSS1 = (yyAritQuadTOTALS3MSS1 + ((pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)^2));
                yyAritQuadTOTALS3MSS2 = (yyAritQuadTOTALS3MSS2 + ((pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)^2));
                yyAritQuadTOTALS3MSS3 = (yyAritQuadTOTALS3MSS3 + ((pifTOTALS3MSS3arrayRAND[n] - yAritTOTALS3MSS3)^2));
                yyAritQuadTOTALS3MSS4 = (yyAritQuadTOTALS3MSS4 + ((pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)^2));
    
                qXYTOTALS3MSS1 = (qXYTOTALS3MSS1 + ((pifTOTALS2MSS1arrayRAND[n] - xAritTOTALS3MSS1) * (pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)));
                qXYTOTALS3MSS2 = (qXYTOTALS3MSS2 + ((pifTOTALS2MSS2arrayRAND[n] - xAritTOTALS3MSS2) * (pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)));
                qXYTOTALS3MSS3 = (qXYTOTALS3MSS3 + ((pifTOTALS2MSS3arrayRAND[n] - xAritTOTALS3MSS3) * (pifTOTALS3MSS3arrayRAND[n] - yAritTOTALS3MSS3)));
                qXYTOTALS3MSS4 = (qXYTOTALS3MSS4 + ((pifTOTALS2MSS4arrayRAND[n] - xAritTOTALS3MSS4) * (pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)));
            }
        
            aTOTALS3MSS1 = (((xQuadTOTALS3MSS1 * yTOTALS3MSS1) - (xTOTALS3MSS1 * xyTOTALS3MSS1)) / ((minPifVAL * xQuadTOTALS3MSS1) - (xTOTALS3MSS1^2)));
            aTOTALS3MSS2 = (((xQuadTOTALS3MSS2 * yTOTALS3MSS2) - (xTOTALS3MSS2 * xyTOTALS3MSS2)) / ((minPifVAL * xQuadTOTALS3MSS2) - (xTOTALS3MSS2^2)));
            aTOTALS3MSS3 = (((xQuadTOTALS3MSS3 * yTOTALS3MSS3) - (xTOTALS3MSS3 * xyTOTALS3MSS3)) / ((minPifVAL * xQuadTOTALS3MSS3) - (xTOTALS3MSS3^2)));
            aTOTALS3MSS4 = (((xQuadTOTALS3MSS4 * yTOTALS3MSS4) - (xTOTALS3MSS4 * xyTOTALS3MSS4)) / ((minPifVAL * xQuadTOTALS3MSS4) - (xTOTALS3MSS4^2)));
            
            bTOTALS3MSS1 = qXYTOTALS3MSS1 / xxAritQuadTOTALS3MSS1;
            bTOTALS3MSS2 = qXYTOTALS3MSS2 / xxAritQuadTOTALS3MSS2;
            bTOTALS3MSS3 = qXYTOTALS3MSS3 / xxAritQuadTOTALS3MSS3;
            bTOTALS3MSS4 = qXYTOTALS3MSS4 / xxAritQuadTOTALS3MSS4;
    
            rTOTALS3MSS1 = (qXYTOTALS3MSS1 / ((xxAritQuadTOTALS3MSS1 * yyAritQuadTOTALS3MSS1)^0.5));
            rTOTALS3MSS2 = (qXYTOTALS3MSS2 / ((xxAritQuadTOTALS3MSS2 * yyAritQuadTOTALS3MSS2)^0.5));
            rTOTALS3MSS3 = (qXYTOTALS3MSS3 / ((xxAritQuadTOTALS3MSS3 * yyAritQuadTOTALS3MSS3)^0.5));
            rTOTALS3MSS4 = (qXYTOTALS3MSS4 / ((xxAritQuadTOTALS3MSS4 * yyAritQuadTOTALS3MSS4)^0.5));
    
            rQuadTOTALS3MSS1 = ((rTOTALS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3MSS2 = ((rTOTALS3MSS2^2) * 100);
            rQuadTOTALS3MSS3 = ((rTOTALS3MSS3^2) * 100);
            rQuadTOTALS3MSS4 = ((rTOTALS3MSS4^2) * 100);
        
            syxTOTALS3MSS1 = (((yyAritQuadTOTALS3MSS1 - ((qXYTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS2 = (((yyAritQuadTOTALS3MSS2 - ((qXYTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS3 = (((yyAritQuadTOTALS3MSS3 - ((qXYTOTALS3MSS3^2) / xxAritQuadTOTALS3MSS3)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS4 = (((yyAritQuadTOTALS3MSS4 - ((qXYTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3MSS1 = (((syxTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)^0.5);
            bStandTOTALS3MSS2 = (((syxTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)^0.5);
            bStandTOTALS3MSS3 = (((syxTOTALS3MSS3^2) / xxAritQuadTOTALS3MSS3)^0.5);
            bStandTOTALS3MSS4 = (((syxTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)^0.5);
    
            aStandTOTALS3MSS1 = (bStandTOTALS3MSS1 * ((xQuadTOTALS3MSS1 / minPifVAL)^0.5));
            aStandTOTALS3MSS2 = (bStandTOTALS3MSS2 * ((xQuadTOTALS3MSS2 / minPifVAL)^0.5));
            aStandTOTALS3MSS3 = (bStandTOTALS3MSS3 * ((xQuadTOTALS3MSS3 / minPifVAL)^0.5));
            aStandTOTALS3MSS4 = (bStandTOTALS3MSS4 * ((xQuadTOTALS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS1, bTOTALS3MSS1, rTOTALS3MSS1, rQuadTOTALS3MSS1, aStandTOTALS3MSS1, bStandTOTALS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS2, bTOTALS3MSS2, rTOTALS3MSS2, rQuadTOTALS3MSS2, aStandTOTALS3MSS2, bStandTOTALS3MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS3, bTOTALS3MSS3, rTOTALS3MSS3, rQuadTOTALS3MSS3, aStandTOTALS3MSS3, bStandTOTALS3MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS4, bTOTALS3MSS4, rTOTALS3MSS4, rQuadTOTALS3MSS4, aStandTOTALS3MSS4, bStandTOTALS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS3MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS3MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifTOTALS3MSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS3MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aTOTALS3MSS1 + (bTOTALS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aTOTALS3MSS2 + (bTOTALS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = (aTOTALS3MSS3 + (bTOTALS3MSS3 * REFS3MSS3[i,j]));
                    OUT3MSS4[i,j] = (aTOTALS3MSS4 + (bTOTALS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT3MSS1);
        	CreatePyramid(OUT3MSS2);
        	CreatePyramid(OUT3MSS3);
        	CreatePyramid(OUT3MSS4);
        
        	CreateHistogram(OUT3MSS1);
        	CreateHistogram(OUT3MSS2);
        	CreateHistogram(OUT3MSS3);
        	CreateHistogram(OUT3MSS4);
        
        	CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
        
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            
            }
            
            if ( sensors4 == 7 )
            {
            	printf("Master: Scene 2 (MSS), Slave: Scene 4 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors4 == 6 )
            {
            	printf("Master: Scene 2 (MSS), Slave: Scene 4 (TM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS4MSS1, xAritTOTALS4MSS2, xAritTOTALS4MSS3, xAritTOTALS4MSS4;
            numeric yAritTOTALS4MSS1, yAritTOTALS4MSS2, yAritTOTALS4MSS3, yAritTOTALS4MSS4;
    
            numeric aTOTALS4MSS1, aTOTALS4MSS2, aTOTALS4MSS3, aTOTALS4MSS4;
            numeric bTOTALS4MSS1, bTOTALS4MSS2, bTOTALS4MSS3, bTOTALS4MSS4;
            numeric rTOTALS4MSS1, rTOTALS4MSS2, rTOTALS4MSS3, rTOTALS4MSS4;
            numeric rQuadTOTALS4MSS1, rQuadTOTALS4MSS2, rQuadTOTALS4MSS3, rQuadTOTALS4MSS4;
            numeric syxTOTALS4MSS1, syxTOTALS4MSS2, syxTOTALS4MSS3, syxTOTALS4MSS4;
            numeric bStandTOTALS4MSS1, bStandTOTALS4MSS2, bStandTOTALS4MSS3, bStandTOTALS4MSS4;
            numeric aStandTOTALS4MSS1, aStandTOTALS4MSS2, aStandTOTALS4MSS3, aStandTOTALS4MSS4;
    
            numeric xTOTALS4MSS1 = 0;
            numeric xTOTALS4MSS2 = 0;
            numeric xTOTALS4MSS3 = 0;
            numeric xTOTALS4MSS4 = 0;
    
            numeric xQuadTOTALS4MSS1 = 0;
            numeric xQuadTOTALS4MSS2 = 0;
            numeric xQuadTOTALS4MSS3 = 0;
            numeric xQuadTOTALS4MSS4 = 0;
    
            numeric yTOTALS4MSS1 = 0;
            numeric yTOTALS4MSS2 = 0;
            numeric yTOTALS4MSS3 = 0;
            numeric yTOTALS4MSS4 = 0;
    
            numeric yQuadTOTALS4MSS1 = 0;
            numeric yQuadTOTALS4MSS2 = 0;
            numeric yQuadTOTALS4MSS3 = 0;
            numeric yQuadTOTALS4MSS4 = 0;
    
            numeric xyTOTALS4MSS1 = 0;
            numeric xyTOTALS4MSS2 = 0;
            numeric xyTOTALS4MSS3 = 0;
            numeric xyTOTALS4MSS4 = 0;
    
            numeric xxAritQuadTOTALS4MSS1 = 0;
            numeric xxAritQuadTOTALS4MSS2 = 0;
            numeric xxAritQuadTOTALS4MSS3 = 0;
            numeric xxAritQuadTOTALS4MSS4 = 0;
    
            numeric yyAritQuadTOTALS4MSS1 = 0;
            numeric yyAritQuadTOTALS4MSS2 = 0;
            numeric yyAritQuadTOTALS4MSS3 = 0;
            numeric yyAritQuadTOTALS4MSS4 = 0;
    
            numeric qXYTOTALS4MSS1 = 0;
            numeric qXYTOTALS4MSS2 = 0;
            numeric qXYTOTALS4MSS3 = 0;
            numeric qXYTOTALS4MSS4 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS4MSS1 = xTOTALS4MSS1 + pifTOTALS2MSS1arrayRAND[m];
                xTOTALS4MSS2 = xTOTALS4MSS2 + pifTOTALS2MSS2arrayRAND[m];
                xTOTALS4MSS3 = xTOTALS4MSS3 + pifTOTALS2MSS3arrayRAND[m];
                xTOTALS4MSS4 = xTOTALS4MSS4 + pifTOTALS2MSS4arrayRAND[m];
    
                xQuadTOTALS4MSS1 = (xQuadTOTALS4MSS1 + (pifTOTALS2MSS1arrayRAND[m]^2));
                xQuadTOTALS4MSS2 = (xQuadTOTALS4MSS2 + (pifTOTALS2MSS2arrayRAND[m]^2));
                xQuadTOTALS4MSS3 = (xQuadTOTALS4MSS3 + (pifTOTALS2MSS3arrayRAND[m]^2));
                xQuadTOTALS4MSS4 = (xQuadTOTALS4MSS4 + (pifTOTALS2MSS4arrayRAND[m]^2));
    
                yTOTALS4MSS1 = yTOTALS4MSS1 + pifTOTALS4MSS1arrayRAND[m];
                yTOTALS4MSS2 = yTOTALS4MSS2 + pifTOTALS4MSS2arrayRAND[m];
                yTOTALS4MSS3 = yTOTALS4MSS3 + pifTOTALS4MSS3arrayRAND[m];
                yTOTALS4MSS4 = yTOTALS4MSS4 + pifTOTALS4MSS4arrayRAND[m];
                
                yQuadTOTALS4MSS1 = (yQuadTOTALS4MSS1 + (pifTOTALS4MSS1arrayRAND[m]^2));
                yQuadTOTALS4MSS2 = (yQuadTOTALS4MSS2 + (pifTOTALS4MSS2arrayRAND[m]^2));
                yQuadTOTALS4MSS3 = (yQuadTOTALS4MSS3 + (pifTOTALS4MSS3arrayRAND[m]^2));
                yQuadTOTALS4MSS4 = (yQuadTOTALS4MSS4 + (pifTOTALS4MSS4arrayRAND[m]^2));
    
                xyTOTALS4MSS1 = (xyTOTALS4MSS1 + (pifTOTALS2MSS1arrayRAND[m] * pifTOTALS4MSS1arrayRAND[m]));
                xyTOTALS4MSS2 = (xyTOTALS4MSS2 + (pifTOTALS2MSS2arrayRAND[m] * pifTOTALS4MSS2arrayRAND[m]));
                xyTOTALS4MSS3 = (xyTOTALS4MSS3 + (pifTOTALS2MSS3arrayRAND[m] * pifTOTALS4MSS3arrayRAND[m]));
                xyTOTALS4MSS4 = (xyTOTALS4MSS4 + (pifTOTALS2MSS4arrayRAND[m] * pifTOTALS4MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS4MSS1 = xTOTALS4MSS1 / minPifVAL;
            xAritTOTALS4MSS2 = xTOTALS4MSS2 / minPifVAL;
            xAritTOTALS4MSS3 = xTOTALS4MSS3 / minPifVAL;
            xAritTOTALS4MSS4 = xTOTALS4MSS4 / minPifVAL;
    
            yAritTOTALS4MSS1 = yTOTALS4MSS1 / minPifVAL;
            yAritTOTALS4MSS2 = yTOTALS4MSS2 / minPifVAL;
            yAritTOTALS4MSS3 = yTOTALS4MSS3 / minPifVAL;
            yAritTOTALS4MSS4 = yTOTALS4MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4MSS1 = (xxAritQuadTOTALS4MSS1 + ((pifTOTALS2MSS1arrayRAND[n] - xAritTOTALS4MSS1)^2));
                xxAritQuadTOTALS4MSS2 = (xxAritQuadTOTALS4MSS2 + ((pifTOTALS2MSS2arrayRAND[n] - xAritTOTALS4MSS2)^2));
                xxAritQuadTOTALS4MSS3 = (xxAritQuadTOTALS4MSS3 + ((pifTOTALS2MSS3arrayRAND[n] - xAritTOTALS4MSS3)^2));
                xxAritQuadTOTALS4MSS4 = (xxAritQuadTOTALS4MSS4 + ((pifTOTALS2MSS4arrayRAND[n] - xAritTOTALS4MSS4)^2));
    
                yyAritQuadTOTALS4MSS1 = (yyAritQuadTOTALS4MSS1 + ((pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)^2));
                yyAritQuadTOTALS4MSS2 = (yyAritQuadTOTALS4MSS2 + ((pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)^2));
                yyAritQuadTOTALS4MSS3 = (yyAritQuadTOTALS4MSS3 + ((pifTOTALS4MSS3arrayRAND[n] - yAritTOTALS4MSS3)^2));
                yyAritQuadTOTALS4MSS4 = (yyAritQuadTOTALS4MSS4 + ((pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)^2));
    
                qXYTOTALS4MSS1 = (qXYTOTALS4MSS1 + ((pifTOTALS2MSS1arrayRAND[n] - xAritTOTALS4MSS1) * (pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)));
                qXYTOTALS4MSS2 = (qXYTOTALS4MSS2 + ((pifTOTALS2MSS2arrayRAND[n] - xAritTOTALS4MSS2) * (pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)));
                qXYTOTALS4MSS3 = (qXYTOTALS4MSS3 + ((pifTOTALS2MSS3arrayRAND[n] - xAritTOTALS4MSS3) * (pifTOTALS4MSS3arrayRAND[n] - yAritTOTALS4MSS3)));
                qXYTOTALS4MSS4 = (qXYTOTALS4MSS4 + ((pifTOTALS2MSS4arrayRAND[n] - xAritTOTALS4MSS4) * (pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)));
            }
        
            aTOTALS4MSS1 = (((xQuadTOTALS4MSS1 * yTOTALS4MSS1) - (xTOTALS4MSS1 * xyTOTALS4MSS1)) / ((minPifVAL * xQuadTOTALS4MSS1) - (xTOTALS4MSS1^2)));
            aTOTALS4MSS2 = (((xQuadTOTALS4MSS2 * yTOTALS4MSS2) - (xTOTALS4MSS2 * xyTOTALS4MSS2)) / ((minPifVAL * xQuadTOTALS4MSS2) - (xTOTALS4MSS2^2)));
            aTOTALS4MSS3 = (((xQuadTOTALS4MSS3 * yTOTALS4MSS3) - (xTOTALS4MSS3 * xyTOTALS4MSS3)) / ((minPifVAL * xQuadTOTALS4MSS3) - (xTOTALS4MSS3^2)));
            aTOTALS4MSS4 = (((xQuadTOTALS4MSS4 * yTOTALS4MSS4) - (xTOTALS4MSS4 * xyTOTALS4MSS4)) / ((minPifVAL * xQuadTOTALS4MSS4) - (xTOTALS4MSS4^2)));
            
            bTOTALS4MSS1 = qXYTOTALS4MSS1 / xxAritQuadTOTALS4MSS1;
            bTOTALS4MSS2 = qXYTOTALS4MSS2 / xxAritQuadTOTALS4MSS2;
            bTOTALS4MSS3 = qXYTOTALS4MSS3 / xxAritQuadTOTALS4MSS3;
            bTOTALS4MSS4 = qXYTOTALS4MSS4 / xxAritQuadTOTALS4MSS4;
    
            rTOTALS4MSS1 = (qXYTOTALS4MSS1 / ((xxAritQuadTOTALS4MSS1 * yyAritQuadTOTALS4MSS1)^0.5));
            rTOTALS4MSS2 = (qXYTOTALS4MSS2 / ((xxAritQuadTOTALS4MSS2 * yyAritQuadTOTALS4MSS2)^0.5));
            rTOTALS4MSS3 = (qXYTOTALS4MSS3 / ((xxAritQuadTOTALS4MSS3 * yyAritQuadTOTALS4MSS3)^0.5));
            rTOTALS4MSS4 = (qXYTOTALS4MSS4 / ((xxAritQuadTOTALS4MSS4 * yyAritQuadTOTALS4MSS4)^0.5));
    
            rQuadTOTALS4MSS1 = ((rTOTALS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4MSS2 = ((rTOTALS4MSS2^2) * 100);
            rQuadTOTALS4MSS3 = ((rTOTALS4MSS3^2) * 100);
            rQuadTOTALS4MSS4 = ((rTOTALS4MSS4^2) * 100);
        
            syxTOTALS4MSS1 = (((yyAritQuadTOTALS4MSS1 - ((qXYTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS2 = (((yyAritQuadTOTALS4MSS2 - ((qXYTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS3 = (((yyAritQuadTOTALS4MSS3 - ((qXYTOTALS4MSS3^2) / xxAritQuadTOTALS4MSS3)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS4 = (((yyAritQuadTOTALS4MSS4 - ((qXYTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4MSS1 = (((syxTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)^0.5);
            bStandTOTALS4MSS2 = (((syxTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)^0.5);
            bStandTOTALS4MSS3 = (((syxTOTALS4MSS3^2) / xxAritQuadTOTALS4MSS3)^0.5);
            bStandTOTALS4MSS4 = (((syxTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)^0.5);
    
            aStandTOTALS4MSS1 = (bStandTOTALS4MSS1 * ((xQuadTOTALS4MSS1 / minPifVAL)^0.5));
            aStandTOTALS4MSS2 = (bStandTOTALS4MSS2 * ((xQuadTOTALS4MSS2 / minPifVAL)^0.5));
            aStandTOTALS4MSS3 = (bStandTOTALS4MSS3 * ((xQuadTOTALS4MSS3 / minPifVAL)^0.5));
            aStandTOTALS4MSS4 = (bStandTOTALS4MSS4 * ((xQuadTOTALS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS1, bTOTALS4MSS1, rTOTALS4MSS1, rQuadTOTALS4MSS1, aStandTOTALS4MSS1, bStandTOTALS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS2, bTOTALS4MSS2, rTOTALS4MSS2, rQuadTOTALS4MSS2, aStandTOTALS4MSS2, bStandTOTALS4MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS3, bTOTALS4MSS3, rTOTALS4MSS3, rQuadTOTALS4MSS3, aStandTOTALS4MSS3, bStandTOTALS4MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS4, bTOTALS4MSS4, rTOTALS4MSS4, rQuadTOTALS4MSS4, aStandTOTALS4MSS4, bStandTOTALS4MSS4);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS4MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS4MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifTOTALS4MSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS4MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aTOTALS4MSS1 + (bTOTALS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aTOTALS4MSS2 + (bTOTALS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = (aTOTALS4MSS3 + (bTOTALS4MSS3 * REFS4MSS3[i,j]));
                    OUT4MSS4[i,j] = (aTOTALS4MSS4 + (bTOTALS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT4MSS1);
        	CreatePyramid(OUT4MSS2);
        	CreatePyramid(OUT4MSS3);
        	CreatePyramid(OUT4MSS4);
        
        	CreateHistogram(OUT4MSS1);
        	CreateHistogram(OUT4MSS2);
        	CreateHistogram(OUT4MSS3);
        	CreateHistogram(OUT4MSS4);
        
        	CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
        }
    }
	else if ( slaveMaster == 3 )
	{
        if ( sensors3 == 7 )
        {
        printf("Scene 3 - Master Scene (ETM):\n");
        printf("Scene 3 array values used for regression computation:\n");
    
        printf("ETM1: %12f ", pifTOTALS3ETM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS3ETM1arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS3ETM1arrayRAND[minPifVAL]);
    
        printf("ETM2: %12f ", pifTOTALS3ETM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS3ETM2arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS3ETM2arrayRAND[minPifVAL]);
    
        printf("ETM3: %12f ", pifTOTALS3ETM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS3ETM3arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS3ETM3arrayRAND[minPifVAL]);
    
        printf("ETM4: %12f ", pifTOTALS3ETM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS3ETM4arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS3ETM4arrayRAND[minPifVAL]);
    
        printf("ETM5: %12f ", pifTOTALS3ETM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS3ETM5arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS3ETM5arrayRAND[minPifVAL]);
    
        printf("ETM7: %12f ", pifTOTALS3ETM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS3ETM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifTOTALS3ETM7arrayRAND[minPifVAL]);    
            
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                OUT3ETM1[i,j] = REFS3ETM1[i,j];
                OUT3ETM2[i,j] = REFS3ETM2[i,j];
                OUT3ETM3[i,j] = REFS3ETM3[i,j];
                OUT3ETM4[i,j] = REFS3ETM4[i,j];
                OUT3ETM5[i,j] = REFS3ETM5[i,j];
                OUT3ETM7[i,j] = REFS3ETM7[i,j];
                }
            }
        
        CreatePyramid(OUT3ETM1);
        CreatePyramid(OUT3ETM2);
        CreatePyramid(OUT3ETM3);
        CreatePyramid(OUT3ETM4);
        CreatePyramid(OUT3ETM5);
        CreatePyramid(OUT3ETM7);
    
        CreateHistogram(OUT3ETM1);
        CreateHistogram(OUT3ETM2);
        CreateHistogram(OUT3ETM3);
        CreateHistogram(OUT3ETM4);
        CreateHistogram(OUT3ETM5);
        CreateHistogram(OUT3ETM7);
        
        CloseRaster(REFS3ETM1);
		CloseRaster(REFS3ETM2);
		CloseRaster(REFS3ETM3);
		CloseRaster(REFS3ETM4);
		CloseRaster(REFS3ETM5);
		CloseRaster(REFS3ETM7);
		CloseRaster(OUT3ETM1);
		CloseRaster(OUT3ETM2);
		CloseRaster(OUT3ETM3);
		CloseRaster(OUT3ETM4);
		CloseRaster(OUT3ETM5);
		CloseRaster(OUT3ETM7);
    
        printf("Scene 3 (Master) output was written, histogram created and pyramid written\n\n\n");
        
            if ( sensors1 == 7 )
            {
            numeric xAritTOTALS1ETM1, xAritTOTALS1ETM2, xAritTOTALS1ETM3, xAritTOTALS1ETM4, xAritTOTALS1ETM5, xAritTOTALS1ETM7;
            numeric yAritTOTALS1ETM1, yAritTOTALS1ETM2, yAritTOTALS1ETM3, yAritTOTALS1ETM4, yAritTOTALS1ETM5, yAritTOTALS1ETM7;
    
            numeric aTOTALS1ETM1, aTOTALS1ETM2, aTOTALS1ETM3, aTOTALS1ETM4, aTOTALS1ETM5, aTOTALS1ETM7;
            numeric bTOTALS1ETM1, bTOTALS1ETM2, bTOTALS1ETM3, bTOTALS1ETM4, bTOTALS1ETM5, bTOTALS1ETM7;
            numeric rTOTALS1ETM1, rTOTALS1ETM2, rTOTALS1ETM3, rTOTALS1ETM4, rTOTALS1ETM5, rTOTALS1ETM7;
            numeric rQuadTOTALS1ETM1, rQuadTOTALS1ETM2, rQuadTOTALS1ETM3, rQuadTOTALS1ETM4, rQuadTOTALS1ETM5, rQuadTOTALS1ETM7;
            numeric syxTOTALS1ETM1, syxTOTALS1ETM2, syxTOTALS1ETM3, syxTOTALS1ETM4, syxTOTALS1ETM5, syxTOTALS1ETM7;
            numeric bStandTOTALS1ETM1, bStandTOTALS1ETM2, bStandTOTALS1ETM3, bStandTOTALS1ETM4, bStandTOTALS1ETM5, bStandTOTALS1ETM7;
            numeric aStandTOTALS1ETM1, aStandTOTALS1ETM2, aStandTOTALS1ETM3, aStandTOTALS1ETM4, aStandTOTALS1ETM5, aStandTOTALS1ETM7;
    
            numeric xTOTALS1ETM1 = 0;
            numeric xTOTALS1ETM2 = 0;
            numeric xTOTALS1ETM3 = 0;
            numeric xTOTALS1ETM4 = 0;
            numeric xTOTALS1ETM5 = 0;
            numeric xTOTALS1ETM7 = 0;
    
            numeric xQuadTOTALS1ETM1 = 0;
            numeric xQuadTOTALS1ETM2 = 0;
            numeric xQuadTOTALS1ETM3 = 0;
            numeric xQuadTOTALS1ETM4 = 0;
            numeric xQuadTOTALS1ETM5 = 0;
            numeric xQuadTOTALS1ETM7 = 0;
    
            numeric yTOTALS1ETM1 = 0;
            numeric yTOTALS1ETM2 = 0;
            numeric yTOTALS1ETM3 = 0;
            numeric yTOTALS1ETM4 = 0;
            numeric yTOTALS1ETM5 = 0;
            numeric yTOTALS1ETM7 = 0;
    
            numeric yQuadTOTALS1ETM1 = 0;
            numeric yQuadTOTALS1ETM2 = 0;
            numeric yQuadTOTALS1ETM3 = 0;
            numeric yQuadTOTALS1ETM4 = 0;
            numeric yQuadTOTALS1ETM5 = 0;
            numeric yQuadTOTALS1ETM7 = 0;
    
            numeric xyTOTALS1ETM1 = 0;
            numeric xyTOTALS1ETM2 = 0;
            numeric xyTOTALS1ETM3 = 0;
            numeric xyTOTALS1ETM4 = 0;
            numeric xyTOTALS1ETM5 = 0;
            numeric xyTOTALS1ETM7 = 0;
    
            numeric xxAritQuadTOTALS1ETM1 = 0;
            numeric xxAritQuadTOTALS1ETM2 = 0;
            numeric xxAritQuadTOTALS1ETM3 = 0;
            numeric xxAritQuadTOTALS1ETM4 = 0;
            numeric xxAritQuadTOTALS1ETM5 = 0;
            numeric xxAritQuadTOTALS1ETM7 = 0;
    
            numeric yyAritQuadTOTALS1ETM1 = 0;
            numeric yyAritQuadTOTALS1ETM2 = 0;
            numeric yyAritQuadTOTALS1ETM3 = 0;
            numeric yyAritQuadTOTALS1ETM4 = 0;
            numeric yyAritQuadTOTALS1ETM5 = 0;
            numeric yyAritQuadTOTALS1ETM7 = 0;
    
            numeric qXYTOTALS1ETM1 = 0;
            numeric qXYTOTALS1ETM2 = 0;
            numeric qXYTOTALS1ETM3 = 0;
            numeric qXYTOTALS1ETM4 = 0;
            numeric qXYTOTALS1ETM5 = 0;
            numeric qXYTOTALS1ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS1ETM1 = xTOTALS1ETM1 + pifTOTALS3ETM1arrayRAND[m];
                xTOTALS1ETM2 = xTOTALS1ETM2 + pifTOTALS3ETM2arrayRAND[m];
                xTOTALS1ETM3 = xTOTALS1ETM3 + pifTOTALS3ETM3arrayRAND[m];
                xTOTALS1ETM4 = xTOTALS1ETM4 + pifTOTALS3ETM4arrayRAND[m];
                xTOTALS1ETM5 = xTOTALS1ETM5 + pifTOTALS3ETM5arrayRAND[m];
                xTOTALS1ETM7 = xTOTALS1ETM7 + pifTOTALS3ETM7arrayRAND[m];
    
                xQuadTOTALS1ETM1 = (xQuadTOTALS1ETM1 + (pifTOTALS3ETM1arrayRAND[m]^2));
                xQuadTOTALS1ETM2 = (xQuadTOTALS1ETM2 + (pifTOTALS3ETM2arrayRAND[m]^2));
                xQuadTOTALS1ETM3 = (xQuadTOTALS1ETM3 + (pifTOTALS3ETM3arrayRAND[m]^2));
                xQuadTOTALS1ETM4 = (xQuadTOTALS1ETM4 + (pifTOTALS3ETM4arrayRAND[m]^2));
                xQuadTOTALS1ETM5 = (xQuadTOTALS1ETM5 + (pifTOTALS3ETM5arrayRAND[m]^2));
                xQuadTOTALS1ETM7 = (xQuadTOTALS1ETM7 + (pifTOTALS3ETM7arrayRAND[m]^2));
    
                yTOTALS1ETM1 = yTOTALS1ETM1 + pifTOTALS1ETM1arrayRAND[m];
                yTOTALS1ETM2 = yTOTALS1ETM2 + pifTOTALS1ETM2arrayRAND[m];
                yTOTALS1ETM3 = yTOTALS1ETM3 + pifTOTALS1ETM3arrayRAND[m];
                yTOTALS1ETM4 = yTOTALS1ETM4 + pifTOTALS1ETM4arrayRAND[m];
                yTOTALS1ETM5 = yTOTALS1ETM5 + pifTOTALS1ETM5arrayRAND[m];
                yTOTALS1ETM7 = yTOTALS1ETM7 + pifTOTALS1ETM7arrayRAND[m];
                
                yQuadTOTALS1ETM1 = (yQuadTOTALS1ETM1 + (pifTOTALS1ETM1arrayRAND[m]^2));
                yQuadTOTALS1ETM2 = (yQuadTOTALS1ETM2 + (pifTOTALS1ETM2arrayRAND[m]^2));
                yQuadTOTALS1ETM3 = (yQuadTOTALS1ETM3 + (pifTOTALS1ETM3arrayRAND[m]^2));
                yQuadTOTALS1ETM4 = (yQuadTOTALS1ETM4 + (pifTOTALS1ETM4arrayRAND[m]^2));
                yQuadTOTALS1ETM5 = (yQuadTOTALS1ETM5 + (pifTOTALS1ETM5arrayRAND[m]^2));
                yQuadTOTALS1ETM7 = (yQuadTOTALS1ETM7 + (pifTOTALS1ETM7arrayRAND[m]^2));
    
                xyTOTALS1ETM1 = (xyTOTALS1ETM1 + (pifTOTALS3ETM1arrayRAND[m] * pifTOTALS1ETM1arrayRAND[m]));
                xyTOTALS1ETM2 = (xyTOTALS1ETM2 + (pifTOTALS3ETM2arrayRAND[m] * pifTOTALS1ETM2arrayRAND[m]));
                xyTOTALS1ETM3 = (xyTOTALS1ETM3 + (pifTOTALS3ETM3arrayRAND[m] * pifTOTALS1ETM3arrayRAND[m]));
                xyTOTALS1ETM4 = (xyTOTALS1ETM4 + (pifTOTALS3ETM4arrayRAND[m] * pifTOTALS1ETM4arrayRAND[m]));
                xyTOTALS1ETM5 = (xyTOTALS1ETM5 + (pifTOTALS3ETM5arrayRAND[m] * pifTOTALS1ETM5arrayRAND[m]));
                xyTOTALS1ETM7 = (xyTOTALS1ETM7 + (pifTOTALS3ETM7arrayRAND[m] * pifTOTALS1ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS1ETM1 = xTOTALS1ETM1 / minPifVAL;
            xAritTOTALS1ETM2 = xTOTALS1ETM2 / minPifVAL;
            xAritTOTALS1ETM3 = xTOTALS1ETM3 / minPifVAL;
            xAritTOTALS1ETM4 = xTOTALS1ETM4 / minPifVAL;
            xAritTOTALS1ETM5 = xTOTALS1ETM5 / minPifVAL;
            xAritTOTALS1ETM7 = xTOTALS1ETM7 / minPifVAL;
    
            yAritTOTALS1ETM1 = yTOTALS1ETM1 / minPifVAL;
            yAritTOTALS1ETM2 = yTOTALS1ETM2 / minPifVAL;
            yAritTOTALS1ETM3 = yTOTALS1ETM3 / minPifVAL;
            yAritTOTALS1ETM4 = yTOTALS1ETM4 / minPifVAL;
            yAritTOTALS1ETM5 = yTOTALS1ETM5 / minPifVAL;
            yAritTOTALS1ETM7 = yTOTALS1ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1ETM1 = (xxAritQuadTOTALS1ETM1 + ((pifTOTALS3ETM1arrayRAND[n] - xAritTOTALS1ETM1)^2));
                xxAritQuadTOTALS1ETM2 = (xxAritQuadTOTALS1ETM2 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS1ETM2)^2));
                xxAritQuadTOTALS1ETM3 = (xxAritQuadTOTALS1ETM3 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS1ETM3)^2));
                xxAritQuadTOTALS1ETM4 = (xxAritQuadTOTALS1ETM4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS1ETM4)^2));
                xxAritQuadTOTALS1ETM5 = (xxAritQuadTOTALS1ETM5 + ((pifTOTALS3ETM5arrayRAND[n] - xAritTOTALS1ETM5)^2));
                xxAritQuadTOTALS1ETM7 = (xxAritQuadTOTALS1ETM7 + ((pifTOTALS3ETM7arrayRAND[n] - xAritTOTALS1ETM7)^2));
    
                yyAritQuadTOTALS1ETM1 = (yyAritQuadTOTALS1ETM1 + ((pifTOTALS1ETM1arrayRAND[n] - yAritTOTALS1ETM1)^2));
                yyAritQuadTOTALS1ETM2 = (yyAritQuadTOTALS1ETM2 + ((pifTOTALS1ETM2arrayRAND[n] - yAritTOTALS1ETM2)^2));
                yyAritQuadTOTALS1ETM3 = (yyAritQuadTOTALS1ETM3 + ((pifTOTALS1ETM3arrayRAND[n] - yAritTOTALS1ETM3)^2));
                yyAritQuadTOTALS1ETM4 = (yyAritQuadTOTALS1ETM4 + ((pifTOTALS1ETM4arrayRAND[n] - yAritTOTALS1ETM4)^2));
                yyAritQuadTOTALS1ETM5 = (yyAritQuadTOTALS1ETM5 + ((pifTOTALS1ETM5arrayRAND[n] - yAritTOTALS1ETM5)^2));
                yyAritQuadTOTALS1ETM7 = (yyAritQuadTOTALS1ETM7 + ((pifTOTALS1ETM7arrayRAND[n] - yAritTOTALS1ETM7)^2));
    
                qXYTOTALS1ETM1 = (qXYTOTALS1ETM1 + ((pifTOTALS3ETM1arrayRAND[n] - xAritTOTALS1ETM1) * (pifTOTALS1ETM1arrayRAND[n] - yAritTOTALS1ETM1)));
                qXYTOTALS1ETM2 = (qXYTOTALS1ETM2 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS1ETM2) * (pifTOTALS1ETM2arrayRAND[n] - yAritTOTALS1ETM2)));
                qXYTOTALS1ETM3 = (qXYTOTALS1ETM3 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS1ETM3) * (pifTOTALS1ETM3arrayRAND[n] - yAritTOTALS1ETM3)));
                qXYTOTALS1ETM4 = (qXYTOTALS1ETM4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS1ETM4) * (pifTOTALS1ETM4arrayRAND[n] - yAritTOTALS1ETM4)));
                qXYTOTALS1ETM5 = (qXYTOTALS1ETM5 + ((pifTOTALS3ETM5arrayRAND[n] - xAritTOTALS1ETM5) * (pifTOTALS1ETM5arrayRAND[n] - yAritTOTALS1ETM5)));
                qXYTOTALS1ETM7 = (qXYTOTALS1ETM7 + ((pifTOTALS3ETM7arrayRAND[n] - xAritTOTALS1ETM7) * (pifTOTALS1ETM7arrayRAND[n] - yAritTOTALS1ETM7)));
            }
        
            aTOTALS1ETM1 = (((xQuadTOTALS1ETM1 * yTOTALS1ETM1) - (xTOTALS1ETM1 * xyTOTALS1ETM1)) / ((minPifVAL * xQuadTOTALS1ETM1) - (xTOTALS1ETM1^2)));
            aTOTALS1ETM2 = (((xQuadTOTALS1ETM2 * yTOTALS1ETM2) - (xTOTALS1ETM2 * xyTOTALS1ETM2)) / ((minPifVAL * xQuadTOTALS1ETM2) - (xTOTALS1ETM2^2)));
            aTOTALS1ETM3 = (((xQuadTOTALS1ETM3 * yTOTALS1ETM3) - (xTOTALS1ETM3 * xyTOTALS1ETM3)) / ((minPifVAL * xQuadTOTALS1ETM3) - (xTOTALS1ETM3^2)));
            aTOTALS1ETM4 = (((xQuadTOTALS1ETM4 * yTOTALS1ETM4) - (xTOTALS1ETM4 * xyTOTALS1ETM4)) / ((minPifVAL * xQuadTOTALS1ETM4) - (xTOTALS1ETM4^2)));
            aTOTALS1ETM5 = (((xQuadTOTALS1ETM5 * yTOTALS1ETM5) - (xTOTALS1ETM5 * xyTOTALS1ETM5)) / ((minPifVAL * xQuadTOTALS1ETM5) - (xTOTALS1ETM5^2)));
            aTOTALS1ETM7 = (((xQuadTOTALS1ETM7 * yTOTALS1ETM7) - (xTOTALS1ETM7 * xyTOTALS1ETM7)) / ((minPifVAL * xQuadTOTALS1ETM7) - (xTOTALS1ETM7^2)));
            
            bTOTALS1ETM1 = qXYTOTALS1ETM1 / xxAritQuadTOTALS1ETM1;
            bTOTALS1ETM2 = qXYTOTALS1ETM2 / xxAritQuadTOTALS1ETM2;
            bTOTALS1ETM3 = qXYTOTALS1ETM3 / xxAritQuadTOTALS1ETM3;
            bTOTALS1ETM4 = qXYTOTALS1ETM4 / xxAritQuadTOTALS1ETM4;
            bTOTALS1ETM5 = qXYTOTALS1ETM5 / xxAritQuadTOTALS1ETM5;
            bTOTALS1ETM7 = qXYTOTALS1ETM7 / xxAritQuadTOTALS1ETM7;
    
            rTOTALS1ETM1 = (qXYTOTALS1ETM1 / ((xxAritQuadTOTALS1ETM1 * yyAritQuadTOTALS1ETM1)^0.5));
            rTOTALS1ETM2 = (qXYTOTALS1ETM2 / ((xxAritQuadTOTALS1ETM2 * yyAritQuadTOTALS1ETM2)^0.5));
            rTOTALS1ETM3 = (qXYTOTALS1ETM3 / ((xxAritQuadTOTALS1ETM3 * yyAritQuadTOTALS1ETM3)^0.5));
            rTOTALS1ETM4 = (qXYTOTALS1ETM4 / ((xxAritQuadTOTALS1ETM4 * yyAritQuadTOTALS1ETM4)^0.5));
            rTOTALS1ETM5 = (qXYTOTALS1ETM5 / ((xxAritQuadTOTALS1ETM5 * yyAritQuadTOTALS1ETM5)^0.5));
            rTOTALS1ETM7 = (qXYTOTALS1ETM7 / ((xxAritQuadTOTALS1ETM7 * yyAritQuadTOTALS1ETM7)^0.5));
    
            rQuadTOTALS1ETM1 = ((rTOTALS1ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1ETM2 = ((rTOTALS1ETM2^2) * 100);
            rQuadTOTALS1ETM3 = ((rTOTALS1ETM3^2) * 100);
            rQuadTOTALS1ETM4 = ((rTOTALS1ETM4^2) * 100);
            rQuadTOTALS1ETM5 = ((rTOTALS1ETM5^2) * 100);
            rQuadTOTALS1ETM7 = ((rTOTALS1ETM7^2) * 100);
        
            syxTOTALS1ETM1 = (((yyAritQuadTOTALS1ETM1 - ((qXYTOTALS1ETM1^2) / xxAritQuadTOTALS1ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM2 = (((yyAritQuadTOTALS1ETM2 - ((qXYTOTALS1ETM2^2) / xxAritQuadTOTALS1ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM3 = (((yyAritQuadTOTALS1ETM3 - ((qXYTOTALS1ETM3^2) / xxAritQuadTOTALS1ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM4 = (((yyAritQuadTOTALS1ETM4 - ((qXYTOTALS1ETM4^2) / xxAritQuadTOTALS1ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM5 = (((yyAritQuadTOTALS1ETM5 - ((qXYTOTALS1ETM5^2) / xxAritQuadTOTALS1ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM7 = (((yyAritQuadTOTALS1ETM7 - ((qXYTOTALS1ETM7^2) / xxAritQuadTOTALS1ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1ETM1 = (((syxTOTALS1ETM1^2) / xxAritQuadTOTALS1ETM1)^0.5);
            bStandTOTALS1ETM2 = (((syxTOTALS1ETM2^2) / xxAritQuadTOTALS1ETM2)^0.5);
            bStandTOTALS1ETM3 = (((syxTOTALS1ETM3^2) / xxAritQuadTOTALS1ETM3)^0.5);
            bStandTOTALS1ETM4 = (((syxTOTALS1ETM4^2) / xxAritQuadTOTALS1ETM4)^0.5);
            bStandTOTALS1ETM5 = (((syxTOTALS1ETM5^2) / xxAritQuadTOTALS1ETM5)^0.5);
            bStandTOTALS1ETM7 = (((syxTOTALS1ETM7^2) / xxAritQuadTOTALS1ETM7)^0.5);
    
            aStandTOTALS1ETM1 = (bStandTOTALS1ETM1 * ((xQuadTOTALS1ETM1 / minPifVAL)^0.5));
            aStandTOTALS1ETM2 = (bStandTOTALS1ETM2 * ((xQuadTOTALS1ETM2 / minPifVAL)^0.5));
            aStandTOTALS1ETM3 = (bStandTOTALS1ETM3 * ((xQuadTOTALS1ETM3 / minPifVAL)^0.5));
            aStandTOTALS1ETM4 = (bStandTOTALS1ETM4 * ((xQuadTOTALS1ETM4 / minPifVAL)^0.5));
            aStandTOTALS1ETM5 = (bStandTOTALS1ETM5 * ((xQuadTOTALS1ETM5 / minPifVAL)^0.5));
            aStandTOTALS1ETM7 = (bStandTOTALS1ETM7 * ((xQuadTOTALS1ETM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM1, bTOTALS1ETM1, rTOTALS1ETM1, rQuadTOTALS1ETM1, aStandTOTALS1ETM1, bStandTOTALS1ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM2, bTOTALS1ETM2, rTOTALS1ETM2, rQuadTOTALS1ETM2, aStandTOTALS1ETM2, bStandTOTALS1ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM3, bTOTALS1ETM3, rTOTALS1ETM3, rQuadTOTALS1ETM3, aStandTOTALS1ETM3, bStandTOTALS1ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM4, bTOTALS1ETM4, rTOTALS1ETM4, rQuadTOTALS1ETM4, aStandTOTALS1ETM4, bStandTOTALS1ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM5, bTOTALS1ETM5, rTOTALS1ETM5, rQuadTOTALS1ETM5, aStandTOTALS1ETM5, bStandTOTALS1ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS1ETM7, bTOTALS1ETM7, rTOTALS1ETM7, rQuadTOTALS1ETM7, aStandTOTALS1ETM7, bStandTOTALS1ETM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS1ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS1ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS1ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS1ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS1ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS1ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS1ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT1ETM1[i,j] = (aTOTALS1ETM1 + (bTOTALS1ETM1 * REFS1ETM1[i,j]));
                    OUT1ETM2[i,j] = (aTOTALS1ETM2 + (bTOTALS1ETM2 * REFS1ETM2[i,j]));
                    OUT1ETM3[i,j] = (aTOTALS1ETM3 + (bTOTALS1ETM3 * REFS1ETM3[i,j]));
                    OUT1ETM4[i,j] = (aTOTALS1ETM4 + (bTOTALS1ETM4 * REFS1ETM4[i,j]));
                    OUT1ETM5[i,j] = (aTOTALS1ETM5 + (bTOTALS1ETM5 * REFS1ETM5[i,j]));
                    OUT1ETM7[i,j] = (aTOTALS1ETM7 + (bTOTALS1ETM7 * REFS1ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1ETM1);
        	CreatePyramid(OUT1ETM2);
        	CreatePyramid(OUT1ETM3);
        	CreatePyramid(OUT1ETM4);
        	CreatePyramid(OUT1ETM5);
        	CreatePyramid(OUT1ETM7);
        
        	CreateHistogram(OUT1ETM1);
        	CreateHistogram(OUT1ETM2);
        	CreateHistogram(OUT1ETM3);
        	CreateHistogram(OUT1ETM4);
        	CreateHistogram(OUT1ETM5);
        	CreateHistogram(OUT1ETM7);
        
        	CloseRaster(REFS1ETM1);
            CloseRaster(REFS1ETM2);
            CloseRaster(REFS1ETM3);
            CloseRaster(REFS1ETM4);
            CloseRaster(REFS1ETM5);
            CloseRaster(REFS1ETM7);
    
            CloseRaster(OUT1ETM1);
            CloseRaster(OUT1ETM2);
            CloseRaster(OUT1ETM3);
            CloseRaster(OUT1ETM4);
            CloseRaster(OUT1ETM5);
            CloseRaster(OUT1ETM7);
        
        	printf("Scene 1 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors1 == 6 )
            {
            numeric xAritTOTALS1TM1, xAritTOTALS1TM2, xAritTOTALS1TM3, xAritTOTALS1TM4, xAritTOTALS1TM5, xAritTOTALS1TM7;
            numeric yAritTOTALS1TM1, yAritTOTALS1TM2, yAritTOTALS1TM3, yAritTOTALS1TM4, yAritTOTALS1TM5, yAritTOTALS1TM7;
    
            numeric aTOTALS1TM1, aTOTALS1TM2, aTOTALS1TM3, aTOTALS1TM4, aTOTALS1TM5, aTOTALS1TM7;
            numeric bTOTALS1TM1, bTOTALS1TM2, bTOTALS1TM3, bTOTALS1TM4, bTOTALS1TM5, bTOTALS1TM7;
            numeric rTOTALS1TM1, rTOTALS1TM2, rTOTALS1TM3, rTOTALS1TM4, rTOTALS1TM5, rTOTALS1TM7;
            numeric rQuadTOTALS1TM1, rQuadTOTALS1TM2, rQuadTOTALS1TM3, rQuadTOTALS1TM4, rQuadTOTALS1TM5, rQuadTOTALS1TM7;
            numeric syxTOTALS1TM1, syxTOTALS1TM2, syxTOTALS1TM3, syxTOTALS1TM4, syxTOTALS1TM5, syxTOTALS1TM7;
            numeric bStandTOTALS1TM1, bStandTOTALS1TM2, bStandTOTALS1TM3, bStandTOTALS1TM4, bStandTOTALS1TM5, bStandTOTALS1TM7;
            numeric aStandTOTALS1TM1, aStandTOTALS1TM2, aStandTOTALS1TM3, aStandTOTALS1TM4, aStandTOTALS1TM5, aStandTOTALS1TM7;
    
            numeric xTOTALS1TM1 = 0;
            numeric xTOTALS1TM2 = 0;
            numeric xTOTALS1TM3 = 0;
            numeric xTOTALS1TM4 = 0;
            numeric xTOTALS1TM5 = 0;
            numeric xTOTALS1TM7 = 0;
    
            numeric xQuadTOTALS1TM1 = 0;
            numeric xQuadTOTALS1TM2 = 0;
            numeric xQuadTOTALS1TM3 = 0;
            numeric xQuadTOTALS1TM4 = 0;
            numeric xQuadTOTALS1TM5 = 0;
            numeric xQuadTOTALS1TM7 = 0;
    
            numeric yTOTALS1TM1 = 0;
            numeric yTOTALS1TM2 = 0;
            numeric yTOTALS1TM3 = 0;
            numeric yTOTALS1TM4 = 0;
            numeric yTOTALS1TM5 = 0;
            numeric yTOTALS1TM7 = 0;
    
            numeric yQuadTOTALS1TM1 = 0;
            numeric yQuadTOTALS1TM2 = 0;
            numeric yQuadTOTALS1TM3 = 0;
            numeric yQuadTOTALS1TM4 = 0;
            numeric yQuadTOTALS1TM5 = 0;
            numeric yQuadTOTALS1TM7 = 0;
    
            numeric xyTOTALS1TM1 = 0;
            numeric xyTOTALS1TM2 = 0;
            numeric xyTOTALS1TM3 = 0;
            numeric xyTOTALS1TM4 = 0;
            numeric xyTOTALS1TM5 = 0;
            numeric xyTOTALS1TM7 = 0;
    
            numeric xxAritQuadTOTALS1TM1 = 0;
            numeric xxAritQuadTOTALS1TM2 = 0;
            numeric xxAritQuadTOTALS1TM3 = 0;
            numeric xxAritQuadTOTALS1TM4 = 0;
            numeric xxAritQuadTOTALS1TM5 = 0;
            numeric xxAritQuadTOTALS1TM7 = 0;
    
            numeric yyAritQuadTOTALS1TM1 = 0;
            numeric yyAritQuadTOTALS1TM2 = 0;
            numeric yyAritQuadTOTALS1TM3 = 0;
            numeric yyAritQuadTOTALS1TM4 = 0;
            numeric yyAritQuadTOTALS1TM5 = 0;
            numeric yyAritQuadTOTALS1TM7 = 0;
    
            numeric qXYTOTALS1TM1 = 0;
            numeric qXYTOTALS1TM2 = 0;
            numeric qXYTOTALS1TM3 = 0;
            numeric qXYTOTALS1TM4 = 0;
            numeric qXYTOTALS1TM5 = 0;
            numeric qXYTOTALS1TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS1TM1 = xTOTALS1TM1 + pifTOTALS3ETM1arrayRAND[m];
                xTOTALS1TM2 = xTOTALS1TM2 + pifTOTALS3ETM2arrayRAND[m];
                xTOTALS1TM3 = xTOTALS1TM3 + pifTOTALS3ETM3arrayRAND[m];
                xTOTALS1TM4 = xTOTALS1TM4 + pifTOTALS3ETM4arrayRAND[m];
                xTOTALS1TM5 = xTOTALS1TM5 + pifTOTALS3ETM5arrayRAND[m];
                xTOTALS1TM7 = xTOTALS1TM7 + pifTOTALS3ETM7arrayRAND[m];
    
                xQuadTOTALS1TM1 = (xQuadTOTALS1TM1 + (pifTOTALS3ETM1arrayRAND[m]^2));
                xQuadTOTALS1TM2 = (xQuadTOTALS1TM2 + (pifTOTALS3ETM2arrayRAND[m]^2));
                xQuadTOTALS1TM3 = (xQuadTOTALS1TM3 + (pifTOTALS3ETM3arrayRAND[m]^2));
                xQuadTOTALS1TM4 = (xQuadTOTALS1TM4 + (pifTOTALS3ETM4arrayRAND[m]^2));
                xQuadTOTALS1TM5 = (xQuadTOTALS1TM5 + (pifTOTALS3ETM5arrayRAND[m]^2));
                xQuadTOTALS1TM7 = (xQuadTOTALS1TM7 + (pifTOTALS3ETM7arrayRAND[m]^2));
    
                yTOTALS1TM1 = yTOTALS1TM1 + pifTOTALS1TM1arrayRAND[m];
                yTOTALS1TM2 = yTOTALS1TM2 + pifTOTALS1TM2arrayRAND[m];
                yTOTALS1TM3 = yTOTALS1TM3 + pifTOTALS1TM3arrayRAND[m];
                yTOTALS1TM4 = yTOTALS1TM4 + pifTOTALS1TM4arrayRAND[m];
                yTOTALS1TM5 = yTOTALS1TM5 + pifTOTALS1TM5arrayRAND[m];
                yTOTALS1TM7 = yTOTALS1TM7 + pifTOTALS1TM7arrayRAND[m];
                
                yQuadTOTALS1TM1 = (yQuadTOTALS1TM1 + (pifTOTALS1TM1arrayRAND[m]^2));
                yQuadTOTALS1TM2 = (yQuadTOTALS1TM2 + (pifTOTALS1TM2arrayRAND[m]^2));
                yQuadTOTALS1TM3 = (yQuadTOTALS1TM3 + (pifTOTALS1TM3arrayRAND[m]^2));
                yQuadTOTALS1TM4 = (yQuadTOTALS1TM4 + (pifTOTALS1TM4arrayRAND[m]^2));
                yQuadTOTALS1TM5 = (yQuadTOTALS1TM5 + (pifTOTALS1TM5arrayRAND[m]^2));
                yQuadTOTALS1TM7 = (yQuadTOTALS1TM7 + (pifTOTALS1TM7arrayRAND[m]^2));
    
                xyTOTALS1TM1 = (xyTOTALS1TM1 + (pifTOTALS3ETM1arrayRAND[m] * pifTOTALS1TM1arrayRAND[m]));
                xyTOTALS1TM2 = (xyTOTALS1TM2 + (pifTOTALS3ETM2arrayRAND[m] * pifTOTALS1TM2arrayRAND[m]));
                xyTOTALS1TM3 = (xyTOTALS1TM3 + (pifTOTALS3ETM3arrayRAND[m] * pifTOTALS1TM3arrayRAND[m]));
                xyTOTALS1TM4 = (xyTOTALS1TM4 + (pifTOTALS3ETM4arrayRAND[m] * pifTOTALS1TM4arrayRAND[m]));
                xyTOTALS1TM5 = (xyTOTALS1TM5 + (pifTOTALS3ETM5arrayRAND[m] * pifTOTALS1TM5arrayRAND[m]));
                xyTOTALS1TM7 = (xyTOTALS1TM7 + (pifTOTALS3ETM7arrayRAND[m] * pifTOTALS1TM7arrayRAND[m]));
            }	
            
            xAritTOTALS1TM1 = xTOTALS1TM1 / minPifVAL;
            xAritTOTALS1TM2 = xTOTALS1TM2 / minPifVAL;
            xAritTOTALS1TM3 = xTOTALS1TM3 / minPifVAL;
            xAritTOTALS1TM4 = xTOTALS1TM4 / minPifVAL;
            xAritTOTALS1TM5 = xTOTALS1TM5 / minPifVAL;
            xAritTOTALS1TM7 = xTOTALS1TM7 / minPifVAL;
    
            yAritTOTALS1TM1 = yTOTALS1TM1 / minPifVAL;
            yAritTOTALS1TM2 = yTOTALS1TM2 / minPifVAL;
            yAritTOTALS1TM3 = yTOTALS1TM3 / minPifVAL;
            yAritTOTALS1TM4 = yTOTALS1TM4 / minPifVAL;
            yAritTOTALS1TM5 = yTOTALS1TM5 / minPifVAL;
            yAritTOTALS1TM7 = yTOTALS1TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1TM1 = (xxAritQuadTOTALS1TM1 + ((pifTOTALS3ETM1arrayRAND[n] - xAritTOTALS1TM1)^2));
                xxAritQuadTOTALS1TM2 = (xxAritQuadTOTALS1TM2 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS1TM2)^2));
                xxAritQuadTOTALS1TM3 = (xxAritQuadTOTALS1TM3 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS1TM3)^2));
                xxAritQuadTOTALS1TM4 = (xxAritQuadTOTALS1TM4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS1TM4)^2));
                xxAritQuadTOTALS1TM5 = (xxAritQuadTOTALS1TM5 + ((pifTOTALS3ETM5arrayRAND[n] - xAritTOTALS1TM5)^2));
                xxAritQuadTOTALS1TM7 = (xxAritQuadTOTALS1TM7 + ((pifTOTALS3ETM7arrayRAND[n] - xAritTOTALS1TM7)^2));
    
                yyAritQuadTOTALS1TM1 = (yyAritQuadTOTALS1TM1 + ((pifTOTALS1TM1arrayRAND[n] - yAritTOTALS1TM1)^2));
                yyAritQuadTOTALS1TM2 = (yyAritQuadTOTALS1TM2 + ((pifTOTALS1TM2arrayRAND[n] - yAritTOTALS1TM2)^2));
                yyAritQuadTOTALS1TM3 = (yyAritQuadTOTALS1TM3 + ((pifTOTALS1TM3arrayRAND[n] - yAritTOTALS1TM3)^2));
                yyAritQuadTOTALS1TM4 = (yyAritQuadTOTALS1TM4 + ((pifTOTALS1TM4arrayRAND[n] - yAritTOTALS1TM4)^2));
                yyAritQuadTOTALS1TM5 = (yyAritQuadTOTALS1TM5 + ((pifTOTALS1TM5arrayRAND[n] - yAritTOTALS1TM5)^2));
                yyAritQuadTOTALS1TM7 = (yyAritQuadTOTALS1TM7 + ((pifTOTALS1TM7arrayRAND[n] - yAritTOTALS1TM7)^2));
    
                qXYTOTALS1TM1 = (qXYTOTALS1TM1 + ((pifTOTALS3ETM1arrayRAND[n] - xAritTOTALS1TM1) * (pifTOTALS1TM1arrayRAND[n] - yAritTOTALS1TM1)));
                qXYTOTALS1TM2 = (qXYTOTALS1TM2 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS1TM2) * (pifTOTALS1TM2arrayRAND[n] - yAritTOTALS1TM2)));
                qXYTOTALS1TM3 = (qXYTOTALS1TM3 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS1TM3) * (pifTOTALS1TM3arrayRAND[n] - yAritTOTALS1TM3)));
                qXYTOTALS1TM4 = (qXYTOTALS1TM4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS1TM4) * (pifTOTALS1TM4arrayRAND[n] - yAritTOTALS1TM4)));
                qXYTOTALS1TM5 = (qXYTOTALS1TM5 + ((pifTOTALS3ETM5arrayRAND[n] - xAritTOTALS1TM5) * (pifTOTALS1TM5arrayRAND[n] - yAritTOTALS1TM5)));
                qXYTOTALS1TM7 = (qXYTOTALS1TM7 + ((pifTOTALS3ETM7arrayRAND[n] - xAritTOTALS1TM7) * (pifTOTALS1TM7arrayRAND[n] - yAritTOTALS1TM7)));
            }
        
            aTOTALS1TM1 = (((xQuadTOTALS1TM1 * yTOTALS1TM1) - (xTOTALS1TM1 * xyTOTALS1TM1)) / ((minPifVAL * xQuadTOTALS1TM1) - (xTOTALS1TM1^2)));
            aTOTALS1TM2 = (((xQuadTOTALS1TM2 * yTOTALS1TM2) - (xTOTALS1TM2 * xyTOTALS1TM2)) / ((minPifVAL * xQuadTOTALS1TM2) - (xTOTALS1TM2^2)));
            aTOTALS1TM3 = (((xQuadTOTALS1TM3 * yTOTALS1TM3) - (xTOTALS1TM3 * xyTOTALS1TM3)) / ((minPifVAL * xQuadTOTALS1TM3) - (xTOTALS1TM3^2)));
            aTOTALS1TM4 = (((xQuadTOTALS1TM4 * yTOTALS1TM4) - (xTOTALS1TM4 * xyTOTALS1TM4)) / ((minPifVAL * xQuadTOTALS1TM4) - (xTOTALS1TM4^2)));
            aTOTALS1TM5 = (((xQuadTOTALS1TM5 * yTOTALS1TM5) - (xTOTALS1TM5 * xyTOTALS1TM5)) / ((minPifVAL * xQuadTOTALS1TM5) - (xTOTALS1TM5^2)));
            aTOTALS1TM7 = (((xQuadTOTALS1TM7 * yTOTALS1TM7) - (xTOTALS1TM7 * xyTOTALS1TM7)) / ((minPifVAL * xQuadTOTALS1TM7) - (xTOTALS1TM7^2)));
            
            bTOTALS1TM1 = qXYTOTALS1TM1 / xxAritQuadTOTALS1TM1;
            bTOTALS1TM2 = qXYTOTALS1TM2 / xxAritQuadTOTALS1TM2;
            bTOTALS1TM3 = qXYTOTALS1TM3 / xxAritQuadTOTALS1TM3;
            bTOTALS1TM4 = qXYTOTALS1TM4 / xxAritQuadTOTALS1TM4;
            bTOTALS1TM5 = qXYTOTALS1TM5 / xxAritQuadTOTALS1TM5;
            bTOTALS1TM7 = qXYTOTALS1TM7 / xxAritQuadTOTALS1TM7;
    
            rTOTALS1TM1 = (qXYTOTALS1TM1 / ((xxAritQuadTOTALS1TM1 * yyAritQuadTOTALS1TM1)^0.5));
            rTOTALS1TM2 = (qXYTOTALS1TM2 / ((xxAritQuadTOTALS1TM2 * yyAritQuadTOTALS1TM2)^0.5));
            rTOTALS1TM3 = (qXYTOTALS1TM3 / ((xxAritQuadTOTALS1TM3 * yyAritQuadTOTALS1TM3)^0.5));
            rTOTALS1TM4 = (qXYTOTALS1TM4 / ((xxAritQuadTOTALS1TM4 * yyAritQuadTOTALS1TM4)^0.5));
            rTOTALS1TM5 = (qXYTOTALS1TM5 / ((xxAritQuadTOTALS1TM5 * yyAritQuadTOTALS1TM5)^0.5));
            rTOTALS1TM7 = (qXYTOTALS1TM7 / ((xxAritQuadTOTALS1TM7 * yyAritQuadTOTALS1TM7)^0.5));
    
            rQuadTOTALS1TM1 = ((rTOTALS1TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1TM2 = ((rTOTALS1TM2^2) * 100);
            rQuadTOTALS1TM3 = ((rTOTALS1TM3^2) * 100);
            rQuadTOTALS1TM4 = ((rTOTALS1TM4^2) * 100);
            rQuadTOTALS1TM5 = ((rTOTALS1TM5^2) * 100);
            rQuadTOTALS1TM7 = ((rTOTALS1TM7^2) * 100);
        
            syxTOTALS1TM1 = (((yyAritQuadTOTALS1TM1 - ((qXYTOTALS1TM1^2) / xxAritQuadTOTALS1TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM2 = (((yyAritQuadTOTALS1TM2 - ((qXYTOTALS1TM2^2) / xxAritQuadTOTALS1TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM3 = (((yyAritQuadTOTALS1TM3 - ((qXYTOTALS1TM3^2) / xxAritQuadTOTALS1TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM4 = (((yyAritQuadTOTALS1TM4 - ((qXYTOTALS1TM4^2) / xxAritQuadTOTALS1TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM5 = (((yyAritQuadTOTALS1TM5 - ((qXYTOTALS1TM5^2) / xxAritQuadTOTALS1TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM7 = (((yyAritQuadTOTALS1TM7 - ((qXYTOTALS1TM7^2) / xxAritQuadTOTALS1TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1TM1 = (((syxTOTALS1TM1^2) / xxAritQuadTOTALS1TM1)^0.5);
            bStandTOTALS1TM2 = (((syxTOTALS1TM2^2) / xxAritQuadTOTALS1TM2)^0.5);
            bStandTOTALS1TM3 = (((syxTOTALS1TM3^2) / xxAritQuadTOTALS1TM3)^0.5);
            bStandTOTALS1TM4 = (((syxTOTALS1TM4^2) / xxAritQuadTOTALS1TM4)^0.5);
            bStandTOTALS1TM5 = (((syxTOTALS1TM5^2) / xxAritQuadTOTALS1TM5)^0.5);
            bStandTOTALS1TM7 = (((syxTOTALS1TM7^2) / xxAritQuadTOTALS1TM7)^0.5);
    
            aStandTOTALS1TM1 = (bStandTOTALS1TM1 * ((xQuadTOTALS1TM1 / minPifVAL)^0.5));
            aStandTOTALS1TM2 = (bStandTOTALS1TM2 * ((xQuadTOTALS1TM2 / minPifVAL)^0.5));
            aStandTOTALS1TM3 = (bStandTOTALS1TM3 * ((xQuadTOTALS1TM3 / minPifVAL)^0.5));
            aStandTOTALS1TM4 = (bStandTOTALS1TM4 * ((xQuadTOTALS1TM4 / minPifVAL)^0.5));
            aStandTOTALS1TM5 = (bStandTOTALS1TM5 * ((xQuadTOTALS1TM5 / minPifVAL)^0.5));
            aStandTOTALS1TM7 = (bStandTOTALS1TM7 * ((xQuadTOTALS1TM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM1, bTOTALS1TM1, rTOTALS1TM1, rQuadTOTALS1TM1, aStandTOTALS1TM1, bStandTOTALS1TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM2, bTOTALS1TM2, rTOTALS1TM2, rQuadTOTALS1TM2, aStandTOTALS1TM2, bStandTOTALS1TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM3, bTOTALS1TM3, rTOTALS1TM3, rQuadTOTALS1TM3, aStandTOTALS1TM3, bStandTOTALS1TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM4, bTOTALS1TM4, rTOTALS1TM4, rQuadTOTALS1TM4, aStandTOTALS1TM4, bStandTOTALS1TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM5, bTOTALS1TM5, rTOTALS1TM5, rQuadTOTALS1TM5, aStandTOTALS1TM5, bStandTOTALS1TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS1TM7, bTOTALS1TM7, rTOTALS1TM7, rQuadTOTALS1TM7, aStandTOTALS1TM7, bStandTOTALS1TM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS1TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS1TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS1TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS1TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS1TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS1TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS1TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT1TM1[i,j] = (aTOTALS1TM1 + (bTOTALS1TM1 * REFS1TM1[i,j]));
                    OUT1TM2[i,j] = (aTOTALS1TM2 + (bTOTALS1TM2 * REFS1TM2[i,j]));
                    OUT1TM3[i,j] = (aTOTALS1TM3 + (bTOTALS1TM3 * REFS1TM3[i,j]));
                    OUT1TM4[i,j] = (aTOTALS1TM4 + (bTOTALS1TM4 * REFS1TM4[i,j]));
                    OUT1TM5[i,j] = (aTOTALS1TM5 + (bTOTALS1TM5 * REFS1TM5[i,j]));
                    OUT1TM7[i,j] = (aTOTALS1TM7 + (bTOTALS1TM7 * REFS1TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1TM1);
        	CreatePyramid(OUT1TM2);
        	CreatePyramid(OUT1TM3);
        	CreatePyramid(OUT1TM4);
        	CreatePyramid(OUT1TM5);
        	CreatePyramid(OUT1TM7);
        
        	CreateHistogram(OUT1TM1);
        	CreateHistogram(OUT1TM2);
        	CreateHistogram(OUT1TM3);
        	CreateHistogram(OUT1TM4);
        	CreateHistogram(OUT1TM5);
        	CreateHistogram(OUT1TM7);
        
        	CloseRaster(REFS1TM1);
            CloseRaster(REFS1TM2);
            CloseRaster(REFS1TM3);
            CloseRaster(REFS1TM4);
            CloseRaster(REFS1TM5);
            CloseRaster(REFS1TM7);
    
            CloseRaster(OUT1TM1);
            CloseRaster(OUT1TM2);
            CloseRaster(OUT1TM3);
            CloseRaster(OUT1TM4);
            CloseRaster(OUT1TM5);
            CloseRaster(OUT1TM7);
        
        	printf("Scene 1 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS1MSS1, xAritTOTALS1MSS2, xAritTOTALS1MSS4;
            numeric yAritTOTALS1MSS1, yAritTOTALS1MSS2, yAritTOTALS1MSS4;
    
            numeric aTOTALS1MSS1, aTOTALS1MSS2, aTOTALS1MSS4;
            numeric bTOTALS1MSS1, bTOTALS1MSS2, bTOTALS1MSS4;
            numeric rTOTALS1MSS1, rTOTALS1MSS2, rTOTALS1MSS4;
            numeric rQuadTOTALS1MSS1, rQuadTOTALS1MSS2, rQuadTOTALS1MSS4;
            numeric syxTOTALS1MSS1, syxTOTALS1MSS2, syxTOTALS1MSS4;
            numeric bStandTOTALS1MSS1, bStandTOTALS1MSS2, bStandTOTALS1MSS4;
            numeric aStandTOTALS1MSS1, aStandTOTALS1MSS2, aStandTOTALS1MSS4;
    
            numeric xTOTALS1MSS1 = 0;
            numeric xTOTALS1MSS2 = 0;
            numeric xTOTALS1MSS4 = 0;
    
            numeric xQuadTOTALS1MSS1 = 0;
            numeric xQuadTOTALS1MSS2 = 0;
            numeric xQuadTOTALS1MSS4 = 0;
    
            numeric yTOTALS1MSS1 = 0;
            numeric yTOTALS1MSS2 = 0;
            numeric yTOTALS1MSS4 = 0;
    
            numeric yQuadTOTALS1MSS1 = 0;
            numeric yQuadTOTALS1MSS2 = 0;
            numeric yQuadTOTALS1MSS4 = 0;
    
            numeric xyTOTALS1MSS1 = 0;
            numeric xyTOTALS1MSS2 = 0;
            numeric xyTOTALS1MSS4 = 0;
    
            numeric xxAritQuadTOTALS1MSS1 = 0;
            numeric xxAritQuadTOTALS1MSS2 = 0;
            numeric xxAritQuadTOTALS1MSS4 = 0;
    
            numeric yyAritQuadTOTALS1MSS1 = 0;
            numeric yyAritQuadTOTALS1MSS2 = 0;
            numeric yyAritQuadTOTALS1MSS4 = 0;
    
            numeric qXYTOTALS1MSS1 = 0;
            numeric qXYTOTALS1MSS2 = 0;
            numeric qXYTOTALS1MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS1MSS1 = xTOTALS1MSS1 + pifTOTALS3ETM2arrayRAND[m];
                xTOTALS1MSS2 = xTOTALS1MSS2 + pifTOTALS3ETM3arrayRAND[m];
                xTOTALS1MSS4 = xTOTALS1MSS4 + pifTOTALS3ETM4arrayRAND[m];
    
                xQuadTOTALS1MSS1 = (xQuadTOTALS1MSS1 + (pifTOTALS3ETM2arrayRAND[m]^2));
                xQuadTOTALS1MSS2 = (xQuadTOTALS1MSS2 + (pifTOTALS3ETM3arrayRAND[m]^2));
                xQuadTOTALS1MSS4 = (xQuadTOTALS1MSS4 + (pifTOTALS3ETM4arrayRAND[m]^2));
    
                yTOTALS1MSS1 = yTOTALS1MSS1 + pifTOTALS1MSS1arrayRAND[m];
                yTOTALS1MSS2 = yTOTALS1MSS2 + pifTOTALS1MSS2arrayRAND[m];
                yTOTALS1MSS4 = yTOTALS1MSS4 + pifTOTALS1MSS4arrayRAND[m];
                
                yQuadTOTALS1MSS1 = (yQuadTOTALS1MSS1 + (pifTOTALS1MSS1arrayRAND[m]^2));
                yQuadTOTALS1MSS2 = (yQuadTOTALS1MSS2 + (pifTOTALS1MSS2arrayRAND[m]^2));
                yQuadTOTALS1MSS4 = (yQuadTOTALS1MSS4 + (pifTOTALS1MSS4arrayRAND[m]^2));
    
                xyTOTALS1MSS1 = (xyTOTALS1MSS1 + (pifTOTALS3ETM2arrayRAND[m] * pifTOTALS1MSS1arrayRAND[m]));
                xyTOTALS1MSS2 = (xyTOTALS1MSS2 + (pifTOTALS3ETM3arrayRAND[m] * pifTOTALS1MSS2arrayRAND[m]));
                xyTOTALS1MSS4 = (xyTOTALS1MSS4 + (pifTOTALS3ETM4arrayRAND[m] * pifTOTALS1MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS1MSS1 = xTOTALS1MSS1 / minPifVAL;
            xAritTOTALS1MSS2 = xTOTALS1MSS2 / minPifVAL;
            xAritTOTALS1MSS4 = xTOTALS1MSS4 / minPifVAL;
    
            yAritTOTALS1MSS1 = yTOTALS1MSS1 / minPifVAL;
            yAritTOTALS1MSS2 = yTOTALS1MSS2 / minPifVAL;
            yAritTOTALS1MSS4 = yTOTALS1MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1MSS1 = (xxAritQuadTOTALS1MSS1 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS1MSS1)^2));
                xxAritQuadTOTALS1MSS2 = (xxAritQuadTOTALS1MSS2 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS1MSS2)^2));
                xxAritQuadTOTALS1MSS4 = (xxAritQuadTOTALS1MSS4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS1MSS4)^2));
    
                yyAritQuadTOTALS1MSS1 = (yyAritQuadTOTALS1MSS1 + ((pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)^2));
                yyAritQuadTOTALS1MSS2 = (yyAritQuadTOTALS1MSS2 + ((pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)^2));
                yyAritQuadTOTALS1MSS4 = (yyAritQuadTOTALS1MSS4 + ((pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)^2));
    
                qXYTOTALS1MSS1 = (qXYTOTALS1MSS1 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS1MSS1) * (pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)));
                qXYTOTALS1MSS2 = (qXYTOTALS1MSS2 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS1MSS2) * (pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)));
                qXYTOTALS1MSS4 = (qXYTOTALS1MSS4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS1MSS4) * (pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)));
            }
        
            aTOTALS1MSS1 = (((xQuadTOTALS1MSS1 * yTOTALS1MSS1) - (xTOTALS1MSS1 * xyTOTALS1MSS1)) / ((minPifVAL * xQuadTOTALS1MSS1) - (xTOTALS1MSS1^2)));
            aTOTALS1MSS2 = (((xQuadTOTALS1MSS2 * yTOTALS1MSS2) - (xTOTALS1MSS2 * xyTOTALS1MSS2)) / ((minPifVAL * xQuadTOTALS1MSS2) - (xTOTALS1MSS2^2)));
            aTOTALS1MSS4 = (((xQuadTOTALS1MSS4 * yTOTALS1MSS4) - (xTOTALS1MSS4 * xyTOTALS1MSS4)) / ((minPifVAL * xQuadTOTALS1MSS4) - (xTOTALS1MSS4^2)));
            
            bTOTALS1MSS1 = qXYTOTALS1MSS1 / xxAritQuadTOTALS1MSS1;
            bTOTALS1MSS2 = qXYTOTALS1MSS2 / xxAritQuadTOTALS1MSS2;
            bTOTALS1MSS4 = qXYTOTALS1MSS4 / xxAritQuadTOTALS1MSS4;
    
            rTOTALS1MSS1 = (qXYTOTALS1MSS1 / ((xxAritQuadTOTALS1MSS1 * yyAritQuadTOTALS1MSS1)^0.5));
            rTOTALS1MSS2 = (qXYTOTALS1MSS2 / ((xxAritQuadTOTALS1MSS2 * yyAritQuadTOTALS1MSS2)^0.5));
            rTOTALS1MSS4 = (qXYTOTALS1MSS4 / ((xxAritQuadTOTALS1MSS4 * yyAritQuadTOTALS1MSS4)^0.5));
    
            rQuadTOTALS1MSS1 = ((rTOTALS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1MSS2 = ((rTOTALS1MSS2^2) * 100);
            rQuadTOTALS1MSS4 = ((rTOTALS1MSS4^2) * 100);
        
            syxTOTALS1MSS1 = (((yyAritQuadTOTALS1MSS1 - ((qXYTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS2 = (((yyAritQuadTOTALS1MSS2 - ((qXYTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS4 = (((yyAritQuadTOTALS1MSS4 - ((qXYTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1MSS1 = (((syxTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)^0.5);
            bStandTOTALS1MSS2 = (((syxTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)^0.5);
            bStandTOTALS1MSS4 = (((syxTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)^0.5);
    
            aStandTOTALS1MSS1 = (bStandTOTALS1MSS1 * ((xQuadTOTALS1MSS1 / minPifVAL)^0.5));
            aStandTOTALS1MSS2 = (bStandTOTALS1MSS2 * ((xQuadTOTALS1MSS2 / minPifVAL)^0.5));
            aStandTOTALS1MSS4 = (bStandTOTALS1MSS4 * ((xQuadTOTALS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS1, bTOTALS1MSS1, rTOTALS1MSS1, rQuadTOTALS1MSS1, aStandTOTALS1MSS1, bStandTOTALS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS2, bTOTALS1MSS2, rTOTALS1MSS2, rQuadTOTALS1MSS2, aStandTOTALS1MSS2, bStandTOTALS1MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS4, bTOTALS1MSS4, rTOTALS1MSS4, rQuadTOTALS1MSS4, aStandTOTALS1MSS4, bStandTOTALS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS1MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS1MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS2arrayRAND[minPifVAL]);
        
            printf("MSS4: %12f ", pifTOTALS1MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aTOTALS1MSS1 + (bTOTALS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aTOTALS1MSS2 + (bTOTALS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = REFS1MSS3[i,j];
                    OUT1MSS4[i,j] = (aTOTALS1MSS4 + (bTOTALS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT1MSS1);
        	CreatePyramid(OUT1MSS2);
        	CreatePyramid(OUT1MSS3);
        	CreatePyramid(OUT1MSS4);
        
        	CreateHistogram(OUT1MSS1);
        	CreateHistogram(OUT1MSS2);
        	CreateHistogram(OUT1MSS3);
        	CreateHistogram(OUT1MSS4);
        
        	CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors2 == 7 )
            {
            numeric xAritTOTALS2ETM1, xAritTOTALS2ETM2, xAritTOTALS2ETM3, xAritTOTALS2ETM4, xAritTOTALS2ETM5, xAritTOTALS2ETM7;
            numeric yAritTOTALS2ETM1, yAritTOTALS2ETM2, yAritTOTALS2ETM3, yAritTOTALS2ETM4, yAritTOTALS2ETM5, yAritTOTALS2ETM7;
    
            numeric aTOTALS2ETM1, aTOTALS2ETM2, aTOTALS2ETM3, aTOTALS2ETM4, aTOTALS2ETM5, aTOTALS2ETM7;
            numeric bTOTALS2ETM1, bTOTALS2ETM2, bTOTALS2ETM3, bTOTALS2ETM4, bTOTALS2ETM5, bTOTALS2ETM7;
            numeric rTOTALS2ETM1, rTOTALS2ETM2, rTOTALS2ETM3, rTOTALS2ETM4, rTOTALS2ETM5, rTOTALS2ETM7;
            numeric rQuadTOTALS2ETM1, rQuadTOTALS2ETM2, rQuadTOTALS2ETM3, rQuadTOTALS2ETM4, rQuadTOTALS2ETM5, rQuadTOTALS2ETM7;
            numeric syxTOTALS2ETM1, syxTOTALS2ETM2, syxTOTALS2ETM3, syxTOTALS2ETM4, syxTOTALS2ETM5, syxTOTALS2ETM7;
            numeric bStandTOTALS2ETM1, bStandTOTALS2ETM2, bStandTOTALS2ETM3, bStandTOTALS2ETM4, bStandTOTALS2ETM5, bStandTOTALS2ETM7;
            numeric aStandTOTALS2ETM1, aStandTOTALS2ETM2, aStandTOTALS2ETM3, aStandTOTALS2ETM4, aStandTOTALS2ETM5, aStandTOTALS2ETM7;
    
            numeric xTOTALS2ETM1 = 0;
            numeric xTOTALS2ETM2 = 0;
            numeric xTOTALS2ETM3 = 0;
            numeric xTOTALS2ETM4 = 0;
            numeric xTOTALS2ETM5 = 0;
            numeric xTOTALS2ETM7 = 0;
    
            numeric xQuadTOTALS2ETM1 = 0;
            numeric xQuadTOTALS2ETM2 = 0;
            numeric xQuadTOTALS2ETM3 = 0;
            numeric xQuadTOTALS2ETM4 = 0;
            numeric xQuadTOTALS2ETM5 = 0;
            numeric xQuadTOTALS2ETM7 = 0;
    
            numeric yTOTALS2ETM1 = 0;
            numeric yTOTALS2ETM2 = 0;
            numeric yTOTALS2ETM3 = 0;
            numeric yTOTALS2ETM4 = 0;
            numeric yTOTALS2ETM5 = 0;
            numeric yTOTALS2ETM7 = 0;
    
            numeric yQuadTOTALS2ETM1 = 0;
            numeric yQuadTOTALS2ETM2 = 0;
            numeric yQuadTOTALS2ETM3 = 0;
            numeric yQuadTOTALS2ETM4 = 0;
            numeric yQuadTOTALS2ETM5 = 0;
            numeric yQuadTOTALS2ETM7 = 0;
    
            numeric xyTOTALS2ETM1 = 0;
            numeric xyTOTALS2ETM2 = 0;
            numeric xyTOTALS2ETM3 = 0;
            numeric xyTOTALS2ETM4 = 0;
            numeric xyTOTALS2ETM5 = 0;
            numeric xyTOTALS2ETM7 = 0;
    
            numeric xxAritQuadTOTALS2ETM1 = 0;
            numeric xxAritQuadTOTALS2ETM2 = 0;
            numeric xxAritQuadTOTALS2ETM3 = 0;
            numeric xxAritQuadTOTALS2ETM4 = 0;
            numeric xxAritQuadTOTALS2ETM5 = 0;
            numeric xxAritQuadTOTALS2ETM7 = 0;
    
            numeric yyAritQuadTOTALS2ETM1 = 0;
            numeric yyAritQuadTOTALS2ETM2 = 0;
            numeric yyAritQuadTOTALS2ETM3 = 0;
            numeric yyAritQuadTOTALS2ETM4 = 0;
            numeric yyAritQuadTOTALS2ETM5 = 0;
            numeric yyAritQuadTOTALS2ETM7 = 0;
    
            numeric qXYTOTALS2ETM1 = 0;
            numeric qXYTOTALS2ETM2 = 0;
            numeric qXYTOTALS2ETM3 = 0;
            numeric qXYTOTALS2ETM4 = 0;
            numeric qXYTOTALS2ETM5 = 0;
            numeric qXYTOTALS2ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS2ETM1 = xTOTALS2ETM1 + pifTOTALS3ETM1arrayRAND[m];
                xTOTALS2ETM2 = xTOTALS2ETM2 + pifTOTALS3ETM2arrayRAND[m];
                xTOTALS2ETM3 = xTOTALS2ETM3 + pifTOTALS3ETM3arrayRAND[m];
                xTOTALS2ETM4 = xTOTALS2ETM4 + pifTOTALS3ETM4arrayRAND[m];
                xTOTALS2ETM5 = xTOTALS2ETM5 + pifTOTALS3ETM5arrayRAND[m];
                xTOTALS2ETM7 = xTOTALS2ETM7 + pifTOTALS3ETM7arrayRAND[m];
    
                xQuadTOTALS2ETM1 = (xQuadTOTALS2ETM1 + (pifTOTALS3ETM1arrayRAND[m]^2));
                xQuadTOTALS2ETM2 = (xQuadTOTALS2ETM2 + (pifTOTALS3ETM2arrayRAND[m]^2));
                xQuadTOTALS2ETM3 = (xQuadTOTALS2ETM3 + (pifTOTALS3ETM3arrayRAND[m]^2));
                xQuadTOTALS2ETM4 = (xQuadTOTALS2ETM4 + (pifTOTALS3ETM4arrayRAND[m]^2));
                xQuadTOTALS2ETM5 = (xQuadTOTALS2ETM5 + (pifTOTALS3ETM5arrayRAND[m]^2));
                xQuadTOTALS2ETM7 = (xQuadTOTALS2ETM7 + (pifTOTALS3ETM7arrayRAND[m]^2));
    
                yTOTALS2ETM1 = yTOTALS2ETM1 + pifTOTALS2ETM1arrayRAND[m];
                yTOTALS2ETM2 = yTOTALS2ETM2 + pifTOTALS2ETM2arrayRAND[m];
                yTOTALS2ETM3 = yTOTALS2ETM3 + pifTOTALS2ETM3arrayRAND[m];
                yTOTALS2ETM4 = yTOTALS2ETM4 + pifTOTALS2ETM4arrayRAND[m];
                yTOTALS2ETM5 = yTOTALS2ETM5 + pifTOTALS2ETM5arrayRAND[m];
                yTOTALS2ETM7 = yTOTALS2ETM7 + pifTOTALS2ETM7arrayRAND[m];
                
                yQuadTOTALS2ETM1 = (yQuadTOTALS2ETM1 + (pifTOTALS2ETM1arrayRAND[m]^2));
                yQuadTOTALS2ETM2 = (yQuadTOTALS2ETM2 + (pifTOTALS2ETM2arrayRAND[m]^2));
                yQuadTOTALS2ETM3 = (yQuadTOTALS2ETM3 + (pifTOTALS2ETM3arrayRAND[m]^2));
                yQuadTOTALS2ETM4 = (yQuadTOTALS2ETM4 + (pifTOTALS2ETM4arrayRAND[m]^2));
                yQuadTOTALS2ETM5 = (yQuadTOTALS2ETM5 + (pifTOTALS2ETM5arrayRAND[m]^2));
                yQuadTOTALS2ETM7 = (yQuadTOTALS2ETM7 + (pifTOTALS2ETM7arrayRAND[m]^2));
    
                xyTOTALS2ETM1 = (xyTOTALS2ETM1 + (pifTOTALS3ETM1arrayRAND[m] * pifTOTALS2ETM1arrayRAND[m]));
                xyTOTALS2ETM2 = (xyTOTALS2ETM2 + (pifTOTALS3ETM2arrayRAND[m] * pifTOTALS2ETM2arrayRAND[m]));
                xyTOTALS2ETM3 = (xyTOTALS2ETM3 + (pifTOTALS3ETM3arrayRAND[m] * pifTOTALS2ETM3arrayRAND[m]));
                xyTOTALS2ETM4 = (xyTOTALS2ETM4 + (pifTOTALS3ETM4arrayRAND[m] * pifTOTALS2ETM4arrayRAND[m]));
                xyTOTALS2ETM5 = (xyTOTALS2ETM5 + (pifTOTALS3ETM5arrayRAND[m] * pifTOTALS2ETM5arrayRAND[m]));
                xyTOTALS2ETM7 = (xyTOTALS2ETM7 + (pifTOTALS3ETM7arrayRAND[m] * pifTOTALS2ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS2ETM1 = xTOTALS2ETM1 / minPifVAL;
            xAritTOTALS2ETM2 = xTOTALS2ETM2 / minPifVAL;
            xAritTOTALS2ETM3 = xTOTALS2ETM3 / minPifVAL;
            xAritTOTALS2ETM4 = xTOTALS2ETM4 / minPifVAL;
            xAritTOTALS2ETM5 = xTOTALS2ETM5 / minPifVAL;
            xAritTOTALS2ETM7 = xTOTALS2ETM7 / minPifVAL;
    
            yAritTOTALS2ETM1 = yTOTALS2ETM1 / minPifVAL;
            yAritTOTALS2ETM2 = yTOTALS2ETM2 / minPifVAL;
            yAritTOTALS2ETM3 = yTOTALS2ETM3 / minPifVAL;
            yAritTOTALS2ETM4 = yTOTALS2ETM4 / minPifVAL;
            yAritTOTALS2ETM5 = yTOTALS2ETM5 / minPifVAL;
            yAritTOTALS2ETM7 = yTOTALS2ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2ETM1 = (xxAritQuadTOTALS2ETM1 + ((pifTOTALS3ETM1arrayRAND[n] - xAritTOTALS2ETM1)^2));
                xxAritQuadTOTALS2ETM2 = (xxAritQuadTOTALS2ETM2 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS2ETM2)^2));
                xxAritQuadTOTALS2ETM3 = (xxAritQuadTOTALS2ETM3 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS2ETM3)^2));
                xxAritQuadTOTALS2ETM4 = (xxAritQuadTOTALS2ETM4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS2ETM4)^2));
                xxAritQuadTOTALS2ETM5 = (xxAritQuadTOTALS2ETM5 + ((pifTOTALS3ETM5arrayRAND[n] - xAritTOTALS2ETM5)^2));
                xxAritQuadTOTALS2ETM7 = (xxAritQuadTOTALS2ETM7 + ((pifTOTALS3ETM7arrayRAND[n] - xAritTOTALS2ETM7)^2));
    
                yyAritQuadTOTALS2ETM1 = (yyAritQuadTOTALS2ETM1 + ((pifTOTALS2ETM1arrayRAND[n] - yAritTOTALS2ETM1)^2));
                yyAritQuadTOTALS2ETM2 = (yyAritQuadTOTALS2ETM2 + ((pifTOTALS2ETM2arrayRAND[n] - yAritTOTALS2ETM2)^2));
                yyAritQuadTOTALS2ETM3 = (yyAritQuadTOTALS2ETM3 + ((pifTOTALS2ETM3arrayRAND[n] - yAritTOTALS2ETM3)^2));
                yyAritQuadTOTALS2ETM4 = (yyAritQuadTOTALS2ETM4 + ((pifTOTALS2ETM4arrayRAND[n] - yAritTOTALS2ETM4)^2));
                yyAritQuadTOTALS2ETM5 = (yyAritQuadTOTALS2ETM5 + ((pifTOTALS2ETM5arrayRAND[n] - yAritTOTALS2ETM5)^2));
                yyAritQuadTOTALS2ETM7 = (yyAritQuadTOTALS2ETM7 + ((pifTOTALS2ETM7arrayRAND[n] - yAritTOTALS2ETM7)^2));
    
                qXYTOTALS2ETM1 = (qXYTOTALS2ETM1 + ((pifTOTALS3ETM1arrayRAND[n] - xAritTOTALS2ETM1) * (pifTOTALS2ETM1arrayRAND[n] - yAritTOTALS2ETM1)));
                qXYTOTALS2ETM2 = (qXYTOTALS2ETM2 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS2ETM2) * (pifTOTALS2ETM2arrayRAND[n] - yAritTOTALS2ETM2)));
                qXYTOTALS2ETM3 = (qXYTOTALS2ETM3 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS2ETM3) * (pifTOTALS2ETM3arrayRAND[n] - yAritTOTALS2ETM3)));
                qXYTOTALS2ETM4 = (qXYTOTALS2ETM4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS2ETM4) * (pifTOTALS2ETM4arrayRAND[n] - yAritTOTALS2ETM4)));
                qXYTOTALS2ETM5 = (qXYTOTALS2ETM5 + ((pifTOTALS3ETM5arrayRAND[n] - xAritTOTALS2ETM5) * (pifTOTALS2ETM5arrayRAND[n] - yAritTOTALS2ETM5)));
                qXYTOTALS2ETM7 = (qXYTOTALS2ETM7 + ((pifTOTALS3ETM7arrayRAND[n] - xAritTOTALS2ETM7) * (pifTOTALS2ETM7arrayRAND[n] - yAritTOTALS2ETM7)));
            }
        
            aTOTALS2ETM1 = (((xQuadTOTALS2ETM1 * yTOTALS2ETM1) - (xTOTALS2ETM1 * xyTOTALS2ETM1)) / ((minPifVAL * xQuadTOTALS2ETM1) - (xTOTALS2ETM1^2)));
            aTOTALS2ETM2 = (((xQuadTOTALS2ETM2 * yTOTALS2ETM2) - (xTOTALS2ETM2 * xyTOTALS2ETM2)) / ((minPifVAL * xQuadTOTALS2ETM2) - (xTOTALS2ETM2^2)));
            aTOTALS2ETM3 = (((xQuadTOTALS2ETM3 * yTOTALS2ETM3) - (xTOTALS2ETM3 * xyTOTALS2ETM3)) / ((minPifVAL * xQuadTOTALS2ETM3) - (xTOTALS2ETM3^2)));
            aTOTALS2ETM4 = (((xQuadTOTALS2ETM4 * yTOTALS2ETM4) - (xTOTALS2ETM4 * xyTOTALS2ETM4)) / ((minPifVAL * xQuadTOTALS2ETM4) - (xTOTALS2ETM4^2)));
            aTOTALS2ETM5 = (((xQuadTOTALS2ETM5 * yTOTALS2ETM5) - (xTOTALS2ETM5 * xyTOTALS2ETM5)) / ((minPifVAL * xQuadTOTALS2ETM5) - (xTOTALS2ETM5^2)));
            aTOTALS2ETM7 = (((xQuadTOTALS2ETM7 * yTOTALS2ETM7) - (xTOTALS2ETM7 * xyTOTALS2ETM7)) / ((minPifVAL * xQuadTOTALS2ETM7) - (xTOTALS2ETM7^2)));
            
            bTOTALS2ETM1 = qXYTOTALS2ETM1 / xxAritQuadTOTALS2ETM1;
            bTOTALS2ETM2 = qXYTOTALS2ETM2 / xxAritQuadTOTALS2ETM2;
            bTOTALS2ETM3 = qXYTOTALS2ETM3 / xxAritQuadTOTALS2ETM3;
            bTOTALS2ETM4 = qXYTOTALS2ETM4 / xxAritQuadTOTALS2ETM4;
            bTOTALS2ETM5 = qXYTOTALS2ETM5 / xxAritQuadTOTALS2ETM5;
            bTOTALS2ETM7 = qXYTOTALS2ETM7 / xxAritQuadTOTALS2ETM7;
    
            rTOTALS2ETM1 = (qXYTOTALS2ETM1 / ((xxAritQuadTOTALS2ETM1 * yyAritQuadTOTALS2ETM1)^0.5));
            rTOTALS2ETM2 = (qXYTOTALS2ETM2 / ((xxAritQuadTOTALS2ETM2 * yyAritQuadTOTALS2ETM2)^0.5));
            rTOTALS2ETM3 = (qXYTOTALS2ETM3 / ((xxAritQuadTOTALS2ETM3 * yyAritQuadTOTALS2ETM3)^0.5));
            rTOTALS2ETM4 = (qXYTOTALS2ETM4 / ((xxAritQuadTOTALS2ETM4 * yyAritQuadTOTALS2ETM4)^0.5));
            rTOTALS2ETM5 = (qXYTOTALS2ETM5 / ((xxAritQuadTOTALS2ETM5 * yyAritQuadTOTALS2ETM5)^0.5));
            rTOTALS2ETM7 = (qXYTOTALS2ETM7 / ((xxAritQuadTOTALS2ETM7 * yyAritQuadTOTALS2ETM7)^0.5));
    
            rQuadTOTALS2ETM1 = ((rTOTALS2ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2ETM2 = ((rTOTALS2ETM2^2) * 100);
            rQuadTOTALS2ETM3 = ((rTOTALS2ETM3^2) * 100);
            rQuadTOTALS2ETM4 = ((rTOTALS2ETM4^2) * 100);
            rQuadTOTALS2ETM5 = ((rTOTALS2ETM5^2) * 100);
            rQuadTOTALS2ETM7 = ((rTOTALS2ETM7^2) * 100);
        
            syxTOTALS2ETM1 = (((yyAritQuadTOTALS2ETM1 - ((qXYTOTALS2ETM1^2) / xxAritQuadTOTALS2ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM2 = (((yyAritQuadTOTALS2ETM2 - ((qXYTOTALS2ETM2^2) / xxAritQuadTOTALS2ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM3 = (((yyAritQuadTOTALS2ETM3 - ((qXYTOTALS2ETM3^2) / xxAritQuadTOTALS2ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM4 = (((yyAritQuadTOTALS2ETM4 - ((qXYTOTALS2ETM4^2) / xxAritQuadTOTALS2ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM5 = (((yyAritQuadTOTALS2ETM5 - ((qXYTOTALS2ETM5^2) / xxAritQuadTOTALS2ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM7 = (((yyAritQuadTOTALS2ETM7 - ((qXYTOTALS2ETM7^2) / xxAritQuadTOTALS2ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2ETM1 = (((syxTOTALS2ETM1^2) / xxAritQuadTOTALS2ETM1)^0.5);
            bStandTOTALS2ETM2 = (((syxTOTALS2ETM2^2) / xxAritQuadTOTALS2ETM2)^0.5);
            bStandTOTALS2ETM3 = (((syxTOTALS2ETM3^2) / xxAritQuadTOTALS2ETM3)^0.5);
            bStandTOTALS2ETM4 = (((syxTOTALS2ETM4^2) / xxAritQuadTOTALS2ETM4)^0.5);
            bStandTOTALS2ETM5 = (((syxTOTALS2ETM5^2) / xxAritQuadTOTALS2ETM5)^0.5);
            bStandTOTALS2ETM7 = (((syxTOTALS2ETM7^2) / xxAritQuadTOTALS2ETM7)^0.5);
    
            aStandTOTALS2ETM1 = (bStandTOTALS2ETM1 * ((xQuadTOTALS2ETM1 / minPifVAL)^0.5));
            aStandTOTALS2ETM2 = (bStandTOTALS2ETM2 * ((xQuadTOTALS2ETM2 / minPifVAL)^0.5));
            aStandTOTALS2ETM3 = (bStandTOTALS2ETM3 * ((xQuadTOTALS2ETM3 / minPifVAL)^0.5));
            aStandTOTALS2ETM4 = (bStandTOTALS2ETM4 * ((xQuadTOTALS2ETM4 / minPifVAL)^0.5));
            aStandTOTALS2ETM5 = (bStandTOTALS2ETM5 * ((xQuadTOTALS2ETM5 / minPifVAL)^0.5));
            aStandTOTALS2ETM7 = (bStandTOTALS2ETM7 * ((xQuadTOTALS2ETM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM1, bTOTALS2ETM1, rTOTALS2ETM1, rQuadTOTALS2ETM1, aStandTOTALS2ETM1, bStandTOTALS2ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM2, bTOTALS2ETM2, rTOTALS2ETM2, rQuadTOTALS2ETM2, aStandTOTALS2ETM2, bStandTOTALS2ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM3, bTOTALS2ETM3, rTOTALS2ETM3, rQuadTOTALS2ETM3, aStandTOTALS2ETM3, bStandTOTALS2ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM4, bTOTALS2ETM4, rTOTALS2ETM4, rQuadTOTALS2ETM4, aStandTOTALS2ETM4, bStandTOTALS2ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM5, bTOTALS2ETM5, rTOTALS2ETM5, rQuadTOTALS2ETM5, aStandTOTALS2ETM5, bStandTOTALS2ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS2ETM7, bTOTALS2ETM7, rTOTALS2ETM7, rQuadTOTALS2ETM7, aStandTOTALS2ETM7, bStandTOTALS2ETM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS2ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS2ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS2ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS2ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS2ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS2ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS2ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT2ETM1[i,j] = (aTOTALS2ETM1 + (bTOTALS2ETM1 * REFS2ETM1[i,j]));
                    OUT2ETM2[i,j] = (aTOTALS2ETM2 + (bTOTALS2ETM2 * REFS2ETM2[i,j]));
                    OUT2ETM3[i,j] = (aTOTALS2ETM3 + (bTOTALS2ETM3 * REFS2ETM3[i,j]));
                    OUT2ETM4[i,j] = (aTOTALS2ETM4 + (bTOTALS2ETM4 * REFS2ETM4[i,j]));
                    OUT2ETM5[i,j] = (aTOTALS2ETM5 + (bTOTALS2ETM5 * REFS2ETM5[i,j]));
                    OUT2ETM7[i,j] = (aTOTALS2ETM7 + (bTOTALS2ETM7 * REFS2ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2ETM1);
        	CreatePyramid(OUT2ETM2);
        	CreatePyramid(OUT2ETM3);
        	CreatePyramid(OUT2ETM4);
        	CreatePyramid(OUT2ETM5);
        	CreatePyramid(OUT2ETM7);
        
        	CreateHistogram(OUT2ETM1);
        	CreateHistogram(OUT2ETM2);
        	CreateHistogram(OUT2ETM3);
        	CreateHistogram(OUT2ETM4);
        	CreateHistogram(OUT2ETM5);
        	CreateHistogram(OUT2ETM7);
        
        	CloseRaster(REFS2ETM1);
            CloseRaster(REFS2ETM2);
            CloseRaster(REFS2ETM3);
            CloseRaster(REFS2ETM4);
            CloseRaster(REFS2ETM5);
            CloseRaster(REFS2ETM7);
    
            CloseRaster(OUT2ETM1);
            CloseRaster(OUT2ETM2);
            CloseRaster(OUT2ETM3);
            CloseRaster(OUT2ETM4);
            CloseRaster(OUT2ETM5);
            CloseRaster(OUT2ETM7);
        
        	printf("Scene 2 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors2 == 6 )
            {
            numeric xAritTOTALS2TM1, xAritTOTALS2TM2, xAritTOTALS2TM3, xAritTOTALS2TM4, xAritTOTALS2TM5, xAritTOTALS2TM7;
            numeric yAritTOTALS2TM1, yAritTOTALS2TM2, yAritTOTALS2TM3, yAritTOTALS2TM4, yAritTOTALS2TM5, yAritTOTALS2TM7;
    
            numeric aTOTALS2TM1, aTOTALS2TM2, aTOTALS2TM3, aTOTALS2TM4, aTOTALS2TM5, aTOTALS2TM7;
            numeric bTOTALS2TM1, bTOTALS2TM2, bTOTALS2TM3, bTOTALS2TM4, bTOTALS2TM5, bTOTALS2TM7;
            numeric rTOTALS2TM1, rTOTALS2TM2, rTOTALS2TM3, rTOTALS2TM4, rTOTALS2TM5, rTOTALS2TM7;
            numeric rQuadTOTALS2TM1, rQuadTOTALS2TM2, rQuadTOTALS2TM3, rQuadTOTALS2TM4, rQuadTOTALS2TM5, rQuadTOTALS2TM7;
            numeric syxTOTALS2TM1, syxTOTALS2TM2, syxTOTALS2TM3, syxTOTALS2TM4, syxTOTALS2TM5, syxTOTALS2TM7;
            numeric bStandTOTALS2TM1, bStandTOTALS2TM2, bStandTOTALS2TM3, bStandTOTALS2TM4, bStandTOTALS2TM5, bStandTOTALS2TM7;
            numeric aStandTOTALS2TM1, aStandTOTALS2TM2, aStandTOTALS2TM3, aStandTOTALS2TM4, aStandTOTALS2TM5, aStandTOTALS2TM7;
    
            numeric xTOTALS2TM1 = 0;
            numeric xTOTALS2TM2 = 0;
            numeric xTOTALS2TM3 = 0;
            numeric xTOTALS2TM4 = 0;
            numeric xTOTALS2TM5 = 0;
            numeric xTOTALS2TM7 = 0;
    
            numeric xQuadTOTALS2TM1 = 0;
            numeric xQuadTOTALS2TM2 = 0;
            numeric xQuadTOTALS2TM3 = 0;
            numeric xQuadTOTALS2TM4 = 0;
            numeric xQuadTOTALS2TM5 = 0;
            numeric xQuadTOTALS2TM7 = 0;
    
            numeric yTOTALS2TM1 = 0;
            numeric yTOTALS2TM2 = 0;
            numeric yTOTALS2TM3 = 0;
            numeric yTOTALS2TM4 = 0;
            numeric yTOTALS2TM5 = 0;
            numeric yTOTALS2TM7 = 0;
    
            numeric yQuadTOTALS2TM1 = 0;
            numeric yQuadTOTALS2TM2 = 0;
            numeric yQuadTOTALS2TM3 = 0;
            numeric yQuadTOTALS2TM4 = 0;
            numeric yQuadTOTALS2TM5 = 0;
            numeric yQuadTOTALS2TM7 = 0;
    
            numeric xyTOTALS2TM1 = 0;
            numeric xyTOTALS2TM2 = 0;
            numeric xyTOTALS2TM3 = 0;
            numeric xyTOTALS2TM4 = 0;
            numeric xyTOTALS2TM5 = 0;
            numeric xyTOTALS2TM7 = 0;
    
            numeric xxAritQuadTOTALS2TM1 = 0;
            numeric xxAritQuadTOTALS2TM2 = 0;
            numeric xxAritQuadTOTALS2TM3 = 0;
            numeric xxAritQuadTOTALS2TM4 = 0;
            numeric xxAritQuadTOTALS2TM5 = 0;
            numeric xxAritQuadTOTALS2TM7 = 0;
    
            numeric yyAritQuadTOTALS2TM1 = 0;
            numeric yyAritQuadTOTALS2TM2 = 0;
            numeric yyAritQuadTOTALS2TM3 = 0;
            numeric yyAritQuadTOTALS2TM4 = 0;
            numeric yyAritQuadTOTALS2TM5 = 0;
            numeric yyAritQuadTOTALS2TM7 = 0;
    
            numeric qXYTOTALS2TM1 = 0;
            numeric qXYTOTALS2TM2 = 0;
            numeric qXYTOTALS2TM3 = 0;
            numeric qXYTOTALS2TM4 = 0;
            numeric qXYTOTALS2TM5 = 0;
            numeric qXYTOTALS2TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS2TM1 = xTOTALS2TM1 + pifTOTALS3ETM1arrayRAND[m];
                xTOTALS2TM2 = xTOTALS2TM2 + pifTOTALS3ETM2arrayRAND[m];
                xTOTALS2TM3 = xTOTALS2TM3 + pifTOTALS3ETM3arrayRAND[m];
                xTOTALS2TM4 = xTOTALS2TM4 + pifTOTALS3ETM4arrayRAND[m];
                xTOTALS2TM5 = xTOTALS2TM5 + pifTOTALS3ETM5arrayRAND[m];
                xTOTALS2TM7 = xTOTALS2TM7 + pifTOTALS3ETM7arrayRAND[m];
    
                xQuadTOTALS2TM1 = (xQuadTOTALS2TM1 + (pifTOTALS3ETM1arrayRAND[m]^2));
                xQuadTOTALS2TM2 = (xQuadTOTALS2TM2 + (pifTOTALS3ETM2arrayRAND[m]^2));
                xQuadTOTALS2TM3 = (xQuadTOTALS2TM3 + (pifTOTALS3ETM3arrayRAND[m]^2));
                xQuadTOTALS2TM4 = (xQuadTOTALS2TM4 + (pifTOTALS3ETM4arrayRAND[m]^2));
                xQuadTOTALS2TM5 = (xQuadTOTALS2TM5 + (pifTOTALS3ETM5arrayRAND[m]^2));
                xQuadTOTALS2TM7 = (xQuadTOTALS2TM7 + (pifTOTALS3ETM7arrayRAND[m]^2));
    
                yTOTALS2TM1 = yTOTALS2TM1 + pifTOTALS2TM1arrayRAND[m];
                yTOTALS2TM2 = yTOTALS2TM2 + pifTOTALS2TM2arrayRAND[m];
                yTOTALS2TM3 = yTOTALS2TM3 + pifTOTALS2TM3arrayRAND[m];
                yTOTALS2TM4 = yTOTALS2TM4 + pifTOTALS2TM4arrayRAND[m];
                yTOTALS2TM5 = yTOTALS2TM5 + pifTOTALS2TM5arrayRAND[m];
                yTOTALS2TM7 = yTOTALS2TM7 + pifTOTALS2TM7arrayRAND[m];
                
                yQuadTOTALS2TM1 = (yQuadTOTALS2TM1 + (pifTOTALS2TM1arrayRAND[m]^2));
                yQuadTOTALS2TM2 = (yQuadTOTALS2TM2 + (pifTOTALS2TM2arrayRAND[m]^2));
                yQuadTOTALS2TM3 = (yQuadTOTALS2TM3 + (pifTOTALS2TM3arrayRAND[m]^2));
                yQuadTOTALS2TM4 = (yQuadTOTALS2TM4 + (pifTOTALS2TM4arrayRAND[m]^2));
                yQuadTOTALS2TM5 = (yQuadTOTALS2TM5 + (pifTOTALS2TM5arrayRAND[m]^2));
                yQuadTOTALS2TM7 = (yQuadTOTALS2TM7 + (pifTOTALS2TM7arrayRAND[m]^2));
    
                xyTOTALS2TM1 = (xyTOTALS2TM1 + (pifTOTALS3ETM1arrayRAND[m] * pifTOTALS2TM1arrayRAND[m]));
                xyTOTALS2TM2 = (xyTOTALS2TM2 + (pifTOTALS3ETM2arrayRAND[m] * pifTOTALS2TM2arrayRAND[m]));
                xyTOTALS2TM3 = (xyTOTALS2TM3 + (pifTOTALS3ETM3arrayRAND[m] * pifTOTALS2TM3arrayRAND[m]));
                xyTOTALS2TM4 = (xyTOTALS2TM4 + (pifTOTALS3ETM4arrayRAND[m] * pifTOTALS2TM4arrayRAND[m]));
                xyTOTALS2TM5 = (xyTOTALS2TM5 + (pifTOTALS3ETM5arrayRAND[m] * pifTOTALS2TM5arrayRAND[m]));
                xyTOTALS2TM7 = (xyTOTALS2TM7 + (pifTOTALS3ETM7arrayRAND[m] * pifTOTALS2TM7arrayRAND[m]));
            }	
            
            xAritTOTALS2TM1 = xTOTALS2TM1 / minPifVAL;
            xAritTOTALS2TM2 = xTOTALS2TM2 / minPifVAL;
            xAritTOTALS2TM3 = xTOTALS2TM3 / minPifVAL;
            xAritTOTALS2TM4 = xTOTALS2TM4 / minPifVAL;
            xAritTOTALS2TM5 = xTOTALS2TM5 / minPifVAL;
            xAritTOTALS2TM7 = xTOTALS2TM7 / minPifVAL;
    
            yAritTOTALS2TM1 = yTOTALS2TM1 / minPifVAL;
            yAritTOTALS2TM2 = yTOTALS2TM2 / minPifVAL;
            yAritTOTALS2TM3 = yTOTALS2TM3 / minPifVAL;
            yAritTOTALS2TM4 = yTOTALS2TM4 / minPifVAL;
            yAritTOTALS2TM5 = yTOTALS2TM5 / minPifVAL;
            yAritTOTALS2TM7 = yTOTALS2TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2TM1 = (xxAritQuadTOTALS2TM1 + ((pifTOTALS3ETM1arrayRAND[n] - xAritTOTALS2TM1)^2));
                xxAritQuadTOTALS2TM2 = (xxAritQuadTOTALS2TM2 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS2TM2)^2));
                xxAritQuadTOTALS2TM3 = (xxAritQuadTOTALS2TM3 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS2TM3)^2));
                xxAritQuadTOTALS2TM4 = (xxAritQuadTOTALS2TM4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS2TM4)^2));
                xxAritQuadTOTALS2TM5 = (xxAritQuadTOTALS2TM5 + ((pifTOTALS3ETM5arrayRAND[n] - xAritTOTALS2TM5)^2));
                xxAritQuadTOTALS2TM7 = (xxAritQuadTOTALS2TM7 + ((pifTOTALS3ETM7arrayRAND[n] - xAritTOTALS2TM7)^2));
    
                yyAritQuadTOTALS2TM1 = (yyAritQuadTOTALS2TM1 + ((pifTOTALS2TM1arrayRAND[n] - yAritTOTALS2TM1)^2));
                yyAritQuadTOTALS2TM2 = (yyAritQuadTOTALS2TM2 + ((pifTOTALS2TM2arrayRAND[n] - yAritTOTALS2TM2)^2));
                yyAritQuadTOTALS2TM3 = (yyAritQuadTOTALS2TM3 + ((pifTOTALS2TM3arrayRAND[n] - yAritTOTALS2TM3)^2));
                yyAritQuadTOTALS2TM4 = (yyAritQuadTOTALS2TM4 + ((pifTOTALS2TM4arrayRAND[n] - yAritTOTALS2TM4)^2));
                yyAritQuadTOTALS2TM5 = (yyAritQuadTOTALS2TM5 + ((pifTOTALS2TM5arrayRAND[n] - yAritTOTALS2TM5)^2));
                yyAritQuadTOTALS2TM7 = (yyAritQuadTOTALS2TM7 + ((pifTOTALS2TM7arrayRAND[n] - yAritTOTALS2TM7)^2));
    
                qXYTOTALS2TM1 = (qXYTOTALS2TM1 + ((pifTOTALS3ETM1arrayRAND[n] - xAritTOTALS2TM1) * (pifTOTALS2TM1arrayRAND[n] - yAritTOTALS2TM1)));
                qXYTOTALS2TM2 = (qXYTOTALS2TM2 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS2TM2) * (pifTOTALS2TM2arrayRAND[n] - yAritTOTALS2TM2)));
                qXYTOTALS2TM3 = (qXYTOTALS2TM3 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS2TM3) * (pifTOTALS2TM3arrayRAND[n] - yAritTOTALS2TM3)));
                qXYTOTALS2TM4 = (qXYTOTALS2TM4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS2TM4) * (pifTOTALS2TM4arrayRAND[n] - yAritTOTALS2TM4)));
                qXYTOTALS2TM5 = (qXYTOTALS2TM5 + ((pifTOTALS3ETM5arrayRAND[n] - xAritTOTALS2TM5) * (pifTOTALS2TM5arrayRAND[n] - yAritTOTALS2TM5)));
                qXYTOTALS2TM7 = (qXYTOTALS2TM7 + ((pifTOTALS3ETM7arrayRAND[n] - xAritTOTALS2TM7) * (pifTOTALS2TM7arrayRAND[n] - yAritTOTALS2TM7)));
            }
        
            aTOTALS2TM1 = (((xQuadTOTALS2TM1 * yTOTALS2TM1) - (xTOTALS2TM1 * xyTOTALS2TM1)) / ((minPifVAL * xQuadTOTALS2TM1) - (xTOTALS2TM1^2)));
            aTOTALS2TM2 = (((xQuadTOTALS2TM2 * yTOTALS2TM2) - (xTOTALS2TM2 * xyTOTALS2TM2)) / ((minPifVAL * xQuadTOTALS2TM2) - (xTOTALS2TM2^2)));
            aTOTALS2TM3 = (((xQuadTOTALS2TM3 * yTOTALS2TM3) - (xTOTALS2TM3 * xyTOTALS2TM3)) / ((minPifVAL * xQuadTOTALS2TM3) - (xTOTALS2TM3^2)));
            aTOTALS2TM4 = (((xQuadTOTALS2TM4 * yTOTALS2TM4) - (xTOTALS2TM4 * xyTOTALS2TM4)) / ((minPifVAL * xQuadTOTALS2TM4) - (xTOTALS2TM4^2)));
            aTOTALS2TM5 = (((xQuadTOTALS2TM5 * yTOTALS2TM5) - (xTOTALS2TM5 * xyTOTALS2TM5)) / ((minPifVAL * xQuadTOTALS2TM5) - (xTOTALS2TM5^2)));
            aTOTALS2TM7 = (((xQuadTOTALS2TM7 * yTOTALS2TM7) - (xTOTALS2TM7 * xyTOTALS2TM7)) / ((minPifVAL * xQuadTOTALS2TM7) - (xTOTALS2TM7^2)));
            
            bTOTALS2TM1 = qXYTOTALS2TM1 / xxAritQuadTOTALS2TM1;
            bTOTALS2TM2 = qXYTOTALS2TM2 / xxAritQuadTOTALS2TM2;
            bTOTALS2TM3 = qXYTOTALS2TM3 / xxAritQuadTOTALS2TM3;
            bTOTALS2TM4 = qXYTOTALS2TM4 / xxAritQuadTOTALS2TM4;
            bTOTALS2TM5 = qXYTOTALS2TM5 / xxAritQuadTOTALS2TM5;
            bTOTALS2TM7 = qXYTOTALS2TM7 / xxAritQuadTOTALS2TM7;
    
            rTOTALS2TM1 = (qXYTOTALS2TM1 / ((xxAritQuadTOTALS2TM1 * yyAritQuadTOTALS2TM1)^0.5));
            rTOTALS2TM2 = (qXYTOTALS2TM2 / ((xxAritQuadTOTALS2TM2 * yyAritQuadTOTALS2TM2)^0.5));
            rTOTALS2TM3 = (qXYTOTALS2TM3 / ((xxAritQuadTOTALS2TM3 * yyAritQuadTOTALS2TM3)^0.5));
            rTOTALS2TM4 = (qXYTOTALS2TM4 / ((xxAritQuadTOTALS2TM4 * yyAritQuadTOTALS2TM4)^0.5));
            rTOTALS2TM5 = (qXYTOTALS2TM5 / ((xxAritQuadTOTALS2TM5 * yyAritQuadTOTALS2TM5)^0.5));
            rTOTALS2TM7 = (qXYTOTALS2TM7 / ((xxAritQuadTOTALS2TM7 * yyAritQuadTOTALS2TM7)^0.5));
    
            rQuadTOTALS2TM1 = ((rTOTALS2TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2TM2 = ((rTOTALS2TM2^2) * 100);
            rQuadTOTALS2TM3 = ((rTOTALS2TM3^2) * 100);
            rQuadTOTALS2TM4 = ((rTOTALS2TM4^2) * 100);
            rQuadTOTALS2TM5 = ((rTOTALS2TM5^2) * 100);
            rQuadTOTALS2TM7 = ((rTOTALS2TM7^2) * 100);
        
            syxTOTALS2TM1 = (((yyAritQuadTOTALS2TM1 - ((qXYTOTALS2TM1^2) / xxAritQuadTOTALS2TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM2 = (((yyAritQuadTOTALS2TM2 - ((qXYTOTALS2TM2^2) / xxAritQuadTOTALS2TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM3 = (((yyAritQuadTOTALS2TM3 - ((qXYTOTALS2TM3^2) / xxAritQuadTOTALS2TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM4 = (((yyAritQuadTOTALS2TM4 - ((qXYTOTALS2TM4^2) / xxAritQuadTOTALS2TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM5 = (((yyAritQuadTOTALS2TM5 - ((qXYTOTALS2TM5^2) / xxAritQuadTOTALS2TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM7 = (((yyAritQuadTOTALS2TM7 - ((qXYTOTALS2TM7^2) / xxAritQuadTOTALS2TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2TM1 = (((syxTOTALS2TM1^2) / xxAritQuadTOTALS2TM1)^0.5);
            bStandTOTALS2TM2 = (((syxTOTALS2TM2^2) / xxAritQuadTOTALS2TM2)^0.5);
            bStandTOTALS2TM3 = (((syxTOTALS2TM3^2) / xxAritQuadTOTALS2TM3)^0.5);
            bStandTOTALS2TM4 = (((syxTOTALS2TM4^2) / xxAritQuadTOTALS2TM4)^0.5);
            bStandTOTALS2TM5 = (((syxTOTALS2TM5^2) / xxAritQuadTOTALS2TM5)^0.5);
            bStandTOTALS2TM7 = (((syxTOTALS2TM7^2) / xxAritQuadTOTALS2TM7)^0.5);
    
            aStandTOTALS2TM1 = (bStandTOTALS2TM1 * ((xQuadTOTALS2TM1 / minPifVAL)^0.5));
            aStandTOTALS2TM2 = (bStandTOTALS2TM2 * ((xQuadTOTALS2TM2 / minPifVAL)^0.5));
            aStandTOTALS2TM3 = (bStandTOTALS2TM3 * ((xQuadTOTALS2TM3 / minPifVAL)^0.5));
            aStandTOTALS2TM4 = (bStandTOTALS2TM4 * ((xQuadTOTALS2TM4 / minPifVAL)^0.5));
            aStandTOTALS2TM5 = (bStandTOTALS2TM5 * ((xQuadTOTALS2TM5 / minPifVAL)^0.5));
            aStandTOTALS2TM7 = (bStandTOTALS2TM7 * ((xQuadTOTALS2TM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM1, bTOTALS2TM1, rTOTALS2TM1, rQuadTOTALS2TM1, aStandTOTALS2TM1, bStandTOTALS2TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM2, bTOTALS2TM2, rTOTALS2TM2, rQuadTOTALS2TM2, aStandTOTALS2TM2, bStandTOTALS2TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM3, bTOTALS2TM3, rTOTALS2TM3, rQuadTOTALS2TM3, aStandTOTALS2TM3, bStandTOTALS2TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM4, bTOTALS2TM4, rTOTALS2TM4, rQuadTOTALS2TM4, aStandTOTALS2TM4, bStandTOTALS2TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM5, bTOTALS2TM5, rTOTALS2TM5, rQuadTOTALS2TM5, aStandTOTALS2TM5, bStandTOTALS2TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS2TM7, bTOTALS2TM7, rTOTALS2TM7, rQuadTOTALS2TM7, aStandTOTALS2TM7, bStandTOTALS2TM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS2TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS2TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS2TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS2TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS2TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS2TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS2TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT2TM1[i,j] = (aTOTALS2TM1 + (bTOTALS2TM1 * REFS2TM1[i,j]));
                    OUT2TM2[i,j] = (aTOTALS2TM2 + (bTOTALS2TM2 * REFS2TM2[i,j]));
                    OUT2TM3[i,j] = (aTOTALS2TM3 + (bTOTALS2TM3 * REFS2TM3[i,j]));
                    OUT2TM4[i,j] = (aTOTALS2TM4 + (bTOTALS2TM4 * REFS2TM4[i,j]));
                    OUT2TM5[i,j] = (aTOTALS2TM5 + (bTOTALS2TM5 * REFS2TM5[i,j]));
                    OUT2TM7[i,j] = (aTOTALS2TM7 + (bTOTALS2TM7 * REFS2TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2TM1);
        	CreatePyramid(OUT2TM2);
        	CreatePyramid(OUT2TM3);
        	CreatePyramid(OUT2TM4);
        	CreatePyramid(OUT2TM5);
        	CreatePyramid(OUT2TM7);
        
        	CreateHistogram(OUT2TM1);
        	CreateHistogram(OUT2TM2);
        	CreateHistogram(OUT2TM3);
        	CreateHistogram(OUT2TM4);
        	CreateHistogram(OUT2TM5);
        	CreateHistogram(OUT2TM7);
        
        	CloseRaster(REFS2TM1);
            CloseRaster(REFS2TM2);
            CloseRaster(REFS2TM3);
            CloseRaster(REFS2TM4);
            CloseRaster(REFS2TM5);
            CloseRaster(REFS2TM7);
    
            CloseRaster(OUT2TM1);
            CloseRaster(OUT2TM2);
            CloseRaster(OUT2TM3);
            CloseRaster(OUT2TM4);
            CloseRaster(OUT2TM5);
            CloseRaster(OUT2TM7);
        
        	printf("Scene 2 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS2MSS1, xAritTOTALS2MSS2, xAritTOTALS2MSS4;
            numeric yAritTOTALS2MSS1, yAritTOTALS2MSS2, yAritTOTALS2MSS4;
    
            numeric aTOTALS2MSS1, aTOTALS2MSS2, aTOTALS2MSS4;
            numeric bTOTALS2MSS1, bTOTALS2MSS2, bTOTALS2MSS4;
            numeric rTOTALS2MSS1, rTOTALS2MSS2, rTOTALS2MSS4;
            numeric rQuadTOTALS2MSS1, rQuadTOTALS2MSS2, rQuadTOTALS2MSS4;
            numeric syxTOTALS2MSS1, syxTOTALS2MSS2, syxTOTALS2MSS4;
            numeric bStandTOTALS2MSS1, bStandTOTALS2MSS2, bStandTOTALS2MSS4;
            numeric aStandTOTALS2MSS1, aStandTOTALS2MSS2, aStandTOTALS2MSS4;
    
            numeric xTOTALS2MSS1 = 0;
            numeric xTOTALS2MSS2 = 0;
            numeric xTOTALS2MSS4 = 0;
    
            numeric xQuadTOTALS2MSS1 = 0;
            numeric xQuadTOTALS2MSS2 = 0;
            numeric xQuadTOTALS2MSS4 = 0;
    
            numeric yTOTALS2MSS1 = 0;
            numeric yTOTALS2MSS2 = 0;
            numeric yTOTALS2MSS4 = 0;
    
            numeric yQuadTOTALS2MSS1 = 0;
            numeric yQuadTOTALS2MSS2 = 0;
            numeric yQuadTOTALS2MSS4 = 0;
    
            numeric xyTOTALS2MSS1 = 0;
            numeric xyTOTALS2MSS2 = 0;
            numeric xyTOTALS2MSS4 = 0;
    
            numeric xxAritQuadTOTALS2MSS1 = 0;
            numeric xxAritQuadTOTALS2MSS2 = 0;
            numeric xxAritQuadTOTALS2MSS4 = 0;
    
            numeric yyAritQuadTOTALS2MSS1 = 0;
            numeric yyAritQuadTOTALS2MSS2 = 0;
            numeric yyAritQuadTOTALS2MSS4 = 0;
    
            numeric qXYTOTALS2MSS1 = 0;
            numeric qXYTOTALS2MSS2 = 0;
            numeric qXYTOTALS2MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS2MSS1 = xTOTALS2MSS1 + pifTOTALS3ETM2arrayRAND[m];
                xTOTALS2MSS2 = xTOTALS2MSS2 + pifTOTALS3ETM3arrayRAND[m];
                xTOTALS2MSS4 = xTOTALS2MSS4 + pifTOTALS3ETM4arrayRAND[m];
    
                xQuadTOTALS2MSS1 = (xQuadTOTALS2MSS1 + (pifTOTALS3ETM2arrayRAND[m]^2));
                xQuadTOTALS2MSS2 = (xQuadTOTALS2MSS2 + (pifTOTALS3ETM3arrayRAND[m]^2));
                xQuadTOTALS2MSS4 = (xQuadTOTALS2MSS4 + (pifTOTALS3ETM4arrayRAND[m]^2));
    
                yTOTALS2MSS1 = yTOTALS2MSS1 + pifTOTALS2MSS1arrayRAND[m];
                yTOTALS2MSS2 = yTOTALS2MSS2 + pifTOTALS2MSS2arrayRAND[m];
                yTOTALS2MSS4 = yTOTALS2MSS4 + pifTOTALS2MSS4arrayRAND[m];
                
                yQuadTOTALS2MSS1 = (yQuadTOTALS2MSS1 + (pifTOTALS2MSS1arrayRAND[m]^2));
                yQuadTOTALS2MSS2 = (yQuadTOTALS2MSS2 + (pifTOTALS2MSS2arrayRAND[m]^2));
                yQuadTOTALS2MSS4 = (yQuadTOTALS2MSS4 + (pifTOTALS2MSS4arrayRAND[m]^2));
    
                xyTOTALS2MSS1 = (xyTOTALS2MSS1 + (pifTOTALS3ETM2arrayRAND[m] * pifTOTALS2MSS1arrayRAND[m]));
                xyTOTALS2MSS2 = (xyTOTALS2MSS2 + (pifTOTALS3ETM3arrayRAND[m] * pifTOTALS2MSS2arrayRAND[m]));
                xyTOTALS2MSS4 = (xyTOTALS2MSS4 + (pifTOTALS3ETM4arrayRAND[m] * pifTOTALS2MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS2MSS1 = xTOTALS2MSS1 / minPifVAL;
            xAritTOTALS2MSS2 = xTOTALS2MSS2 / minPifVAL;
            xAritTOTALS2MSS4 = xTOTALS2MSS4 / minPifVAL;
    
            yAritTOTALS2MSS1 = yTOTALS2MSS1 / minPifVAL;
            yAritTOTALS2MSS2 = yTOTALS2MSS2 / minPifVAL;
            yAritTOTALS2MSS4 = yTOTALS2MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2MSS1 = (xxAritQuadTOTALS2MSS1 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS2MSS1)^2));
                xxAritQuadTOTALS2MSS2 = (xxAritQuadTOTALS2MSS2 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS2MSS2)^2));
                xxAritQuadTOTALS2MSS4 = (xxAritQuadTOTALS2MSS4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS2MSS4)^2));
    
                yyAritQuadTOTALS2MSS1 = (yyAritQuadTOTALS2MSS1 + ((pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)^2));
                yyAritQuadTOTALS2MSS2 = (yyAritQuadTOTALS2MSS2 + ((pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)^2));
                yyAritQuadTOTALS2MSS4 = (yyAritQuadTOTALS2MSS4 + ((pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)^2));
    
                qXYTOTALS2MSS1 = (qXYTOTALS2MSS1 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS2MSS1) * (pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)));
                qXYTOTALS2MSS2 = (qXYTOTALS2MSS2 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS2MSS2) * (pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)));
                qXYTOTALS2MSS4 = (qXYTOTALS2MSS4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS2MSS4) * (pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)));
            }
        
            aTOTALS2MSS1 = (((xQuadTOTALS2MSS1 * yTOTALS2MSS1) - (xTOTALS2MSS1 * xyTOTALS2MSS1)) / ((minPifVAL * xQuadTOTALS2MSS1) - (xTOTALS2MSS1^2)));
            aTOTALS2MSS2 = (((xQuadTOTALS2MSS2 * yTOTALS2MSS2) - (xTOTALS2MSS2 * xyTOTALS2MSS2)) / ((minPifVAL * xQuadTOTALS2MSS2) - (xTOTALS2MSS2^2)));
            aTOTALS2MSS4 = (((xQuadTOTALS2MSS4 * yTOTALS2MSS4) - (xTOTALS2MSS4 * xyTOTALS2MSS4)) / ((minPifVAL * xQuadTOTALS2MSS4) - (xTOTALS2MSS4^2)));
            
            bTOTALS2MSS1 = qXYTOTALS2MSS1 / xxAritQuadTOTALS2MSS1;
            bTOTALS2MSS2 = qXYTOTALS2MSS2 / xxAritQuadTOTALS2MSS2;
            bTOTALS2MSS4 = qXYTOTALS2MSS4 / xxAritQuadTOTALS2MSS4;
    
            rTOTALS2MSS1 = (qXYTOTALS2MSS1 / ((xxAritQuadTOTALS2MSS1 * yyAritQuadTOTALS2MSS1)^0.5));
            rTOTALS2MSS2 = (qXYTOTALS2MSS2 / ((xxAritQuadTOTALS2MSS2 * yyAritQuadTOTALS2MSS2)^0.5));
            rTOTALS2MSS4 = (qXYTOTALS2MSS4 / ((xxAritQuadTOTALS2MSS4 * yyAritQuadTOTALS2MSS4)^0.5));
    
            rQuadTOTALS2MSS1 = ((rTOTALS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2MSS2 = ((rTOTALS2MSS2^2) * 100);
            rQuadTOTALS2MSS4 = ((rTOTALS2MSS4^2) * 100);
        
            syxTOTALS2MSS1 = (((yyAritQuadTOTALS2MSS1 - ((qXYTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS2 = (((yyAritQuadTOTALS2MSS2 - ((qXYTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS4 = (((yyAritQuadTOTALS2MSS4 - ((qXYTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2MSS1 = (((syxTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)^0.5);
            bStandTOTALS2MSS2 = (((syxTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)^0.5);
            bStandTOTALS2MSS4 = (((syxTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)^0.5);
    
            aStandTOTALS2MSS1 = (bStandTOTALS2MSS1 * ((xQuadTOTALS2MSS1 / minPifVAL)^0.5));
            aStandTOTALS2MSS2 = (bStandTOTALS2MSS2 * ((xQuadTOTALS2MSS2 / minPifVAL)^0.5));
            aStandTOTALS2MSS4 = (bStandTOTALS2MSS4 * ((xQuadTOTALS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS1, bTOTALS2MSS1, rTOTALS2MSS1, rQuadTOTALS2MSS1, aStandTOTALS2MSS1, bStandTOTALS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS2, bTOTALS2MSS2, rTOTALS2MSS2, rQuadTOTALS2MSS2, aStandTOTALS2MSS2, bStandTOTALS2MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS4, bTOTALS2MSS4, rTOTALS2MSS4, rQuadTOTALS2MSS4, aStandTOTALS2MSS4, bStandTOTALS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS2MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS2MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS2arrayRAND[minPifVAL]);
        
            printf("MSS4: %12f ", pifTOTALS2MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aTOTALS2MSS1 + (bTOTALS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aTOTALS2MSS2 + (bTOTALS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = REFS2MSS3[i,j];
                    OUT2MSS4[i,j] = (aTOTALS2MSS4 + (bTOTALS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT2MSS1);
        	CreatePyramid(OUT2MSS2);
        	CreatePyramid(OUT2MSS3);
        	CreatePyramid(OUT2MSS4);
        
        	CreateHistogram(OUT2MSS1);
        	CreateHistogram(OUT2MSS2);
        	CreateHistogram(OUT2MSS3);
        	CreateHistogram(OUT2MSS4);
        
        	CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors4 == 7 )
            {
            numeric xAritTOTALS4ETM1, xAritTOTALS4ETM2, xAritTOTALS4ETM3, xAritTOTALS4ETM4, xAritTOTALS4ETM5, xAritTOTALS4ETM7;
            numeric yAritTOTALS4ETM1, yAritTOTALS4ETM2, yAritTOTALS4ETM3, yAritTOTALS4ETM4, yAritTOTALS4ETM5, yAritTOTALS4ETM7;
    
            numeric aTOTALS4ETM1, aTOTALS4ETM2, aTOTALS4ETM3, aTOTALS4ETM4, aTOTALS4ETM5, aTOTALS4ETM7;
            numeric bTOTALS4ETM1, bTOTALS4ETM2, bTOTALS4ETM3, bTOTALS4ETM4, bTOTALS4ETM5, bTOTALS4ETM7;
            numeric rTOTALS4ETM1, rTOTALS4ETM2, rTOTALS4ETM3, rTOTALS4ETM4, rTOTALS4ETM5, rTOTALS4ETM7;
            numeric rQuadTOTALS4ETM1, rQuadTOTALS4ETM2, rQuadTOTALS4ETM3, rQuadTOTALS4ETM4, rQuadTOTALS4ETM5, rQuadTOTALS4ETM7;
            numeric syxTOTALS4ETM1, syxTOTALS4ETM2, syxTOTALS4ETM3, syxTOTALS4ETM4, syxTOTALS4ETM5, syxTOTALS4ETM7;
            numeric bStandTOTALS4ETM1, bStandTOTALS4ETM2, bStandTOTALS4ETM3, bStandTOTALS4ETM4, bStandTOTALS4ETM5, bStandTOTALS4ETM7;
            numeric aStandTOTALS4ETM1, aStandTOTALS4ETM2, aStandTOTALS4ETM3, aStandTOTALS4ETM4, aStandTOTALS4ETM5, aStandTOTALS4ETM7;
    
            numeric xTOTALS4ETM1 = 0;
            numeric xTOTALS4ETM2 = 0;
            numeric xTOTALS4ETM3 = 0;
            numeric xTOTALS4ETM4 = 0;
            numeric xTOTALS4ETM5 = 0;
            numeric xTOTALS4ETM7 = 0;
    
            numeric xQuadTOTALS4ETM1 = 0;
            numeric xQuadTOTALS4ETM2 = 0;
            numeric xQuadTOTALS4ETM3 = 0;
            numeric xQuadTOTALS4ETM4 = 0;
            numeric xQuadTOTALS4ETM5 = 0;
            numeric xQuadTOTALS4ETM7 = 0;
    
            numeric yTOTALS4ETM1 = 0;
            numeric yTOTALS4ETM2 = 0;
            numeric yTOTALS4ETM3 = 0;
            numeric yTOTALS4ETM4 = 0;
            numeric yTOTALS4ETM5 = 0;
            numeric yTOTALS4ETM7 = 0;
    
            numeric yQuadTOTALS4ETM1 = 0;
            numeric yQuadTOTALS4ETM2 = 0;
            numeric yQuadTOTALS4ETM3 = 0;
            numeric yQuadTOTALS4ETM4 = 0;
            numeric yQuadTOTALS4ETM5 = 0;
            numeric yQuadTOTALS4ETM7 = 0;
    
            numeric xyTOTALS4ETM1 = 0;
            numeric xyTOTALS4ETM2 = 0;
            numeric xyTOTALS4ETM3 = 0;
            numeric xyTOTALS4ETM4 = 0;
            numeric xyTOTALS4ETM5 = 0;
            numeric xyTOTALS4ETM7 = 0;
    
            numeric xxAritQuadTOTALS4ETM1 = 0;
            numeric xxAritQuadTOTALS4ETM2 = 0;
            numeric xxAritQuadTOTALS4ETM3 = 0;
            numeric xxAritQuadTOTALS4ETM4 = 0;
            numeric xxAritQuadTOTALS4ETM5 = 0;
            numeric xxAritQuadTOTALS4ETM7 = 0;
    
            numeric yyAritQuadTOTALS4ETM1 = 0;
            numeric yyAritQuadTOTALS4ETM2 = 0;
            numeric yyAritQuadTOTALS4ETM3 = 0;
            numeric yyAritQuadTOTALS4ETM4 = 0;
            numeric yyAritQuadTOTALS4ETM5 = 0;
            numeric yyAritQuadTOTALS4ETM7 = 0;
    
            numeric qXYTOTALS4ETM1 = 0;
            numeric qXYTOTALS4ETM2 = 0;
            numeric qXYTOTALS4ETM3 = 0;
            numeric qXYTOTALS4ETM4 = 0;
            numeric qXYTOTALS4ETM5 = 0;
            numeric qXYTOTALS4ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS4ETM1 = xTOTALS4ETM1 + pifTOTALS3ETM1arrayRAND[m];
                xTOTALS4ETM2 = xTOTALS4ETM2 + pifTOTALS3ETM2arrayRAND[m];
                xTOTALS4ETM3 = xTOTALS4ETM3 + pifTOTALS3ETM3arrayRAND[m];
                xTOTALS4ETM4 = xTOTALS4ETM4 + pifTOTALS3ETM4arrayRAND[m];
                xTOTALS4ETM5 = xTOTALS4ETM5 + pifTOTALS3ETM5arrayRAND[m];
                xTOTALS4ETM7 = xTOTALS4ETM7 + pifTOTALS3ETM7arrayRAND[m];
    
                xQuadTOTALS4ETM1 = (xQuadTOTALS4ETM1 + (pifTOTALS3ETM1arrayRAND[m]^2));
                xQuadTOTALS4ETM2 = (xQuadTOTALS4ETM2 + (pifTOTALS3ETM2arrayRAND[m]^2));
                xQuadTOTALS4ETM3 = (xQuadTOTALS4ETM3 + (pifTOTALS3ETM3arrayRAND[m]^2));
                xQuadTOTALS4ETM4 = (xQuadTOTALS4ETM4 + (pifTOTALS3ETM4arrayRAND[m]^2));
                xQuadTOTALS4ETM5 = (xQuadTOTALS4ETM5 + (pifTOTALS3ETM5arrayRAND[m]^2));
                xQuadTOTALS4ETM7 = (xQuadTOTALS4ETM7 + (pifTOTALS3ETM7arrayRAND[m]^2));
    
                yTOTALS4ETM1 = yTOTALS4ETM1 + pifTOTALS4ETM1arrayRAND[m];
                yTOTALS4ETM2 = yTOTALS4ETM2 + pifTOTALS4ETM2arrayRAND[m];
                yTOTALS4ETM3 = yTOTALS4ETM3 + pifTOTALS4ETM3arrayRAND[m];
                yTOTALS4ETM4 = yTOTALS4ETM4 + pifTOTALS4ETM4arrayRAND[m];
                yTOTALS4ETM5 = yTOTALS4ETM5 + pifTOTALS4ETM5arrayRAND[m];
                yTOTALS4ETM7 = yTOTALS4ETM7 + pifTOTALS4ETM7arrayRAND[m];
                
                yQuadTOTALS4ETM1 = (yQuadTOTALS4ETM1 + (pifTOTALS4ETM1arrayRAND[m]^2));
                yQuadTOTALS4ETM2 = (yQuadTOTALS4ETM2 + (pifTOTALS4ETM2arrayRAND[m]^2));
                yQuadTOTALS4ETM3 = (yQuadTOTALS4ETM3 + (pifTOTALS4ETM3arrayRAND[m]^2));
                yQuadTOTALS4ETM4 = (yQuadTOTALS4ETM4 + (pifTOTALS4ETM4arrayRAND[m]^2));
                yQuadTOTALS4ETM5 = (yQuadTOTALS4ETM5 + (pifTOTALS4ETM5arrayRAND[m]^2));
                yQuadTOTALS4ETM7 = (yQuadTOTALS4ETM7 + (pifTOTALS4ETM7arrayRAND[m]^2));
    
                xyTOTALS4ETM1 = (xyTOTALS4ETM1 + (pifTOTALS3ETM1arrayRAND[m] * pifTOTALS4ETM1arrayRAND[m]));
                xyTOTALS4ETM2 = (xyTOTALS4ETM2 + (pifTOTALS3ETM2arrayRAND[m] * pifTOTALS4ETM2arrayRAND[m]));
                xyTOTALS4ETM3 = (xyTOTALS4ETM3 + (pifTOTALS3ETM3arrayRAND[m] * pifTOTALS4ETM3arrayRAND[m]));
                xyTOTALS4ETM4 = (xyTOTALS4ETM4 + (pifTOTALS3ETM4arrayRAND[m] * pifTOTALS4ETM4arrayRAND[m]));
                xyTOTALS4ETM5 = (xyTOTALS4ETM5 + (pifTOTALS3ETM5arrayRAND[m] * pifTOTALS4ETM5arrayRAND[m]));
                xyTOTALS4ETM7 = (xyTOTALS4ETM7 + (pifTOTALS3ETM7arrayRAND[m] * pifTOTALS4ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS4ETM1 = xTOTALS4ETM1 / minPifVAL;
            xAritTOTALS4ETM2 = xTOTALS4ETM2 / minPifVAL;
            xAritTOTALS4ETM3 = xTOTALS4ETM3 / minPifVAL;
            xAritTOTALS4ETM4 = xTOTALS4ETM4 / minPifVAL;
            xAritTOTALS4ETM5 = xTOTALS4ETM5 / minPifVAL;
            xAritTOTALS4ETM7 = xTOTALS4ETM7 / minPifVAL;
    
            yAritTOTALS4ETM1 = yTOTALS4ETM1 / minPifVAL;
            yAritTOTALS4ETM2 = yTOTALS4ETM2 / minPifVAL;
            yAritTOTALS4ETM3 = yTOTALS4ETM3 / minPifVAL;
            yAritTOTALS4ETM4 = yTOTALS4ETM4 / minPifVAL;
            yAritTOTALS4ETM5 = yTOTALS4ETM5 / minPifVAL;
            yAritTOTALS4ETM7 = yTOTALS4ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4ETM1 = (xxAritQuadTOTALS4ETM1 + ((pifTOTALS3ETM1arrayRAND[n] - xAritTOTALS4ETM1)^2));
                xxAritQuadTOTALS4ETM2 = (xxAritQuadTOTALS4ETM2 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS4ETM2)^2));
                xxAritQuadTOTALS4ETM3 = (xxAritQuadTOTALS4ETM3 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS4ETM3)^2));
                xxAritQuadTOTALS4ETM4 = (xxAritQuadTOTALS4ETM4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS4ETM4)^2));
                xxAritQuadTOTALS4ETM5 = (xxAritQuadTOTALS4ETM5 + ((pifTOTALS3ETM5arrayRAND[n] - xAritTOTALS4ETM5)^2));
                xxAritQuadTOTALS4ETM7 = (xxAritQuadTOTALS4ETM7 + ((pifTOTALS3ETM7arrayRAND[n] - xAritTOTALS4ETM7)^2));
    
                yyAritQuadTOTALS4ETM1 = (yyAritQuadTOTALS4ETM1 + ((pifTOTALS4ETM1arrayRAND[n] - yAritTOTALS4ETM1)^2));
                yyAritQuadTOTALS4ETM2 = (yyAritQuadTOTALS4ETM2 + ((pifTOTALS4ETM2arrayRAND[n] - yAritTOTALS4ETM2)^2));
                yyAritQuadTOTALS4ETM3 = (yyAritQuadTOTALS4ETM3 + ((pifTOTALS4ETM3arrayRAND[n] - yAritTOTALS4ETM3)^2));
                yyAritQuadTOTALS4ETM4 = (yyAritQuadTOTALS4ETM4 + ((pifTOTALS4ETM4arrayRAND[n] - yAritTOTALS4ETM4)^2));
                yyAritQuadTOTALS4ETM5 = (yyAritQuadTOTALS4ETM5 + ((pifTOTALS4ETM5arrayRAND[n] - yAritTOTALS4ETM5)^2));
                yyAritQuadTOTALS4ETM7 = (yyAritQuadTOTALS4ETM7 + ((pifTOTALS4ETM7arrayRAND[n] - yAritTOTALS4ETM7)^2));
    
                qXYTOTALS4ETM1 = (qXYTOTALS4ETM1 + ((pifTOTALS3ETM1arrayRAND[n] - xAritTOTALS4ETM1) * (pifTOTALS4ETM1arrayRAND[n] - yAritTOTALS4ETM1)));
                qXYTOTALS4ETM2 = (qXYTOTALS4ETM2 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS4ETM2) * (pifTOTALS4ETM2arrayRAND[n] - yAritTOTALS4ETM2)));
                qXYTOTALS4ETM3 = (qXYTOTALS4ETM3 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS4ETM3) * (pifTOTALS4ETM3arrayRAND[n] - yAritTOTALS4ETM3)));
                qXYTOTALS4ETM4 = (qXYTOTALS4ETM4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS4ETM4) * (pifTOTALS4ETM4arrayRAND[n] - yAritTOTALS4ETM4)));
                qXYTOTALS4ETM5 = (qXYTOTALS4ETM5 + ((pifTOTALS3ETM5arrayRAND[n] - xAritTOTALS4ETM5) * (pifTOTALS4ETM5arrayRAND[n] - yAritTOTALS4ETM5)));
                qXYTOTALS4ETM7 = (qXYTOTALS4ETM7 + ((pifTOTALS3ETM7arrayRAND[n] - xAritTOTALS4ETM7) * (pifTOTALS4ETM7arrayRAND[n] - yAritTOTALS4ETM7)));
            }
        
            aTOTALS4ETM1 = (((xQuadTOTALS4ETM1 * yTOTALS4ETM1) - (xTOTALS4ETM1 * xyTOTALS4ETM1)) / ((minPifVAL * xQuadTOTALS4ETM1) - (xTOTALS4ETM1^2)));
            aTOTALS4ETM2 = (((xQuadTOTALS4ETM2 * yTOTALS4ETM2) - (xTOTALS4ETM2 * xyTOTALS4ETM2)) / ((minPifVAL * xQuadTOTALS4ETM2) - (xTOTALS4ETM2^2)));
            aTOTALS4ETM3 = (((xQuadTOTALS4ETM3 * yTOTALS4ETM3) - (xTOTALS4ETM3 * xyTOTALS4ETM3)) / ((minPifVAL * xQuadTOTALS4ETM3) - (xTOTALS4ETM3^2)));
            aTOTALS4ETM4 = (((xQuadTOTALS4ETM4 * yTOTALS4ETM4) - (xTOTALS4ETM4 * xyTOTALS4ETM4)) / ((minPifVAL * xQuadTOTALS4ETM4) - (xTOTALS4ETM4^2)));
            aTOTALS4ETM5 = (((xQuadTOTALS4ETM5 * yTOTALS4ETM5) - (xTOTALS4ETM5 * xyTOTALS4ETM5)) / ((minPifVAL * xQuadTOTALS4ETM5) - (xTOTALS4ETM5^2)));
            aTOTALS4ETM7 = (((xQuadTOTALS4ETM7 * yTOTALS4ETM7) - (xTOTALS4ETM7 * xyTOTALS4ETM7)) / ((minPifVAL * xQuadTOTALS4ETM7) - (xTOTALS4ETM7^2)));
            
            bTOTALS4ETM1 = qXYTOTALS4ETM1 / xxAritQuadTOTALS4ETM1;
            bTOTALS4ETM2 = qXYTOTALS4ETM2 / xxAritQuadTOTALS4ETM2;
            bTOTALS4ETM3 = qXYTOTALS4ETM3 / xxAritQuadTOTALS4ETM3;
            bTOTALS4ETM4 = qXYTOTALS4ETM4 / xxAritQuadTOTALS4ETM4;
            bTOTALS4ETM5 = qXYTOTALS4ETM5 / xxAritQuadTOTALS4ETM5;
            bTOTALS4ETM7 = qXYTOTALS4ETM7 / xxAritQuadTOTALS4ETM7;
    
            rTOTALS4ETM1 = (qXYTOTALS4ETM1 / ((xxAritQuadTOTALS4ETM1 * yyAritQuadTOTALS4ETM1)^0.5));
            rTOTALS4ETM2 = (qXYTOTALS4ETM2 / ((xxAritQuadTOTALS4ETM2 * yyAritQuadTOTALS4ETM2)^0.5));
            rTOTALS4ETM3 = (qXYTOTALS4ETM3 / ((xxAritQuadTOTALS4ETM3 * yyAritQuadTOTALS4ETM3)^0.5));
            rTOTALS4ETM4 = (qXYTOTALS4ETM4 / ((xxAritQuadTOTALS4ETM4 * yyAritQuadTOTALS4ETM4)^0.5));
            rTOTALS4ETM5 = (qXYTOTALS4ETM5 / ((xxAritQuadTOTALS4ETM5 * yyAritQuadTOTALS4ETM5)^0.5));
            rTOTALS4ETM7 = (qXYTOTALS4ETM7 / ((xxAritQuadTOTALS4ETM7 * yyAritQuadTOTALS4ETM7)^0.5));
    
            rQuadTOTALS4ETM1 = ((rTOTALS4ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4ETM2 = ((rTOTALS4ETM2^2) * 100);
            rQuadTOTALS4ETM3 = ((rTOTALS4ETM3^2) * 100);
            rQuadTOTALS4ETM4 = ((rTOTALS4ETM4^2) * 100);
            rQuadTOTALS4ETM5 = ((rTOTALS4ETM5^2) * 100);
            rQuadTOTALS4ETM7 = ((rTOTALS4ETM7^2) * 100);
        
            syxTOTALS4ETM1 = (((yyAritQuadTOTALS4ETM1 - ((qXYTOTALS4ETM1^2) / xxAritQuadTOTALS4ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM2 = (((yyAritQuadTOTALS4ETM2 - ((qXYTOTALS4ETM2^2) / xxAritQuadTOTALS4ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM3 = (((yyAritQuadTOTALS4ETM3 - ((qXYTOTALS4ETM3^2) / xxAritQuadTOTALS4ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM4 = (((yyAritQuadTOTALS4ETM4 - ((qXYTOTALS4ETM4^2) / xxAritQuadTOTALS4ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM5 = (((yyAritQuadTOTALS4ETM5 - ((qXYTOTALS4ETM5^2) / xxAritQuadTOTALS4ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM7 = (((yyAritQuadTOTALS4ETM7 - ((qXYTOTALS4ETM7^2) / xxAritQuadTOTALS4ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4ETM1 = (((syxTOTALS4ETM1^2) / xxAritQuadTOTALS4ETM1)^0.5);
            bStandTOTALS4ETM2 = (((syxTOTALS4ETM2^2) / xxAritQuadTOTALS4ETM2)^0.5);
            bStandTOTALS4ETM3 = (((syxTOTALS4ETM3^2) / xxAritQuadTOTALS4ETM3)^0.5);
            bStandTOTALS4ETM4 = (((syxTOTALS4ETM4^2) / xxAritQuadTOTALS4ETM4)^0.5);
            bStandTOTALS4ETM5 = (((syxTOTALS4ETM5^2) / xxAritQuadTOTALS4ETM5)^0.5);
            bStandTOTALS4ETM7 = (((syxTOTALS4ETM7^2) / xxAritQuadTOTALS4ETM7)^0.5);
    
            aStandTOTALS4ETM1 = (bStandTOTALS4ETM1 * ((xQuadTOTALS4ETM1 / minPifVAL)^0.5));
            aStandTOTALS4ETM2 = (bStandTOTALS4ETM2 * ((xQuadTOTALS4ETM2 / minPifVAL)^0.5));
            aStandTOTALS4ETM3 = (bStandTOTALS4ETM3 * ((xQuadTOTALS4ETM3 / minPifVAL)^0.5));
            aStandTOTALS4ETM4 = (bStandTOTALS4ETM4 * ((xQuadTOTALS4ETM4 / minPifVAL)^0.5));
            aStandTOTALS4ETM5 = (bStandTOTALS4ETM5 * ((xQuadTOTALS4ETM5 / minPifVAL)^0.5));
            aStandTOTALS4ETM7 = (bStandTOTALS4ETM7 * ((xQuadTOTALS4ETM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM1, bTOTALS4ETM1, rTOTALS4ETM1, rQuadTOTALS4ETM1, aStandTOTALS4ETM1, bStandTOTALS4ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM2, bTOTALS4ETM2, rTOTALS4ETM2, rQuadTOTALS4ETM2, aStandTOTALS4ETM2, bStandTOTALS4ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM3, bTOTALS4ETM3, rTOTALS4ETM3, rQuadTOTALS4ETM3, aStandTOTALS4ETM3, bStandTOTALS4ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM4, bTOTALS4ETM4, rTOTALS4ETM4, rQuadTOTALS4ETM4, aStandTOTALS4ETM4, bStandTOTALS4ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM5, bTOTALS4ETM5, rTOTALS4ETM5, rQuadTOTALS4ETM5, aStandTOTALS4ETM5, bStandTOTALS4ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS4ETM7, bTOTALS4ETM7, rTOTALS4ETM7, rQuadTOTALS4ETM7, aStandTOTALS4ETM7, bStandTOTALS4ETM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS4ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS4ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS4ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS4ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS4ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS4ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS4ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT4ETM1[i,j] = (aTOTALS4ETM1 + (bTOTALS4ETM1 * REFS4ETM1[i,j]));
                    OUT4ETM2[i,j] = (aTOTALS4ETM2 + (bTOTALS4ETM2 * REFS4ETM2[i,j]));
                    OUT4ETM3[i,j] = (aTOTALS4ETM3 + (bTOTALS4ETM3 * REFS4ETM3[i,j]));
                    OUT4ETM4[i,j] = (aTOTALS4ETM4 + (bTOTALS4ETM4 * REFS4ETM4[i,j]));
                    OUT4ETM5[i,j] = (aTOTALS4ETM5 + (bTOTALS4ETM5 * REFS4ETM5[i,j]));
                    OUT4ETM7[i,j] = (aTOTALS4ETM7 + (bTOTALS4ETM7 * REFS4ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4ETM1);
        	CreatePyramid(OUT4ETM2);
        	CreatePyramid(OUT4ETM3);
        	CreatePyramid(OUT4ETM4);
        	CreatePyramid(OUT4ETM5);
        	CreatePyramid(OUT4ETM7);
        
        	CreateHistogram(OUT4ETM1);
        	CreateHistogram(OUT4ETM2);
        	CreateHistogram(OUT4ETM3);
        	CreateHistogram(OUT4ETM4);
        	CreateHistogram(OUT4ETM5);
        	CreateHistogram(OUT4ETM7);
        
        	CloseRaster(REFS4ETM1);
            CloseRaster(REFS4ETM2);
            CloseRaster(REFS4ETM3);
            CloseRaster(REFS4ETM4);
            CloseRaster(REFS4ETM5);
            CloseRaster(REFS4ETM7);
    
            CloseRaster(OUT4ETM1);
            CloseRaster(OUT4ETM2);
            CloseRaster(OUT4ETM3);
            CloseRaster(OUT4ETM4);
            CloseRaster(OUT4ETM5);
            CloseRaster(OUT4ETM7);
        
        	printf("Scene 4 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors4 == 6 )
            {
            numeric xAritTOTALS4TM1, xAritTOTALS4TM2, xAritTOTALS4TM3, xAritTOTALS4TM4, xAritTOTALS4TM5, xAritTOTALS4TM7;
            numeric yAritTOTALS4TM1, yAritTOTALS4TM2, yAritTOTALS4TM3, yAritTOTALS4TM4, yAritTOTALS4TM5, yAritTOTALS4TM7;
    
            numeric aTOTALS4TM1, aTOTALS4TM2, aTOTALS4TM3, aTOTALS4TM4, aTOTALS4TM5, aTOTALS4TM7;
            numeric bTOTALS4TM1, bTOTALS4TM2, bTOTALS4TM3, bTOTALS4TM4, bTOTALS4TM5, bTOTALS4TM7;
            numeric rTOTALS4TM1, rTOTALS4TM2, rTOTALS4TM3, rTOTALS4TM4, rTOTALS4TM5, rTOTALS4TM7;
            numeric rQuadTOTALS4TM1, rQuadTOTALS4TM2, rQuadTOTALS4TM3, rQuadTOTALS4TM4, rQuadTOTALS4TM5, rQuadTOTALS4TM7;
            numeric syxTOTALS4TM1, syxTOTALS4TM2, syxTOTALS4TM3, syxTOTALS4TM4, syxTOTALS4TM5, syxTOTALS4TM7;
            numeric bStandTOTALS4TM1, bStandTOTALS4TM2, bStandTOTALS4TM3, bStandTOTALS4TM4, bStandTOTALS4TM5, bStandTOTALS4TM7;
            numeric aStandTOTALS4TM1, aStandTOTALS4TM2, aStandTOTALS4TM3, aStandTOTALS4TM4, aStandTOTALS4TM5, aStandTOTALS4TM7;
    
            numeric xTOTALS4TM1 = 0;
            numeric xTOTALS4TM2 = 0;
            numeric xTOTALS4TM3 = 0;
            numeric xTOTALS4TM4 = 0;
            numeric xTOTALS4TM5 = 0;
            numeric xTOTALS4TM7 = 0;
    
            numeric xQuadTOTALS4TM1 = 0;
            numeric xQuadTOTALS4TM2 = 0;
            numeric xQuadTOTALS4TM3 = 0;
            numeric xQuadTOTALS4TM4 = 0;
            numeric xQuadTOTALS4TM5 = 0;
            numeric xQuadTOTALS4TM7 = 0;
    
            numeric yTOTALS4TM1 = 0;
            numeric yTOTALS4TM2 = 0;
            numeric yTOTALS4TM3 = 0;
            numeric yTOTALS4TM4 = 0;
            numeric yTOTALS4TM5 = 0;
            numeric yTOTALS4TM7 = 0;
    
            numeric yQuadTOTALS4TM1 = 0;
            numeric yQuadTOTALS4TM2 = 0;
            numeric yQuadTOTALS4TM3 = 0;
            numeric yQuadTOTALS4TM4 = 0;
            numeric yQuadTOTALS4TM5 = 0;
            numeric yQuadTOTALS4TM7 = 0;
    
            numeric xyTOTALS4TM1 = 0;
            numeric xyTOTALS4TM2 = 0;
            numeric xyTOTALS4TM3 = 0;
            numeric xyTOTALS4TM4 = 0;
            numeric xyTOTALS4TM5 = 0;
            numeric xyTOTALS4TM7 = 0;
    
            numeric xxAritQuadTOTALS4TM1 = 0;
            numeric xxAritQuadTOTALS4TM2 = 0;
            numeric xxAritQuadTOTALS4TM3 = 0;
            numeric xxAritQuadTOTALS4TM4 = 0;
            numeric xxAritQuadTOTALS4TM5 = 0;
            numeric xxAritQuadTOTALS4TM7 = 0;
    
            numeric yyAritQuadTOTALS4TM1 = 0;
            numeric yyAritQuadTOTALS4TM2 = 0;
            numeric yyAritQuadTOTALS4TM3 = 0;
            numeric yyAritQuadTOTALS4TM4 = 0;
            numeric yyAritQuadTOTALS4TM5 = 0;
            numeric yyAritQuadTOTALS4TM7 = 0;
    
            numeric qXYTOTALS4TM1 = 0;
            numeric qXYTOTALS4TM2 = 0;
            numeric qXYTOTALS4TM3 = 0;
            numeric qXYTOTALS4TM4 = 0;
            numeric qXYTOTALS4TM5 = 0;
            numeric qXYTOTALS4TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS4TM1 = xTOTALS4TM1 + pifTOTALS3ETM1arrayRAND[m];
                xTOTALS4TM2 = xTOTALS4TM2 + pifTOTALS3ETM2arrayRAND[m];
                xTOTALS4TM3 = xTOTALS4TM3 + pifTOTALS3ETM3arrayRAND[m];
                xTOTALS4TM4 = xTOTALS4TM4 + pifTOTALS3ETM4arrayRAND[m];
                xTOTALS4TM5 = xTOTALS4TM5 + pifTOTALS3ETM5arrayRAND[m];
                xTOTALS4TM7 = xTOTALS4TM7 + pifTOTALS3ETM7arrayRAND[m];
    
                xQuadTOTALS4TM1 = (xQuadTOTALS4TM1 + (pifTOTALS3ETM1arrayRAND[m]^2));
                xQuadTOTALS4TM2 = (xQuadTOTALS4TM2 + (pifTOTALS3ETM2arrayRAND[m]^2));
                xQuadTOTALS4TM3 = (xQuadTOTALS4TM3 + (pifTOTALS3ETM3arrayRAND[m]^2));
                xQuadTOTALS4TM4 = (xQuadTOTALS4TM4 + (pifTOTALS3ETM4arrayRAND[m]^2));
                xQuadTOTALS4TM5 = (xQuadTOTALS4TM5 + (pifTOTALS3ETM5arrayRAND[m]^2));
                xQuadTOTALS4TM7 = (xQuadTOTALS4TM7 + (pifTOTALS3ETM7arrayRAND[m]^2));
    
                yTOTALS4TM1 = yTOTALS4TM1 + pifTOTALS4TM1arrayRAND[m];
                yTOTALS4TM2 = yTOTALS4TM2 + pifTOTALS4TM2arrayRAND[m];
                yTOTALS4TM3 = yTOTALS4TM3 + pifTOTALS4TM3arrayRAND[m];
                yTOTALS4TM4 = yTOTALS4TM4 + pifTOTALS4TM4arrayRAND[m];
                yTOTALS4TM5 = yTOTALS4TM5 + pifTOTALS4TM5arrayRAND[m];
                yTOTALS4TM7 = yTOTALS4TM7 + pifTOTALS4TM7arrayRAND[m];
                
                yQuadTOTALS4TM1 = (yQuadTOTALS4TM1 + (pifTOTALS4TM1arrayRAND[m]^2));
                yQuadTOTALS4TM2 = (yQuadTOTALS4TM2 + (pifTOTALS4TM2arrayRAND[m]^2));
                yQuadTOTALS4TM3 = (yQuadTOTALS4TM3 + (pifTOTALS4TM3arrayRAND[m]^2));
                yQuadTOTALS4TM4 = (yQuadTOTALS4TM4 + (pifTOTALS4TM4arrayRAND[m]^2));
                yQuadTOTALS4TM5 = (yQuadTOTALS4TM5 + (pifTOTALS4TM5arrayRAND[m]^2));
                yQuadTOTALS4TM7 = (yQuadTOTALS4TM7 + (pifTOTALS4TM7arrayRAND[m]^2));
    
                xyTOTALS4TM1 = (xyTOTALS4TM1 + (pifTOTALS3ETM1arrayRAND[m] * pifTOTALS4TM1arrayRAND[m]));
                xyTOTALS4TM2 = (xyTOTALS4TM2 + (pifTOTALS3ETM2arrayRAND[m] * pifTOTALS4TM2arrayRAND[m]));
                xyTOTALS4TM3 = (xyTOTALS4TM3 + (pifTOTALS3ETM3arrayRAND[m] * pifTOTALS4TM3arrayRAND[m]));
                xyTOTALS4TM4 = (xyTOTALS4TM4 + (pifTOTALS3ETM4arrayRAND[m] * pifTOTALS4TM4arrayRAND[m]));
                xyTOTALS4TM5 = (xyTOTALS4TM5 + (pifTOTALS3ETM5arrayRAND[m] * pifTOTALS4TM5arrayRAND[m]));
                xyTOTALS4TM7 = (xyTOTALS4TM7 + (pifTOTALS3ETM7arrayRAND[m] * pifTOTALS4TM7arrayRAND[m]));
            }	
            
            xAritTOTALS4TM1 = xTOTALS4TM1 / minPifVAL;
            xAritTOTALS4TM2 = xTOTALS4TM2 / minPifVAL;
            xAritTOTALS4TM3 = xTOTALS4TM3 / minPifVAL;
            xAritTOTALS4TM4 = xTOTALS4TM4 / minPifVAL;
            xAritTOTALS4TM5 = xTOTALS4TM5 / minPifVAL;
            xAritTOTALS4TM7 = xTOTALS4TM7 / minPifVAL;
    
            yAritTOTALS4TM1 = yTOTALS4TM1 / minPifVAL;
            yAritTOTALS4TM2 = yTOTALS4TM2 / minPifVAL;
            yAritTOTALS4TM3 = yTOTALS4TM3 / minPifVAL;
            yAritTOTALS4TM4 = yTOTALS4TM4 / minPifVAL;
            yAritTOTALS4TM5 = yTOTALS4TM5 / minPifVAL;
            yAritTOTALS4TM7 = yTOTALS4TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4TM1 = (xxAritQuadTOTALS4TM1 + ((pifTOTALS3ETM1arrayRAND[n] - xAritTOTALS4TM1)^2));
                xxAritQuadTOTALS4TM2 = (xxAritQuadTOTALS4TM2 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS4TM2)^2));
                xxAritQuadTOTALS4TM3 = (xxAritQuadTOTALS4TM3 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS4TM3)^2));
                xxAritQuadTOTALS4TM4 = (xxAritQuadTOTALS4TM4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS4TM4)^2));
                xxAritQuadTOTALS4TM5 = (xxAritQuadTOTALS4TM5 + ((pifTOTALS3ETM5arrayRAND[n] - xAritTOTALS4TM5)^2));
                xxAritQuadTOTALS4TM7 = (xxAritQuadTOTALS4TM7 + ((pifTOTALS3ETM7arrayRAND[n] - xAritTOTALS4TM7)^2));
    
                yyAritQuadTOTALS4TM1 = (yyAritQuadTOTALS4TM1 + ((pifTOTALS4TM1arrayRAND[n] - yAritTOTALS4TM1)^2));
                yyAritQuadTOTALS4TM2 = (yyAritQuadTOTALS4TM2 + ((pifTOTALS4TM2arrayRAND[n] - yAritTOTALS4TM2)^2));
                yyAritQuadTOTALS4TM3 = (yyAritQuadTOTALS4TM3 + ((pifTOTALS4TM3arrayRAND[n] - yAritTOTALS4TM3)^2));
                yyAritQuadTOTALS4TM4 = (yyAritQuadTOTALS4TM4 + ((pifTOTALS4TM4arrayRAND[n] - yAritTOTALS4TM4)^2));
                yyAritQuadTOTALS4TM5 = (yyAritQuadTOTALS4TM5 + ((pifTOTALS4TM5arrayRAND[n] - yAritTOTALS4TM5)^2));
                yyAritQuadTOTALS4TM7 = (yyAritQuadTOTALS4TM7 + ((pifTOTALS4TM7arrayRAND[n] - yAritTOTALS4TM7)^2));
    
                qXYTOTALS4TM1 = (qXYTOTALS4TM1 + ((pifTOTALS3ETM1arrayRAND[n] - xAritTOTALS4TM1) * (pifTOTALS4TM1arrayRAND[n] - yAritTOTALS4TM1)));
                qXYTOTALS4TM2 = (qXYTOTALS4TM2 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS4TM2) * (pifTOTALS4TM2arrayRAND[n] - yAritTOTALS4TM2)));
                qXYTOTALS4TM3 = (qXYTOTALS4TM3 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS4TM3) * (pifTOTALS4TM3arrayRAND[n] - yAritTOTALS4TM3)));
                qXYTOTALS4TM4 = (qXYTOTALS4TM4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS4TM4) * (pifTOTALS4TM4arrayRAND[n] - yAritTOTALS4TM4)));
                qXYTOTALS4TM5 = (qXYTOTALS4TM5 + ((pifTOTALS3ETM5arrayRAND[n] - xAritTOTALS4TM5) * (pifTOTALS4TM5arrayRAND[n] - yAritTOTALS4TM5)));
                qXYTOTALS4TM7 = (qXYTOTALS4TM7 + ((pifTOTALS3ETM7arrayRAND[n] - xAritTOTALS4TM7) * (pifTOTALS4TM7arrayRAND[n] - yAritTOTALS4TM7)));
            }
        
            aTOTALS4TM1 = (((xQuadTOTALS4TM1 * yTOTALS4TM1) - (xTOTALS4TM1 * xyTOTALS4TM1)) / ((minPifVAL * xQuadTOTALS4TM1) - (xTOTALS4TM1^2)));
            aTOTALS4TM2 = (((xQuadTOTALS4TM2 * yTOTALS4TM2) - (xTOTALS4TM2 * xyTOTALS4TM2)) / ((minPifVAL * xQuadTOTALS4TM2) - (xTOTALS4TM2^2)));
            aTOTALS4TM3 = (((xQuadTOTALS4TM3 * yTOTALS4TM3) - (xTOTALS4TM3 * xyTOTALS4TM3)) / ((minPifVAL * xQuadTOTALS4TM3) - (xTOTALS4TM3^2)));
            aTOTALS4TM4 = (((xQuadTOTALS4TM4 * yTOTALS4TM4) - (xTOTALS4TM4 * xyTOTALS4TM4)) / ((minPifVAL * xQuadTOTALS4TM4) - (xTOTALS4TM4^2)));
            aTOTALS4TM5 = (((xQuadTOTALS4TM5 * yTOTALS4TM5) - (xTOTALS4TM5 * xyTOTALS4TM5)) / ((minPifVAL * xQuadTOTALS4TM5) - (xTOTALS4TM5^2)));
            aTOTALS4TM7 = (((xQuadTOTALS4TM7 * yTOTALS4TM7) - (xTOTALS4TM7 * xyTOTALS4TM7)) / ((minPifVAL * xQuadTOTALS4TM7) - (xTOTALS4TM7^2)));
            
            bTOTALS4TM1 = qXYTOTALS4TM1 / xxAritQuadTOTALS4TM1;
            bTOTALS4TM2 = qXYTOTALS4TM2 / xxAritQuadTOTALS4TM2;
            bTOTALS4TM3 = qXYTOTALS4TM3 / xxAritQuadTOTALS4TM3;
            bTOTALS4TM4 = qXYTOTALS4TM4 / xxAritQuadTOTALS4TM4;
            bTOTALS4TM5 = qXYTOTALS4TM5 / xxAritQuadTOTALS4TM5;
            bTOTALS4TM7 = qXYTOTALS4TM7 / xxAritQuadTOTALS4TM7;
    
            rTOTALS4TM1 = (qXYTOTALS4TM1 / ((xxAritQuadTOTALS4TM1 * yyAritQuadTOTALS4TM1)^0.5));
            rTOTALS4TM2 = (qXYTOTALS4TM2 / ((xxAritQuadTOTALS4TM2 * yyAritQuadTOTALS4TM2)^0.5));
            rTOTALS4TM3 = (qXYTOTALS4TM3 / ((xxAritQuadTOTALS4TM3 * yyAritQuadTOTALS4TM3)^0.5));
            rTOTALS4TM4 = (qXYTOTALS4TM4 / ((xxAritQuadTOTALS4TM4 * yyAritQuadTOTALS4TM4)^0.5));
            rTOTALS4TM5 = (qXYTOTALS4TM5 / ((xxAritQuadTOTALS4TM5 * yyAritQuadTOTALS4TM5)^0.5));
            rTOTALS4TM7 = (qXYTOTALS4TM7 / ((xxAritQuadTOTALS4TM7 * yyAritQuadTOTALS4TM7)^0.5));
    
            rQuadTOTALS4TM1 = ((rTOTALS4TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4TM2 = ((rTOTALS4TM2^2) * 100);
            rQuadTOTALS4TM3 = ((rTOTALS4TM3^2) * 100);
            rQuadTOTALS4TM4 = ((rTOTALS4TM4^2) * 100);
            rQuadTOTALS4TM5 = ((rTOTALS4TM5^2) * 100);
            rQuadTOTALS4TM7 = ((rTOTALS4TM7^2) * 100);
        
            syxTOTALS4TM1 = (((yyAritQuadTOTALS4TM1 - ((qXYTOTALS4TM1^2) / xxAritQuadTOTALS4TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM2 = (((yyAritQuadTOTALS4TM2 - ((qXYTOTALS4TM2^2) / xxAritQuadTOTALS4TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM3 = (((yyAritQuadTOTALS4TM3 - ((qXYTOTALS4TM3^2) / xxAritQuadTOTALS4TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM4 = (((yyAritQuadTOTALS4TM4 - ((qXYTOTALS4TM4^2) / xxAritQuadTOTALS4TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM5 = (((yyAritQuadTOTALS4TM5 - ((qXYTOTALS4TM5^2) / xxAritQuadTOTALS4TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM7 = (((yyAritQuadTOTALS4TM7 - ((qXYTOTALS4TM7^2) / xxAritQuadTOTALS4TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4TM1 = (((syxTOTALS4TM1^2) / xxAritQuadTOTALS4TM1)^0.5);
            bStandTOTALS4TM2 = (((syxTOTALS4TM2^2) / xxAritQuadTOTALS4TM2)^0.5);
            bStandTOTALS4TM3 = (((syxTOTALS4TM3^2) / xxAritQuadTOTALS4TM3)^0.5);
            bStandTOTALS4TM4 = (((syxTOTALS4TM4^2) / xxAritQuadTOTALS4TM4)^0.5);
            bStandTOTALS4TM5 = (((syxTOTALS4TM5^2) / xxAritQuadTOTALS4TM5)^0.5);
            bStandTOTALS4TM7 = (((syxTOTALS4TM7^2) / xxAritQuadTOTALS4TM7)^0.5);
    
            aStandTOTALS4TM1 = (bStandTOTALS4TM1 * ((xQuadTOTALS4TM1 / minPifVAL)^0.5));
            aStandTOTALS4TM2 = (bStandTOTALS4TM2 * ((xQuadTOTALS4TM2 / minPifVAL)^0.5));
            aStandTOTALS4TM3 = (bStandTOTALS4TM3 * ((xQuadTOTALS4TM3 / minPifVAL)^0.5));
            aStandTOTALS4TM4 = (bStandTOTALS4TM4 * ((xQuadTOTALS4TM4 / minPifVAL)^0.5));
            aStandTOTALS4TM5 = (bStandTOTALS4TM5 * ((xQuadTOTALS4TM5 / minPifVAL)^0.5));
            aStandTOTALS4TM7 = (bStandTOTALS4TM7 * ((xQuadTOTALS4TM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM1, bTOTALS4TM1, rTOTALS4TM1, rQuadTOTALS4TM1, aStandTOTALS4TM1, bStandTOTALS4TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM2, bTOTALS4TM2, rTOTALS4TM2, rQuadTOTALS4TM2, aStandTOTALS4TM2, bStandTOTALS4TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM3, bTOTALS4TM3, rTOTALS4TM3, rQuadTOTALS4TM3, aStandTOTALS4TM3, bStandTOTALS4TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM4, bTOTALS4TM4, rTOTALS4TM4, rQuadTOTALS4TM4, aStandTOTALS4TM4, bStandTOTALS4TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM5, bTOTALS4TM5, rTOTALS4TM5, rQuadTOTALS4TM5, aStandTOTALS4TM5, bStandTOTALS4TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS4TM7, bTOTALS4TM7, rTOTALS4TM7, rQuadTOTALS4TM7, aStandTOTALS4TM7, bStandTOTALS4TM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS4TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS4TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS4TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS4TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS4TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS4TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS4TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT4TM1[i,j] = (aTOTALS4TM1 + (bTOTALS4TM1 * REFS4TM1[i,j]));
                    OUT4TM2[i,j] = (aTOTALS4TM2 + (bTOTALS4TM2 * REFS4TM2[i,j]));
                    OUT4TM3[i,j] = (aTOTALS4TM3 + (bTOTALS4TM3 * REFS4TM3[i,j]));
                    OUT4TM4[i,j] = (aTOTALS4TM4 + (bTOTALS4TM4 * REFS4TM4[i,j]));
                    OUT4TM5[i,j] = (aTOTALS4TM5 + (bTOTALS4TM5 * REFS4TM5[i,j]));
                    OUT4TM7[i,j] = (aTOTALS4TM7 + (bTOTALS4TM7 * REFS4TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4TM1);
        	CreatePyramid(OUT4TM2);
        	CreatePyramid(OUT4TM3);
        	CreatePyramid(OUT4TM4);
        	CreatePyramid(OUT4TM5);
        	CreatePyramid(OUT4TM7);
        
        	CreateHistogram(OUT4TM1);
        	CreateHistogram(OUT4TM2);
        	CreateHistogram(OUT4TM3);
        	CreateHistogram(OUT4TM4);
        	CreateHistogram(OUT4TM5);
        	CreateHistogram(OUT4TM7);
        
        	CloseRaster(REFS4TM1);
            CloseRaster(REFS4TM2);
            CloseRaster(REFS4TM3);
            CloseRaster(REFS4TM4);
            CloseRaster(REFS4TM5);
            CloseRaster(REFS4TM7);
    
            CloseRaster(OUT4TM1);
            CloseRaster(OUT4TM2);
            CloseRaster(OUT4TM3);
            CloseRaster(OUT4TM4);
            CloseRaster(OUT4TM5);
            CloseRaster(OUT4TM7);
        
        	printf("Scene 4 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS4MSS1, xAritTOTALS4MSS2, xAritTOTALS4MSS4;
            numeric yAritTOTALS4MSS1, yAritTOTALS4MSS2, yAritTOTALS4MSS4;
    
            numeric aTOTALS4MSS1, aTOTALS4MSS2, aTOTALS4MSS4;
            numeric bTOTALS4MSS1, bTOTALS4MSS2, bTOTALS4MSS4;
            numeric rTOTALS4MSS1, rTOTALS4MSS2, rTOTALS4MSS4;
            numeric rQuadTOTALS4MSS1, rQuadTOTALS4MSS2, rQuadTOTALS4MSS4;
            numeric syxTOTALS4MSS1, syxTOTALS4MSS2, syxTOTALS4MSS4;
            numeric bStandTOTALS4MSS1, bStandTOTALS4MSS2, bStandTOTALS4MSS4;
            numeric aStandTOTALS4MSS1, aStandTOTALS4MSS2, aStandTOTALS4MSS4;
    
            numeric xTOTALS4MSS1 = 0;
            numeric xTOTALS4MSS2 = 0;
            numeric xTOTALS4MSS4 = 0;
    
            numeric xQuadTOTALS4MSS1 = 0;
            numeric xQuadTOTALS4MSS2 = 0;
            numeric xQuadTOTALS4MSS4 = 0;
    
            numeric yTOTALS4MSS1 = 0;
            numeric yTOTALS4MSS2 = 0;
            numeric yTOTALS4MSS4 = 0;
    
            numeric yQuadTOTALS4MSS1 = 0;
            numeric yQuadTOTALS4MSS2 = 0;
            numeric yQuadTOTALS4MSS4 = 0;
    
            numeric xyTOTALS4MSS1 = 0;
            numeric xyTOTALS4MSS2 = 0;
            numeric xyTOTALS4MSS4 = 0;
    
            numeric xxAritQuadTOTALS4MSS1 = 0;
            numeric xxAritQuadTOTALS4MSS2 = 0;
            numeric xxAritQuadTOTALS4MSS4 = 0;
    
            numeric yyAritQuadTOTALS4MSS1 = 0;
            numeric yyAritQuadTOTALS4MSS2 = 0;
            numeric yyAritQuadTOTALS4MSS4 = 0;
    
            numeric qXYTOTALS4MSS1 = 0;
            numeric qXYTOTALS4MSS2 = 0;
            numeric qXYTOTALS4MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS4MSS1 = xTOTALS4MSS1 + pifTOTALS3ETM2arrayRAND[m];
                xTOTALS4MSS2 = xTOTALS4MSS2 + pifTOTALS3ETM3arrayRAND[m];
                xTOTALS4MSS4 = xTOTALS4MSS4 + pifTOTALS3ETM4arrayRAND[m];
    
                xQuadTOTALS4MSS1 = (xQuadTOTALS4MSS1 + (pifTOTALS3ETM2arrayRAND[m]^2));
                xQuadTOTALS4MSS2 = (xQuadTOTALS4MSS2 + (pifTOTALS3ETM3arrayRAND[m]^2));
                xQuadTOTALS4MSS4 = (xQuadTOTALS4MSS4 + (pifTOTALS3ETM4arrayRAND[m]^2));
    
                yTOTALS4MSS1 = yTOTALS4MSS1 + pifTOTALS4MSS1arrayRAND[m];
                yTOTALS4MSS2 = yTOTALS4MSS2 + pifTOTALS4MSS2arrayRAND[m];
                yTOTALS4MSS4 = yTOTALS4MSS4 + pifTOTALS4MSS4arrayRAND[m];
                
                yQuadTOTALS4MSS1 = (yQuadTOTALS4MSS1 + (pifTOTALS4MSS1arrayRAND[m]^2));
                yQuadTOTALS4MSS2 = (yQuadTOTALS4MSS2 + (pifTOTALS4MSS2arrayRAND[m]^2));
                yQuadTOTALS4MSS4 = (yQuadTOTALS4MSS4 + (pifTOTALS4MSS4arrayRAND[m]^2));
    
                xyTOTALS4MSS1 = (xyTOTALS4MSS1 + (pifTOTALS3ETM2arrayRAND[m] * pifTOTALS4MSS1arrayRAND[m]));
                xyTOTALS4MSS2 = (xyTOTALS4MSS2 + (pifTOTALS3ETM3arrayRAND[m] * pifTOTALS4MSS2arrayRAND[m]));
                xyTOTALS4MSS4 = (xyTOTALS4MSS4 + (pifTOTALS3ETM4arrayRAND[m] * pifTOTALS4MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS4MSS1 = xTOTALS4MSS1 / minPifVAL;
            xAritTOTALS4MSS2 = xTOTALS4MSS2 / minPifVAL;
            xAritTOTALS4MSS4 = xTOTALS4MSS4 / minPifVAL;
    
            yAritTOTALS4MSS1 = yTOTALS4MSS1 / minPifVAL;
            yAritTOTALS4MSS2 = yTOTALS4MSS2 / minPifVAL;
            yAritTOTALS4MSS4 = yTOTALS4MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4MSS1 = (xxAritQuadTOTALS4MSS1 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS4MSS1)^2));
                xxAritQuadTOTALS4MSS2 = (xxAritQuadTOTALS4MSS2 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS4MSS2)^2));
                xxAritQuadTOTALS4MSS4 = (xxAritQuadTOTALS4MSS4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS4MSS4)^2));
    
                yyAritQuadTOTALS4MSS1 = (yyAritQuadTOTALS4MSS1 + ((pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)^2));
                yyAritQuadTOTALS4MSS2 = (yyAritQuadTOTALS4MSS2 + ((pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)^2));
                yyAritQuadTOTALS4MSS4 = (yyAritQuadTOTALS4MSS4 + ((pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)^2));
    
                qXYTOTALS4MSS1 = (qXYTOTALS4MSS1 + ((pifTOTALS3ETM2arrayRAND[n] - xAritTOTALS4MSS1) * (pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)));
                qXYTOTALS4MSS2 = (qXYTOTALS4MSS2 + ((pifTOTALS3ETM3arrayRAND[n] - xAritTOTALS4MSS2) * (pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)));
                qXYTOTALS4MSS4 = (qXYTOTALS4MSS4 + ((pifTOTALS3ETM4arrayRAND[n] - xAritTOTALS4MSS4) * (pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)));
            }
        
            aTOTALS4MSS1 = (((xQuadTOTALS4MSS1 * yTOTALS4MSS1) - (xTOTALS4MSS1 * xyTOTALS4MSS1)) / ((minPifVAL * xQuadTOTALS4MSS1) - (xTOTALS4MSS1^2)));
            aTOTALS4MSS2 = (((xQuadTOTALS4MSS2 * yTOTALS4MSS2) - (xTOTALS4MSS2 * xyTOTALS4MSS2)) / ((minPifVAL * xQuadTOTALS4MSS2) - (xTOTALS4MSS2^2)));
            aTOTALS4MSS4 = (((xQuadTOTALS4MSS4 * yTOTALS4MSS4) - (xTOTALS4MSS4 * xyTOTALS4MSS4)) / ((minPifVAL * xQuadTOTALS4MSS4) - (xTOTALS4MSS4^2)));
            
            bTOTALS4MSS1 = qXYTOTALS4MSS1 / xxAritQuadTOTALS4MSS1;
            bTOTALS4MSS2 = qXYTOTALS4MSS2 / xxAritQuadTOTALS4MSS2;
            bTOTALS4MSS4 = qXYTOTALS4MSS4 / xxAritQuadTOTALS4MSS4;
    
            rTOTALS4MSS1 = (qXYTOTALS4MSS1 / ((xxAritQuadTOTALS4MSS1 * yyAritQuadTOTALS4MSS1)^0.5));
            rTOTALS4MSS2 = (qXYTOTALS4MSS2 / ((xxAritQuadTOTALS4MSS2 * yyAritQuadTOTALS4MSS2)^0.5));
            rTOTALS4MSS4 = (qXYTOTALS4MSS4 / ((xxAritQuadTOTALS4MSS4 * yyAritQuadTOTALS4MSS4)^0.5));
    
            rQuadTOTALS4MSS1 = ((rTOTALS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4MSS2 = ((rTOTALS4MSS2^2) * 100);
            rQuadTOTALS4MSS4 = ((rTOTALS4MSS4^2) * 100);
        
            syxTOTALS4MSS1 = (((yyAritQuadTOTALS4MSS1 - ((qXYTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS2 = (((yyAritQuadTOTALS4MSS2 - ((qXYTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS4 = (((yyAritQuadTOTALS4MSS4 - ((qXYTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4MSS1 = (((syxTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)^0.5);
            bStandTOTALS4MSS2 = (((syxTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)^0.5);
            bStandTOTALS4MSS4 = (((syxTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)^0.5);
    
            aStandTOTALS4MSS1 = (bStandTOTALS4MSS1 * ((xQuadTOTALS4MSS1 / minPifVAL)^0.5));
            aStandTOTALS4MSS2 = (bStandTOTALS4MSS2 * ((xQuadTOTALS4MSS2 / minPifVAL)^0.5));
            aStandTOTALS4MSS4 = (bStandTOTALS4MSS4 * ((xQuadTOTALS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS1, bTOTALS4MSS1, rTOTALS4MSS1, rQuadTOTALS4MSS1, aStandTOTALS4MSS1, bStandTOTALS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS2, bTOTALS4MSS2, rTOTALS4MSS2, rQuadTOTALS4MSS2, aStandTOTALS4MSS2, bStandTOTALS4MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS4, bTOTALS4MSS4, rTOTALS4MSS4, rQuadTOTALS4MSS4, aStandTOTALS4MSS4, bStandTOTALS4MSS4);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS4MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS4MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS2arrayRAND[minPifVAL]);
        
            printf("MSS4: %12f ", pifTOTALS4MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aTOTALS4MSS1 + (bTOTALS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aTOTALS4MSS2 + (bTOTALS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = REFS4MSS3[i,j];
                    OUT4MSS4[i,j] = (aTOTALS4MSS4 + (bTOTALS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT4MSS1);
        	CreatePyramid(OUT4MSS2);
        	CreatePyramid(OUT4MSS3);
        	CreatePyramid(OUT4MSS4);
        
        	CreateHistogram(OUT4MSS1);
        	CreateHistogram(OUT4MSS2);
        	CreateHistogram(OUT4MSS3);
        	CreateHistogram(OUT4MSS4);
        
        	CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
        }
        
        else if ( sensors3 == 6 )
        {
        printf("Scene 3 - Master Scene (TM):\n");
        printf("Scene 3 array values used for regression computation:\n");
    
        printf("TM1: %12f ", pifTOTALS3TM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS3TM1arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS3TM1arrayRAND[minPifVAL]);
    
        printf("TM2: %12f ", pifTOTALS3TM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS3TM2arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS3TM2arrayRAND[minPifVAL]);
    
        printf("TM3: %12f ", pifTOTALS3TM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS3TM3arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS3TM3arrayRAND[minPifVAL]);
    
        printf("TM4: %12f ", pifTOTALS3TM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS3TM4arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS3TM4arrayRAND[minPifVAL]);
    
        printf("TM5: %12f ", pifTOTALS3TM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS3TM5arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS3TM5arrayRAND[minPifVAL]);
    
        printf("TM7: %12f ", pifTOTALS3TM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS3TM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifTOTALS3TM7arrayRAND[minPifVAL]);   
            
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                OUT3TM1[i,j] = REFS3TM1[i,j];
                OUT3TM2[i,j] = REFS3TM2[i,j];
                OUT3TM3[i,j] = REFS3TM3[i,j];
                OUT3TM4[i,j] = REFS3TM4[i,j];
                OUT3TM5[i,j] = REFS3TM5[i,j];
                OUT3TM7[i,j] = REFS3TM7[i,j];
                }
            }
        
        CreatePyramid(OUT3TM1);
        CreatePyramid(OUT3TM2);
        CreatePyramid(OUT3TM3);
        CreatePyramid(OUT3TM4);
        CreatePyramid(OUT3TM5);
        CreatePyramid(OUT3TM7);
    
        CreateHistogram(OUT3TM1);
        CreateHistogram(OUT3TM2);
        CreateHistogram(OUT3TM3);
        CreateHistogram(OUT3TM4);
        CreateHistogram(OUT3TM5);
        CreateHistogram(OUT3TM7);
        
        CloseRaster(REFS3TM1);
        CloseRaster(REFS3TM2);
        CloseRaster(REFS3TM3);
        CloseRaster(REFS3TM4);
        CloseRaster(REFS3TM5);
        CloseRaster(REFS3TM7);
    
        CloseRaster(OUT3TM1);
        CloseRaster(OUT3TM2);
        CloseRaster(OUT3TM3);
        CloseRaster(OUT3TM4);
        CloseRaster(OUT3TM5);
        CloseRaster(OUT3TM7);
    
        printf("Scene 3 (Master) output was written, histogram created and pyramid written\n\n\n");
        
            if ( sensors1 == 7 )
            {
            numeric xAritTOTALS1ETM1, xAritTOTALS1ETM2, xAritTOTALS1ETM3, xAritTOTALS1ETM4, xAritTOTALS1ETM5, xAritTOTALS1ETM7;
            numeric yAritTOTALS1ETM1, yAritTOTALS1ETM2, yAritTOTALS1ETM3, yAritTOTALS1ETM4, yAritTOTALS1ETM5, yAritTOTALS1ETM7;
    
            numeric aTOTALS1ETM1, aTOTALS1ETM2, aTOTALS1ETM3, aTOTALS1ETM4, aTOTALS1ETM5, aTOTALS1ETM7;
            numeric bTOTALS1ETM1, bTOTALS1ETM2, bTOTALS1ETM3, bTOTALS1ETM4, bTOTALS1ETM5, bTOTALS1ETM7;
            numeric rTOTALS1ETM1, rTOTALS1ETM2, rTOTALS1ETM3, rTOTALS1ETM4, rTOTALS1ETM5, rTOTALS1ETM7;
            numeric rQuadTOTALS1ETM1, rQuadTOTALS1ETM2, rQuadTOTALS1ETM3, rQuadTOTALS1ETM4, rQuadTOTALS1ETM5, rQuadTOTALS1ETM7;
            numeric syxTOTALS1ETM1, syxTOTALS1ETM2, syxTOTALS1ETM3, syxTOTALS1ETM4, syxTOTALS1ETM5, syxTOTALS1ETM7;
            numeric bStandTOTALS1ETM1, bStandTOTALS1ETM2, bStandTOTALS1ETM3, bStandTOTALS1ETM4, bStandTOTALS1ETM5, bStandTOTALS1ETM7;
            numeric aStandTOTALS1ETM1, aStandTOTALS1ETM2, aStandTOTALS1ETM3, aStandTOTALS1ETM4, aStandTOTALS1ETM5, aStandTOTALS1ETM7;
    
            numeric xTOTALS1ETM1 = 0;
            numeric xTOTALS1ETM2 = 0;
            numeric xTOTALS1ETM3 = 0;
            numeric xTOTALS1ETM4 = 0;
            numeric xTOTALS1ETM5 = 0;
            numeric xTOTALS1ETM7 = 0;
    
            numeric xQuadTOTALS1ETM1 = 0;
            numeric xQuadTOTALS1ETM2 = 0;
            numeric xQuadTOTALS1ETM3 = 0;
            numeric xQuadTOTALS1ETM4 = 0;
            numeric xQuadTOTALS1ETM5 = 0;
            numeric xQuadTOTALS1ETM7 = 0;
    
            numeric yTOTALS1ETM1 = 0;
            numeric yTOTALS1ETM2 = 0;
            numeric yTOTALS1ETM3 = 0;
            numeric yTOTALS1ETM4 = 0;
            numeric yTOTALS1ETM5 = 0;
            numeric yTOTALS1ETM7 = 0;
    
            numeric yQuadTOTALS1ETM1 = 0;
            numeric yQuadTOTALS1ETM2 = 0;
            numeric yQuadTOTALS1ETM3 = 0;
            numeric yQuadTOTALS1ETM4 = 0;
            numeric yQuadTOTALS1ETM5 = 0;
            numeric yQuadTOTALS1ETM7 = 0;
    
            numeric xyTOTALS1ETM1 = 0;
            numeric xyTOTALS1ETM2 = 0;
            numeric xyTOTALS1ETM3 = 0;
            numeric xyTOTALS1ETM4 = 0;
            numeric xyTOTALS1ETM5 = 0;
            numeric xyTOTALS1ETM7 = 0;
    
            numeric xxAritQuadTOTALS1ETM1 = 0;
            numeric xxAritQuadTOTALS1ETM2 = 0;
            numeric xxAritQuadTOTALS1ETM3 = 0;
            numeric xxAritQuadTOTALS1ETM4 = 0;
            numeric xxAritQuadTOTALS1ETM5 = 0;
            numeric xxAritQuadTOTALS1ETM7 = 0;
    
            numeric yyAritQuadTOTALS1ETM1 = 0;
            numeric yyAritQuadTOTALS1ETM2 = 0;
            numeric yyAritQuadTOTALS1ETM3 = 0;
            numeric yyAritQuadTOTALS1ETM4 = 0;
            numeric yyAritQuadTOTALS1ETM5 = 0;
            numeric yyAritQuadTOTALS1ETM7 = 0;
    
            numeric qXYTOTALS1ETM1 = 0;
            numeric qXYTOTALS1ETM2 = 0;
            numeric qXYTOTALS1ETM3 = 0;
            numeric qXYTOTALS1ETM4 = 0;
            numeric qXYTOTALS1ETM5 = 0;
            numeric qXYTOTALS1ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS1ETM1 = xTOTALS1ETM1 + pifTOTALS3TM1arrayRAND[m];
                xTOTALS1ETM2 = xTOTALS1ETM2 + pifTOTALS3TM2arrayRAND[m];
                xTOTALS1ETM3 = xTOTALS1ETM3 + pifTOTALS3TM3arrayRAND[m];
                xTOTALS1ETM4 = xTOTALS1ETM4 + pifTOTALS3TM4arrayRAND[m];
                xTOTALS1ETM5 = xTOTALS1ETM5 + pifTOTALS3TM5arrayRAND[m];
                xTOTALS1ETM7 = xTOTALS1ETM7 + pifTOTALS3TM7arrayRAND[m];
    
                xQuadTOTALS1ETM1 = (xQuadTOTALS1ETM1 + (pifTOTALS3TM1arrayRAND[m]^2));
                xQuadTOTALS1ETM2 = (xQuadTOTALS1ETM2 + (pifTOTALS3TM2arrayRAND[m]^2));
                xQuadTOTALS1ETM3 = (xQuadTOTALS1ETM3 + (pifTOTALS3TM3arrayRAND[m]^2));
                xQuadTOTALS1ETM4 = (xQuadTOTALS1ETM4 + (pifTOTALS3TM4arrayRAND[m]^2));
                xQuadTOTALS1ETM5 = (xQuadTOTALS1ETM5 + (pifTOTALS3TM5arrayRAND[m]^2));
                xQuadTOTALS1ETM7 = (xQuadTOTALS1ETM7 + (pifTOTALS3TM7arrayRAND[m]^2));
    
                yTOTALS1ETM1 = yTOTALS1ETM1 + pifTOTALS1ETM1arrayRAND[m];
                yTOTALS1ETM2 = yTOTALS1ETM2 + pifTOTALS1ETM2arrayRAND[m];
                yTOTALS1ETM3 = yTOTALS1ETM3 + pifTOTALS1ETM3arrayRAND[m];
                yTOTALS1ETM4 = yTOTALS1ETM4 + pifTOTALS1ETM4arrayRAND[m];
                yTOTALS1ETM5 = yTOTALS1ETM5 + pifTOTALS1ETM5arrayRAND[m];
                yTOTALS1ETM7 = yTOTALS1ETM7 + pifTOTALS1ETM7arrayRAND[m];
                
                yQuadTOTALS1ETM1 = (yQuadTOTALS1ETM1 + (pifTOTALS1ETM1arrayRAND[m]^2));
                yQuadTOTALS1ETM2 = (yQuadTOTALS1ETM2 + (pifTOTALS1ETM2arrayRAND[m]^2));
                yQuadTOTALS1ETM3 = (yQuadTOTALS1ETM3 + (pifTOTALS1ETM3arrayRAND[m]^2));
                yQuadTOTALS1ETM4 = (yQuadTOTALS1ETM4 + (pifTOTALS1ETM4arrayRAND[m]^2));
                yQuadTOTALS1ETM5 = (yQuadTOTALS1ETM5 + (pifTOTALS1ETM5arrayRAND[m]^2));
                yQuadTOTALS1ETM7 = (yQuadTOTALS1ETM7 + (pifTOTALS1ETM7arrayRAND[m]^2));
    
                xyTOTALS1ETM1 = (xyTOTALS1ETM1 + (pifTOTALS3TM1arrayRAND[m] * pifTOTALS1ETM1arrayRAND[m]));
                xyTOTALS1ETM2 = (xyTOTALS1ETM2 + (pifTOTALS3TM2arrayRAND[m] * pifTOTALS1ETM2arrayRAND[m]));
                xyTOTALS1ETM3 = (xyTOTALS1ETM3 + (pifTOTALS3TM3arrayRAND[m] * pifTOTALS1ETM3arrayRAND[m]));
                xyTOTALS1ETM4 = (xyTOTALS1ETM4 + (pifTOTALS3TM4arrayRAND[m] * pifTOTALS1ETM4arrayRAND[m]));
                xyTOTALS1ETM5 = (xyTOTALS1ETM5 + (pifTOTALS3TM5arrayRAND[m] * pifTOTALS1ETM5arrayRAND[m]));
                xyTOTALS1ETM7 = (xyTOTALS1ETM7 + (pifTOTALS3TM7arrayRAND[m] * pifTOTALS1ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS1ETM1 = xTOTALS1ETM1 / minPifVAL;
            xAritTOTALS1ETM2 = xTOTALS1ETM2 / minPifVAL;
            xAritTOTALS1ETM3 = xTOTALS1ETM3 / minPifVAL;
            xAritTOTALS1ETM4 = xTOTALS1ETM4 / minPifVAL;
            xAritTOTALS1ETM5 = xTOTALS1ETM5 / minPifVAL;
            xAritTOTALS1ETM7 = xTOTALS1ETM7 / minPifVAL;
    
            yAritTOTALS1ETM1 = yTOTALS1ETM1 / minPifVAL;
            yAritTOTALS1ETM2 = yTOTALS1ETM2 / minPifVAL;
            yAritTOTALS1ETM3 = yTOTALS1ETM3 / minPifVAL;
            yAritTOTALS1ETM4 = yTOTALS1ETM4 / minPifVAL;
            yAritTOTALS1ETM5 = yTOTALS1ETM5 / minPifVAL;
            yAritTOTALS1ETM7 = yTOTALS1ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1ETM1 = (xxAritQuadTOTALS1ETM1 + ((pifTOTALS3TM1arrayRAND[n] - xAritTOTALS1ETM1)^2));
                xxAritQuadTOTALS1ETM2 = (xxAritQuadTOTALS1ETM2 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS1ETM2)^2));
                xxAritQuadTOTALS1ETM3 = (xxAritQuadTOTALS1ETM3 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS1ETM3)^2));
                xxAritQuadTOTALS1ETM4 = (xxAritQuadTOTALS1ETM4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS1ETM4)^2));
                xxAritQuadTOTALS1ETM5 = (xxAritQuadTOTALS1ETM5 + ((pifTOTALS3TM5arrayRAND[n] - xAritTOTALS1ETM5)^2));
                xxAritQuadTOTALS1ETM7 = (xxAritQuadTOTALS1ETM7 + ((pifTOTALS3TM7arrayRAND[n] - xAritTOTALS1ETM7)^2));
    
                yyAritQuadTOTALS1ETM1 = (yyAritQuadTOTALS1ETM1 + ((pifTOTALS1ETM1arrayRAND[n] - yAritTOTALS1ETM1)^2));
                yyAritQuadTOTALS1ETM2 = (yyAritQuadTOTALS1ETM2 + ((pifTOTALS1ETM2arrayRAND[n] - yAritTOTALS1ETM2)^2));
                yyAritQuadTOTALS1ETM3 = (yyAritQuadTOTALS1ETM3 + ((pifTOTALS1ETM3arrayRAND[n] - yAritTOTALS1ETM3)^2));
                yyAritQuadTOTALS1ETM4 = (yyAritQuadTOTALS1ETM4 + ((pifTOTALS1ETM4arrayRAND[n] - yAritTOTALS1ETM4)^2));
                yyAritQuadTOTALS1ETM5 = (yyAritQuadTOTALS1ETM5 + ((pifTOTALS1ETM5arrayRAND[n] - yAritTOTALS1ETM5)^2));
                yyAritQuadTOTALS1ETM7 = (yyAritQuadTOTALS1ETM7 + ((pifTOTALS1ETM7arrayRAND[n] - yAritTOTALS1ETM7)^2));
    
                qXYTOTALS1ETM1 = (qXYTOTALS1ETM1 + ((pifTOTALS3TM1arrayRAND[n] - xAritTOTALS1ETM1) * (pifTOTALS1ETM1arrayRAND[n] - yAritTOTALS1ETM1)));
                qXYTOTALS1ETM2 = (qXYTOTALS1ETM2 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS1ETM2) * (pifTOTALS1ETM2arrayRAND[n] - yAritTOTALS1ETM2)));
                qXYTOTALS1ETM3 = (qXYTOTALS1ETM3 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS1ETM3) * (pifTOTALS1ETM3arrayRAND[n] - yAritTOTALS1ETM3)));
                qXYTOTALS1ETM4 = (qXYTOTALS1ETM4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS1ETM4) * (pifTOTALS1ETM4arrayRAND[n] - yAritTOTALS1ETM4)));
                qXYTOTALS1ETM5 = (qXYTOTALS1ETM5 + ((pifTOTALS3TM5arrayRAND[n] - xAritTOTALS1ETM5) * (pifTOTALS1ETM5arrayRAND[n] - yAritTOTALS1ETM5)));
                qXYTOTALS1ETM7 = (qXYTOTALS1ETM7 + ((pifTOTALS3TM7arrayRAND[n] - xAritTOTALS1ETM7) * (pifTOTALS1ETM7arrayRAND[n] - yAritTOTALS1ETM7)));
            }
        
            aTOTALS1ETM1 = (((xQuadTOTALS1ETM1 * yTOTALS1ETM1) - (xTOTALS1ETM1 * xyTOTALS1ETM1)) / ((minPifVAL * xQuadTOTALS1ETM1) - (xTOTALS1ETM1^2)));
            aTOTALS1ETM2 = (((xQuadTOTALS1ETM2 * yTOTALS1ETM2) - (xTOTALS1ETM2 * xyTOTALS1ETM2)) / ((minPifVAL * xQuadTOTALS1ETM2) - (xTOTALS1ETM2^2)));
            aTOTALS1ETM3 = (((xQuadTOTALS1ETM3 * yTOTALS1ETM3) - (xTOTALS1ETM3 * xyTOTALS1ETM3)) / ((minPifVAL * xQuadTOTALS1ETM3) - (xTOTALS1ETM3^2)));
            aTOTALS1ETM4 = (((xQuadTOTALS1ETM4 * yTOTALS1ETM4) - (xTOTALS1ETM4 * xyTOTALS1ETM4)) / ((minPifVAL * xQuadTOTALS1ETM4) - (xTOTALS1ETM4^2)));
            aTOTALS1ETM5 = (((xQuadTOTALS1ETM5 * yTOTALS1ETM5) - (xTOTALS1ETM5 * xyTOTALS1ETM5)) / ((minPifVAL * xQuadTOTALS1ETM5) - (xTOTALS1ETM5^2)));
            aTOTALS1ETM7 = (((xQuadTOTALS1ETM7 * yTOTALS1ETM7) - (xTOTALS1ETM7 * xyTOTALS1ETM7)) / ((minPifVAL * xQuadTOTALS1ETM7) - (xTOTALS1ETM7^2)));
            
            bTOTALS1ETM1 = qXYTOTALS1ETM1 / xxAritQuadTOTALS1ETM1;
            bTOTALS1ETM2 = qXYTOTALS1ETM2 / xxAritQuadTOTALS1ETM2;
            bTOTALS1ETM3 = qXYTOTALS1ETM3 / xxAritQuadTOTALS1ETM3;
            bTOTALS1ETM4 = qXYTOTALS1ETM4 / xxAritQuadTOTALS1ETM4;
            bTOTALS1ETM5 = qXYTOTALS1ETM5 / xxAritQuadTOTALS1ETM5;
            bTOTALS1ETM7 = qXYTOTALS1ETM7 / xxAritQuadTOTALS1ETM7;
    
            rTOTALS1ETM1 = (qXYTOTALS1ETM1 / ((xxAritQuadTOTALS1ETM1 * yyAritQuadTOTALS1ETM1)^0.5));
            rTOTALS1ETM2 = (qXYTOTALS1ETM2 / ((xxAritQuadTOTALS1ETM2 * yyAritQuadTOTALS1ETM2)^0.5));
            rTOTALS1ETM3 = (qXYTOTALS1ETM3 / ((xxAritQuadTOTALS1ETM3 * yyAritQuadTOTALS1ETM3)^0.5));
            rTOTALS1ETM4 = (qXYTOTALS1ETM4 / ((xxAritQuadTOTALS1ETM4 * yyAritQuadTOTALS1ETM4)^0.5));
            rTOTALS1ETM5 = (qXYTOTALS1ETM5 / ((xxAritQuadTOTALS1ETM5 * yyAritQuadTOTALS1ETM5)^0.5));
            rTOTALS1ETM7 = (qXYTOTALS1ETM7 / ((xxAritQuadTOTALS1ETM7 * yyAritQuadTOTALS1ETM7)^0.5));
    
            rQuadTOTALS1ETM1 = ((rTOTALS1ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1ETM2 = ((rTOTALS1ETM2^2) * 100);
            rQuadTOTALS1ETM3 = ((rTOTALS1ETM3^2) * 100);
            rQuadTOTALS1ETM4 = ((rTOTALS1ETM4^2) * 100);
            rQuadTOTALS1ETM5 = ((rTOTALS1ETM5^2) * 100);
            rQuadTOTALS1ETM7 = ((rTOTALS1ETM7^2) * 100);
        
            syxTOTALS1ETM1 = (((yyAritQuadTOTALS1ETM1 - ((qXYTOTALS1ETM1^2) / xxAritQuadTOTALS1ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM2 = (((yyAritQuadTOTALS1ETM2 - ((qXYTOTALS1ETM2^2) / xxAritQuadTOTALS1ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM3 = (((yyAritQuadTOTALS1ETM3 - ((qXYTOTALS1ETM3^2) / xxAritQuadTOTALS1ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM4 = (((yyAritQuadTOTALS1ETM4 - ((qXYTOTALS1ETM4^2) / xxAritQuadTOTALS1ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM5 = (((yyAritQuadTOTALS1ETM5 - ((qXYTOTALS1ETM5^2) / xxAritQuadTOTALS1ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM7 = (((yyAritQuadTOTALS1ETM7 - ((qXYTOTALS1ETM7^2) / xxAritQuadTOTALS1ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1ETM1 = (((syxTOTALS1ETM1^2) / xxAritQuadTOTALS1ETM1)^0.5);
            bStandTOTALS1ETM2 = (((syxTOTALS1ETM2^2) / xxAritQuadTOTALS1ETM2)^0.5);
            bStandTOTALS1ETM3 = (((syxTOTALS1ETM3^2) / xxAritQuadTOTALS1ETM3)^0.5);
            bStandTOTALS1ETM4 = (((syxTOTALS1ETM4^2) / xxAritQuadTOTALS1ETM4)^0.5);
            bStandTOTALS1ETM5 = (((syxTOTALS1ETM5^2) / xxAritQuadTOTALS1ETM5)^0.5);
            bStandTOTALS1ETM7 = (((syxTOTALS1ETM7^2) / xxAritQuadTOTALS1ETM7)^0.5);
    
            aStandTOTALS1ETM1 = (bStandTOTALS1ETM1 * ((xQuadTOTALS1ETM1 / minPifVAL)^0.5));
            aStandTOTALS1ETM2 = (bStandTOTALS1ETM2 * ((xQuadTOTALS1ETM2 / minPifVAL)^0.5));
            aStandTOTALS1ETM3 = (bStandTOTALS1ETM3 * ((xQuadTOTALS1ETM3 / minPifVAL)^0.5));
            aStandTOTALS1ETM4 = (bStandTOTALS1ETM4 * ((xQuadTOTALS1ETM4 / minPifVAL)^0.5));
            aStandTOTALS1ETM5 = (bStandTOTALS1ETM5 * ((xQuadTOTALS1ETM5 / minPifVAL)^0.5));
            aStandTOTALS1ETM7 = (bStandTOTALS1ETM7 * ((xQuadTOTALS1ETM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM1, bTOTALS1ETM1, rTOTALS1ETM1, rQuadTOTALS1ETM1, aStandTOTALS1ETM1, bStandTOTALS1ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM2, bTOTALS1ETM2, rTOTALS1ETM2, rQuadTOTALS1ETM2, aStandTOTALS1ETM2, bStandTOTALS1ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM3, bTOTALS1ETM3, rTOTALS1ETM3, rQuadTOTALS1ETM3, aStandTOTALS1ETM3, bStandTOTALS1ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM4, bTOTALS1ETM4, rTOTALS1ETM4, rQuadTOTALS1ETM4, aStandTOTALS1ETM4, bStandTOTALS1ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM5, bTOTALS1ETM5, rTOTALS1ETM5, rQuadTOTALS1ETM5, aStandTOTALS1ETM5, bStandTOTALS1ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS1ETM7, bTOTALS1ETM7, rTOTALS1ETM7, rQuadTOTALS1ETM7, aStandTOTALS1ETM7, bStandTOTALS1ETM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS1ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS1ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS1ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS1ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS1ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS1ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS1ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT1ETM1[i,j] = (aTOTALS1ETM1 + (bTOTALS1ETM1 * REFS1ETM1[i,j]));
                    OUT1ETM2[i,j] = (aTOTALS1ETM2 + (bTOTALS1ETM2 * REFS1ETM2[i,j]));
                    OUT1ETM3[i,j] = (aTOTALS1ETM3 + (bTOTALS1ETM3 * REFS1ETM3[i,j]));
                    OUT1ETM4[i,j] = (aTOTALS1ETM4 + (bTOTALS1ETM4 * REFS1ETM4[i,j]));
                    OUT1ETM5[i,j] = (aTOTALS1ETM5 + (bTOTALS1ETM5 * REFS1ETM5[i,j]));
                    OUT1ETM7[i,j] = (aTOTALS1ETM7 + (bTOTALS1ETM7 * REFS1ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1ETM1);
        	CreatePyramid(OUT1ETM2);
        	CreatePyramid(OUT1ETM3);
        	CreatePyramid(OUT1ETM4);
        	CreatePyramid(OUT1ETM5);
        	CreatePyramid(OUT1ETM7);
        
        	CreateHistogram(OUT1ETM1);
        	CreateHistogram(OUT1ETM2);
        	CreateHistogram(OUT1ETM3);
        	CreateHistogram(OUT1ETM4);
        	CreateHistogram(OUT1ETM5);
        	CreateHistogram(OUT1ETM7);
        
        	CloseRaster(REFS1ETM1);
            CloseRaster(REFS1ETM2);
            CloseRaster(REFS1ETM3);
            CloseRaster(REFS1ETM4);
            CloseRaster(REFS1ETM5);
            CloseRaster(REFS1ETM7);
    
            CloseRaster(OUT1ETM1);
            CloseRaster(OUT1ETM2);
            CloseRaster(OUT1ETM3);
            CloseRaster(OUT1ETM4);
            CloseRaster(OUT1ETM5);
            CloseRaster(OUT1ETM7);
        
        	printf("Scene 1 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors1 == 6 )
            {
            numeric xAritTOTALS1TM1, xAritTOTALS1TM2, xAritTOTALS1TM3, xAritTOTALS1TM4, xAritTOTALS1TM5, xAritTOTALS1TM7;
            numeric yAritTOTALS1TM1, yAritTOTALS1TM2, yAritTOTALS1TM3, yAritTOTALS1TM4, yAritTOTALS1TM5, yAritTOTALS1TM7;
    
            numeric aTOTALS1TM1, aTOTALS1TM2, aTOTALS1TM3, aTOTALS1TM4, aTOTALS1TM5, aTOTALS1TM7;
            numeric bTOTALS1TM1, bTOTALS1TM2, bTOTALS1TM3, bTOTALS1TM4, bTOTALS1TM5, bTOTALS1TM7;
            numeric rTOTALS1TM1, rTOTALS1TM2, rTOTALS1TM3, rTOTALS1TM4, rTOTALS1TM5, rTOTALS1TM7;
            numeric rQuadTOTALS1TM1, rQuadTOTALS1TM2, rQuadTOTALS1TM3, rQuadTOTALS1TM4, rQuadTOTALS1TM5, rQuadTOTALS1TM7;
            numeric syxTOTALS1TM1, syxTOTALS1TM2, syxTOTALS1TM3, syxTOTALS1TM4, syxTOTALS1TM5, syxTOTALS1TM7;
            numeric bStandTOTALS1TM1, bStandTOTALS1TM2, bStandTOTALS1TM3, bStandTOTALS1TM4, bStandTOTALS1TM5, bStandTOTALS1TM7;
            numeric aStandTOTALS1TM1, aStandTOTALS1TM2, aStandTOTALS1TM3, aStandTOTALS1TM4, aStandTOTALS1TM5, aStandTOTALS1TM7;
    
            numeric xTOTALS1TM1 = 0;
            numeric xTOTALS1TM2 = 0;
            numeric xTOTALS1TM3 = 0;
            numeric xTOTALS1TM4 = 0;
            numeric xTOTALS1TM5 = 0;
            numeric xTOTALS1TM7 = 0;
    
            numeric xQuadTOTALS1TM1 = 0;
            numeric xQuadTOTALS1TM2 = 0;
            numeric xQuadTOTALS1TM3 = 0;
            numeric xQuadTOTALS1TM4 = 0;
            numeric xQuadTOTALS1TM5 = 0;
            numeric xQuadTOTALS1TM7 = 0;
    
            numeric yTOTALS1TM1 = 0;
            numeric yTOTALS1TM2 = 0;
            numeric yTOTALS1TM3 = 0;
            numeric yTOTALS1TM4 = 0;
            numeric yTOTALS1TM5 = 0;
            numeric yTOTALS1TM7 = 0;
    
            numeric yQuadTOTALS1TM1 = 0;
            numeric yQuadTOTALS1TM2 = 0;
            numeric yQuadTOTALS1TM3 = 0;
            numeric yQuadTOTALS1TM4 = 0;
            numeric yQuadTOTALS1TM5 = 0;
            numeric yQuadTOTALS1TM7 = 0;
    
            numeric xyTOTALS1TM1 = 0;
            numeric xyTOTALS1TM2 = 0;
            numeric xyTOTALS1TM3 = 0;
            numeric xyTOTALS1TM4 = 0;
            numeric xyTOTALS1TM5 = 0;
            numeric xyTOTALS1TM7 = 0;
    
            numeric xxAritQuadTOTALS1TM1 = 0;
            numeric xxAritQuadTOTALS1TM2 = 0;
            numeric xxAritQuadTOTALS1TM3 = 0;
            numeric xxAritQuadTOTALS1TM4 = 0;
            numeric xxAritQuadTOTALS1TM5 = 0;
            numeric xxAritQuadTOTALS1TM7 = 0;
    
            numeric yyAritQuadTOTALS1TM1 = 0;
            numeric yyAritQuadTOTALS1TM2 = 0;
            numeric yyAritQuadTOTALS1TM3 = 0;
            numeric yyAritQuadTOTALS1TM4 = 0;
            numeric yyAritQuadTOTALS1TM5 = 0;
            numeric yyAritQuadTOTALS1TM7 = 0;
    
            numeric qXYTOTALS1TM1 = 0;
            numeric qXYTOTALS1TM2 = 0;
            numeric qXYTOTALS1TM3 = 0;
            numeric qXYTOTALS1TM4 = 0;
            numeric qXYTOTALS1TM5 = 0;
            numeric qXYTOTALS1TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS1TM1 = xTOTALS1TM1 + pifTOTALS3TM1arrayRAND[m];
                xTOTALS1TM2 = xTOTALS1TM2 + pifTOTALS3TM2arrayRAND[m];
                xTOTALS1TM3 = xTOTALS1TM3 + pifTOTALS3TM3arrayRAND[m];
                xTOTALS1TM4 = xTOTALS1TM4 + pifTOTALS3TM4arrayRAND[m];
                xTOTALS1TM5 = xTOTALS1TM5 + pifTOTALS3TM5arrayRAND[m];
                xTOTALS1TM7 = xTOTALS1TM7 + pifTOTALS3TM7arrayRAND[m];
    
                xQuadTOTALS1TM1 = (xQuadTOTALS1TM1 + (pifTOTALS3TM1arrayRAND[m]^2));
                xQuadTOTALS1TM2 = (xQuadTOTALS1TM2 + (pifTOTALS3TM2arrayRAND[m]^2));
                xQuadTOTALS1TM3 = (xQuadTOTALS1TM3 + (pifTOTALS3TM3arrayRAND[m]^2));
                xQuadTOTALS1TM4 = (xQuadTOTALS1TM4 + (pifTOTALS3TM4arrayRAND[m]^2));
                xQuadTOTALS1TM5 = (xQuadTOTALS1TM5 + (pifTOTALS3TM5arrayRAND[m]^2));
                xQuadTOTALS1TM7 = (xQuadTOTALS1TM7 + (pifTOTALS3TM7arrayRAND[m]^2));
    
                yTOTALS1TM1 = yTOTALS1TM1 + pifTOTALS1TM1arrayRAND[m];
                yTOTALS1TM2 = yTOTALS1TM2 + pifTOTALS1TM2arrayRAND[m];
                yTOTALS1TM3 = yTOTALS1TM3 + pifTOTALS1TM3arrayRAND[m];
                yTOTALS1TM4 = yTOTALS1TM4 + pifTOTALS1TM4arrayRAND[m];
                yTOTALS1TM5 = yTOTALS1TM5 + pifTOTALS1TM5arrayRAND[m];
                yTOTALS1TM7 = yTOTALS1TM7 + pifTOTALS1TM7arrayRAND[m];
                
                yQuadTOTALS1TM1 = (yQuadTOTALS1TM1 + (pifTOTALS1TM1arrayRAND[m]^2));
                yQuadTOTALS1TM2 = (yQuadTOTALS1TM2 + (pifTOTALS1TM2arrayRAND[m]^2));
                yQuadTOTALS1TM3 = (yQuadTOTALS1TM3 + (pifTOTALS1TM3arrayRAND[m]^2));
                yQuadTOTALS1TM4 = (yQuadTOTALS1TM4 + (pifTOTALS1TM4arrayRAND[m]^2));
                yQuadTOTALS1TM5 = (yQuadTOTALS1TM5 + (pifTOTALS1TM5arrayRAND[m]^2));
                yQuadTOTALS1TM7 = (yQuadTOTALS1TM7 + (pifTOTALS1TM7arrayRAND[m]^2));
    
                xyTOTALS1TM1 = (xyTOTALS1TM1 + (pifTOTALS3TM1arrayRAND[m] * pifTOTALS1TM1arrayRAND[m]));
                xyTOTALS1TM2 = (xyTOTALS1TM2 + (pifTOTALS3TM2arrayRAND[m] * pifTOTALS1TM2arrayRAND[m]));
                xyTOTALS1TM3 = (xyTOTALS1TM3 + (pifTOTALS3TM3arrayRAND[m] * pifTOTALS1TM3arrayRAND[m]));
                xyTOTALS1TM4 = (xyTOTALS1TM4 + (pifTOTALS3TM4arrayRAND[m] * pifTOTALS1TM4arrayRAND[m]));
                xyTOTALS1TM5 = (xyTOTALS1TM5 + (pifTOTALS3TM5arrayRAND[m] * pifTOTALS1TM5arrayRAND[m]));
                xyTOTALS1TM7 = (xyTOTALS1TM7 + (pifTOTALS3TM7arrayRAND[m] * pifTOTALS1TM7arrayRAND[m]));
            }	
            
            xAritTOTALS1TM1 = xTOTALS1TM1 / minPifVAL;
            xAritTOTALS1TM2 = xTOTALS1TM2 / minPifVAL;
            xAritTOTALS1TM3 = xTOTALS1TM3 / minPifVAL;
            xAritTOTALS1TM4 = xTOTALS1TM4 / minPifVAL;
            xAritTOTALS1TM5 = xTOTALS1TM5 / minPifVAL;
            xAritTOTALS1TM7 = xTOTALS1TM7 / minPifVAL;
    
            yAritTOTALS1TM1 = yTOTALS1TM1 / minPifVAL;
            yAritTOTALS1TM2 = yTOTALS1TM2 / minPifVAL;
            yAritTOTALS1TM3 = yTOTALS1TM3 / minPifVAL;
            yAritTOTALS1TM4 = yTOTALS1TM4 / minPifVAL;
            yAritTOTALS1TM5 = yTOTALS1TM5 / minPifVAL;
            yAritTOTALS1TM7 = yTOTALS1TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1TM1 = (xxAritQuadTOTALS1TM1 + ((pifTOTALS3TM1arrayRAND[n] - xAritTOTALS1TM1)^2));
                xxAritQuadTOTALS1TM2 = (xxAritQuadTOTALS1TM2 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS1TM2)^2));
                xxAritQuadTOTALS1TM3 = (xxAritQuadTOTALS1TM3 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS1TM3)^2));
                xxAritQuadTOTALS1TM4 = (xxAritQuadTOTALS1TM4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS1TM4)^2));
                xxAritQuadTOTALS1TM5 = (xxAritQuadTOTALS1TM5 + ((pifTOTALS3TM5arrayRAND[n] - xAritTOTALS1TM5)^2));
                xxAritQuadTOTALS1TM7 = (xxAritQuadTOTALS1TM7 + ((pifTOTALS3TM7arrayRAND[n] - xAritTOTALS1TM7)^2));
    
                yyAritQuadTOTALS1TM1 = (yyAritQuadTOTALS1TM1 + ((pifTOTALS1TM1arrayRAND[n] - yAritTOTALS1TM1)^2));
                yyAritQuadTOTALS1TM2 = (yyAritQuadTOTALS1TM2 + ((pifTOTALS1TM2arrayRAND[n] - yAritTOTALS1TM2)^2));
                yyAritQuadTOTALS1TM3 = (yyAritQuadTOTALS1TM3 + ((pifTOTALS1TM3arrayRAND[n] - yAritTOTALS1TM3)^2));
                yyAritQuadTOTALS1TM4 = (yyAritQuadTOTALS1TM4 + ((pifTOTALS1TM4arrayRAND[n] - yAritTOTALS1TM4)^2));
                yyAritQuadTOTALS1TM5 = (yyAritQuadTOTALS1TM5 + ((pifTOTALS1TM5arrayRAND[n] - yAritTOTALS1TM5)^2));
                yyAritQuadTOTALS1TM7 = (yyAritQuadTOTALS1TM7 + ((pifTOTALS1TM7arrayRAND[n] - yAritTOTALS1TM7)^2));
    
                qXYTOTALS1TM1 = (qXYTOTALS1TM1 + ((pifTOTALS3TM1arrayRAND[n] - xAritTOTALS1TM1) * (pifTOTALS1TM1arrayRAND[n] - yAritTOTALS1TM1)));
                qXYTOTALS1TM2 = (qXYTOTALS1TM2 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS1TM2) * (pifTOTALS1TM2arrayRAND[n] - yAritTOTALS1TM2)));
                qXYTOTALS1TM3 = (qXYTOTALS1TM3 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS1TM3) * (pifTOTALS1TM3arrayRAND[n] - yAritTOTALS1TM3)));
                qXYTOTALS1TM4 = (qXYTOTALS1TM4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS1TM4) * (pifTOTALS1TM4arrayRAND[n] - yAritTOTALS1TM4)));
                qXYTOTALS1TM5 = (qXYTOTALS1TM5 + ((pifTOTALS3TM5arrayRAND[n] - xAritTOTALS1TM5) * (pifTOTALS1TM5arrayRAND[n] - yAritTOTALS1TM5)));
                qXYTOTALS1TM7 = (qXYTOTALS1TM7 + ((pifTOTALS3TM7arrayRAND[n] - xAritTOTALS1TM7) * (pifTOTALS1TM7arrayRAND[n] - yAritTOTALS1TM7)));
            }
        
            aTOTALS1TM1 = (((xQuadTOTALS1TM1 * yTOTALS1TM1) - (xTOTALS1TM1 * xyTOTALS1TM1)) / ((minPifVAL * xQuadTOTALS1TM1) - (xTOTALS1TM1^2)));
            aTOTALS1TM2 = (((xQuadTOTALS1TM2 * yTOTALS1TM2) - (xTOTALS1TM2 * xyTOTALS1TM2)) / ((minPifVAL * xQuadTOTALS1TM2) - (xTOTALS1TM2^2)));
            aTOTALS1TM3 = (((xQuadTOTALS1TM3 * yTOTALS1TM3) - (xTOTALS1TM3 * xyTOTALS1TM3)) / ((minPifVAL * xQuadTOTALS1TM3) - (xTOTALS1TM3^2)));
            aTOTALS1TM4 = (((xQuadTOTALS1TM4 * yTOTALS1TM4) - (xTOTALS1TM4 * xyTOTALS1TM4)) / ((minPifVAL * xQuadTOTALS1TM4) - (xTOTALS1TM4^2)));
            aTOTALS1TM5 = (((xQuadTOTALS1TM5 * yTOTALS1TM5) - (xTOTALS1TM5 * xyTOTALS1TM5)) / ((minPifVAL * xQuadTOTALS1TM5) - (xTOTALS1TM5^2)));
            aTOTALS1TM7 = (((xQuadTOTALS1TM7 * yTOTALS1TM7) - (xTOTALS1TM7 * xyTOTALS1TM7)) / ((minPifVAL * xQuadTOTALS1TM7) - (xTOTALS1TM7^2)));
            
            bTOTALS1TM1 = qXYTOTALS1TM1 / xxAritQuadTOTALS1TM1;
            bTOTALS1TM2 = qXYTOTALS1TM2 / xxAritQuadTOTALS1TM2;
            bTOTALS1TM3 = qXYTOTALS1TM3 / xxAritQuadTOTALS1TM3;
            bTOTALS1TM4 = qXYTOTALS1TM4 / xxAritQuadTOTALS1TM4;
            bTOTALS1TM5 = qXYTOTALS1TM5 / xxAritQuadTOTALS1TM5;
            bTOTALS1TM7 = qXYTOTALS1TM7 / xxAritQuadTOTALS1TM7;
    
            rTOTALS1TM1 = (qXYTOTALS1TM1 / ((xxAritQuadTOTALS1TM1 * yyAritQuadTOTALS1TM1)^0.5));
            rTOTALS1TM2 = (qXYTOTALS1TM2 / ((xxAritQuadTOTALS1TM2 * yyAritQuadTOTALS1TM2)^0.5));
            rTOTALS1TM3 = (qXYTOTALS1TM3 / ((xxAritQuadTOTALS1TM3 * yyAritQuadTOTALS1TM3)^0.5));
            rTOTALS1TM4 = (qXYTOTALS1TM4 / ((xxAritQuadTOTALS1TM4 * yyAritQuadTOTALS1TM4)^0.5));
            rTOTALS1TM5 = (qXYTOTALS1TM5 / ((xxAritQuadTOTALS1TM5 * yyAritQuadTOTALS1TM5)^0.5));
            rTOTALS1TM7 = (qXYTOTALS1TM7 / ((xxAritQuadTOTALS1TM7 * yyAritQuadTOTALS1TM7)^0.5));
    
            rQuadTOTALS1TM1 = ((rTOTALS1TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1TM2 = ((rTOTALS1TM2^2) * 100);
            rQuadTOTALS1TM3 = ((rTOTALS1TM3^2) * 100);
            rQuadTOTALS1TM4 = ((rTOTALS1TM4^2) * 100);
            rQuadTOTALS1TM5 = ((rTOTALS1TM5^2) * 100);
            rQuadTOTALS1TM7 = ((rTOTALS1TM7^2) * 100);
        
            syxTOTALS1TM1 = (((yyAritQuadTOTALS1TM1 - ((qXYTOTALS1TM1^2) / xxAritQuadTOTALS1TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM2 = (((yyAritQuadTOTALS1TM2 - ((qXYTOTALS1TM2^2) / xxAritQuadTOTALS1TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM3 = (((yyAritQuadTOTALS1TM3 - ((qXYTOTALS1TM3^2) / xxAritQuadTOTALS1TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM4 = (((yyAritQuadTOTALS1TM4 - ((qXYTOTALS1TM4^2) / xxAritQuadTOTALS1TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM5 = (((yyAritQuadTOTALS1TM5 - ((qXYTOTALS1TM5^2) / xxAritQuadTOTALS1TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM7 = (((yyAritQuadTOTALS1TM7 - ((qXYTOTALS1TM7^2) / xxAritQuadTOTALS1TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1TM1 = (((syxTOTALS1TM1^2) / xxAritQuadTOTALS1TM1)^0.5);
            bStandTOTALS1TM2 = (((syxTOTALS1TM2^2) / xxAritQuadTOTALS1TM2)^0.5);
            bStandTOTALS1TM3 = (((syxTOTALS1TM3^2) / xxAritQuadTOTALS1TM3)^0.5);
            bStandTOTALS1TM4 = (((syxTOTALS1TM4^2) / xxAritQuadTOTALS1TM4)^0.5);
            bStandTOTALS1TM5 = (((syxTOTALS1TM5^2) / xxAritQuadTOTALS1TM5)^0.5);
            bStandTOTALS1TM7 = (((syxTOTALS1TM7^2) / xxAritQuadTOTALS1TM7)^0.5);
    
            aStandTOTALS1TM1 = (bStandTOTALS1TM1 * ((xQuadTOTALS1TM1 / minPifVAL)^0.5));
            aStandTOTALS1TM2 = (bStandTOTALS1TM2 * ((xQuadTOTALS1TM2 / minPifVAL)^0.5));
            aStandTOTALS1TM3 = (bStandTOTALS1TM3 * ((xQuadTOTALS1TM3 / minPifVAL)^0.5));
            aStandTOTALS1TM4 = (bStandTOTALS1TM4 * ((xQuadTOTALS1TM4 / minPifVAL)^0.5));
            aStandTOTALS1TM5 = (bStandTOTALS1TM5 * ((xQuadTOTALS1TM5 / minPifVAL)^0.5));
            aStandTOTALS1TM7 = (bStandTOTALS1TM7 * ((xQuadTOTALS1TM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM1, bTOTALS1TM1, rTOTALS1TM1, rQuadTOTALS1TM1, aStandTOTALS1TM1, bStandTOTALS1TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM2, bTOTALS1TM2, rTOTALS1TM2, rQuadTOTALS1TM2, aStandTOTALS1TM2, bStandTOTALS1TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM3, bTOTALS1TM3, rTOTALS1TM3, rQuadTOTALS1TM3, aStandTOTALS1TM3, bStandTOTALS1TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM4, bTOTALS1TM4, rTOTALS1TM4, rQuadTOTALS1TM4, aStandTOTALS1TM4, bStandTOTALS1TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM5, bTOTALS1TM5, rTOTALS1TM5, rQuadTOTALS1TM5, aStandTOTALS1TM5, bStandTOTALS1TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS1TM7, bTOTALS1TM7, rTOTALS1TM7, rQuadTOTALS1TM7, aStandTOTALS1TM7, bStandTOTALS1TM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS1TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS1TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS1TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS1TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS1TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS1TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS1TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT1TM1[i,j] = (aTOTALS1TM1 + (bTOTALS1TM1 * REFS1TM1[i,j]));
                    OUT1TM2[i,j] = (aTOTALS1TM2 + (bTOTALS1TM2 * REFS1TM2[i,j]));
                    OUT1TM3[i,j] = (aTOTALS1TM3 + (bTOTALS1TM3 * REFS1TM3[i,j]));
                    OUT1TM4[i,j] = (aTOTALS1TM4 + (bTOTALS1TM4 * REFS1TM4[i,j]));
                    OUT1TM5[i,j] = (aTOTALS1TM5 + (bTOTALS1TM5 * REFS1TM5[i,j]));
                    OUT1TM7[i,j] = (aTOTALS1TM7 + (bTOTALS1TM7 * REFS1TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1TM1);
        	CreatePyramid(OUT1TM2);
        	CreatePyramid(OUT1TM3);
        	CreatePyramid(OUT1TM4);
        	CreatePyramid(OUT1TM5);
        	CreatePyramid(OUT1TM7);
        
        	CreateHistogram(OUT1TM1);
        	CreateHistogram(OUT1TM2);
        	CreateHistogram(OUT1TM3);
        	CreateHistogram(OUT1TM4);
        	CreateHistogram(OUT1TM5);
        	CreateHistogram(OUT1TM7);
        
        	CloseRaster(REFS1TM1);
            CloseRaster(REFS1TM2);
            CloseRaster(REFS1TM3);
            CloseRaster(REFS1TM4);
            CloseRaster(REFS1TM5);
            CloseRaster(REFS1TM7);
    
            CloseRaster(OUT1TM1);
            CloseRaster(OUT1TM2);
            CloseRaster(OUT1TM3);
            CloseRaster(OUT1TM4);
            CloseRaster(OUT1TM5);
            CloseRaster(OUT1TM7);
        
        	printf("Scene 1 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS1MSS1, xAritTOTALS1MSS2, xAritTOTALS1MSS4;
            numeric yAritTOTALS1MSS1, yAritTOTALS1MSS2, yAritTOTALS1MSS4;
    
            numeric aTOTALS1MSS1, aTOTALS1MSS2, aTOTALS1MSS4;
            numeric bTOTALS1MSS1, bTOTALS1MSS2, bTOTALS1MSS4;
            numeric rTOTALS1MSS1, rTOTALS1MSS2, rTOTALS1MSS4;
            numeric rQuadTOTALS1MSS1, rQuadTOTALS1MSS2, rQuadTOTALS1MSS4;
            numeric syxTOTALS1MSS1, syxTOTALS1MSS2, syxTOTALS1MSS4;
            numeric bStandTOTALS1MSS1, bStandTOTALS1MSS2, bStandTOTALS1MSS4;
            numeric aStandTOTALS1MSS1, aStandTOTALS1MSS2, aStandTOTALS1MSS4;
    
            numeric xTOTALS1MSS1 = 0;
            numeric xTOTALS1MSS2 = 0;
            numeric xTOTALS1MSS4 = 0;
    
            numeric xQuadTOTALS1MSS1 = 0;
            numeric xQuadTOTALS1MSS2 = 0;
            numeric xQuadTOTALS1MSS4 = 0;
    
            numeric yTOTALS1MSS1 = 0;
            numeric yTOTALS1MSS2 = 0;
            numeric yTOTALS1MSS4 = 0;
    
            numeric yQuadTOTALS1MSS1 = 0;
            numeric yQuadTOTALS1MSS2 = 0;
            numeric yQuadTOTALS1MSS4 = 0;
    
            numeric xyTOTALS1MSS1 = 0;
            numeric xyTOTALS1MSS2 = 0;
            numeric xyTOTALS1MSS4 = 0;
    
            numeric xxAritQuadTOTALS1MSS1 = 0;
            numeric xxAritQuadTOTALS1MSS2 = 0;
            numeric xxAritQuadTOTALS1MSS4 = 0;
    
            numeric yyAritQuadTOTALS1MSS1 = 0;
            numeric yyAritQuadTOTALS1MSS2 = 0;
            numeric yyAritQuadTOTALS1MSS4 = 0;
    
            numeric qXYTOTALS1MSS1 = 0;
            numeric qXYTOTALS1MSS2 = 0;
            numeric qXYTOTALS1MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS1MSS1 = xTOTALS1MSS1 + pifTOTALS3TM2arrayRAND[m];
                xTOTALS1MSS2 = xTOTALS1MSS2 + pifTOTALS3TM3arrayRAND[m];
                xTOTALS1MSS4 = xTOTALS1MSS4 + pifTOTALS3TM4arrayRAND[m];
    
                xQuadTOTALS1MSS1 = (xQuadTOTALS1MSS1 + (pifTOTALS3TM2arrayRAND[m]^2));
                xQuadTOTALS1MSS2 = (xQuadTOTALS1MSS2 + (pifTOTALS3TM3arrayRAND[m]^2));
                xQuadTOTALS1MSS4 = (xQuadTOTALS1MSS4 + (pifTOTALS3TM4arrayRAND[m]^2));
    
                yTOTALS1MSS1 = yTOTALS1MSS1 + pifTOTALS1MSS1arrayRAND[m];
                yTOTALS1MSS2 = yTOTALS1MSS2 + pifTOTALS1MSS2arrayRAND[m];
                yTOTALS1MSS4 = yTOTALS1MSS4 + pifTOTALS1MSS4arrayRAND[m];
                
                yQuadTOTALS1MSS1 = (yQuadTOTALS1MSS1 + (pifTOTALS1MSS1arrayRAND[m]^2));
                yQuadTOTALS1MSS2 = (yQuadTOTALS1MSS2 + (pifTOTALS1MSS2arrayRAND[m]^2));
                yQuadTOTALS1MSS4 = (yQuadTOTALS1MSS4 + (pifTOTALS1MSS4arrayRAND[m]^2));
    
                xyTOTALS1MSS1 = (xyTOTALS1MSS1 + (pifTOTALS3TM2arrayRAND[m] * pifTOTALS1MSS1arrayRAND[m]));
                xyTOTALS1MSS2 = (xyTOTALS1MSS2 + (pifTOTALS3TM3arrayRAND[m] * pifTOTALS1MSS2arrayRAND[m]));
                xyTOTALS1MSS4 = (xyTOTALS1MSS4 + (pifTOTALS3TM4arrayRAND[m] * pifTOTALS1MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS1MSS1 = xTOTALS1MSS1 / minPifVAL;
            xAritTOTALS1MSS2 = xTOTALS1MSS2 / minPifVAL;
            xAritTOTALS1MSS4 = xTOTALS1MSS4 / minPifVAL;
    
            yAritTOTALS1MSS1 = yTOTALS1MSS1 / minPifVAL;
            yAritTOTALS1MSS2 = yTOTALS1MSS2 / minPifVAL;
            yAritTOTALS1MSS4 = yTOTALS1MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1MSS1 = (xxAritQuadTOTALS1MSS1 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS1MSS1)^2));
                xxAritQuadTOTALS1MSS2 = (xxAritQuadTOTALS1MSS2 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS1MSS2)^2));
                xxAritQuadTOTALS1MSS4 = (xxAritQuadTOTALS1MSS4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS1MSS4)^2));
    
                yyAritQuadTOTALS1MSS1 = (yyAritQuadTOTALS1MSS1 + ((pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)^2));
                yyAritQuadTOTALS1MSS2 = (yyAritQuadTOTALS1MSS2 + ((pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)^2));
                yyAritQuadTOTALS1MSS4 = (yyAritQuadTOTALS1MSS4 + ((pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)^2));
    
                qXYTOTALS1MSS1 = (qXYTOTALS1MSS1 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS1MSS1) * (pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)));
                qXYTOTALS1MSS2 = (qXYTOTALS1MSS2 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS1MSS2) * (pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)));
                qXYTOTALS1MSS4 = (qXYTOTALS1MSS4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS1MSS4) * (pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)));
            }
        
            aTOTALS1MSS1 = (((xQuadTOTALS1MSS1 * yTOTALS1MSS1) - (xTOTALS1MSS1 * xyTOTALS1MSS1)) / ((minPifVAL * xQuadTOTALS1MSS1) - (xTOTALS1MSS1^2)));
            aTOTALS1MSS2 = (((xQuadTOTALS1MSS2 * yTOTALS1MSS2) - (xTOTALS1MSS2 * xyTOTALS1MSS2)) / ((minPifVAL * xQuadTOTALS1MSS2) - (xTOTALS1MSS2^2)));
            aTOTALS1MSS4 = (((xQuadTOTALS1MSS4 * yTOTALS1MSS4) - (xTOTALS1MSS4 * xyTOTALS1MSS4)) / ((minPifVAL * xQuadTOTALS1MSS4) - (xTOTALS1MSS4^2)));
            
            bTOTALS1MSS1 = qXYTOTALS1MSS1 / xxAritQuadTOTALS1MSS1;
            bTOTALS1MSS2 = qXYTOTALS1MSS2 / xxAritQuadTOTALS1MSS2;
            bTOTALS1MSS4 = qXYTOTALS1MSS4 / xxAritQuadTOTALS1MSS4;
    
            rTOTALS1MSS1 = (qXYTOTALS1MSS1 / ((xxAritQuadTOTALS1MSS1 * yyAritQuadTOTALS1MSS1)^0.5));
            rTOTALS1MSS2 = (qXYTOTALS1MSS2 / ((xxAritQuadTOTALS1MSS2 * yyAritQuadTOTALS1MSS2)^0.5));
            rTOTALS1MSS4 = (qXYTOTALS1MSS4 / ((xxAritQuadTOTALS1MSS4 * yyAritQuadTOTALS1MSS4)^0.5));
    
            rQuadTOTALS1MSS1 = ((rTOTALS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1MSS2 = ((rTOTALS1MSS2^2) * 100);
            rQuadTOTALS1MSS4 = ((rTOTALS1MSS4^2) * 100);
        
            syxTOTALS1MSS1 = (((yyAritQuadTOTALS1MSS1 - ((qXYTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS2 = (((yyAritQuadTOTALS1MSS2 - ((qXYTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS4 = (((yyAritQuadTOTALS1MSS4 - ((qXYTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1MSS1 = (((syxTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)^0.5);
            bStandTOTALS1MSS2 = (((syxTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)^0.5);
            bStandTOTALS1MSS4 = (((syxTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)^0.5);
    
            aStandTOTALS1MSS1 = (bStandTOTALS1MSS1 * ((xQuadTOTALS1MSS1 / minPifVAL)^0.5));
            aStandTOTALS1MSS2 = (bStandTOTALS1MSS2 * ((xQuadTOTALS1MSS2 / minPifVAL)^0.5));
            aStandTOTALS1MSS4 = (bStandTOTALS1MSS4 * ((xQuadTOTALS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS1, bTOTALS1MSS1, rTOTALS1MSS1, rQuadTOTALS1MSS1, aStandTOTALS1MSS1, bStandTOTALS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS2, bTOTALS1MSS2, rTOTALS1MSS2, rQuadTOTALS1MSS2, aStandTOTALS1MSS2, bStandTOTALS1MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS4, bTOTALS1MSS4, rTOTALS1MSS4, rQuadTOTALS1MSS4, aStandTOTALS1MSS4, bStandTOTALS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS1MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS1MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS2arrayRAND[minPifVAL]);
        
            printf("MSS4: %12f ", pifTOTALS1MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aTOTALS1MSS1 + (bTOTALS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aTOTALS1MSS2 + (bTOTALS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = REFS1MSS3[i,j];
                    OUT1MSS4[i,j] = (aTOTALS1MSS4 + (bTOTALS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT1MSS1);
        	CreatePyramid(OUT1MSS2);
        	CreatePyramid(OUT1MSS3);
        	CreatePyramid(OUT1MSS4);
        
        	CreateHistogram(OUT1MSS1);
        	CreateHistogram(OUT1MSS2);
        	CreateHistogram(OUT1MSS3);
        	CreateHistogram(OUT1MSS4);
        
        	CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors2 == 7 )
            {
            numeric xAritTOTALS2ETM1, xAritTOTALS2ETM2, xAritTOTALS2ETM3, xAritTOTALS2ETM4, xAritTOTALS2ETM5, xAritTOTALS2ETM7;
            numeric yAritTOTALS2ETM1, yAritTOTALS2ETM2, yAritTOTALS2ETM3, yAritTOTALS2ETM4, yAritTOTALS2ETM5, yAritTOTALS2ETM7;
    
            numeric aTOTALS2ETM1, aTOTALS2ETM2, aTOTALS2ETM3, aTOTALS2ETM4, aTOTALS2ETM5, aTOTALS2ETM7;
            numeric bTOTALS2ETM1, bTOTALS2ETM2, bTOTALS2ETM3, bTOTALS2ETM4, bTOTALS2ETM5, bTOTALS2ETM7;
            numeric rTOTALS2ETM1, rTOTALS2ETM2, rTOTALS2ETM3, rTOTALS2ETM4, rTOTALS2ETM5, rTOTALS2ETM7;
            numeric rQuadTOTALS2ETM1, rQuadTOTALS2ETM2, rQuadTOTALS2ETM3, rQuadTOTALS2ETM4, rQuadTOTALS2ETM5, rQuadTOTALS2ETM7;
            numeric syxTOTALS2ETM1, syxTOTALS2ETM2, syxTOTALS2ETM3, syxTOTALS2ETM4, syxTOTALS2ETM5, syxTOTALS2ETM7;
            numeric bStandTOTALS2ETM1, bStandTOTALS2ETM2, bStandTOTALS2ETM3, bStandTOTALS2ETM4, bStandTOTALS2ETM5, bStandTOTALS2ETM7;
            numeric aStandTOTALS2ETM1, aStandTOTALS2ETM2, aStandTOTALS2ETM3, aStandTOTALS2ETM4, aStandTOTALS2ETM5, aStandTOTALS2ETM7;
    
            numeric xTOTALS2ETM1 = 0;
            numeric xTOTALS2ETM2 = 0;
            numeric xTOTALS2ETM3 = 0;
            numeric xTOTALS2ETM4 = 0;
            numeric xTOTALS2ETM5 = 0;
            numeric xTOTALS2ETM7 = 0;
    
            numeric xQuadTOTALS2ETM1 = 0;
            numeric xQuadTOTALS2ETM2 = 0;
            numeric xQuadTOTALS2ETM3 = 0;
            numeric xQuadTOTALS2ETM4 = 0;
            numeric xQuadTOTALS2ETM5 = 0;
            numeric xQuadTOTALS2ETM7 = 0;
    
            numeric yTOTALS2ETM1 = 0;
            numeric yTOTALS2ETM2 = 0;
            numeric yTOTALS2ETM3 = 0;
            numeric yTOTALS2ETM4 = 0;
            numeric yTOTALS2ETM5 = 0;
            numeric yTOTALS2ETM7 = 0;
    
            numeric yQuadTOTALS2ETM1 = 0;
            numeric yQuadTOTALS2ETM2 = 0;
            numeric yQuadTOTALS2ETM3 = 0;
            numeric yQuadTOTALS2ETM4 = 0;
            numeric yQuadTOTALS2ETM5 = 0;
            numeric yQuadTOTALS2ETM7 = 0;
    
            numeric xyTOTALS2ETM1 = 0;
            numeric xyTOTALS2ETM2 = 0;
            numeric xyTOTALS2ETM3 = 0;
            numeric xyTOTALS2ETM4 = 0;
            numeric xyTOTALS2ETM5 = 0;
            numeric xyTOTALS2ETM7 = 0;
    
            numeric xxAritQuadTOTALS2ETM1 = 0;
            numeric xxAritQuadTOTALS2ETM2 = 0;
            numeric xxAritQuadTOTALS2ETM3 = 0;
            numeric xxAritQuadTOTALS2ETM4 = 0;
            numeric xxAritQuadTOTALS2ETM5 = 0;
            numeric xxAritQuadTOTALS2ETM7 = 0;
    
            numeric yyAritQuadTOTALS2ETM1 = 0;
            numeric yyAritQuadTOTALS2ETM2 = 0;
            numeric yyAritQuadTOTALS2ETM3 = 0;
            numeric yyAritQuadTOTALS2ETM4 = 0;
            numeric yyAritQuadTOTALS2ETM5 = 0;
            numeric yyAritQuadTOTALS2ETM7 = 0;
    
            numeric qXYTOTALS2ETM1 = 0;
            numeric qXYTOTALS2ETM2 = 0;
            numeric qXYTOTALS2ETM3 = 0;
            numeric qXYTOTALS2ETM4 = 0;
            numeric qXYTOTALS2ETM5 = 0;
            numeric qXYTOTALS2ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS2ETM1 = xTOTALS2ETM1 + pifTOTALS3TM1arrayRAND[m];
                xTOTALS2ETM2 = xTOTALS2ETM2 + pifTOTALS3TM2arrayRAND[m];
                xTOTALS2ETM3 = xTOTALS2ETM3 + pifTOTALS3TM3arrayRAND[m];
                xTOTALS2ETM4 = xTOTALS2ETM4 + pifTOTALS3TM4arrayRAND[m];
                xTOTALS2ETM5 = xTOTALS2ETM5 + pifTOTALS3TM5arrayRAND[m];
                xTOTALS2ETM7 = xTOTALS2ETM7 + pifTOTALS3TM7arrayRAND[m];
    
                xQuadTOTALS2ETM1 = (xQuadTOTALS2ETM1 + (pifTOTALS3TM1arrayRAND[m]^2));
                xQuadTOTALS2ETM2 = (xQuadTOTALS2ETM2 + (pifTOTALS3TM2arrayRAND[m]^2));
                xQuadTOTALS2ETM3 = (xQuadTOTALS2ETM3 + (pifTOTALS3TM3arrayRAND[m]^2));
                xQuadTOTALS2ETM4 = (xQuadTOTALS2ETM4 + (pifTOTALS3TM4arrayRAND[m]^2));
                xQuadTOTALS2ETM5 = (xQuadTOTALS2ETM5 + (pifTOTALS3TM5arrayRAND[m]^2));
                xQuadTOTALS2ETM7 = (xQuadTOTALS2ETM7 + (pifTOTALS3TM7arrayRAND[m]^2));
    
                yTOTALS2ETM1 = yTOTALS2ETM1 + pifTOTALS2ETM1arrayRAND[m];
                yTOTALS2ETM2 = yTOTALS2ETM2 + pifTOTALS2ETM2arrayRAND[m];
                yTOTALS2ETM3 = yTOTALS2ETM3 + pifTOTALS2ETM3arrayRAND[m];
                yTOTALS2ETM4 = yTOTALS2ETM4 + pifTOTALS2ETM4arrayRAND[m];
                yTOTALS2ETM5 = yTOTALS2ETM5 + pifTOTALS2ETM5arrayRAND[m];
                yTOTALS2ETM7 = yTOTALS2ETM7 + pifTOTALS2ETM7arrayRAND[m];
                
                yQuadTOTALS2ETM1 = (yQuadTOTALS2ETM1 + (pifTOTALS2ETM1arrayRAND[m]^2));
                yQuadTOTALS2ETM2 = (yQuadTOTALS2ETM2 + (pifTOTALS2ETM2arrayRAND[m]^2));
                yQuadTOTALS2ETM3 = (yQuadTOTALS2ETM3 + (pifTOTALS2ETM3arrayRAND[m]^2));
                yQuadTOTALS2ETM4 = (yQuadTOTALS2ETM4 + (pifTOTALS2ETM4arrayRAND[m]^2));
                yQuadTOTALS2ETM5 = (yQuadTOTALS2ETM5 + (pifTOTALS2ETM5arrayRAND[m]^2));
                yQuadTOTALS2ETM7 = (yQuadTOTALS2ETM7 + (pifTOTALS2ETM7arrayRAND[m]^2));
    
                xyTOTALS2ETM1 = (xyTOTALS2ETM1 + (pifTOTALS3TM1arrayRAND[m] * pifTOTALS2ETM1arrayRAND[m]));
                xyTOTALS2ETM2 = (xyTOTALS2ETM2 + (pifTOTALS3TM2arrayRAND[m] * pifTOTALS2ETM2arrayRAND[m]));
                xyTOTALS2ETM3 = (xyTOTALS2ETM3 + (pifTOTALS3TM3arrayRAND[m] * pifTOTALS2ETM3arrayRAND[m]));
                xyTOTALS2ETM4 = (xyTOTALS2ETM4 + (pifTOTALS3TM4arrayRAND[m] * pifTOTALS2ETM4arrayRAND[m]));
                xyTOTALS2ETM5 = (xyTOTALS2ETM5 + (pifTOTALS3TM5arrayRAND[m] * pifTOTALS2ETM5arrayRAND[m]));
                xyTOTALS2ETM7 = (xyTOTALS2ETM7 + (pifTOTALS3TM7arrayRAND[m] * pifTOTALS2ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS2ETM1 = xTOTALS2ETM1 / minPifVAL;
            xAritTOTALS2ETM2 = xTOTALS2ETM2 / minPifVAL;
            xAritTOTALS2ETM3 = xTOTALS2ETM3 / minPifVAL;
            xAritTOTALS2ETM4 = xTOTALS2ETM4 / minPifVAL;
            xAritTOTALS2ETM5 = xTOTALS2ETM5 / minPifVAL;
            xAritTOTALS2ETM7 = xTOTALS2ETM7 / minPifVAL;
    
            yAritTOTALS2ETM1 = yTOTALS2ETM1 / minPifVAL;
            yAritTOTALS2ETM2 = yTOTALS2ETM2 / minPifVAL;
            yAritTOTALS2ETM3 = yTOTALS2ETM3 / minPifVAL;
            yAritTOTALS2ETM4 = yTOTALS2ETM4 / minPifVAL;
            yAritTOTALS2ETM5 = yTOTALS2ETM5 / minPifVAL;
            yAritTOTALS2ETM7 = yTOTALS2ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2ETM1 = (xxAritQuadTOTALS2ETM1 + ((pifTOTALS3TM1arrayRAND[n] - xAritTOTALS2ETM1)^2));
                xxAritQuadTOTALS2ETM2 = (xxAritQuadTOTALS2ETM2 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS2ETM2)^2));
                xxAritQuadTOTALS2ETM3 = (xxAritQuadTOTALS2ETM3 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS2ETM3)^2));
                xxAritQuadTOTALS2ETM4 = (xxAritQuadTOTALS2ETM4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS2ETM4)^2));
                xxAritQuadTOTALS2ETM5 = (xxAritQuadTOTALS2ETM5 + ((pifTOTALS3TM5arrayRAND[n] - xAritTOTALS2ETM5)^2));
                xxAritQuadTOTALS2ETM7 = (xxAritQuadTOTALS2ETM7 + ((pifTOTALS3TM7arrayRAND[n] - xAritTOTALS2ETM7)^2));
    
                yyAritQuadTOTALS2ETM1 = (yyAritQuadTOTALS2ETM1 + ((pifTOTALS2ETM1arrayRAND[n] - yAritTOTALS2ETM1)^2));
                yyAritQuadTOTALS2ETM2 = (yyAritQuadTOTALS2ETM2 + ((pifTOTALS2ETM2arrayRAND[n] - yAritTOTALS2ETM2)^2));
                yyAritQuadTOTALS2ETM3 = (yyAritQuadTOTALS2ETM3 + ((pifTOTALS2ETM3arrayRAND[n] - yAritTOTALS2ETM3)^2));
                yyAritQuadTOTALS2ETM4 = (yyAritQuadTOTALS2ETM4 + ((pifTOTALS2ETM4arrayRAND[n] - yAritTOTALS2ETM4)^2));
                yyAritQuadTOTALS2ETM5 = (yyAritQuadTOTALS2ETM5 + ((pifTOTALS2ETM5arrayRAND[n] - yAritTOTALS2ETM5)^2));
                yyAritQuadTOTALS2ETM7 = (yyAritQuadTOTALS2ETM7 + ((pifTOTALS2ETM7arrayRAND[n] - yAritTOTALS2ETM7)^2));
    
                qXYTOTALS2ETM1 = (qXYTOTALS2ETM1 + ((pifTOTALS3TM1arrayRAND[n] - xAritTOTALS2ETM1) * (pifTOTALS2ETM1arrayRAND[n] - yAritTOTALS2ETM1)));
                qXYTOTALS2ETM2 = (qXYTOTALS2ETM2 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS2ETM2) * (pifTOTALS2ETM2arrayRAND[n] - yAritTOTALS2ETM2)));
                qXYTOTALS2ETM3 = (qXYTOTALS2ETM3 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS2ETM3) * (pifTOTALS2ETM3arrayRAND[n] - yAritTOTALS2ETM3)));
                qXYTOTALS2ETM4 = (qXYTOTALS2ETM4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS2ETM4) * (pifTOTALS2ETM4arrayRAND[n] - yAritTOTALS2ETM4)));
                qXYTOTALS2ETM5 = (qXYTOTALS2ETM5 + ((pifTOTALS3TM5arrayRAND[n] - xAritTOTALS2ETM5) * (pifTOTALS2ETM5arrayRAND[n] - yAritTOTALS2ETM5)));
                qXYTOTALS2ETM7 = (qXYTOTALS2ETM7 + ((pifTOTALS3TM7arrayRAND[n] - xAritTOTALS2ETM7) * (pifTOTALS2ETM7arrayRAND[n] - yAritTOTALS2ETM7)));
            }
        
            aTOTALS2ETM1 = (((xQuadTOTALS2ETM1 * yTOTALS2ETM1) - (xTOTALS2ETM1 * xyTOTALS2ETM1)) / ((minPifVAL * xQuadTOTALS2ETM1) - (xTOTALS2ETM1^2)));
            aTOTALS2ETM2 = (((xQuadTOTALS2ETM2 * yTOTALS2ETM2) - (xTOTALS2ETM2 * xyTOTALS2ETM2)) / ((minPifVAL * xQuadTOTALS2ETM2) - (xTOTALS2ETM2^2)));
            aTOTALS2ETM3 = (((xQuadTOTALS2ETM3 * yTOTALS2ETM3) - (xTOTALS2ETM3 * xyTOTALS2ETM3)) / ((minPifVAL * xQuadTOTALS2ETM3) - (xTOTALS2ETM3^2)));
            aTOTALS2ETM4 = (((xQuadTOTALS2ETM4 * yTOTALS2ETM4) - (xTOTALS2ETM4 * xyTOTALS2ETM4)) / ((minPifVAL * xQuadTOTALS2ETM4) - (xTOTALS2ETM4^2)));
            aTOTALS2ETM5 = (((xQuadTOTALS2ETM5 * yTOTALS2ETM5) - (xTOTALS2ETM5 * xyTOTALS2ETM5)) / ((minPifVAL * xQuadTOTALS2ETM5) - (xTOTALS2ETM5^2)));
            aTOTALS2ETM7 = (((xQuadTOTALS2ETM7 * yTOTALS2ETM7) - (xTOTALS2ETM7 * xyTOTALS2ETM7)) / ((minPifVAL * xQuadTOTALS2ETM7) - (xTOTALS2ETM7^2)));
            
            bTOTALS2ETM1 = qXYTOTALS2ETM1 / xxAritQuadTOTALS2ETM1;
            bTOTALS2ETM2 = qXYTOTALS2ETM2 / xxAritQuadTOTALS2ETM2;
            bTOTALS2ETM3 = qXYTOTALS2ETM3 / xxAritQuadTOTALS2ETM3;
            bTOTALS2ETM4 = qXYTOTALS2ETM4 / xxAritQuadTOTALS2ETM4;
            bTOTALS2ETM5 = qXYTOTALS2ETM5 / xxAritQuadTOTALS2ETM5;
            bTOTALS2ETM7 = qXYTOTALS2ETM7 / xxAritQuadTOTALS2ETM7;
    
            rTOTALS2ETM1 = (qXYTOTALS2ETM1 / ((xxAritQuadTOTALS2ETM1 * yyAritQuadTOTALS2ETM1)^0.5));
            rTOTALS2ETM2 = (qXYTOTALS2ETM2 / ((xxAritQuadTOTALS2ETM2 * yyAritQuadTOTALS2ETM2)^0.5));
            rTOTALS2ETM3 = (qXYTOTALS2ETM3 / ((xxAritQuadTOTALS2ETM3 * yyAritQuadTOTALS2ETM3)^0.5));
            rTOTALS2ETM4 = (qXYTOTALS2ETM4 / ((xxAritQuadTOTALS2ETM4 * yyAritQuadTOTALS2ETM4)^0.5));
            rTOTALS2ETM5 = (qXYTOTALS2ETM5 / ((xxAritQuadTOTALS2ETM5 * yyAritQuadTOTALS2ETM5)^0.5));
            rTOTALS2ETM7 = (qXYTOTALS2ETM7 / ((xxAritQuadTOTALS2ETM7 * yyAritQuadTOTALS2ETM7)^0.5));
    
            rQuadTOTALS2ETM1 = ((rTOTALS2ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2ETM2 = ((rTOTALS2ETM2^2) * 100);
            rQuadTOTALS2ETM3 = ((rTOTALS2ETM3^2) * 100);
            rQuadTOTALS2ETM4 = ((rTOTALS2ETM4^2) * 100);
            rQuadTOTALS2ETM5 = ((rTOTALS2ETM5^2) * 100);
            rQuadTOTALS2ETM7 = ((rTOTALS2ETM7^2) * 100);
        
            syxTOTALS2ETM1 = (((yyAritQuadTOTALS2ETM1 - ((qXYTOTALS2ETM1^2) / xxAritQuadTOTALS2ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM2 = (((yyAritQuadTOTALS2ETM2 - ((qXYTOTALS2ETM2^2) / xxAritQuadTOTALS2ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM3 = (((yyAritQuadTOTALS2ETM3 - ((qXYTOTALS2ETM3^2) / xxAritQuadTOTALS2ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM4 = (((yyAritQuadTOTALS2ETM4 - ((qXYTOTALS2ETM4^2) / xxAritQuadTOTALS2ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM5 = (((yyAritQuadTOTALS2ETM5 - ((qXYTOTALS2ETM5^2) / xxAritQuadTOTALS2ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM7 = (((yyAritQuadTOTALS2ETM7 - ((qXYTOTALS2ETM7^2) / xxAritQuadTOTALS2ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2ETM1 = (((syxTOTALS2ETM1^2) / xxAritQuadTOTALS2ETM1)^0.5);
            bStandTOTALS2ETM2 = (((syxTOTALS2ETM2^2) / xxAritQuadTOTALS2ETM2)^0.5);
            bStandTOTALS2ETM3 = (((syxTOTALS2ETM3^2) / xxAritQuadTOTALS2ETM3)^0.5);
            bStandTOTALS2ETM4 = (((syxTOTALS2ETM4^2) / xxAritQuadTOTALS2ETM4)^0.5);
            bStandTOTALS2ETM5 = (((syxTOTALS2ETM5^2) / xxAritQuadTOTALS2ETM5)^0.5);
            bStandTOTALS2ETM7 = (((syxTOTALS2ETM7^2) / xxAritQuadTOTALS2ETM7)^0.5);
    
            aStandTOTALS2ETM1 = (bStandTOTALS2ETM1 * ((xQuadTOTALS2ETM1 / minPifVAL)^0.5));
            aStandTOTALS2ETM2 = (bStandTOTALS2ETM2 * ((xQuadTOTALS2ETM2 / minPifVAL)^0.5));
            aStandTOTALS2ETM3 = (bStandTOTALS2ETM3 * ((xQuadTOTALS2ETM3 / minPifVAL)^0.5));
            aStandTOTALS2ETM4 = (bStandTOTALS2ETM4 * ((xQuadTOTALS2ETM4 / minPifVAL)^0.5));
            aStandTOTALS2ETM5 = (bStandTOTALS2ETM5 * ((xQuadTOTALS2ETM5 / minPifVAL)^0.5));
            aStandTOTALS2ETM7 = (bStandTOTALS2ETM7 * ((xQuadTOTALS2ETM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM1, bTOTALS2ETM1, rTOTALS2ETM1, rQuadTOTALS2ETM1, aStandTOTALS2ETM1, bStandTOTALS2ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM2, bTOTALS2ETM2, rTOTALS2ETM2, rQuadTOTALS2ETM2, aStandTOTALS2ETM2, bStandTOTALS2ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM3, bTOTALS2ETM3, rTOTALS2ETM3, rQuadTOTALS2ETM3, aStandTOTALS2ETM3, bStandTOTALS2ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM4, bTOTALS2ETM4, rTOTALS2ETM4, rQuadTOTALS2ETM4, aStandTOTALS2ETM4, bStandTOTALS2ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM5, bTOTALS2ETM5, rTOTALS2ETM5, rQuadTOTALS2ETM5, aStandTOTALS2ETM5, bStandTOTALS2ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS2ETM7, bTOTALS2ETM7, rTOTALS2ETM7, rQuadTOTALS2ETM7, aStandTOTALS2ETM7, bStandTOTALS2ETM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS2ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS2ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS2ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS2ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS2ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS2ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS2ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT2ETM1[i,j] = (aTOTALS2ETM1 + (bTOTALS2ETM1 * REFS2ETM1[i,j]));
                    OUT2ETM2[i,j] = (aTOTALS2ETM2 + (bTOTALS2ETM2 * REFS2ETM2[i,j]));
                    OUT2ETM3[i,j] = (aTOTALS2ETM3 + (bTOTALS2ETM3 * REFS2ETM3[i,j]));
                    OUT2ETM4[i,j] = (aTOTALS2ETM4 + (bTOTALS2ETM4 * REFS2ETM4[i,j]));
                    OUT2ETM5[i,j] = (aTOTALS2ETM5 + (bTOTALS2ETM5 * REFS2ETM5[i,j]));
                    OUT2ETM7[i,j] = (aTOTALS2ETM7 + (bTOTALS2ETM7 * REFS2ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2ETM1);
        	CreatePyramid(OUT2ETM2);
        	CreatePyramid(OUT2ETM3);
        	CreatePyramid(OUT2ETM4);
        	CreatePyramid(OUT2ETM5);
        	CreatePyramid(OUT2ETM7);
        
        	CreateHistogram(OUT2ETM1);
        	CreateHistogram(OUT2ETM2);
        	CreateHistogram(OUT2ETM3);
        	CreateHistogram(OUT2ETM4);
        	CreateHistogram(OUT2ETM5);
        	CreateHistogram(OUT2ETM7);
        
        	CloseRaster(REFS2ETM1);
            CloseRaster(REFS2ETM2);
            CloseRaster(REFS2ETM3);
            CloseRaster(REFS2ETM4);
            CloseRaster(REFS2ETM5);
            CloseRaster(REFS2ETM7);
    
            CloseRaster(OUT2ETM1);
            CloseRaster(OUT2ETM2);
            CloseRaster(OUT2ETM3);
            CloseRaster(OUT2ETM4);
            CloseRaster(OUT2ETM5);
            CloseRaster(OUT2ETM7); 
            
        	printf("Scene 2 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors2 == 6 )
            {
            numeric xAritTOTALS2TM1, xAritTOTALS2TM2, xAritTOTALS2TM3, xAritTOTALS2TM4, xAritTOTALS2TM5, xAritTOTALS2TM7;
            numeric yAritTOTALS2TM1, yAritTOTALS2TM2, yAritTOTALS2TM3, yAritTOTALS2TM4, yAritTOTALS2TM5, yAritTOTALS2TM7;
    
            numeric aTOTALS2TM1, aTOTALS2TM2, aTOTALS2TM3, aTOTALS2TM4, aTOTALS2TM5, aTOTALS2TM7;
            numeric bTOTALS2TM1, bTOTALS2TM2, bTOTALS2TM3, bTOTALS2TM4, bTOTALS2TM5, bTOTALS2TM7;
            numeric rTOTALS2TM1, rTOTALS2TM2, rTOTALS2TM3, rTOTALS2TM4, rTOTALS2TM5, rTOTALS2TM7;
            numeric rQuadTOTALS2TM1, rQuadTOTALS2TM2, rQuadTOTALS2TM3, rQuadTOTALS2TM4, rQuadTOTALS2TM5, rQuadTOTALS2TM7;
            numeric syxTOTALS2TM1, syxTOTALS2TM2, syxTOTALS2TM3, syxTOTALS2TM4, syxTOTALS2TM5, syxTOTALS2TM7;
            numeric bStandTOTALS2TM1, bStandTOTALS2TM2, bStandTOTALS2TM3, bStandTOTALS2TM4, bStandTOTALS2TM5, bStandTOTALS2TM7;
            numeric aStandTOTALS2TM1, aStandTOTALS2TM2, aStandTOTALS2TM3, aStandTOTALS2TM4, aStandTOTALS2TM5, aStandTOTALS2TM7;
    
            numeric xTOTALS2TM1 = 0;
            numeric xTOTALS2TM2 = 0;
            numeric xTOTALS2TM3 = 0;
            numeric xTOTALS2TM4 = 0;
            numeric xTOTALS2TM5 = 0;
            numeric xTOTALS2TM7 = 0;
    
            numeric xQuadTOTALS2TM1 = 0;
            numeric xQuadTOTALS2TM2 = 0;
            numeric xQuadTOTALS2TM3 = 0;
            numeric xQuadTOTALS2TM4 = 0;
            numeric xQuadTOTALS2TM5 = 0;
            numeric xQuadTOTALS2TM7 = 0;
    
            numeric yTOTALS2TM1 = 0;
            numeric yTOTALS2TM2 = 0;
            numeric yTOTALS2TM3 = 0;
            numeric yTOTALS2TM4 = 0;
            numeric yTOTALS2TM5 = 0;
            numeric yTOTALS2TM7 = 0;
    
            numeric yQuadTOTALS2TM1 = 0;
            numeric yQuadTOTALS2TM2 = 0;
            numeric yQuadTOTALS2TM3 = 0;
            numeric yQuadTOTALS2TM4 = 0;
            numeric yQuadTOTALS2TM5 = 0;
            numeric yQuadTOTALS2TM7 = 0;
    
            numeric xyTOTALS2TM1 = 0;
            numeric xyTOTALS2TM2 = 0;
            numeric xyTOTALS2TM3 = 0;
            numeric xyTOTALS2TM4 = 0;
            numeric xyTOTALS2TM5 = 0;
            numeric xyTOTALS2TM7 = 0;
    
            numeric xxAritQuadTOTALS2TM1 = 0;
            numeric xxAritQuadTOTALS2TM2 = 0;
            numeric xxAritQuadTOTALS2TM3 = 0;
            numeric xxAritQuadTOTALS2TM4 = 0;
            numeric xxAritQuadTOTALS2TM5 = 0;
            numeric xxAritQuadTOTALS2TM7 = 0;
    
            numeric yyAritQuadTOTALS2TM1 = 0;
            numeric yyAritQuadTOTALS2TM2 = 0;
            numeric yyAritQuadTOTALS2TM3 = 0;
            numeric yyAritQuadTOTALS2TM4 = 0;
            numeric yyAritQuadTOTALS2TM5 = 0;
            numeric yyAritQuadTOTALS2TM7 = 0;
    
            numeric qXYTOTALS2TM1 = 0;
            numeric qXYTOTALS2TM2 = 0;
            numeric qXYTOTALS2TM3 = 0;
            numeric qXYTOTALS2TM4 = 0;
            numeric qXYTOTALS2TM5 = 0;
            numeric qXYTOTALS2TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS2TM1 = xTOTALS2TM1 + pifTOTALS3TM1arrayRAND[m];
                xTOTALS2TM2 = xTOTALS2TM2 + pifTOTALS3TM2arrayRAND[m];
                xTOTALS2TM3 = xTOTALS2TM3 + pifTOTALS3TM3arrayRAND[m];
                xTOTALS2TM4 = xTOTALS2TM4 + pifTOTALS3TM4arrayRAND[m];
                xTOTALS2TM5 = xTOTALS2TM5 + pifTOTALS3TM5arrayRAND[m];
                xTOTALS2TM7 = xTOTALS2TM7 + pifTOTALS3TM7arrayRAND[m];
    
                xQuadTOTALS2TM1 = (xQuadTOTALS2TM1 + (pifTOTALS3TM1arrayRAND[m]^2));
                xQuadTOTALS2TM2 = (xQuadTOTALS2TM2 + (pifTOTALS3TM2arrayRAND[m]^2));
                xQuadTOTALS2TM3 = (xQuadTOTALS2TM3 + (pifTOTALS3TM3arrayRAND[m]^2));
                xQuadTOTALS2TM4 = (xQuadTOTALS2TM4 + (pifTOTALS3TM4arrayRAND[m]^2));
                xQuadTOTALS2TM5 = (xQuadTOTALS2TM5 + (pifTOTALS3TM5arrayRAND[m]^2));
                xQuadTOTALS2TM7 = (xQuadTOTALS2TM7 + (pifTOTALS3TM7arrayRAND[m]^2));
    
                yTOTALS2TM1 = yTOTALS2TM1 + pifTOTALS2TM1arrayRAND[m];
                yTOTALS2TM2 = yTOTALS2TM2 + pifTOTALS2TM2arrayRAND[m];
                yTOTALS2TM3 = yTOTALS2TM3 + pifTOTALS2TM3arrayRAND[m];
                yTOTALS2TM4 = yTOTALS2TM4 + pifTOTALS2TM4arrayRAND[m];
                yTOTALS2TM5 = yTOTALS2TM5 + pifTOTALS2TM5arrayRAND[m];
                yTOTALS2TM7 = yTOTALS2TM7 + pifTOTALS2TM7arrayRAND[m];
                
                yQuadTOTALS2TM1 = (yQuadTOTALS2TM1 + (pifTOTALS2TM1arrayRAND[m]^2));
                yQuadTOTALS2TM2 = (yQuadTOTALS2TM2 + (pifTOTALS2TM2arrayRAND[m]^2));
                yQuadTOTALS2TM3 = (yQuadTOTALS2TM3 + (pifTOTALS2TM3arrayRAND[m]^2));
                yQuadTOTALS2TM4 = (yQuadTOTALS2TM4 + (pifTOTALS2TM4arrayRAND[m]^2));
                yQuadTOTALS2TM5 = (yQuadTOTALS2TM5 + (pifTOTALS2TM5arrayRAND[m]^2));
                yQuadTOTALS2TM7 = (yQuadTOTALS2TM7 + (pifTOTALS2TM7arrayRAND[m]^2));
    
                xyTOTALS2TM1 = (xyTOTALS2TM1 + (pifTOTALS3TM1arrayRAND[m] * pifTOTALS2TM1arrayRAND[m]));
                xyTOTALS2TM2 = (xyTOTALS2TM2 + (pifTOTALS3TM2arrayRAND[m] * pifTOTALS2TM2arrayRAND[m]));
                xyTOTALS2TM3 = (xyTOTALS2TM3 + (pifTOTALS3TM3arrayRAND[m] * pifTOTALS2TM3arrayRAND[m]));
                xyTOTALS2TM4 = (xyTOTALS2TM4 + (pifTOTALS3TM4arrayRAND[m] * pifTOTALS2TM4arrayRAND[m]));
                xyTOTALS2TM5 = (xyTOTALS2TM5 + (pifTOTALS3TM5arrayRAND[m] * pifTOTALS2TM5arrayRAND[m]));
                xyTOTALS2TM7 = (xyTOTALS2TM7 + (pifTOTALS3TM7arrayRAND[m] * pifTOTALS2TM7arrayRAND[m]));
            }	
            
            xAritTOTALS2TM1 = xTOTALS2TM1 / minPifVAL;
            xAritTOTALS2TM2 = xTOTALS2TM2 / minPifVAL;
            xAritTOTALS2TM3 = xTOTALS2TM3 / minPifVAL;
            xAritTOTALS2TM4 = xTOTALS2TM4 / minPifVAL;
            xAritTOTALS2TM5 = xTOTALS2TM5 / minPifVAL;
            xAritTOTALS2TM7 = xTOTALS2TM7 / minPifVAL;
    
            yAritTOTALS2TM1 = yTOTALS2TM1 / minPifVAL;
            yAritTOTALS2TM2 = yTOTALS2TM2 / minPifVAL;
            yAritTOTALS2TM3 = yTOTALS2TM3 / minPifVAL;
            yAritTOTALS2TM4 = yTOTALS2TM4 / minPifVAL;
            yAritTOTALS2TM5 = yTOTALS2TM5 / minPifVAL;
            yAritTOTALS2TM7 = yTOTALS2TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2TM1 = (xxAritQuadTOTALS2TM1 + ((pifTOTALS3TM1arrayRAND[n] - xAritTOTALS2TM1)^2));
                xxAritQuadTOTALS2TM2 = (xxAritQuadTOTALS2TM2 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS2TM2)^2));
                xxAritQuadTOTALS2TM3 = (xxAritQuadTOTALS2TM3 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS2TM3)^2));
                xxAritQuadTOTALS2TM4 = (xxAritQuadTOTALS2TM4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS2TM4)^2));
                xxAritQuadTOTALS2TM5 = (xxAritQuadTOTALS2TM5 + ((pifTOTALS3TM5arrayRAND[n] - xAritTOTALS2TM5)^2));
                xxAritQuadTOTALS2TM7 = (xxAritQuadTOTALS2TM7 + ((pifTOTALS3TM7arrayRAND[n] - xAritTOTALS2TM7)^2));
    
                yyAritQuadTOTALS2TM1 = (yyAritQuadTOTALS2TM1 + ((pifTOTALS2TM1arrayRAND[n] - yAritTOTALS2TM1)^2));
                yyAritQuadTOTALS2TM2 = (yyAritQuadTOTALS2TM2 + ((pifTOTALS2TM2arrayRAND[n] - yAritTOTALS2TM2)^2));
                yyAritQuadTOTALS2TM3 = (yyAritQuadTOTALS2TM3 + ((pifTOTALS2TM3arrayRAND[n] - yAritTOTALS2TM3)^2));
                yyAritQuadTOTALS2TM4 = (yyAritQuadTOTALS2TM4 + ((pifTOTALS2TM4arrayRAND[n] - yAritTOTALS2TM4)^2));
                yyAritQuadTOTALS2TM5 = (yyAritQuadTOTALS2TM5 + ((pifTOTALS2TM5arrayRAND[n] - yAritTOTALS2TM5)^2));
                yyAritQuadTOTALS2TM7 = (yyAritQuadTOTALS2TM7 + ((pifTOTALS2TM7arrayRAND[n] - yAritTOTALS2TM7)^2));
    
                qXYTOTALS2TM1 = (qXYTOTALS2TM1 + ((pifTOTALS3TM1arrayRAND[n] - xAritTOTALS2TM1) * (pifTOTALS2TM1arrayRAND[n] - yAritTOTALS2TM1)));
                qXYTOTALS2TM2 = (qXYTOTALS2TM2 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS2TM2) * (pifTOTALS2TM2arrayRAND[n] - yAritTOTALS2TM2)));
                qXYTOTALS2TM3 = (qXYTOTALS2TM3 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS2TM3) * (pifTOTALS2TM3arrayRAND[n] - yAritTOTALS2TM3)));
                qXYTOTALS2TM4 = (qXYTOTALS2TM4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS2TM4) * (pifTOTALS2TM4arrayRAND[n] - yAritTOTALS2TM4)));
                qXYTOTALS2TM5 = (qXYTOTALS2TM5 + ((pifTOTALS3TM5arrayRAND[n] - xAritTOTALS2TM5) * (pifTOTALS2TM5arrayRAND[n] - yAritTOTALS2TM5)));
                qXYTOTALS2TM7 = (qXYTOTALS2TM7 + ((pifTOTALS3TM7arrayRAND[n] - xAritTOTALS2TM7) * (pifTOTALS2TM7arrayRAND[n] - yAritTOTALS2TM7)));
            }
        
            aTOTALS2TM1 = (((xQuadTOTALS2TM1 * yTOTALS2TM1) - (xTOTALS2TM1 * xyTOTALS2TM1)) / ((minPifVAL * xQuadTOTALS2TM1) - (xTOTALS2TM1^2)));
            aTOTALS2TM2 = (((xQuadTOTALS2TM2 * yTOTALS2TM2) - (xTOTALS2TM2 * xyTOTALS2TM2)) / ((minPifVAL * xQuadTOTALS2TM2) - (xTOTALS2TM2^2)));
            aTOTALS2TM3 = (((xQuadTOTALS2TM3 * yTOTALS2TM3) - (xTOTALS2TM3 * xyTOTALS2TM3)) / ((minPifVAL * xQuadTOTALS2TM3) - (xTOTALS2TM3^2)));
            aTOTALS2TM4 = (((xQuadTOTALS2TM4 * yTOTALS2TM4) - (xTOTALS2TM4 * xyTOTALS2TM4)) / ((minPifVAL * xQuadTOTALS2TM4) - (xTOTALS2TM4^2)));
            aTOTALS2TM5 = (((xQuadTOTALS2TM5 * yTOTALS2TM5) - (xTOTALS2TM5 * xyTOTALS2TM5)) / ((minPifVAL * xQuadTOTALS2TM5) - (xTOTALS2TM5^2)));
            aTOTALS2TM7 = (((xQuadTOTALS2TM7 * yTOTALS2TM7) - (xTOTALS2TM7 * xyTOTALS2TM7)) / ((minPifVAL * xQuadTOTALS2TM7) - (xTOTALS2TM7^2)));
            
            bTOTALS2TM1 = qXYTOTALS2TM1 / xxAritQuadTOTALS2TM1;
            bTOTALS2TM2 = qXYTOTALS2TM2 / xxAritQuadTOTALS2TM2;
            bTOTALS2TM3 = qXYTOTALS2TM3 / xxAritQuadTOTALS2TM3;
            bTOTALS2TM4 = qXYTOTALS2TM4 / xxAritQuadTOTALS2TM4;
            bTOTALS2TM5 = qXYTOTALS2TM5 / xxAritQuadTOTALS2TM5;
            bTOTALS2TM7 = qXYTOTALS2TM7 / xxAritQuadTOTALS2TM7;
    
            rTOTALS2TM1 = (qXYTOTALS2TM1 / ((xxAritQuadTOTALS2TM1 * yyAritQuadTOTALS2TM1)^0.5));
            rTOTALS2TM2 = (qXYTOTALS2TM2 / ((xxAritQuadTOTALS2TM2 * yyAritQuadTOTALS2TM2)^0.5));
            rTOTALS2TM3 = (qXYTOTALS2TM3 / ((xxAritQuadTOTALS2TM3 * yyAritQuadTOTALS2TM3)^0.5));
            rTOTALS2TM4 = (qXYTOTALS2TM4 / ((xxAritQuadTOTALS2TM4 * yyAritQuadTOTALS2TM4)^0.5));
            rTOTALS2TM5 = (qXYTOTALS2TM5 / ((xxAritQuadTOTALS2TM5 * yyAritQuadTOTALS2TM5)^0.5));
            rTOTALS2TM7 = (qXYTOTALS2TM7 / ((xxAritQuadTOTALS2TM7 * yyAritQuadTOTALS2TM7)^0.5));
    
            rQuadTOTALS2TM1 = ((rTOTALS2TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2TM2 = ((rTOTALS2TM2^2) * 100);
            rQuadTOTALS2TM3 = ((rTOTALS2TM3^2) * 100);
            rQuadTOTALS2TM4 = ((rTOTALS2TM4^2) * 100);
            rQuadTOTALS2TM5 = ((rTOTALS2TM5^2) * 100);
            rQuadTOTALS2TM7 = ((rTOTALS2TM7^2) * 100);
        
            syxTOTALS2TM1 = (((yyAritQuadTOTALS2TM1 - ((qXYTOTALS2TM1^2) / xxAritQuadTOTALS2TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM2 = (((yyAritQuadTOTALS2TM2 - ((qXYTOTALS2TM2^2) / xxAritQuadTOTALS2TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM3 = (((yyAritQuadTOTALS2TM3 - ((qXYTOTALS2TM3^2) / xxAritQuadTOTALS2TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM4 = (((yyAritQuadTOTALS2TM4 - ((qXYTOTALS2TM4^2) / xxAritQuadTOTALS2TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM5 = (((yyAritQuadTOTALS2TM5 - ((qXYTOTALS2TM5^2) / xxAritQuadTOTALS2TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM7 = (((yyAritQuadTOTALS2TM7 - ((qXYTOTALS2TM7^2) / xxAritQuadTOTALS2TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2TM1 = (((syxTOTALS2TM1^2) / xxAritQuadTOTALS2TM1)^0.5);
            bStandTOTALS2TM2 = (((syxTOTALS2TM2^2) / xxAritQuadTOTALS2TM2)^0.5);
            bStandTOTALS2TM3 = (((syxTOTALS2TM3^2) / xxAritQuadTOTALS2TM3)^0.5);
            bStandTOTALS2TM4 = (((syxTOTALS2TM4^2) / xxAritQuadTOTALS2TM4)^0.5);
            bStandTOTALS2TM5 = (((syxTOTALS2TM5^2) / xxAritQuadTOTALS2TM5)^0.5);
            bStandTOTALS2TM7 = (((syxTOTALS2TM7^2) / xxAritQuadTOTALS2TM7)^0.5);
    
            aStandTOTALS2TM1 = (bStandTOTALS2TM1 * ((xQuadTOTALS2TM1 / minPifVAL)^0.5));
            aStandTOTALS2TM2 = (bStandTOTALS2TM2 * ((xQuadTOTALS2TM2 / minPifVAL)^0.5));
            aStandTOTALS2TM3 = (bStandTOTALS2TM3 * ((xQuadTOTALS2TM3 / minPifVAL)^0.5));
            aStandTOTALS2TM4 = (bStandTOTALS2TM4 * ((xQuadTOTALS2TM4 / minPifVAL)^0.5));
            aStandTOTALS2TM5 = (bStandTOTALS2TM5 * ((xQuadTOTALS2TM5 / minPifVAL)^0.5));
            aStandTOTALS2TM7 = (bStandTOTALS2TM7 * ((xQuadTOTALS2TM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM1, bTOTALS2TM1, rTOTALS2TM1, rQuadTOTALS2TM1, aStandTOTALS2TM1, bStandTOTALS2TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM2, bTOTALS2TM2, rTOTALS2TM2, rQuadTOTALS2TM2, aStandTOTALS2TM2, bStandTOTALS2TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM3, bTOTALS2TM3, rTOTALS2TM3, rQuadTOTALS2TM3, aStandTOTALS2TM3, bStandTOTALS2TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM4, bTOTALS2TM4, rTOTALS2TM4, rQuadTOTALS2TM4, aStandTOTALS2TM4, bStandTOTALS2TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM5, bTOTALS2TM5, rTOTALS2TM5, rQuadTOTALS2TM5, aStandTOTALS2TM5, bStandTOTALS2TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS2TM7, bTOTALS2TM7, rTOTALS2TM7, rQuadTOTALS2TM7, aStandTOTALS2TM7, bStandTOTALS2TM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS2TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS2TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS2TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS2TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS2TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS2TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS2TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT2TM1[i,j] = (aTOTALS2TM1 + (bTOTALS2TM1 * REFS2TM1[i,j]));
                    OUT2TM2[i,j] = (aTOTALS2TM2 + (bTOTALS2TM2 * REFS2TM2[i,j]));
                    OUT2TM3[i,j] = (aTOTALS2TM3 + (bTOTALS2TM3 * REFS2TM3[i,j]));
                    OUT2TM4[i,j] = (aTOTALS2TM4 + (bTOTALS2TM4 * REFS2TM4[i,j]));
                    OUT2TM5[i,j] = (aTOTALS2TM5 + (bTOTALS2TM5 * REFS2TM5[i,j]));
                    OUT2TM7[i,j] = (aTOTALS2TM7 + (bTOTALS2TM7 * REFS2TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2TM1);
        	CreatePyramid(OUT2TM2);
        	CreatePyramid(OUT2TM3);
        	CreatePyramid(OUT2TM4);
        	CreatePyramid(OUT2TM5);
        	CreatePyramid(OUT2TM7);
        
        	CreateHistogram(OUT2TM1);
        	CreateHistogram(OUT2TM2);
        	CreateHistogram(OUT2TM3);
        	CreateHistogram(OUT2TM4);
        	CreateHistogram(OUT2TM5);
        	CreateHistogram(OUT2TM7);
        
        	CloseRaster(REFS2TM1);
            CloseRaster(REFS2TM2);
            CloseRaster(REFS2TM3);
            CloseRaster(REFS2TM4);
            CloseRaster(REFS2TM5);
            CloseRaster(REFS2TM7);
    
            CloseRaster(OUT2TM1);
            CloseRaster(OUT2TM2);
            CloseRaster(OUT2TM3);
            CloseRaster(OUT2TM4);
            CloseRaster(OUT2TM5);
            CloseRaster(OUT2TM7);
        
        	printf("Scene 2 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS2MSS1, xAritTOTALS2MSS2, xAritTOTALS2MSS4;
            numeric yAritTOTALS2MSS1, yAritTOTALS2MSS2, yAritTOTALS2MSS4;
    
            numeric aTOTALS2MSS1, aTOTALS2MSS2, aTOTALS2MSS4;
            numeric bTOTALS2MSS1, bTOTALS2MSS2, bTOTALS2MSS4;
            numeric rTOTALS2MSS1, rTOTALS2MSS2, rTOTALS2MSS4;
            numeric rQuadTOTALS2MSS1, rQuadTOTALS2MSS2, rQuadTOTALS2MSS4;
            numeric syxTOTALS2MSS1, syxTOTALS2MSS2, syxTOTALS2MSS4;
            numeric bStandTOTALS2MSS1, bStandTOTALS2MSS2, bStandTOTALS2MSS4;
            numeric aStandTOTALS2MSS1, aStandTOTALS2MSS2, aStandTOTALS2MSS4;
    
            numeric xTOTALS2MSS1 = 0;
            numeric xTOTALS2MSS2 = 0;
            numeric xTOTALS2MSS4 = 0;
    
            numeric xQuadTOTALS2MSS1 = 0;
            numeric xQuadTOTALS2MSS2 = 0;
            numeric xQuadTOTALS2MSS4 = 0;
    
            numeric yTOTALS2MSS1 = 0;
            numeric yTOTALS2MSS2 = 0;
            numeric yTOTALS2MSS4 = 0;
    
            numeric yQuadTOTALS2MSS1 = 0;
            numeric yQuadTOTALS2MSS2 = 0;
            numeric yQuadTOTALS2MSS4 = 0;
    
            numeric xyTOTALS2MSS1 = 0;
            numeric xyTOTALS2MSS2 = 0;
            numeric xyTOTALS2MSS4 = 0;
    
            numeric xxAritQuadTOTALS2MSS1 = 0;
            numeric xxAritQuadTOTALS2MSS2 = 0;
            numeric xxAritQuadTOTALS2MSS4 = 0;
    
            numeric yyAritQuadTOTALS2MSS1 = 0;
            numeric yyAritQuadTOTALS2MSS2 = 0;
            numeric yyAritQuadTOTALS2MSS4 = 0;
    
            numeric qXYTOTALS2MSS1 = 0;
            numeric qXYTOTALS2MSS2 = 0;
            numeric qXYTOTALS2MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS2MSS1 = xTOTALS2MSS1 + pifTOTALS3TM2arrayRAND[m];
                xTOTALS2MSS2 = xTOTALS2MSS2 + pifTOTALS3TM3arrayRAND[m];
                xTOTALS2MSS4 = xTOTALS2MSS4 + pifTOTALS3TM4arrayRAND[m];
    
                xQuadTOTALS2MSS1 = (xQuadTOTALS2MSS1 + (pifTOTALS3TM2arrayRAND[m]^2));
                xQuadTOTALS2MSS2 = (xQuadTOTALS2MSS2 + (pifTOTALS3TM3arrayRAND[m]^2));
                xQuadTOTALS2MSS4 = (xQuadTOTALS2MSS4 + (pifTOTALS3TM4arrayRAND[m]^2));
    
                yTOTALS2MSS1 = yTOTALS2MSS1 + pifTOTALS2MSS1arrayRAND[m];
                yTOTALS2MSS2 = yTOTALS2MSS2 + pifTOTALS2MSS2arrayRAND[m];
                yTOTALS2MSS4 = yTOTALS2MSS4 + pifTOTALS2MSS4arrayRAND[m];
                
                yQuadTOTALS2MSS1 = (yQuadTOTALS2MSS1 + (pifTOTALS2MSS1arrayRAND[m]^2));
                yQuadTOTALS2MSS2 = (yQuadTOTALS2MSS2 + (pifTOTALS2MSS2arrayRAND[m]^2));
                yQuadTOTALS2MSS4 = (yQuadTOTALS2MSS4 + (pifTOTALS2MSS4arrayRAND[m]^2));
    
                xyTOTALS2MSS1 = (xyTOTALS2MSS1 + (pifTOTALS3TM2arrayRAND[m] * pifTOTALS2MSS1arrayRAND[m]));
                xyTOTALS2MSS2 = (xyTOTALS2MSS2 + (pifTOTALS3TM3arrayRAND[m] * pifTOTALS2MSS2arrayRAND[m]));
                xyTOTALS2MSS4 = (xyTOTALS2MSS4 + (pifTOTALS3TM4arrayRAND[m] * pifTOTALS2MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS2MSS1 = xTOTALS2MSS1 / minPifVAL;
            xAritTOTALS2MSS2 = xTOTALS2MSS2 / minPifVAL;
            xAritTOTALS2MSS4 = xTOTALS2MSS4 / minPifVAL;
    
            yAritTOTALS2MSS1 = yTOTALS2MSS1 / minPifVAL;
            yAritTOTALS2MSS2 = yTOTALS2MSS2 / minPifVAL;
            yAritTOTALS2MSS4 = yTOTALS2MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2MSS1 = (xxAritQuadTOTALS2MSS1 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS2MSS1)^2));
                xxAritQuadTOTALS2MSS2 = (xxAritQuadTOTALS2MSS2 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS2MSS2)^2));
                xxAritQuadTOTALS2MSS4 = (xxAritQuadTOTALS2MSS4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS2MSS4)^2));
    
                yyAritQuadTOTALS2MSS1 = (yyAritQuadTOTALS2MSS1 + ((pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)^2));
                yyAritQuadTOTALS2MSS2 = (yyAritQuadTOTALS2MSS2 + ((pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)^2));
                yyAritQuadTOTALS2MSS4 = (yyAritQuadTOTALS2MSS4 + ((pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)^2));
    
                qXYTOTALS2MSS1 = (qXYTOTALS2MSS1 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS2MSS1) * (pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)));
                qXYTOTALS2MSS2 = (qXYTOTALS2MSS2 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS2MSS2) * (pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)));
                qXYTOTALS2MSS4 = (qXYTOTALS2MSS4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS2MSS4) * (pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)));
            }
        
            aTOTALS2MSS1 = (((xQuadTOTALS2MSS1 * yTOTALS2MSS1) - (xTOTALS2MSS1 * xyTOTALS2MSS1)) / ((minPifVAL * xQuadTOTALS2MSS1) - (xTOTALS2MSS1^2)));
            aTOTALS2MSS2 = (((xQuadTOTALS2MSS2 * yTOTALS2MSS2) - (xTOTALS2MSS2 * xyTOTALS2MSS2)) / ((minPifVAL * xQuadTOTALS2MSS2) - (xTOTALS2MSS2^2)));
            aTOTALS2MSS4 = (((xQuadTOTALS2MSS4 * yTOTALS2MSS4) - (xTOTALS2MSS4 * xyTOTALS2MSS4)) / ((minPifVAL * xQuadTOTALS2MSS4) - (xTOTALS2MSS4^2)));
            
            bTOTALS2MSS1 = qXYTOTALS2MSS1 / xxAritQuadTOTALS2MSS1;
            bTOTALS2MSS2 = qXYTOTALS2MSS2 / xxAritQuadTOTALS2MSS2;
            bTOTALS2MSS4 = qXYTOTALS2MSS4 / xxAritQuadTOTALS2MSS4;
    
            rTOTALS2MSS1 = (qXYTOTALS2MSS1 / ((xxAritQuadTOTALS2MSS1 * yyAritQuadTOTALS2MSS1)^0.5));
            rTOTALS2MSS2 = (qXYTOTALS2MSS2 / ((xxAritQuadTOTALS2MSS2 * yyAritQuadTOTALS2MSS2)^0.5));
            rTOTALS2MSS4 = (qXYTOTALS2MSS4 / ((xxAritQuadTOTALS2MSS4 * yyAritQuadTOTALS2MSS4)^0.5));
    
            rQuadTOTALS2MSS1 = ((rTOTALS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2MSS2 = ((rTOTALS2MSS2^2) * 100);
            rQuadTOTALS2MSS4 = ((rTOTALS2MSS4^2) * 100);
        
            syxTOTALS2MSS1 = (((yyAritQuadTOTALS2MSS1 - ((qXYTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS2 = (((yyAritQuadTOTALS2MSS2 - ((qXYTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS4 = (((yyAritQuadTOTALS2MSS4 - ((qXYTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2MSS1 = (((syxTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)^0.5);
            bStandTOTALS2MSS2 = (((syxTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)^0.5);
            bStandTOTALS2MSS4 = (((syxTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)^0.5);
    
            aStandTOTALS2MSS1 = (bStandTOTALS2MSS1 * ((xQuadTOTALS2MSS1 / minPifVAL)^0.5));
            aStandTOTALS2MSS2 = (bStandTOTALS2MSS2 * ((xQuadTOTALS2MSS2 / minPifVAL)^0.5));
            aStandTOTALS2MSS4 = (bStandTOTALS2MSS4 * ((xQuadTOTALS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS1, bTOTALS2MSS1, rTOTALS2MSS1, rQuadTOTALS2MSS1, aStandTOTALS2MSS1, bStandTOTALS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS2, bTOTALS2MSS2, rTOTALS2MSS2, rQuadTOTALS2MSS2, aStandTOTALS2MSS2, bStandTOTALS2MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS4, bTOTALS2MSS4, rTOTALS2MSS4, rQuadTOTALS2MSS4, aStandTOTALS2MSS4, bStandTOTALS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS2MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS2MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS2arrayRAND[minPifVAL]);
        
            printf("MSS4: %12f ", pifTOTALS2MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aTOTALS2MSS1 + (bTOTALS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aTOTALS2MSS2 + (bTOTALS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = REFS2MSS3[i,j];
                    OUT2MSS4[i,j] = (aTOTALS2MSS4 + (bTOTALS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT2MSS1);
        	CreatePyramid(OUT2MSS2);
        	CreatePyramid(OUT2MSS3);
        	CreatePyramid(OUT2MSS4);
        
        	CreateHistogram(OUT2MSS1);
        	CreateHistogram(OUT2MSS2);
        	CreateHistogram(OUT2MSS3);
        	CreateHistogram(OUT2MSS4);
        
        	CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors4 == 7 )
            {
            numeric xAritTOTALS4ETM1, xAritTOTALS4ETM2, xAritTOTALS4ETM3, xAritTOTALS4ETM4, xAritTOTALS4ETM5, xAritTOTALS4ETM7;
            numeric yAritTOTALS4ETM1, yAritTOTALS4ETM2, yAritTOTALS4ETM3, yAritTOTALS4ETM4, yAritTOTALS4ETM5, yAritTOTALS4ETM7;
    
            numeric aTOTALS4ETM1, aTOTALS4ETM2, aTOTALS4ETM3, aTOTALS4ETM4, aTOTALS4ETM5, aTOTALS4ETM7;
            numeric bTOTALS4ETM1, bTOTALS4ETM2, bTOTALS4ETM3, bTOTALS4ETM4, bTOTALS4ETM5, bTOTALS4ETM7;
            numeric rTOTALS4ETM1, rTOTALS4ETM2, rTOTALS4ETM3, rTOTALS4ETM4, rTOTALS4ETM5, rTOTALS4ETM7;
            numeric rQuadTOTALS4ETM1, rQuadTOTALS4ETM2, rQuadTOTALS4ETM3, rQuadTOTALS4ETM4, rQuadTOTALS4ETM5, rQuadTOTALS4ETM7;
            numeric syxTOTALS4ETM1, syxTOTALS4ETM2, syxTOTALS4ETM3, syxTOTALS4ETM4, syxTOTALS4ETM5, syxTOTALS4ETM7;
            numeric bStandTOTALS4ETM1, bStandTOTALS4ETM2, bStandTOTALS4ETM3, bStandTOTALS4ETM4, bStandTOTALS4ETM5, bStandTOTALS4ETM7;
            numeric aStandTOTALS4ETM1, aStandTOTALS4ETM2, aStandTOTALS4ETM3, aStandTOTALS4ETM4, aStandTOTALS4ETM5, aStandTOTALS4ETM7;
    
            numeric xTOTALS4ETM1 = 0;
            numeric xTOTALS4ETM2 = 0;
            numeric xTOTALS4ETM3 = 0;
            numeric xTOTALS4ETM4 = 0;
            numeric xTOTALS4ETM5 = 0;
            numeric xTOTALS4ETM7 = 0;
    
            numeric xQuadTOTALS4ETM1 = 0;
            numeric xQuadTOTALS4ETM2 = 0;
            numeric xQuadTOTALS4ETM3 = 0;
            numeric xQuadTOTALS4ETM4 = 0;
            numeric xQuadTOTALS4ETM5 = 0;
            numeric xQuadTOTALS4ETM7 = 0;
    
            numeric yTOTALS4ETM1 = 0;
            numeric yTOTALS4ETM2 = 0;
            numeric yTOTALS4ETM3 = 0;
            numeric yTOTALS4ETM4 = 0;
            numeric yTOTALS4ETM5 = 0;
            numeric yTOTALS4ETM7 = 0;
    
            numeric yQuadTOTALS4ETM1 = 0;
            numeric yQuadTOTALS4ETM2 = 0;
            numeric yQuadTOTALS4ETM3 = 0;
            numeric yQuadTOTALS4ETM4 = 0;
            numeric yQuadTOTALS4ETM5 = 0;
            numeric yQuadTOTALS4ETM7 = 0;
    
            numeric xyTOTALS4ETM1 = 0;
            numeric xyTOTALS4ETM2 = 0;
            numeric xyTOTALS4ETM3 = 0;
            numeric xyTOTALS4ETM4 = 0;
            numeric xyTOTALS4ETM5 = 0;
            numeric xyTOTALS4ETM7 = 0;
    
            numeric xxAritQuadTOTALS4ETM1 = 0;
            numeric xxAritQuadTOTALS4ETM2 = 0;
            numeric xxAritQuadTOTALS4ETM3 = 0;
            numeric xxAritQuadTOTALS4ETM4 = 0;
            numeric xxAritQuadTOTALS4ETM5 = 0;
            numeric xxAritQuadTOTALS4ETM7 = 0;
    
            numeric yyAritQuadTOTALS4ETM1 = 0;
            numeric yyAritQuadTOTALS4ETM2 = 0;
            numeric yyAritQuadTOTALS4ETM3 = 0;
            numeric yyAritQuadTOTALS4ETM4 = 0;
            numeric yyAritQuadTOTALS4ETM5 = 0;
            numeric yyAritQuadTOTALS4ETM7 = 0;
    
            numeric qXYTOTALS4ETM1 = 0;
            numeric qXYTOTALS4ETM2 = 0;
            numeric qXYTOTALS4ETM3 = 0;
            numeric qXYTOTALS4ETM4 = 0;
            numeric qXYTOTALS4ETM5 = 0;
            numeric qXYTOTALS4ETM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS4ETM1 = xTOTALS4ETM1 + pifTOTALS3TM1arrayRAND[m];
                xTOTALS4ETM2 = xTOTALS4ETM2 + pifTOTALS3TM2arrayRAND[m];
                xTOTALS4ETM3 = xTOTALS4ETM3 + pifTOTALS3TM3arrayRAND[m];
                xTOTALS4ETM4 = xTOTALS4ETM4 + pifTOTALS3TM4arrayRAND[m];
                xTOTALS4ETM5 = xTOTALS4ETM5 + pifTOTALS3TM5arrayRAND[m];
                xTOTALS4ETM7 = xTOTALS4ETM7 + pifTOTALS3TM7arrayRAND[m];
    
                xQuadTOTALS4ETM1 = (xQuadTOTALS4ETM1 + (pifTOTALS3TM1arrayRAND[m]^2));
                xQuadTOTALS4ETM2 = (xQuadTOTALS4ETM2 + (pifTOTALS3TM2arrayRAND[m]^2));
                xQuadTOTALS4ETM3 = (xQuadTOTALS4ETM3 + (pifTOTALS3TM3arrayRAND[m]^2));
                xQuadTOTALS4ETM4 = (xQuadTOTALS4ETM4 + (pifTOTALS3TM4arrayRAND[m]^2));
                xQuadTOTALS4ETM5 = (xQuadTOTALS4ETM5 + (pifTOTALS3TM5arrayRAND[m]^2));
                xQuadTOTALS4ETM7 = (xQuadTOTALS4ETM7 + (pifTOTALS3TM7arrayRAND[m]^2));
    
                yTOTALS4ETM1 = yTOTALS4ETM1 + pifTOTALS4ETM1arrayRAND[m];
                yTOTALS4ETM2 = yTOTALS4ETM2 + pifTOTALS4ETM2arrayRAND[m];
                yTOTALS4ETM3 = yTOTALS4ETM3 + pifTOTALS4ETM3arrayRAND[m];
                yTOTALS4ETM4 = yTOTALS4ETM4 + pifTOTALS4ETM4arrayRAND[m];
                yTOTALS4ETM5 = yTOTALS4ETM5 + pifTOTALS4ETM5arrayRAND[m];
                yTOTALS4ETM7 = yTOTALS4ETM7 + pifTOTALS4ETM7arrayRAND[m];
                
                yQuadTOTALS4ETM1 = (yQuadTOTALS4ETM1 + (pifTOTALS4ETM1arrayRAND[m]^2));
                yQuadTOTALS4ETM2 = (yQuadTOTALS4ETM2 + (pifTOTALS4ETM2arrayRAND[m]^2));
                yQuadTOTALS4ETM3 = (yQuadTOTALS4ETM3 + (pifTOTALS4ETM3arrayRAND[m]^2));
                yQuadTOTALS4ETM4 = (yQuadTOTALS4ETM4 + (pifTOTALS4ETM4arrayRAND[m]^2));
                yQuadTOTALS4ETM5 = (yQuadTOTALS4ETM5 + (pifTOTALS4ETM5arrayRAND[m]^2));
                yQuadTOTALS4ETM7 = (yQuadTOTALS4ETM7 + (pifTOTALS4ETM7arrayRAND[m]^2));
    
                xyTOTALS4ETM1 = (xyTOTALS4ETM1 + (pifTOTALS3TM1arrayRAND[m] * pifTOTALS4ETM1arrayRAND[m]));
                xyTOTALS4ETM2 = (xyTOTALS4ETM2 + (pifTOTALS3TM2arrayRAND[m] * pifTOTALS4ETM2arrayRAND[m]));
                xyTOTALS4ETM3 = (xyTOTALS4ETM3 + (pifTOTALS3TM3arrayRAND[m] * pifTOTALS4ETM3arrayRAND[m]));
                xyTOTALS4ETM4 = (xyTOTALS4ETM4 + (pifTOTALS3TM4arrayRAND[m] * pifTOTALS4ETM4arrayRAND[m]));
                xyTOTALS4ETM5 = (xyTOTALS4ETM5 + (pifTOTALS3TM5arrayRAND[m] * pifTOTALS4ETM5arrayRAND[m]));
                xyTOTALS4ETM7 = (xyTOTALS4ETM7 + (pifTOTALS3TM7arrayRAND[m] * pifTOTALS4ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS4ETM1 = xTOTALS4ETM1 / minPifVAL;
            xAritTOTALS4ETM2 = xTOTALS4ETM2 / minPifVAL;
            xAritTOTALS4ETM3 = xTOTALS4ETM3 / minPifVAL;
            xAritTOTALS4ETM4 = xTOTALS4ETM4 / minPifVAL;
            xAritTOTALS4ETM5 = xTOTALS4ETM5 / minPifVAL;
            xAritTOTALS4ETM7 = xTOTALS4ETM7 / minPifVAL;
    
            yAritTOTALS4ETM1 = yTOTALS4ETM1 / minPifVAL;
            yAritTOTALS4ETM2 = yTOTALS4ETM2 / minPifVAL;
            yAritTOTALS4ETM3 = yTOTALS4ETM3 / minPifVAL;
            yAritTOTALS4ETM4 = yTOTALS4ETM4 / minPifVAL;
            yAritTOTALS4ETM5 = yTOTALS4ETM5 / minPifVAL;
            yAritTOTALS4ETM7 = yTOTALS4ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4ETM1 = (xxAritQuadTOTALS4ETM1 + ((pifTOTALS3TM1arrayRAND[n] - xAritTOTALS4ETM1)^2));
                xxAritQuadTOTALS4ETM2 = (xxAritQuadTOTALS4ETM2 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS4ETM2)^2));
                xxAritQuadTOTALS4ETM3 = (xxAritQuadTOTALS4ETM3 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS4ETM3)^2));
                xxAritQuadTOTALS4ETM4 = (xxAritQuadTOTALS4ETM4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS4ETM4)^2));
                xxAritQuadTOTALS4ETM5 = (xxAritQuadTOTALS4ETM5 + ((pifTOTALS3TM5arrayRAND[n] - xAritTOTALS4ETM5)^2));
                xxAritQuadTOTALS4ETM7 = (xxAritQuadTOTALS4ETM7 + ((pifTOTALS3TM7arrayRAND[n] - xAritTOTALS4ETM7)^2));
    
                yyAritQuadTOTALS4ETM1 = (yyAritQuadTOTALS4ETM1 + ((pifTOTALS4ETM1arrayRAND[n] - yAritTOTALS4ETM1)^2));
                yyAritQuadTOTALS4ETM2 = (yyAritQuadTOTALS4ETM2 + ((pifTOTALS4ETM2arrayRAND[n] - yAritTOTALS4ETM2)^2));
                yyAritQuadTOTALS4ETM3 = (yyAritQuadTOTALS4ETM3 + ((pifTOTALS4ETM3arrayRAND[n] - yAritTOTALS4ETM3)^2));
                yyAritQuadTOTALS4ETM4 = (yyAritQuadTOTALS4ETM4 + ((pifTOTALS4ETM4arrayRAND[n] - yAritTOTALS4ETM4)^2));
                yyAritQuadTOTALS4ETM5 = (yyAritQuadTOTALS4ETM5 + ((pifTOTALS4ETM5arrayRAND[n] - yAritTOTALS4ETM5)^2));
                yyAritQuadTOTALS4ETM7 = (yyAritQuadTOTALS4ETM7 + ((pifTOTALS4ETM7arrayRAND[n] - yAritTOTALS4ETM7)^2));
    
                qXYTOTALS4ETM1 = (qXYTOTALS4ETM1 + ((pifTOTALS3TM1arrayRAND[n] - xAritTOTALS4ETM1) * (pifTOTALS4ETM1arrayRAND[n] - yAritTOTALS4ETM1)));
                qXYTOTALS4ETM2 = (qXYTOTALS4ETM2 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS4ETM2) * (pifTOTALS4ETM2arrayRAND[n] - yAritTOTALS4ETM2)));
                qXYTOTALS4ETM3 = (qXYTOTALS4ETM3 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS4ETM3) * (pifTOTALS4ETM3arrayRAND[n] - yAritTOTALS4ETM3)));
                qXYTOTALS4ETM4 = (qXYTOTALS4ETM4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS4ETM4) * (pifTOTALS4ETM4arrayRAND[n] - yAritTOTALS4ETM4)));
                qXYTOTALS4ETM5 = (qXYTOTALS4ETM5 + ((pifTOTALS3TM5arrayRAND[n] - xAritTOTALS4ETM5) * (pifTOTALS4ETM5arrayRAND[n] - yAritTOTALS4ETM5)));
                qXYTOTALS4ETM7 = (qXYTOTALS4ETM7 + ((pifTOTALS3TM7arrayRAND[n] - xAritTOTALS4ETM7) * (pifTOTALS4ETM7arrayRAND[n] - yAritTOTALS4ETM7)));
            }
        
            aTOTALS4ETM1 = (((xQuadTOTALS4ETM1 * yTOTALS4ETM1) - (xTOTALS4ETM1 * xyTOTALS4ETM1)) / ((minPifVAL * xQuadTOTALS4ETM1) - (xTOTALS4ETM1^2)));
            aTOTALS4ETM2 = (((xQuadTOTALS4ETM2 * yTOTALS4ETM2) - (xTOTALS4ETM2 * xyTOTALS4ETM2)) / ((minPifVAL * xQuadTOTALS4ETM2) - (xTOTALS4ETM2^2)));
            aTOTALS4ETM3 = (((xQuadTOTALS4ETM3 * yTOTALS4ETM3) - (xTOTALS4ETM3 * xyTOTALS4ETM3)) / ((minPifVAL * xQuadTOTALS4ETM3) - (xTOTALS4ETM3^2)));
            aTOTALS4ETM4 = (((xQuadTOTALS4ETM4 * yTOTALS4ETM4) - (xTOTALS4ETM4 * xyTOTALS4ETM4)) / ((minPifVAL * xQuadTOTALS4ETM4) - (xTOTALS4ETM4^2)));
            aTOTALS4ETM5 = (((xQuadTOTALS4ETM5 * yTOTALS4ETM5) - (xTOTALS4ETM5 * xyTOTALS4ETM5)) / ((minPifVAL * xQuadTOTALS4ETM5) - (xTOTALS4ETM5^2)));
            aTOTALS4ETM7 = (((xQuadTOTALS4ETM7 * yTOTALS4ETM7) - (xTOTALS4ETM7 * xyTOTALS4ETM7)) / ((minPifVAL * xQuadTOTALS4ETM7) - (xTOTALS4ETM7^2)));
            
            bTOTALS4ETM1 = qXYTOTALS4ETM1 / xxAritQuadTOTALS4ETM1;
            bTOTALS4ETM2 = qXYTOTALS4ETM2 / xxAritQuadTOTALS4ETM2;
            bTOTALS4ETM3 = qXYTOTALS4ETM3 / xxAritQuadTOTALS4ETM3;
            bTOTALS4ETM4 = qXYTOTALS4ETM4 / xxAritQuadTOTALS4ETM4;
            bTOTALS4ETM5 = qXYTOTALS4ETM5 / xxAritQuadTOTALS4ETM5;
            bTOTALS4ETM7 = qXYTOTALS4ETM7 / xxAritQuadTOTALS4ETM7;
    
            rTOTALS4ETM1 = (qXYTOTALS4ETM1 / ((xxAritQuadTOTALS4ETM1 * yyAritQuadTOTALS4ETM1)^0.5));
            rTOTALS4ETM2 = (qXYTOTALS4ETM2 / ((xxAritQuadTOTALS4ETM2 * yyAritQuadTOTALS4ETM2)^0.5));
            rTOTALS4ETM3 = (qXYTOTALS4ETM3 / ((xxAritQuadTOTALS4ETM3 * yyAritQuadTOTALS4ETM3)^0.5));
            rTOTALS4ETM4 = (qXYTOTALS4ETM4 / ((xxAritQuadTOTALS4ETM4 * yyAritQuadTOTALS4ETM4)^0.5));
            rTOTALS4ETM5 = (qXYTOTALS4ETM5 / ((xxAritQuadTOTALS4ETM5 * yyAritQuadTOTALS4ETM5)^0.5));
            rTOTALS4ETM7 = (qXYTOTALS4ETM7 / ((xxAritQuadTOTALS4ETM7 * yyAritQuadTOTALS4ETM7)^0.5));
    
            rQuadTOTALS4ETM1 = ((rTOTALS4ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4ETM2 = ((rTOTALS4ETM2^2) * 100);
            rQuadTOTALS4ETM3 = ((rTOTALS4ETM3^2) * 100);
            rQuadTOTALS4ETM4 = ((rTOTALS4ETM4^2) * 100);
            rQuadTOTALS4ETM5 = ((rTOTALS4ETM5^2) * 100);
            rQuadTOTALS4ETM7 = ((rTOTALS4ETM7^2) * 100);
        
            syxTOTALS4ETM1 = (((yyAritQuadTOTALS4ETM1 - ((qXYTOTALS4ETM1^2) / xxAritQuadTOTALS4ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM2 = (((yyAritQuadTOTALS4ETM2 - ((qXYTOTALS4ETM2^2) / xxAritQuadTOTALS4ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM3 = (((yyAritQuadTOTALS4ETM3 - ((qXYTOTALS4ETM3^2) / xxAritQuadTOTALS4ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM4 = (((yyAritQuadTOTALS4ETM4 - ((qXYTOTALS4ETM4^2) / xxAritQuadTOTALS4ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM5 = (((yyAritQuadTOTALS4ETM5 - ((qXYTOTALS4ETM5^2) / xxAritQuadTOTALS4ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS4ETM7 = (((yyAritQuadTOTALS4ETM7 - ((qXYTOTALS4ETM7^2) / xxAritQuadTOTALS4ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4ETM1 = (((syxTOTALS4ETM1^2) / xxAritQuadTOTALS4ETM1)^0.5);
            bStandTOTALS4ETM2 = (((syxTOTALS4ETM2^2) / xxAritQuadTOTALS4ETM2)^0.5);
            bStandTOTALS4ETM3 = (((syxTOTALS4ETM3^2) / xxAritQuadTOTALS4ETM3)^0.5);
            bStandTOTALS4ETM4 = (((syxTOTALS4ETM4^2) / xxAritQuadTOTALS4ETM4)^0.5);
            bStandTOTALS4ETM5 = (((syxTOTALS4ETM5^2) / xxAritQuadTOTALS4ETM5)^0.5);
            bStandTOTALS4ETM7 = (((syxTOTALS4ETM7^2) / xxAritQuadTOTALS4ETM7)^0.5);
    
            aStandTOTALS4ETM1 = (bStandTOTALS4ETM1 * ((xQuadTOTALS4ETM1 / minPifVAL)^0.5));
            aStandTOTALS4ETM2 = (bStandTOTALS4ETM2 * ((xQuadTOTALS4ETM2 / minPifVAL)^0.5));
            aStandTOTALS4ETM3 = (bStandTOTALS4ETM3 * ((xQuadTOTALS4ETM3 / minPifVAL)^0.5));
            aStandTOTALS4ETM4 = (bStandTOTALS4ETM4 * ((xQuadTOTALS4ETM4 / minPifVAL)^0.5));
            aStandTOTALS4ETM5 = (bStandTOTALS4ETM5 * ((xQuadTOTALS4ETM5 / minPifVAL)^0.5));
            aStandTOTALS4ETM7 = (bStandTOTALS4ETM7 * ((xQuadTOTALS4ETM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM1, bTOTALS4ETM1, rTOTALS4ETM1, rQuadTOTALS4ETM1, aStandTOTALS4ETM1, bStandTOTALS4ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM2, bTOTALS4ETM2, rTOTALS4ETM2, rQuadTOTALS4ETM2, aStandTOTALS4ETM2, bStandTOTALS4ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM3, bTOTALS4ETM3, rTOTALS4ETM3, rQuadTOTALS4ETM3, aStandTOTALS4ETM3, bStandTOTALS4ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM4, bTOTALS4ETM4, rTOTALS4ETM4, rQuadTOTALS4ETM4, aStandTOTALS4ETM4, bStandTOTALS4ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS4ETM5, bTOTALS4ETM5, rTOTALS4ETM5, rQuadTOTALS4ETM5, aStandTOTALS4ETM5, bStandTOTALS4ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS4ETM7, bTOTALS4ETM7, rTOTALS4ETM7, rQuadTOTALS4ETM7, aStandTOTALS4ETM7, bStandTOTALS4ETM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS4ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS4ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS4ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS4ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS4ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS4ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS4ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT4ETM1[i,j] = (aTOTALS4ETM1 + (bTOTALS4ETM1 * REFS4ETM1[i,j]));
                    OUT4ETM2[i,j] = (aTOTALS4ETM2 + (bTOTALS4ETM2 * REFS4ETM2[i,j]));
                    OUT4ETM3[i,j] = (aTOTALS4ETM3 + (bTOTALS4ETM3 * REFS4ETM3[i,j]));
                    OUT4ETM4[i,j] = (aTOTALS4ETM4 + (bTOTALS4ETM4 * REFS4ETM4[i,j]));
                    OUT4ETM5[i,j] = (aTOTALS4ETM5 + (bTOTALS4ETM5 * REFS4ETM5[i,j]));
                    OUT4ETM7[i,j] = (aTOTALS4ETM7 + (bTOTALS4ETM7 * REFS4ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4ETM1);
        	CreatePyramid(OUT4ETM2);
        	CreatePyramid(OUT4ETM3);
        	CreatePyramid(OUT4ETM4);
        	CreatePyramid(OUT4ETM5);
        	CreatePyramid(OUT4ETM7);
        
        	CreateHistogram(OUT4ETM1);
        	CreateHistogram(OUT4ETM2);
        	CreateHistogram(OUT4ETM3);
        	CreateHistogram(OUT4ETM4);
        	CreateHistogram(OUT4ETM5);
        	CreateHistogram(OUT4ETM7);
        
        	CloseRaster(REFS4ETM1);
            CloseRaster(REFS4ETM2);
            CloseRaster(REFS4ETM3);
            CloseRaster(REFS4ETM4);
            CloseRaster(REFS4ETM5);
            CloseRaster(REFS4ETM7);
    
            CloseRaster(OUT4ETM1);
            CloseRaster(OUT4ETM2);
            CloseRaster(OUT4ETM3);
            CloseRaster(OUT4ETM4);
            CloseRaster(OUT4ETM5);
            CloseRaster(OUT4ETM7);
        
        	printf("Scene 4 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors4 == 6 )
            {
            numeric xAritTOTALS4TM1, xAritTOTALS4TM2, xAritTOTALS4TM3, xAritTOTALS4TM4, xAritTOTALS4TM5, xAritTOTALS4TM7;
            numeric yAritTOTALS4TM1, yAritTOTALS4TM2, yAritTOTALS4TM3, yAritTOTALS4TM4, yAritTOTALS4TM5, yAritTOTALS4TM7;
    
            numeric aTOTALS4TM1, aTOTALS4TM2, aTOTALS4TM3, aTOTALS4TM4, aTOTALS4TM5, aTOTALS4TM7;
            numeric bTOTALS4TM1, bTOTALS4TM2, bTOTALS4TM3, bTOTALS4TM4, bTOTALS4TM5, bTOTALS4TM7;
            numeric rTOTALS4TM1, rTOTALS4TM2, rTOTALS4TM3, rTOTALS4TM4, rTOTALS4TM5, rTOTALS4TM7;
            numeric rQuadTOTALS4TM1, rQuadTOTALS4TM2, rQuadTOTALS4TM3, rQuadTOTALS4TM4, rQuadTOTALS4TM5, rQuadTOTALS4TM7;
            numeric syxTOTALS4TM1, syxTOTALS4TM2, syxTOTALS4TM3, syxTOTALS4TM4, syxTOTALS4TM5, syxTOTALS4TM7;
            numeric bStandTOTALS4TM1, bStandTOTALS4TM2, bStandTOTALS4TM3, bStandTOTALS4TM4, bStandTOTALS4TM5, bStandTOTALS4TM7;
            numeric aStandTOTALS4TM1, aStandTOTALS4TM2, aStandTOTALS4TM3, aStandTOTALS4TM4, aStandTOTALS4TM5, aStandTOTALS4TM7;
    
            numeric xTOTALS4TM1 = 0;
            numeric xTOTALS4TM2 = 0;
            numeric xTOTALS4TM3 = 0;
            numeric xTOTALS4TM4 = 0;
            numeric xTOTALS4TM5 = 0;
            numeric xTOTALS4TM7 = 0;
    
            numeric xQuadTOTALS4TM1 = 0;
            numeric xQuadTOTALS4TM2 = 0;
            numeric xQuadTOTALS4TM3 = 0;
            numeric xQuadTOTALS4TM4 = 0;
            numeric xQuadTOTALS4TM5 = 0;
            numeric xQuadTOTALS4TM7 = 0;
    
            numeric yTOTALS4TM1 = 0;
            numeric yTOTALS4TM2 = 0;
            numeric yTOTALS4TM3 = 0;
            numeric yTOTALS4TM4 = 0;
            numeric yTOTALS4TM5 = 0;
            numeric yTOTALS4TM7 = 0;
    
            numeric yQuadTOTALS4TM1 = 0;
            numeric yQuadTOTALS4TM2 = 0;
            numeric yQuadTOTALS4TM3 = 0;
            numeric yQuadTOTALS4TM4 = 0;
            numeric yQuadTOTALS4TM5 = 0;
            numeric yQuadTOTALS4TM7 = 0;
    
            numeric xyTOTALS4TM1 = 0;
            numeric xyTOTALS4TM2 = 0;
            numeric xyTOTALS4TM3 = 0;
            numeric xyTOTALS4TM4 = 0;
            numeric xyTOTALS4TM5 = 0;
            numeric xyTOTALS4TM7 = 0;
    
            numeric xxAritQuadTOTALS4TM1 = 0;
            numeric xxAritQuadTOTALS4TM2 = 0;
            numeric xxAritQuadTOTALS4TM3 = 0;
            numeric xxAritQuadTOTALS4TM4 = 0;
            numeric xxAritQuadTOTALS4TM5 = 0;
            numeric xxAritQuadTOTALS4TM7 = 0;
    
            numeric yyAritQuadTOTALS4TM1 = 0;
            numeric yyAritQuadTOTALS4TM2 = 0;
            numeric yyAritQuadTOTALS4TM3 = 0;
            numeric yyAritQuadTOTALS4TM4 = 0;
            numeric yyAritQuadTOTALS4TM5 = 0;
            numeric yyAritQuadTOTALS4TM7 = 0;
    
            numeric qXYTOTALS4TM1 = 0;
            numeric qXYTOTALS4TM2 = 0;
            numeric qXYTOTALS4TM3 = 0;
            numeric qXYTOTALS4TM4 = 0;
            numeric qXYTOTALS4TM5 = 0;
            numeric qXYTOTALS4TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS4TM1 = xTOTALS4TM1 + pifTOTALS3TM1arrayRAND[m];
                xTOTALS4TM2 = xTOTALS4TM2 + pifTOTALS3TM2arrayRAND[m];
                xTOTALS4TM3 = xTOTALS4TM3 + pifTOTALS3TM3arrayRAND[m];
                xTOTALS4TM4 = xTOTALS4TM4 + pifTOTALS3TM4arrayRAND[m];
                xTOTALS4TM5 = xTOTALS4TM5 + pifTOTALS3TM5arrayRAND[m];
                xTOTALS4TM7 = xTOTALS4TM7 + pifTOTALS3TM7arrayRAND[m];
    
                xQuadTOTALS4TM1 = (xQuadTOTALS4TM1 + (pifTOTALS3TM1arrayRAND[m]^2));
                xQuadTOTALS4TM2 = (xQuadTOTALS4TM2 + (pifTOTALS3TM2arrayRAND[m]^2));
                xQuadTOTALS4TM3 = (xQuadTOTALS4TM3 + (pifTOTALS3TM3arrayRAND[m]^2));
                xQuadTOTALS4TM4 = (xQuadTOTALS4TM4 + (pifTOTALS3TM4arrayRAND[m]^2));
                xQuadTOTALS4TM5 = (xQuadTOTALS4TM5 + (pifTOTALS3TM5arrayRAND[m]^2));
                xQuadTOTALS4TM7 = (xQuadTOTALS4TM7 + (pifTOTALS3TM7arrayRAND[m]^2));
    
                yTOTALS4TM1 = yTOTALS4TM1 + pifTOTALS4TM1arrayRAND[m];
                yTOTALS4TM2 = yTOTALS4TM2 + pifTOTALS4TM2arrayRAND[m];
                yTOTALS4TM3 = yTOTALS4TM3 + pifTOTALS4TM3arrayRAND[m];
                yTOTALS4TM4 = yTOTALS4TM4 + pifTOTALS4TM4arrayRAND[m];
                yTOTALS4TM5 = yTOTALS4TM5 + pifTOTALS4TM5arrayRAND[m];
                yTOTALS4TM7 = yTOTALS4TM7 + pifTOTALS4TM7arrayRAND[m];
                
                yQuadTOTALS4TM1 = (yQuadTOTALS4TM1 + (pifTOTALS4TM1arrayRAND[m]^2));
                yQuadTOTALS4TM2 = (yQuadTOTALS4TM2 + (pifTOTALS4TM2arrayRAND[m]^2));
                yQuadTOTALS4TM3 = (yQuadTOTALS4TM3 + (pifTOTALS4TM3arrayRAND[m]^2));
                yQuadTOTALS4TM4 = (yQuadTOTALS4TM4 + (pifTOTALS4TM4arrayRAND[m]^2));
                yQuadTOTALS4TM5 = (yQuadTOTALS4TM5 + (pifTOTALS4TM5arrayRAND[m]^2));
                yQuadTOTALS4TM7 = (yQuadTOTALS4TM7 + (pifTOTALS4TM7arrayRAND[m]^2));
    
                xyTOTALS4TM1 = (xyTOTALS4TM1 + (pifTOTALS3TM1arrayRAND[m] * pifTOTALS4TM1arrayRAND[m]));
                xyTOTALS4TM2 = (xyTOTALS4TM2 + (pifTOTALS3TM2arrayRAND[m] * pifTOTALS4TM2arrayRAND[m]));
                xyTOTALS4TM3 = (xyTOTALS4TM3 + (pifTOTALS3TM3arrayRAND[m] * pifTOTALS4TM3arrayRAND[m]));
                xyTOTALS4TM4 = (xyTOTALS4TM4 + (pifTOTALS3TM4arrayRAND[m] * pifTOTALS4TM4arrayRAND[m]));
                xyTOTALS4TM5 = (xyTOTALS4TM5 + (pifTOTALS3TM5arrayRAND[m] * pifTOTALS4TM5arrayRAND[m]));
                xyTOTALS4TM7 = (xyTOTALS4TM7 + (pifTOTALS3TM7arrayRAND[m] * pifTOTALS4TM7arrayRAND[m]));
            }	
            
            xAritTOTALS4TM1 = xTOTALS4TM1 / minPifVAL;
            xAritTOTALS4TM2 = xTOTALS4TM2 / minPifVAL;
            xAritTOTALS4TM3 = xTOTALS4TM3 / minPifVAL;
            xAritTOTALS4TM4 = xTOTALS4TM4 / minPifVAL;
            xAritTOTALS4TM5 = xTOTALS4TM5 / minPifVAL;
            xAritTOTALS4TM7 = xTOTALS4TM7 / minPifVAL;
    
            yAritTOTALS4TM1 = yTOTALS4TM1 / minPifVAL;
            yAritTOTALS4TM2 = yTOTALS4TM2 / minPifVAL;
            yAritTOTALS4TM3 = yTOTALS4TM3 / minPifVAL;
            yAritTOTALS4TM4 = yTOTALS4TM4 / minPifVAL;
            yAritTOTALS4TM5 = yTOTALS4TM5 / minPifVAL;
            yAritTOTALS4TM7 = yTOTALS4TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4TM1 = (xxAritQuadTOTALS4TM1 + ((pifTOTALS3TM1arrayRAND[n] - xAritTOTALS4TM1)^2));
                xxAritQuadTOTALS4TM2 = (xxAritQuadTOTALS4TM2 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS4TM2)^2));
                xxAritQuadTOTALS4TM3 = (xxAritQuadTOTALS4TM3 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS4TM3)^2));
                xxAritQuadTOTALS4TM4 = (xxAritQuadTOTALS4TM4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS4TM4)^2));
                xxAritQuadTOTALS4TM5 = (xxAritQuadTOTALS4TM5 + ((pifTOTALS3TM5arrayRAND[n] - xAritTOTALS4TM5)^2));
                xxAritQuadTOTALS4TM7 = (xxAritQuadTOTALS4TM7 + ((pifTOTALS3TM7arrayRAND[n] - xAritTOTALS4TM7)^2));
    
                yyAritQuadTOTALS4TM1 = (yyAritQuadTOTALS4TM1 + ((pifTOTALS4TM1arrayRAND[n] - yAritTOTALS4TM1)^2));
                yyAritQuadTOTALS4TM2 = (yyAritQuadTOTALS4TM2 + ((pifTOTALS4TM2arrayRAND[n] - yAritTOTALS4TM2)^2));
                yyAritQuadTOTALS4TM3 = (yyAritQuadTOTALS4TM3 + ((pifTOTALS4TM3arrayRAND[n] - yAritTOTALS4TM3)^2));
                yyAritQuadTOTALS4TM4 = (yyAritQuadTOTALS4TM4 + ((pifTOTALS4TM4arrayRAND[n] - yAritTOTALS4TM4)^2));
                yyAritQuadTOTALS4TM5 = (yyAritQuadTOTALS4TM5 + ((pifTOTALS4TM5arrayRAND[n] - yAritTOTALS4TM5)^2));
                yyAritQuadTOTALS4TM7 = (yyAritQuadTOTALS4TM7 + ((pifTOTALS4TM7arrayRAND[n] - yAritTOTALS4TM7)^2));
    
                qXYTOTALS4TM1 = (qXYTOTALS4TM1 + ((pifTOTALS3TM1arrayRAND[n] - xAritTOTALS4TM1) * (pifTOTALS4TM1arrayRAND[n] - yAritTOTALS4TM1)));
                qXYTOTALS4TM2 = (qXYTOTALS4TM2 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS4TM2) * (pifTOTALS4TM2arrayRAND[n] - yAritTOTALS4TM2)));
                qXYTOTALS4TM3 = (qXYTOTALS4TM3 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS4TM3) * (pifTOTALS4TM3arrayRAND[n] - yAritTOTALS4TM3)));
                qXYTOTALS4TM4 = (qXYTOTALS4TM4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS4TM4) * (pifTOTALS4TM4arrayRAND[n] - yAritTOTALS4TM4)));
                qXYTOTALS4TM5 = (qXYTOTALS4TM5 + ((pifTOTALS3TM5arrayRAND[n] - xAritTOTALS4TM5) * (pifTOTALS4TM5arrayRAND[n] - yAritTOTALS4TM5)));
                qXYTOTALS4TM7 = (qXYTOTALS4TM7 + ((pifTOTALS3TM7arrayRAND[n] - xAritTOTALS4TM7) * (pifTOTALS4TM7arrayRAND[n] - yAritTOTALS4TM7)));
            }
        
            aTOTALS4TM1 = (((xQuadTOTALS4TM1 * yTOTALS4TM1) - (xTOTALS4TM1 * xyTOTALS4TM1)) / ((minPifVAL * xQuadTOTALS4TM1) - (xTOTALS4TM1^2)));
            aTOTALS4TM2 = (((xQuadTOTALS4TM2 * yTOTALS4TM2) - (xTOTALS4TM2 * xyTOTALS4TM2)) / ((minPifVAL * xQuadTOTALS4TM2) - (xTOTALS4TM2^2)));
            aTOTALS4TM3 = (((xQuadTOTALS4TM3 * yTOTALS4TM3) - (xTOTALS4TM3 * xyTOTALS4TM3)) / ((minPifVAL * xQuadTOTALS4TM3) - (xTOTALS4TM3^2)));
            aTOTALS4TM4 = (((xQuadTOTALS4TM4 * yTOTALS4TM4) - (xTOTALS4TM4 * xyTOTALS4TM4)) / ((minPifVAL * xQuadTOTALS4TM4) - (xTOTALS4TM4^2)));
            aTOTALS4TM5 = (((xQuadTOTALS4TM5 * yTOTALS4TM5) - (xTOTALS4TM5 * xyTOTALS4TM5)) / ((minPifVAL * xQuadTOTALS4TM5) - (xTOTALS4TM5^2)));
            aTOTALS4TM7 = (((xQuadTOTALS4TM7 * yTOTALS4TM7) - (xTOTALS4TM7 * xyTOTALS4TM7)) / ((minPifVAL * xQuadTOTALS4TM7) - (xTOTALS4TM7^2)));
            
            bTOTALS4TM1 = qXYTOTALS4TM1 / xxAritQuadTOTALS4TM1;
            bTOTALS4TM2 = qXYTOTALS4TM2 / xxAritQuadTOTALS4TM2;
            bTOTALS4TM3 = qXYTOTALS4TM3 / xxAritQuadTOTALS4TM3;
            bTOTALS4TM4 = qXYTOTALS4TM4 / xxAritQuadTOTALS4TM4;
            bTOTALS4TM5 = qXYTOTALS4TM5 / xxAritQuadTOTALS4TM5;
            bTOTALS4TM7 = qXYTOTALS4TM7 / xxAritQuadTOTALS4TM7;
    
            rTOTALS4TM1 = (qXYTOTALS4TM1 / ((xxAritQuadTOTALS4TM1 * yyAritQuadTOTALS4TM1)^0.5));
            rTOTALS4TM2 = (qXYTOTALS4TM2 / ((xxAritQuadTOTALS4TM2 * yyAritQuadTOTALS4TM2)^0.5));
            rTOTALS4TM3 = (qXYTOTALS4TM3 / ((xxAritQuadTOTALS4TM3 * yyAritQuadTOTALS4TM3)^0.5));
            rTOTALS4TM4 = (qXYTOTALS4TM4 / ((xxAritQuadTOTALS4TM4 * yyAritQuadTOTALS4TM4)^0.5));
            rTOTALS4TM5 = (qXYTOTALS4TM5 / ((xxAritQuadTOTALS4TM5 * yyAritQuadTOTALS4TM5)^0.5));
            rTOTALS4TM7 = (qXYTOTALS4TM7 / ((xxAritQuadTOTALS4TM7 * yyAritQuadTOTALS4TM7)^0.5));
    
            rQuadTOTALS4TM1 = ((rTOTALS4TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4TM2 = ((rTOTALS4TM2^2) * 100);
            rQuadTOTALS4TM3 = ((rTOTALS4TM3^2) * 100);
            rQuadTOTALS4TM4 = ((rTOTALS4TM4^2) * 100);
            rQuadTOTALS4TM5 = ((rTOTALS4TM5^2) * 100);
            rQuadTOTALS4TM7 = ((rTOTALS4TM7^2) * 100);
        
            syxTOTALS4TM1 = (((yyAritQuadTOTALS4TM1 - ((qXYTOTALS4TM1^2) / xxAritQuadTOTALS4TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM2 = (((yyAritQuadTOTALS4TM2 - ((qXYTOTALS4TM2^2) / xxAritQuadTOTALS4TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM3 = (((yyAritQuadTOTALS4TM3 - ((qXYTOTALS4TM3^2) / xxAritQuadTOTALS4TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM4 = (((yyAritQuadTOTALS4TM4 - ((qXYTOTALS4TM4^2) / xxAritQuadTOTALS4TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM5 = (((yyAritQuadTOTALS4TM5 - ((qXYTOTALS4TM5^2) / xxAritQuadTOTALS4TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS4TM7 = (((yyAritQuadTOTALS4TM7 - ((qXYTOTALS4TM7^2) / xxAritQuadTOTALS4TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4TM1 = (((syxTOTALS4TM1^2) / xxAritQuadTOTALS4TM1)^0.5);
            bStandTOTALS4TM2 = (((syxTOTALS4TM2^2) / xxAritQuadTOTALS4TM2)^0.5);
            bStandTOTALS4TM3 = (((syxTOTALS4TM3^2) / xxAritQuadTOTALS4TM3)^0.5);
            bStandTOTALS4TM4 = (((syxTOTALS4TM4^2) / xxAritQuadTOTALS4TM4)^0.5);
            bStandTOTALS4TM5 = (((syxTOTALS4TM5^2) / xxAritQuadTOTALS4TM5)^0.5);
            bStandTOTALS4TM7 = (((syxTOTALS4TM7^2) / xxAritQuadTOTALS4TM7)^0.5);
    
            aStandTOTALS4TM1 = (bStandTOTALS4TM1 * ((xQuadTOTALS4TM1 / minPifVAL)^0.5));
            aStandTOTALS4TM2 = (bStandTOTALS4TM2 * ((xQuadTOTALS4TM2 / minPifVAL)^0.5));
            aStandTOTALS4TM3 = (bStandTOTALS4TM3 * ((xQuadTOTALS4TM3 / minPifVAL)^0.5));
            aStandTOTALS4TM4 = (bStandTOTALS4TM4 * ((xQuadTOTALS4TM4 / minPifVAL)^0.5));
            aStandTOTALS4TM5 = (bStandTOTALS4TM5 * ((xQuadTOTALS4TM5 / minPifVAL)^0.5));
            aStandTOTALS4TM7 = (bStandTOTALS4TM7 * ((xQuadTOTALS4TM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM1, bTOTALS4TM1, rTOTALS4TM1, rQuadTOTALS4TM1, aStandTOTALS4TM1, bStandTOTALS4TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM2, bTOTALS4TM2, rTOTALS4TM2, rQuadTOTALS4TM2, aStandTOTALS4TM2, bStandTOTALS4TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM3, bTOTALS4TM3, rTOTALS4TM3, rQuadTOTALS4TM3, aStandTOTALS4TM3, bStandTOTALS4TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM4, bTOTALS4TM4, rTOTALS4TM4, rQuadTOTALS4TM4, aStandTOTALS4TM4, bStandTOTALS4TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS4TM5, bTOTALS4TM5, rTOTALS4TM5, rQuadTOTALS4TM5, aStandTOTALS4TM5, bStandTOTALS4TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS4TM7, bTOTALS4TM7, rTOTALS4TM7, rQuadTOTALS4TM7, aStandTOTALS4TM7, bStandTOTALS4TM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS4TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS4TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS4TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS4TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS4TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS4TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS4TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT4TM1[i,j] = (aTOTALS4TM1 + (bTOTALS4TM1 * REFS4TM1[i,j]));
                    OUT4TM2[i,j] = (aTOTALS4TM2 + (bTOTALS4TM2 * REFS4TM2[i,j]));
                    OUT4TM3[i,j] = (aTOTALS4TM3 + (bTOTALS4TM3 * REFS4TM3[i,j]));
                    OUT4TM4[i,j] = (aTOTALS4TM4 + (bTOTALS4TM4 * REFS4TM4[i,j]));
                    OUT4TM5[i,j] = (aTOTALS4TM5 + (bTOTALS4TM5 * REFS4TM5[i,j]));
                    OUT4TM7[i,j] = (aTOTALS4TM7 + (bTOTALS4TM7 * REFS4TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4TM1);
        	CreatePyramid(OUT4TM2);
        	CreatePyramid(OUT4TM3);
        	CreatePyramid(OUT4TM4);
        	CreatePyramid(OUT4TM5);
        	CreatePyramid(OUT4TM7);
        
        	CreateHistogram(OUT4TM1);
        	CreateHistogram(OUT4TM2);
        	CreateHistogram(OUT4TM3);
        	CreateHistogram(OUT4TM4);
        	CreateHistogram(OUT4TM5);
        	CreateHistogram(OUT4TM7);
        
        	CloseRaster(REFS4TM1);
            CloseRaster(REFS4TM2);
            CloseRaster(REFS4TM3);
            CloseRaster(REFS4TM4);
            CloseRaster(REFS4TM5);
            CloseRaster(REFS4TM7);
    
            CloseRaster(OUT4TM1);
            CloseRaster(OUT4TM2);
            CloseRaster(OUT4TM3);
            CloseRaster(OUT4TM4);
            CloseRaster(OUT4TM5);
            CloseRaster(OUT4TM7);
        
        	printf("Scene 4 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS4MSS1, xAritTOTALS4MSS2, xAritTOTALS4MSS4;
            numeric yAritTOTALS4MSS1, yAritTOTALS4MSS2, yAritTOTALS4MSS4;
    
            numeric aTOTALS4MSS1, aTOTALS4MSS2, aTOTALS4MSS4;
            numeric bTOTALS4MSS1, bTOTALS4MSS2, bTOTALS4MSS4;
            numeric rTOTALS4MSS1, rTOTALS4MSS2, rTOTALS4MSS4;
            numeric rQuadTOTALS4MSS1, rQuadTOTALS4MSS2, rQuadTOTALS4MSS4;
            numeric syxTOTALS4MSS1, syxTOTALS4MSS2, syxTOTALS4MSS4;
            numeric bStandTOTALS4MSS1, bStandTOTALS4MSS2, bStandTOTALS4MSS4;
            numeric aStandTOTALS4MSS1, aStandTOTALS4MSS2, aStandTOTALS4MSS4;
    
            numeric xTOTALS4MSS1 = 0;
            numeric xTOTALS4MSS2 = 0;
            numeric xTOTALS4MSS4 = 0;
    
            numeric xQuadTOTALS4MSS1 = 0;
            numeric xQuadTOTALS4MSS2 = 0;
            numeric xQuadTOTALS4MSS4 = 0;
    
            numeric yTOTALS4MSS1 = 0;
            numeric yTOTALS4MSS2 = 0;
            numeric yTOTALS4MSS4 = 0;
    
            numeric yQuadTOTALS4MSS1 = 0;
            numeric yQuadTOTALS4MSS2 = 0;
            numeric yQuadTOTALS4MSS4 = 0;
    
            numeric xyTOTALS4MSS1 = 0;
            numeric xyTOTALS4MSS2 = 0;
            numeric xyTOTALS4MSS4 = 0;
    
            numeric xxAritQuadTOTALS4MSS1 = 0;
            numeric xxAritQuadTOTALS4MSS2 = 0;
            numeric xxAritQuadTOTALS4MSS4 = 0;
    
            numeric yyAritQuadTOTALS4MSS1 = 0;
            numeric yyAritQuadTOTALS4MSS2 = 0;
            numeric yyAritQuadTOTALS4MSS4 = 0;
    
            numeric qXYTOTALS4MSS1 = 0;
            numeric qXYTOTALS4MSS2 = 0;
            numeric qXYTOTALS4MSS4 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS4MSS1 = xTOTALS4MSS1 + pifTOTALS3TM2arrayRAND[m];
                xTOTALS4MSS2 = xTOTALS4MSS2 + pifTOTALS3TM3arrayRAND[m];
                xTOTALS4MSS4 = xTOTALS4MSS4 + pifTOTALS3TM4arrayRAND[m];
    
                xQuadTOTALS4MSS1 = (xQuadTOTALS4MSS1 + (pifTOTALS3TM2arrayRAND[m]^2));
                xQuadTOTALS4MSS2 = (xQuadTOTALS4MSS2 + (pifTOTALS3TM3arrayRAND[m]^2));
                xQuadTOTALS4MSS4 = (xQuadTOTALS4MSS4 + (pifTOTALS3TM4arrayRAND[m]^2));
    
                yTOTALS4MSS1 = yTOTALS4MSS1 + pifTOTALS4MSS1arrayRAND[m];
                yTOTALS4MSS2 = yTOTALS4MSS2 + pifTOTALS4MSS2arrayRAND[m];
                yTOTALS4MSS4 = yTOTALS4MSS4 + pifTOTALS4MSS4arrayRAND[m];
                
                yQuadTOTALS4MSS1 = (yQuadTOTALS4MSS1 + (pifTOTALS4MSS1arrayRAND[m]^2));
                yQuadTOTALS4MSS2 = (yQuadTOTALS4MSS2 + (pifTOTALS4MSS2arrayRAND[m]^2));
                yQuadTOTALS4MSS4 = (yQuadTOTALS4MSS4 + (pifTOTALS4MSS4arrayRAND[m]^2));
    
                xyTOTALS4MSS1 = (xyTOTALS4MSS1 + (pifTOTALS3TM2arrayRAND[m] * pifTOTALS4MSS1arrayRAND[m]));
                xyTOTALS4MSS2 = (xyTOTALS4MSS2 + (pifTOTALS3TM3arrayRAND[m] * pifTOTALS4MSS2arrayRAND[m]));
                xyTOTALS4MSS4 = (xyTOTALS4MSS4 + (pifTOTALS3TM4arrayRAND[m] * pifTOTALS4MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS4MSS1 = xTOTALS4MSS1 / minPifVAL;
            xAritTOTALS4MSS2 = xTOTALS4MSS2 / minPifVAL;
            xAritTOTALS4MSS4 = xTOTALS4MSS4 / minPifVAL;
    
            yAritTOTALS4MSS1 = yTOTALS4MSS1 / minPifVAL;
            yAritTOTALS4MSS2 = yTOTALS4MSS2 / minPifVAL;
            yAritTOTALS4MSS4 = yTOTALS4MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4MSS1 = (xxAritQuadTOTALS4MSS1 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS4MSS1)^2));
                xxAritQuadTOTALS4MSS2 = (xxAritQuadTOTALS4MSS2 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS4MSS2)^2));
                xxAritQuadTOTALS4MSS4 = (xxAritQuadTOTALS4MSS4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS4MSS4)^2));
    
                yyAritQuadTOTALS4MSS1 = (yyAritQuadTOTALS4MSS1 + ((pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)^2));
                yyAritQuadTOTALS4MSS2 = (yyAritQuadTOTALS4MSS2 + ((pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)^2));
                yyAritQuadTOTALS4MSS4 = (yyAritQuadTOTALS4MSS4 + ((pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)^2));
    
                qXYTOTALS4MSS1 = (qXYTOTALS4MSS1 + ((pifTOTALS3TM2arrayRAND[n] - xAritTOTALS4MSS1) * (pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)));
                qXYTOTALS4MSS2 = (qXYTOTALS4MSS2 + ((pifTOTALS3TM3arrayRAND[n] - xAritTOTALS4MSS2) * (pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)));
                qXYTOTALS4MSS4 = (qXYTOTALS4MSS4 + ((pifTOTALS3TM4arrayRAND[n] - xAritTOTALS4MSS4) * (pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)));
            }
        
            aTOTALS4MSS1 = (((xQuadTOTALS4MSS1 * yTOTALS4MSS1) - (xTOTALS4MSS1 * xyTOTALS4MSS1)) / ((minPifVAL * xQuadTOTALS4MSS1) - (xTOTALS4MSS1^2)));
            aTOTALS4MSS2 = (((xQuadTOTALS4MSS2 * yTOTALS4MSS2) - (xTOTALS4MSS2 * xyTOTALS4MSS2)) / ((minPifVAL * xQuadTOTALS4MSS2) - (xTOTALS4MSS2^2)));
            aTOTALS4MSS4 = (((xQuadTOTALS4MSS4 * yTOTALS4MSS4) - (xTOTALS4MSS4 * xyTOTALS4MSS4)) / ((minPifVAL * xQuadTOTALS4MSS4) - (xTOTALS4MSS4^2)));
            
            bTOTALS4MSS1 = qXYTOTALS4MSS1 / xxAritQuadTOTALS4MSS1;
            bTOTALS4MSS2 = qXYTOTALS4MSS2 / xxAritQuadTOTALS4MSS2;
            bTOTALS4MSS4 = qXYTOTALS4MSS4 / xxAritQuadTOTALS4MSS4;
    
            rTOTALS4MSS1 = (qXYTOTALS4MSS1 / ((xxAritQuadTOTALS4MSS1 * yyAritQuadTOTALS4MSS1)^0.5));
            rTOTALS4MSS2 = (qXYTOTALS4MSS2 / ((xxAritQuadTOTALS4MSS2 * yyAritQuadTOTALS4MSS2)^0.5));
            rTOTALS4MSS4 = (qXYTOTALS4MSS4 / ((xxAritQuadTOTALS4MSS4 * yyAritQuadTOTALS4MSS4)^0.5));
    
            rQuadTOTALS4MSS1 = ((rTOTALS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4MSS2 = ((rTOTALS4MSS2^2) * 100);
            rQuadTOTALS4MSS4 = ((rTOTALS4MSS4^2) * 100);
        
            syxTOTALS4MSS1 = (((yyAritQuadTOTALS4MSS1 - ((qXYTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS2 = (((yyAritQuadTOTALS4MSS2 - ((qXYTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS4 = (((yyAritQuadTOTALS4MSS4 - ((qXYTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4MSS1 = (((syxTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)^0.5);
            bStandTOTALS4MSS2 = (((syxTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)^0.5);
            bStandTOTALS4MSS4 = (((syxTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)^0.5);
    
            aStandTOTALS4MSS1 = (bStandTOTALS4MSS1 * ((xQuadTOTALS4MSS1 / minPifVAL)^0.5));
            aStandTOTALS4MSS2 = (bStandTOTALS4MSS2 * ((xQuadTOTALS4MSS2 / minPifVAL)^0.5));
            aStandTOTALS4MSS4 = (bStandTOTALS4MSS4 * ((xQuadTOTALS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS1, bTOTALS4MSS1, rTOTALS4MSS1, rQuadTOTALS4MSS1, aStandTOTALS4MSS1, bStandTOTALS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS2, bTOTALS4MSS2, rTOTALS4MSS2, rQuadTOTALS4MSS2, aStandTOTALS4MSS2, bStandTOTALS4MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS4, bTOTALS4MSS4, rTOTALS4MSS4, rQuadTOTALS4MSS4, aStandTOTALS4MSS4, bStandTOTALS4MSS4);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS4MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS4MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS4MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aTOTALS4MSS1 + (bTOTALS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aTOTALS4MSS2 + (bTOTALS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = REFS4MSS3[i,j];
                    OUT4MSS4[i,j] = (aTOTALS4MSS4 + (bTOTALS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT4MSS1);
        	CreatePyramid(OUT4MSS2);
        	CreatePyramid(OUT4MSS3);
        	CreatePyramid(OUT4MSS4);
        
        	CreateHistogram(OUT4MSS1);
        	CreateHistogram(OUT4MSS2);
        	CreateHistogram(OUT4MSS3);
        	CreateHistogram(OUT4MSS4);
        
        	CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
        }
        
        else
        {
        printf("Scene 3 - Master Scene (MSS):\n");
        printf("Scene 3 array values used for regression computation:\n");
    
        printf("MSS1: %12f ", pifTOTALS3MSS1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS3MSS1arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS3MSS1arrayRAND[minPifVAL]);
    
        printf("MSS2: %12f ", pifTOTALS3MSS2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS3MSS2arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS3MSS2arrayRAND[minPifVAL]);
    
        printf("MSS3: %12f ", pifTOTALS3MSS3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS3MSS3arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS3MSS3arrayRAND[minPifVAL]);
    
        printf("MSS4: %12f ", pifTOTALS3MSS4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS3MSS4arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS3MSS4arrayRAND[minPifVAL]);  
            
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                OUT3MSS1[i,j] = REFS3MSS1[i,j];
                OUT3MSS2[i,j] = REFS3MSS2[i,j];
                OUT3MSS3[i,j] = REFS3MSS3[i,j];
                OUT3MSS4[i,j] = REFS3MSS4[i,j];
                }
            }
        
        CreatePyramid(OUT3MSS1);
        CreatePyramid(OUT3MSS2);
        CreatePyramid(OUT3MSS3);
        CreatePyramid(OUT3MSS4);
    
        CreateHistogram(OUT3MSS1);
        CreateHistogram(OUT3MSS2);
        CreateHistogram(OUT3MSS3);
        CreateHistogram(OUT3MSS4);
        
        CloseRaster(REFS3MSS1);
        CloseRaster(REFS3MSS2);
        CloseRaster(REFS3MSS3);
        CloseRaster(REFS3MSS4);
        CloseRaster(OUT3MSS1);
        CloseRaster(OUT3MSS2);
        CloseRaster(OUT3MSS3);
        CloseRaster(OUT3MSS4);
    
        printf("Scene 3 (Master) output was written, histogram created and pyramid written\n\n\n");
        
            if ( sensors1 == 7 )
            {
        		printf("Master: Scene 3 (MSS), Slave: Scene 1 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors1 == 6 )
            {
        		printf("Master: Scene 3 (MSS), Slave: Scene 1 (TM) - IMPOSSIBLE...\n\n\n");
		}
            
            else
            {
            numeric xAritTOTALS1MSS1, xAritTOTALS1MSS2, xAritTOTALS1MSS3, xAritTOTALS1MSS4;
            numeric yAritTOTALS1MSS1, yAritTOTALS1MSS2, yAritTOTALS1MSS3, yAritTOTALS1MSS4;
    
            numeric aTOTALS1MSS1, aTOTALS1MSS2, aTOTALS1MSS3, aTOTALS1MSS4;
            numeric bTOTALS1MSS1, bTOTALS1MSS2, bTOTALS1MSS3, bTOTALS1MSS4;
            numeric rTOTALS1MSS1, rTOTALS1MSS2, rTOTALS1MSS3, rTOTALS1MSS4;
            numeric rQuadTOTALS1MSS1, rQuadTOTALS1MSS2, rQuadTOTALS1MSS3, rQuadTOTALS1MSS4;
            numeric syxTOTALS1MSS1, syxTOTALS1MSS2, syxTOTALS1MSS3, syxTOTALS1MSS4;
            numeric bStandTOTALS1MSS1, bStandTOTALS1MSS2, bStandTOTALS1MSS3, bStandTOTALS1MSS4;
            numeric aStandTOTALS1MSS1, aStandTOTALS1MSS2, aStandTOTALS1MSS3, aStandTOTALS1MSS4;
    
            numeric xTOTALS1MSS1 = 0;
            numeric xTOTALS1MSS2 = 0;
            numeric xTOTALS1MSS3 = 0;
            numeric xTOTALS1MSS4 = 0;
    
            numeric xQuadTOTALS1MSS1 = 0;
            numeric xQuadTOTALS1MSS2 = 0;
            numeric xQuadTOTALS1MSS3 = 0;
            numeric xQuadTOTALS1MSS4 = 0;
    
            numeric yTOTALS1MSS1 = 0;
            numeric yTOTALS1MSS2 = 0;
            numeric yTOTALS1MSS3 = 0;
            numeric yTOTALS1MSS4 = 0;
    
            numeric yQuadTOTALS1MSS1 = 0;
            numeric yQuadTOTALS1MSS2 = 0;
            numeric yQuadTOTALS1MSS3 = 0;
            numeric yQuadTOTALS1MSS4 = 0;
    
            numeric xyTOTALS1MSS1 = 0;
            numeric xyTOTALS1MSS2 = 0;
            numeric xyTOTALS1MSS3 = 0;
            numeric xyTOTALS1MSS4 = 0;
    
            numeric xxAritQuadTOTALS1MSS1 = 0;
            numeric xxAritQuadTOTALS1MSS2 = 0;
            numeric xxAritQuadTOTALS1MSS3 = 0;
            numeric xxAritQuadTOTALS1MSS4 = 0;
    
            numeric yyAritQuadTOTALS1MSS1 = 0;
            numeric yyAritQuadTOTALS1MSS2 = 0;
            numeric yyAritQuadTOTALS1MSS3 = 0;
            numeric yyAritQuadTOTALS1MSS4 = 0;
    
            numeric qXYTOTALS1MSS1 = 0;
            numeric qXYTOTALS1MSS2 = 0;
            numeric qXYTOTALS1MSS3 = 0;
            numeric qXYTOTALS1MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS1MSS1 = xTOTALS1MSS1 + pifTOTALS3MSS1arrayRAND[m];
                xTOTALS1MSS2 = xTOTALS1MSS2 + pifTOTALS3MSS2arrayRAND[m];
                xTOTALS1MSS3 = xTOTALS1MSS3 + pifTOTALS3MSS3arrayRAND[m];
                xTOTALS1MSS4 = xTOTALS1MSS4 + pifTOTALS3MSS4arrayRAND[m];
    
                xQuadTOTALS1MSS1 = (xQuadTOTALS1MSS1 + (pifTOTALS3MSS1arrayRAND[m]^2));
                xQuadTOTALS1MSS2 = (xQuadTOTALS1MSS2 + (pifTOTALS3MSS2arrayRAND[m]^2));
                xQuadTOTALS1MSS3 = (xQuadTOTALS1MSS3 + (pifTOTALS3MSS3arrayRAND[m]^2));
                xQuadTOTALS1MSS4 = (xQuadTOTALS1MSS4 + (pifTOTALS3MSS4arrayRAND[m]^2));
    
                yTOTALS1MSS1 = yTOTALS1MSS1 + pifTOTALS1MSS1arrayRAND[m];
                yTOTALS1MSS2 = yTOTALS1MSS2 + pifTOTALS1MSS2arrayRAND[m];
                yTOTALS1MSS3 = yTOTALS1MSS3 + pifTOTALS1MSS3arrayRAND[m];
                yTOTALS1MSS4 = yTOTALS1MSS4 + pifTOTALS1MSS4arrayRAND[m];
                
                yQuadTOTALS1MSS1 = (yQuadTOTALS1MSS1 + (pifTOTALS1MSS1arrayRAND[m]^2));
                yQuadTOTALS1MSS2 = (yQuadTOTALS1MSS2 + (pifTOTALS1MSS2arrayRAND[m]^2));
                yQuadTOTALS1MSS3 = (yQuadTOTALS1MSS3 + (pifTOTALS1MSS3arrayRAND[m]^2));
                yQuadTOTALS1MSS4 = (yQuadTOTALS1MSS4 + (pifTOTALS1MSS4arrayRAND[m]^2));
    
                xyTOTALS1MSS1 = (xyTOTALS1MSS1 + (pifTOTALS3MSS1arrayRAND[m] * pifTOTALS1MSS1arrayRAND[m]));
                xyTOTALS1MSS2 = (xyTOTALS1MSS2 + (pifTOTALS3MSS2arrayRAND[m] * pifTOTALS1MSS2arrayRAND[m]));
                xyTOTALS1MSS3 = (xyTOTALS1MSS3 + (pifTOTALS3MSS3arrayRAND[m] * pifTOTALS1MSS3arrayRAND[m]));
                xyTOTALS1MSS4 = (xyTOTALS1MSS4 + (pifTOTALS3MSS4arrayRAND[m] * pifTOTALS1MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS1MSS1 = xTOTALS1MSS1 / minPifVAL;
            xAritTOTALS1MSS2 = xTOTALS1MSS2 / minPifVAL;
            xAritTOTALS1MSS3 = xTOTALS1MSS3 / minPifVAL;
            xAritTOTALS1MSS4 = xTOTALS1MSS4 / minPifVAL;
    
            yAritTOTALS1MSS1 = yTOTALS1MSS1 / minPifVAL;
            yAritTOTALS1MSS2 = yTOTALS1MSS2 / minPifVAL;
            yAritTOTALS1MSS3 = yTOTALS1MSS3 / minPifVAL;
            yAritTOTALS1MSS4 = yTOTALS1MSS4 / minPifVAL;
    
      for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1MSS1 = (xxAritQuadTOTALS1MSS1 + ((pifTOTALS3MSS1arrayRAND[n] - xAritTOTALS1MSS1)^2));
                xxAritQuadTOTALS1MSS2 = (xxAritQuadTOTALS1MSS2 + ((pifTOTALS3MSS2arrayRAND[n] - xAritTOTALS1MSS2)^2));
                xxAritQuadTOTALS1MSS3 = (xxAritQuadTOTALS1MSS3 + ((pifTOTALS3MSS3arrayRAND[n] - xAritTOTALS1MSS3)^2));
                xxAritQuadTOTALS1MSS4 = (xxAritQuadTOTALS1MSS4 + ((pifTOTALS3MSS4arrayRAND[n] - xAritTOTALS1MSS4)^2));
    
                yyAritQuadTOTALS1MSS1 = (yyAritQuadTOTALS1MSS1 + ((pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)^2));
                yyAritQuadTOTALS1MSS2 = (yyAritQuadTOTALS1MSS2 + ((pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)^2));
                yyAritQuadTOTALS1MSS3 = (yyAritQuadTOTALS1MSS3 + ((pifTOTALS1MSS3arrayRAND[n] - yAritTOTALS1MSS3)^2));
                yyAritQuadTOTALS1MSS4 = (yyAritQuadTOTALS1MSS4 + ((pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)^2));
    
                qXYTOTALS1MSS1 = (qXYTOTALS1MSS1 + ((pifTOTALS3MSS1arrayRAND[n] - xAritTOTALS1MSS1) * (pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)));
                qXYTOTALS1MSS2 = (qXYTOTALS1MSS2 + ((pifTOTALS3MSS2arrayRAND[n] - xAritTOTALS1MSS2) * (pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)));
                qXYTOTALS1MSS3 = (qXYTOTALS1MSS3 + ((pifTOTALS3MSS3arrayRAND[n] - xAritTOTALS1MSS3) * (pifTOTALS1MSS3arrayRAND[n] - yAritTOTALS1MSS3)));
                qXYTOTALS1MSS4 = (qXYTOTALS1MSS4 + ((pifTOTALS3MSS4arrayRAND[n] - xAritTOTALS1MSS4) * (pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)));
            }
        
            aTOTALS1MSS1 = (((xQuadTOTALS1MSS1 * yTOTALS1MSS1) - (xTOTALS1MSS1 * xyTOTALS1MSS1)) / ((minPifVAL * xQuadTOTALS1MSS1) - (xTOTALS1MSS1^2)));
            aTOTALS1MSS2 = (((xQuadTOTALS1MSS2 * yTOTALS1MSS2) - (xTOTALS1MSS2 * xyTOTALS1MSS2)) / ((minPifVAL * xQuadTOTALS1MSS2) - (xTOTALS1MSS2^2)));
            aTOTALS1MSS3 = (((xQuadTOTALS1MSS3 * yTOTALS1MSS3) - (xTOTALS1MSS3 * xyTOTALS1MSS3)) / ((minPifVAL * xQuadTOTALS1MSS3) - (xTOTALS1MSS3^2)));
            aTOTALS1MSS4 = (((xQuadTOTALS1MSS4 * yTOTALS1MSS4) - (xTOTALS1MSS4 * xyTOTALS1MSS4)) / ((minPifVAL * xQuadTOTALS1MSS4) - (xTOTALS1MSS4^2)));
            
            bTOTALS1MSS1 = qXYTOTALS1MSS1 / xxAritQuadTOTALS1MSS1;
            bTOTALS1MSS2 = qXYTOTALS1MSS2 / xxAritQuadTOTALS1MSS2;
            bTOTALS1MSS3 = qXYTOTALS1MSS3 / xxAritQuadTOTALS1MSS3;
            bTOTALS1MSS4 = qXYTOTALS1MSS4 / xxAritQuadTOTALS1MSS4;
    
            rTOTALS1MSS1 = (qXYTOTALS1MSS1 / ((xxAritQuadTOTALS1MSS1 * yyAritQuadTOTALS1MSS1)^0.5));
            rTOTALS1MSS2 = (qXYTOTALS1MSS2 / ((xxAritQuadTOTALS1MSS2 * yyAritQuadTOTALS1MSS2)^0.5));
            rTOTALS1MSS3 = (qXYTOTALS1MSS3 / ((xxAritQuadTOTALS1MSS3 * yyAritQuadTOTALS1MSS3)^0.5));
            rTOTALS1MSS4 = (qXYTOTALS1MSS4 / ((xxAritQuadTOTALS1MSS4 * yyAritQuadTOTALS1MSS4)^0.5));
    
            rQuadTOTALS1MSS1 = ((rTOTALS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1MSS2 = ((rTOTALS1MSS2^2) * 100);
            rQuadTOTALS1MSS3 = ((rTOTALS1MSS3^2) * 100);
            rQuadTOTALS1MSS4 = ((rTOTALS1MSS4^2) * 100);
        
            syxTOTALS1MSS1 = (((yyAritQuadTOTALS1MSS1 - ((qXYTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS2 = (((yyAritQuadTOTALS1MSS2 - ((qXYTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS3 = (((yyAritQuadTOTALS1MSS3 - ((qXYTOTALS1MSS3^2) / xxAritQuadTOTALS1MSS3)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS4 = (((yyAritQuadTOTALS1MSS4 - ((qXYTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1MSS1 = (((syxTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)^0.5);
            bStandTOTALS1MSS2 = (((syxTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)^0.5);
            bStandTOTALS1MSS3 = (((syxTOTALS1MSS3^2) / xxAritQuadTOTALS1MSS3)^0.5);
            bStandTOTALS1MSS4 = (((syxTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)^0.5);
    
            aStandTOTALS1MSS1 = (bStandTOTALS1MSS1 * ((xQuadTOTALS1MSS1 / minPifVAL)^0.5));
            aStandTOTALS1MSS2 = (bStandTOTALS1MSS2 * ((xQuadTOTALS1MSS2 / minPifVAL)^0.5));
            aStandTOTALS1MSS3 = (bStandTOTALS1MSS3 * ((xQuadTOTALS1MSS3 / minPifVAL)^0.5));
            aStandTOTALS1MSS4 = (bStandTOTALS1MSS4 * ((xQuadTOTALS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS1, bTOTALS1MSS1, rTOTALS1MSS1, rQuadTOTALS1MSS1, aStandTOTALS1MSS1, bStandTOTALS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS2, bTOTALS1MSS2, rTOTALS1MSS2, rQuadTOTALS1MSS2, aStandTOTALS1MSS2, bStandTOTALS1MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS3, bTOTALS1MSS3, rTOTALS1MSS3, rQuadTOTALS1MSS3, aStandTOTALS1MSS3, bStandTOTALS1MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS4, bTOTALS1MSS4, rTOTALS1MSS4, rQuadTOTALS1MSS4, aStandTOTALS1MSS4, bStandTOTALS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS1MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS1MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifTOTALS1MSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS1MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aTOTALS1MSS1 + (bTOTALS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aTOTALS1MSS2 + (bTOTALS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = (aTOTALS1MSS3 + (bTOTALS1MSS3 * REFS1MSS3[i,j]));
                    OUT1MSS4[i,j] = (aTOTALS1MSS4 + (bTOTALS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT1MSS1);
        	CreatePyramid(OUT1MSS2);
        	CreatePyramid(OUT1MSS3);
        	CreatePyramid(OUT1MSS4);
        
        	CreateHistogram(OUT1MSS1);
        	CreateHistogram(OUT1MSS2);
        	CreateHistogram(OUT1MSS3);
        	CreateHistogram(OUT1MSS4);
        
        	CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors2 == 7 )
            {
        		printf("Master: Scene 3 (MSS), Slave: Scene 2 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors2 == 6 )
            {
        		printf("Master: Scene 3 (MSS), Slave: Scene 2 (TM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS2MSS1, xAritTOTALS2MSS2, xAritTOTALS2MSS3, xAritTOTALS2MSS4;
            numeric yAritTOTALS2MSS1, yAritTOTALS2MSS2, yAritTOTALS2MSS3, yAritTOTALS2MSS4;
    
            numeric aTOTALS2MSS1, aTOTALS2MSS2, aTOTALS2MSS3, aTOTALS2MSS4;
            numeric bTOTALS2MSS1, bTOTALS2MSS2, bTOTALS2MSS3, bTOTALS2MSS4;
            numeric rTOTALS2MSS1, rTOTALS2MSS2, rTOTALS2MSS3, rTOTALS2MSS4;
            numeric rQuadTOTALS2MSS1, rQuadTOTALS2MSS2, rQuadTOTALS2MSS3, rQuadTOTALS2MSS4;
            numeric syxTOTALS2MSS1, syxTOTALS2MSS2, syxTOTALS2MSS3, syxTOTALS2MSS4;
            numeric bStandTOTALS2MSS1, bStandTOTALS2MSS2, bStandTOTALS2MSS3, bStandTOTALS2MSS4;
            numeric aStandTOTALS2MSS1, aStandTOTALS2MSS2, aStandTOTALS2MSS3, aStandTOTALS2MSS4;
    
            numeric xTOTALS2MSS1 = 0;
            numeric xTOTALS2MSS2 = 0;
            numeric xTOTALS2MSS3 = 0;
            numeric xTOTALS2MSS4 = 0;
    
            numeric xQuadTOTALS2MSS1 = 0;
            numeric xQuadTOTALS2MSS2 = 0;
            numeric xQuadTOTALS2MSS3 = 0;
            numeric xQuadTOTALS2MSS4 = 0;
    
            numeric yTOTALS2MSS1 = 0;
            numeric yTOTALS2MSS2 = 0;
            numeric yTOTALS2MSS3 = 0;
            numeric yTOTALS2MSS4 = 0;
    
            numeric yQuadTOTALS2MSS1 = 0;
            numeric yQuadTOTALS2MSS2 = 0;
            numeric yQuadTOTALS2MSS3 = 0;
            numeric yQuadTOTALS2MSS4 = 0;
    
            numeric xyTOTALS2MSS1 = 0;
            numeric xyTOTALS2MSS2 = 0;
            numeric xyTOTALS2MSS3 = 0;
            numeric xyTOTALS2MSS4 = 0;
    
            numeric xxAritQuadTOTALS2MSS1 = 0;
            numeric xxAritQuadTOTALS2MSS2 = 0;
            numeric xxAritQuadTOTALS2MSS3 = 0;
            numeric xxAritQuadTOTALS2MSS4 = 0;
    
            numeric yyAritQuadTOTALS2MSS1 = 0;
            numeric yyAritQuadTOTALS2MSS2 = 0;
            numeric yyAritQuadTOTALS2MSS3 = 0;
            numeric yyAritQuadTOTALS2MSS4 = 0;
    
            numeric qXYTOTALS2MSS1 = 0;
            numeric qXYTOTALS2MSS2 = 0;
            numeric qXYTOTALS2MSS3 = 0;
            numeric qXYTOTALS2MSS4 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS2MSS1 = xTOTALS2MSS1 + pifTOTALS3MSS1arrayRAND[m];
                xTOTALS2MSS2 = xTOTALS2MSS2 + pifTOTALS3MSS2arrayRAND[m];
                xTOTALS2MSS3 = xTOTALS2MSS3 + pifTOTALS3MSS3arrayRAND[m];
                xTOTALS2MSS4 = xTOTALS2MSS4 + pifTOTALS3MSS4arrayRAND[m];
    
                xQuadTOTALS2MSS1 = (xQuadTOTALS2MSS1 + (pifTOTALS3MSS1arrayRAND[m]^2));
                xQuadTOTALS2MSS2 = (xQuadTOTALS2MSS2 + (pifTOTALS3MSS2arrayRAND[m]^2));
                xQuadTOTALS2MSS3 = (xQuadTOTALS2MSS3 + (pifTOTALS3MSS3arrayRAND[m]^2));
                xQuadTOTALS2MSS4 = (xQuadTOTALS2MSS4 + (pifTOTALS3MSS4arrayRAND[m]^2));
    
                yTOTALS2MSS1 = yTOTALS2MSS1 + pifTOTALS2MSS1arrayRAND[m];
                yTOTALS2MSS2 = yTOTALS2MSS2 + pifTOTALS2MSS2arrayRAND[m];
                yTOTALS2MSS3 = yTOTALS2MSS3 + pifTOTALS2MSS3arrayRAND[m];
                yTOTALS2MSS4 = yTOTALS2MSS4 + pifTOTALS2MSS4arrayRAND[m];
                
                yQuadTOTALS2MSS1 = (yQuadTOTALS2MSS1 + (pifTOTALS2MSS1arrayRAND[m]^2));
                yQuadTOTALS2MSS2 = (yQuadTOTALS2MSS2 + (pifTOTALS2MSS2arrayRAND[m]^2));
                yQuadTOTALS2MSS3 = (yQuadTOTALS2MSS3 + (pifTOTALS2MSS3arrayRAND[m]^2));
                yQuadTOTALS2MSS4 = (yQuadTOTALS2MSS4 + (pifTOTALS2MSS4arrayRAND[m]^2));
    
                xyTOTALS2MSS1 = (xyTOTALS2MSS1 + (pifTOTALS3MSS1arrayRAND[m] * pifTOTALS2MSS1arrayRAND[m]));
                xyTOTALS2MSS2 = (xyTOTALS2MSS2 + (pifTOTALS3MSS2arrayRAND[m] * pifTOTALS2MSS2arrayRAND[m]));
                xyTOTALS2MSS3 = (xyTOTALS2MSS3 + (pifTOTALS3MSS3arrayRAND[m] * pifTOTALS2MSS3arrayRAND[m]));
                xyTOTALS2MSS4 = (xyTOTALS2MSS4 + (pifTOTALS3MSS4arrayRAND[m] * pifTOTALS2MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS2MSS1 = xTOTALS2MSS1 / minPifVAL;
            xAritTOTALS2MSS2 = xTOTALS2MSS2 / minPifVAL;
            xAritTOTALS2MSS3 = xTOTALS2MSS3 / minPifVAL;
            xAritTOTALS2MSS4 = xTOTALS2MSS4 / minPifVAL;
    
            yAritTOTALS2MSS1 = yTOTALS2MSS1 / minPifVAL;
            yAritTOTALS2MSS2 = yTOTALS2MSS2 / minPifVAL;
            yAritTOTALS2MSS3 = yTOTALS2MSS3 / minPifVAL;
            yAritTOTALS2MSS4 = yTOTALS2MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2MSS1 = (xxAritQuadTOTALS2MSS1 + ((pifTOTALS3MSS1arrayRAND[n] - xAritTOTALS2MSS1)^2));
                xxAritQuadTOTALS2MSS2 = (xxAritQuadTOTALS2MSS2 + ((pifTOTALS3MSS2arrayRAND[n] - xAritTOTALS2MSS2)^2));
                xxAritQuadTOTALS2MSS3 = (xxAritQuadTOTALS2MSS3 + ((pifTOTALS3MSS3arrayRAND[n] - xAritTOTALS2MSS3)^2));
                xxAritQuadTOTALS2MSS4 = (xxAritQuadTOTALS2MSS4 + ((pifTOTALS3MSS4arrayRAND[n] - xAritTOTALS2MSS4)^2));
    
                yyAritQuadTOTALS2MSS1 = (yyAritQuadTOTALS2MSS1 + ((pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)^2));
                yyAritQuadTOTALS2MSS2 = (yyAritQuadTOTALS2MSS2 + ((pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)^2));
                yyAritQuadTOTALS2MSS3 = (yyAritQuadTOTALS2MSS3 + ((pifTOTALS2MSS3arrayRAND[n] - yAritTOTALS2MSS3)^2));
                yyAritQuadTOTALS2MSS4 = (yyAritQuadTOTALS2MSS4 + ((pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)^2));
    
                qXYTOTALS2MSS1 = (qXYTOTALS2MSS1 + ((pifTOTALS3MSS1arrayRAND[n] - xAritTOTALS2MSS1) * (pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)));
                qXYTOTALS2MSS2 = (qXYTOTALS2MSS2 + ((pifTOTALS3MSS2arrayRAND[n] - xAritTOTALS2MSS2) * (pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)));
                qXYTOTALS2MSS3 = (qXYTOTALS2MSS3 + ((pifTOTALS3MSS3arrayRAND[n] - xAritTOTALS2MSS3) * (pifTOTALS2MSS3arrayRAND[n] - yAritTOTALS2MSS3)));
                qXYTOTALS2MSS4 = (qXYTOTALS2MSS4 + ((pifTOTALS3MSS4arrayRAND[n] - xAritTOTALS2MSS4) * (pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)));
            }
        
            aTOTALS2MSS1 = (((xQuadTOTALS2MSS1 * yTOTALS2MSS1) - (xTOTALS2MSS1 * xyTOTALS2MSS1)) / ((minPifVAL * xQuadTOTALS2MSS1) - (xTOTALS2MSS1^2)));
            aTOTALS2MSS2 = (((xQuadTOTALS2MSS2 * yTOTALS2MSS2) - (xTOTALS2MSS2 * xyTOTALS2MSS2)) / ((minPifVAL * xQuadTOTALS2MSS2) - (xTOTALS2MSS2^2)));
            aTOTALS2MSS3 = (((xQuadTOTALS2MSS3 * yTOTALS2MSS3) - (xTOTALS2MSS3 * xyTOTALS2MSS3)) / ((minPifVAL * xQuadTOTALS2MSS3) - (xTOTALS2MSS3^2)));
            aTOTALS2MSS4 = (((xQuadTOTALS2MSS4 * yTOTALS2MSS4) - (xTOTALS2MSS4 * xyTOTALS2MSS4)) / ((minPifVAL * xQuadTOTALS2MSS4) - (xTOTALS2MSS4^2)));
            
            bTOTALS2MSS1 = qXYTOTALS2MSS1 / xxAritQuadTOTALS2MSS1;
            bTOTALS2MSS2 = qXYTOTALS2MSS2 / xxAritQuadTOTALS2MSS2;
            bTOTALS2MSS3 = qXYTOTALS2MSS3 / xxAritQuadTOTALS2MSS3;
            bTOTALS2MSS4 = qXYTOTALS2MSS4 / xxAritQuadTOTALS2MSS4;
    
            rTOTALS2MSS1 = (qXYTOTALS2MSS1 / ((xxAritQuadTOTALS2MSS1 * yyAritQuadTOTALS2MSS1)^0.5));
            rTOTALS2MSS2 = (qXYTOTALS2MSS2 / ((xxAritQuadTOTALS2MSS2 * yyAritQuadTOTALS2MSS2)^0.5));
            rTOTALS2MSS3 = (qXYTOTALS2MSS3 / ((xxAritQuadTOTALS2MSS3 * yyAritQuadTOTALS2MSS3)^0.5));
            rTOTALS2MSS4 = (qXYTOTALS2MSS4 / ((xxAritQuadTOTALS2MSS4 * yyAritQuadTOTALS2MSS4)^0.5));
    
            rQuadTOTALS2MSS1 = ((rTOTALS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2MSS2 = ((rTOTALS2MSS2^2) * 100);
            rQuadTOTALS2MSS3 = ((rTOTALS2MSS3^2) * 100);
            rQuadTOTALS2MSS4 = ((rTOTALS2MSS4^2) * 100);
        
            syxTOTALS2MSS1 = (((yyAritQuadTOTALS2MSS1 - ((qXYTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS2 = (((yyAritQuadTOTALS2MSS2 - ((qXYTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS3 = (((yyAritQuadTOTALS2MSS3 - ((qXYTOTALS2MSS3^2) / xxAritQuadTOTALS2MSS3)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS4 = (((yyAritQuadTOTALS2MSS4 - ((qXYTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2MSS1 = (((syxTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)^0.5);
            bStandTOTALS2MSS2 = (((syxTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)^0.5);
            bStandTOTALS2MSS3 = (((syxTOTALS2MSS3^2) / xxAritQuadTOTALS2MSS3)^0.5);
            bStandTOTALS2MSS4 = (((syxTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)^0.5);
    
            aStandTOTALS2MSS1 = (bStandTOTALS2MSS1 * ((xQuadTOTALS2MSS1 / minPifVAL)^0.5));
            aStandTOTALS2MSS2 = (bStandTOTALS2MSS2 * ((xQuadTOTALS2MSS2 / minPifVAL)^0.5));
            aStandTOTALS2MSS3 = (bStandTOTALS2MSS3 * ((xQuadTOTALS2MSS3 / minPifVAL)^0.5));
            aStandTOTALS2MSS4 = (bStandTOTALS2MSS4 * ((xQuadTOTALS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS1, bTOTALS2MSS1, rTOTALS2MSS1, rQuadTOTALS2MSS1, aStandTOTALS2MSS1, bStandTOTALS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS2, bTOTALS2MSS2, rTOTALS2MSS2, rQuadTOTALS2MSS2, aStandTOTALS2MSS2, bStandTOTALS2MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS3, bTOTALS2MSS3, rTOTALS2MSS3, rQuadTOTALS2MSS3, aStandTOTALS2MSS3, bStandTOTALS2MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS4, bTOTALS2MSS4, rTOTALS2MSS4, rQuadTOTALS2MSS4, aStandTOTALS2MSS4, bStandTOTALS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS2MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS2MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifTOTALS2MSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS2MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aTOTALS2MSS1 + (bTOTALS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aTOTALS2MSS2 + (bTOTALS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = (aTOTALS2MSS3 + (bTOTALS2MSS3 * REFS2MSS3[i,j]));
                    OUT2MSS4[i,j] = (aTOTALS2MSS4 + (bTOTALS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT2MSS1);
        	CreatePyramid(OUT2MSS2);
        	CreatePyramid(OUT2MSS3);
        	CreatePyramid(OUT2MSS4);
        
        	CreateHistogram(OUT2MSS1);
        	CreateHistogram(OUT2MSS2);
        	CreateHistogram(OUT2MSS3);
        	CreateHistogram(OUT2MSS4);
        
        	CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors4 == 7 )
            {
        		printf("Master: Scene 3 (MSS), Slave: Scene 4 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors4 == 6 )
            {
        		printf("Master: Scene 3 (MSS), Slave: Scene 4 (TM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS4MSS1, xAritTOTALS4MSS2, xAritTOTALS4MSS3, xAritTOTALS4MSS4;
            numeric yAritTOTALS4MSS1, yAritTOTALS4MSS2, yAritTOTALS4MSS3, yAritTOTALS4MSS4;
    
            numeric aTOTALS4MSS1, aTOTALS4MSS2, aTOTALS4MSS3, aTOTALS4MSS4;
            numeric bTOTALS4MSS1, bTOTALS4MSS2, bTOTALS4MSS3, bTOTALS4MSS4;
            numeric rTOTALS4MSS1, rTOTALS4MSS2, rTOTALS4MSS3, rTOTALS4MSS4;
            numeric rQuadTOTALS4MSS1, rQuadTOTALS4MSS2, rQuadTOTALS4MSS3, rQuadTOTALS4MSS4;
            numeric syxTOTALS4MSS1, syxTOTALS4MSS2, syxTOTALS4MSS3, syxTOTALS4MSS4;
            numeric bStandTOTALS4MSS1, bStandTOTALS4MSS2, bStandTOTALS4MSS3, bStandTOTALS4MSS4;
            numeric aStandTOTALS4MSS1, aStandTOTALS4MSS2, aStandTOTALS4MSS3, aStandTOTALS4MSS4;
    
            numeric xTOTALS4MSS1 = 0;
            numeric xTOTALS4MSS2 = 0;
            numeric xTOTALS4MSS3 = 0;
            numeric xTOTALS4MSS4 = 0;
    
            numeric xQuadTOTALS4MSS1 = 0;
            numeric xQuadTOTALS4MSS2 = 0;
            numeric xQuadTOTALS4MSS3 = 0;
            numeric xQuadTOTALS4MSS4 = 0;
    
            numeric yTOTALS4MSS1 = 0;
            numeric yTOTALS4MSS2 = 0;
            numeric yTOTALS4MSS3 = 0;
            numeric yTOTALS4MSS4 = 0;
    
            numeric yQuadTOTALS4MSS1 = 0;
            numeric yQuadTOTALS4MSS2 = 0;
            numeric yQuadTOTALS4MSS3 = 0;
            numeric yQuadTOTALS4MSS4 = 0;
    
            numeric xyTOTALS4MSS1 = 0;
            numeric xyTOTALS4MSS2 = 0;
            numeric xyTOTALS4MSS3 = 0;
            numeric xyTOTALS4MSS4 = 0;
    
            numeric xxAritQuadTOTALS4MSS1 = 0;
            numeric xxAritQuadTOTALS4MSS2 = 0;
            numeric xxAritQuadTOTALS4MSS3 = 0;
            numeric xxAritQuadTOTALS4MSS4 = 0;
    
            numeric yyAritQuadTOTALS4MSS1 = 0;
            numeric yyAritQuadTOTALS4MSS2 = 0;
            numeric yyAritQuadTOTALS4MSS3 = 0;
            numeric yyAritQuadTOTALS4MSS4 = 0;
    
            numeric qXYTOTALS4MSS1 = 0;
            numeric qXYTOTALS4MSS2 = 0;
            numeric qXYTOTALS4MSS3 = 0;
            numeric qXYTOTALS4MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS4MSS1 = xTOTALS4MSS1 + pifTOTALS3MSS1arrayRAND[m];
                xTOTALS4MSS2 = xTOTALS4MSS2 + pifTOTALS3MSS2arrayRAND[m];
                xTOTALS4MSS3 = xTOTALS4MSS3 + pifTOTALS3MSS3arrayRAND[m];
                xTOTALS4MSS4 = xTOTALS4MSS4 + pifTOTALS3MSS4arrayRAND[m];
    
                xQuadTOTALS4MSS1 = (xQuadTOTALS4MSS1 + (pifTOTALS3MSS1arrayRAND[m]^2));
                xQuadTOTALS4MSS2 = (xQuadTOTALS4MSS2 + (pifTOTALS3MSS2arrayRAND[m]^2));
                xQuadTOTALS4MSS3 = (xQuadTOTALS4MSS3 + (pifTOTALS3MSS3arrayRAND[m]^2));
                xQuadTOTALS4MSS4 = (xQuadTOTALS4MSS4 + (pifTOTALS3MSS4arrayRAND[m]^2));
    
                yTOTALS4MSS1 = yTOTALS4MSS1 + pifTOTALS4MSS1arrayRAND[m];
                yTOTALS4MSS2 = yTOTALS4MSS2 + pifTOTALS4MSS2arrayRAND[m];
                yTOTALS4MSS3 = yTOTALS4MSS3 + pifTOTALS4MSS3arrayRAND[m];
                yTOTALS4MSS4 = yTOTALS4MSS4 + pifTOTALS4MSS4arrayRAND[m];
                
                yQuadTOTALS4MSS1 = (yQuadTOTALS4MSS1 + (pifTOTALS4MSS1arrayRAND[m]^2));
                yQuadTOTALS4MSS2 = (yQuadTOTALS4MSS2 + (pifTOTALS4MSS2arrayRAND[m]^2));
                yQuadTOTALS4MSS3 = (yQuadTOTALS4MSS3 + (pifTOTALS4MSS3arrayRAND[m]^2));
                yQuadTOTALS4MSS4 = (yQuadTOTALS4MSS4 + (pifTOTALS4MSS4arrayRAND[m]^2));
    
                xyTOTALS4MSS1 = (xyTOTALS4MSS1 + (pifTOTALS3MSS1arrayRAND[m] * pifTOTALS4MSS1arrayRAND[m]));
                xyTOTALS4MSS2 = (xyTOTALS4MSS2 + (pifTOTALS3MSS2arrayRAND[m] * pifTOTALS4MSS2arrayRAND[m]));
                xyTOTALS4MSS3 = (xyTOTALS4MSS3 + (pifTOTALS3MSS3arrayRAND[m] * pifTOTALS4MSS3arrayRAND[m]));
                xyTOTALS4MSS4 = (xyTOTALS4MSS4 + (pifTOTALS3MSS4arrayRAND[m] * pifTOTALS4MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS4MSS1 = xTOTALS4MSS1 / minPifVAL;
            xAritTOTALS4MSS2 = xTOTALS4MSS2 / minPifVAL;
            xAritTOTALS4MSS3 = xTOTALS4MSS3 / minPifVAL;
            xAritTOTALS4MSS4 = xTOTALS4MSS4 / minPifVAL;
    
            yAritTOTALS4MSS1 = yTOTALS4MSS1 / minPifVAL;
            yAritTOTALS4MSS2 = yTOTALS4MSS2 / minPifVAL;
            yAritTOTALS4MSS3 = yTOTALS4MSS3 / minPifVAL;
            yAritTOTALS4MSS4 = yTOTALS4MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS4MSS1 = (xxAritQuadTOTALS4MSS1 + ((pifTOTALS3MSS1arrayRAND[n] - xAritTOTALS4MSS1)^2));
                xxAritQuadTOTALS4MSS2 = (xxAritQuadTOTALS4MSS2 + ((pifTOTALS3MSS2arrayRAND[n] - xAritTOTALS4MSS2)^2));
                xxAritQuadTOTALS4MSS3 = (xxAritQuadTOTALS4MSS3 + ((pifTOTALS3MSS3arrayRAND[n] - xAritTOTALS4MSS3)^2));
                xxAritQuadTOTALS4MSS4 = (xxAritQuadTOTALS4MSS4 + ((pifTOTALS3MSS4arrayRAND[n] - xAritTOTALS4MSS4)^2));
    
                yyAritQuadTOTALS4MSS1 = (yyAritQuadTOTALS4MSS1 + ((pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)^2));
                yyAritQuadTOTALS4MSS2 = (yyAritQuadTOTALS4MSS2 + ((pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)^2));
                yyAritQuadTOTALS4MSS3 = (yyAritQuadTOTALS4MSS3 + ((pifTOTALS4MSS3arrayRAND[n] - yAritTOTALS4MSS3)^2));
                yyAritQuadTOTALS4MSS4 = (yyAritQuadTOTALS4MSS4 + ((pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)^2));
    
                qXYTOTALS4MSS1 = (qXYTOTALS4MSS1 + ((pifTOTALS3MSS1arrayRAND[n] - xAritTOTALS4MSS1) * (pifTOTALS4MSS1arrayRAND[n] - yAritTOTALS4MSS1)));
                qXYTOTALS4MSS2 = (qXYTOTALS4MSS2 + ((pifTOTALS3MSS2arrayRAND[n] - xAritTOTALS4MSS2) * (pifTOTALS4MSS2arrayRAND[n] - yAritTOTALS4MSS2)));
                qXYTOTALS4MSS3 = (qXYTOTALS4MSS3 + ((pifTOTALS3MSS3arrayRAND[n] - xAritTOTALS4MSS3) * (pifTOTALS4MSS3arrayRAND[n] - yAritTOTALS4MSS3)));
                qXYTOTALS4MSS4 = (qXYTOTALS4MSS4 + ((pifTOTALS3MSS4arrayRAND[n] - xAritTOTALS4MSS4) * (pifTOTALS4MSS4arrayRAND[n] - yAritTOTALS4MSS4)));
            }
        
            aTOTALS4MSS1 = (((xQuadTOTALS4MSS1 * yTOTALS4MSS1) - (xTOTALS4MSS1 * xyTOTALS4MSS1)) / ((minPifVAL * xQuadTOTALS4MSS1) - (xTOTALS4MSS1^2)));
            aTOTALS4MSS2 = (((xQuadTOTALS4MSS2 * yTOTALS4MSS2) - (xTOTALS4MSS2 * xyTOTALS4MSS2)) / ((minPifVAL * xQuadTOTALS4MSS2) - (xTOTALS4MSS2^2)));
            aTOTALS4MSS3 = (((xQuadTOTALS4MSS3 * yTOTALS4MSS3) - (xTOTALS4MSS3 * xyTOTALS4MSS3)) / ((minPifVAL * xQuadTOTALS4MSS3) - (xTOTALS4MSS3^2)));
            aTOTALS4MSS4 = (((xQuadTOTALS4MSS4 * yTOTALS4MSS4) - (xTOTALS4MSS4 * xyTOTALS4MSS4)) / ((minPifVAL * xQuadTOTALS4MSS4) - (xTOTALS4MSS4^2)));
            
            bTOTALS4MSS1 = qXYTOTALS4MSS1 / xxAritQuadTOTALS4MSS1;
            bTOTALS4MSS2 = qXYTOTALS4MSS2 / xxAritQuadTOTALS4MSS2;
            bTOTALS4MSS3 = qXYTOTALS4MSS3 / xxAritQuadTOTALS4MSS3;
            bTOTALS4MSS4 = qXYTOTALS4MSS4 / xxAritQuadTOTALS4MSS4;
    
            rTOTALS4MSS1 = (qXYTOTALS4MSS1 / ((xxAritQuadTOTALS4MSS1 * yyAritQuadTOTALS4MSS1)^0.5));
            rTOTALS4MSS2 = (qXYTOTALS4MSS2 / ((xxAritQuadTOTALS4MSS2 * yyAritQuadTOTALS4MSS2)^0.5));
            rTOTALS4MSS3 = (qXYTOTALS4MSS3 / ((xxAritQuadTOTALS4MSS3 * yyAritQuadTOTALS4MSS3)^0.5));
            rTOTALS4MSS4 = (qXYTOTALS4MSS4 / ((xxAritQuadTOTALS4MSS4 * yyAritQuadTOTALS4MSS4)^0.5));
    
            rQuadTOTALS4MSS1 = ((rTOTALS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS4MSS2 = ((rTOTALS4MSS2^2) * 100);
            rQuadTOTALS4MSS3 = ((rTOTALS4MSS3^2) * 100);
            rQuadTOTALS4MSS4 = ((rTOTALS4MSS4^2) * 100);
        
            syxTOTALS4MSS1 = (((yyAritQuadTOTALS4MSS1 - ((qXYTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS2 = (((yyAritQuadTOTALS4MSS2 - ((qXYTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS3 = (((yyAritQuadTOTALS4MSS3 - ((qXYTOTALS4MSS3^2) / xxAritQuadTOTALS4MSS3)) / (minPifVAL - 2))^0.5);
            syxTOTALS4MSS4 = (((yyAritQuadTOTALS4MSS4 - ((qXYTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS4MSS1 = (((syxTOTALS4MSS1^2) / xxAritQuadTOTALS4MSS1)^0.5);
            bStandTOTALS4MSS2 = (((syxTOTALS4MSS2^2) / xxAritQuadTOTALS4MSS2)^0.5);
            bStandTOTALS4MSS3 = (((syxTOTALS4MSS3^2) / xxAritQuadTOTALS4MSS3)^0.5);
            bStandTOTALS4MSS4 = (((syxTOTALS4MSS4^2) / xxAritQuadTOTALS4MSS4)^0.5);
    
            aStandTOTALS4MSS1 = (bStandTOTALS4MSS1 * ((xQuadTOTALS4MSS1 / minPifVAL)^0.5));
            aStandTOTALS4MSS2 = (bStandTOTALS4MSS2 * ((xQuadTOTALS4MSS2 / minPifVAL)^0.5));
            aStandTOTALS4MSS3 = (bStandTOTALS4MSS3 * ((xQuadTOTALS4MSS3 / minPifVAL)^0.5));
            aStandTOTALS4MSS4 = (bStandTOTALS4MSS4 * ((xQuadTOTALS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS1, bTOTALS4MSS1, rTOTALS4MSS1, rQuadTOTALS4MSS1, aStandTOTALS4MSS1, bStandTOTALS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS2, bTOTALS4MSS2, rTOTALS4MSS2, rQuadTOTALS4MSS2, aStandTOTALS4MSS2, bStandTOTALS4MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS3, bTOTALS4MSS3, rTOTALS4MSS3, rQuadTOTALS4MSS3, aStandTOTALS4MSS3, bStandTOTALS4MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS4MSS4, bTOTALS4MSS4, rTOTALS4MSS4, rQuadTOTALS4MSS4, aStandTOTALS4MSS4, bStandTOTALS4MSS4);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS4MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS4MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifTOTALS4MSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS4MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS4MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS4MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aTOTALS4MSS1 + (bTOTALS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aTOTALS4MSS2 + (bTOTALS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = (aTOTALS4MSS3 + (bTOTALS4MSS3 * REFS4MSS3[i,j]));
                    OUT4MSS4[i,j] = (aTOTALS4MSS4 + (bTOTALS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT4MSS1);
        	CreatePyramid(OUT4MSS2);
        	CreatePyramid(OUT4MSS3);
        	CreatePyramid(OUT4MSS4);
        
        	CreateHistogram(OUT4MSS1);
        	CreateHistogram(OUT4MSS2);
        	CreateHistogram(OUT4MSS3);
        	CreateHistogram(OUT4MSS4);
        
        	CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
        }
    }
	else if ( slaveMaster == 4 )
	{
        if ( sensors4 == 7 )
        {
        printf("Scene 4 - Master Scene (ETM):\n");
        printf("Scene 4 array values used for regression computation:\n");
    
        printf("ETM1: %12f ", pifTOTALS4ETM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS4ETM1arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS4ETM1arrayRAND[minPifVAL]);
    
        printf("ETM2: %12f ", pifTOTALS4ETM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS4ETM2arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS4ETM2arrayRAND[minPifVAL]);
    
        printf("ETM3: %12f ", pifTOTALS4ETM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS4ETM3arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS4ETM3arrayRAND[minPifVAL]);
    
        printf("ETM4: %12f ", pifTOTALS4ETM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS4ETM4arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS4ETM4arrayRAND[minPifVAL]);
    
        printf("ETM5: %12f ", pifTOTALS4ETM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS4ETM5arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS4ETM5arrayRAND[minPifVAL]);
    
        printf("ETM7: %12f ", pifTOTALS4ETM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS4ETM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifTOTALS4ETM7arrayRAND[minPifVAL]);   
            
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                OUT4ETM1[i,j] = REFS4ETM1[i,j];
                OUT4ETM2[i,j] = REFS4ETM2[i,j];
                OUT4ETM3[i,j] = REFS4ETM3[i,j];
                OUT4ETM4[i,j] = REFS4ETM4[i,j];
                OUT4ETM5[i,j] = REFS4ETM5[i,j];
                OUT4ETM7[i,j] = REFS4ETM7[i,j];
                }
            }
        
        CreatePyramid(OUT4ETM1);
        CreatePyramid(OUT4ETM2);
        CreatePyramid(OUT4ETM3);
        CreatePyramid(OUT4ETM4);
        CreatePyramid(OUT4ETM5);
        CreatePyramid(OUT4ETM7);
    
        CreateHistogram(OUT4ETM1);
        CreateHistogram(OUT4ETM2);
        CreateHistogram(OUT4ETM3);
        CreateHistogram(OUT4ETM4);
        CreateHistogram(OUT4ETM5);
        CreateHistogram(OUT4ETM7);
        
        CloseRaster(REFS4ETM1);
		CloseRaster(REFS4ETM2);
		CloseRaster(REFS4ETM3);
		CloseRaster(REFS4ETM4);
		CloseRaster(REFS4ETM5);
		CloseRaster(REFS4ETM7);
		CloseRaster(OUT4ETM1);
		CloseRaster(OUT4ETM2);
		CloseRaster(OUT4ETM3);
		CloseRaster(OUT4ETM4);
		CloseRaster(OUT4ETM5);
		CloseRaster(OUT4ETM7);
    
        printf("Scene 4 (Master) output was written, histogram created and pyramid written\n\n\n");
        
            if ( sensors1 == 7 )
            {
            numeric xAritTOTALS1ETM1, xAritTOTALS1ETM2, xAritTOTALS1ETM3, xAritTOTALS1ETM4, xAritTOTALS1ETM5, xAritTOTALS1ETM7;
            numeric yAritTOTALS1ETM1, yAritTOTALS1ETM2, yAritTOTALS1ETM3, yAritTOTALS1ETM4, yAritTOTALS1ETM5, yAritTOTALS1ETM7;
    
            numeric aTOTALS1ETM1, aTOTALS1ETM2, aTOTALS1ETM3, aTOTALS1ETM4, aTOTALS1ETM5, aTOTALS1ETM7;
            numeric bTOTALS1ETM1, bTOTALS1ETM2, bTOTALS1ETM3, bTOTALS1ETM4, bTOTALS1ETM5, bTOTALS1ETM7;
            numeric rTOTALS1ETM1, rTOTALS1ETM2, rTOTALS1ETM3, rTOTALS1ETM4, rTOTALS1ETM5, rTOTALS1ETM7;
            numeric rQuadTOTALS1ETM1, rQuadTOTALS1ETM2, rQuadTOTALS1ETM3, rQuadTOTALS1ETM4, rQuadTOTALS1ETM5, rQuadTOTALS1ETM7;
            numeric syxTOTALS1ETM1, syxTOTALS1ETM2, syxTOTALS1ETM3, syxTOTALS1ETM4, syxTOTALS1ETM5, syxTOTALS1ETM7;
            numeric bStandTOTALS1ETM1, bStandTOTALS1ETM2, bStandTOTALS1ETM3, bStandTOTALS1ETM4, bStandTOTALS1ETM5, bStandTOTALS1ETM7;
            numeric aStandTOTALS1ETM1, aStandTOTALS1ETM2, aStandTOTALS1ETM3, aStandTOTALS1ETM4, aStandTOTALS1ETM5, aStandTOTALS1ETM7;
    
            numeric xTOTALS1ETM1 = 0;
            numeric xTOTALS1ETM2 = 0;
            numeric xTOTALS1ETM3 = 0;
            numeric xTOTALS1ETM4 = 0;
            numeric xTOTALS1ETM5 = 0;
            numeric xTOTALS1ETM7 = 0;
    
            numeric xQuadTOTALS1ETM1 = 0;
            numeric xQuadTOTALS1ETM2 = 0;
            numeric xQuadTOTALS1ETM3 = 0;
            numeric xQuadTOTALS1ETM4 = 0;
            numeric xQuadTOTALS1ETM5 = 0;
            numeric xQuadTOTALS1ETM7 = 0;
    
            numeric yTOTALS1ETM1 = 0;
            numeric yTOTALS1ETM2 = 0;
            numeric yTOTALS1ETM3 = 0;
            numeric yTOTALS1ETM4 = 0;
            numeric yTOTALS1ETM5 = 0;
            numeric yTOTALS1ETM7 = 0;
    
            numeric yQuadTOTALS1ETM1 = 0;
            numeric yQuadTOTALS1ETM2 = 0;
            numeric yQuadTOTALS1ETM3 = 0;
            numeric yQuadTOTALS1ETM4 = 0;
            numeric yQuadTOTALS1ETM5 = 0;
            numeric yQuadTOTALS1ETM7 = 0;
    
            numeric xyTOTALS1ETM1 = 0;
            numeric xyTOTALS1ETM2 = 0;
            numeric xyTOTALS1ETM3 = 0;
            numeric xyTOTALS1ETM4 = 0;
            numeric xyTOTALS1ETM5 = 0;
            numeric xyTOTALS1ETM7 = 0;
    
            numeric xxAritQuadTOTALS1ETM1 = 0;
            numeric xxAritQuadTOTALS1ETM2 = 0;
            numeric xxAritQuadTOTALS1ETM3 = 0;
            numeric xxAritQuadTOTALS1ETM4 = 0;
            numeric xxAritQuadTOTALS1ETM5 = 0;
            numeric xxAritQuadTOTALS1ETM7 = 0;
    
            numeric yyAritQuadTOTALS1ETM1 = 0;
            numeric yyAritQuadTOTALS1ETM2 = 0;
            numeric yyAritQuadTOTALS1ETM3 = 0;
            numeric yyAritQuadTOTALS1ETM4 = 0;
            numeric yyAritQuadTOTALS1ETM5 = 0;
            numeric yyAritQuadTOTALS1ETM7 = 0;
    
            numeric qXYTOTALS1ETM1 = 0;
            numeric qXYTOTALS1ETM2 = 0;
            numeric qXYTOTALS1ETM3 = 0;
            numeric qXYTOTALS1ETM4 = 0;
            numeric qXYTOTALS1ETM5 = 0;
            numeric qXYTOTALS1ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS1ETM1 = xTOTALS1ETM1 + pifTOTALS4ETM1arrayRAND[m];
                xTOTALS1ETM2 = xTOTALS1ETM2 + pifTOTALS4ETM2arrayRAND[m];
                xTOTALS1ETM3 = xTOTALS1ETM3 + pifTOTALS4ETM3arrayRAND[m];
                xTOTALS1ETM4 = xTOTALS1ETM4 + pifTOTALS4ETM4arrayRAND[m];
                xTOTALS1ETM5 = xTOTALS1ETM5 + pifTOTALS4ETM5arrayRAND[m];
                xTOTALS1ETM7 = xTOTALS1ETM7 + pifTOTALS4ETM7arrayRAND[m];
    
                xQuadTOTALS1ETM1 = (xQuadTOTALS1ETM1 + (pifTOTALS4ETM1arrayRAND[m]^2));
                xQuadTOTALS1ETM2 = (xQuadTOTALS1ETM2 + (pifTOTALS4ETM2arrayRAND[m]^2));
                xQuadTOTALS1ETM3 = (xQuadTOTALS1ETM3 + (pifTOTALS4ETM3arrayRAND[m]^2));
                xQuadTOTALS1ETM4 = (xQuadTOTALS1ETM4 + (pifTOTALS4ETM4arrayRAND[m]^2));
                xQuadTOTALS1ETM5 = (xQuadTOTALS1ETM5 + (pifTOTALS4ETM5arrayRAND[m]^2));
                xQuadTOTALS1ETM7 = (xQuadTOTALS1ETM7 + (pifTOTALS4ETM7arrayRAND[m]^2));
    
                yTOTALS1ETM1 = yTOTALS1ETM1 + pifTOTALS1ETM1arrayRAND[m];
                yTOTALS1ETM2 = yTOTALS1ETM2 + pifTOTALS1ETM2arrayRAND[m];
                yTOTALS1ETM3 = yTOTALS1ETM3 + pifTOTALS1ETM3arrayRAND[m];
                yTOTALS1ETM4 = yTOTALS1ETM4 + pifTOTALS1ETM4arrayRAND[m];
                yTOTALS1ETM5 = yTOTALS1ETM5 + pifTOTALS1ETM5arrayRAND[m];
                yTOTALS1ETM7 = yTOTALS1ETM7 + pifTOTALS1ETM7arrayRAND[m];
                
                yQuadTOTALS1ETM1 = (yQuadTOTALS1ETM1 + (pifTOTALS1ETM1arrayRAND[m]^2));
                yQuadTOTALS1ETM2 = (yQuadTOTALS1ETM2 + (pifTOTALS1ETM2arrayRAND[m]^2));
                yQuadTOTALS1ETM3 = (yQuadTOTALS1ETM3 + (pifTOTALS1ETM3arrayRAND[m]^2));
                yQuadTOTALS1ETM4 = (yQuadTOTALS1ETM4 + (pifTOTALS1ETM4arrayRAND[m]^2));
                yQuadTOTALS1ETM5 = (yQuadTOTALS1ETM5 + (pifTOTALS1ETM5arrayRAND[m]^2));
                yQuadTOTALS1ETM7 = (yQuadTOTALS1ETM7 + (pifTOTALS1ETM7arrayRAND[m]^2));
    
                xyTOTALS1ETM1 = (xyTOTALS1ETM1 + (pifTOTALS4ETM1arrayRAND[m] * pifTOTALS1ETM1arrayRAND[m]));
                xyTOTALS1ETM2 = (xyTOTALS1ETM2 + (pifTOTALS4ETM2arrayRAND[m] * pifTOTALS1ETM2arrayRAND[m]));
                xyTOTALS1ETM3 = (xyTOTALS1ETM3 + (pifTOTALS4ETM3arrayRAND[m] * pifTOTALS1ETM3arrayRAND[m]));
                xyTOTALS1ETM4 = (xyTOTALS1ETM4 + (pifTOTALS4ETM4arrayRAND[m] * pifTOTALS1ETM4arrayRAND[m]));
                xyTOTALS1ETM5 = (xyTOTALS1ETM5 + (pifTOTALS4ETM5arrayRAND[m] * pifTOTALS1ETM5arrayRAND[m]));
                xyTOTALS1ETM7 = (xyTOTALS1ETM7 + (pifTOTALS4ETM7arrayRAND[m] * pifTOTALS1ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS1ETM1 = xTOTALS1ETM1 / minPifVAL;
            xAritTOTALS1ETM2 = xTOTALS1ETM2 / minPifVAL;
            xAritTOTALS1ETM3 = xTOTALS1ETM3 / minPifVAL;
            xAritTOTALS1ETM4 = xTOTALS1ETM4 / minPifVAL;
            xAritTOTALS1ETM5 = xTOTALS1ETM5 / minPifVAL;
            xAritTOTALS1ETM7 = xTOTALS1ETM7 / minPifVAL;
    
            yAritTOTALS1ETM1 = yTOTALS1ETM1 / minPifVAL;
            yAritTOTALS1ETM2 = yTOTALS1ETM2 / minPifVAL;
            yAritTOTALS1ETM3 = yTOTALS1ETM3 / minPifVAL;
            yAritTOTALS1ETM4 = yTOTALS1ETM4 / minPifVAL;
            yAritTOTALS1ETM5 = yTOTALS1ETM5 / minPifVAL;
            yAritTOTALS1ETM7 = yTOTALS1ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1ETM1 = (xxAritQuadTOTALS1ETM1 + ((pifTOTALS4ETM1arrayRAND[n] - xAritTOTALS1ETM1)^2));
                xxAritQuadTOTALS1ETM2 = (xxAritQuadTOTALS1ETM2 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS1ETM2)^2));
                xxAritQuadTOTALS1ETM3 = (xxAritQuadTOTALS1ETM3 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS1ETM3)^2));
                xxAritQuadTOTALS1ETM4 = (xxAritQuadTOTALS1ETM4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS1ETM4)^2));
                xxAritQuadTOTALS1ETM5 = (xxAritQuadTOTALS1ETM5 + ((pifTOTALS4ETM5arrayRAND[n] - xAritTOTALS1ETM5)^2));
                xxAritQuadTOTALS1ETM7 = (xxAritQuadTOTALS1ETM7 + ((pifTOTALS4ETM7arrayRAND[n] - xAritTOTALS1ETM7)^2));
    
                yyAritQuadTOTALS1ETM1 = (yyAritQuadTOTALS1ETM1 + ((pifTOTALS1ETM1arrayRAND[n] - yAritTOTALS1ETM1)^2));
                yyAritQuadTOTALS1ETM2 = (yyAritQuadTOTALS1ETM2 + ((pifTOTALS1ETM2arrayRAND[n] - yAritTOTALS1ETM2)^2));
                yyAritQuadTOTALS1ETM3 = (yyAritQuadTOTALS1ETM3 + ((pifTOTALS1ETM3arrayRAND[n] - yAritTOTALS1ETM3)^2));
                yyAritQuadTOTALS1ETM4 = (yyAritQuadTOTALS1ETM4 + ((pifTOTALS1ETM4arrayRAND[n] - yAritTOTALS1ETM4)^2));
                yyAritQuadTOTALS1ETM5 = (yyAritQuadTOTALS1ETM5 + ((pifTOTALS1ETM5arrayRAND[n] - yAritTOTALS1ETM5)^2));
                yyAritQuadTOTALS1ETM7 = (yyAritQuadTOTALS1ETM7 + ((pifTOTALS1ETM7arrayRAND[n] - yAritTOTALS1ETM7)^2));
    
                qXYTOTALS1ETM1 = (qXYTOTALS1ETM1 + ((pifTOTALS4ETM1arrayRAND[n] - xAritTOTALS1ETM1) * (pifTOTALS1ETM1arrayRAND[n] - yAritTOTALS1ETM1)));
                qXYTOTALS1ETM2 = (qXYTOTALS1ETM2 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS1ETM2) * (pifTOTALS1ETM2arrayRAND[n] - yAritTOTALS1ETM2)));
                qXYTOTALS1ETM3 = (qXYTOTALS1ETM3 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS1ETM3) * (pifTOTALS1ETM3arrayRAND[n] - yAritTOTALS1ETM3)));
                qXYTOTALS1ETM4 = (qXYTOTALS1ETM4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS1ETM4) * (pifTOTALS1ETM4arrayRAND[n] - yAritTOTALS1ETM4)));
                qXYTOTALS1ETM5 = (qXYTOTALS1ETM5 + ((pifTOTALS4ETM5arrayRAND[n] - xAritTOTALS1ETM5) * (pifTOTALS1ETM5arrayRAND[n] - yAritTOTALS1ETM5)));
                qXYTOTALS1ETM7 = (qXYTOTALS1ETM7 + ((pifTOTALS4ETM7arrayRAND[n] - xAritTOTALS1ETM7) * (pifTOTALS1ETM7arrayRAND[n] - yAritTOTALS1ETM7)));
            }
        
            aTOTALS1ETM1 = (((xQuadTOTALS1ETM1 * yTOTALS1ETM1) - (xTOTALS1ETM1 * xyTOTALS1ETM1)) / ((minPifVAL * xQuadTOTALS1ETM1) - (xTOTALS1ETM1^2)));
            aTOTALS1ETM2 = (((xQuadTOTALS1ETM2 * yTOTALS1ETM2) - (xTOTALS1ETM2 * xyTOTALS1ETM2)) / ((minPifVAL * xQuadTOTALS1ETM2) - (xTOTALS1ETM2^2)));
            aTOTALS1ETM3 = (((xQuadTOTALS1ETM3 * yTOTALS1ETM3) - (xTOTALS1ETM3 * xyTOTALS1ETM3)) / ((minPifVAL * xQuadTOTALS1ETM3) - (xTOTALS1ETM3^2)));
            aTOTALS1ETM4 = (((xQuadTOTALS1ETM4 * yTOTALS1ETM4) - (xTOTALS1ETM4 * xyTOTALS1ETM4)) / ((minPifVAL * xQuadTOTALS1ETM4) - (xTOTALS1ETM4^2)));
            aTOTALS1ETM5 = (((xQuadTOTALS1ETM5 * yTOTALS1ETM5) - (xTOTALS1ETM5 * xyTOTALS1ETM5)) / ((minPifVAL * xQuadTOTALS1ETM5) - (xTOTALS1ETM5^2)));
            aTOTALS1ETM7 = (((xQuadTOTALS1ETM7 * yTOTALS1ETM7) - (xTOTALS1ETM7 * xyTOTALS1ETM7)) / ((minPifVAL * xQuadTOTALS1ETM7) - (xTOTALS1ETM7^2)));
            
            bTOTALS1ETM1 = qXYTOTALS1ETM1 / xxAritQuadTOTALS1ETM1;
            bTOTALS1ETM2 = qXYTOTALS1ETM2 / xxAritQuadTOTALS1ETM2;
            bTOTALS1ETM3 = qXYTOTALS1ETM3 / xxAritQuadTOTALS1ETM3;
            bTOTALS1ETM4 = qXYTOTALS1ETM4 / xxAritQuadTOTALS1ETM4;
            bTOTALS1ETM5 = qXYTOTALS1ETM5 / xxAritQuadTOTALS1ETM5;
            bTOTALS1ETM7 = qXYTOTALS1ETM7 / xxAritQuadTOTALS1ETM7;
    
            rTOTALS1ETM1 = (qXYTOTALS1ETM1 / ((xxAritQuadTOTALS1ETM1 * yyAritQuadTOTALS1ETM1)^0.5));
            rTOTALS1ETM2 = (qXYTOTALS1ETM2 / ((xxAritQuadTOTALS1ETM2 * yyAritQuadTOTALS1ETM2)^0.5));
            rTOTALS1ETM3 = (qXYTOTALS1ETM3 / ((xxAritQuadTOTALS1ETM3 * yyAritQuadTOTALS1ETM3)^0.5));
            rTOTALS1ETM4 = (qXYTOTALS1ETM4 / ((xxAritQuadTOTALS1ETM4 * yyAritQuadTOTALS1ETM4)^0.5));
            rTOTALS1ETM5 = (qXYTOTALS1ETM5 / ((xxAritQuadTOTALS1ETM5 * yyAritQuadTOTALS1ETM5)^0.5));
            rTOTALS1ETM7 = (qXYTOTALS1ETM7 / ((xxAritQuadTOTALS1ETM7 * yyAritQuadTOTALS1ETM7)^0.5));
    
            rQuadTOTALS1ETM1 = ((rTOTALS1ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1ETM2 = ((rTOTALS1ETM2^2) * 100);
            rQuadTOTALS1ETM3 = ((rTOTALS1ETM3^2) * 100);
            rQuadTOTALS1ETM4 = ((rTOTALS1ETM4^2) * 100);
            rQuadTOTALS1ETM5 = ((rTOTALS1ETM5^2) * 100);
            rQuadTOTALS1ETM7 = ((rTOTALS1ETM7^2) * 100);
        
            syxTOTALS1ETM1 = (((yyAritQuadTOTALS1ETM1 - ((qXYTOTALS1ETM1^2) / xxAritQuadTOTALS1ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM2 = (((yyAritQuadTOTALS1ETM2 - ((qXYTOTALS1ETM2^2) / xxAritQuadTOTALS1ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM3 = (((yyAritQuadTOTALS1ETM3 - ((qXYTOTALS1ETM3^2) / xxAritQuadTOTALS1ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM4 = (((yyAritQuadTOTALS1ETM4 - ((qXYTOTALS1ETM4^2) / xxAritQuadTOTALS1ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM5 = (((yyAritQuadTOTALS1ETM5 - ((qXYTOTALS1ETM5^2) / xxAritQuadTOTALS1ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM7 = (((yyAritQuadTOTALS1ETM7 - ((qXYTOTALS1ETM7^2) / xxAritQuadTOTALS1ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1ETM1 = (((syxTOTALS1ETM1^2) / xxAritQuadTOTALS1ETM1)^0.5);
            bStandTOTALS1ETM2 = (((syxTOTALS1ETM2^2) / xxAritQuadTOTALS1ETM2)^0.5);
            bStandTOTALS1ETM3 = (((syxTOTALS1ETM3^2) / xxAritQuadTOTALS1ETM3)^0.5);
            bStandTOTALS1ETM4 = (((syxTOTALS1ETM4^2) / xxAritQuadTOTALS1ETM4)^0.5);
            bStandTOTALS1ETM5 = (((syxTOTALS1ETM5^2) / xxAritQuadTOTALS1ETM5)^0.5);
            bStandTOTALS1ETM7 = (((syxTOTALS1ETM7^2) / xxAritQuadTOTALS1ETM7)^0.5);
    
            aStandTOTALS1ETM1 = (bStandTOTALS1ETM1 * ((xQuadTOTALS1ETM1 / minPifVAL)^0.5));
            aStandTOTALS1ETM2 = (bStandTOTALS1ETM2 * ((xQuadTOTALS1ETM2 / minPifVAL)^0.5));
            aStandTOTALS1ETM3 = (bStandTOTALS1ETM3 * ((xQuadTOTALS1ETM3 / minPifVAL)^0.5));
            aStandTOTALS1ETM4 = (bStandTOTALS1ETM4 * ((xQuadTOTALS1ETM4 / minPifVAL)^0.5));
            aStandTOTALS1ETM5 = (bStandTOTALS1ETM5 * ((xQuadTOTALS1ETM5 / minPifVAL)^0.5));
            aStandTOTALS1ETM7 = (bStandTOTALS1ETM7 * ((xQuadTOTALS1ETM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM1, bTOTALS1ETM1, rTOTALS1ETM1, rQuadTOTALS1ETM1, aStandTOTALS1ETM1, bStandTOTALS1ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM2, bTOTALS1ETM2, rTOTALS1ETM2, rQuadTOTALS1ETM2, aStandTOTALS1ETM2, bStandTOTALS1ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM3, bTOTALS1ETM3, rTOTALS1ETM3, rQuadTOTALS1ETM3, aStandTOTALS1ETM3, bStandTOTALS1ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM4, bTOTALS1ETM4, rTOTALS1ETM4, rQuadTOTALS1ETM4, aStandTOTALS1ETM4, bStandTOTALS1ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM5, bTOTALS1ETM5, rTOTALS1ETM5, rQuadTOTALS1ETM5, aStandTOTALS1ETM5, bStandTOTALS1ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS1ETM7, bTOTALS1ETM7, rTOTALS1ETM7, rQuadTOTALS1ETM7, aStandTOTALS1ETM7, bStandTOTALS1ETM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS1ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS1ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS1ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS1ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS1ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS1ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS1ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT1ETM1[i,j] = (aTOTALS1ETM1 + (bTOTALS1ETM1 * REFS1ETM1[i,j]));
                    OUT1ETM2[i,j] = (aTOTALS1ETM2 + (bTOTALS1ETM2 * REFS1ETM2[i,j]));
                    OUT1ETM3[i,j] = (aTOTALS1ETM3 + (bTOTALS1ETM3 * REFS1ETM3[i,j]));
                    OUT1ETM4[i,j] = (aTOTALS1ETM4 + (bTOTALS1ETM4 * REFS1ETM4[i,j]));
                    OUT1ETM5[i,j] = (aTOTALS1ETM5 + (bTOTALS1ETM5 * REFS1ETM5[i,j]));
                    OUT1ETM7[i,j] = (aTOTALS1ETM7 + (bTOTALS1ETM7 * REFS1ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1ETM1);
        	CreatePyramid(OUT1ETM2);
        	CreatePyramid(OUT1ETM3);
        	CreatePyramid(OUT1ETM4);
        	CreatePyramid(OUT1ETM5);
        	CreatePyramid(OUT1ETM7);
        
        	CreateHistogram(OUT1ETM1);
        	CreateHistogram(OUT1ETM2);
        	CreateHistogram(OUT1ETM3);
        	CreateHistogram(OUT1ETM4);
        	CreateHistogram(OUT1ETM5);
        	CreateHistogram(OUT1ETM7);
        
        	CloseRaster(REFS1ETM1);
            CloseRaster(REFS1ETM2);
            CloseRaster(REFS1ETM3);
            CloseRaster(REFS1ETM4);
            CloseRaster(REFS1ETM5);
            CloseRaster(REFS1ETM7);
    
            CloseRaster(OUT1ETM1);
            CloseRaster(OUT1ETM2);
            CloseRaster(OUT1ETM3);
            CloseRaster(OUT1ETM4);
            CloseRaster(OUT1ETM5);
            CloseRaster(OUT1ETM7);
        
        	printf("Scene 1 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors1 == 6 )
            {
            numeric xAritTOTALS1TM1, xAritTOTALS1TM2, xAritTOTALS1TM3, xAritTOTALS1TM4, xAritTOTALS1TM5, xAritTOTALS1TM7;
            numeric yAritTOTALS1TM1, yAritTOTALS1TM2, yAritTOTALS1TM3, yAritTOTALS1TM4, yAritTOTALS1TM5, yAritTOTALS1TM7;
    
            numeric aTOTALS1TM1, aTOTALS1TM2, aTOTALS1TM3, aTOTALS1TM4, aTOTALS1TM5, aTOTALS1TM7;
            numeric bTOTALS1TM1, bTOTALS1TM2, bTOTALS1TM3, bTOTALS1TM4, bTOTALS1TM5, bTOTALS1TM7;
            numeric rTOTALS1TM1, rTOTALS1TM2, rTOTALS1TM3, rTOTALS1TM4, rTOTALS1TM5, rTOTALS1TM7;
            numeric rQuadTOTALS1TM1, rQuadTOTALS1TM2, rQuadTOTALS1TM3, rQuadTOTALS1TM4, rQuadTOTALS1TM5, rQuadTOTALS1TM7;
            numeric syxTOTALS1TM1, syxTOTALS1TM2, syxTOTALS1TM3, syxTOTALS1TM4, syxTOTALS1TM5, syxTOTALS1TM7;
            numeric bStandTOTALS1TM1, bStandTOTALS1TM2, bStandTOTALS1TM3, bStandTOTALS1TM4, bStandTOTALS1TM5, bStandTOTALS1TM7;
            numeric aStandTOTALS1TM1, aStandTOTALS1TM2, aStandTOTALS1TM3, aStandTOTALS1TM4, aStandTOTALS1TM5, aStandTOTALS1TM7;
    
            numeric xTOTALS1TM1 = 0;
            numeric xTOTALS1TM2 = 0;
            numeric xTOTALS1TM3 = 0;
            numeric xTOTALS1TM4 = 0;
            numeric xTOTALS1TM5 = 0;
            numeric xTOTALS1TM7 = 0;
    
            numeric xQuadTOTALS1TM1 = 0;
            numeric xQuadTOTALS1TM2 = 0;
            numeric xQuadTOTALS1TM3 = 0;
            numeric xQuadTOTALS1TM4 = 0;
            numeric xQuadTOTALS1TM5 = 0;
            numeric xQuadTOTALS1TM7 = 0;
    
            numeric yTOTALS1TM1 = 0;
            numeric yTOTALS1TM2 = 0;
            numeric yTOTALS1TM3 = 0;
            numeric yTOTALS1TM4 = 0;
            numeric yTOTALS1TM5 = 0;
            numeric yTOTALS1TM7 = 0;
    
            numeric yQuadTOTALS1TM1 = 0;
            numeric yQuadTOTALS1TM2 = 0;
            numeric yQuadTOTALS1TM3 = 0;
            numeric yQuadTOTALS1TM4 = 0;
            numeric yQuadTOTALS1TM5 = 0;
            numeric yQuadTOTALS1TM7 = 0;
    
            numeric xyTOTALS1TM1 = 0;
            numeric xyTOTALS1TM2 = 0;
            numeric xyTOTALS1TM3 = 0;
            numeric xyTOTALS1TM4 = 0;
            numeric xyTOTALS1TM5 = 0;
            numeric xyTOTALS1TM7 = 0;
    
            numeric xxAritQuadTOTALS1TM1 = 0;
            numeric xxAritQuadTOTALS1TM2 = 0;
            numeric xxAritQuadTOTALS1TM3 = 0;
            numeric xxAritQuadTOTALS1TM4 = 0;
            numeric xxAritQuadTOTALS1TM5 = 0;
            numeric xxAritQuadTOTALS1TM7 = 0;
    
            numeric yyAritQuadTOTALS1TM1 = 0;
            numeric yyAritQuadTOTALS1TM2 = 0;
            numeric yyAritQuadTOTALS1TM3 = 0;
            numeric yyAritQuadTOTALS1TM4 = 0;
            numeric yyAritQuadTOTALS1TM5 = 0;
            numeric yyAritQuadTOTALS1TM7 = 0;
    
            numeric qXYTOTALS1TM1 = 0;
            numeric qXYTOTALS1TM2 = 0;
            numeric qXYTOTALS1TM3 = 0;
            numeric qXYTOTALS1TM4 = 0;
            numeric qXYTOTALS1TM5 = 0;
            numeric qXYTOTALS1TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS1TM1 = xTOTALS1TM1 + pifTOTALS4ETM1arrayRAND[m];
                xTOTALS1TM2 = xTOTALS1TM2 + pifTOTALS4ETM2arrayRAND[m];
                xTOTALS1TM3 = xTOTALS1TM3 + pifTOTALS4ETM3arrayRAND[m];
                xTOTALS1TM4 = xTOTALS1TM4 + pifTOTALS4ETM4arrayRAND[m];
                xTOTALS1TM5 = xTOTALS1TM5 + pifTOTALS4ETM5arrayRAND[m];
                xTOTALS1TM7 = xTOTALS1TM7 + pifTOTALS4ETM7arrayRAND[m];
    
                xQuadTOTALS1TM1 = (xQuadTOTALS1TM1 + (pifTOTALS4ETM1arrayRAND[m]^2));
                xQuadTOTALS1TM2 = (xQuadTOTALS1TM2 + (pifTOTALS4ETM2arrayRAND[m]^2));
                xQuadTOTALS1TM3 = (xQuadTOTALS1TM3 + (pifTOTALS4ETM3arrayRAND[m]^2));
                xQuadTOTALS1TM4 = (xQuadTOTALS1TM4 + (pifTOTALS4ETM4arrayRAND[m]^2));
                xQuadTOTALS1TM5 = (xQuadTOTALS1TM5 + (pifTOTALS4ETM5arrayRAND[m]^2));
                xQuadTOTALS1TM7 = (xQuadTOTALS1TM7 + (pifTOTALS4ETM7arrayRAND[m]^2));
    
                yTOTALS1TM1 = yTOTALS1TM1 + pifTOTALS1TM1arrayRAND[m];
                yTOTALS1TM2 = yTOTALS1TM2 + pifTOTALS1TM2arrayRAND[m];
                yTOTALS1TM3 = yTOTALS1TM3 + pifTOTALS1TM3arrayRAND[m];
                yTOTALS1TM4 = yTOTALS1TM4 + pifTOTALS1TM4arrayRAND[m];
                yTOTALS1TM5 = yTOTALS1TM5 + pifTOTALS1TM5arrayRAND[m];
                yTOTALS1TM7 = yTOTALS1TM7 + pifTOTALS1TM7arrayRAND[m];
                
                yQuadTOTALS1TM1 = (yQuadTOTALS1TM1 + (pifTOTALS1TM1arrayRAND[m]^2));
                yQuadTOTALS1TM2 = (yQuadTOTALS1TM2 + (pifTOTALS1TM2arrayRAND[m]^2));
                yQuadTOTALS1TM3 = (yQuadTOTALS1TM3 + (pifTOTALS1TM3arrayRAND[m]^2));
                yQuadTOTALS1TM4 = (yQuadTOTALS1TM4 + (pifTOTALS1TM4arrayRAND[m]^2));
                yQuadTOTALS1TM5 = (yQuadTOTALS1TM5 + (pifTOTALS1TM5arrayRAND[m]^2));
                yQuadTOTALS1TM7 = (yQuadTOTALS1TM7 + (pifTOTALS1TM7arrayRAND[m]^2));
    
                xyTOTALS1TM1 = (xyTOTALS1TM1 + (pifTOTALS4ETM1arrayRAND[m] * pifTOTALS1TM1arrayRAND[m]));
                xyTOTALS1TM2 = (xyTOTALS1TM2 + (pifTOTALS4ETM2arrayRAND[m] * pifTOTALS1TM2arrayRAND[m]));
                xyTOTALS1TM3 = (xyTOTALS1TM3 + (pifTOTALS4ETM3arrayRAND[m] * pifTOTALS1TM3arrayRAND[m]));
                xyTOTALS1TM4 = (xyTOTALS1TM4 + (pifTOTALS4ETM4arrayRAND[m] * pifTOTALS1TM4arrayRAND[m]));
                xyTOTALS1TM5 = (xyTOTALS1TM5 + (pifTOTALS4ETM5arrayRAND[m] * pifTOTALS1TM5arrayRAND[m]));
                xyTOTALS1TM7 = (xyTOTALS1TM7 + (pifTOTALS4ETM7arrayRAND[m] * pifTOTALS1TM7arrayRAND[m]));
            }	
            
            xAritTOTALS1TM1 = xTOTALS1TM1 / minPifVAL;
            xAritTOTALS1TM2 = xTOTALS1TM2 / minPifVAL;
            xAritTOTALS1TM3 = xTOTALS1TM3 / minPifVAL;
            xAritTOTALS1TM4 = xTOTALS1TM4 / minPifVAL;
            xAritTOTALS1TM5 = xTOTALS1TM5 / minPifVAL;
            xAritTOTALS1TM7 = xTOTALS1TM7 / minPifVAL;
    
            yAritTOTALS1TM1 = yTOTALS1TM1 / minPifVAL;
            yAritTOTALS1TM2 = yTOTALS1TM2 / minPifVAL;
            yAritTOTALS1TM3 = yTOTALS1TM3 / minPifVAL;
            yAritTOTALS1TM4 = yTOTALS1TM4 / minPifVAL;
            yAritTOTALS1TM5 = yTOTALS1TM5 / minPifVAL;
            yAritTOTALS1TM7 = yTOTALS1TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1TM1 = (xxAritQuadTOTALS1TM1 + ((pifTOTALS4ETM1arrayRAND[n] - xAritTOTALS1TM1)^2));
                xxAritQuadTOTALS1TM2 = (xxAritQuadTOTALS1TM2 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS1TM2)^2));
                xxAritQuadTOTALS1TM3 = (xxAritQuadTOTALS1TM3 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS1TM3)^2));
                xxAritQuadTOTALS1TM4 = (xxAritQuadTOTALS1TM4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS1TM4)^2));
                xxAritQuadTOTALS1TM5 = (xxAritQuadTOTALS1TM5 + ((pifTOTALS4ETM5arrayRAND[n] - xAritTOTALS1TM5)^2));
                xxAritQuadTOTALS1TM7 = (xxAritQuadTOTALS1TM7 + ((pifTOTALS4ETM7arrayRAND[n] - xAritTOTALS1TM7)^2));
    
                yyAritQuadTOTALS1TM1 = (yyAritQuadTOTALS1TM1 + ((pifTOTALS1TM1arrayRAND[n] - yAritTOTALS1TM1)^2));
                yyAritQuadTOTALS1TM2 = (yyAritQuadTOTALS1TM2 + ((pifTOTALS1TM2arrayRAND[n] - yAritTOTALS1TM2)^2));
                yyAritQuadTOTALS1TM3 = (yyAritQuadTOTALS1TM3 + ((pifTOTALS1TM3arrayRAND[n] - yAritTOTALS1TM3)^2));
                yyAritQuadTOTALS1TM4 = (yyAritQuadTOTALS1TM4 + ((pifTOTALS1TM4arrayRAND[n] - yAritTOTALS1TM4)^2));
                yyAritQuadTOTALS1TM5 = (yyAritQuadTOTALS1TM5 + ((pifTOTALS1TM5arrayRAND[n] - yAritTOTALS1TM5)^2));
                yyAritQuadTOTALS1TM7 = (yyAritQuadTOTALS1TM7 + ((pifTOTALS1TM7arrayRAND[n] - yAritTOTALS1TM7)^2));
    
                qXYTOTALS1TM1 = (qXYTOTALS1TM1 + ((pifTOTALS4ETM1arrayRAND[n] - xAritTOTALS1TM1) * (pifTOTALS1TM1arrayRAND[n] - yAritTOTALS1TM1)));
                qXYTOTALS1TM2 = (qXYTOTALS1TM2 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS1TM2) * (pifTOTALS1TM2arrayRAND[n] - yAritTOTALS1TM2)));
                qXYTOTALS1TM3 = (qXYTOTALS1TM3 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS1TM3) * (pifTOTALS1TM3arrayRAND[n] - yAritTOTALS1TM3)));
                qXYTOTALS1TM4 = (qXYTOTALS1TM4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS1TM4) * (pifTOTALS1TM4arrayRAND[n] - yAritTOTALS1TM4)));
                qXYTOTALS1TM5 = (qXYTOTALS1TM5 + ((pifTOTALS4ETM5arrayRAND[n] - xAritTOTALS1TM5) * (pifTOTALS1TM5arrayRAND[n] - yAritTOTALS1TM5)));
                qXYTOTALS1TM7 = (qXYTOTALS1TM7 + ((pifTOTALS4ETM7arrayRAND[n] - xAritTOTALS1TM7) * (pifTOTALS1TM7arrayRAND[n] - yAritTOTALS1TM7)));
            }
        
            aTOTALS1TM1 = (((xQuadTOTALS1TM1 * yTOTALS1TM1) - (xTOTALS1TM1 * xyTOTALS1TM1)) / ((minPifVAL * xQuadTOTALS1TM1) - (xTOTALS1TM1^2)));
            aTOTALS1TM2 = (((xQuadTOTALS1TM2 * yTOTALS1TM2) - (xTOTALS1TM2 * xyTOTALS1TM2)) / ((minPifVAL * xQuadTOTALS1TM2) - (xTOTALS1TM2^2)));
            aTOTALS1TM3 = (((xQuadTOTALS1TM3 * yTOTALS1TM3) - (xTOTALS1TM3 * xyTOTALS1TM3)) / ((minPifVAL * xQuadTOTALS1TM3) - (xTOTALS1TM3^2)));
            aTOTALS1TM4 = (((xQuadTOTALS1TM4 * yTOTALS1TM4) - (xTOTALS1TM4 * xyTOTALS1TM4)) / ((minPifVAL * xQuadTOTALS1TM4) - (xTOTALS1TM4^2)));
            aTOTALS1TM5 = (((xQuadTOTALS1TM5 * yTOTALS1TM5) - (xTOTALS1TM5 * xyTOTALS1TM5)) / ((minPifVAL * xQuadTOTALS1TM5) - (xTOTALS1TM5^2)));
            aTOTALS1TM7 = (((xQuadTOTALS1TM7 * yTOTALS1TM7) - (xTOTALS1TM7 * xyTOTALS1TM7)) / ((minPifVAL * xQuadTOTALS1TM7) - (xTOTALS1TM7^2)));
            
            bTOTALS1TM1 = qXYTOTALS1TM1 / xxAritQuadTOTALS1TM1;
            bTOTALS1TM2 = qXYTOTALS1TM2 / xxAritQuadTOTALS1TM2;
            bTOTALS1TM3 = qXYTOTALS1TM3 / xxAritQuadTOTALS1TM3;
            bTOTALS1TM4 = qXYTOTALS1TM4 / xxAritQuadTOTALS1TM4;
            bTOTALS1TM5 = qXYTOTALS1TM5 / xxAritQuadTOTALS1TM5;
            bTOTALS1TM7 = qXYTOTALS1TM7 / xxAritQuadTOTALS1TM7;
    
            rTOTALS1TM1 = (qXYTOTALS1TM1 / ((xxAritQuadTOTALS1TM1 * yyAritQuadTOTALS1TM1)^0.5));
            rTOTALS1TM2 = (qXYTOTALS1TM2 / ((xxAritQuadTOTALS1TM2 * yyAritQuadTOTALS1TM2)^0.5));
            rTOTALS1TM3 = (qXYTOTALS1TM3 / ((xxAritQuadTOTALS1TM3 * yyAritQuadTOTALS1TM3)^0.5));
            rTOTALS1TM4 = (qXYTOTALS1TM4 / ((xxAritQuadTOTALS1TM4 * yyAritQuadTOTALS1TM4)^0.5));
            rTOTALS1TM5 = (qXYTOTALS1TM5 / ((xxAritQuadTOTALS1TM5 * yyAritQuadTOTALS1TM5)^0.5));
            rTOTALS1TM7 = (qXYTOTALS1TM7 / ((xxAritQuadTOTALS1TM7 * yyAritQuadTOTALS1TM7)^0.5));
    
            rQuadTOTALS1TM1 = ((rTOTALS1TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1TM2 = ((rTOTALS1TM2^2) * 100);
            rQuadTOTALS1TM3 = ((rTOTALS1TM3^2) * 100);
            rQuadTOTALS1TM4 = ((rTOTALS1TM4^2) * 100);
            rQuadTOTALS1TM5 = ((rTOTALS1TM5^2) * 100);
            rQuadTOTALS1TM7 = ((rTOTALS1TM7^2) * 100);
        
            syxTOTALS1TM1 = (((yyAritQuadTOTALS1TM1 - ((qXYTOTALS1TM1^2) / xxAritQuadTOTALS1TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM2 = (((yyAritQuadTOTALS1TM2 - ((qXYTOTALS1TM2^2) / xxAritQuadTOTALS1TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM3 = (((yyAritQuadTOTALS1TM3 - ((qXYTOTALS1TM3^2) / xxAritQuadTOTALS1TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM4 = (((yyAritQuadTOTALS1TM4 - ((qXYTOTALS1TM4^2) / xxAritQuadTOTALS1TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM5 = (((yyAritQuadTOTALS1TM5 - ((qXYTOTALS1TM5^2) / xxAritQuadTOTALS1TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM7 = (((yyAritQuadTOTALS1TM7 - ((qXYTOTALS1TM7^2) / xxAritQuadTOTALS1TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1TM1 = (((syxTOTALS1TM1^2) / xxAritQuadTOTALS1TM1)^0.5);
            bStandTOTALS1TM2 = (((syxTOTALS1TM2^2) / xxAritQuadTOTALS1TM2)^0.5);
            bStandTOTALS1TM3 = (((syxTOTALS1TM3^2) / xxAritQuadTOTALS1TM3)^0.5);
            bStandTOTALS1TM4 = (((syxTOTALS1TM4^2) / xxAritQuadTOTALS1TM4)^0.5);
            bStandTOTALS1TM5 = (((syxTOTALS1TM5^2) / xxAritQuadTOTALS1TM5)^0.5);
            bStandTOTALS1TM7 = (((syxTOTALS1TM7^2) / xxAritQuadTOTALS1TM7)^0.5);
    
            aStandTOTALS1TM1 = (bStandTOTALS1TM1 * ((xQuadTOTALS1TM1 / minPifVAL)^0.5));
            aStandTOTALS1TM2 = (bStandTOTALS1TM2 * ((xQuadTOTALS1TM2 / minPifVAL)^0.5));
            aStandTOTALS1TM3 = (bStandTOTALS1TM3 * ((xQuadTOTALS1TM3 / minPifVAL)^0.5));
            aStandTOTALS1TM4 = (bStandTOTALS1TM4 * ((xQuadTOTALS1TM4 / minPifVAL)^0.5));
            aStandTOTALS1TM5 = (bStandTOTALS1TM5 * ((xQuadTOTALS1TM5 / minPifVAL)^0.5));
            aStandTOTALS1TM7 = (bStandTOTALS1TM7 * ((xQuadTOTALS1TM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM1, bTOTALS1TM1, rTOTALS1TM1, rQuadTOTALS1TM1, aStandTOTALS1TM1, bStandTOTALS1TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM2, bTOTALS1TM2, rTOTALS1TM2, rQuadTOTALS1TM2, aStandTOTALS1TM2, bStandTOTALS1TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM3, bTOTALS1TM3, rTOTALS1TM3, rQuadTOTALS1TM3, aStandTOTALS1TM3, bStandTOTALS1TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM4, bTOTALS1TM4, rTOTALS1TM4, rQuadTOTALS1TM4, aStandTOTALS1TM4, bStandTOTALS1TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM5, bTOTALS1TM5, rTOTALS1TM5, rQuadTOTALS1TM5, aStandTOTALS1TM5, bStandTOTALS1TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS1TM7, bTOTALS1TM7, rTOTALS1TM7, rQuadTOTALS1TM7, aStandTOTALS1TM7, bStandTOTALS1TM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS1TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS1TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS1TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS1TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS1TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS1TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS1TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT1TM1[i,j] = (aTOTALS1TM1 + (bTOTALS1TM1 * REFS1TM1[i,j]));
                    OUT1TM2[i,j] = (aTOTALS1TM2 + (bTOTALS1TM2 * REFS1TM2[i,j]));
                    OUT1TM3[i,j] = (aTOTALS1TM3 + (bTOTALS1TM3 * REFS1TM3[i,j]));
                    OUT1TM4[i,j] = (aTOTALS1TM4 + (bTOTALS1TM4 * REFS1TM4[i,j]));
                    OUT1TM5[i,j] = (aTOTALS1TM5 + (bTOTALS1TM5 * REFS1TM5[i,j]));
                    OUT1TM7[i,j] = (aTOTALS1TM7 + (bTOTALS1TM7 * REFS1TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1TM1);
        	CreatePyramid(OUT1TM2);
        	CreatePyramid(OUT1TM3);
        	CreatePyramid(OUT1TM4);
        	CreatePyramid(OUT1TM5);
        	CreatePyramid(OUT1TM7);
        
        	CreateHistogram(OUT1TM1);
        	CreateHistogram(OUT1TM2);
        	CreateHistogram(OUT1TM3);
        	CreateHistogram(OUT1TM4);
        	CreateHistogram(OUT1TM5);
        	CreateHistogram(OUT1TM7);
        
        	CloseRaster(REFS1TM1);
            CloseRaster(REFS1TM2);
            CloseRaster(REFS1TM3);
            CloseRaster(REFS1TM4);
            CloseRaster(REFS1TM5);
            CloseRaster(REFS1TM7);
    
            CloseRaster(OUT1TM1);
            CloseRaster(OUT1TM2);
            CloseRaster(OUT1TM3);
            CloseRaster(OUT1TM4);
            CloseRaster(OUT1TM5);
            CloseRaster(OUT1TM7);
        
        	printf("Scene 1 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS1MSS1, xAritTOTALS1MSS2, xAritTOTALS1MSS4;
            numeric yAritTOTALS1MSS1, yAritTOTALS1MSS2, yAritTOTALS1MSS4;
    
            numeric aTOTALS1MSS1, aTOTALS1MSS2, aTOTALS1MSS4;
            numeric bTOTALS1MSS1, bTOTALS1MSS2, bTOTALS1MSS4;
            numeric rTOTALS1MSS1, rTOTALS1MSS2, rTOTALS1MSS4;
            numeric rQuadTOTALS1MSS1, rQuadTOTALS1MSS2, rQuadTOTALS1MSS4;
            numeric syxTOTALS1MSS1, syxTOTALS1MSS2, syxTOTALS1MSS4;
            numeric bStandTOTALS1MSS1, bStandTOTALS1MSS2, bStandTOTALS1MSS4;
            numeric aStandTOTALS1MSS1, aStandTOTALS1MSS2, aStandTOTALS1MSS4;
    
            numeric xTOTALS1MSS1 = 0;
            numeric xTOTALS1MSS2 = 0;
            numeric xTOTALS1MSS4 = 0;
    
            numeric xQuadTOTALS1MSS1 = 0;
            numeric xQuadTOTALS1MSS2 = 0;
            numeric xQuadTOTALS1MSS4 = 0;
    
            numeric yTOTALS1MSS1 = 0;
            numeric yTOTALS1MSS2 = 0;
            numeric yTOTALS1MSS4 = 0;
    
            numeric yQuadTOTALS1MSS1 = 0;
            numeric yQuadTOTALS1MSS2 = 0;
            numeric yQuadTOTALS1MSS4 = 0;
    
            numeric xyTOTALS1MSS1 = 0;
            numeric xyTOTALS1MSS2 = 0;
            numeric xyTOTALS1MSS4 = 0;
    
            numeric xxAritQuadTOTALS1MSS1 = 0;
            numeric xxAritQuadTOTALS1MSS2 = 0;
            numeric xxAritQuadTOTALS1MSS4 = 0;
    
            numeric yyAritQuadTOTALS1MSS1 = 0;
            numeric yyAritQuadTOTALS1MSS2 = 0;
            numeric yyAritQuadTOTALS1MSS4 = 0;
    
            numeric qXYTOTALS1MSS1 = 0;
            numeric qXYTOTALS1MSS2 = 0;
            numeric qXYTOTALS1MSS4 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS1MSS1 = xTOTALS1MSS1 + pifTOTALS4ETM2arrayRAND[m];
                xTOTALS1MSS2 = xTOTALS1MSS2 + pifTOTALS4ETM3arrayRAND[m];
                xTOTALS1MSS4 = xTOTALS1MSS4 + pifTOTALS4ETM4arrayRAND[m];
    
                xQuadTOTALS1MSS1 = (xQuadTOTALS1MSS1 + (pifTOTALS4ETM2arrayRAND[m]^2));
                xQuadTOTALS1MSS2 = (xQuadTOTALS1MSS2 + (pifTOTALS4ETM3arrayRAND[m]^2));
                xQuadTOTALS1MSS4 = (xQuadTOTALS1MSS4 + (pifTOTALS4ETM4arrayRAND[m]^2));
    
                yTOTALS1MSS1 = yTOTALS1MSS1 + pifTOTALS1MSS1arrayRAND[m];
                yTOTALS1MSS2 = yTOTALS1MSS2 + pifTOTALS1MSS2arrayRAND[m];
                yTOTALS1MSS4 = yTOTALS1MSS4 + pifTOTALS1MSS4arrayRAND[m];
                
                yQuadTOTALS1MSS1 = (yQuadTOTALS1MSS1 + (pifTOTALS1MSS1arrayRAND[m]^2));
                yQuadTOTALS1MSS2 = (yQuadTOTALS1MSS2 + (pifTOTALS1MSS2arrayRAND[m]^2));
                yQuadTOTALS1MSS4 = (yQuadTOTALS1MSS4 + (pifTOTALS1MSS4arrayRAND[m]^2));
    
                xyTOTALS1MSS1 = (xyTOTALS1MSS1 + (pifTOTALS4ETM2arrayRAND[m] * pifTOTALS1MSS1arrayRAND[m]));
                xyTOTALS1MSS2 = (xyTOTALS1MSS2 + (pifTOTALS4ETM3arrayRAND[m] * pifTOTALS1MSS2arrayRAND[m]));
                xyTOTALS1MSS4 = (xyTOTALS1MSS4 + (pifTOTALS4ETM4arrayRAND[m] * pifTOTALS1MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS1MSS1 = xTOTALS1MSS1 / minPifVAL;
            xAritTOTALS1MSS2 = xTOTALS1MSS2 / minPifVAL;
            xAritTOTALS1MSS4 = xTOTALS1MSS4 / minPifVAL;
    
            yAritTOTALS1MSS1 = yTOTALS1MSS1 / minPifVAL;
            yAritTOTALS1MSS2 = yTOTALS1MSS2 / minPifVAL;
            yAritTOTALS1MSS4 = yTOTALS1MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1MSS1 = (xxAritQuadTOTALS1MSS1 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS1MSS1)^2));
                xxAritQuadTOTALS1MSS2 = (xxAritQuadTOTALS1MSS2 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS1MSS2)^2));
                xxAritQuadTOTALS1MSS4 = (xxAritQuadTOTALS1MSS4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS1MSS4)^2));
    
                yyAritQuadTOTALS1MSS1 = (yyAritQuadTOTALS1MSS1 + ((pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)^2));
                yyAritQuadTOTALS1MSS2 = (yyAritQuadTOTALS1MSS2 + ((pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)^2));
                yyAritQuadTOTALS1MSS4 = (yyAritQuadTOTALS1MSS4 + ((pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)^2));
    
                qXYTOTALS1MSS1 = (qXYTOTALS1MSS1 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS1MSS1) * (pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)));
                qXYTOTALS1MSS2 = (qXYTOTALS1MSS2 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS1MSS2) * (pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)));
                qXYTOTALS1MSS4 = (qXYTOTALS1MSS4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS1MSS4) * (pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)));
            }
        
            aTOTALS1MSS1 = (((xQuadTOTALS1MSS1 * yTOTALS1MSS1) - (xTOTALS1MSS1 * xyTOTALS1MSS1)) / ((minPifVAL * xQuadTOTALS1MSS1) - (xTOTALS1MSS1^2)));
            aTOTALS1MSS2 = (((xQuadTOTALS1MSS2 * yTOTALS1MSS2) - (xTOTALS1MSS2 * xyTOTALS1MSS2)) / ((minPifVAL * xQuadTOTALS1MSS2) - (xTOTALS1MSS2^2)));
            aTOTALS1MSS4 = (((xQuadTOTALS1MSS4 * yTOTALS1MSS4) - (xTOTALS1MSS4 * xyTOTALS1MSS4)) / ((minPifVAL * xQuadTOTALS1MSS4) - (xTOTALS1MSS4^2)));
            
            bTOTALS1MSS1 = qXYTOTALS1MSS1 / xxAritQuadTOTALS1MSS1;
            bTOTALS1MSS2 = qXYTOTALS1MSS2 / xxAritQuadTOTALS1MSS2;
            bTOTALS1MSS4 = qXYTOTALS1MSS4 / xxAritQuadTOTALS1MSS4;
    
            rTOTALS1MSS1 = (qXYTOTALS1MSS1 / ((xxAritQuadTOTALS1MSS1 * yyAritQuadTOTALS1MSS1)^0.5));
            rTOTALS1MSS2 = (qXYTOTALS1MSS2 / ((xxAritQuadTOTALS1MSS2 * yyAritQuadTOTALS1MSS2)^0.5));
            rTOTALS1MSS4 = (qXYTOTALS1MSS4 / ((xxAritQuadTOTALS1MSS4 * yyAritQuadTOTALS1MSS4)^0.5));
    
            rQuadTOTALS1MSS1 = ((rTOTALS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1MSS2 = ((rTOTALS1MSS2^2) * 100);
            rQuadTOTALS1MSS4 = ((rTOTALS1MSS4^2) * 100);
        
            syxTOTALS1MSS1 = (((yyAritQuadTOTALS1MSS1 - ((qXYTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS2 = (((yyAritQuadTOTALS1MSS2 - ((qXYTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS4 = (((yyAritQuadTOTALS1MSS4 - ((qXYTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1MSS1 = (((syxTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)^0.5);
            bStandTOTALS1MSS2 = (((syxTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)^0.5);
            bStandTOTALS1MSS4 = (((syxTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)^0.5);
    
            aStandTOTALS1MSS1 = (bStandTOTALS1MSS1 * ((xQuadTOTALS1MSS1 / minPifVAL)^0.5));
            aStandTOTALS1MSS2 = (bStandTOTALS1MSS2 * ((xQuadTOTALS1MSS2 / minPifVAL)^0.5));
            aStandTOTALS1MSS4 = (bStandTOTALS1MSS4 * ((xQuadTOTALS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS1, bTOTALS1MSS1, rTOTALS1MSS1, rQuadTOTALS1MSS1, aStandTOTALS1MSS1, bStandTOTALS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS2, bTOTALS1MSS2, rTOTALS1MSS2, rQuadTOTALS1MSS2, aStandTOTALS1MSS2, bStandTOTALS1MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS4, bTOTALS1MSS4, rTOTALS1MSS4, rQuadTOTALS1MSS4, aStandTOTALS1MSS4, bStandTOTALS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS1MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS1MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS1MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aTOTALS1MSS1 + (bTOTALS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aTOTALS1MSS2 + (bTOTALS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = REFS1MSS3[i,j];
                    OUT1MSS4[i,j] = (aTOTALS1MSS4 + (bTOTALS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT1MSS1);
        	CreatePyramid(OUT1MSS2);
        	CreatePyramid(OUT1MSS3);
        	CreatePyramid(OUT1MSS4);
        
        	CreateHistogram(OUT1MSS1);
        	CreateHistogram(OUT1MSS2);
        	CreateHistogram(OUT1MSS3);
        	CreateHistogram(OUT1MSS4);
        
        	CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors2 == 7 )
            {
            numeric xAritTOTALS2ETM1, xAritTOTALS2ETM2, xAritTOTALS2ETM3, xAritTOTALS2ETM4, xAritTOTALS2ETM5, xAritTOTALS2ETM7;
            numeric yAritTOTALS2ETM1, yAritTOTALS2ETM2, yAritTOTALS2ETM3, yAritTOTALS2ETM4, yAritTOTALS2ETM5, yAritTOTALS2ETM7;
    
            numeric aTOTALS2ETM1, aTOTALS2ETM2, aTOTALS2ETM3, aTOTALS2ETM4, aTOTALS2ETM5, aTOTALS2ETM7;
            numeric bTOTALS2ETM1, bTOTALS2ETM2, bTOTALS2ETM3, bTOTALS2ETM4, bTOTALS2ETM5, bTOTALS2ETM7;
            numeric rTOTALS2ETM1, rTOTALS2ETM2, rTOTALS2ETM3, rTOTALS2ETM4, rTOTALS2ETM5, rTOTALS2ETM7;
            numeric rQuadTOTALS2ETM1, rQuadTOTALS2ETM2, rQuadTOTALS2ETM3, rQuadTOTALS2ETM4, rQuadTOTALS2ETM5, rQuadTOTALS2ETM7;
            numeric syxTOTALS2ETM1, syxTOTALS2ETM2, syxTOTALS2ETM3, syxTOTALS2ETM4, syxTOTALS2ETM5, syxTOTALS2ETM7;
            numeric bStandTOTALS2ETM1, bStandTOTALS2ETM2, bStandTOTALS2ETM3, bStandTOTALS2ETM4, bStandTOTALS2ETM5, bStandTOTALS2ETM7;
            numeric aStandTOTALS2ETM1, aStandTOTALS2ETM2, aStandTOTALS2ETM3, aStandTOTALS2ETM4, aStandTOTALS2ETM5, aStandTOTALS2ETM7;
    
            numeric xTOTALS2ETM1 = 0;
            numeric xTOTALS2ETM2 = 0;
            numeric xTOTALS2ETM3 = 0;
            numeric xTOTALS2ETM4 = 0;
            numeric xTOTALS2ETM5 = 0;
            numeric xTOTALS2ETM7 = 0;
    
            numeric xQuadTOTALS2ETM1 = 0;
            numeric xQuadTOTALS2ETM2 = 0;
            numeric xQuadTOTALS2ETM3 = 0;
            numeric xQuadTOTALS2ETM4 = 0;
            numeric xQuadTOTALS2ETM5 = 0;
            numeric xQuadTOTALS2ETM7 = 0;
    
            numeric yTOTALS2ETM1 = 0;
            numeric yTOTALS2ETM2 = 0;
            numeric yTOTALS2ETM3 = 0;
            numeric yTOTALS2ETM4 = 0;
            numeric yTOTALS2ETM5 = 0;
            numeric yTOTALS2ETM7 = 0;
    
            numeric yQuadTOTALS2ETM1 = 0;
            numeric yQuadTOTALS2ETM2 = 0;
            numeric yQuadTOTALS2ETM3 = 0;
            numeric yQuadTOTALS2ETM4 = 0;
            numeric yQuadTOTALS2ETM5 = 0;
            numeric yQuadTOTALS2ETM7 = 0;
    
            numeric xyTOTALS2ETM1 = 0;
            numeric xyTOTALS2ETM2 = 0;
            numeric xyTOTALS2ETM3 = 0;
            numeric xyTOTALS2ETM4 = 0;
            numeric xyTOTALS2ETM5 = 0;
            numeric xyTOTALS2ETM7 = 0;
    
            numeric xxAritQuadTOTALS2ETM1 = 0;
            numeric xxAritQuadTOTALS2ETM2 = 0;
            numeric xxAritQuadTOTALS2ETM3 = 0;
            numeric xxAritQuadTOTALS2ETM4 = 0;
            numeric xxAritQuadTOTALS2ETM5 = 0;
            numeric xxAritQuadTOTALS2ETM7 = 0;
    
            numeric yyAritQuadTOTALS2ETM1 = 0;
            numeric yyAritQuadTOTALS2ETM2 = 0;
            numeric yyAritQuadTOTALS2ETM3 = 0;
            numeric yyAritQuadTOTALS2ETM4 = 0;
            numeric yyAritQuadTOTALS2ETM5 = 0;
            numeric yyAritQuadTOTALS2ETM7 = 0;
    
            numeric qXYTOTALS2ETM1 = 0;
            numeric qXYTOTALS2ETM2 = 0;
            numeric qXYTOTALS2ETM3 = 0;
            numeric qXYTOTALS2ETM4 = 0;
            numeric qXYTOTALS2ETM5 = 0;
            numeric qXYTOTALS2ETM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS2ETM1 = xTOTALS2ETM1 + pifTOTALS4ETM1arrayRAND[m];
                xTOTALS2ETM2 = xTOTALS2ETM2 + pifTOTALS4ETM2arrayRAND[m];
                xTOTALS2ETM3 = xTOTALS2ETM3 + pifTOTALS4ETM3arrayRAND[m];
                xTOTALS2ETM4 = xTOTALS2ETM4 + pifTOTALS4ETM4arrayRAND[m];
                xTOTALS2ETM5 = xTOTALS2ETM5 + pifTOTALS4ETM5arrayRAND[m];
                xTOTALS2ETM7 = xTOTALS2ETM7 + pifTOTALS4ETM7arrayRAND[m];
    
                xQuadTOTALS2ETM1 = (xQuadTOTALS2ETM1 + (pifTOTALS4ETM1arrayRAND[m]^2));
                xQuadTOTALS2ETM2 = (xQuadTOTALS2ETM2 + (pifTOTALS4ETM2arrayRAND[m]^2));
                xQuadTOTALS2ETM3 = (xQuadTOTALS2ETM3 + (pifTOTALS4ETM3arrayRAND[m]^2));
                xQuadTOTALS2ETM4 = (xQuadTOTALS2ETM4 + (pifTOTALS4ETM4arrayRAND[m]^2));
                xQuadTOTALS2ETM5 = (xQuadTOTALS2ETM5 + (pifTOTALS4ETM5arrayRAND[m]^2));
                xQuadTOTALS2ETM7 = (xQuadTOTALS2ETM7 + (pifTOTALS4ETM7arrayRAND[m]^2));
    
                yTOTALS2ETM1 = yTOTALS2ETM1 + pifTOTALS2ETM1arrayRAND[m];
                yTOTALS2ETM2 = yTOTALS2ETM2 + pifTOTALS2ETM2arrayRAND[m];
                yTOTALS2ETM3 = yTOTALS2ETM3 + pifTOTALS2ETM3arrayRAND[m];
                yTOTALS2ETM4 = yTOTALS2ETM4 + pifTOTALS2ETM4arrayRAND[m];
                yTOTALS2ETM5 = yTOTALS2ETM5 + pifTOTALS2ETM5arrayRAND[m];
                yTOTALS2ETM7 = yTOTALS2ETM7 + pifTOTALS2ETM7arrayRAND[m];
                
                yQuadTOTALS2ETM1 = (yQuadTOTALS2ETM1 + (pifTOTALS2ETM1arrayRAND[m]^2));
                yQuadTOTALS2ETM2 = (yQuadTOTALS2ETM2 + (pifTOTALS2ETM2arrayRAND[m]^2));
                yQuadTOTALS2ETM3 = (yQuadTOTALS2ETM3 + (pifTOTALS2ETM3arrayRAND[m]^2));
                yQuadTOTALS2ETM4 = (yQuadTOTALS2ETM4 + (pifTOTALS2ETM4arrayRAND[m]^2));
                yQuadTOTALS2ETM5 = (yQuadTOTALS2ETM5 + (pifTOTALS2ETM5arrayRAND[m]^2));
                yQuadTOTALS2ETM7 = (yQuadTOTALS2ETM7 + (pifTOTALS2ETM7arrayRAND[m]^2));
    
                xyTOTALS2ETM1 = (xyTOTALS2ETM1 + (pifTOTALS4ETM1arrayRAND[m] * pifTOTALS2ETM1arrayRAND[m]));
                xyTOTALS2ETM2 = (xyTOTALS2ETM2 + (pifTOTALS4ETM2arrayRAND[m] * pifTOTALS2ETM2arrayRAND[m]));
                xyTOTALS2ETM3 = (xyTOTALS2ETM3 + (pifTOTALS4ETM3arrayRAND[m] * pifTOTALS2ETM3arrayRAND[m]));
                xyTOTALS2ETM4 = (xyTOTALS2ETM4 + (pifTOTALS4ETM4arrayRAND[m] * pifTOTALS2ETM4arrayRAND[m]));
                xyTOTALS2ETM5 = (xyTOTALS2ETM5 + (pifTOTALS4ETM5arrayRAND[m] * pifTOTALS2ETM5arrayRAND[m]));
                xyTOTALS2ETM7 = (xyTOTALS2ETM7 + (pifTOTALS4ETM7arrayRAND[m] * pifTOTALS2ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS2ETM1 = xTOTALS2ETM1 / minPifVAL;
            xAritTOTALS2ETM2 = xTOTALS2ETM2 / minPifVAL;
            xAritTOTALS2ETM3 = xTOTALS2ETM3 / minPifVAL;
            xAritTOTALS2ETM4 = xTOTALS2ETM4 / minPifVAL;
            xAritTOTALS2ETM5 = xTOTALS2ETM5 / minPifVAL;
            xAritTOTALS2ETM7 = xTOTALS2ETM7 / minPifVAL;
    
            yAritTOTALS2ETM1 = yTOTALS2ETM1 / minPifVAL;
            yAritTOTALS2ETM2 = yTOTALS2ETM2 / minPifVAL;
            yAritTOTALS2ETM3 = yTOTALS2ETM3 / minPifVAL;
            yAritTOTALS2ETM4 = yTOTALS2ETM4 / minPifVAL;
            yAritTOTALS2ETM5 = yTOTALS2ETM5 / minPifVAL;
            yAritTOTALS2ETM7 = yTOTALS2ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2ETM1 = (xxAritQuadTOTALS2ETM1 + ((pifTOTALS4ETM1arrayRAND[n] - xAritTOTALS2ETM1)^2));
                xxAritQuadTOTALS2ETM2 = (xxAritQuadTOTALS2ETM2 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS2ETM2)^2));
                xxAritQuadTOTALS2ETM3 = (xxAritQuadTOTALS2ETM3 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS2ETM3)^2));
                xxAritQuadTOTALS2ETM4 = (xxAritQuadTOTALS2ETM4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS2ETM4)^2));
                xxAritQuadTOTALS2ETM5 = (xxAritQuadTOTALS2ETM5 + ((pifTOTALS4ETM5arrayRAND[n] - xAritTOTALS2ETM5)^2));
                xxAritQuadTOTALS2ETM7 = (xxAritQuadTOTALS2ETM7 + ((pifTOTALS4ETM7arrayRAND[n] - xAritTOTALS2ETM7)^2));
    
                yyAritQuadTOTALS2ETM1 = (yyAritQuadTOTALS2ETM1 + ((pifTOTALS2ETM1arrayRAND[n] - yAritTOTALS2ETM1)^2));
                yyAritQuadTOTALS2ETM2 = (yyAritQuadTOTALS2ETM2 + ((pifTOTALS2ETM2arrayRAND[n] - yAritTOTALS2ETM2)^2));
                yyAritQuadTOTALS2ETM3 = (yyAritQuadTOTALS2ETM3 + ((pifTOTALS2ETM3arrayRAND[n] - yAritTOTALS2ETM3)^2));
                yyAritQuadTOTALS2ETM4 = (yyAritQuadTOTALS2ETM4 + ((pifTOTALS2ETM4arrayRAND[n] - yAritTOTALS2ETM4)^2));
                yyAritQuadTOTALS2ETM5 = (yyAritQuadTOTALS2ETM5 + ((pifTOTALS2ETM5arrayRAND[n] - yAritTOTALS2ETM5)^2));
                yyAritQuadTOTALS2ETM7 = (yyAritQuadTOTALS2ETM7 + ((pifTOTALS2ETM7arrayRAND[n] - yAritTOTALS2ETM7)^2));
    
                qXYTOTALS2ETM1 = (qXYTOTALS2ETM1 + ((pifTOTALS4ETM1arrayRAND[n] - xAritTOTALS2ETM1) * (pifTOTALS2ETM1arrayRAND[n] - yAritTOTALS2ETM1)));
                qXYTOTALS2ETM2 = (qXYTOTALS2ETM2 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS2ETM2) * (pifTOTALS2ETM2arrayRAND[n] - yAritTOTALS2ETM2)));
                qXYTOTALS2ETM3 = (qXYTOTALS2ETM3 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS2ETM3) * (pifTOTALS2ETM3arrayRAND[n] - yAritTOTALS2ETM3)));
                qXYTOTALS2ETM4 = (qXYTOTALS2ETM4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS2ETM4) * (pifTOTALS2ETM4arrayRAND[n] - yAritTOTALS2ETM4)));
                qXYTOTALS2ETM5 = (qXYTOTALS2ETM5 + ((pifTOTALS4ETM5arrayRAND[n] - xAritTOTALS2ETM5) * (pifTOTALS2ETM5arrayRAND[n] - yAritTOTALS2ETM5)));
                qXYTOTALS2ETM7 = (qXYTOTALS2ETM7 + ((pifTOTALS4ETM7arrayRAND[n] - xAritTOTALS2ETM7) * (pifTOTALS2ETM7arrayRAND[n] - yAritTOTALS2ETM7)));
            }
        
            aTOTALS2ETM1 = (((xQuadTOTALS2ETM1 * yTOTALS2ETM1) - (xTOTALS2ETM1 * xyTOTALS2ETM1)) / ((minPifVAL * xQuadTOTALS2ETM1) - (xTOTALS2ETM1^2)));
            aTOTALS2ETM2 = (((xQuadTOTALS2ETM2 * yTOTALS2ETM2) - (xTOTALS2ETM2 * xyTOTALS2ETM2)) / ((minPifVAL * xQuadTOTALS2ETM2) - (xTOTALS2ETM2^2)));
            aTOTALS2ETM3 = (((xQuadTOTALS2ETM3 * yTOTALS2ETM3) - (xTOTALS2ETM3 * xyTOTALS2ETM3)) / ((minPifVAL * xQuadTOTALS2ETM3) - (xTOTALS2ETM3^2)));
            aTOTALS2ETM4 = (((xQuadTOTALS2ETM4 * yTOTALS2ETM4) - (xTOTALS2ETM4 * xyTOTALS2ETM4)) / ((minPifVAL * xQuadTOTALS2ETM4) - (xTOTALS2ETM4^2)));
            aTOTALS2ETM5 = (((xQuadTOTALS2ETM5 * yTOTALS2ETM5) - (xTOTALS2ETM5 * xyTOTALS2ETM5)) / ((minPifVAL * xQuadTOTALS2ETM5) - (xTOTALS2ETM5^2)));
            aTOTALS2ETM7 = (((xQuadTOTALS2ETM7 * yTOTALS2ETM7) - (xTOTALS2ETM7 * xyTOTALS2ETM7)) / ((minPifVAL * xQuadTOTALS2ETM7) - (xTOTALS2ETM7^2)));
            
            bTOTALS2ETM1 = qXYTOTALS2ETM1 / xxAritQuadTOTALS2ETM1;
            bTOTALS2ETM2 = qXYTOTALS2ETM2 / xxAritQuadTOTALS2ETM2;
            bTOTALS2ETM3 = qXYTOTALS2ETM3 / xxAritQuadTOTALS2ETM3;
            bTOTALS2ETM4 = qXYTOTALS2ETM4 / xxAritQuadTOTALS2ETM4;
            bTOTALS2ETM5 = qXYTOTALS2ETM5 / xxAritQuadTOTALS2ETM5;
            bTOTALS2ETM7 = qXYTOTALS2ETM7 / xxAritQuadTOTALS2ETM7;
    
            rTOTALS2ETM1 = (qXYTOTALS2ETM1 / ((xxAritQuadTOTALS2ETM1 * yyAritQuadTOTALS2ETM1)^0.5));
            rTOTALS2ETM2 = (qXYTOTALS2ETM2 / ((xxAritQuadTOTALS2ETM2 * yyAritQuadTOTALS2ETM2)^0.5));
            rTOTALS2ETM3 = (qXYTOTALS2ETM3 / ((xxAritQuadTOTALS2ETM3 * yyAritQuadTOTALS2ETM3)^0.5));
            rTOTALS2ETM4 = (qXYTOTALS2ETM4 / ((xxAritQuadTOTALS2ETM4 * yyAritQuadTOTALS2ETM4)^0.5));
            rTOTALS2ETM5 = (qXYTOTALS2ETM5 / ((xxAritQuadTOTALS2ETM5 * yyAritQuadTOTALS2ETM5)^0.5));
            rTOTALS2ETM7 = (qXYTOTALS2ETM7 / ((xxAritQuadTOTALS2ETM7 * yyAritQuadTOTALS2ETM7)^0.5));
    
            rQuadTOTALS2ETM1 = ((rTOTALS2ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2ETM2 = ((rTOTALS2ETM2^2) * 100);
            rQuadTOTALS2ETM3 = ((rTOTALS2ETM3^2) * 100);
            rQuadTOTALS2ETM4 = ((rTOTALS2ETM4^2) * 100);
            rQuadTOTALS2ETM5 = ((rTOTALS2ETM5^2) * 100);
            rQuadTOTALS2ETM7 = ((rTOTALS2ETM7^2) * 100);
        
            syxTOTALS2ETM1 = (((yyAritQuadTOTALS2ETM1 - ((qXYTOTALS2ETM1^2) / xxAritQuadTOTALS2ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM2 = (((yyAritQuadTOTALS2ETM2 - ((qXYTOTALS2ETM2^2) / xxAritQuadTOTALS2ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM3 = (((yyAritQuadTOTALS2ETM3 - ((qXYTOTALS2ETM3^2) / xxAritQuadTOTALS2ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM4 = (((yyAritQuadTOTALS2ETM4 - ((qXYTOTALS2ETM4^2) / xxAritQuadTOTALS2ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM5 = (((yyAritQuadTOTALS2ETM5 - ((qXYTOTALS2ETM5^2) / xxAritQuadTOTALS2ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM7 = (((yyAritQuadTOTALS2ETM7 - ((qXYTOTALS2ETM7^2) / xxAritQuadTOTALS2ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2ETM1 = (((syxTOTALS2ETM1^2) / xxAritQuadTOTALS2ETM1)^0.5);
            bStandTOTALS2ETM2 = (((syxTOTALS2ETM2^2) / xxAritQuadTOTALS2ETM2)^0.5);
            bStandTOTALS2ETM3 = (((syxTOTALS2ETM3^2) / xxAritQuadTOTALS2ETM3)^0.5);
            bStandTOTALS2ETM4 = (((syxTOTALS2ETM4^2) / xxAritQuadTOTALS2ETM4)^0.5);
            bStandTOTALS2ETM5 = (((syxTOTALS2ETM5^2) / xxAritQuadTOTALS2ETM5)^0.5);
            bStandTOTALS2ETM7 = (((syxTOTALS2ETM7^2) / xxAritQuadTOTALS2ETM7)^0.5);
    
            aStandTOTALS2ETM1 = (bStandTOTALS2ETM1 * ((xQuadTOTALS2ETM1 / minPifVAL)^0.5));
            aStandTOTALS2ETM2 = (bStandTOTALS2ETM2 * ((xQuadTOTALS2ETM2 / minPifVAL)^0.5));
            aStandTOTALS2ETM3 = (bStandTOTALS2ETM3 * ((xQuadTOTALS2ETM3 / minPifVAL)^0.5));
            aStandTOTALS2ETM4 = (bStandTOTALS2ETM4 * ((xQuadTOTALS2ETM4 / minPifVAL)^0.5));
            aStandTOTALS2ETM5 = (bStandTOTALS2ETM5 * ((xQuadTOTALS2ETM5 / minPifVAL)^0.5));
            aStandTOTALS2ETM7 = (bStandTOTALS2ETM7 * ((xQuadTOTALS2ETM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM1, bTOTALS2ETM1, rTOTALS2ETM1, rQuadTOTALS2ETM1, aStandTOTALS2ETM1, bStandTOTALS2ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM2, bTOTALS2ETM2, rTOTALS2ETM2, rQuadTOTALS2ETM2, aStandTOTALS2ETM2, bStandTOTALS2ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM3, bTOTALS2ETM3, rTOTALS2ETM3, rQuadTOTALS2ETM3, aStandTOTALS2ETM3, bStandTOTALS2ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM4, bTOTALS2ETM4, rTOTALS2ETM4, rQuadTOTALS2ETM4, aStandTOTALS2ETM4, bStandTOTALS2ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM5, bTOTALS2ETM5, rTOTALS2ETM5, rQuadTOTALS2ETM5, aStandTOTALS2ETM5, bStandTOTALS2ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS2ETM7, bTOTALS2ETM7, rTOTALS2ETM7, rQuadTOTALS2ETM7, aStandTOTALS2ETM7, bStandTOTALS2ETM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS2ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS2ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS2ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS2ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS2ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS2ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS2ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT2ETM1[i,j] = (aTOTALS2ETM1 + (bTOTALS2ETM1 * REFS2ETM1[i,j]));
                    OUT2ETM2[i,j] = (aTOTALS2ETM2 + (bTOTALS2ETM2 * REFS2ETM2[i,j]));
                    OUT2ETM3[i,j] = (aTOTALS2ETM3 + (bTOTALS2ETM3 * REFS2ETM3[i,j]));
                    OUT2ETM4[i,j] = (aTOTALS2ETM4 + (bTOTALS2ETM4 * REFS2ETM4[i,j]));
                    OUT2ETM5[i,j] = (aTOTALS2ETM5 + (bTOTALS2ETM5 * REFS2ETM5[i,j]));
                    OUT2ETM7[i,j] = (aTOTALS2ETM7 + (bTOTALS2ETM7 * REFS2ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2ETM1);
        	CreatePyramid(OUT2ETM2);
        	CreatePyramid(OUT2ETM3);
        	CreatePyramid(OUT2ETM4);
        	CreatePyramid(OUT2ETM5);
        	CreatePyramid(OUT2ETM7);
        
        	CreateHistogram(OUT2ETM1);
        	CreateHistogram(OUT2ETM2);
        	CreateHistogram(OUT2ETM3);
        	CreateHistogram(OUT2ETM4);
        	CreateHistogram(OUT2ETM5);
        	CreateHistogram(OUT2ETM7);
        
        	CloseRaster(REFS2ETM1);
            CloseRaster(REFS2ETM2);
            CloseRaster(REFS2ETM3);
            CloseRaster(REFS2ETM4);
            CloseRaster(REFS2ETM5);
            CloseRaster(REFS2ETM7);
    
            CloseRaster(OUT2ETM1);
            CloseRaster(OUT2ETM2);
            CloseRaster(OUT2ETM3);
            CloseRaster(OUT2ETM4);
            CloseRaster(OUT2ETM5);
            CloseRaster(OUT2ETM7);
        
        	printf("Scene 2 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors2 == 6 )
            {
            numeric xAritTOTALS2TM1, xAritTOTALS2TM2, xAritTOTALS2TM3, xAritTOTALS2TM4, xAritTOTALS2TM5, xAritTOTALS2TM7;
            numeric yAritTOTALS2TM1, yAritTOTALS2TM2, yAritTOTALS2TM3, yAritTOTALS2TM4, yAritTOTALS2TM5, yAritTOTALS2TM7;
    
            numeric aTOTALS2TM1, aTOTALS2TM2, aTOTALS2TM3, aTOTALS2TM4, aTOTALS2TM5, aTOTALS2TM7;
            numeric bTOTALS2TM1, bTOTALS2TM2, bTOTALS2TM3, bTOTALS2TM4, bTOTALS2TM5, bTOTALS2TM7;
            numeric rTOTALS2TM1, rTOTALS2TM2, rTOTALS2TM3, rTOTALS2TM4, rTOTALS2TM5, rTOTALS2TM7;
            numeric rQuadTOTALS2TM1, rQuadTOTALS2TM2, rQuadTOTALS2TM3, rQuadTOTALS2TM4, rQuadTOTALS2TM5, rQuadTOTALS2TM7;
            numeric syxTOTALS2TM1, syxTOTALS2TM2, syxTOTALS2TM3, syxTOTALS2TM4, syxTOTALS2TM5, syxTOTALS2TM7;
            numeric bStandTOTALS2TM1, bStandTOTALS2TM2, bStandTOTALS2TM3, bStandTOTALS2TM4, bStandTOTALS2TM5, bStandTOTALS2TM7;
            numeric aStandTOTALS2TM1, aStandTOTALS2TM2, aStandTOTALS2TM3, aStandTOTALS2TM4, aStandTOTALS2TM5, aStandTOTALS2TM7;
    
            numeric xTOTALS2TM1 = 0;
            numeric xTOTALS2TM2 = 0;
            numeric xTOTALS2TM3 = 0;
            numeric xTOTALS2TM4 = 0;
            numeric xTOTALS2TM5 = 0;
            numeric xTOTALS2TM7 = 0;
    
            numeric xQuadTOTALS2TM1 = 0;
            numeric xQuadTOTALS2TM2 = 0;
            numeric xQuadTOTALS2TM3 = 0;
            numeric xQuadTOTALS2TM4 = 0;
            numeric xQuadTOTALS2TM5 = 0;
            numeric xQuadTOTALS2TM7 = 0;
    
            numeric yTOTALS2TM1 = 0;
            numeric yTOTALS2TM2 = 0;
            numeric yTOTALS2TM3 = 0;
            numeric yTOTALS2TM4 = 0;
            numeric yTOTALS2TM5 = 0;
            numeric yTOTALS2TM7 = 0;
    
            numeric yQuadTOTALS2TM1 = 0;
            numeric yQuadTOTALS2TM2 = 0;
            numeric yQuadTOTALS2TM3 = 0;
            numeric yQuadTOTALS2TM4 = 0;
            numeric yQuadTOTALS2TM5 = 0;
            numeric yQuadTOTALS2TM7 = 0;
    
            numeric xyTOTALS2TM1 = 0;
            numeric xyTOTALS2TM2 = 0;
            numeric xyTOTALS2TM3 = 0;
            numeric xyTOTALS2TM4 = 0;
            numeric xyTOTALS2TM5 = 0;
            numeric xyTOTALS2TM7 = 0;
    
            numeric xxAritQuadTOTALS2TM1 = 0;
            numeric xxAritQuadTOTALS2TM2 = 0;
            numeric xxAritQuadTOTALS2TM3 = 0;
            numeric xxAritQuadTOTALS2TM4 = 0;
            numeric xxAritQuadTOTALS2TM5 = 0;
            numeric xxAritQuadTOTALS2TM7 = 0;
    
            numeric yyAritQuadTOTALS2TM1 = 0;
            numeric yyAritQuadTOTALS2TM2 = 0;
            numeric yyAritQuadTOTALS2TM3 = 0;
            numeric yyAritQuadTOTALS2TM4 = 0;
            numeric yyAritQuadTOTALS2TM5 = 0;
            numeric yyAritQuadTOTALS2TM7 = 0;
    
            numeric qXYTOTALS2TM1 = 0;
            numeric qXYTOTALS2TM2 = 0;
            numeric qXYTOTALS2TM3 = 0;
            numeric qXYTOTALS2TM4 = 0;
            numeric qXYTOTALS2TM5 = 0;
            numeric qXYTOTALS2TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS2TM1 = xTOTALS2TM1 + pifTOTALS4ETM1arrayRAND[m];
                xTOTALS2TM2 = xTOTALS2TM2 + pifTOTALS4ETM2arrayRAND[m];
                xTOTALS2TM3 = xTOTALS2TM3 + pifTOTALS4ETM3arrayRAND[m];
                xTOTALS2TM4 = xTOTALS2TM4 + pifTOTALS4ETM4arrayRAND[m];
                xTOTALS2TM5 = xTOTALS2TM5 + pifTOTALS4ETM5arrayRAND[m];
                xTOTALS2TM7 = xTOTALS2TM7 + pifTOTALS4ETM7arrayRAND[m];
    
                xQuadTOTALS2TM1 = (xQuadTOTALS2TM1 + (pifTOTALS4ETM1arrayRAND[m]^2));
                xQuadTOTALS2TM2 = (xQuadTOTALS2TM2 + (pifTOTALS4ETM2arrayRAND[m]^2));
                xQuadTOTALS2TM3 = (xQuadTOTALS2TM3 + (pifTOTALS4ETM3arrayRAND[m]^2));
                xQuadTOTALS2TM4 = (xQuadTOTALS2TM4 + (pifTOTALS4ETM4arrayRAND[m]^2));
                xQuadTOTALS2TM5 = (xQuadTOTALS2TM5 + (pifTOTALS4ETM5arrayRAND[m]^2));
                xQuadTOTALS2TM7 = (xQuadTOTALS2TM7 + (pifTOTALS4ETM7arrayRAND[m]^2));
    
                yTOTALS2TM1 = yTOTALS2TM1 + pifTOTALS2TM1arrayRAND[m];
                yTOTALS2TM2 = yTOTALS2TM2 + pifTOTALS2TM2arrayRAND[m];
                yTOTALS2TM3 = yTOTALS2TM3 + pifTOTALS2TM3arrayRAND[m];
                yTOTALS2TM4 = yTOTALS2TM4 + pifTOTALS2TM4arrayRAND[m];
                yTOTALS2TM5 = yTOTALS2TM5 + pifTOTALS2TM5arrayRAND[m];
                yTOTALS2TM7 = yTOTALS2TM7 + pifTOTALS2TM7arrayRAND[m];
                
                yQuadTOTALS2TM1 = (yQuadTOTALS2TM1 + (pifTOTALS2TM1arrayRAND[m]^2));
                yQuadTOTALS2TM2 = (yQuadTOTALS2TM2 + (pifTOTALS2TM2arrayRAND[m]^2));
                yQuadTOTALS2TM3 = (yQuadTOTALS2TM3 + (pifTOTALS2TM3arrayRAND[m]^2));
                yQuadTOTALS2TM4 = (yQuadTOTALS2TM4 + (pifTOTALS2TM4arrayRAND[m]^2));
                yQuadTOTALS2TM5 = (yQuadTOTALS2TM5 + (pifTOTALS2TM5arrayRAND[m]^2));
                yQuadTOTALS2TM7 = (yQuadTOTALS2TM7 + (pifTOTALS2TM7arrayRAND[m]^2));
    
                xyTOTALS2TM1 = (xyTOTALS2TM1 + (pifTOTALS4ETM1arrayRAND[m] * pifTOTALS2TM1arrayRAND[m]));
                xyTOTALS2TM2 = (xyTOTALS2TM2 + (pifTOTALS4ETM2arrayRAND[m] * pifTOTALS2TM2arrayRAND[m]));
                xyTOTALS2TM3 = (xyTOTALS2TM3 + (pifTOTALS4ETM3arrayRAND[m] * pifTOTALS2TM3arrayRAND[m]));
                xyTOTALS2TM4 = (xyTOTALS2TM4 + (pifTOTALS4ETM4arrayRAND[m] * pifTOTALS2TM4arrayRAND[m]));
                xyTOTALS2TM5 = (xyTOTALS2TM5 + (pifTOTALS4ETM5arrayRAND[m] * pifTOTALS2TM5arrayRAND[m]));
                xyTOTALS2TM7 = (xyTOTALS2TM7 + (pifTOTALS4ETM7arrayRAND[m] * pifTOTALS2TM7arrayRAND[m]));
            }	
            
            xAritTOTALS2TM1 = xTOTALS2TM1 / minPifVAL;
            xAritTOTALS2TM2 = xTOTALS2TM2 / minPifVAL;
            xAritTOTALS2TM3 = xTOTALS2TM3 / minPifVAL;
            xAritTOTALS2TM4 = xTOTALS2TM4 / minPifVAL;
            xAritTOTALS2TM5 = xTOTALS2TM5 / minPifVAL;
            xAritTOTALS2TM7 = xTOTALS2TM7 / minPifVAL;
    
            yAritTOTALS2TM1 = yTOTALS2TM1 / minPifVAL;
            yAritTOTALS2TM2 = yTOTALS2TM2 / minPifVAL;
            yAritTOTALS2TM3 = yTOTALS2TM3 / minPifVAL;
            yAritTOTALS2TM4 = yTOTALS2TM4 / minPifVAL;
            yAritTOTALS2TM5 = yTOTALS2TM5 / minPifVAL;
            yAritTOTALS2TM7 = yTOTALS2TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2TM1 = (xxAritQuadTOTALS2TM1 + ((pifTOTALS4ETM1arrayRAND[n] - xAritTOTALS2TM1)^2));
                xxAritQuadTOTALS2TM2 = (xxAritQuadTOTALS2TM2 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS2TM2)^2));
                xxAritQuadTOTALS2TM3 = (xxAritQuadTOTALS2TM3 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS2TM3)^2));
                xxAritQuadTOTALS2TM4 = (xxAritQuadTOTALS2TM4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS2TM4)^2));
                xxAritQuadTOTALS2TM5 = (xxAritQuadTOTALS2TM5 + ((pifTOTALS4ETM5arrayRAND[n] - xAritTOTALS2TM5)^2));
                xxAritQuadTOTALS2TM7 = (xxAritQuadTOTALS2TM7 + ((pifTOTALS4ETM7arrayRAND[n] - xAritTOTALS2TM7)^2));
    
                yyAritQuadTOTALS2TM1 = (yyAritQuadTOTALS2TM1 + ((pifTOTALS2TM1arrayRAND[n] - yAritTOTALS2TM1)^2));
                yyAritQuadTOTALS2TM2 = (yyAritQuadTOTALS2TM2 + ((pifTOTALS2TM2arrayRAND[n] - yAritTOTALS2TM2)^2));
                yyAritQuadTOTALS2TM3 = (yyAritQuadTOTALS2TM3 + ((pifTOTALS2TM3arrayRAND[n] - yAritTOTALS2TM3)^2));
                yyAritQuadTOTALS2TM4 = (yyAritQuadTOTALS2TM4 + ((pifTOTALS2TM4arrayRAND[n] - yAritTOTALS2TM4)^2));
                yyAritQuadTOTALS2TM5 = (yyAritQuadTOTALS2TM5 + ((pifTOTALS2TM5arrayRAND[n] - yAritTOTALS2TM5)^2));
                yyAritQuadTOTALS2TM7 = (yyAritQuadTOTALS2TM7 + ((pifTOTALS2TM7arrayRAND[n] - yAritTOTALS2TM7)^2));
    
                qXYTOTALS2TM1 = (qXYTOTALS2TM1 + ((pifTOTALS4ETM1arrayRAND[n] - xAritTOTALS2TM1) * (pifTOTALS2TM1arrayRAND[n] - yAritTOTALS2TM1)));
                qXYTOTALS2TM2 = (qXYTOTALS2TM2 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS2TM2) * (pifTOTALS2TM2arrayRAND[n] - yAritTOTALS2TM2)));
                qXYTOTALS2TM3 = (qXYTOTALS2TM3 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS2TM3) * (pifTOTALS2TM3arrayRAND[n] - yAritTOTALS2TM3)));
                qXYTOTALS2TM4 = (qXYTOTALS2TM4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS2TM4) * (pifTOTALS2TM4arrayRAND[n] - yAritTOTALS2TM4)));
                qXYTOTALS2TM5 = (qXYTOTALS2TM5 + ((pifTOTALS4ETM5arrayRAND[n] - xAritTOTALS2TM5) * (pifTOTALS2TM5arrayRAND[n] - yAritTOTALS2TM5)));
                qXYTOTALS2TM7 = (qXYTOTALS2TM7 + ((pifTOTALS4ETM7arrayRAND[n] - xAritTOTALS2TM7) * (pifTOTALS2TM7arrayRAND[n] - yAritTOTALS2TM7)));
            }
        
            aTOTALS2TM1 = (((xQuadTOTALS2TM1 * yTOTALS2TM1) - (xTOTALS2TM1 * xyTOTALS2TM1)) / ((minPifVAL * xQuadTOTALS2TM1) - (xTOTALS2TM1^2)));
            aTOTALS2TM2 = (((xQuadTOTALS2TM2 * yTOTALS2TM2) - (xTOTALS2TM2 * xyTOTALS2TM2)) / ((minPifVAL * xQuadTOTALS2TM2) - (xTOTALS2TM2^2)));
            aTOTALS2TM3 = (((xQuadTOTALS2TM3 * yTOTALS2TM3) - (xTOTALS2TM3 * xyTOTALS2TM3)) / ((minPifVAL * xQuadTOTALS2TM3) - (xTOTALS2TM3^2)));
            aTOTALS2TM4 = (((xQuadTOTALS2TM4 * yTOTALS2TM4) - (xTOTALS2TM4 * xyTOTALS2TM4)) / ((minPifVAL * xQuadTOTALS2TM4) - (xTOTALS2TM4^2)));
            aTOTALS2TM5 = (((xQuadTOTALS2TM5 * yTOTALS2TM5) - (xTOTALS2TM5 * xyTOTALS2TM5)) / ((minPifVAL * xQuadTOTALS2TM5) - (xTOTALS2TM5^2)));
            aTOTALS2TM7 = (((xQuadTOTALS2TM7 * yTOTALS2TM7) - (xTOTALS2TM7 * xyTOTALS2TM7)) / ((minPifVAL * xQuadTOTALS2TM7) - (xTOTALS2TM7^2)));
            
            bTOTALS2TM1 = qXYTOTALS2TM1 / xxAritQuadTOTALS2TM1;
            bTOTALS2TM2 = qXYTOTALS2TM2 / xxAritQuadTOTALS2TM2;
            bTOTALS2TM3 = qXYTOTALS2TM3 / xxAritQuadTOTALS2TM3;
            bTOTALS2TM4 = qXYTOTALS2TM4 / xxAritQuadTOTALS2TM4;
            bTOTALS2TM5 = qXYTOTALS2TM5 / xxAritQuadTOTALS2TM5;
            bTOTALS2TM7 = qXYTOTALS2TM7 / xxAritQuadTOTALS2TM7;
    
            rTOTALS2TM1 = (qXYTOTALS2TM1 / ((xxAritQuadTOTALS2TM1 * yyAritQuadTOTALS2TM1)^0.5));
            rTOTALS2TM2 = (qXYTOTALS2TM2 / ((xxAritQuadTOTALS2TM2 * yyAritQuadTOTALS2TM2)^0.5));
            rTOTALS2TM3 = (qXYTOTALS2TM3 / ((xxAritQuadTOTALS2TM3 * yyAritQuadTOTALS2TM3)^0.5));
            rTOTALS2TM4 = (qXYTOTALS2TM4 / ((xxAritQuadTOTALS2TM4 * yyAritQuadTOTALS2TM4)^0.5));
            rTOTALS2TM5 = (qXYTOTALS2TM5 / ((xxAritQuadTOTALS2TM5 * yyAritQuadTOTALS2TM5)^0.5));
            rTOTALS2TM7 = (qXYTOTALS2TM7 / ((xxAritQuadTOTALS2TM7 * yyAritQuadTOTALS2TM7)^0.5));
    
            rQuadTOTALS2TM1 = ((rTOTALS2TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2TM2 = ((rTOTALS2TM2^2) * 100);
            rQuadTOTALS2TM3 = ((rTOTALS2TM3^2) * 100);
            rQuadTOTALS2TM4 = ((rTOTALS2TM4^2) * 100);
            rQuadTOTALS2TM5 = ((rTOTALS2TM5^2) * 100);
            rQuadTOTALS2TM7 = ((rTOTALS2TM7^2) * 100);
        
            syxTOTALS2TM1 = (((yyAritQuadTOTALS2TM1 - ((qXYTOTALS2TM1^2) / xxAritQuadTOTALS2TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM2 = (((yyAritQuadTOTALS2TM2 - ((qXYTOTALS2TM2^2) / xxAritQuadTOTALS2TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM3 = (((yyAritQuadTOTALS2TM3 - ((qXYTOTALS2TM3^2) / xxAritQuadTOTALS2TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM4 = (((yyAritQuadTOTALS2TM4 - ((qXYTOTALS2TM4^2) / xxAritQuadTOTALS2TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM5 = (((yyAritQuadTOTALS2TM5 - ((qXYTOTALS2TM5^2) / xxAritQuadTOTALS2TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM7 = (((yyAritQuadTOTALS2TM7 - ((qXYTOTALS2TM7^2) / xxAritQuadTOTALS2TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2TM1 = (((syxTOTALS2TM1^2) / xxAritQuadTOTALS2TM1)^0.5);
            bStandTOTALS2TM2 = (((syxTOTALS2TM2^2) / xxAritQuadTOTALS2TM2)^0.5);
            bStandTOTALS2TM3 = (((syxTOTALS2TM3^2) / xxAritQuadTOTALS2TM3)^0.5);
            bStandTOTALS2TM4 = (((syxTOTALS2TM4^2) / xxAritQuadTOTALS2TM4)^0.5);
            bStandTOTALS2TM5 = (((syxTOTALS2TM5^2) / xxAritQuadTOTALS2TM5)^0.5);
            bStandTOTALS2TM7 = (((syxTOTALS2TM7^2) / xxAritQuadTOTALS2TM7)^0.5);
    
            aStandTOTALS2TM1 = (bStandTOTALS2TM1 * ((xQuadTOTALS2TM1 / minPifVAL)^0.5));
            aStandTOTALS2TM2 = (bStandTOTALS2TM2 * ((xQuadTOTALS2TM2 / minPifVAL)^0.5));
            aStandTOTALS2TM3 = (bStandTOTALS2TM3 * ((xQuadTOTALS2TM3 / minPifVAL)^0.5));
            aStandTOTALS2TM4 = (bStandTOTALS2TM4 * ((xQuadTOTALS2TM4 / minPifVAL)^0.5));
            aStandTOTALS2TM5 = (bStandTOTALS2TM5 * ((xQuadTOTALS2TM5 / minPifVAL)^0.5));
            aStandTOTALS2TM7 = (bStandTOTALS2TM7 * ((xQuadTOTALS2TM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM1, bTOTALS2TM1, rTOTALS2TM1, rQuadTOTALS2TM1, aStandTOTALS2TM1, bStandTOTALS2TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM2, bTOTALS2TM2, rTOTALS2TM2, rQuadTOTALS2TM2, aStandTOTALS2TM2, bStandTOTALS2TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM3, bTOTALS2TM3, rTOTALS2TM3, rQuadTOTALS2TM3, aStandTOTALS2TM3, bStandTOTALS2TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM4, bTOTALS2TM4, rTOTALS2TM4, rQuadTOTALS2TM4, aStandTOTALS2TM4, bStandTOTALS2TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM5, bTOTALS2TM5, rTOTALS2TM5, rQuadTOTALS2TM5, aStandTOTALS2TM5, bStandTOTALS2TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS2TM7, bTOTALS2TM7, rTOTALS2TM7, rQuadTOTALS2TM7, aStandTOTALS2TM7, bStandTOTALS2TM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS2TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS2TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS2TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS2TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS2TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS2TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS2TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT2TM1[i,j] = (aTOTALS2TM1 + (bTOTALS2TM1 * REFS2TM1[i,j]));
                    OUT2TM2[i,j] = (aTOTALS2TM2 + (bTOTALS2TM2 * REFS2TM2[i,j]));
                    OUT2TM3[i,j] = (aTOTALS2TM3 + (bTOTALS2TM3 * REFS2TM3[i,j]));
                    OUT2TM4[i,j] = (aTOTALS2TM4 + (bTOTALS2TM4 * REFS2TM4[i,j]));
                    OUT2TM5[i,j] = (aTOTALS2TM5 + (bTOTALS2TM5 * REFS2TM5[i,j]));
                    OUT2TM7[i,j] = (aTOTALS2TM7 + (bTOTALS2TM7 * REFS2TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2TM1);
        	CreatePyramid(OUT2TM2);
        	CreatePyramid(OUT2TM3);
        	CreatePyramid(OUT2TM4);
        	CreatePyramid(OUT2TM5);
        	CreatePyramid(OUT2TM7);
        
        	CreateHistogram(OUT2TM1);
        	CreateHistogram(OUT2TM2);
        	CreateHistogram(OUT2TM3);
        	CreateHistogram(OUT2TM4);
        	CreateHistogram(OUT2TM5);
        	CreateHistogram(OUT2TM7);
        
        	CloseRaster(REFS2TM1);
            CloseRaster(REFS2TM2);
            CloseRaster(REFS2TM3);
            CloseRaster(REFS2TM4);
            CloseRaster(REFS2TM5);
            CloseRaster(REFS2TM7);
    
            CloseRaster(OUT2TM1);
            CloseRaster(OUT2TM2);
            CloseRaster(OUT2TM3);
            CloseRaster(OUT2TM4);
            CloseRaster(OUT2TM5);
            CloseRaster(OUT2TM7);
        
        	printf("Scene 2 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS2MSS1, xAritTOTALS2MSS2, xAritTOTALS2MSS4;
            numeric yAritTOTALS2MSS1, yAritTOTALS2MSS2, yAritTOTALS2MSS4;
    
            numeric aTOTALS2MSS1, aTOTALS2MSS2, aTOTALS2MSS4;
            numeric bTOTALS2MSS1, bTOTALS2MSS2, bTOTALS2MSS4;
            numeric rTOTALS2MSS1, rTOTALS2MSS2, rTOTALS2MSS4;
            numeric rQuadTOTALS2MSS1, rQuadTOTALS2MSS2, rQuadTOTALS2MSS4;
            numeric syxTOTALS2MSS1, syxTOTALS2MSS2, syxTOTALS2MSS4;
            numeric bStandTOTALS2MSS1, bStandTOTALS2MSS2, bStandTOTALS2MSS4;
            numeric aStandTOTALS2MSS1, aStandTOTALS2MSS2, aStandTOTALS2MSS4;
    
            numeric xTOTALS2MSS1 = 0;
            numeric xTOTALS2MSS2 = 0;
            numeric xTOTALS2MSS4 = 0;
    
            numeric xQuadTOTALS2MSS1 = 0;
            numeric xQuadTOTALS2MSS2 = 0;
            numeric xQuadTOTALS2MSS4 = 0;
    
            numeric yTOTALS2MSS1 = 0;
            numeric yTOTALS2MSS2 = 0;
            numeric yTOTALS2MSS4 = 0;
    
            numeric yQuadTOTALS2MSS1 = 0;
            numeric yQuadTOTALS2MSS2 = 0;
            numeric yQuadTOTALS2MSS4 = 0;
    
            numeric xyTOTALS2MSS1 = 0;
            numeric xyTOTALS2MSS2 = 0;
            numeric xyTOTALS2MSS4 = 0;
    
            numeric xxAritQuadTOTALS2MSS1 = 0;
            numeric xxAritQuadTOTALS2MSS2 = 0;
            numeric xxAritQuadTOTALS2MSS4 = 0;
    
            numeric yyAritQuadTOTALS2MSS1 = 0;
            numeric yyAritQuadTOTALS2MSS2 = 0;
            numeric yyAritQuadTOTALS2MSS4 = 0;
    
            numeric qXYTOTALS2MSS1 = 0;
            numeric qXYTOTALS2MSS2 = 0;
            numeric qXYTOTALS2MSS4 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS2MSS1 = xTOTALS2MSS1 + pifTOTALS4ETM2arrayRAND[m];
                xTOTALS2MSS2 = xTOTALS2MSS2 + pifTOTALS4ETM3arrayRAND[m];
                xTOTALS2MSS4 = xTOTALS2MSS4 + pifTOTALS4ETM4arrayRAND[m];
    
                xQuadTOTALS2MSS1 = (xQuadTOTALS2MSS1 + (pifTOTALS4ETM2arrayRAND[m]^2));
                xQuadTOTALS2MSS2 = (xQuadTOTALS2MSS2 + (pifTOTALS4ETM3arrayRAND[m]^2));
                xQuadTOTALS2MSS4 = (xQuadTOTALS2MSS4 + (pifTOTALS4ETM4arrayRAND[m]^2));
    
                yTOTALS2MSS1 = yTOTALS2MSS1 + pifTOTALS2MSS1arrayRAND[m];
                yTOTALS2MSS2 = yTOTALS2MSS2 + pifTOTALS2MSS2arrayRAND[m];
                yTOTALS2MSS4 = yTOTALS2MSS4 + pifTOTALS2MSS4arrayRAND[m];
                
                yQuadTOTALS2MSS1 = (yQuadTOTALS2MSS1 + (pifTOTALS2MSS1arrayRAND[m]^2));
                yQuadTOTALS2MSS2 = (yQuadTOTALS2MSS2 + (pifTOTALS2MSS2arrayRAND[m]^2));
                yQuadTOTALS2MSS4 = (yQuadTOTALS2MSS4 + (pifTOTALS2MSS4arrayRAND[m]^2));
    
                xyTOTALS2MSS1 = (xyTOTALS2MSS1 + (pifTOTALS4ETM2arrayRAND[m] * pifTOTALS2MSS1arrayRAND[m]));
                xyTOTALS2MSS2 = (xyTOTALS2MSS2 + (pifTOTALS4ETM3arrayRAND[m] * pifTOTALS2MSS2arrayRAND[m]));
                xyTOTALS2MSS4 = (xyTOTALS2MSS4 + (pifTOTALS4ETM4arrayRAND[m] * pifTOTALS2MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS2MSS1 = xTOTALS2MSS1 / minPifVAL;
            xAritTOTALS2MSS2 = xTOTALS2MSS2 / minPifVAL;
            xAritTOTALS2MSS4 = xTOTALS2MSS4 / minPifVAL;
    
            yAritTOTALS2MSS1 = yTOTALS2MSS1 / minPifVAL;
            yAritTOTALS2MSS2 = yTOTALS2MSS2 / minPifVAL;
            yAritTOTALS2MSS4 = yTOTALS2MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2MSS1 = (xxAritQuadTOTALS2MSS1 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS2MSS1)^2));
                xxAritQuadTOTALS2MSS2 = (xxAritQuadTOTALS2MSS2 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS2MSS2)^2));
                xxAritQuadTOTALS2MSS4 = (xxAritQuadTOTALS2MSS4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS2MSS4)^2));
    
                yyAritQuadTOTALS2MSS1 = (yyAritQuadTOTALS2MSS1 + ((pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)^2));
                yyAritQuadTOTALS2MSS2 = (yyAritQuadTOTALS2MSS2 + ((pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)^2));
                yyAritQuadTOTALS2MSS4 = (yyAritQuadTOTALS2MSS4 + ((pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)^2));
    
                qXYTOTALS2MSS1 = (qXYTOTALS2MSS1 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS2MSS1) * (pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)));
                qXYTOTALS2MSS2 = (qXYTOTALS2MSS2 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS2MSS2) * (pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)));
                qXYTOTALS2MSS4 = (qXYTOTALS2MSS4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS2MSS4) * (pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)));
            }
        
            aTOTALS2MSS1 = (((xQuadTOTALS2MSS1 * yTOTALS2MSS1) - (xTOTALS2MSS1 * xyTOTALS2MSS1)) / ((minPifVAL * xQuadTOTALS2MSS1) - (xTOTALS2MSS1^2)));
            aTOTALS2MSS2 = (((xQuadTOTALS2MSS2 * yTOTALS2MSS2) - (xTOTALS2MSS2 * xyTOTALS2MSS2)) / ((minPifVAL * xQuadTOTALS2MSS2) - (xTOTALS2MSS2^2)));
            aTOTALS2MSS4 = (((xQuadTOTALS2MSS4 * yTOTALS2MSS4) - (xTOTALS2MSS4 * xyTOTALS2MSS4)) / ((minPifVAL * xQuadTOTALS2MSS4) - (xTOTALS2MSS4^2)));
            
            bTOTALS2MSS1 = qXYTOTALS2MSS1 / xxAritQuadTOTALS2MSS1;
            bTOTALS2MSS2 = qXYTOTALS2MSS2 / xxAritQuadTOTALS2MSS2;
            bTOTALS2MSS4 = qXYTOTALS2MSS4 / xxAritQuadTOTALS2MSS4;
    
            rTOTALS2MSS1 = (qXYTOTALS2MSS1 / ((xxAritQuadTOTALS2MSS1 * yyAritQuadTOTALS2MSS1)^0.5));
            rTOTALS2MSS2 = (qXYTOTALS2MSS2 / ((xxAritQuadTOTALS2MSS2 * yyAritQuadTOTALS2MSS2)^0.5));
            rTOTALS2MSS4 = (qXYTOTALS2MSS4 / ((xxAritQuadTOTALS2MSS4 * yyAritQuadTOTALS2MSS4)^0.5));
    
            rQuadTOTALS2MSS1 = ((rTOTALS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2MSS2 = ((rTOTALS2MSS2^2) * 100);
            rQuadTOTALS2MSS4 = ((rTOTALS2MSS4^2) * 100);
        
            syxTOTALS2MSS1 = (((yyAritQuadTOTALS2MSS1 - ((qXYTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS2 = (((yyAritQuadTOTALS2MSS2 - ((qXYTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS4 = (((yyAritQuadTOTALS2MSS4 - ((qXYTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2MSS1 = (((syxTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)^0.5);
            bStandTOTALS2MSS2 = (((syxTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)^0.5);
            bStandTOTALS2MSS4 = (((syxTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)^0.5);
    
            aStandTOTALS2MSS1 = (bStandTOTALS2MSS1 * ((xQuadTOTALS2MSS1 / minPifVAL)^0.5));
            aStandTOTALS2MSS2 = (bStandTOTALS2MSS2 * ((xQuadTOTALS2MSS2 / minPifVAL)^0.5));
            aStandTOTALS2MSS4 = (bStandTOTALS2MSS4 * ((xQuadTOTALS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS1, bTOTALS2MSS1, rTOTALS2MSS1, rQuadTOTALS2MSS1, aStandTOTALS2MSS1, bStandTOTALS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS2, bTOTALS2MSS2, rTOTALS2MSS2, rQuadTOTALS2MSS2, aStandTOTALS2MSS2, bStandTOTALS2MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS4, bTOTALS2MSS4, rTOTALS2MSS4, rQuadTOTALS2MSS4, aStandTOTALS2MSS4, bStandTOTALS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS2MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS2MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS2MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aTOTALS2MSS1 + (bTOTALS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aTOTALS2MSS2 + (bTOTALS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = REFS2MSS3[i,j];
                    OUT2MSS4[i,j] = (aTOTALS2MSS4 + (bTOTALS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT2MSS1);
        	CreatePyramid(OUT2MSS2);
        	CreatePyramid(OUT2MSS3);
        	CreatePyramid(OUT2MSS4);
        
        	CreateHistogram(OUT2MSS1);
        	CreateHistogram(OUT2MSS2);
        	CreateHistogram(OUT2MSS3);
        	CreateHistogram(OUT2MSS4);
        
        	CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors3 == 7 )
            {
            numeric xAritTOTALS3ETM1, xAritTOTALS3ETM2, xAritTOTALS3ETM3, xAritTOTALS3ETM4, xAritTOTALS3ETM5, xAritTOTALS3ETM7;
            numeric yAritTOTALS3ETM1, yAritTOTALS3ETM2, yAritTOTALS3ETM3, yAritTOTALS3ETM4, yAritTOTALS3ETM5, yAritTOTALS3ETM7;
    
            numeric aTOTALS3ETM1, aTOTALS3ETM2, aTOTALS3ETM3, aTOTALS3ETM4, aTOTALS3ETM5, aTOTALS3ETM7;
            numeric bTOTALS3ETM1, bTOTALS3ETM2, bTOTALS3ETM3, bTOTALS3ETM4, bTOTALS3ETM5, bTOTALS3ETM7;
            numeric rTOTALS3ETM1, rTOTALS3ETM2, rTOTALS3ETM3, rTOTALS3ETM4, rTOTALS3ETM5, rTOTALS3ETM7;
            numeric rQuadTOTALS3ETM1, rQuadTOTALS3ETM2, rQuadTOTALS3ETM3, rQuadTOTALS3ETM4, rQuadTOTALS3ETM5, rQuadTOTALS3ETM7;
            numeric syxTOTALS3ETM1, syxTOTALS3ETM2, syxTOTALS3ETM3, syxTOTALS3ETM4, syxTOTALS3ETM5, syxTOTALS3ETM7;
            numeric bStandTOTALS3ETM1, bStandTOTALS3ETM2, bStandTOTALS3ETM3, bStandTOTALS3ETM4, bStandTOTALS3ETM5, bStandTOTALS3ETM7;
            numeric aStandTOTALS3ETM1, aStandTOTALS3ETM2, aStandTOTALS3ETM3, aStandTOTALS3ETM4, aStandTOTALS3ETM5, aStandTOTALS3ETM7;
    
            numeric xTOTALS3ETM1 = 0;
            numeric xTOTALS3ETM2 = 0;
            numeric xTOTALS3ETM3 = 0;
            numeric xTOTALS3ETM4 = 0;
            numeric xTOTALS3ETM5 = 0;
            numeric xTOTALS3ETM7 = 0;
    
            numeric xQuadTOTALS3ETM1 = 0;
            numeric xQuadTOTALS3ETM2 = 0;
            numeric xQuadTOTALS3ETM3 = 0;
            numeric xQuadTOTALS3ETM4 = 0;
            numeric xQuadTOTALS3ETM5 = 0;
            numeric xQuadTOTALS3ETM7 = 0;
    
            numeric yTOTALS3ETM1 = 0;
            numeric yTOTALS3ETM2 = 0;
            numeric yTOTALS3ETM3 = 0;
            numeric yTOTALS3ETM4 = 0;
            numeric yTOTALS3ETM5 = 0;
            numeric yTOTALS3ETM7 = 0;
    
            numeric yQuadTOTALS3ETM1 = 0;
            numeric yQuadTOTALS3ETM2 = 0;
            numeric yQuadTOTALS3ETM3 = 0;
            numeric yQuadTOTALS3ETM4 = 0;
            numeric yQuadTOTALS3ETM5 = 0;
            numeric yQuadTOTALS3ETM7 = 0;
    
            numeric xyTOTALS3ETM1 = 0;
            numeric xyTOTALS3ETM2 = 0;
            numeric xyTOTALS3ETM3 = 0;
            numeric xyTOTALS3ETM4 = 0;
            numeric xyTOTALS3ETM5 = 0;
            numeric xyTOTALS3ETM7 = 0;
    
            numeric xxAritQuadTOTALS3ETM1 = 0;
            numeric xxAritQuadTOTALS3ETM2 = 0;
            numeric xxAritQuadTOTALS3ETM3 = 0;
            numeric xxAritQuadTOTALS3ETM4 = 0;
            numeric xxAritQuadTOTALS3ETM5 = 0;
            numeric xxAritQuadTOTALS3ETM7 = 0;
    
            numeric yyAritQuadTOTALS3ETM1 = 0;
            numeric yyAritQuadTOTALS3ETM2 = 0;
            numeric yyAritQuadTOTALS3ETM3 = 0;
            numeric yyAritQuadTOTALS3ETM4 = 0;
            numeric yyAritQuadTOTALS3ETM5 = 0;
            numeric yyAritQuadTOTALS3ETM7 = 0;
    
            numeric qXYTOTALS3ETM1 = 0;
            numeric qXYTOTALS3ETM2 = 0;
            numeric qXYTOTALS3ETM3 = 0;
            numeric qXYTOTALS3ETM4 = 0;
            numeric qXYTOTALS3ETM5 = 0;
            numeric qXYTOTALS3ETM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xTOTALS3ETM1 = xTOTALS3ETM1 + pifTOTALS4ETM1arrayRAND[m];
                xTOTALS3ETM2 = xTOTALS3ETM2 + pifTOTALS4ETM2arrayRAND[m];
                xTOTALS3ETM3 = xTOTALS3ETM3 + pifTOTALS4ETM3arrayRAND[m];
                xTOTALS3ETM4 = xTOTALS3ETM4 + pifTOTALS4ETM4arrayRAND[m];
                xTOTALS3ETM5 = xTOTALS3ETM5 + pifTOTALS4ETM5arrayRAND[m];
                xTOTALS3ETM7 = xTOTALS3ETM7 + pifTOTALS4ETM7arrayRAND[m];
    
                xQuadTOTALS3ETM1 = (xQuadTOTALS3ETM1 + (pifTOTALS4ETM1arrayRAND[m]^2));
                xQuadTOTALS3ETM2 = (xQuadTOTALS3ETM2 + (pifTOTALS4ETM2arrayRAND[m]^2));
                xQuadTOTALS3ETM3 = (xQuadTOTALS3ETM3 + (pifTOTALS4ETM3arrayRAND[m]^2));
                xQuadTOTALS3ETM4 = (xQuadTOTALS3ETM4 + (pifTOTALS4ETM4arrayRAND[m]^2));
                xQuadTOTALS3ETM5 = (xQuadTOTALS3ETM5 + (pifTOTALS4ETM5arrayRAND[m]^2));
                xQuadTOTALS3ETM7 = (xQuadTOTALS3ETM7 + (pifTOTALS4ETM7arrayRAND[m]^2));
    
                yTOTALS3ETM1 = yTOTALS3ETM1 + pifTOTALS3ETM1arrayRAND[m];
                yTOTALS3ETM2 = yTOTALS3ETM2 + pifTOTALS3ETM2arrayRAND[m];
                yTOTALS3ETM3 = yTOTALS3ETM3 + pifTOTALS3ETM3arrayRAND[m];
                yTOTALS3ETM4 = yTOTALS3ETM4 + pifTOTALS3ETM4arrayRAND[m];
                yTOTALS3ETM5 = yTOTALS3ETM5 + pifTOTALS3ETM5arrayRAND[m];
                yTOTALS3ETM7 = yTOTALS3ETM7 + pifTOTALS3ETM7arrayRAND[m];
                
                yQuadTOTALS3ETM1 = (yQuadTOTALS3ETM1 + (pifTOTALS3ETM1arrayRAND[m]^2));
                yQuadTOTALS3ETM2 = (yQuadTOTALS3ETM2 + (pifTOTALS3ETM2arrayRAND[m]^2));
                yQuadTOTALS3ETM3 = (yQuadTOTALS3ETM3 + (pifTOTALS3ETM3arrayRAND[m]^2));
                yQuadTOTALS3ETM4 = (yQuadTOTALS3ETM4 + (pifTOTALS3ETM4arrayRAND[m]^2));
                yQuadTOTALS3ETM5 = (yQuadTOTALS3ETM5 + (pifTOTALS3ETM5arrayRAND[m]^2));
                yQuadTOTALS3ETM7 = (yQuadTOTALS3ETM7 + (pifTOTALS3ETM7arrayRAND[m]^2));
    
                xyTOTALS3ETM1 = (xyTOTALS3ETM1 + (pifTOTALS4ETM1arrayRAND[m] * pifTOTALS3ETM1arrayRAND[m]));
                xyTOTALS3ETM2 = (xyTOTALS3ETM2 + (pifTOTALS4ETM2arrayRAND[m] * pifTOTALS3ETM2arrayRAND[m]));
                xyTOTALS3ETM3 = (xyTOTALS3ETM3 + (pifTOTALS4ETM3arrayRAND[m] * pifTOTALS3ETM3arrayRAND[m]));
                xyTOTALS3ETM4 = (xyTOTALS3ETM4 + (pifTOTALS4ETM4arrayRAND[m] * pifTOTALS3ETM4arrayRAND[m]));
                xyTOTALS3ETM5 = (xyTOTALS3ETM5 + (pifTOTALS4ETM5arrayRAND[m] * pifTOTALS3ETM5arrayRAND[m]));
                xyTOTALS3ETM7 = (xyTOTALS3ETM7 + (pifTOTALS4ETM7arrayRAND[m] * pifTOTALS3ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS3ETM1 = xTOTALS3ETM1 / minPifVAL;
            xAritTOTALS3ETM2 = xTOTALS3ETM2 / minPifVAL;
            xAritTOTALS3ETM3 = xTOTALS3ETM3 / minPifVAL;
            xAritTOTALS3ETM4 = xTOTALS3ETM4 / minPifVAL;
            xAritTOTALS3ETM5 = xTOTALS3ETM5 / minPifVAL;
            xAritTOTALS3ETM7 = xTOTALS3ETM7 / minPifVAL;
    
            yAritTOTALS3ETM1 = yTOTALS3ETM1 / minPifVAL;
            yAritTOTALS3ETM2 = yTOTALS3ETM2 / minPifVAL;
            yAritTOTALS3ETM3 = yTOTALS3ETM3 / minPifVAL;
            yAritTOTALS3ETM4 = yTOTALS3ETM4 / minPifVAL;
            yAritTOTALS3ETM5 = yTOTALS3ETM5 / minPifVAL;
            yAritTOTALS3ETM7 = yTOTALS3ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3ETM1 = (xxAritQuadTOTALS3ETM1 + ((pifTOTALS4ETM1arrayRAND[n] - xAritTOTALS3ETM1)^2));
                xxAritQuadTOTALS3ETM2 = (xxAritQuadTOTALS3ETM2 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS3ETM2)^2));
                xxAritQuadTOTALS3ETM3 = (xxAritQuadTOTALS3ETM3 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS3ETM3)^2));
                xxAritQuadTOTALS3ETM4 = (xxAritQuadTOTALS3ETM4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS3ETM4)^2));
                xxAritQuadTOTALS3ETM5 = (xxAritQuadTOTALS3ETM5 + ((pifTOTALS4ETM5arrayRAND[n] - xAritTOTALS3ETM5)^2));
                xxAritQuadTOTALS3ETM7 = (xxAritQuadTOTALS3ETM7 + ((pifTOTALS4ETM7arrayRAND[n] - xAritTOTALS3ETM7)^2));
    
                yyAritQuadTOTALS3ETM1 = (yyAritQuadTOTALS3ETM1 + ((pifTOTALS3ETM1arrayRAND[n] - yAritTOTALS3ETM1)^2));
                yyAritQuadTOTALS3ETM2 = (yyAritQuadTOTALS3ETM2 + ((pifTOTALS3ETM2arrayRAND[n] - yAritTOTALS3ETM2)^2));
                yyAritQuadTOTALS3ETM3 = (yyAritQuadTOTALS3ETM3 + ((pifTOTALS3ETM3arrayRAND[n] - yAritTOTALS3ETM3)^2));
                yyAritQuadTOTALS3ETM4 = (yyAritQuadTOTALS3ETM4 + ((pifTOTALS3ETM4arrayRAND[n] - yAritTOTALS3ETM4)^2));
                yyAritQuadTOTALS3ETM5 = (yyAritQuadTOTALS3ETM5 + ((pifTOTALS3ETM5arrayRAND[n] - yAritTOTALS3ETM5)^2));
                yyAritQuadTOTALS3ETM7 = (yyAritQuadTOTALS3ETM7 + ((pifTOTALS3ETM7arrayRAND[n] - yAritTOTALS3ETM7)^2));
    
                qXYTOTALS3ETM1 = (qXYTOTALS3ETM1 + ((pifTOTALS4ETM1arrayRAND[n] - xAritTOTALS3ETM1) * (pifTOTALS3ETM1arrayRAND[n] - yAritTOTALS3ETM1)));
                qXYTOTALS3ETM2 = (qXYTOTALS3ETM2 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS3ETM2) * (pifTOTALS3ETM2arrayRAND[n] - yAritTOTALS3ETM2)));
                qXYTOTALS3ETM3 = (qXYTOTALS3ETM3 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS3ETM3) * (pifTOTALS3ETM3arrayRAND[n] - yAritTOTALS3ETM3)));
                qXYTOTALS3ETM4 = (qXYTOTALS3ETM4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS3ETM4) * (pifTOTALS3ETM4arrayRAND[n] - yAritTOTALS3ETM4)));
                qXYTOTALS3ETM5 = (qXYTOTALS3ETM5 + ((pifTOTALS4ETM5arrayRAND[n] - xAritTOTALS3ETM5) * (pifTOTALS3ETM5arrayRAND[n] - yAritTOTALS3ETM5)));
                qXYTOTALS3ETM7 = (qXYTOTALS3ETM7 + ((pifTOTALS4ETM7arrayRAND[n] - xAritTOTALS3ETM7) * (pifTOTALS3ETM7arrayRAND[n] - yAritTOTALS3ETM7)));
            }
        
            aTOTALS3ETM1 = (((xQuadTOTALS3ETM1 * yTOTALS3ETM1) - (xTOTALS3ETM1 * xyTOTALS3ETM1)) / ((minPifVAL * xQuadTOTALS3ETM1) - (xTOTALS3ETM1^2)));
            aTOTALS3ETM2 = (((xQuadTOTALS3ETM2 * yTOTALS3ETM2) - (xTOTALS3ETM2 * xyTOTALS3ETM2)) / ((minPifVAL * xQuadTOTALS3ETM2) - (xTOTALS3ETM2^2)));
            aTOTALS3ETM3 = (((xQuadTOTALS3ETM3 * yTOTALS3ETM3) - (xTOTALS3ETM3 * xyTOTALS3ETM3)) / ((minPifVAL * xQuadTOTALS3ETM3) - (xTOTALS3ETM3^2)));
            aTOTALS3ETM4 = (((xQuadTOTALS3ETM4 * yTOTALS3ETM4) - (xTOTALS3ETM4 * xyTOTALS3ETM4)) / ((minPifVAL * xQuadTOTALS3ETM4) - (xTOTALS3ETM4^2)));
            aTOTALS3ETM5 = (((xQuadTOTALS3ETM5 * yTOTALS3ETM5) - (xTOTALS3ETM5 * xyTOTALS3ETM5)) / ((minPifVAL * xQuadTOTALS3ETM5) - (xTOTALS3ETM5^2)));
            aTOTALS3ETM7 = (((xQuadTOTALS3ETM7 * yTOTALS3ETM7) - (xTOTALS3ETM7 * xyTOTALS3ETM7)) / ((minPifVAL * xQuadTOTALS3ETM7) - (xTOTALS3ETM7^2)));
            
            bTOTALS3ETM1 = qXYTOTALS3ETM1 / xxAritQuadTOTALS3ETM1;
            bTOTALS3ETM2 = qXYTOTALS3ETM2 / xxAritQuadTOTALS3ETM2;
            bTOTALS3ETM3 = qXYTOTALS3ETM3 / xxAritQuadTOTALS3ETM3;
            bTOTALS3ETM4 = qXYTOTALS3ETM4 / xxAritQuadTOTALS3ETM4;
            bTOTALS3ETM5 = qXYTOTALS3ETM5 / xxAritQuadTOTALS3ETM5;
            bTOTALS3ETM7 = qXYTOTALS3ETM7 / xxAritQuadTOTALS3ETM7;
    
            rTOTALS3ETM1 = (qXYTOTALS3ETM1 / ((xxAritQuadTOTALS3ETM1 * yyAritQuadTOTALS3ETM1)^0.5));
            rTOTALS3ETM2 = (qXYTOTALS3ETM2 / ((xxAritQuadTOTALS3ETM2 * yyAritQuadTOTALS3ETM2)^0.5));
            rTOTALS3ETM3 = (qXYTOTALS3ETM3 / ((xxAritQuadTOTALS3ETM3 * yyAritQuadTOTALS3ETM3)^0.5));
            rTOTALS3ETM4 = (qXYTOTALS3ETM4 / ((xxAritQuadTOTALS3ETM4 * yyAritQuadTOTALS3ETM4)^0.5));
            rTOTALS3ETM5 = (qXYTOTALS3ETM5 / ((xxAritQuadTOTALS3ETM5 * yyAritQuadTOTALS3ETM5)^0.5));
            rTOTALS3ETM7 = (qXYTOTALS3ETM7 / ((xxAritQuadTOTALS3ETM7 * yyAritQuadTOTALS3ETM7)^0.5));
    
            rQuadTOTALS3ETM1 = ((rTOTALS3ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3ETM2 = ((rTOTALS3ETM2^2) * 100);
            rQuadTOTALS3ETM3 = ((rTOTALS3ETM3^2) * 100);
            rQuadTOTALS3ETM4 = ((rTOTALS3ETM4^2) * 100);
            rQuadTOTALS3ETM5 = ((rTOTALS3ETM5^2) * 100);
            rQuadTOTALS3ETM7 = ((rTOTALS3ETM7^2) * 100);
        
            syxTOTALS3ETM1 = (((yyAritQuadTOTALS3ETM1 - ((qXYTOTALS3ETM1^2) / xxAritQuadTOTALS3ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM2 = (((yyAritQuadTOTALS3ETM2 - ((qXYTOTALS3ETM2^2) / xxAritQuadTOTALS3ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM3 = (((yyAritQuadTOTALS3ETM3 - ((qXYTOTALS3ETM3^2) / xxAritQuadTOTALS3ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM4 = (((yyAritQuadTOTALS3ETM4 - ((qXYTOTALS3ETM4^2) / xxAritQuadTOTALS3ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM5 = (((yyAritQuadTOTALS3ETM5 - ((qXYTOTALS3ETM5^2) / xxAritQuadTOTALS3ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM7 = (((yyAritQuadTOTALS3ETM7 - ((qXYTOTALS3ETM7^2) / xxAritQuadTOTALS3ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3ETM1 = (((syxTOTALS3ETM1^2) / xxAritQuadTOTALS3ETM1)^0.5);
            bStandTOTALS3ETM2 = (((syxTOTALS3ETM2^2) / xxAritQuadTOTALS3ETM2)^0.5);
            bStandTOTALS3ETM3 = (((syxTOTALS3ETM3^2) / xxAritQuadTOTALS3ETM3)^0.5);
            bStandTOTALS3ETM4 = (((syxTOTALS3ETM4^2) / xxAritQuadTOTALS3ETM4)^0.5);
            bStandTOTALS3ETM5 = (((syxTOTALS3ETM5^2) / xxAritQuadTOTALS3ETM5)^0.5);
            bStandTOTALS3ETM7 = (((syxTOTALS3ETM7^2) / xxAritQuadTOTALS3ETM7)^0.5);
    
            aStandTOTALS3ETM1 = (bStandTOTALS3ETM1 * ((xQuadTOTALS3ETM1 / minPifVAL)^0.5));
            aStandTOTALS3ETM2 = (bStandTOTALS3ETM2 * ((xQuadTOTALS3ETM2 / minPifVAL)^0.5));
            aStandTOTALS3ETM3 = (bStandTOTALS3ETM3 * ((xQuadTOTALS3ETM3 / minPifVAL)^0.5));
            aStandTOTALS3ETM4 = (bStandTOTALS3ETM4 * ((xQuadTOTALS3ETM4 / minPifVAL)^0.5));
            aStandTOTALS3ETM5 = (bStandTOTALS3ETM5 * ((xQuadTOTALS3ETM5 / minPifVAL)^0.5));
            aStandTOTALS3ETM7 = (bStandTOTALS3ETM7 * ((xQuadTOTALS3ETM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM1, bTOTALS3ETM1, rTOTALS3ETM1, rQuadTOTALS3ETM1, aStandTOTALS3ETM1, bStandTOTALS3ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM2, bTOTALS3ETM2, rTOTALS3ETM2, rQuadTOTALS3ETM2, aStandTOTALS3ETM2, bStandTOTALS3ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM3, bTOTALS3ETM3, rTOTALS3ETM3, rQuadTOTALS3ETM3, aStandTOTALS3ETM3, bStandTOTALS3ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM4, bTOTALS3ETM4, rTOTALS3ETM4, rQuadTOTALS3ETM4, aStandTOTALS3ETM4, bStandTOTALS3ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM5, bTOTALS3ETM5, rTOTALS3ETM5, rQuadTOTALS3ETM5, aStandTOTALS3ETM5, bStandTOTALS3ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS3ETM7, bTOTALS3ETM7, rTOTALS3ETM7, rQuadTOTALS3ETM7, aStandTOTALS3ETM7, bStandTOTALS3ETM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS3ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS3ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS3ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS3ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS3ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS3ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS3ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT3ETM1[i,j] = (aTOTALS3ETM1 + (bTOTALS3ETM1 * REFS3ETM1[i,j]));
                    OUT3ETM2[i,j] = (aTOTALS3ETM2 + (bTOTALS3ETM2 * REFS3ETM2[i,j]));
                    OUT3ETM3[i,j] = (aTOTALS3ETM3 + (bTOTALS3ETM3 * REFS3ETM3[i,j]));
                    OUT3ETM4[i,j] = (aTOTALS3ETM4 + (bTOTALS3ETM4 * REFS3ETM4[i,j]));
                    OUT3ETM5[i,j] = (aTOTALS3ETM5 + (bTOTALS3ETM5 * REFS3ETM5[i,j]));
                    OUT3ETM7[i,j] = (aTOTALS3ETM7 + (bTOTALS3ETM7 * REFS3ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3ETM1);
        	CreatePyramid(OUT3ETM2);
        	CreatePyramid(OUT3ETM3);
        	CreatePyramid(OUT3ETM4);
        	CreatePyramid(OUT3ETM5);
        	CreatePyramid(OUT3ETM7);
        
        	CreateHistogram(OUT3ETM1);
        	CreateHistogram(OUT3ETM2);
        	CreateHistogram(OUT3ETM3);
        	CreateHistogram(OUT3ETM4);
        	CreateHistogram(OUT3ETM5);
        	CreateHistogram(OUT3ETM7);
        
        	CloseRaster(REFS3ETM1);
            CloseRaster(REFS3ETM2);
            CloseRaster(REFS3ETM3);
            CloseRaster(REFS3ETM4);
            CloseRaster(REFS3ETM5);
            CloseRaster(REFS3ETM7);
    
            CloseRaster(OUT3ETM1);
            CloseRaster(OUT3ETM2);
            CloseRaster(OUT3ETM3);
            CloseRaster(OUT3ETM4);
            CloseRaster(OUT3ETM5);
            CloseRaster(OUT3ETM7);
        
        	printf("Scene 3 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors3 == 6 )
            {
            numeric xAritTOTALS3TM1, xAritTOTALS3TM2, xAritTOTALS3TM3, xAritTOTALS3TM4, xAritTOTALS3TM5, xAritTOTALS3TM7;
            numeric yAritTOTALS3TM1, yAritTOTALS3TM2, yAritTOTALS3TM3, yAritTOTALS3TM4, yAritTOTALS3TM5, yAritTOTALS3TM7;
    
            numeric aTOTALS3TM1, aTOTALS3TM2, aTOTALS3TM3, aTOTALS3TM4, aTOTALS3TM5, aTOTALS3TM7;
            numeric bTOTALS3TM1, bTOTALS3TM2, bTOTALS3TM3, bTOTALS3TM4, bTOTALS3TM5, bTOTALS3TM7;
            numeric rTOTALS3TM1, rTOTALS3TM2, rTOTALS3TM3, rTOTALS3TM4, rTOTALS3TM5, rTOTALS3TM7;
            numeric rQuadTOTALS3TM1, rQuadTOTALS3TM2, rQuadTOTALS3TM3, rQuadTOTALS3TM4, rQuadTOTALS3TM5, rQuadTOTALS3TM7;
            numeric syxTOTALS3TM1, syxTOTALS3TM2, syxTOTALS3TM3, syxTOTALS3TM4, syxTOTALS3TM5, syxTOTALS3TM7;
            numeric bStandTOTALS3TM1, bStandTOTALS3TM2, bStandTOTALS3TM3, bStandTOTALS3TM4, bStandTOTALS3TM5, bStandTOTALS3TM7;
            numeric aStandTOTALS3TM1, aStandTOTALS3TM2, aStandTOTALS3TM3, aStandTOTALS3TM4, aStandTOTALS3TM5, aStandTOTALS3TM7;
    
            numeric xTOTALS3TM1 = 0;
            numeric xTOTALS3TM2 = 0;
            numeric xTOTALS3TM3 = 0;
            numeric xTOTALS3TM4 = 0;
            numeric xTOTALS3TM5 = 0;
            numeric xTOTALS3TM7 = 0;
    
            numeric xQuadTOTALS3TM1 = 0;
            numeric xQuadTOTALS3TM2 = 0;
            numeric xQuadTOTALS3TM3 = 0;
            numeric xQuadTOTALS3TM4 = 0;
            numeric xQuadTOTALS3TM5 = 0;
            numeric xQuadTOTALS3TM7 = 0;
    
            numeric yTOTALS3TM1 = 0;
            numeric yTOTALS3TM2 = 0;
            numeric yTOTALS3TM3 = 0;
            numeric yTOTALS3TM4 = 0;
            numeric yTOTALS3TM5 = 0;
            numeric yTOTALS3TM7 = 0;
    
            numeric yQuadTOTALS3TM1 = 0;
            numeric yQuadTOTALS3TM2 = 0;
            numeric yQuadTOTALS3TM3 = 0;
            numeric yQuadTOTALS3TM4 = 0;
            numeric yQuadTOTALS3TM5 = 0;
            numeric yQuadTOTALS3TM7 = 0;
    
            numeric xyTOTALS3TM1 = 0;
            numeric xyTOTALS3TM2 = 0;
            numeric xyTOTALS3TM3 = 0;
            numeric xyTOTALS3TM4 = 0;
            numeric xyTOTALS3TM5 = 0;
            numeric xyTOTALS3TM7 = 0;
    
            numeric xxAritQuadTOTALS3TM1 = 0;
            numeric xxAritQuadTOTALS3TM2 = 0;
            numeric xxAritQuadTOTALS3TM3 = 0;
            numeric xxAritQuadTOTALS3TM4 = 0;
            numeric xxAritQuadTOTALS3TM5 = 0;
            numeric xxAritQuadTOTALS3TM7 = 0;
    
            numeric yyAritQuadTOTALS3TM1 = 0;
            numeric yyAritQuadTOTALS3TM2 = 0;
            numeric yyAritQuadTOTALS3TM3 = 0;
            numeric yyAritQuadTOTALS3TM4 = 0;
            numeric yyAritQuadTOTALS3TM5 = 0;
            numeric yyAritQuadTOTALS3TM7 = 0;
    
            numeric qXYTOTALS3TM1 = 0;
            numeric qXYTOTALS3TM2 = 0;
            numeric qXYTOTALS3TM3 = 0;
            numeric qXYTOTALS3TM4 = 0;
            numeric qXYTOTALS3TM5 = 0;
            numeric qXYTOTALS3TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS3TM1 = xTOTALS3TM1 + pifTOTALS4ETM1arrayRAND[m];
                xTOTALS3TM2 = xTOTALS3TM2 + pifTOTALS4ETM2arrayRAND[m];
                xTOTALS3TM3 = xTOTALS3TM3 + pifTOTALS4ETM3arrayRAND[m];
                xTOTALS3TM4 = xTOTALS3TM4 + pifTOTALS4ETM4arrayRAND[m];
                xTOTALS3TM5 = xTOTALS3TM5 + pifTOTALS4ETM5arrayRAND[m];
                xTOTALS3TM7 = xTOTALS3TM7 + pifTOTALS4ETM7arrayRAND[m];
    
                xQuadTOTALS3TM1 = (xQuadTOTALS3TM1 + (pifTOTALS4ETM1arrayRAND[m]^2));
                xQuadTOTALS3TM2 = (xQuadTOTALS3TM2 + (pifTOTALS4ETM2arrayRAND[m]^2));
                xQuadTOTALS3TM3 = (xQuadTOTALS3TM3 + (pifTOTALS4ETM3arrayRAND[m]^2));
                xQuadTOTALS3TM4 = (xQuadTOTALS3TM4 + (pifTOTALS4ETM4arrayRAND[m]^2));
                xQuadTOTALS3TM5 = (xQuadTOTALS3TM5 + (pifTOTALS4ETM5arrayRAND[m]^2));
                xQuadTOTALS3TM7 = (xQuadTOTALS3TM7 + (pifTOTALS4ETM7arrayRAND[m]^2));
    
                yTOTALS3TM1 = yTOTALS3TM1 + pifTOTALS3TM1arrayRAND[m];
                yTOTALS3TM2 = yTOTALS3TM2 + pifTOTALS3TM2arrayRAND[m];
                yTOTALS3TM3 = yTOTALS3TM3 + pifTOTALS3TM3arrayRAND[m];
                yTOTALS3TM4 = yTOTALS3TM4 + pifTOTALS3TM4arrayRAND[m];
                yTOTALS3TM5 = yTOTALS3TM5 + pifTOTALS3TM5arrayRAND[m];
                yTOTALS3TM7 = yTOTALS3TM7 + pifTOTALS3TM7arrayRAND[m];
                
                yQuadTOTALS3TM1 = (yQuadTOTALS3TM1 + (pifTOTALS3TM1arrayRAND[m]^2));
                yQuadTOTALS3TM2 = (yQuadTOTALS3TM2 + (pifTOTALS3TM2arrayRAND[m]^2));
                yQuadTOTALS3TM3 = (yQuadTOTALS3TM3 + (pifTOTALS3TM3arrayRAND[m]^2));
                yQuadTOTALS3TM4 = (yQuadTOTALS3TM4 + (pifTOTALS3TM4arrayRAND[m]^2));
                yQuadTOTALS3TM5 = (yQuadTOTALS3TM5 + (pifTOTALS3TM5arrayRAND[m]^2));
                yQuadTOTALS3TM7 = (yQuadTOTALS3TM7 + (pifTOTALS3TM7arrayRAND[m]^2));
    
                xyTOTALS3TM1 = (xyTOTALS3TM1 + (pifTOTALS4ETM1arrayRAND[m] * pifTOTALS3TM1arrayRAND[m]));
                xyTOTALS3TM2 = (xyTOTALS3TM2 + (pifTOTALS4ETM2arrayRAND[m] * pifTOTALS3TM2arrayRAND[m]));
                xyTOTALS3TM3 = (xyTOTALS3TM3 + (pifTOTALS4ETM3arrayRAND[m] * pifTOTALS3TM3arrayRAND[m]));
                xyTOTALS3TM4 = (xyTOTALS3TM4 + (pifTOTALS4ETM4arrayRAND[m] * pifTOTALS3TM4arrayRAND[m]));
                xyTOTALS3TM5 = (xyTOTALS3TM5 + (pifTOTALS4ETM5arrayRAND[m] * pifTOTALS3TM5arrayRAND[m]));
                xyTOTALS3TM7 = (xyTOTALS3TM7 + (pifTOTALS4ETM7arrayRAND[m] * pifTOTALS3TM7arrayRAND[m]));
            }	
            
            xAritTOTALS3TM1 = xTOTALS3TM1 / minPifVAL;
            xAritTOTALS3TM2 = xTOTALS3TM2 / minPifVAL;
            xAritTOTALS3TM3 = xTOTALS3TM3 / minPifVAL;
            xAritTOTALS3TM4 = xTOTALS3TM4 / minPifVAL;
            xAritTOTALS3TM5 = xTOTALS3TM5 / minPifVAL;
            xAritTOTALS3TM7 = xTOTALS3TM7 / minPifVAL;
    
            yAritTOTALS3TM1 = yTOTALS3TM1 / minPifVAL;
            yAritTOTALS3TM2 = yTOTALS3TM2 / minPifVAL;
            yAritTOTALS3TM3 = yTOTALS3TM3 / minPifVAL;
            yAritTOTALS3TM4 = yTOTALS3TM4 / minPifVAL;
            yAritTOTALS3TM5 = yTOTALS3TM5 / minPifVAL;
            yAritTOTALS3TM7 = yTOTALS3TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3TM1 = (xxAritQuadTOTALS3TM1 + ((pifTOTALS4ETM1arrayRAND[n] - xAritTOTALS3TM1)^2));
                xxAritQuadTOTALS3TM2 = (xxAritQuadTOTALS3TM2 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS3TM2)^2));
                xxAritQuadTOTALS3TM3 = (xxAritQuadTOTALS3TM3 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS3TM3)^2));
                xxAritQuadTOTALS3TM4 = (xxAritQuadTOTALS3TM4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS3TM4)^2));
                xxAritQuadTOTALS3TM5 = (xxAritQuadTOTALS3TM5 + ((pifTOTALS4ETM5arrayRAND[n] - xAritTOTALS3TM5)^2));
                xxAritQuadTOTALS3TM7 = (xxAritQuadTOTALS3TM7 + ((pifTOTALS4ETM7arrayRAND[n] - xAritTOTALS3TM7)^2));
    
                yyAritQuadTOTALS3TM1 = (yyAritQuadTOTALS3TM1 + ((pifTOTALS3TM1arrayRAND[n] - yAritTOTALS3TM1)^2));
                yyAritQuadTOTALS3TM2 = (yyAritQuadTOTALS3TM2 + ((pifTOTALS3TM2arrayRAND[n] - yAritTOTALS3TM2)^2));
                yyAritQuadTOTALS3TM3 = (yyAritQuadTOTALS3TM3 + ((pifTOTALS3TM3arrayRAND[n] - yAritTOTALS3TM3)^2));
                yyAritQuadTOTALS3TM4 = (yyAritQuadTOTALS3TM4 + ((pifTOTALS3TM4arrayRAND[n] - yAritTOTALS3TM4)^2));
                yyAritQuadTOTALS3TM5 = (yyAritQuadTOTALS3TM5 + ((pifTOTALS3TM5arrayRAND[n] - yAritTOTALS3TM5)^2));
                yyAritQuadTOTALS3TM7 = (yyAritQuadTOTALS3TM7 + ((pifTOTALS3TM7arrayRAND[n] - yAritTOTALS3TM7)^2));
    
                qXYTOTALS3TM1 = (qXYTOTALS3TM1 + ((pifTOTALS4ETM1arrayRAND[n] - xAritTOTALS3TM1) * (pifTOTALS3TM1arrayRAND[n] - yAritTOTALS3TM1)));
                qXYTOTALS3TM2 = (qXYTOTALS3TM2 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS3TM2) * (pifTOTALS3TM2arrayRAND[n] - yAritTOTALS3TM2)));
                qXYTOTALS3TM3 = (qXYTOTALS3TM3 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS3TM3) * (pifTOTALS3TM3arrayRAND[n] - yAritTOTALS3TM3)));
                qXYTOTALS3TM4 = (qXYTOTALS3TM4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS3TM4) * (pifTOTALS3TM4arrayRAND[n] - yAritTOTALS3TM4)));
                qXYTOTALS3TM5 = (qXYTOTALS3TM5 + ((pifTOTALS4ETM5arrayRAND[n] - xAritTOTALS3TM5) * (pifTOTALS3TM5arrayRAND[n] - yAritTOTALS3TM5)));
                qXYTOTALS3TM7 = (qXYTOTALS3TM7 + ((pifTOTALS4ETM7arrayRAND[n] - xAritTOTALS3TM7) * (pifTOTALS3TM7arrayRAND[n] - yAritTOTALS3TM7)));
            }
        
            aTOTALS3TM1 = (((xQuadTOTALS3TM1 * yTOTALS3TM1) - (xTOTALS3TM1 * xyTOTALS3TM1)) / ((minPifVAL * xQuadTOTALS3TM1) - (xTOTALS3TM1^2)));
            aTOTALS3TM2 = (((xQuadTOTALS3TM2 * yTOTALS3TM2) - (xTOTALS3TM2 * xyTOTALS3TM2)) / ((minPifVAL * xQuadTOTALS3TM2) - (xTOTALS3TM2^2)));
            aTOTALS3TM3 = (((xQuadTOTALS3TM3 * yTOTALS3TM3) - (xTOTALS3TM3 * xyTOTALS3TM3)) / ((minPifVAL * xQuadTOTALS3TM3) - (xTOTALS3TM3^2)));
            aTOTALS3TM4 = (((xQuadTOTALS3TM4 * yTOTALS3TM4) - (xTOTALS3TM4 * xyTOTALS3TM4)) / ((minPifVAL * xQuadTOTALS3TM4) - (xTOTALS3TM4^2)));
            aTOTALS3TM5 = (((xQuadTOTALS3TM5 * yTOTALS3TM5) - (xTOTALS3TM5 * xyTOTALS3TM5)) / ((minPifVAL * xQuadTOTALS3TM5) - (xTOTALS3TM5^2)));
            aTOTALS3TM7 = (((xQuadTOTALS3TM7 * yTOTALS3TM7) - (xTOTALS3TM7 * xyTOTALS3TM7)) / ((minPifVAL * xQuadTOTALS3TM7) - (xTOTALS3TM7^2)));
            
            bTOTALS3TM1 = qXYTOTALS3TM1 / xxAritQuadTOTALS3TM1;
            bTOTALS3TM2 = qXYTOTALS3TM2 / xxAritQuadTOTALS3TM2;
            bTOTALS3TM3 = qXYTOTALS3TM3 / xxAritQuadTOTALS3TM3;
            bTOTALS3TM4 = qXYTOTALS3TM4 / xxAritQuadTOTALS3TM4;
            bTOTALS3TM5 = qXYTOTALS3TM5 / xxAritQuadTOTALS3TM5;
            bTOTALS3TM7 = qXYTOTALS3TM7 / xxAritQuadTOTALS3TM7;
    
            rTOTALS3TM1 = (qXYTOTALS3TM1 / ((xxAritQuadTOTALS3TM1 * yyAritQuadTOTALS3TM1)^0.5));
            rTOTALS3TM2 = (qXYTOTALS3TM2 / ((xxAritQuadTOTALS3TM2 * yyAritQuadTOTALS3TM2)^0.5));
            rTOTALS3TM3 = (qXYTOTALS3TM3 / ((xxAritQuadTOTALS3TM3 * yyAritQuadTOTALS3TM3)^0.5));
            rTOTALS3TM4 = (qXYTOTALS3TM4 / ((xxAritQuadTOTALS3TM4 * yyAritQuadTOTALS3TM4)^0.5));
            rTOTALS3TM5 = (qXYTOTALS3TM5 / ((xxAritQuadTOTALS3TM5 * yyAritQuadTOTALS3TM5)^0.5));
            rTOTALS3TM7 = (qXYTOTALS3TM7 / ((xxAritQuadTOTALS3TM7 * yyAritQuadTOTALS3TM7)^0.5));
    
            rQuadTOTALS3TM1 = ((rTOTALS3TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3TM2 = ((rTOTALS3TM2^2) * 100);
            rQuadTOTALS3TM3 = ((rTOTALS3TM3^2) * 100);
            rQuadTOTALS3TM4 = ((rTOTALS3TM4^2) * 100);
            rQuadTOTALS3TM5 = ((rTOTALS3TM5^2) * 100);
            rQuadTOTALS3TM7 = ((rTOTALS3TM7^2) * 100);
        
            syxTOTALS3TM1 = (((yyAritQuadTOTALS3TM1 - ((qXYTOTALS3TM1^2) / xxAritQuadTOTALS3TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM2 = (((yyAritQuadTOTALS3TM2 - ((qXYTOTALS3TM2^2) / xxAritQuadTOTALS3TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM3 = (((yyAritQuadTOTALS3TM3 - ((qXYTOTALS3TM3^2) / xxAritQuadTOTALS3TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM4 = (((yyAritQuadTOTALS3TM4 - ((qXYTOTALS3TM4^2) / xxAritQuadTOTALS3TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM5 = (((yyAritQuadTOTALS3TM5 - ((qXYTOTALS3TM5^2) / xxAritQuadTOTALS3TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM7 = (((yyAritQuadTOTALS3TM7 - ((qXYTOTALS3TM7^2) / xxAritQuadTOTALS3TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3TM1 = (((syxTOTALS3TM1^2) / xxAritQuadTOTALS3TM1)^0.5);
            bStandTOTALS3TM2 = (((syxTOTALS3TM2^2) / xxAritQuadTOTALS3TM2)^0.5);
            bStandTOTALS3TM3 = (((syxTOTALS3TM3^2) / xxAritQuadTOTALS3TM3)^0.5);
            bStandTOTALS3TM4 = (((syxTOTALS3TM4^2) / xxAritQuadTOTALS3TM4)^0.5);
            bStandTOTALS3TM5 = (((syxTOTALS3TM5^2) / xxAritQuadTOTALS3TM5)^0.5);
            bStandTOTALS3TM7 = (((syxTOTALS3TM7^2) / xxAritQuadTOTALS3TM7)^0.5);
    
            aStandTOTALS3TM1 = (bStandTOTALS3TM1 * ((xQuadTOTALS3TM1 / minPifVAL)^0.5));
            aStandTOTALS3TM2 = (bStandTOTALS3TM2 * ((xQuadTOTALS3TM2 / minPifVAL)^0.5));
            aStandTOTALS3TM3 = (bStandTOTALS3TM3 * ((xQuadTOTALS3TM3 / minPifVAL)^0.5));
            aStandTOTALS3TM4 = (bStandTOTALS3TM4 * ((xQuadTOTALS3TM4 / minPifVAL)^0.5));
            aStandTOTALS3TM5 = (bStandTOTALS3TM5 * ((xQuadTOTALS3TM5 / minPifVAL)^0.5));
            aStandTOTALS3TM7 = (bStandTOTALS3TM7 * ((xQuadTOTALS3TM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM1, bTOTALS3TM1, rTOTALS3TM1, rQuadTOTALS3TM1, aStandTOTALS3TM1, bStandTOTALS3TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM2, bTOTALS3TM2, rTOTALS3TM2, rQuadTOTALS3TM2, aStandTOTALS3TM2, bStandTOTALS3TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM3, bTOTALS3TM3, rTOTALS3TM3, rQuadTOTALS3TM3, aStandTOTALS3TM3, bStandTOTALS3TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM4, bTOTALS3TM4, rTOTALS3TM4, rQuadTOTALS3TM4, aStandTOTALS3TM4, bStandTOTALS3TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM5, bTOTALS3TM5, rTOTALS3TM5, rQuadTOTALS3TM5, aStandTOTALS3TM5, bStandTOTALS3TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS3TM7, bTOTALS3TM7, rTOTALS3TM7, rQuadTOTALS3TM7, aStandTOTALS3TM7, bStandTOTALS3TM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS3TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS3TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS3TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS3TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS3TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS3TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS3TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT3TM1[i,j] = (aTOTALS3TM1 + (bTOTALS3TM1 * REFS3TM1[i,j]));
                    OUT3TM2[i,j] = (aTOTALS3TM2 + (bTOTALS3TM2 * REFS3TM2[i,j]));
                    OUT3TM3[i,j] = (aTOTALS3TM3 + (bTOTALS3TM3 * REFS3TM3[i,j]));
                    OUT3TM4[i,j] = (aTOTALS3TM4 + (bTOTALS3TM4 * REFS3TM4[i,j]));
                    OUT3TM5[i,j] = (aTOTALS3TM5 + (bTOTALS3TM5 * REFS3TM5[i,j]));
                    OUT3TM7[i,j] = (aTOTALS3TM7 + (bTOTALS3TM7 * REFS3TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3TM1);
        	CreatePyramid(OUT3TM2);
        	CreatePyramid(OUT3TM3);
        	CreatePyramid(OUT3TM4);
        	CreatePyramid(OUT3TM5);
        	CreatePyramid(OUT3TM7);
        
        	CreateHistogram(OUT3TM1);
        	CreateHistogram(OUT3TM2);
        	CreateHistogram(OUT3TM3);
        	CreateHistogram(OUT3TM4);
        	CreateHistogram(OUT3TM5);
        	CreateHistogram(OUT3TM7);
        
        	CloseRaster(REFS3TM1);
            CloseRaster(REFS3TM2);
            CloseRaster(REFS3TM3);
            CloseRaster(REFS3TM4);
            CloseRaster(REFS3TM5);
            CloseRaster(REFS3TM7);
    
            CloseRaster(OUT3TM1);
            CloseRaster(OUT3TM2);
            CloseRaster(OUT3TM3);
            CloseRaster(OUT3TM4);
            CloseRaster(OUT3TM5);
            CloseRaster(OUT3TM7);
        
        	printf("Scene 3 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS3MSS1, xAritTOTALS3MSS2, xAritTOTALS3MSS4;
            numeric yAritTOTALS3MSS1, yAritTOTALS3MSS2, yAritTOTALS3MSS4;
    
            numeric aTOTALS3MSS1, aTOTALS3MSS2, aTOTALS3MSS4;
            numeric bTOTALS3MSS1, bTOTALS3MSS2, bTOTALS3MSS4;
            numeric rTOTALS3MSS1, rTOTALS3MSS2, rTOTALS3MSS4;
            numeric rQuadTOTALS3MSS1, rQuadTOTALS3MSS2, rQuadTOTALS3MSS4;
            numeric syxTOTALS3MSS1, syxTOTALS3MSS2, syxTOTALS3MSS4;
            numeric bStandTOTALS3MSS1, bStandTOTALS3MSS2, bStandTOTALS3MSS4;
            numeric aStandTOTALS3MSS1, aStandTOTALS3MSS2, aStandTOTALS3MSS4;
    
            numeric xTOTALS3MSS1 = 0;
            numeric xTOTALS3MSS2 = 0;
            numeric xTOTALS3MSS4 = 0;
    
            numeric xQuadTOTALS3MSS1 = 0;
            numeric xQuadTOTALS3MSS2 = 0;
            numeric xQuadTOTALS3MSS4 = 0;
    
            numeric yTOTALS3MSS1 = 0;
            numeric yTOTALS3MSS2 = 0;
            numeric yTOTALS3MSS4 = 0;
    
            numeric yQuadTOTALS3MSS1 = 0;
            numeric yQuadTOTALS3MSS2 = 0;
            numeric yQuadTOTALS3MSS4 = 0;
    
            numeric xyTOTALS3MSS1 = 0;
            numeric xyTOTALS3MSS2 = 0;
            numeric xyTOTALS3MSS4 = 0;
    
            numeric xxAritQuadTOTALS3MSS1 = 0;
            numeric xxAritQuadTOTALS3MSS2 = 0;
            numeric xxAritQuadTOTALS3MSS4 = 0;
    
            numeric yyAritQuadTOTALS3MSS1 = 0;
            numeric yyAritQuadTOTALS3MSS2 = 0;
            numeric yyAritQuadTOTALS3MSS4 = 0;
    
            numeric qXYTOTALS3MSS1 = 0;
            numeric qXYTOTALS3MSS2 = 0;
            numeric qXYTOTALS3MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS3MSS1 = xTOTALS3MSS1 + pifTOTALS4ETM2arrayRAND[m];
                xTOTALS3MSS2 = xTOTALS3MSS2 + pifTOTALS4ETM3arrayRAND[m];
                xTOTALS3MSS4 = xTOTALS3MSS4 + pifTOTALS4ETM4arrayRAND[m];
    
                xQuadTOTALS3MSS1 = (xQuadTOTALS3MSS1 + (pifTOTALS4ETM2arrayRAND[m]^2));
                xQuadTOTALS3MSS2 = (xQuadTOTALS3MSS2 + (pifTOTALS4ETM3arrayRAND[m]^2));
                xQuadTOTALS3MSS4 = (xQuadTOTALS3MSS4 + (pifTOTALS4ETM4arrayRAND[m]^2));
    
                yTOTALS3MSS1 = yTOTALS3MSS1 + pifTOTALS3MSS1arrayRAND[m];
                yTOTALS3MSS2 = yTOTALS3MSS2 + pifTOTALS3MSS2arrayRAND[m];
                yTOTALS3MSS4 = yTOTALS3MSS4 + pifTOTALS3MSS4arrayRAND[m];
                
                yQuadTOTALS3MSS1 = (yQuadTOTALS3MSS1 + (pifTOTALS3MSS1arrayRAND[m]^2));
                yQuadTOTALS3MSS2 = (yQuadTOTALS3MSS2 + (pifTOTALS3MSS2arrayRAND[m]^2));
                yQuadTOTALS3MSS4 = (yQuadTOTALS3MSS4 + (pifTOTALS3MSS4arrayRAND[m]^2));
    
                xyTOTALS3MSS1 = (xyTOTALS3MSS1 + (pifTOTALS4ETM2arrayRAND[m] * pifTOTALS3MSS1arrayRAND[m]));
                xyTOTALS3MSS2 = (xyTOTALS3MSS2 + (pifTOTALS4ETM3arrayRAND[m] * pifTOTALS3MSS2arrayRAND[m]));
                xyTOTALS3MSS4 = (xyTOTALS3MSS4 + (pifTOTALS4ETM4arrayRAND[m] * pifTOTALS3MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS3MSS1 = xTOTALS3MSS1 / minPifVAL;
            xAritTOTALS3MSS2 = xTOTALS3MSS2 / minPifVAL;
            xAritTOTALS3MSS4 = xTOTALS3MSS4 / minPifVAL;
    
            yAritTOTALS3MSS1 = yTOTALS3MSS1 / minPifVAL;
            yAritTOTALS3MSS2 = yTOTALS3MSS2 / minPifVAL;
            yAritTOTALS3MSS4 = yTOTALS3MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3MSS1 = (xxAritQuadTOTALS3MSS1 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS3MSS1)^2));
                xxAritQuadTOTALS3MSS2 = (xxAritQuadTOTALS3MSS2 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS3MSS2)^2));
                xxAritQuadTOTALS3MSS4 = (xxAritQuadTOTALS3MSS4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS3MSS4)^2));
    
                yyAritQuadTOTALS3MSS1 = (yyAritQuadTOTALS3MSS1 + ((pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)^2));
                yyAritQuadTOTALS3MSS2 = (yyAritQuadTOTALS3MSS2 + ((pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)^2));
                yyAritQuadTOTALS3MSS4 = (yyAritQuadTOTALS3MSS4 + ((pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)^2));
    
                qXYTOTALS3MSS1 = (qXYTOTALS3MSS1 + ((pifTOTALS4ETM2arrayRAND[n] - xAritTOTALS3MSS1) * (pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)));
                qXYTOTALS3MSS2 = (qXYTOTALS3MSS2 + ((pifTOTALS4ETM3arrayRAND[n] - xAritTOTALS3MSS2) * (pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)));
                qXYTOTALS3MSS4 = (qXYTOTALS3MSS4 + ((pifTOTALS4ETM4arrayRAND[n] - xAritTOTALS3MSS4) * (pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)));
            }
        
            aTOTALS3MSS1 = (((xQuadTOTALS3MSS1 * yTOTALS3MSS1) - (xTOTALS3MSS1 * xyTOTALS3MSS1)) / ((minPifVAL * xQuadTOTALS3MSS1) - (xTOTALS3MSS1^2)));
            aTOTALS3MSS2 = (((xQuadTOTALS3MSS2 * yTOTALS3MSS2) - (xTOTALS3MSS2 * xyTOTALS3MSS2)) / ((minPifVAL * xQuadTOTALS3MSS2) - (xTOTALS3MSS2^2)));
            aTOTALS3MSS4 = (((xQuadTOTALS3MSS4 * yTOTALS3MSS4) - (xTOTALS3MSS4 * xyTOTALS3MSS4)) / ((minPifVAL * xQuadTOTALS3MSS4) - (xTOTALS3MSS4^2)));
            
            bTOTALS3MSS1 = qXYTOTALS3MSS1 / xxAritQuadTOTALS3MSS1;
            bTOTALS3MSS2 = qXYTOTALS3MSS2 / xxAritQuadTOTALS3MSS2;
            bTOTALS3MSS4 = qXYTOTALS3MSS4 / xxAritQuadTOTALS3MSS4;
    
            rTOTALS3MSS1 = (qXYTOTALS3MSS1 / ((xxAritQuadTOTALS3MSS1 * yyAritQuadTOTALS3MSS1)^0.5));
            rTOTALS3MSS2 = (qXYTOTALS3MSS2 / ((xxAritQuadTOTALS3MSS2 * yyAritQuadTOTALS3MSS2)^0.5));
            rTOTALS3MSS4 = (qXYTOTALS3MSS4 / ((xxAritQuadTOTALS3MSS4 * yyAritQuadTOTALS3MSS4)^0.5));
    
            rQuadTOTALS3MSS1 = ((rTOTALS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3MSS2 = ((rTOTALS3MSS2^2) * 100);
            rQuadTOTALS3MSS4 = ((rTOTALS3MSS4^2) * 100);
        
            syxTOTALS3MSS1 = (((yyAritQuadTOTALS3MSS1 - ((qXYTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS2 = (((yyAritQuadTOTALS3MSS2 - ((qXYTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS4 = (((yyAritQuadTOTALS3MSS4 - ((qXYTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3MSS1 = (((syxTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)^0.5);
            bStandTOTALS3MSS2 = (((syxTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)^0.5);
            bStandTOTALS3MSS4 = (((syxTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)^0.5);
    
            aStandTOTALS3MSS1 = (bStandTOTALS3MSS1 * ((xQuadTOTALS3MSS1 / minPifVAL)^0.5));
            aStandTOTALS3MSS2 = (bStandTOTALS3MSS2 * ((xQuadTOTALS3MSS2 / minPifVAL)^0.5));
            aStandTOTALS3MSS4 = (bStandTOTALS3MSS4 * ((xQuadTOTALS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS1, bTOTALS3MSS1, rTOTALS3MSS1, rQuadTOTALS3MSS1, aStandTOTALS3MSS1, bStandTOTALS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS2, bTOTALS3MSS2, rTOTALS3MSS2, rQuadTOTALS3MSS2, aStandTOTALS3MSS2, bStandTOTALS3MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS4, bTOTALS3MSS4, rTOTALS3MSS4, rQuadTOTALS3MSS4, aStandTOTALS3MSS4, bStandTOTALS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS3MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS3MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS3MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aTOTALS3MSS1 + (bTOTALS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aTOTALS3MSS2 + (bTOTALS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = REFS3MSS3[i,j];
                    OUT3MSS4[i,j] = (aTOTALS3MSS4 + (bTOTALS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT3MSS1);
        	CreatePyramid(OUT3MSS2);
        	CreatePyramid(OUT3MSS3);
        	CreatePyramid(OUT3MSS4);
        
        	CreateHistogram(OUT3MSS1);
        	CreateHistogram(OUT3MSS2);
        	CreateHistogram(OUT3MSS3);
        	CreateHistogram(OUT3MSS4);
        
        	CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
        
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
        }
        
        else if ( sensors4 == 6 )
        {
        printf("Scene 4 - Master Scene (TM):\n");
        printf("Scene 4 array values used for regression computation:\n");
    
        printf("TM1: %12f ", pifTOTALS4TM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS4TM1arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS4TM1arrayRAND[minPifVAL]);
    
        printf("TM2: %12f ", pifTOTALS4TM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS4TM2arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS4TM2arrayRAND[minPifVAL]);
    
        printf("TM3: %12f ", pifTOTALS4TM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS4TM3arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS4TM3arrayRAND[minPifVAL]);
    
        printf("TM4: %12f ", pifTOTALS4TM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS4TM4arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS4TM4arrayRAND[minPifVAL]);
    
        printf("TM5: %12f ", pifTOTALS4TM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS4TM5arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS4TM5arrayRAND[minPifVAL]);
    
        printf("TM7: %12f ", pifTOTALS4TM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS4TM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifTOTALS4TM7arrayRAND[minPifVAL]);
            
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                OUT4TM1[i,j] = REFS4TM1[i,j];
                OUT4TM2[i,j] = REFS4TM2[i,j];
                OUT4TM3[i,j] = REFS4TM3[i,j];
                OUT4TM4[i,j] = REFS4TM4[i,j];
                OUT4TM5[i,j] = REFS4TM5[i,j];
                OUT4TM7[i,j] = REFS4TM7[i,j];
                }
            }
        
        CreatePyramid(OUT4TM1);
        CreatePyramid(OUT4TM2);
        CreatePyramid(OUT4TM3);
        CreatePyramid(OUT4TM4);
        CreatePyramid(OUT4TM5);
        CreatePyramid(OUT4TM7);
    
        CreateHistogram(OUT4TM1);
        CreateHistogram(OUT4TM2);
        CreateHistogram(OUT4TM3);
        CreateHistogram(OUT4TM4);
        CreateHistogram(OUT4TM5);
        CreateHistogram(OUT4TM7);
        
        CloseRaster(REFS4TM1);
        CloseRaster(REFS4TM2);
        CloseRaster(REFS4TM3);
        CloseRaster(REFS4TM4);
        CloseRaster(REFS4TM5);
        CloseRaster(REFS4TM7);
        CloseRaster(OUT4TM1);
        CloseRaster(OUT4TM2);
        CloseRaster(OUT4TM3);
        CloseRaster(OUT4TM4);
        CloseRaster(OUT4TM5);
        CloseRaster(OUT4TM7);
    
        printf("Scene 4 (Master) output was written, histogram created and pyramid written\n\n\n");
        
            if ( sensors1 == 7 )
            {
            numeric xAritTOTALS1ETM1, xAritTOTALS1ETM2, xAritTOTALS1ETM3, xAritTOTALS1ETM4, xAritTOTALS1ETM5, xAritTOTALS1ETM7;
            numeric yAritTOTALS1ETM1, yAritTOTALS1ETM2, yAritTOTALS1ETM3, yAritTOTALS1ETM4, yAritTOTALS1ETM5, yAritTOTALS1ETM7;
    
            numeric aTOTALS1ETM1, aTOTALS1ETM2, aTOTALS1ETM3, aTOTALS1ETM4, aTOTALS1ETM5, aTOTALS1ETM7;
            numeric bTOTALS1ETM1, bTOTALS1ETM2, bTOTALS1ETM3, bTOTALS1ETM4, bTOTALS1ETM5, bTOTALS1ETM7;
            numeric rTOTALS1ETM1, rTOTALS1ETM2, rTOTALS1ETM3, rTOTALS1ETM4, rTOTALS1ETM5, rTOTALS1ETM7;
            numeric rQuadTOTALS1ETM1, rQuadTOTALS1ETM2, rQuadTOTALS1ETM3, rQuadTOTALS1ETM4, rQuadTOTALS1ETM5, rQuadTOTALS1ETM7;
            numeric syxTOTALS1ETM1, syxTOTALS1ETM2, syxTOTALS1ETM3, syxTOTALS1ETM4, syxTOTALS1ETM5, syxTOTALS1ETM7;
            numeric bStandTOTALS1ETM1, bStandTOTALS1ETM2, bStandTOTALS1ETM3, bStandTOTALS1ETM4, bStandTOTALS1ETM5, bStandTOTALS1ETM7;
            numeric aStandTOTALS1ETM1, aStandTOTALS1ETM2, aStandTOTALS1ETM3, aStandTOTALS1ETM4, aStandTOTALS1ETM5, aStandTOTALS1ETM7;
    
            numeric xTOTALS1ETM1 = 0;
            numeric xTOTALS1ETM2 = 0;
            numeric xTOTALS1ETM3 = 0;
            numeric xTOTALS1ETM4 = 0;
            numeric xTOTALS1ETM5 = 0;
            numeric xTOTALS1ETM7 = 0;
    
            numeric xQuadTOTALS1ETM1 = 0;
            numeric xQuadTOTALS1ETM2 = 0;
            numeric xQuadTOTALS1ETM3 = 0;
            numeric xQuadTOTALS1ETM4 = 0;
            numeric xQuadTOTALS1ETM5 = 0;
            numeric xQuadTOTALS1ETM7 = 0;
    
            numeric yTOTALS1ETM1 = 0;
            numeric yTOTALS1ETM2 = 0;
            numeric yTOTALS1ETM3 = 0;
            numeric yTOTALS1ETM4 = 0;
            numeric yTOTALS1ETM5 = 0;
            numeric yTOTALS1ETM7 = 0;
    
            numeric yQuadTOTALS1ETM1 = 0;
            numeric yQuadTOTALS1ETM2 = 0;
            numeric yQuadTOTALS1ETM3 = 0;
            numeric yQuadTOTALS1ETM4 = 0;
            numeric yQuadTOTALS1ETM5 = 0;
            numeric yQuadTOTALS1ETM7 = 0;
    
            numeric xyTOTALS1ETM1 = 0;
            numeric xyTOTALS1ETM2 = 0;
            numeric xyTOTALS1ETM3 = 0;
            numeric xyTOTALS1ETM4 = 0;
            numeric xyTOTALS1ETM5 = 0;
            numeric xyTOTALS1ETM7 = 0;
    
            numeric xxAritQuadTOTALS1ETM1 = 0;
            numeric xxAritQuadTOTALS1ETM2 = 0;
            numeric xxAritQuadTOTALS1ETM3 = 0;
            numeric xxAritQuadTOTALS1ETM4 = 0;
            numeric xxAritQuadTOTALS1ETM5 = 0;
            numeric xxAritQuadTOTALS1ETM7 = 0;
    
            numeric yyAritQuadTOTALS1ETM1 = 0;
            numeric yyAritQuadTOTALS1ETM2 = 0;
            numeric yyAritQuadTOTALS1ETM3 = 0;
            numeric yyAritQuadTOTALS1ETM4 = 0;
            numeric yyAritQuadTOTALS1ETM5 = 0;
            numeric yyAritQuadTOTALS1ETM7 = 0;
    
            numeric qXYTOTALS1ETM1 = 0;
            numeric qXYTOTALS1ETM2 = 0;
            numeric qXYTOTALS1ETM3 = 0;
            numeric qXYTOTALS1ETM4 = 0;
            numeric qXYTOTALS1ETM5 = 0;
            numeric qXYTOTALS1ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS1ETM1 = xTOTALS1ETM1 + pifTOTALS4TM1arrayRAND[m];
                xTOTALS1ETM2 = xTOTALS1ETM2 + pifTOTALS4TM2arrayRAND[m];
                xTOTALS1ETM3 = xTOTALS1ETM3 + pifTOTALS4TM3arrayRAND[m];
                xTOTALS1ETM4 = xTOTALS1ETM4 + pifTOTALS4TM4arrayRAND[m];
                xTOTALS1ETM5 = xTOTALS1ETM5 + pifTOTALS4TM5arrayRAND[m];
                xTOTALS1ETM7 = xTOTALS1ETM7 + pifTOTALS4TM7arrayRAND[m];
    
                xQuadTOTALS1ETM1 = (xQuadTOTALS1ETM1 + (pifTOTALS4TM1arrayRAND[m]^2));
                xQuadTOTALS1ETM2 = (xQuadTOTALS1ETM2 + (pifTOTALS4TM2arrayRAND[m]^2));
                xQuadTOTALS1ETM3 = (xQuadTOTALS1ETM3 + (pifTOTALS4TM3arrayRAND[m]^2));
                xQuadTOTALS1ETM4 = (xQuadTOTALS1ETM4 + (pifTOTALS4TM4arrayRAND[m]^2));
                xQuadTOTALS1ETM5 = (xQuadTOTALS1ETM5 + (pifTOTALS4TM5arrayRAND[m]^2));
                xQuadTOTALS1ETM7 = (xQuadTOTALS1ETM7 + (pifTOTALS4TM7arrayRAND[m]^2));
    
                yTOTALS1ETM1 = yTOTALS1ETM1 + pifTOTALS1ETM1arrayRAND[m];
                yTOTALS1ETM2 = yTOTALS1ETM2 + pifTOTALS1ETM2arrayRAND[m];
                yTOTALS1ETM3 = yTOTALS1ETM3 + pifTOTALS1ETM3arrayRAND[m];
                yTOTALS1ETM4 = yTOTALS1ETM4 + pifTOTALS1ETM4arrayRAND[m];
                yTOTALS1ETM5 = yTOTALS1ETM5 + pifTOTALS1ETM5arrayRAND[m];
                yTOTALS1ETM7 = yTOTALS1ETM7 + pifTOTALS1ETM7arrayRAND[m];
                
                yQuadTOTALS1ETM1 = (yQuadTOTALS1ETM1 + (pifTOTALS1ETM1arrayRAND[m]^2));
                yQuadTOTALS1ETM2 = (yQuadTOTALS1ETM2 + (pifTOTALS1ETM2arrayRAND[m]^2));
                yQuadTOTALS1ETM3 = (yQuadTOTALS1ETM3 + (pifTOTALS1ETM3arrayRAND[m]^2));
                yQuadTOTALS1ETM4 = (yQuadTOTALS1ETM4 + (pifTOTALS1ETM4arrayRAND[m]^2));
                yQuadTOTALS1ETM5 = (yQuadTOTALS1ETM5 + (pifTOTALS1ETM5arrayRAND[m]^2));
                yQuadTOTALS1ETM7 = (yQuadTOTALS1ETM7 + (pifTOTALS1ETM7arrayRAND[m]^2));
    
                xyTOTALS1ETM1 = (xyTOTALS1ETM1 + (pifTOTALS4TM1arrayRAND[m] * pifTOTALS1ETM1arrayRAND[m]));
                xyTOTALS1ETM2 = (xyTOTALS1ETM2 + (pifTOTALS4TM2arrayRAND[m] * pifTOTALS1ETM2arrayRAND[m]));
                xyTOTALS1ETM3 = (xyTOTALS1ETM3 + (pifTOTALS4TM3arrayRAND[m] * pifTOTALS1ETM3arrayRAND[m]));
                xyTOTALS1ETM4 = (xyTOTALS1ETM4 + (pifTOTALS4TM4arrayRAND[m] * pifTOTALS1ETM4arrayRAND[m]));
                xyTOTALS1ETM5 = (xyTOTALS1ETM5 + (pifTOTALS4TM5arrayRAND[m] * pifTOTALS1ETM5arrayRAND[m]));
                xyTOTALS1ETM7 = (xyTOTALS1ETM7 + (pifTOTALS4TM7arrayRAND[m] * pifTOTALS1ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS1ETM1 = xTOTALS1ETM1 / minPifVAL;
            xAritTOTALS1ETM2 = xTOTALS1ETM2 / minPifVAL;
            xAritTOTALS1ETM3 = xTOTALS1ETM3 / minPifVAL;
            xAritTOTALS1ETM4 = xTOTALS1ETM4 / minPifVAL;
            xAritTOTALS1ETM5 = xTOTALS1ETM5 / minPifVAL;
            xAritTOTALS1ETM7 = xTOTALS1ETM7 / minPifVAL;
    
            yAritTOTALS1ETM1 = yTOTALS1ETM1 / minPifVAL;
            yAritTOTALS1ETM2 = yTOTALS1ETM2 / minPifVAL;
            yAritTOTALS1ETM3 = yTOTALS1ETM3 / minPifVAL;
            yAritTOTALS1ETM4 = yTOTALS1ETM4 / minPifVAL;
            yAritTOTALS1ETM5 = yTOTALS1ETM5 / minPifVAL;
            yAritTOTALS1ETM7 = yTOTALS1ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1ETM1 = (xxAritQuadTOTALS1ETM1 + ((pifTOTALS4TM1arrayRAND[n] - xAritTOTALS1ETM1)^2));
                xxAritQuadTOTALS1ETM2 = (xxAritQuadTOTALS1ETM2 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS1ETM2)^2));
                xxAritQuadTOTALS1ETM3 = (xxAritQuadTOTALS1ETM3 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS1ETM3)^2));
                xxAritQuadTOTALS1ETM4 = (xxAritQuadTOTALS1ETM4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS1ETM4)^2));
                xxAritQuadTOTALS1ETM5 = (xxAritQuadTOTALS1ETM5 + ((pifTOTALS4TM5arrayRAND[n] - xAritTOTALS1ETM5)^2));
                xxAritQuadTOTALS1ETM7 = (xxAritQuadTOTALS1ETM7 + ((pifTOTALS4TM7arrayRAND[n] - xAritTOTALS1ETM7)^2));
    
                yyAritQuadTOTALS1ETM1 = (yyAritQuadTOTALS1ETM1 + ((pifTOTALS1ETM1arrayRAND[n] - yAritTOTALS1ETM1)^2));
                yyAritQuadTOTALS1ETM2 = (yyAritQuadTOTALS1ETM2 + ((pifTOTALS1ETM2arrayRAND[n] - yAritTOTALS1ETM2)^2));
                yyAritQuadTOTALS1ETM3 = (yyAritQuadTOTALS1ETM3 + ((pifTOTALS1ETM3arrayRAND[n] - yAritTOTALS1ETM3)^2));
                yyAritQuadTOTALS1ETM4 = (yyAritQuadTOTALS1ETM4 + ((pifTOTALS1ETM4arrayRAND[n] - yAritTOTALS1ETM4)^2));
                yyAritQuadTOTALS1ETM5 = (yyAritQuadTOTALS1ETM5 + ((pifTOTALS1ETM5arrayRAND[n] - yAritTOTALS1ETM5)^2));
                yyAritQuadTOTALS1ETM7 = (yyAritQuadTOTALS1ETM7 + ((pifTOTALS1ETM7arrayRAND[n] - yAritTOTALS1ETM7)^2));
    
                qXYTOTALS1ETM1 = (qXYTOTALS1ETM1 + ((pifTOTALS4TM1arrayRAND[n] - xAritTOTALS1ETM1) * (pifTOTALS1ETM1arrayRAND[n] - yAritTOTALS1ETM1)));
                qXYTOTALS1ETM2 = (qXYTOTALS1ETM2 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS1ETM2) * (pifTOTALS1ETM2arrayRAND[n] - yAritTOTALS1ETM2)));
                qXYTOTALS1ETM3 = (qXYTOTALS1ETM3 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS1ETM3) * (pifTOTALS1ETM3arrayRAND[n] - yAritTOTALS1ETM3)));
                qXYTOTALS1ETM4 = (qXYTOTALS1ETM4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS1ETM4) * (pifTOTALS1ETM4arrayRAND[n] - yAritTOTALS1ETM4)));
                qXYTOTALS1ETM5 = (qXYTOTALS1ETM5 + ((pifTOTALS4TM5arrayRAND[n] - xAritTOTALS1ETM5) * (pifTOTALS1ETM5arrayRAND[n] - yAritTOTALS1ETM5)));
                qXYTOTALS1ETM7 = (qXYTOTALS1ETM7 + ((pifTOTALS4TM7arrayRAND[n] - xAritTOTALS1ETM7) * (pifTOTALS1ETM7arrayRAND[n] - yAritTOTALS1ETM7)));
            }
        
            aTOTALS1ETM1 = (((xQuadTOTALS1ETM1 * yTOTALS1ETM1) - (xTOTALS1ETM1 * xyTOTALS1ETM1)) / ((minPifVAL * xQuadTOTALS1ETM1) - (xTOTALS1ETM1^2)));
            aTOTALS1ETM2 = (((xQuadTOTALS1ETM2 * yTOTALS1ETM2) - (xTOTALS1ETM2 * xyTOTALS1ETM2)) / ((minPifVAL * xQuadTOTALS1ETM2) - (xTOTALS1ETM2^2)));
            aTOTALS1ETM3 = (((xQuadTOTALS1ETM3 * yTOTALS1ETM3) - (xTOTALS1ETM3 * xyTOTALS1ETM3)) / ((minPifVAL * xQuadTOTALS1ETM3) - (xTOTALS1ETM3^2)));
            aTOTALS1ETM4 = (((xQuadTOTALS1ETM4 * yTOTALS1ETM4) - (xTOTALS1ETM4 * xyTOTALS1ETM4)) / ((minPifVAL * xQuadTOTALS1ETM4) - (xTOTALS1ETM4^2)));
            aTOTALS1ETM5 = (((xQuadTOTALS1ETM5 * yTOTALS1ETM5) - (xTOTALS1ETM5 * xyTOTALS1ETM5)) / ((minPifVAL * xQuadTOTALS1ETM5) - (xTOTALS1ETM5^2)));
            aTOTALS1ETM7 = (((xQuadTOTALS1ETM7 * yTOTALS1ETM7) - (xTOTALS1ETM7 * xyTOTALS1ETM7)) / ((minPifVAL * xQuadTOTALS1ETM7) - (xTOTALS1ETM7^2)));
            
            bTOTALS1ETM1 = qXYTOTALS1ETM1 / xxAritQuadTOTALS1ETM1;
            bTOTALS1ETM2 = qXYTOTALS1ETM2 / xxAritQuadTOTALS1ETM2;
            bTOTALS1ETM3 = qXYTOTALS1ETM3 / xxAritQuadTOTALS1ETM3;
            bTOTALS1ETM4 = qXYTOTALS1ETM4 / xxAritQuadTOTALS1ETM4;
            bTOTALS1ETM5 = qXYTOTALS1ETM5 / xxAritQuadTOTALS1ETM5;
            bTOTALS1ETM7 = qXYTOTALS1ETM7 / xxAritQuadTOTALS1ETM7;
    
            rTOTALS1ETM1 = (qXYTOTALS1ETM1 / ((xxAritQuadTOTALS1ETM1 * yyAritQuadTOTALS1ETM1)^0.5));
            rTOTALS1ETM2 = (qXYTOTALS1ETM2 / ((xxAritQuadTOTALS1ETM2 * yyAritQuadTOTALS1ETM2)^0.5));
            rTOTALS1ETM3 = (qXYTOTALS1ETM3 / ((xxAritQuadTOTALS1ETM3 * yyAritQuadTOTALS1ETM3)^0.5));
            rTOTALS1ETM4 = (qXYTOTALS1ETM4 / ((xxAritQuadTOTALS1ETM4 * yyAritQuadTOTALS1ETM4)^0.5));
            rTOTALS1ETM5 = (qXYTOTALS1ETM5 / ((xxAritQuadTOTALS1ETM5 * yyAritQuadTOTALS1ETM5)^0.5));
            rTOTALS1ETM7 = (qXYTOTALS1ETM7 / ((xxAritQuadTOTALS1ETM7 * yyAritQuadTOTALS1ETM7)^0.5));
    
            rQuadTOTALS1ETM1 = ((rTOTALS1ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1ETM2 = ((rTOTALS1ETM2^2) * 100);
            rQuadTOTALS1ETM3 = ((rTOTALS1ETM3^2) * 100);
            rQuadTOTALS1ETM4 = ((rTOTALS1ETM4^2) * 100);
            rQuadTOTALS1ETM5 = ((rTOTALS1ETM5^2) * 100);
            rQuadTOTALS1ETM7 = ((rTOTALS1ETM7^2) * 100);
        
            syxTOTALS1ETM1 = (((yyAritQuadTOTALS1ETM1 - ((qXYTOTALS1ETM1^2) / xxAritQuadTOTALS1ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM2 = (((yyAritQuadTOTALS1ETM2 - ((qXYTOTALS1ETM2^2) / xxAritQuadTOTALS1ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM3 = (((yyAritQuadTOTALS1ETM3 - ((qXYTOTALS1ETM3^2) / xxAritQuadTOTALS1ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM4 = (((yyAritQuadTOTALS1ETM4 - ((qXYTOTALS1ETM4^2) / xxAritQuadTOTALS1ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM5 = (((yyAritQuadTOTALS1ETM5 - ((qXYTOTALS1ETM5^2) / xxAritQuadTOTALS1ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS1ETM7 = (((yyAritQuadTOTALS1ETM7 - ((qXYTOTALS1ETM7^2) / xxAritQuadTOTALS1ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1ETM1 = (((syxTOTALS1ETM1^2) / xxAritQuadTOTALS1ETM1)^0.5);
            bStandTOTALS1ETM2 = (((syxTOTALS1ETM2^2) / xxAritQuadTOTALS1ETM2)^0.5);
            bStandTOTALS1ETM3 = (((syxTOTALS1ETM3^2) / xxAritQuadTOTALS1ETM3)^0.5);
            bStandTOTALS1ETM4 = (((syxTOTALS1ETM4^2) / xxAritQuadTOTALS1ETM4)^0.5);
            bStandTOTALS1ETM5 = (((syxTOTALS1ETM5^2) / xxAritQuadTOTALS1ETM5)^0.5);
            bStandTOTALS1ETM7 = (((syxTOTALS1ETM7^2) / xxAritQuadTOTALS1ETM7)^0.5);
    
            aStandTOTALS1ETM1 = (bStandTOTALS1ETM1 * ((xQuadTOTALS1ETM1 / minPifVAL)^0.5));
            aStandTOTALS1ETM2 = (bStandTOTALS1ETM2 * ((xQuadTOTALS1ETM2 / minPifVAL)^0.5));
            aStandTOTALS1ETM3 = (bStandTOTALS1ETM3 * ((xQuadTOTALS1ETM3 / minPifVAL)^0.5));
            aStandTOTALS1ETM4 = (bStandTOTALS1ETM4 * ((xQuadTOTALS1ETM4 / minPifVAL)^0.5));
            aStandTOTALS1ETM5 = (bStandTOTALS1ETM5 * ((xQuadTOTALS1ETM5 / minPifVAL)^0.5));
            aStandTOTALS1ETM7 = (bStandTOTALS1ETM7 * ((xQuadTOTALS1ETM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM1, bTOTALS1ETM1, rTOTALS1ETM1, rQuadTOTALS1ETM1, aStandTOTALS1ETM1, bStandTOTALS1ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM2, bTOTALS1ETM2, rTOTALS1ETM2, rQuadTOTALS1ETM2, aStandTOTALS1ETM2, bStandTOTALS1ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM3, bTOTALS1ETM3, rTOTALS1ETM3, rQuadTOTALS1ETM3, aStandTOTALS1ETM3, bStandTOTALS1ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM4, bTOTALS1ETM4, rTOTALS1ETM4, rQuadTOTALS1ETM4, aStandTOTALS1ETM4, bStandTOTALS1ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS1ETM5, bTOTALS1ETM5, rTOTALS1ETM5, rQuadTOTALS1ETM5, aStandTOTALS1ETM5, bStandTOTALS1ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS1ETM7, bTOTALS1ETM7, rTOTALS1ETM7, rQuadTOTALS1ETM7, aStandTOTALS1ETM7, bStandTOTALS1ETM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS1ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS1ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS1ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS1ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS1ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS1ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS1ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT1ETM1[i,j] = (aTOTALS1ETM1 + (bTOTALS1ETM1 * REFS1ETM1[i,j]));
                    OUT1ETM2[i,j] = (aTOTALS1ETM2 + (bTOTALS1ETM2 * REFS1ETM2[i,j]));
                    OUT1ETM3[i,j] = (aTOTALS1ETM3 + (bTOTALS1ETM3 * REFS1ETM3[i,j]));
                    OUT1ETM4[i,j] = (aTOTALS1ETM4 + (bTOTALS1ETM4 * REFS1ETM4[i,j]));
                    OUT1ETM5[i,j] = (aTOTALS1ETM5 + (bTOTALS1ETM5 * REFS1ETM5[i,j]));
                    OUT1ETM7[i,j] = (aTOTALS1ETM7 + (bTOTALS1ETM7 * REFS1ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1ETM1);
        	CreatePyramid(OUT1ETM2);
        	CreatePyramid(OUT1ETM3);
        	CreatePyramid(OUT1ETM4);
        	CreatePyramid(OUT1ETM5);
        	CreatePyramid(OUT1ETM7);
        
        	CreateHistogram(OUT1ETM1);
        	CreateHistogram(OUT1ETM2);
        	CreateHistogram(OUT1ETM3);
        	CreateHistogram(OUT1ETM4);
        	CreateHistogram(OUT1ETM5);
        	CreateHistogram(OUT1ETM7);
        
        	CloseRaster(REFS1ETM1);
            CloseRaster(REFS1ETM2);
            CloseRaster(REFS1ETM3);
            CloseRaster(REFS1ETM4);
            CloseRaster(REFS1ETM5);
            CloseRaster(REFS1ETM7);
    
            CloseRaster(OUT1ETM1);
            CloseRaster(OUT1ETM2);
            CloseRaster(OUT1ETM3);
            CloseRaster(OUT1ETM4);
            CloseRaster(OUT1ETM5);
            CloseRaster(OUT1ETM7);
        
        	printf("Scene 1 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors1 == 6 )
            {
            numeric xAritTOTALS1TM1, xAritTOTALS1TM2, xAritTOTALS1TM3, xAritTOTALS1TM4, xAritTOTALS1TM5, xAritTOTALS1TM7;
            numeric yAritTOTALS1TM1, yAritTOTALS1TM2, yAritTOTALS1TM3, yAritTOTALS1TM4, yAritTOTALS1TM5, yAritTOTALS1TM7;
    
            numeric aTOTALS1TM1, aTOTALS1TM2, aTOTALS1TM3, aTOTALS1TM4, aTOTALS1TM5, aTOTALS1TM7;
            numeric bTOTALS1TM1, bTOTALS1TM2, bTOTALS1TM3, bTOTALS1TM4, bTOTALS1TM5, bTOTALS1TM7;
            numeric rTOTALS1TM1, rTOTALS1TM2, rTOTALS1TM3, rTOTALS1TM4, rTOTALS1TM5, rTOTALS1TM7;
            numeric rQuadTOTALS1TM1, rQuadTOTALS1TM2, rQuadTOTALS1TM3, rQuadTOTALS1TM4, rQuadTOTALS1TM5, rQuadTOTALS1TM7;
            numeric syxTOTALS1TM1, syxTOTALS1TM2, syxTOTALS1TM3, syxTOTALS1TM4, syxTOTALS1TM5, syxTOTALS1TM7;
            numeric bStandTOTALS1TM1, bStandTOTALS1TM2, bStandTOTALS1TM3, bStandTOTALS1TM4, bStandTOTALS1TM5, bStandTOTALS1TM7;
            numeric aStandTOTALS1TM1, aStandTOTALS1TM2, aStandTOTALS1TM3, aStandTOTALS1TM4, aStandTOTALS1TM5, aStandTOTALS1TM7;
    
            numeric xTOTALS1TM1 = 0;
            numeric xTOTALS1TM2 = 0;
            numeric xTOTALS1TM3 = 0;
            numeric xTOTALS1TM4 = 0;
            numeric xTOTALS1TM5 = 0;
            numeric xTOTALS1TM7 = 0;
    
            numeric xQuadTOTALS1TM1 = 0;
            numeric xQuadTOTALS1TM2 = 0;
            numeric xQuadTOTALS1TM3 = 0;
            numeric xQuadTOTALS1TM4 = 0;
            numeric xQuadTOTALS1TM5 = 0;
            numeric xQuadTOTALS1TM7 = 0;
    
            numeric yTOTALS1TM1 = 0;
            numeric yTOTALS1TM2 = 0;
            numeric yTOTALS1TM3 = 0;
            numeric yTOTALS1TM4 = 0;
            numeric yTOTALS1TM5 = 0;
            numeric yTOTALS1TM7 = 0;
    
            numeric yQuadTOTALS1TM1 = 0;
            numeric yQuadTOTALS1TM2 = 0;
            numeric yQuadTOTALS1TM3 = 0;
            numeric yQuadTOTALS1TM4 = 0;
            numeric yQuadTOTALS1TM5 = 0;
            numeric yQuadTOTALS1TM7 = 0;
    
            numeric xyTOTALS1TM1 = 0;
            numeric xyTOTALS1TM2 = 0;
            numeric xyTOTALS1TM3 = 0;
            numeric xyTOTALS1TM4 = 0;
            numeric xyTOTALS1TM5 = 0;
            numeric xyTOTALS1TM7 = 0;
    
            numeric xxAritQuadTOTALS1TM1 = 0;
            numeric xxAritQuadTOTALS1TM2 = 0;
            numeric xxAritQuadTOTALS1TM3 = 0;
            numeric xxAritQuadTOTALS1TM4 = 0;
            numeric xxAritQuadTOTALS1TM5 = 0;
            numeric xxAritQuadTOTALS1TM7 = 0;
    
            numeric yyAritQuadTOTALS1TM1 = 0;
            numeric yyAritQuadTOTALS1TM2 = 0;
            numeric yyAritQuadTOTALS1TM3 = 0;
            numeric yyAritQuadTOTALS1TM4 = 0;
            numeric yyAritQuadTOTALS1TM5 = 0;
            numeric yyAritQuadTOTALS1TM7 = 0;
    
            numeric qXYTOTALS1TM1 = 0;
            numeric qXYTOTALS1TM2 = 0;
            numeric qXYTOTALS1TM3 = 0;
            numeric qXYTOTALS1TM4 = 0;
            numeric qXYTOTALS1TM5 = 0;
            numeric qXYTOTALS1TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS1TM1 = xTOTALS1TM1 + pifTOTALS4TM1arrayRAND[m];
                xTOTALS1TM2 = xTOTALS1TM2 + pifTOTALS4TM2arrayRAND[m];
                xTOTALS1TM3 = xTOTALS1TM3 + pifTOTALS4TM3arrayRAND[m];
                xTOTALS1TM4 = xTOTALS1TM4 + pifTOTALS4TM4arrayRAND[m];
                xTOTALS1TM5 = xTOTALS1TM5 + pifTOTALS4TM5arrayRAND[m];
                xTOTALS1TM7 = xTOTALS1TM7 + pifTOTALS4TM7arrayRAND[m];
    
                xQuadTOTALS1TM1 = (xQuadTOTALS1TM1 + (pifTOTALS4TM1arrayRAND[m]^2));
                xQuadTOTALS1TM2 = (xQuadTOTALS1TM2 + (pifTOTALS4TM2arrayRAND[m]^2));
                xQuadTOTALS1TM3 = (xQuadTOTALS1TM3 + (pifTOTALS4TM3arrayRAND[m]^2));
                xQuadTOTALS1TM4 = (xQuadTOTALS1TM4 + (pifTOTALS4TM4arrayRAND[m]^2));
                xQuadTOTALS1TM5 = (xQuadTOTALS1TM5 + (pifTOTALS4TM5arrayRAND[m]^2));
                xQuadTOTALS1TM7 = (xQuadTOTALS1TM7 + (pifTOTALS4TM7arrayRAND[m]^2));
    
                yTOTALS1TM1 = yTOTALS1TM1 + pifTOTALS1TM1arrayRAND[m];
                yTOTALS1TM2 = yTOTALS1TM2 + pifTOTALS1TM2arrayRAND[m];
                yTOTALS1TM3 = yTOTALS1TM3 + pifTOTALS1TM3arrayRAND[m];
                yTOTALS1TM4 = yTOTALS1TM4 + pifTOTALS1TM4arrayRAND[m];
                yTOTALS1TM5 = yTOTALS1TM5 + pifTOTALS1TM5arrayRAND[m];
                yTOTALS1TM7 = yTOTALS1TM7 + pifTOTALS1TM7arrayRAND[m];
                
                yQuadTOTALS1TM1 = (yQuadTOTALS1TM1 + (pifTOTALS1TM1arrayRAND[m]^2));
                yQuadTOTALS1TM2 = (yQuadTOTALS1TM2 + (pifTOTALS1TM2arrayRAND[m]^2));
                yQuadTOTALS1TM3 = (yQuadTOTALS1TM3 + (pifTOTALS1TM3arrayRAND[m]^2));
                yQuadTOTALS1TM4 = (yQuadTOTALS1TM4 + (pifTOTALS1TM4arrayRAND[m]^2));
                yQuadTOTALS1TM5 = (yQuadTOTALS1TM5 + (pifTOTALS1TM5arrayRAND[m]^2));
                yQuadTOTALS1TM7 = (yQuadTOTALS1TM7 + (pifTOTALS1TM7arrayRAND[m]^2));
    
                xyTOTALS1TM1 = (xyTOTALS1TM1 + (pifTOTALS4TM1arrayRAND[m] * pifTOTALS1TM1arrayRAND[m]));
                xyTOTALS1TM2 = (xyTOTALS1TM2 + (pifTOTALS4TM2arrayRAND[m] * pifTOTALS1TM2arrayRAND[m]));
                xyTOTALS1TM3 = (xyTOTALS1TM3 + (pifTOTALS4TM3arrayRAND[m] * pifTOTALS1TM3arrayRAND[m]));
                xyTOTALS1TM4 = (xyTOTALS1TM4 + (pifTOTALS4TM4arrayRAND[m] * pifTOTALS1TM4arrayRAND[m]));
                xyTOTALS1TM5 = (xyTOTALS1TM5 + (pifTOTALS4TM5arrayRAND[m] * pifTOTALS1TM5arrayRAND[m]));
                xyTOTALS1TM7 = (xyTOTALS1TM7 + (pifTOTALS4TM7arrayRAND[m] * pifTOTALS1TM7arrayRAND[m]));
            }	
            
            xAritTOTALS1TM1 = xTOTALS1TM1 / minPifVAL;
            xAritTOTALS1TM2 = xTOTALS1TM2 / minPifVAL;
            xAritTOTALS1TM3 = xTOTALS1TM3 / minPifVAL;
            xAritTOTALS1TM4 = xTOTALS1TM4 / minPifVAL;
            xAritTOTALS1TM5 = xTOTALS1TM5 / minPifVAL;
            xAritTOTALS1TM7 = xTOTALS1TM7 / minPifVAL;
    
            yAritTOTALS1TM1 = yTOTALS1TM1 / minPifVAL;
            yAritTOTALS1TM2 = yTOTALS1TM2 / minPifVAL;
            yAritTOTALS1TM3 = yTOTALS1TM3 / minPifVAL;
            yAritTOTALS1TM4 = yTOTALS1TM4 / minPifVAL;
            yAritTOTALS1TM5 = yTOTALS1TM5 / minPifVAL;
            yAritTOTALS1TM7 = yTOTALS1TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1TM1 = (xxAritQuadTOTALS1TM1 + ((pifTOTALS4TM1arrayRAND[n] - xAritTOTALS1TM1)^2));
                xxAritQuadTOTALS1TM2 = (xxAritQuadTOTALS1TM2 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS1TM2)^2));
                xxAritQuadTOTALS1TM3 = (xxAritQuadTOTALS1TM3 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS1TM3)^2));
                xxAritQuadTOTALS1TM4 = (xxAritQuadTOTALS1TM4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS1TM4)^2));
                xxAritQuadTOTALS1TM5 = (xxAritQuadTOTALS1TM5 + ((pifTOTALS4TM5arrayRAND[n] - xAritTOTALS1TM5)^2));
                xxAritQuadTOTALS1TM7 = (xxAritQuadTOTALS1TM7 + ((pifTOTALS4TM7arrayRAND[n] - xAritTOTALS1TM7)^2));
    
                yyAritQuadTOTALS1TM1 = (yyAritQuadTOTALS1TM1 + ((pifTOTALS1TM1arrayRAND[n] - yAritTOTALS1TM1)^2));
                yyAritQuadTOTALS1TM2 = (yyAritQuadTOTALS1TM2 + ((pifTOTALS1TM2arrayRAND[n] - yAritTOTALS1TM2)^2));
                yyAritQuadTOTALS1TM3 = (yyAritQuadTOTALS1TM3 + ((pifTOTALS1TM3arrayRAND[n] - yAritTOTALS1TM3)^2));
                yyAritQuadTOTALS1TM4 = (yyAritQuadTOTALS1TM4 + ((pifTOTALS1TM4arrayRAND[n] - yAritTOTALS1TM4)^2));
                yyAritQuadTOTALS1TM5 = (yyAritQuadTOTALS1TM5 + ((pifTOTALS1TM5arrayRAND[n] - yAritTOTALS1TM5)^2));
                yyAritQuadTOTALS1TM7 = (yyAritQuadTOTALS1TM7 + ((pifTOTALS1TM7arrayRAND[n] - yAritTOTALS1TM7)^2));
    
                qXYTOTALS1TM1 = (qXYTOTALS1TM1 + ((pifTOTALS4TM1arrayRAND[n] - xAritTOTALS1TM1) * (pifTOTALS1TM1arrayRAND[n] - yAritTOTALS1TM1)));
                qXYTOTALS1TM2 = (qXYTOTALS1TM2 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS1TM2) * (pifTOTALS1TM2arrayRAND[n] - yAritTOTALS1TM2)));
                qXYTOTALS1TM3 = (qXYTOTALS1TM3 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS1TM3) * (pifTOTALS1TM3arrayRAND[n] - yAritTOTALS1TM3)));
                qXYTOTALS1TM4 = (qXYTOTALS1TM4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS1TM4) * (pifTOTALS1TM4arrayRAND[n] - yAritTOTALS1TM4)));
                qXYTOTALS1TM5 = (qXYTOTALS1TM5 + ((pifTOTALS4TM5arrayRAND[n] - xAritTOTALS1TM5) * (pifTOTALS1TM5arrayRAND[n] - yAritTOTALS1TM5)));
                qXYTOTALS1TM7 = (qXYTOTALS1TM7 + ((pifTOTALS4TM7arrayRAND[n] - xAritTOTALS1TM7) * (pifTOTALS1TM7arrayRAND[n] - yAritTOTALS1TM7)));
            }
        
            aTOTALS1TM1 = (((xQuadTOTALS1TM1 * yTOTALS1TM1) - (xTOTALS1TM1 * xyTOTALS1TM1)) / ((minPifVAL * xQuadTOTALS1TM1) - (xTOTALS1TM1^2)));
            aTOTALS1TM2 = (((xQuadTOTALS1TM2 * yTOTALS1TM2) - (xTOTALS1TM2 * xyTOTALS1TM2)) / ((minPifVAL * xQuadTOTALS1TM2) - (xTOTALS1TM2^2)));
            aTOTALS1TM3 = (((xQuadTOTALS1TM3 * yTOTALS1TM3) - (xTOTALS1TM3 * xyTOTALS1TM3)) / ((minPifVAL * xQuadTOTALS1TM3) - (xTOTALS1TM3^2)));
            aTOTALS1TM4 = (((xQuadTOTALS1TM4 * yTOTALS1TM4) - (xTOTALS1TM4 * xyTOTALS1TM4)) / ((minPifVAL * xQuadTOTALS1TM4) - (xTOTALS1TM4^2)));
            aTOTALS1TM5 = (((xQuadTOTALS1TM5 * yTOTALS1TM5) - (xTOTALS1TM5 * xyTOTALS1TM5)) / ((minPifVAL * xQuadTOTALS1TM5) - (xTOTALS1TM5^2)));
            aTOTALS1TM7 = (((xQuadTOTALS1TM7 * yTOTALS1TM7) - (xTOTALS1TM7 * xyTOTALS1TM7)) / ((minPifVAL * xQuadTOTALS1TM7) - (xTOTALS1TM7^2)));
            
            bTOTALS1TM1 = qXYTOTALS1TM1 / xxAritQuadTOTALS1TM1;
            bTOTALS1TM2 = qXYTOTALS1TM2 / xxAritQuadTOTALS1TM2;
            bTOTALS1TM3 = qXYTOTALS1TM3 / xxAritQuadTOTALS1TM3;
            bTOTALS1TM4 = qXYTOTALS1TM4 / xxAritQuadTOTALS1TM4;
            bTOTALS1TM5 = qXYTOTALS1TM5 / xxAritQuadTOTALS1TM5;
            bTOTALS1TM7 = qXYTOTALS1TM7 / xxAritQuadTOTALS1TM7;
    
            rTOTALS1TM1 = (qXYTOTALS1TM1 / ((xxAritQuadTOTALS1TM1 * yyAritQuadTOTALS1TM1)^0.5));
            rTOTALS1TM2 = (qXYTOTALS1TM2 / ((xxAritQuadTOTALS1TM2 * yyAritQuadTOTALS1TM2)^0.5));
            rTOTALS1TM3 = (qXYTOTALS1TM3 / ((xxAritQuadTOTALS1TM3 * yyAritQuadTOTALS1TM3)^0.5));
            rTOTALS1TM4 = (qXYTOTALS1TM4 / ((xxAritQuadTOTALS1TM4 * yyAritQuadTOTALS1TM4)^0.5));
            rTOTALS1TM5 = (qXYTOTALS1TM5 / ((xxAritQuadTOTALS1TM5 * yyAritQuadTOTALS1TM5)^0.5));
            rTOTALS1TM7 = (qXYTOTALS1TM7 / ((xxAritQuadTOTALS1TM7 * yyAritQuadTOTALS1TM7)^0.5));
    
            rQuadTOTALS1TM1 = ((rTOTALS1TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1TM2 = ((rTOTALS1TM2^2) * 100);
            rQuadTOTALS1TM3 = ((rTOTALS1TM3^2) * 100);
            rQuadTOTALS1TM4 = ((rTOTALS1TM4^2) * 100);
            rQuadTOTALS1TM5 = ((rTOTALS1TM5^2) * 100);
            rQuadTOTALS1TM7 = ((rTOTALS1TM7^2) * 100);
        
            syxTOTALS1TM1 = (((yyAritQuadTOTALS1TM1 - ((qXYTOTALS1TM1^2) / xxAritQuadTOTALS1TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM2 = (((yyAritQuadTOTALS1TM2 - ((qXYTOTALS1TM2^2) / xxAritQuadTOTALS1TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM3 = (((yyAritQuadTOTALS1TM3 - ((qXYTOTALS1TM3^2) / xxAritQuadTOTALS1TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM4 = (((yyAritQuadTOTALS1TM4 - ((qXYTOTALS1TM4^2) / xxAritQuadTOTALS1TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM5 = (((yyAritQuadTOTALS1TM5 - ((qXYTOTALS1TM5^2) / xxAritQuadTOTALS1TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS1TM7 = (((yyAritQuadTOTALS1TM7 - ((qXYTOTALS1TM7^2) / xxAritQuadTOTALS1TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1TM1 = (((syxTOTALS1TM1^2) / xxAritQuadTOTALS1TM1)^0.5);
            bStandTOTALS1TM2 = (((syxTOTALS1TM2^2) / xxAritQuadTOTALS1TM2)^0.5);
            bStandTOTALS1TM3 = (((syxTOTALS1TM3^2) / xxAritQuadTOTALS1TM3)^0.5);
            bStandTOTALS1TM4 = (((syxTOTALS1TM4^2) / xxAritQuadTOTALS1TM4)^0.5);
            bStandTOTALS1TM5 = (((syxTOTALS1TM5^2) / xxAritQuadTOTALS1TM5)^0.5);
            bStandTOTALS1TM7 = (((syxTOTALS1TM7^2) / xxAritQuadTOTALS1TM7)^0.5);
    
            aStandTOTALS1TM1 = (bStandTOTALS1TM1 * ((xQuadTOTALS1TM1 / minPifVAL)^0.5));
            aStandTOTALS1TM2 = (bStandTOTALS1TM2 * ((xQuadTOTALS1TM2 / minPifVAL)^0.5));
            aStandTOTALS1TM3 = (bStandTOTALS1TM3 * ((xQuadTOTALS1TM3 / minPifVAL)^0.5));
            aStandTOTALS1TM4 = (bStandTOTALS1TM4 * ((xQuadTOTALS1TM4 / minPifVAL)^0.5));
            aStandTOTALS1TM5 = (bStandTOTALS1TM5 * ((xQuadTOTALS1TM5 / minPifVAL)^0.5));
            aStandTOTALS1TM7 = (bStandTOTALS1TM7 * ((xQuadTOTALS1TM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM1, bTOTALS1TM1, rTOTALS1TM1, rQuadTOTALS1TM1, aStandTOTALS1TM1, bStandTOTALS1TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM2, bTOTALS1TM2, rTOTALS1TM2, rQuadTOTALS1TM2, aStandTOTALS1TM2, bStandTOTALS1TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM3, bTOTALS1TM3, rTOTALS1TM3, rQuadTOTALS1TM3, aStandTOTALS1TM3, bStandTOTALS1TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM4, bTOTALS1TM4, rTOTALS1TM4, rQuadTOTALS1TM4, aStandTOTALS1TM4, bStandTOTALS1TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS1TM5, bTOTALS1TM5, rTOTALS1TM5, rQuadTOTALS1TM5, aStandTOTALS1TM5, bStandTOTALS1TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS1TM7, bTOTALS1TM7, rTOTALS1TM7, rQuadTOTALS1TM7, aStandTOTALS1TM7, bStandTOTALS1TM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS1TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS1TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS1TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS1TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS1TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS1TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS1TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT1TM1[i,j] = (aTOTALS1TM1 + (bTOTALS1TM1 * REFS1TM1[i,j]));
                    OUT1TM2[i,j] = (aTOTALS1TM2 + (bTOTALS1TM2 * REFS1TM2[i,j]));
                    OUT1TM3[i,j] = (aTOTALS1TM3 + (bTOTALS1TM3 * REFS1TM3[i,j]));
                    OUT1TM4[i,j] = (aTOTALS1TM4 + (bTOTALS1TM4 * REFS1TM4[i,j]));
                    OUT1TM5[i,j] = (aTOTALS1TM5 + (bTOTALS1TM5 * REFS1TM5[i,j]));
                    OUT1TM7[i,j] = (aTOTALS1TM7 + (bTOTALS1TM7 * REFS1TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1TM1);
        	CreatePyramid(OUT1TM2);
        	CreatePyramid(OUT1TM3);
        	CreatePyramid(OUT1TM4);
        	CreatePyramid(OUT1TM5);
        	CreatePyramid(OUT1TM7);
        
        	CreateHistogram(OUT1TM1);
        	CreateHistogram(OUT1TM2);
        	CreateHistogram(OUT1TM3);
        	CreateHistogram(OUT1TM4);
        	CreateHistogram(OUT1TM5);
        	CreateHistogram(OUT1TM7);
        
        	CloseRaster(REFS1TM1);
            CloseRaster(REFS1TM2);
            CloseRaster(REFS1TM3);
            CloseRaster(REFS1TM4);
            CloseRaster(REFS1TM5);
            CloseRaster(REFS1TM7);
    
            CloseRaster(OUT1TM1);
            CloseRaster(OUT1TM2);
            CloseRaster(OUT1TM3);
            CloseRaster(OUT1TM4);
            CloseRaster(OUT1TM5);
            CloseRaster(OUT1TM7);
        
        	printf("Scene 1 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS1MSS1, xAritTOTALS1MSS2, xAritTOTALS1MSS4;
            numeric yAritTOTALS1MSS1, yAritTOTALS1MSS2, yAritTOTALS1MSS4;
    
            numeric aTOTALS1MSS1, aTOTALS1MSS2, aTOTALS1MSS4;
            numeric bTOTALS1MSS1, bTOTALS1MSS2, bTOTALS1MSS4;
            numeric rTOTALS1MSS1, rTOTALS1MSS2, rTOTALS1MSS4;
            numeric rQuadTOTALS1MSS1, rQuadTOTALS1MSS2, rQuadTOTALS1MSS4;
            numeric syxTOTALS1MSS1, syxTOTALS1MSS2, syxTOTALS1MSS4;
            numeric bStandTOTALS1MSS1, bStandTOTALS1MSS2, bStandTOTALS1MSS4;
            numeric aStandTOTALS1MSS1, aStandTOTALS1MSS2, aStandTOTALS1MSS4;
    
            numeric xTOTALS1MSS1 = 0;
            numeric xTOTALS1MSS2 = 0;
            numeric xTOTALS1MSS4 = 0;
    
            numeric xQuadTOTALS1MSS1 = 0;
            numeric xQuadTOTALS1MSS2 = 0;
            numeric xQuadTOTALS1MSS4 = 0;
    
            numeric yTOTALS1MSS1 = 0;
            numeric yTOTALS1MSS2 = 0;
            numeric yTOTALS1MSS4 = 0;
    
            numeric yQuadTOTALS1MSS1 = 0;
            numeric yQuadTOTALS1MSS2 = 0;
            numeric yQuadTOTALS1MSS4 = 0;
    
            numeric xyTOTALS1MSS1 = 0;
            numeric xyTOTALS1MSS2 = 0;
            numeric xyTOTALS1MSS4 = 0;
    
            numeric xxAritQuadTOTALS1MSS1 = 0;
            numeric xxAritQuadTOTALS1MSS2 = 0;
            numeric xxAritQuadTOTALS1MSS4 = 0;
    
            numeric yyAritQuadTOTALS1MSS1 = 0;
            numeric yyAritQuadTOTALS1MSS2 = 0;
            numeric yyAritQuadTOTALS1MSS4 = 0;
    
            numeric qXYTOTALS1MSS1 = 0;
            numeric qXYTOTALS1MSS2 = 0;
            numeric qXYTOTALS1MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS1MSS1 = xTOTALS1MSS1 + pifTOTALS4TM2arrayRAND[m];
                xTOTALS1MSS2 = xTOTALS1MSS2 + pifTOTALS4TM3arrayRAND[m];
                xTOTALS1MSS4 = xTOTALS1MSS4 + pifTOTALS4TM4arrayRAND[m];
    
                xQuadTOTALS1MSS1 = (xQuadTOTALS1MSS1 + (pifTOTALS4TM2arrayRAND[m]^2));
                xQuadTOTALS1MSS2 = (xQuadTOTALS1MSS2 + (pifTOTALS4TM3arrayRAND[m]^2));
                xQuadTOTALS1MSS4 = (xQuadTOTALS1MSS4 + (pifTOTALS4TM4arrayRAND[m]^2));
    
                yTOTALS1MSS1 = yTOTALS1MSS1 + pifTOTALS1MSS1arrayRAND[m];
                yTOTALS1MSS2 = yTOTALS1MSS2 + pifTOTALS1MSS2arrayRAND[m];
                yTOTALS1MSS4 = yTOTALS1MSS4 + pifTOTALS1MSS4arrayRAND[m];
                
                yQuadTOTALS1MSS1 = (yQuadTOTALS1MSS1 + (pifTOTALS1MSS1arrayRAND[m]^2));
                yQuadTOTALS1MSS2 = (yQuadTOTALS1MSS2 + (pifTOTALS1MSS2arrayRAND[m]^2));
                yQuadTOTALS1MSS4 = (yQuadTOTALS1MSS4 + (pifTOTALS1MSS4arrayRAND[m]^2));
    
                xyTOTALS1MSS1 = (xyTOTALS1MSS1 + (pifTOTALS4TM2arrayRAND[m] * pifTOTALS1MSS1arrayRAND[m]));
                xyTOTALS1MSS2 = (xyTOTALS1MSS2 + (pifTOTALS4TM3arrayRAND[m] * pifTOTALS1MSS2arrayRAND[m]));
                xyTOTALS1MSS4 = (xyTOTALS1MSS4 + (pifTOTALS4TM4arrayRAND[m] * pifTOTALS1MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS1MSS1 = xTOTALS1MSS1 / minPifVAL;
            xAritTOTALS1MSS2 = xTOTALS1MSS2 / minPifVAL;
            xAritTOTALS1MSS4 = xTOTALS1MSS4 / minPifVAL;
    
            yAritTOTALS1MSS1 = yTOTALS1MSS1 / minPifVAL;
            yAritTOTALS1MSS2 = yTOTALS1MSS2 / minPifVAL;
            yAritTOTALS1MSS4 = yTOTALS1MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1MSS1 = (xxAritQuadTOTALS1MSS1 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS1MSS1)^2));
                xxAritQuadTOTALS1MSS2 = (xxAritQuadTOTALS1MSS2 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS1MSS2)^2));
                xxAritQuadTOTALS1MSS4 = (xxAritQuadTOTALS1MSS4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS1MSS4)^2));
    
                yyAritQuadTOTALS1MSS1 = (yyAritQuadTOTALS1MSS1 + ((pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)^2));
                yyAritQuadTOTALS1MSS2 = (yyAritQuadTOTALS1MSS2 + ((pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)^2));
                yyAritQuadTOTALS1MSS4 = (yyAritQuadTOTALS1MSS4 + ((pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)^2));
    
                qXYTOTALS1MSS1 = (qXYTOTALS1MSS1 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS1MSS1) * (pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)));
                qXYTOTALS1MSS2 = (qXYTOTALS1MSS2 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS1MSS2) * (pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)));
                qXYTOTALS1MSS4 = (qXYTOTALS1MSS4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS1MSS4) * (pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)));
            }
        
            aTOTALS1MSS1 = (((xQuadTOTALS1MSS1 * yTOTALS1MSS1) - (xTOTALS1MSS1 * xyTOTALS1MSS1)) / ((minPifVAL * xQuadTOTALS1MSS1) - (xTOTALS1MSS1^2)));
            aTOTALS1MSS2 = (((xQuadTOTALS1MSS2 * yTOTALS1MSS2) - (xTOTALS1MSS2 * xyTOTALS1MSS2)) / ((minPifVAL * xQuadTOTALS1MSS2) - (xTOTALS1MSS2^2)));
            aTOTALS1MSS4 = (((xQuadTOTALS1MSS4 * yTOTALS1MSS4) - (xTOTALS1MSS4 * xyTOTALS1MSS4)) / ((minPifVAL * xQuadTOTALS1MSS4) - (xTOTALS1MSS4^2)));
            
            bTOTALS1MSS1 = qXYTOTALS1MSS1 / xxAritQuadTOTALS1MSS1;
            bTOTALS1MSS2 = qXYTOTALS1MSS2 / xxAritQuadTOTALS1MSS2;
            bTOTALS1MSS4 = qXYTOTALS1MSS4 / xxAritQuadTOTALS1MSS4;
    
            rTOTALS1MSS1 = (qXYTOTALS1MSS1 / ((xxAritQuadTOTALS1MSS1 * yyAritQuadTOTALS1MSS1)^0.5));
            rTOTALS1MSS2 = (qXYTOTALS1MSS2 / ((xxAritQuadTOTALS1MSS2 * yyAritQuadTOTALS1MSS2)^0.5));
            rTOTALS1MSS4 = (qXYTOTALS1MSS4 / ((xxAritQuadTOTALS1MSS4 * yyAritQuadTOTALS1MSS4)^0.5));
    
            rQuadTOTALS1MSS1 = ((rTOTALS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1MSS2 = ((rTOTALS1MSS2^2) * 100);
            rQuadTOTALS1MSS4 = ((rTOTALS1MSS4^2) * 100);
        
            syxTOTALS1MSS1 = (((yyAritQuadTOTALS1MSS1 - ((qXYTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS2 = (((yyAritQuadTOTALS1MSS2 - ((qXYTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS4 = (((yyAritQuadTOTALS1MSS4 - ((qXYTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1MSS1 = (((syxTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)^0.5);
            bStandTOTALS1MSS2 = (((syxTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)^0.5);
            bStandTOTALS1MSS4 = (((syxTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)^0.5);
    
            aStandTOTALS1MSS1 = (bStandTOTALS1MSS1 * ((xQuadTOTALS1MSS1 / minPifVAL)^0.5));
            aStandTOTALS1MSS2 = (bStandTOTALS1MSS2 * ((xQuadTOTALS1MSS2 / minPifVAL)^0.5));
            aStandTOTALS1MSS4 = (bStandTOTALS1MSS4 * ((xQuadTOTALS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS1, bTOTALS1MSS1, rTOTALS1MSS1, rQuadTOTALS1MSS1, aStandTOTALS1MSS1, bStandTOTALS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS2, bTOTALS1MSS2, rTOTALS1MSS2, rQuadTOTALS1MSS2, aStandTOTALS1MSS2, bStandTOTALS1MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS4, bTOTALS1MSS4, rTOTALS1MSS4, rQuadTOTALS1MSS4, aStandTOTALS1MSS4, bStandTOTALS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS1MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS1MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS1MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aTOTALS1MSS1 + (bTOTALS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aTOTALS1MSS2 + (bTOTALS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = REFS1MSS3[i,j];
                    OUT1MSS4[i,j] = (aTOTALS1MSS4 + (bTOTALS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT1MSS1);
        	CreatePyramid(OUT1MSS2);
        	CreatePyramid(OUT1MSS3);
        	CreatePyramid(OUT1MSS4);
        
        	CreateHistogram(OUT1MSS1);
        	CreateHistogram(OUT1MSS2);
        	CreateHistogram(OUT1MSS3);
        	CreateHistogram(OUT1MSS4);
        
        	CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors2 == 7 )
            {
            numeric xAritTOTALS2ETM1, xAritTOTALS2ETM2, xAritTOTALS2ETM3, xAritTOTALS2ETM4, xAritTOTALS2ETM5, xAritTOTALS2ETM7;
            numeric yAritTOTALS2ETM1, yAritTOTALS2ETM2, yAritTOTALS2ETM3, yAritTOTALS2ETM4, yAritTOTALS2ETM5, yAritTOTALS2ETM7;
    
            numeric aTOTALS2ETM1, aTOTALS2ETM2, aTOTALS2ETM3, aTOTALS2ETM4, aTOTALS2ETM5, aTOTALS2ETM7;
            numeric bTOTALS2ETM1, bTOTALS2ETM2, bTOTALS2ETM3, bTOTALS2ETM4, bTOTALS2ETM5, bTOTALS2ETM7;
            numeric rTOTALS2ETM1, rTOTALS2ETM2, rTOTALS2ETM3, rTOTALS2ETM4, rTOTALS2ETM5, rTOTALS2ETM7;
            numeric rQuadTOTALS2ETM1, rQuadTOTALS2ETM2, rQuadTOTALS2ETM3, rQuadTOTALS2ETM4, rQuadTOTALS2ETM5, rQuadTOTALS2ETM7;
            numeric syxTOTALS2ETM1, syxTOTALS2ETM2, syxTOTALS2ETM3, syxTOTALS2ETM4, syxTOTALS2ETM5, syxTOTALS2ETM7;
            numeric bStandTOTALS2ETM1, bStandTOTALS2ETM2, bStandTOTALS2ETM3, bStandTOTALS2ETM4, bStandTOTALS2ETM5, bStandTOTALS2ETM7;
            numeric aStandTOTALS2ETM1, aStandTOTALS2ETM2, aStandTOTALS2ETM3, aStandTOTALS2ETM4, aStandTOTALS2ETM5, aStandTOTALS2ETM7;
    
            numeric xTOTALS2ETM1 = 0;
            numeric xTOTALS2ETM2 = 0;
            numeric xTOTALS2ETM3 = 0;
            numeric xTOTALS2ETM4 = 0;
            numeric xTOTALS2ETM5 = 0;
            numeric xTOTALS2ETM7 = 0;
    
            numeric xQuadTOTALS2ETM1 = 0;
            numeric xQuadTOTALS2ETM2 = 0;
            numeric xQuadTOTALS2ETM3 = 0;
            numeric xQuadTOTALS2ETM4 = 0;
            numeric xQuadTOTALS2ETM5 = 0;
            numeric xQuadTOTALS2ETM7 = 0;
    
            numeric yTOTALS2ETM1 = 0;
            numeric yTOTALS2ETM2 = 0;
            numeric yTOTALS2ETM3 = 0;
            numeric yTOTALS2ETM4 = 0;
            numeric yTOTALS2ETM5 = 0;
            numeric yTOTALS2ETM7 = 0;
    
            numeric yQuadTOTALS2ETM1 = 0;
            numeric yQuadTOTALS2ETM2 = 0;
            numeric yQuadTOTALS2ETM3 = 0;
            numeric yQuadTOTALS2ETM4 = 0;
            numeric yQuadTOTALS2ETM5 = 0;
            numeric yQuadTOTALS2ETM7 = 0;
    
            numeric xyTOTALS2ETM1 = 0;
            numeric xyTOTALS2ETM2 = 0;
            numeric xyTOTALS2ETM3 = 0;
            numeric xyTOTALS2ETM4 = 0;
            numeric xyTOTALS2ETM5 = 0;
            numeric xyTOTALS2ETM7 = 0;
    
            numeric xxAritQuadTOTALS2ETM1 = 0;
            numeric xxAritQuadTOTALS2ETM2 = 0;
            numeric xxAritQuadTOTALS2ETM3 = 0;
            numeric xxAritQuadTOTALS2ETM4 = 0;
            numeric xxAritQuadTOTALS2ETM5 = 0;
            numeric xxAritQuadTOTALS2ETM7 = 0;
    
            numeric yyAritQuadTOTALS2ETM1 = 0;
            numeric yyAritQuadTOTALS2ETM2 = 0;
            numeric yyAritQuadTOTALS2ETM3 = 0;
            numeric yyAritQuadTOTALS2ETM4 = 0;
            numeric yyAritQuadTOTALS2ETM5 = 0;
            numeric yyAritQuadTOTALS2ETM7 = 0;
    
            numeric qXYTOTALS2ETM1 = 0;
            numeric qXYTOTALS2ETM2 = 0;
            numeric qXYTOTALS2ETM3 = 0;
            numeric qXYTOTALS2ETM4 = 0;
            numeric qXYTOTALS2ETM5 = 0;
            numeric qXYTOTALS2ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS2ETM1 = xTOTALS2ETM1 + pifTOTALS4TM1arrayRAND[m];
                xTOTALS2ETM2 = xTOTALS2ETM2 + pifTOTALS4TM2arrayRAND[m];
                xTOTALS2ETM3 = xTOTALS2ETM3 + pifTOTALS4TM3arrayRAND[m];
                xTOTALS2ETM4 = xTOTALS2ETM4 + pifTOTALS4TM4arrayRAND[m];
                xTOTALS2ETM5 = xTOTALS2ETM5 + pifTOTALS4TM5arrayRAND[m];
                xTOTALS2ETM7 = xTOTALS2ETM7 + pifTOTALS4TM7arrayRAND[m];
    
                xQuadTOTALS2ETM1 = (xQuadTOTALS2ETM1 + (pifTOTALS4TM1arrayRAND[m]^2));
                xQuadTOTALS2ETM2 = (xQuadTOTALS2ETM2 + (pifTOTALS4TM2arrayRAND[m]^2));
                xQuadTOTALS2ETM3 = (xQuadTOTALS2ETM3 + (pifTOTALS4TM3arrayRAND[m]^2));
                xQuadTOTALS2ETM4 = (xQuadTOTALS2ETM4 + (pifTOTALS4TM4arrayRAND[m]^2));
                xQuadTOTALS2ETM5 = (xQuadTOTALS2ETM5 + (pifTOTALS4TM5arrayRAND[m]^2));
                xQuadTOTALS2ETM7 = (xQuadTOTALS2ETM7 + (pifTOTALS4TM7arrayRAND[m]^2));
    
                yTOTALS2ETM1 = yTOTALS2ETM1 + pifTOTALS2ETM1arrayRAND[m];
                yTOTALS2ETM2 = yTOTALS2ETM2 + pifTOTALS2ETM2arrayRAND[m];
                yTOTALS2ETM3 = yTOTALS2ETM3 + pifTOTALS2ETM3arrayRAND[m];
                yTOTALS2ETM4 = yTOTALS2ETM4 + pifTOTALS2ETM4arrayRAND[m];
                yTOTALS2ETM5 = yTOTALS2ETM5 + pifTOTALS2ETM5arrayRAND[m];
                yTOTALS2ETM7 = yTOTALS2ETM7 + pifTOTALS2ETM7arrayRAND[m];
                
                yQuadTOTALS2ETM1 = (yQuadTOTALS2ETM1 + (pifTOTALS2ETM1arrayRAND[m]^2));
                yQuadTOTALS2ETM2 = (yQuadTOTALS2ETM2 + (pifTOTALS2ETM2arrayRAND[m]^2));
                yQuadTOTALS2ETM3 = (yQuadTOTALS2ETM3 + (pifTOTALS2ETM3arrayRAND[m]^2));
                yQuadTOTALS2ETM4 = (yQuadTOTALS2ETM4 + (pifTOTALS2ETM4arrayRAND[m]^2));
                yQuadTOTALS2ETM5 = (yQuadTOTALS2ETM5 + (pifTOTALS2ETM5arrayRAND[m]^2));
                yQuadTOTALS2ETM7 = (yQuadTOTALS2ETM7 + (pifTOTALS2ETM7arrayRAND[m]^2));
    
                xyTOTALS2ETM1 = (xyTOTALS2ETM1 + (pifTOTALS4TM1arrayRAND[m] * pifTOTALS2ETM1arrayRAND[m]));
                xyTOTALS2ETM2 = (xyTOTALS2ETM2 + (pifTOTALS4TM2arrayRAND[m] * pifTOTALS2ETM2arrayRAND[m]));
                xyTOTALS2ETM3 = (xyTOTALS2ETM3 + (pifTOTALS4TM3arrayRAND[m] * pifTOTALS2ETM3arrayRAND[m]));
                xyTOTALS2ETM4 = (xyTOTALS2ETM4 + (pifTOTALS4TM4arrayRAND[m] * pifTOTALS2ETM4arrayRAND[m]));
                xyTOTALS2ETM5 = (xyTOTALS2ETM5 + (pifTOTALS4TM5arrayRAND[m] * pifTOTALS2ETM5arrayRAND[m]));
                xyTOTALS2ETM7 = (xyTOTALS2ETM7 + (pifTOTALS4TM7arrayRAND[m] * pifTOTALS2ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS2ETM1 = xTOTALS2ETM1 / minPifVAL;
            xAritTOTALS2ETM2 = xTOTALS2ETM2 / minPifVAL;
            xAritTOTALS2ETM3 = xTOTALS2ETM3 / minPifVAL;
            xAritTOTALS2ETM4 = xTOTALS2ETM4 / minPifVAL;
            xAritTOTALS2ETM5 = xTOTALS2ETM5 / minPifVAL;
            xAritTOTALS2ETM7 = xTOTALS2ETM7 / minPifVAL;
    
            yAritTOTALS2ETM1 = yTOTALS2ETM1 / minPifVAL;
            yAritTOTALS2ETM2 = yTOTALS2ETM2 / minPifVAL;
            yAritTOTALS2ETM3 = yTOTALS2ETM3 / minPifVAL;
            yAritTOTALS2ETM4 = yTOTALS2ETM4 / minPifVAL;
            yAritTOTALS2ETM5 = yTOTALS2ETM5 / minPifVAL;
            yAritTOTALS2ETM7 = yTOTALS2ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2ETM1 = (xxAritQuadTOTALS2ETM1 + ((pifTOTALS4TM1arrayRAND[n] - xAritTOTALS2ETM1)^2));
                xxAritQuadTOTALS2ETM2 = (xxAritQuadTOTALS2ETM2 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS2ETM2)^2));
                xxAritQuadTOTALS2ETM3 = (xxAritQuadTOTALS2ETM3 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS2ETM3)^2));
                xxAritQuadTOTALS2ETM4 = (xxAritQuadTOTALS2ETM4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS2ETM4)^2));
                xxAritQuadTOTALS2ETM5 = (xxAritQuadTOTALS2ETM5 + ((pifTOTALS4TM5arrayRAND[n] - xAritTOTALS2ETM5)^2));
                xxAritQuadTOTALS2ETM7 = (xxAritQuadTOTALS2ETM7 + ((pifTOTALS4TM7arrayRAND[n] - xAritTOTALS2ETM7)^2));
    
                yyAritQuadTOTALS2ETM1 = (yyAritQuadTOTALS2ETM1 + ((pifTOTALS2ETM1arrayRAND[n] - yAritTOTALS2ETM1)^2));
                yyAritQuadTOTALS2ETM2 = (yyAritQuadTOTALS2ETM2 + ((pifTOTALS2ETM2arrayRAND[n] - yAritTOTALS2ETM2)^2));
                yyAritQuadTOTALS2ETM3 = (yyAritQuadTOTALS2ETM3 + ((pifTOTALS2ETM3arrayRAND[n] - yAritTOTALS2ETM3)^2));
                yyAritQuadTOTALS2ETM4 = (yyAritQuadTOTALS2ETM4 + ((pifTOTALS2ETM4arrayRAND[n] - yAritTOTALS2ETM4)^2));
                yyAritQuadTOTALS2ETM5 = (yyAritQuadTOTALS2ETM5 + ((pifTOTALS2ETM5arrayRAND[n] - yAritTOTALS2ETM5)^2));
                yyAritQuadTOTALS2ETM7 = (yyAritQuadTOTALS2ETM7 + ((pifTOTALS2ETM7arrayRAND[n] - yAritTOTALS2ETM7)^2));
    
                qXYTOTALS2ETM1 = (qXYTOTALS2ETM1 + ((pifTOTALS4TM1arrayRAND[n] - xAritTOTALS2ETM1) * (pifTOTALS2ETM1arrayRAND[n] - yAritTOTALS2ETM1)));
                qXYTOTALS2ETM2 = (qXYTOTALS2ETM2 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS2ETM2) * (pifTOTALS2ETM2arrayRAND[n] - yAritTOTALS2ETM2)));
                qXYTOTALS2ETM3 = (qXYTOTALS2ETM3 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS2ETM3) * (pifTOTALS2ETM3arrayRAND[n] - yAritTOTALS2ETM3)));
                qXYTOTALS2ETM4 = (qXYTOTALS2ETM4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS2ETM4) * (pifTOTALS2ETM4arrayRAND[n] - yAritTOTALS2ETM4)));
                qXYTOTALS2ETM5 = (qXYTOTALS2ETM5 + ((pifTOTALS4TM5arrayRAND[n] - xAritTOTALS2ETM5) * (pifTOTALS2ETM5arrayRAND[n] - yAritTOTALS2ETM5)));
                qXYTOTALS2ETM7 = (qXYTOTALS2ETM7 + ((pifTOTALS4TM7arrayRAND[n] - xAritTOTALS2ETM7) * (pifTOTALS2ETM7arrayRAND[n] - yAritTOTALS2ETM7)));
            }
        
            aTOTALS2ETM1 = (((xQuadTOTALS2ETM1 * yTOTALS2ETM1) - (xTOTALS2ETM1 * xyTOTALS2ETM1)) / ((minPifVAL * xQuadTOTALS2ETM1) - (xTOTALS2ETM1^2)));
            aTOTALS2ETM2 = (((xQuadTOTALS2ETM2 * yTOTALS2ETM2) - (xTOTALS2ETM2 * xyTOTALS2ETM2)) / ((minPifVAL * xQuadTOTALS2ETM2) - (xTOTALS2ETM2^2)));
            aTOTALS2ETM3 = (((xQuadTOTALS2ETM3 * yTOTALS2ETM3) - (xTOTALS2ETM3 * xyTOTALS2ETM3)) / ((minPifVAL * xQuadTOTALS2ETM3) - (xTOTALS2ETM3^2)));
            aTOTALS2ETM4 = (((xQuadTOTALS2ETM4 * yTOTALS2ETM4) - (xTOTALS2ETM4 * xyTOTALS2ETM4)) / ((minPifVAL * xQuadTOTALS2ETM4) - (xTOTALS2ETM4^2)));
            aTOTALS2ETM5 = (((xQuadTOTALS2ETM5 * yTOTALS2ETM5) - (xTOTALS2ETM5 * xyTOTALS2ETM5)) / ((minPifVAL * xQuadTOTALS2ETM5) - (xTOTALS2ETM5^2)));
            aTOTALS2ETM7 = (((xQuadTOTALS2ETM7 * yTOTALS2ETM7) - (xTOTALS2ETM7 * xyTOTALS2ETM7)) / ((minPifVAL * xQuadTOTALS2ETM7) - (xTOTALS2ETM7^2)));
            
            bTOTALS2ETM1 = qXYTOTALS2ETM1 / xxAritQuadTOTALS2ETM1;
            bTOTALS2ETM2 = qXYTOTALS2ETM2 / xxAritQuadTOTALS2ETM2;
            bTOTALS2ETM3 = qXYTOTALS2ETM3 / xxAritQuadTOTALS2ETM3;
            bTOTALS2ETM4 = qXYTOTALS2ETM4 / xxAritQuadTOTALS2ETM4;
            bTOTALS2ETM5 = qXYTOTALS2ETM5 / xxAritQuadTOTALS2ETM5;
            bTOTALS2ETM7 = qXYTOTALS2ETM7 / xxAritQuadTOTALS2ETM7;
    
            rTOTALS2ETM1 = (qXYTOTALS2ETM1 / ((xxAritQuadTOTALS2ETM1 * yyAritQuadTOTALS2ETM1)^0.5));
            rTOTALS2ETM2 = (qXYTOTALS2ETM2 / ((xxAritQuadTOTALS2ETM2 * yyAritQuadTOTALS2ETM2)^0.5));
            rTOTALS2ETM3 = (qXYTOTALS2ETM3 / ((xxAritQuadTOTALS2ETM3 * yyAritQuadTOTALS2ETM3)^0.5));
            rTOTALS2ETM4 = (qXYTOTALS2ETM4 / ((xxAritQuadTOTALS2ETM4 * yyAritQuadTOTALS2ETM4)^0.5));
            rTOTALS2ETM5 = (qXYTOTALS2ETM5 / ((xxAritQuadTOTALS2ETM5 * yyAritQuadTOTALS2ETM5)^0.5));
            rTOTALS2ETM7 = (qXYTOTALS2ETM7 / ((xxAritQuadTOTALS2ETM7 * yyAritQuadTOTALS2ETM7)^0.5));
    
            rQuadTOTALS2ETM1 = ((rTOTALS2ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2ETM2 = ((rTOTALS2ETM2^2) * 100);
            rQuadTOTALS2ETM3 = ((rTOTALS2ETM3^2) * 100);
            rQuadTOTALS2ETM4 = ((rTOTALS2ETM4^2) * 100);
            rQuadTOTALS2ETM5 = ((rTOTALS2ETM5^2) * 100);
            rQuadTOTALS2ETM7 = ((rTOTALS2ETM7^2) * 100);
        
            syxTOTALS2ETM1 = (((yyAritQuadTOTALS2ETM1 - ((qXYTOTALS2ETM1^2) / xxAritQuadTOTALS2ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM2 = (((yyAritQuadTOTALS2ETM2 - ((qXYTOTALS2ETM2^2) / xxAritQuadTOTALS2ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM3 = (((yyAritQuadTOTALS2ETM3 - ((qXYTOTALS2ETM3^2) / xxAritQuadTOTALS2ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM4 = (((yyAritQuadTOTALS2ETM4 - ((qXYTOTALS2ETM4^2) / xxAritQuadTOTALS2ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM5 = (((yyAritQuadTOTALS2ETM5 - ((qXYTOTALS2ETM5^2) / xxAritQuadTOTALS2ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS2ETM7 = (((yyAritQuadTOTALS2ETM7 - ((qXYTOTALS2ETM7^2) / xxAritQuadTOTALS2ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2ETM1 = (((syxTOTALS2ETM1^2) / xxAritQuadTOTALS2ETM1)^0.5);
            bStandTOTALS2ETM2 = (((syxTOTALS2ETM2^2) / xxAritQuadTOTALS2ETM2)^0.5);
            bStandTOTALS2ETM3 = (((syxTOTALS2ETM3^2) / xxAritQuadTOTALS2ETM3)^0.5);
            bStandTOTALS2ETM4 = (((syxTOTALS2ETM4^2) / xxAritQuadTOTALS2ETM4)^0.5);
            bStandTOTALS2ETM5 = (((syxTOTALS2ETM5^2) / xxAritQuadTOTALS2ETM5)^0.5);
            bStandTOTALS2ETM7 = (((syxTOTALS2ETM7^2) / xxAritQuadTOTALS2ETM7)^0.5);
    
            aStandTOTALS2ETM1 = (bStandTOTALS2ETM1 * ((xQuadTOTALS2ETM1 / minPifVAL)^0.5));
            aStandTOTALS2ETM2 = (bStandTOTALS2ETM2 * ((xQuadTOTALS2ETM2 / minPifVAL)^0.5));
            aStandTOTALS2ETM3 = (bStandTOTALS2ETM3 * ((xQuadTOTALS2ETM3 / minPifVAL)^0.5));
            aStandTOTALS2ETM4 = (bStandTOTALS2ETM4 * ((xQuadTOTALS2ETM4 / minPifVAL)^0.5));
            aStandTOTALS2ETM5 = (bStandTOTALS2ETM5 * ((xQuadTOTALS2ETM5 / minPifVAL)^0.5));
            aStandTOTALS2ETM7 = (bStandTOTALS2ETM7 * ((xQuadTOTALS2ETM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM1, bTOTALS2ETM1, rTOTALS2ETM1, rQuadTOTALS2ETM1, aStandTOTALS2ETM1, bStandTOTALS2ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM2, bTOTALS2ETM2, rTOTALS2ETM2, rQuadTOTALS2ETM2, aStandTOTALS2ETM2, bStandTOTALS2ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM3, bTOTALS2ETM3, rTOTALS2ETM3, rQuadTOTALS2ETM3, aStandTOTALS2ETM3, bStandTOTALS2ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM4, bTOTALS2ETM4, rTOTALS2ETM4, rQuadTOTALS2ETM4, aStandTOTALS2ETM4, bStandTOTALS2ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS2ETM5, bTOTALS2ETM5, rTOTALS2ETM5, rQuadTOTALS2ETM5, aStandTOTALS2ETM5, bStandTOTALS2ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS2ETM7, bTOTALS2ETM7, rTOTALS2ETM7, rQuadTOTALS2ETM7, aStandTOTALS2ETM7, bStandTOTALS2ETM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS2ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS2ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS2ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS2ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS2ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS2ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS2ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT2ETM1[i,j] = (aTOTALS2ETM1 + (bTOTALS2ETM1 * REFS2ETM1[i,j]));
                    OUT2ETM2[i,j] = (aTOTALS2ETM2 + (bTOTALS2ETM2 * REFS2ETM2[i,j]));
                    OUT2ETM3[i,j] = (aTOTALS2ETM3 + (bTOTALS2ETM3 * REFS2ETM3[i,j]));
                    OUT2ETM4[i,j] = (aTOTALS2ETM4 + (bTOTALS2ETM4 * REFS2ETM4[i,j]));
                    OUT2ETM5[i,j] = (aTOTALS2ETM5 + (bTOTALS2ETM5 * REFS2ETM5[i,j]));
                    OUT2ETM7[i,j] = (aTOTALS2ETM7 + (bTOTALS2ETM7 * REFS2ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2ETM1);
        	CreatePyramid(OUT2ETM2);
        	CreatePyramid(OUT2ETM3);
        	CreatePyramid(OUT2ETM4);
        	CreatePyramid(OUT2ETM5);
        	CreatePyramid(OUT2ETM7);
        
        	CreateHistogram(OUT2ETM1);
        	CreateHistogram(OUT2ETM2);
        	CreateHistogram(OUT2ETM3);
        	CreateHistogram(OUT2ETM4);
        	CreateHistogram(OUT2ETM5);
        	CreateHistogram(OUT2ETM7);
        
        	CloseRaster(REFS2ETM1);
            CloseRaster(REFS2ETM2);
            CloseRaster(REFS2ETM3);
            CloseRaster(REFS2ETM4);
            CloseRaster(REFS2ETM5);
            CloseRaster(REFS2ETM7);
    
            CloseRaster(OUT2ETM1);
            CloseRaster(OUT2ETM2);
            CloseRaster(OUT2ETM3);
            CloseRaster(OUT2ETM4);
            CloseRaster(OUT2ETM5);
            CloseRaster(OUT2ETM7);
        
        	printf("Scene 2 (ETM) got normalized, output was written, histogram createdand pyramid written...\n\n\n");
            }
            
            else if ( sensors2 == 6 )
            {
            numeric xAritTOTALS2TM1, xAritTOTALS2TM2, xAritTOTALS2TM3, xAritTOTALS2TM4, xAritTOTALS2TM5, xAritTOTALS2TM7;
            numeric yAritTOTALS2TM1, yAritTOTALS2TM2, yAritTOTALS2TM3, yAritTOTALS2TM4, yAritTOTALS2TM5, yAritTOTALS2TM7;
    
            numeric aTOTALS2TM1, aTOTALS2TM2, aTOTALS2TM3, aTOTALS2TM4, aTOTALS2TM5, aTOTALS2TM7;
            numeric bTOTALS2TM1, bTOTALS2TM2, bTOTALS2TM3, bTOTALS2TM4, bTOTALS2TM5, bTOTALS2TM7;
            numeric rTOTALS2TM1, rTOTALS2TM2, rTOTALS2TM3, rTOTALS2TM4, rTOTALS2TM5, rTOTALS2TM7;
            numeric rQuadTOTALS2TM1, rQuadTOTALS2TM2, rQuadTOTALS2TM3, rQuadTOTALS2TM4, rQuadTOTALS2TM5, rQuadTOTALS2TM7;
            numeric syxTOTALS2TM1, syxTOTALS2TM2, syxTOTALS2TM3, syxTOTALS2TM4, syxTOTALS2TM5, syxTOTALS2TM7;
            numeric bStandTOTALS2TM1, bStandTOTALS2TM2, bStandTOTALS2TM3, bStandTOTALS2TM4, bStandTOTALS2TM5, bStandTOTALS2TM7;
            numeric aStandTOTALS2TM1, aStandTOTALS2TM2, aStandTOTALS2TM3, aStandTOTALS2TM4, aStandTOTALS2TM5, aStandTOTALS2TM7;
    
            numeric xTOTALS2TM1 = 0;
            numeric xTOTALS2TM2 = 0;
            numeric xTOTALS2TM3 = 0;
            numeric xTOTALS2TM4 = 0;
            numeric xTOTALS2TM5 = 0;
            numeric xTOTALS2TM7 = 0;
    
            numeric xQuadTOTALS2TM1 = 0;
            numeric xQuadTOTALS2TM2 = 0;
            numeric xQuadTOTALS2TM3 = 0;
            numeric xQuadTOTALS2TM4 = 0;
            numeric xQuadTOTALS2TM5 = 0;
            numeric xQuadTOTALS2TM7 = 0;
    
            numeric yTOTALS2TM1 = 0;
            numeric yTOTALS2TM2 = 0;
            numeric yTOTALS2TM3 = 0;
            numeric yTOTALS2TM4 = 0;
            numeric yTOTALS2TM5 = 0;
            numeric yTOTALS2TM7 = 0;
    
            numeric yQuadTOTALS2TM1 = 0;
            numeric yQuadTOTALS2TM2 = 0;
            numeric yQuadTOTALS2TM3 = 0;
            numeric yQuadTOTALS2TM4 = 0;
            numeric yQuadTOTALS2TM5 = 0;
            numeric yQuadTOTALS2TM7 = 0;
    
            numeric xyTOTALS2TM1 = 0;
            numeric xyTOTALS2TM2 = 0;
            numeric xyTOTALS2TM3 = 0;
            numeric xyTOTALS2TM4 = 0;
            numeric xyTOTALS2TM5 = 0;
            numeric xyTOTALS2TM7 = 0;
    
            numeric xxAritQuadTOTALS2TM1 = 0;
            numeric xxAritQuadTOTALS2TM2 = 0;
            numeric xxAritQuadTOTALS2TM3 = 0;
            numeric xxAritQuadTOTALS2TM4 = 0;
            numeric xxAritQuadTOTALS2TM5 = 0;
            numeric xxAritQuadTOTALS2TM7 = 0;
    
            numeric yyAritQuadTOTALS2TM1 = 0;
            numeric yyAritQuadTOTALS2TM2 = 0;
            numeric yyAritQuadTOTALS2TM3 = 0;
            numeric yyAritQuadTOTALS2TM4 = 0;
            numeric yyAritQuadTOTALS2TM5 = 0;
            numeric yyAritQuadTOTALS2TM7 = 0;
    
            numeric qXYTOTALS2TM1 = 0;
            numeric qXYTOTALS2TM2 = 0;
            numeric qXYTOTALS2TM3 = 0;
            numeric qXYTOTALS2TM4 = 0;
            numeric qXYTOTALS2TM5 = 0;
            numeric qXYTOTALS2TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS2TM1 = xTOTALS2TM1 + pifTOTALS4TM1arrayRAND[m];
                xTOTALS2TM2 = xTOTALS2TM2 + pifTOTALS4TM2arrayRAND[m];
                xTOTALS2TM3 = xTOTALS2TM3 + pifTOTALS4TM3arrayRAND[m];
                xTOTALS2TM4 = xTOTALS2TM4 + pifTOTALS4TM4arrayRAND[m];
                xTOTALS2TM5 = xTOTALS2TM5 + pifTOTALS4TM5arrayRAND[m];
                xTOTALS2TM7 = xTOTALS2TM7 + pifTOTALS4TM7arrayRAND[m];
    
                xQuadTOTALS2TM1 = (xQuadTOTALS2TM1 + (pifTOTALS4TM1arrayRAND[m]^2));
                xQuadTOTALS2TM2 = (xQuadTOTALS2TM2 + (pifTOTALS4TM2arrayRAND[m]^2));
                xQuadTOTALS2TM3 = (xQuadTOTALS2TM3 + (pifTOTALS4TM3arrayRAND[m]^2));
                xQuadTOTALS2TM4 = (xQuadTOTALS2TM4 + (pifTOTALS4TM4arrayRAND[m]^2));
                xQuadTOTALS2TM5 = (xQuadTOTALS2TM5 + (pifTOTALS4TM5arrayRAND[m]^2));
                xQuadTOTALS2TM7 = (xQuadTOTALS2TM7 + (pifTOTALS4TM7arrayRAND[m]^2));
    
                yTOTALS2TM1 = yTOTALS2TM1 + pifTOTALS2TM1arrayRAND[m];
                yTOTALS2TM2 = yTOTALS2TM2 + pifTOTALS2TM2arrayRAND[m];
                yTOTALS2TM3 = yTOTALS2TM3 + pifTOTALS2TM3arrayRAND[m];
                yTOTALS2TM4 = yTOTALS2TM4 + pifTOTALS2TM4arrayRAND[m];
                yTOTALS2TM5 = yTOTALS2TM5 + pifTOTALS2TM5arrayRAND[m];
                yTOTALS2TM7 = yTOTALS2TM7 + pifTOTALS2TM7arrayRAND[m];
                
                yQuadTOTALS2TM1 = (yQuadTOTALS2TM1 + (pifTOTALS2TM1arrayRAND[m]^2));
                yQuadTOTALS2TM2 = (yQuadTOTALS2TM2 + (pifTOTALS2TM2arrayRAND[m]^2));
                yQuadTOTALS2TM3 = (yQuadTOTALS2TM3 + (pifTOTALS2TM3arrayRAND[m]^2));
                yQuadTOTALS2TM4 = (yQuadTOTALS2TM4 + (pifTOTALS2TM4arrayRAND[m]^2));
                yQuadTOTALS2TM5 = (yQuadTOTALS2TM5 + (pifTOTALS2TM5arrayRAND[m]^2));
                yQuadTOTALS2TM7 = (yQuadTOTALS2TM7 + (pifTOTALS2TM7arrayRAND[m]^2));
    
                xyTOTALS2TM1 = (xyTOTALS2TM1 + (pifTOTALS4TM1arrayRAND[m] * pifTOTALS2TM1arrayRAND[m]));
                xyTOTALS2TM2 = (xyTOTALS2TM2 + (pifTOTALS4TM2arrayRAND[m] * pifTOTALS2TM2arrayRAND[m]));
                xyTOTALS2TM3 = (xyTOTALS2TM3 + (pifTOTALS4TM3arrayRAND[m] * pifTOTALS2TM3arrayRAND[m]));
                xyTOTALS2TM4 = (xyTOTALS2TM4 + (pifTOTALS4TM4arrayRAND[m] * pifTOTALS2TM4arrayRAND[m]));
                xyTOTALS2TM5 = (xyTOTALS2TM5 + (pifTOTALS4TM5arrayRAND[m] * pifTOTALS2TM5arrayRAND[m]));
                xyTOTALS2TM7 = (xyTOTALS2TM7 + (pifTOTALS4TM7arrayRAND[m] * pifTOTALS2TM7arrayRAND[m]));
            }	
            
            xAritTOTALS2TM1 = xTOTALS2TM1 / minPifVAL;
            xAritTOTALS2TM2 = xTOTALS2TM2 / minPifVAL;
            xAritTOTALS2TM3 = xTOTALS2TM3 / minPifVAL;
            xAritTOTALS2TM4 = xTOTALS2TM4 / minPifVAL;
            xAritTOTALS2TM5 = xTOTALS2TM5 / minPifVAL;
            xAritTOTALS2TM7 = xTOTALS2TM7 / minPifVAL;
    
            yAritTOTALS2TM1 = yTOTALS2TM1 / minPifVAL;
            yAritTOTALS2TM2 = yTOTALS2TM2 / minPifVAL;
            yAritTOTALS2TM3 = yTOTALS2TM3 / minPifVAL;
            yAritTOTALS2TM4 = yTOTALS2TM4 / minPifVAL;
            yAritTOTALS2TM5 = yTOTALS2TM5 / minPifVAL;
            yAritTOTALS2TM7 = yTOTALS2TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2TM1 = (xxAritQuadTOTALS2TM1 + ((pifTOTALS4TM1arrayRAND[n] - xAritTOTALS2TM1)^2));
                xxAritQuadTOTALS2TM2 = (xxAritQuadTOTALS2TM2 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS2TM2)^2));
                xxAritQuadTOTALS2TM3 = (xxAritQuadTOTALS2TM3 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS2TM3)^2));
                xxAritQuadTOTALS2TM4 = (xxAritQuadTOTALS2TM4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS2TM4)^2));
                xxAritQuadTOTALS2TM5 = (xxAritQuadTOTALS2TM5 + ((pifTOTALS4TM5arrayRAND[n] - xAritTOTALS2TM5)^2));
                xxAritQuadTOTALS2TM7 = (xxAritQuadTOTALS2TM7 + ((pifTOTALS4TM7arrayRAND[n] - xAritTOTALS2TM7)^2));
    
                yyAritQuadTOTALS2TM1 = (yyAritQuadTOTALS2TM1 + ((pifTOTALS2TM1arrayRAND[n] - yAritTOTALS2TM1)^2));
                yyAritQuadTOTALS2TM2 = (yyAritQuadTOTALS2TM2 + ((pifTOTALS2TM2arrayRAND[n] - yAritTOTALS2TM2)^2));
                yyAritQuadTOTALS2TM3 = (yyAritQuadTOTALS2TM3 + ((pifTOTALS2TM3arrayRAND[n] - yAritTOTALS2TM3)^2));
                yyAritQuadTOTALS2TM4 = (yyAritQuadTOTALS2TM4 + ((pifTOTALS2TM4arrayRAND[n] - yAritTOTALS2TM4)^2));
                yyAritQuadTOTALS2TM5 = (yyAritQuadTOTALS2TM5 + ((pifTOTALS2TM5arrayRAND[n] - yAritTOTALS2TM5)^2));
                yyAritQuadTOTALS2TM7 = (yyAritQuadTOTALS2TM7 + ((pifTOTALS2TM7arrayRAND[n] - yAritTOTALS2TM7)^2));
    
                qXYTOTALS2TM1 = (qXYTOTALS2TM1 + ((pifTOTALS4TM1arrayRAND[n] - xAritTOTALS2TM1) * (pifTOTALS2TM1arrayRAND[n] - yAritTOTALS2TM1)));
                qXYTOTALS2TM2 = (qXYTOTALS2TM2 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS2TM2) * (pifTOTALS2TM2arrayRAND[n] - yAritTOTALS2TM2)));
                qXYTOTALS2TM3 = (qXYTOTALS2TM3 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS2TM3) * (pifTOTALS2TM3arrayRAND[n] - yAritTOTALS2TM3)));
                qXYTOTALS2TM4 = (qXYTOTALS2TM4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS2TM4) * (pifTOTALS2TM4arrayRAND[n] - yAritTOTALS2TM4)));
                qXYTOTALS2TM5 = (qXYTOTALS2TM5 + ((pifTOTALS4TM5arrayRAND[n] - xAritTOTALS2TM5) * (pifTOTALS2TM5arrayRAND[n] - yAritTOTALS2TM5)));
                qXYTOTALS2TM7 = (qXYTOTALS2TM7 + ((pifTOTALS4TM7arrayRAND[n] - xAritTOTALS2TM7) * (pifTOTALS2TM7arrayRAND[n] - yAritTOTALS2TM7)));
            }
        
            aTOTALS2TM1 = (((xQuadTOTALS2TM1 * yTOTALS2TM1) - (xTOTALS2TM1 * xyTOTALS2TM1)) / ((minPifVAL * xQuadTOTALS2TM1) - (xTOTALS2TM1^2)));
            aTOTALS2TM2 = (((xQuadTOTALS2TM2 * yTOTALS2TM2) - (xTOTALS2TM2 * xyTOTALS2TM2)) / ((minPifVAL * xQuadTOTALS2TM2) - (xTOTALS2TM2^2)));
            aTOTALS2TM3 = (((xQuadTOTALS2TM3 * yTOTALS2TM3) - (xTOTALS2TM3 * xyTOTALS2TM3)) / ((minPifVAL * xQuadTOTALS2TM3) - (xTOTALS2TM3^2)));
            aTOTALS2TM4 = (((xQuadTOTALS2TM4 * yTOTALS2TM4) - (xTOTALS2TM4 * xyTOTALS2TM4)) / ((minPifVAL * xQuadTOTALS2TM4) - (xTOTALS2TM4^2)));
            aTOTALS2TM5 = (((xQuadTOTALS2TM5 * yTOTALS2TM5) - (xTOTALS2TM5 * xyTOTALS2TM5)) / ((minPifVAL * xQuadTOTALS2TM5) - (xTOTALS2TM5^2)));
            aTOTALS2TM7 = (((xQuadTOTALS2TM7 * yTOTALS2TM7) - (xTOTALS2TM7 * xyTOTALS2TM7)) / ((minPifVAL * xQuadTOTALS2TM7) - (xTOTALS2TM7^2)));
            
            bTOTALS2TM1 = qXYTOTALS2TM1 / xxAritQuadTOTALS2TM1;
            bTOTALS2TM2 = qXYTOTALS2TM2 / xxAritQuadTOTALS2TM2;
            bTOTALS2TM3 = qXYTOTALS2TM3 / xxAritQuadTOTALS2TM3;
            bTOTALS2TM4 = qXYTOTALS2TM4 / xxAritQuadTOTALS2TM4;
            bTOTALS2TM5 = qXYTOTALS2TM5 / xxAritQuadTOTALS2TM5;
            bTOTALS2TM7 = qXYTOTALS2TM7 / xxAritQuadTOTALS2TM7;
    
            rTOTALS2TM1 = (qXYTOTALS2TM1 / ((xxAritQuadTOTALS2TM1 * yyAritQuadTOTALS2TM1)^0.5));
            rTOTALS2TM2 = (qXYTOTALS2TM2 / ((xxAritQuadTOTALS2TM2 * yyAritQuadTOTALS2TM2)^0.5));
            rTOTALS2TM3 = (qXYTOTALS2TM3 / ((xxAritQuadTOTALS2TM3 * yyAritQuadTOTALS2TM3)^0.5));
            rTOTALS2TM4 = (qXYTOTALS2TM4 / ((xxAritQuadTOTALS2TM4 * yyAritQuadTOTALS2TM4)^0.5));
            rTOTALS2TM5 = (qXYTOTALS2TM5 / ((xxAritQuadTOTALS2TM5 * yyAritQuadTOTALS2TM5)^0.5));
            rTOTALS2TM7 = (qXYTOTALS2TM7 / ((xxAritQuadTOTALS2TM7 * yyAritQuadTOTALS2TM7)^0.5));
    
            rQuadTOTALS2TM1 = ((rTOTALS2TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2TM2 = ((rTOTALS2TM2^2) * 100);
            rQuadTOTALS2TM3 = ((rTOTALS2TM3^2) * 100);
            rQuadTOTALS2TM4 = ((rTOTALS2TM4^2) * 100);
            rQuadTOTALS2TM5 = ((rTOTALS2TM5^2) * 100);
            rQuadTOTALS2TM7 = ((rTOTALS2TM7^2) * 100);
        
            syxTOTALS2TM1 = (((yyAritQuadTOTALS2TM1 - ((qXYTOTALS2TM1^2) / xxAritQuadTOTALS2TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM2 = (((yyAritQuadTOTALS2TM2 - ((qXYTOTALS2TM2^2) / xxAritQuadTOTALS2TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM3 = (((yyAritQuadTOTALS2TM3 - ((qXYTOTALS2TM3^2) / xxAritQuadTOTALS2TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM4 = (((yyAritQuadTOTALS2TM4 - ((qXYTOTALS2TM4^2) / xxAritQuadTOTALS2TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM5 = (((yyAritQuadTOTALS2TM5 - ((qXYTOTALS2TM5^2) / xxAritQuadTOTALS2TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS2TM7 = (((yyAritQuadTOTALS2TM7 - ((qXYTOTALS2TM7^2) / xxAritQuadTOTALS2TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2TM1 = (((syxTOTALS2TM1^2) / xxAritQuadTOTALS2TM1)^0.5);
            bStandTOTALS2TM2 = (((syxTOTALS2TM2^2) / xxAritQuadTOTALS2TM2)^0.5);
            bStandTOTALS2TM3 = (((syxTOTALS2TM3^2) / xxAritQuadTOTALS2TM3)^0.5);
            bStandTOTALS2TM4 = (((syxTOTALS2TM4^2) / xxAritQuadTOTALS2TM4)^0.5);
            bStandTOTALS2TM5 = (((syxTOTALS2TM5^2) / xxAritQuadTOTALS2TM5)^0.5);
            bStandTOTALS2TM7 = (((syxTOTALS2TM7^2) / xxAritQuadTOTALS2TM7)^0.5);
    
            aStandTOTALS2TM1 = (bStandTOTALS2TM1 * ((xQuadTOTALS2TM1 / minPifVAL)^0.5));
            aStandTOTALS2TM2 = (bStandTOTALS2TM2 * ((xQuadTOTALS2TM2 / minPifVAL)^0.5));
            aStandTOTALS2TM3 = (bStandTOTALS2TM3 * ((xQuadTOTALS2TM3 / minPifVAL)^0.5));
            aStandTOTALS2TM4 = (bStandTOTALS2TM4 * ((xQuadTOTALS2TM4 / minPifVAL)^0.5));
            aStandTOTALS2TM5 = (bStandTOTALS2TM5 * ((xQuadTOTALS2TM5 / minPifVAL)^0.5));
            aStandTOTALS2TM7 = (bStandTOTALS2TM7 * ((xQuadTOTALS2TM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM1, bTOTALS2TM1, rTOTALS2TM1, rQuadTOTALS2TM1, aStandTOTALS2TM1, bStandTOTALS2TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM2, bTOTALS2TM2, rTOTALS2TM2, rQuadTOTALS2TM2, aStandTOTALS2TM2, bStandTOTALS2TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM3, bTOTALS2TM3, rTOTALS2TM3, rQuadTOTALS2TM3, aStandTOTALS2TM3, bStandTOTALS2TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM4, bTOTALS2TM4, rTOTALS2TM4, rQuadTOTALS2TM4, aStandTOTALS2TM4, bStandTOTALS2TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS2TM5, bTOTALS2TM5, rTOTALS2TM5, rQuadTOTALS2TM5, aStandTOTALS2TM5, bStandTOTALS2TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS2TM7, bTOTALS2TM7, rTOTALS2TM7, rQuadTOTALS2TM7, aStandTOTALS2TM7, bStandTOTALS2TM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS2TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS2TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS2TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS2TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS2TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS2TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS2TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT2TM1[i,j] = (aTOTALS2TM1 + (bTOTALS2TM1 * REFS2TM1[i,j]));
                    OUT2TM2[i,j] = (aTOTALS2TM2 + (bTOTALS2TM2 * REFS2TM2[i,j]));
                    OUT2TM3[i,j] = (aTOTALS2TM3 + (bTOTALS2TM3 * REFS2TM3[i,j]));
                    OUT2TM4[i,j] = (aTOTALS2TM4 + (bTOTALS2TM4 * REFS2TM4[i,j]));
                    OUT2TM5[i,j] = (aTOTALS2TM5 + (bTOTALS2TM5 * REFS2TM5[i,j]));
                    OUT2TM7[i,j] = (aTOTALS2TM7 + (bTOTALS2TM7 * REFS2TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2TM1);
        	CreatePyramid(OUT2TM2);
        	CreatePyramid(OUT2TM3);
        	CreatePyramid(OUT2TM4);
        	CreatePyramid(OUT2TM5);
        	CreatePyramid(OUT2TM7);
        
        	CreateHistogram(OUT2TM1);
        	CreateHistogram(OUT2TM2);
        	CreateHistogram(OUT2TM3);
        	CreateHistogram(OUT2TM4);
        	CreateHistogram(OUT2TM5);
        	CreateHistogram(OUT2TM7);
        
        	CloseRaster(REFS2TM1);
            CloseRaster(REFS2TM2);
            CloseRaster(REFS2TM3);
            CloseRaster(REFS2TM4);
            CloseRaster(REFS2TM5);
            CloseRaster(REFS2TM7);
    
            CloseRaster(OUT2TM1);
            CloseRaster(OUT2TM2);
            CloseRaster(OUT2TM3);
            CloseRaster(OUT2TM4);
            CloseRaster(OUT2TM5);
            CloseRaster(OUT2TM7);
        
        	printf("Scene 2 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS2MSS1, xAritTOTALS2MSS2, xAritTOTALS2MSS4;
            numeric yAritTOTALS2MSS1, yAritTOTALS2MSS2, yAritTOTALS2MSS4;
    
            numeric aTOTALS2MSS1, aTOTALS2MSS2, aTOTALS2MSS4;
            numeric bTOTALS2MSS1, bTOTALS2MSS2, bTOTALS2MSS4;
            numeric rTOTALS2MSS1, rTOTALS2MSS2, rTOTALS2MSS4;
            numeric rQuadTOTALS2MSS1, rQuadTOTALS2MSS2, rQuadTOTALS2MSS4;
            numeric syxTOTALS2MSS1, syxTOTALS2MSS2, syxTOTALS2MSS4;
            numeric bStandTOTALS2MSS1, bStandTOTALS2MSS2, bStandTOTALS2MSS4;
            numeric aStandTOTALS2MSS1, aStandTOTALS2MSS2, aStandTOTALS2MSS4;
    
            numeric xTOTALS2MSS1 = 0;
            numeric xTOTALS2MSS2 = 0;
            numeric xTOTALS2MSS4 = 0;
    
            numeric xQuadTOTALS2MSS1 = 0;
            numeric xQuadTOTALS2MSS2 = 0;
            numeric xQuadTOTALS2MSS4 = 0;
    
            numeric yTOTALS2MSS1 = 0;
            numeric yTOTALS2MSS2 = 0;
            numeric yTOTALS2MSS4 = 0;
    
            numeric yQuadTOTALS2MSS1 = 0;
            numeric yQuadTOTALS2MSS2 = 0;
            numeric yQuadTOTALS2MSS4 = 0;
    
            numeric xyTOTALS2MSS1 = 0;
            numeric xyTOTALS2MSS2 = 0;
            numeric xyTOTALS2MSS4 = 0;
    
            numeric xxAritQuadTOTALS2MSS1 = 0;
            numeric xxAritQuadTOTALS2MSS2 = 0;
            numeric xxAritQuadTOTALS2MSS4 = 0;
    
            numeric yyAritQuadTOTALS2MSS1 = 0;
            numeric yyAritQuadTOTALS2MSS2 = 0;
            numeric yyAritQuadTOTALS2MSS4 = 0;
    
            numeric qXYTOTALS2MSS1 = 0;
            numeric qXYTOTALS2MSS2 = 0;
            numeric qXYTOTALS2MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS2MSS1 = xTOTALS2MSS1 + pifTOTALS4TM2arrayRAND[m];
                xTOTALS2MSS2 = xTOTALS2MSS2 + pifTOTALS4TM3arrayRAND[m];
                xTOTALS2MSS4 = xTOTALS2MSS4 + pifTOTALS4TM4arrayRAND[m];
    
                xQuadTOTALS2MSS1 = (xQuadTOTALS2MSS1 + (pifTOTALS4TM2arrayRAND[m]^2));
                xQuadTOTALS2MSS2 = (xQuadTOTALS2MSS2 + (pifTOTALS4TM3arrayRAND[m]^2));
                xQuadTOTALS2MSS4 = (xQuadTOTALS2MSS4 + (pifTOTALS4TM4arrayRAND[m]^2));
    
                yTOTALS2MSS1 = yTOTALS2MSS1 + pifTOTALS2MSS1arrayRAND[m];
                yTOTALS2MSS2 = yTOTALS2MSS2 + pifTOTALS2MSS2arrayRAND[m];
                yTOTALS2MSS4 = yTOTALS2MSS4 + pifTOTALS2MSS4arrayRAND[m];
                
                yQuadTOTALS2MSS1 = (yQuadTOTALS2MSS1 + (pifTOTALS2MSS1arrayRAND[m]^2));
                yQuadTOTALS2MSS2 = (yQuadTOTALS2MSS2 + (pifTOTALS2MSS2arrayRAND[m]^2));
                yQuadTOTALS2MSS4 = (yQuadTOTALS2MSS4 + (pifTOTALS2MSS4arrayRAND[m]^2));
    
                xyTOTALS2MSS1 = (xyTOTALS2MSS1 + (pifTOTALS4TM2arrayRAND[m] * pifTOTALS2MSS1arrayRAND[m]));
                xyTOTALS2MSS2 = (xyTOTALS2MSS2 + (pifTOTALS4TM3arrayRAND[m] * pifTOTALS2MSS2arrayRAND[m]));
                xyTOTALS2MSS4 = (xyTOTALS2MSS4 + (pifTOTALS4TM4arrayRAND[m] * pifTOTALS2MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS2MSS1 = xTOTALS2MSS1 / minPifVAL;
            xAritTOTALS2MSS2 = xTOTALS2MSS2 / minPifVAL;
            xAritTOTALS2MSS4 = xTOTALS2MSS4 / minPifVAL;
    
            yAritTOTALS2MSS1 = yTOTALS2MSS1 / minPifVAL;
            yAritTOTALS2MSS2 = yTOTALS2MSS2 / minPifVAL;
            yAritTOTALS2MSS4 = yTOTALS2MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2MSS1 = (xxAritQuadTOTALS2MSS1 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS2MSS1)^2));
                xxAritQuadTOTALS2MSS2 = (xxAritQuadTOTALS2MSS2 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS2MSS2)^2));
                xxAritQuadTOTALS2MSS4 = (xxAritQuadTOTALS2MSS4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS2MSS4)^2));
    
                yyAritQuadTOTALS2MSS1 = (yyAritQuadTOTALS2MSS1 + ((pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)^2));
                yyAritQuadTOTALS2MSS2 = (yyAritQuadTOTALS2MSS2 + ((pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)^2));
                yyAritQuadTOTALS2MSS4 = (yyAritQuadTOTALS2MSS4 + ((pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)^2));
    
                qXYTOTALS2MSS1 = (qXYTOTALS2MSS1 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS2MSS1) * (pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)));
                qXYTOTALS2MSS2 = (qXYTOTALS2MSS2 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS2MSS2) * (pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)));
                qXYTOTALS2MSS4 = (qXYTOTALS2MSS4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS2MSS4) * (pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)));
            }
        
            aTOTALS2MSS1 = (((xQuadTOTALS2MSS1 * yTOTALS2MSS1) - (xTOTALS2MSS1 * xyTOTALS2MSS1)) / ((minPifVAL * xQuadTOTALS2MSS1) - (xTOTALS2MSS1^2)));
            aTOTALS2MSS2 = (((xQuadTOTALS2MSS2 * yTOTALS2MSS2) - (xTOTALS2MSS2 * xyTOTALS2MSS2)) / ((minPifVAL * xQuadTOTALS2MSS2) - (xTOTALS2MSS2^2)));
            aTOTALS2MSS4 = (((xQuadTOTALS2MSS4 * yTOTALS2MSS4) - (xTOTALS2MSS4 * xyTOTALS2MSS4)) / ((minPifVAL * xQuadTOTALS2MSS4) - (xTOTALS2MSS4^2)));
            
            bTOTALS2MSS1 = qXYTOTALS2MSS1 / xxAritQuadTOTALS2MSS1;
            bTOTALS2MSS2 = qXYTOTALS2MSS2 / xxAritQuadTOTALS2MSS2;
            bTOTALS2MSS4 = qXYTOTALS2MSS4 / xxAritQuadTOTALS2MSS4;
    
            rTOTALS2MSS1 = (qXYTOTALS2MSS1 / ((xxAritQuadTOTALS2MSS1 * yyAritQuadTOTALS2MSS1)^0.5));
            rTOTALS2MSS2 = (qXYTOTALS2MSS2 / ((xxAritQuadTOTALS2MSS2 * yyAritQuadTOTALS2MSS2)^0.5));
            rTOTALS2MSS4 = (qXYTOTALS2MSS4 / ((xxAritQuadTOTALS2MSS4 * yyAritQuadTOTALS2MSS4)^0.5));
    
            rQuadTOTALS2MSS1 = ((rTOTALS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2MSS2 = ((rTOTALS2MSS2^2) * 100);
            rQuadTOTALS2MSS4 = ((rTOTALS2MSS4^2) * 100);
        
            syxTOTALS2MSS1 = (((yyAritQuadTOTALS2MSS1 - ((qXYTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS2 = (((yyAritQuadTOTALS2MSS2 - ((qXYTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS4 = (((yyAritQuadTOTALS2MSS4 - ((qXYTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2MSS1 = (((syxTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)^0.5);
            bStandTOTALS2MSS2 = (((syxTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)^0.5);
            bStandTOTALS2MSS4 = (((syxTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)^0.5);
    
            aStandTOTALS2MSS1 = (bStandTOTALS2MSS1 * ((xQuadTOTALS2MSS1 / minPifVAL)^0.5));
            aStandTOTALS2MSS2 = (bStandTOTALS2MSS2 * ((xQuadTOTALS2MSS2 / minPifVAL)^0.5));
            aStandTOTALS2MSS4 = (bStandTOTALS2MSS4 * ((xQuadTOTALS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS1, bTOTALS2MSS1, rTOTALS2MSS1, rQuadTOTALS2MSS1, aStandTOTALS2MSS1, bStandTOTALS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS2, bTOTALS2MSS2, rTOTALS2MSS2, rQuadTOTALS2MSS2, aStandTOTALS2MSS2, bStandTOTALS2MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS4, bTOTALS2MSS4, rTOTALS2MSS4, rQuadTOTALS2MSS4, aStandTOTALS2MSS4, bStandTOTALS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS2MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS2MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS2MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aTOTALS2MSS1 + (bTOTALS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aTOTALS2MSS2 + (bTOTALS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = REFS2MSS3[i,j];
                    OUT2MSS4[i,j] = (aTOTALS2MSS4 + (bTOTALS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT2MSS1);
        	CreatePyramid(OUT2MSS2);
        	CreatePyramid(OUT2MSS3);
        	CreatePyramid(OUT2MSS4);
        
        	CreateHistogram(OUT2MSS1);
        	CreateHistogram(OUT2MSS2);
        	CreateHistogram(OUT2MSS3);
        	CreateHistogram(OUT2MSS4);
        
        	CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors3 == 7 )
            {
            numeric xAritTOTALS3ETM1, xAritTOTALS3ETM2, xAritTOTALS3ETM3, xAritTOTALS3ETM4, xAritTOTALS3ETM5, xAritTOTALS3ETM7;
            numeric yAritTOTALS3ETM1, yAritTOTALS3ETM2, yAritTOTALS3ETM3, yAritTOTALS3ETM4, yAritTOTALS3ETM5, yAritTOTALS3ETM7;
    
            numeric aTOTALS3ETM1, aTOTALS3ETM2, aTOTALS3ETM3, aTOTALS3ETM4, aTOTALS3ETM5, aTOTALS3ETM7;
            numeric bTOTALS3ETM1, bTOTALS3ETM2, bTOTALS3ETM3, bTOTALS3ETM4, bTOTALS3ETM5, bTOTALS3ETM7;
            numeric rTOTALS3ETM1, rTOTALS3ETM2, rTOTALS3ETM3, rTOTALS3ETM4, rTOTALS3ETM5, rTOTALS3ETM7;
            numeric rQuadTOTALS3ETM1, rQuadTOTALS3ETM2, rQuadTOTALS3ETM3, rQuadTOTALS3ETM4, rQuadTOTALS3ETM5, rQuadTOTALS3ETM7;
            numeric syxTOTALS3ETM1, syxTOTALS3ETM2, syxTOTALS3ETM3, syxTOTALS3ETM4, syxTOTALS3ETM5, syxTOTALS3ETM7;
            numeric bStandTOTALS3ETM1, bStandTOTALS3ETM2, bStandTOTALS3ETM3, bStandTOTALS3ETM4, bStandTOTALS3ETM5, bStandTOTALS3ETM7;
            numeric aStandTOTALS3ETM1, aStandTOTALS3ETM2, aStandTOTALS3ETM3, aStandTOTALS3ETM4, aStandTOTALS3ETM5, aStandTOTALS3ETM7;
    
            numeric xTOTALS3ETM1 = 0;
            numeric xTOTALS3ETM2 = 0;
            numeric xTOTALS3ETM3 = 0;
            numeric xTOTALS3ETM4 = 0;
            numeric xTOTALS3ETM5 = 0;
            numeric xTOTALS3ETM7 = 0;
    
            numeric xQuadTOTALS3ETM1 = 0;
            numeric xQuadTOTALS3ETM2 = 0;
            numeric xQuadTOTALS3ETM3 = 0;
            numeric xQuadTOTALS3ETM4 = 0;
            numeric xQuadTOTALS3ETM5 = 0;
            numeric xQuadTOTALS3ETM7 = 0;
    
            numeric yTOTALS3ETM1 = 0;
            numeric yTOTALS3ETM2 = 0;
            numeric yTOTALS3ETM3 = 0;
            numeric yTOTALS3ETM4 = 0;
            numeric yTOTALS3ETM5 = 0;
            numeric yTOTALS3ETM7 = 0;
    
            numeric yQuadTOTALS3ETM1 = 0;
            numeric yQuadTOTALS3ETM2 = 0;
            numeric yQuadTOTALS3ETM3 = 0;
            numeric yQuadTOTALS3ETM4 = 0;
            numeric yQuadTOTALS3ETM5 = 0;
            numeric yQuadTOTALS3ETM7 = 0;
    
            numeric xyTOTALS3ETM1 = 0;
            numeric xyTOTALS3ETM2 = 0;
            numeric xyTOTALS3ETM3 = 0;
            numeric xyTOTALS3ETM4 = 0;
            numeric xyTOTALS3ETM5 = 0;
            numeric xyTOTALS3ETM7 = 0;
    
            numeric xxAritQuadTOTALS3ETM1 = 0;
            numeric xxAritQuadTOTALS3ETM2 = 0;
            numeric xxAritQuadTOTALS3ETM3 = 0;
            numeric xxAritQuadTOTALS3ETM4 = 0;
            numeric xxAritQuadTOTALS3ETM5 = 0;
            numeric xxAritQuadTOTALS3ETM7 = 0;
    
            numeric yyAritQuadTOTALS3ETM1 = 0;
            numeric yyAritQuadTOTALS3ETM2 = 0;
            numeric yyAritQuadTOTALS3ETM3 = 0;
            numeric yyAritQuadTOTALS3ETM4 = 0;
            numeric yyAritQuadTOTALS3ETM5 = 0;
            numeric yyAritQuadTOTALS3ETM7 = 0;
    
            numeric qXYTOTALS3ETM1 = 0;
            numeric qXYTOTALS3ETM2 = 0;
            numeric qXYTOTALS3ETM3 = 0;
            numeric qXYTOTALS3ETM4 = 0;
            numeric qXYTOTALS3ETM5 = 0;
            numeric qXYTOTALS3ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS3ETM1 = xTOTALS3ETM1 + pifTOTALS4TM1arrayRAND[m];
                xTOTALS3ETM2 = xTOTALS3ETM2 + pifTOTALS4TM2arrayRAND[m];
                xTOTALS3ETM3 = xTOTALS3ETM3 + pifTOTALS4TM3arrayRAND[m];
                xTOTALS3ETM4 = xTOTALS3ETM4 + pifTOTALS4TM4arrayRAND[m];
                xTOTALS3ETM5 = xTOTALS3ETM5 + pifTOTALS4TM5arrayRAND[m];
                xTOTALS3ETM7 = xTOTALS3ETM7 + pifTOTALS4TM7arrayRAND[m];
    
                xQuadTOTALS3ETM1 = (xQuadTOTALS3ETM1 + (pifTOTALS4TM1arrayRAND[m]^2));
                xQuadTOTALS3ETM2 = (xQuadTOTALS3ETM2 + (pifTOTALS4TM2arrayRAND[m]^2));
                xQuadTOTALS3ETM3 = (xQuadTOTALS3ETM3 + (pifTOTALS4TM3arrayRAND[m]^2));
                xQuadTOTALS3ETM4 = (xQuadTOTALS3ETM4 + (pifTOTALS4TM4arrayRAND[m]^2));
                xQuadTOTALS3ETM5 = (xQuadTOTALS3ETM5 + (pifTOTALS4TM5arrayRAND[m]^2));
                xQuadTOTALS3ETM7 = (xQuadTOTALS3ETM7 + (pifTOTALS4TM7arrayRAND[m]^2));
    
                yTOTALS3ETM1 = yTOTALS3ETM1 + pifTOTALS3ETM1arrayRAND[m];
                yTOTALS3ETM2 = yTOTALS3ETM2 + pifTOTALS3ETM2arrayRAND[m];
                yTOTALS3ETM3 = yTOTALS3ETM3 + pifTOTALS3ETM3arrayRAND[m];
                yTOTALS3ETM4 = yTOTALS3ETM4 + pifTOTALS3ETM4arrayRAND[m];
                yTOTALS3ETM5 = yTOTALS3ETM5 + pifTOTALS3ETM5arrayRAND[m];
                yTOTALS3ETM7 = yTOTALS3ETM7 + pifTOTALS3ETM7arrayRAND[m];
                
                yQuadTOTALS3ETM1 = (yQuadTOTALS3ETM1 + (pifTOTALS3ETM1arrayRAND[m]^2));
                yQuadTOTALS3ETM2 = (yQuadTOTALS3ETM2 + (pifTOTALS3ETM2arrayRAND[m]^2));
                yQuadTOTALS3ETM3 = (yQuadTOTALS3ETM3 + (pifTOTALS3ETM3arrayRAND[m]^2));
                yQuadTOTALS3ETM4 = (yQuadTOTALS3ETM4 + (pifTOTALS3ETM4arrayRAND[m]^2));
                yQuadTOTALS3ETM5 = (yQuadTOTALS3ETM5 + (pifTOTALS3ETM5arrayRAND[m]^2));
                yQuadTOTALS3ETM7 = (yQuadTOTALS3ETM7 + (pifTOTALS3ETM7arrayRAND[m]^2));
    
                xyTOTALS3ETM1 = (xyTOTALS3ETM1 + (pifTOTALS4TM1arrayRAND[m] * pifTOTALS3ETM1arrayRAND[m]));
                xyTOTALS3ETM2 = (xyTOTALS3ETM2 + (pifTOTALS4TM2arrayRAND[m] * pifTOTALS3ETM2arrayRAND[m]));
                xyTOTALS3ETM3 = (xyTOTALS3ETM3 + (pifTOTALS4TM3arrayRAND[m] * pifTOTALS3ETM3arrayRAND[m]));
                xyTOTALS3ETM4 = (xyTOTALS3ETM4 + (pifTOTALS4TM4arrayRAND[m] * pifTOTALS3ETM4arrayRAND[m]));
                xyTOTALS3ETM5 = (xyTOTALS3ETM5 + (pifTOTALS4TM5arrayRAND[m] * pifTOTALS3ETM5arrayRAND[m]));
                xyTOTALS3ETM7 = (xyTOTALS3ETM7 + (pifTOTALS4TM7arrayRAND[m] * pifTOTALS3ETM7arrayRAND[m]));
            }	
            
            xAritTOTALS3ETM1 = xTOTALS3ETM1 / minPifVAL;
            xAritTOTALS3ETM2 = xTOTALS3ETM2 / minPifVAL;
            xAritTOTALS3ETM3 = xTOTALS3ETM3 / minPifVAL;
            xAritTOTALS3ETM4 = xTOTALS3ETM4 / minPifVAL;
            xAritTOTALS3ETM5 = xTOTALS3ETM5 / minPifVAL;
            xAritTOTALS3ETM7 = xTOTALS3ETM7 / minPifVAL;
    
            yAritTOTALS3ETM1 = yTOTALS3ETM1 / minPifVAL;
            yAritTOTALS3ETM2 = yTOTALS3ETM2 / minPifVAL;
            yAritTOTALS3ETM3 = yTOTALS3ETM3 / minPifVAL;
            yAritTOTALS3ETM4 = yTOTALS3ETM4 / minPifVAL;
            yAritTOTALS3ETM5 = yTOTALS3ETM5 / minPifVAL;
            yAritTOTALS3ETM7 = yTOTALS3ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3ETM1 = (xxAritQuadTOTALS3ETM1 + ((pifTOTALS4TM1arrayRAND[n] - xAritTOTALS3ETM1)^2));
                xxAritQuadTOTALS3ETM2 = (xxAritQuadTOTALS3ETM2 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS3ETM2)^2));
                xxAritQuadTOTALS3ETM3 = (xxAritQuadTOTALS3ETM3 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS3ETM3)^2));
                xxAritQuadTOTALS3ETM4 = (xxAritQuadTOTALS3ETM4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS3ETM4)^2));
                xxAritQuadTOTALS3ETM5 = (xxAritQuadTOTALS3ETM5 + ((pifTOTALS4TM5arrayRAND[n] - xAritTOTALS3ETM5)^2));
                xxAritQuadTOTALS3ETM7 = (xxAritQuadTOTALS3ETM7 + ((pifTOTALS4TM7arrayRAND[n] - xAritTOTALS3ETM7)^2));
    
                yyAritQuadTOTALS3ETM1 = (yyAritQuadTOTALS3ETM1 + ((pifTOTALS3ETM1arrayRAND[n] - yAritTOTALS3ETM1)^2));
                yyAritQuadTOTALS3ETM2 = (yyAritQuadTOTALS3ETM2 + ((pifTOTALS3ETM2arrayRAND[n] - yAritTOTALS3ETM2)^2));
                yyAritQuadTOTALS3ETM3 = (yyAritQuadTOTALS3ETM3 + ((pifTOTALS3ETM3arrayRAND[n] - yAritTOTALS3ETM3)^2));
                yyAritQuadTOTALS3ETM4 = (yyAritQuadTOTALS3ETM4 + ((pifTOTALS3ETM4arrayRAND[n] - yAritTOTALS3ETM4)^2));
                yyAritQuadTOTALS3ETM5 = (yyAritQuadTOTALS3ETM5 + ((pifTOTALS3ETM5arrayRAND[n] - yAritTOTALS3ETM5)^2));
                yyAritQuadTOTALS3ETM7 = (yyAritQuadTOTALS3ETM7 + ((pifTOTALS3ETM7arrayRAND[n] - yAritTOTALS3ETM7)^2));
    
                qXYTOTALS3ETM1 = (qXYTOTALS3ETM1 + ((pifTOTALS4TM1arrayRAND[n] - xAritTOTALS3ETM1) * (pifTOTALS3ETM1arrayRAND[n] - yAritTOTALS3ETM1)));
                qXYTOTALS3ETM2 = (qXYTOTALS3ETM2 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS3ETM2) * (pifTOTALS3ETM2arrayRAND[n] - yAritTOTALS3ETM2)));
                qXYTOTALS3ETM3 = (qXYTOTALS3ETM3 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS3ETM3) * (pifTOTALS3ETM3arrayRAND[n] - yAritTOTALS3ETM3)));
                qXYTOTALS3ETM4 = (qXYTOTALS3ETM4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS3ETM4) * (pifTOTALS3ETM4arrayRAND[n] - yAritTOTALS3ETM4)));
                qXYTOTALS3ETM5 = (qXYTOTALS3ETM5 + ((pifTOTALS4TM5arrayRAND[n] - xAritTOTALS3ETM5) * (pifTOTALS3ETM5arrayRAND[n] - yAritTOTALS3ETM5)));
                qXYTOTALS3ETM7 = (qXYTOTALS3ETM7 + ((pifTOTALS4TM7arrayRAND[n] - xAritTOTALS3ETM7) * (pifTOTALS3ETM7arrayRAND[n] - yAritTOTALS3ETM7)));
            }
        
            aTOTALS3ETM1 = (((xQuadTOTALS3ETM1 * yTOTALS3ETM1) - (xTOTALS3ETM1 * xyTOTALS3ETM1)) / ((minPifVAL * xQuadTOTALS3ETM1) - (xTOTALS3ETM1^2)));
            aTOTALS3ETM2 = (((xQuadTOTALS3ETM2 * yTOTALS3ETM2) - (xTOTALS3ETM2 * xyTOTALS3ETM2)) / ((minPifVAL * xQuadTOTALS3ETM2) - (xTOTALS3ETM2^2)));
            aTOTALS3ETM3 = (((xQuadTOTALS3ETM3 * yTOTALS3ETM3) - (xTOTALS3ETM3 * xyTOTALS3ETM3)) / ((minPifVAL * xQuadTOTALS3ETM3) - (xTOTALS3ETM3^2)));
            aTOTALS3ETM4 = (((xQuadTOTALS3ETM4 * yTOTALS3ETM4) - (xTOTALS3ETM4 * xyTOTALS3ETM4)) / ((minPifVAL * xQuadTOTALS3ETM4) - (xTOTALS3ETM4^2)));
            aTOTALS3ETM5 = (((xQuadTOTALS3ETM5 * yTOTALS3ETM5) - (xTOTALS3ETM5 * xyTOTALS3ETM5)) / ((minPifVAL * xQuadTOTALS3ETM5) - (xTOTALS3ETM5^2)));
            aTOTALS3ETM7 = (((xQuadTOTALS3ETM7 * yTOTALS3ETM7) - (xTOTALS3ETM7 * xyTOTALS3ETM7)) / ((minPifVAL * xQuadTOTALS3ETM7) - (xTOTALS3ETM7^2)));
            
            bTOTALS3ETM1 = qXYTOTALS3ETM1 / xxAritQuadTOTALS3ETM1;
            bTOTALS3ETM2 = qXYTOTALS3ETM2 / xxAritQuadTOTALS3ETM2;
            bTOTALS3ETM3 = qXYTOTALS3ETM3 / xxAritQuadTOTALS3ETM3;
            bTOTALS3ETM4 = qXYTOTALS3ETM4 / xxAritQuadTOTALS3ETM4;
            bTOTALS3ETM5 = qXYTOTALS3ETM5 / xxAritQuadTOTALS3ETM5;
            bTOTALS3ETM7 = qXYTOTALS3ETM7 / xxAritQuadTOTALS3ETM7;
    
            rTOTALS3ETM1 = (qXYTOTALS3ETM1 / ((xxAritQuadTOTALS3ETM1 * yyAritQuadTOTALS3ETM1)^0.5));
            rTOTALS3ETM2 = (qXYTOTALS3ETM2 / ((xxAritQuadTOTALS3ETM2 * yyAritQuadTOTALS3ETM2)^0.5));
            rTOTALS3ETM3 = (qXYTOTALS3ETM3 / ((xxAritQuadTOTALS3ETM3 * yyAritQuadTOTALS3ETM3)^0.5));
            rTOTALS3ETM4 = (qXYTOTALS3ETM4 / ((xxAritQuadTOTALS3ETM4 * yyAritQuadTOTALS3ETM4)^0.5));
            rTOTALS3ETM5 = (qXYTOTALS3ETM5 / ((xxAritQuadTOTALS3ETM5 * yyAritQuadTOTALS3ETM5)^0.5));
            rTOTALS3ETM7 = (qXYTOTALS3ETM7 / ((xxAritQuadTOTALS3ETM7 * yyAritQuadTOTALS3ETM7)^0.5));
    
            rQuadTOTALS3ETM1 = ((rTOTALS3ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3ETM2 = ((rTOTALS3ETM2^2) * 100);
            rQuadTOTALS3ETM3 = ((rTOTALS3ETM3^2) * 100);
            rQuadTOTALS3ETM4 = ((rTOTALS3ETM4^2) * 100);
            rQuadTOTALS3ETM5 = ((rTOTALS3ETM5^2) * 100);
            rQuadTOTALS3ETM7 = ((rTOTALS3ETM7^2) * 100);
        
            syxTOTALS3ETM1 = (((yyAritQuadTOTALS3ETM1 - ((qXYTOTALS3ETM1^2) / xxAritQuadTOTALS3ETM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM2 = (((yyAritQuadTOTALS3ETM2 - ((qXYTOTALS3ETM2^2) / xxAritQuadTOTALS3ETM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM3 = (((yyAritQuadTOTALS3ETM3 - ((qXYTOTALS3ETM3^2) / xxAritQuadTOTALS3ETM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM4 = (((yyAritQuadTOTALS3ETM4 - ((qXYTOTALS3ETM4^2) / xxAritQuadTOTALS3ETM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM5 = (((yyAritQuadTOTALS3ETM5 - ((qXYTOTALS3ETM5^2) / xxAritQuadTOTALS3ETM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS3ETM7 = (((yyAritQuadTOTALS3ETM7 - ((qXYTOTALS3ETM7^2) / xxAritQuadTOTALS3ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3ETM1 = (((syxTOTALS3ETM1^2) / xxAritQuadTOTALS3ETM1)^0.5);
            bStandTOTALS3ETM2 = (((syxTOTALS3ETM2^2) / xxAritQuadTOTALS3ETM2)^0.5);
            bStandTOTALS3ETM3 = (((syxTOTALS3ETM3^2) / xxAritQuadTOTALS3ETM3)^0.5);
            bStandTOTALS3ETM4 = (((syxTOTALS3ETM4^2) / xxAritQuadTOTALS3ETM4)^0.5);
            bStandTOTALS3ETM5 = (((syxTOTALS3ETM5^2) / xxAritQuadTOTALS3ETM5)^0.5);
            bStandTOTALS3ETM7 = (((syxTOTALS3ETM7^2) / xxAritQuadTOTALS3ETM7)^0.5);
    
            aStandTOTALS3ETM1 = (bStandTOTALS3ETM1 * ((xQuadTOTALS3ETM1 / minPifVAL)^0.5));
            aStandTOTALS3ETM2 = (bStandTOTALS3ETM2 * ((xQuadTOTALS3ETM2 / minPifVAL)^0.5));
            aStandTOTALS3ETM3 = (bStandTOTALS3ETM3 * ((xQuadTOTALS3ETM3 / minPifVAL)^0.5));
            aStandTOTALS3ETM4 = (bStandTOTALS3ETM4 * ((xQuadTOTALS3ETM4 / minPifVAL)^0.5));
            aStandTOTALS3ETM5 = (bStandTOTALS3ETM5 * ((xQuadTOTALS3ETM5 / minPifVAL)^0.5));
            aStandTOTALS3ETM7 = (bStandTOTALS3ETM7 * ((xQuadTOTALS3ETM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM1, bTOTALS3ETM1, rTOTALS3ETM1, rQuadTOTALS3ETM1, aStandTOTALS3ETM1, bStandTOTALS3ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM2, bTOTALS3ETM2, rTOTALS3ETM2, rQuadTOTALS3ETM2, aStandTOTALS3ETM2, bStandTOTALS3ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM3, bTOTALS3ETM3, rTOTALS3ETM3, rQuadTOTALS3ETM3, aStandTOTALS3ETM3, bStandTOTALS3ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM4, bTOTALS3ETM4, rTOTALS3ETM4, rQuadTOTALS3ETM4, aStandTOTALS3ETM4, bStandTOTALS3ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS3ETM5, bTOTALS3ETM5, rTOTALS3ETM5, rQuadTOTALS3ETM5, aStandTOTALS3ETM5, bStandTOTALS3ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS3ETM7, bTOTALS3ETM7, rTOTALS3ETM7, rQuadTOTALS3ETM7, aStandTOTALS3ETM7, bStandTOTALS3ETM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifTOTALS3ETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifTOTALS3ETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifTOTALS3ETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifTOTALS3ETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifTOTALS3ETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3ETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifTOTALS3ETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3ETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS3ETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT3ETM1[i,j] = (aTOTALS3ETM1 + (bTOTALS3ETM1 * REFS3ETM1[i,j]));
                    OUT3ETM2[i,j] = (aTOTALS3ETM2 + (bTOTALS3ETM2 * REFS3ETM2[i,j]));
                    OUT3ETM3[i,j] = (aTOTALS3ETM3 + (bTOTALS3ETM3 * REFS3ETM3[i,j]));
                    OUT3ETM4[i,j] = (aTOTALS3ETM4 + (bTOTALS3ETM4 * REFS3ETM4[i,j]));
                    OUT3ETM5[i,j] = (aTOTALS3ETM5 + (bTOTALS3ETM5 * REFS3ETM5[i,j]));
                    OUT3ETM7[i,j] = (aTOTALS3ETM7 + (bTOTALS3ETM7 * REFS3ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3ETM1);
        	CreatePyramid(OUT3ETM2);
        	CreatePyramid(OUT3ETM3);
        	CreatePyramid(OUT3ETM4);
        	CreatePyramid(OUT3ETM5);
        	CreatePyramid(OUT3ETM7);
        
        	CreateHistogram(OUT3ETM1);
        	CreateHistogram(OUT3ETM2);
        	CreateHistogram(OUT3ETM3);
        	CreateHistogram(OUT3ETM4);
        	CreateHistogram(OUT3ETM5);
        	CreateHistogram(OUT3ETM7);
        
        	CloseRaster(REFS3ETM1);
            CloseRaster(REFS3ETM2);
            CloseRaster(REFS3ETM3);
            CloseRaster(REFS3ETM4);
            CloseRaster(REFS3ETM5);
            CloseRaster(REFS3ETM7);
    
            CloseRaster(OUT3ETM1);
            CloseRaster(OUT3ETM2);
            CloseRaster(OUT3ETM3);
            CloseRaster(OUT3ETM4);
            CloseRaster(OUT3ETM5);
            CloseRaster(OUT3ETM7);
            
        	printf("Scene 3 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors3 == 6 )
            {
            numeric xAritTOTALS3TM1, xAritTOTALS3TM2, xAritTOTALS3TM3, xAritTOTALS3TM4, xAritTOTALS3TM5, xAritTOTALS3TM7;
            numeric yAritTOTALS3TM1, yAritTOTALS3TM2, yAritTOTALS3TM3, yAritTOTALS3TM4, yAritTOTALS3TM5, yAritTOTALS3TM7;
    
            numeric aTOTALS3TM1, aTOTALS3TM2, aTOTALS3TM3, aTOTALS3TM4, aTOTALS3TM5, aTOTALS3TM7;
            numeric bTOTALS3TM1, bTOTALS3TM2, bTOTALS3TM3, bTOTALS3TM4, bTOTALS3TM5, bTOTALS3TM7;
            numeric rTOTALS3TM1, rTOTALS3TM2, rTOTALS3TM3, rTOTALS3TM4, rTOTALS3TM5, rTOTALS3TM7;
            numeric rQuadTOTALS3TM1, rQuadTOTALS3TM2, rQuadTOTALS3TM3, rQuadTOTALS3TM4, rQuadTOTALS3TM5, rQuadTOTALS3TM7;
            numeric syxTOTALS3TM1, syxTOTALS3TM2, syxTOTALS3TM3, syxTOTALS3TM4, syxTOTALS3TM5, syxTOTALS3TM7;
            numeric bStandTOTALS3TM1, bStandTOTALS3TM2, bStandTOTALS3TM3, bStandTOTALS3TM4, bStandTOTALS3TM5, bStandTOTALS3TM7;
            numeric aStandTOTALS3TM1, aStandTOTALS3TM2, aStandTOTALS3TM3, aStandTOTALS3TM4, aStandTOTALS3TM5, aStandTOTALS3TM7;
    
            numeric xTOTALS3TM1 = 0;
            numeric xTOTALS3TM2 = 0;
            numeric xTOTALS3TM3 = 0;
            numeric xTOTALS3TM4 = 0;
            numeric xTOTALS3TM5 = 0;
            numeric xTOTALS3TM7 = 0;
    
            numeric xQuadTOTALS3TM1 = 0;
            numeric xQuadTOTALS3TM2 = 0;
            numeric xQuadTOTALS3TM3 = 0;
            numeric xQuadTOTALS3TM4 = 0;
            numeric xQuadTOTALS3TM5 = 0;
            numeric xQuadTOTALS3TM7 = 0;
    
            numeric yTOTALS3TM1 = 0;
            numeric yTOTALS3TM2 = 0;
            numeric yTOTALS3TM3 = 0;
            numeric yTOTALS3TM4 = 0;
            numeric yTOTALS3TM5 = 0;
            numeric yTOTALS3TM7 = 0;
    
            numeric yQuadTOTALS3TM1 = 0;
            numeric yQuadTOTALS3TM2 = 0;
            numeric yQuadTOTALS3TM3 = 0;
            numeric yQuadTOTALS3TM4 = 0;
            numeric yQuadTOTALS3TM5 = 0;
            numeric yQuadTOTALS3TM7 = 0;
    
            numeric xyTOTALS3TM1 = 0;
            numeric xyTOTALS3TM2 = 0;
            numeric xyTOTALS3TM3 = 0;
            numeric xyTOTALS3TM4 = 0;
            numeric xyTOTALS3TM5 = 0;
            numeric xyTOTALS3TM7 = 0;
    
            numeric xxAritQuadTOTALS3TM1 = 0;
            numeric xxAritQuadTOTALS3TM2 = 0;
            numeric xxAritQuadTOTALS3TM3 = 0;
            numeric xxAritQuadTOTALS3TM4 = 0;
            numeric xxAritQuadTOTALS3TM5 = 0;
            numeric xxAritQuadTOTALS3TM7 = 0;
    
            numeric yyAritQuadTOTALS3TM1 = 0;
            numeric yyAritQuadTOTALS3TM2 = 0;
            numeric yyAritQuadTOTALS3TM3 = 0;
            numeric yyAritQuadTOTALS3TM4 = 0;
            numeric yyAritQuadTOTALS3TM5 = 0;
            numeric yyAritQuadTOTALS3TM7 = 0;
    
            numeric qXYTOTALS3TM1 = 0;
            numeric qXYTOTALS3TM2 = 0;
            numeric qXYTOTALS3TM3 = 0;
            numeric qXYTOTALS3TM4 = 0;
            numeric qXYTOTALS3TM5 = 0;
            numeric qXYTOTALS3TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS3TM1 = xTOTALS3TM1 + pifTOTALS4TM1arrayRAND[m];
                xTOTALS3TM2 = xTOTALS3TM2 + pifTOTALS4TM2arrayRAND[m];
                xTOTALS3TM3 = xTOTALS3TM3 + pifTOTALS4TM3arrayRAND[m];
                xTOTALS3TM4 = xTOTALS3TM4 + pifTOTALS4TM4arrayRAND[m];
                xTOTALS3TM5 = xTOTALS3TM5 + pifTOTALS4TM5arrayRAND[m];
                xTOTALS3TM7 = xTOTALS3TM7 + pifTOTALS4TM7arrayRAND[m];
    
                xQuadTOTALS3TM1 = (xQuadTOTALS3TM1 + (pifTOTALS4TM1arrayRAND[m]^2));
                xQuadTOTALS3TM2 = (xQuadTOTALS3TM2 + (pifTOTALS4TM2arrayRAND[m]^2));
                xQuadTOTALS3TM3 = (xQuadTOTALS3TM3 + (pifTOTALS4TM3arrayRAND[m]^2));
                xQuadTOTALS3TM4 = (xQuadTOTALS3TM4 + (pifTOTALS4TM4arrayRAND[m]^2));
                xQuadTOTALS3TM5 = (xQuadTOTALS3TM5 + (pifTOTALS4TM5arrayRAND[m]^2));
                xQuadTOTALS3TM7 = (xQuadTOTALS3TM7 + (pifTOTALS4TM7arrayRAND[m]^2));
    
                yTOTALS3TM1 = yTOTALS3TM1 + pifTOTALS3TM1arrayRAND[m];
                yTOTALS3TM2 = yTOTALS3TM2 + pifTOTALS3TM2arrayRAND[m];
                yTOTALS3TM3 = yTOTALS3TM3 + pifTOTALS3TM3arrayRAND[m];
                yTOTALS3TM4 = yTOTALS3TM4 + pifTOTALS3TM4arrayRAND[m];
                yTOTALS3TM5 = yTOTALS3TM5 + pifTOTALS3TM5arrayRAND[m];
                yTOTALS3TM7 = yTOTALS3TM7 + pifTOTALS3TM7arrayRAND[m];
                
                yQuadTOTALS3TM1 = (yQuadTOTALS3TM1 + (pifTOTALS3TM1arrayRAND[m]^2));
                yQuadTOTALS3TM2 = (yQuadTOTALS3TM2 + (pifTOTALS3TM2arrayRAND[m]^2));
                yQuadTOTALS3TM3 = (yQuadTOTALS3TM3 + (pifTOTALS3TM3arrayRAND[m]^2));
                yQuadTOTALS3TM4 = (yQuadTOTALS3TM4 + (pifTOTALS3TM4arrayRAND[m]^2));
                yQuadTOTALS3TM5 = (yQuadTOTALS3TM5 + (pifTOTALS3TM5arrayRAND[m]^2));
                yQuadTOTALS3TM7 = (yQuadTOTALS3TM7 + (pifTOTALS3TM7arrayRAND[m]^2));
    
                xyTOTALS3TM1 = (xyTOTALS3TM1 + (pifTOTALS4TM1arrayRAND[m] * pifTOTALS3TM1arrayRAND[m]));
                xyTOTALS3TM2 = (xyTOTALS3TM2 + (pifTOTALS4TM2arrayRAND[m] * pifTOTALS3TM2arrayRAND[m]));
                xyTOTALS3TM3 = (xyTOTALS3TM3 + (pifTOTALS4TM3arrayRAND[m] * pifTOTALS3TM3arrayRAND[m]));
                xyTOTALS3TM4 = (xyTOTALS3TM4 + (pifTOTALS4TM4arrayRAND[m] * pifTOTALS3TM4arrayRAND[m]));
                xyTOTALS3TM5 = (xyTOTALS3TM5 + (pifTOTALS4TM5arrayRAND[m] * pifTOTALS3TM5arrayRAND[m]));
                xyTOTALS3TM7 = (xyTOTALS3TM7 + (pifTOTALS4TM7arrayRAND[m] * pifTOTALS3TM7arrayRAND[m]));
            }	
            
            xAritTOTALS3TM1 = xTOTALS3TM1 / minPifVAL;
            xAritTOTALS3TM2 = xTOTALS3TM2 / minPifVAL;
            xAritTOTALS3TM3 = xTOTALS3TM3 / minPifVAL;
            xAritTOTALS3TM4 = xTOTALS3TM4 / minPifVAL;
            xAritTOTALS3TM5 = xTOTALS3TM5 / minPifVAL;
            xAritTOTALS3TM7 = xTOTALS3TM7 / minPifVAL;
    
            yAritTOTALS3TM1 = yTOTALS3TM1 / minPifVAL;
            yAritTOTALS3TM2 = yTOTALS3TM2 / minPifVAL;
            yAritTOTALS3TM3 = yTOTALS3TM3 / minPifVAL;
            yAritTOTALS3TM4 = yTOTALS3TM4 / minPifVAL;
            yAritTOTALS3TM5 = yTOTALS3TM5 / minPifVAL;
            yAritTOTALS3TM7 = yTOTALS3TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3TM1 = (xxAritQuadTOTALS3TM1 + ((pifTOTALS4TM1arrayRAND[n] - xAritTOTALS3TM1)^2));
                xxAritQuadTOTALS3TM2 = (xxAritQuadTOTALS3TM2 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS3TM2)^2));
                xxAritQuadTOTALS3TM3 = (xxAritQuadTOTALS3TM3 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS3TM3)^2));
                xxAritQuadTOTALS3TM4 = (xxAritQuadTOTALS3TM4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS3TM4)^2));
                xxAritQuadTOTALS3TM5 = (xxAritQuadTOTALS3TM5 + ((pifTOTALS4TM5arrayRAND[n] - xAritTOTALS3TM5)^2));
                xxAritQuadTOTALS3TM7 = (xxAritQuadTOTALS3TM7 + ((pifTOTALS4TM7arrayRAND[n] - xAritTOTALS3TM7)^2));
    
                yyAritQuadTOTALS3TM1 = (yyAritQuadTOTALS3TM1 + ((pifTOTALS3TM1arrayRAND[n] - yAritTOTALS3TM1)^2));
                yyAritQuadTOTALS3TM2 = (yyAritQuadTOTALS3TM2 + ((pifTOTALS3TM2arrayRAND[n] - yAritTOTALS3TM2)^2));
                yyAritQuadTOTALS3TM3 = (yyAritQuadTOTALS3TM3 + ((pifTOTALS3TM3arrayRAND[n] - yAritTOTALS3TM3)^2));
                yyAritQuadTOTALS3TM4 = (yyAritQuadTOTALS3TM4 + ((pifTOTALS3TM4arrayRAND[n] - yAritTOTALS3TM4)^2));
                yyAritQuadTOTALS3TM5 = (yyAritQuadTOTALS3TM5 + ((pifTOTALS3TM5arrayRAND[n] - yAritTOTALS3TM5)^2));
                yyAritQuadTOTALS3TM7 = (yyAritQuadTOTALS3TM7 + ((pifTOTALS3TM7arrayRAND[n] - yAritTOTALS3TM7)^2));
    
                qXYTOTALS3TM1 = (qXYTOTALS3TM1 + ((pifTOTALS4TM1arrayRAND[n] - xAritTOTALS3TM1) * (pifTOTALS3TM1arrayRAND[n] - yAritTOTALS3TM1)));
                qXYTOTALS3TM2 = (qXYTOTALS3TM2 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS3TM2) * (pifTOTALS3TM2arrayRAND[n] - yAritTOTALS3TM2)));
                qXYTOTALS3TM3 = (qXYTOTALS3TM3 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS3TM3) * (pifTOTALS3TM3arrayRAND[n] - yAritTOTALS3TM3)));
                qXYTOTALS3TM4 = (qXYTOTALS3TM4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS3TM4) * (pifTOTALS3TM4arrayRAND[n] - yAritTOTALS3TM4)));
                qXYTOTALS3TM5 = (qXYTOTALS3TM5 + ((pifTOTALS4TM5arrayRAND[n] - xAritTOTALS3TM5) * (pifTOTALS3TM5arrayRAND[n] - yAritTOTALS3TM5)));
                qXYTOTALS3TM7 = (qXYTOTALS3TM7 + ((pifTOTALS4TM7arrayRAND[n] - xAritTOTALS3TM7) * (pifTOTALS3TM7arrayRAND[n] - yAritTOTALS3TM7)));
            }
        
            aTOTALS3TM1 = (((xQuadTOTALS3TM1 * yTOTALS3TM1) - (xTOTALS3TM1 * xyTOTALS3TM1)) / ((minPifVAL * xQuadTOTALS3TM1) - (xTOTALS3TM1^2)));
            aTOTALS3TM2 = (((xQuadTOTALS3TM2 * yTOTALS3TM2) - (xTOTALS3TM2 * xyTOTALS3TM2)) / ((minPifVAL * xQuadTOTALS3TM2) - (xTOTALS3TM2^2)));
            aTOTALS3TM3 = (((xQuadTOTALS3TM3 * yTOTALS3TM3) - (xTOTALS3TM3 * xyTOTALS3TM3)) / ((minPifVAL * xQuadTOTALS3TM3) - (xTOTALS3TM3^2)));
            aTOTALS3TM4 = (((xQuadTOTALS3TM4 * yTOTALS3TM4) - (xTOTALS3TM4 * xyTOTALS3TM4)) / ((minPifVAL * xQuadTOTALS3TM4) - (xTOTALS3TM4^2)));
            aTOTALS3TM5 = (((xQuadTOTALS3TM5 * yTOTALS3TM5) - (xTOTALS3TM5 * xyTOTALS3TM5)) / ((minPifVAL * xQuadTOTALS3TM5) - (xTOTALS3TM5^2)));
            aTOTALS3TM7 = (((xQuadTOTALS3TM7 * yTOTALS3TM7) - (xTOTALS3TM7 * xyTOTALS3TM7)) / ((minPifVAL * xQuadTOTALS3TM7) - (xTOTALS3TM7^2)));
            
            bTOTALS3TM1 = qXYTOTALS3TM1 / xxAritQuadTOTALS3TM1;
            bTOTALS3TM2 = qXYTOTALS3TM2 / xxAritQuadTOTALS3TM2;
            bTOTALS3TM3 = qXYTOTALS3TM3 / xxAritQuadTOTALS3TM3;
            bTOTALS3TM4 = qXYTOTALS3TM4 / xxAritQuadTOTALS3TM4;
            bTOTALS3TM5 = qXYTOTALS3TM5 / xxAritQuadTOTALS3TM5;
            bTOTALS3TM7 = qXYTOTALS3TM7 / xxAritQuadTOTALS3TM7;
    
            rTOTALS3TM1 = (qXYTOTALS3TM1 / ((xxAritQuadTOTALS3TM1 * yyAritQuadTOTALS3TM1)^0.5));
            rTOTALS3TM2 = (qXYTOTALS3TM2 / ((xxAritQuadTOTALS3TM2 * yyAritQuadTOTALS3TM2)^0.5));
            rTOTALS3TM3 = (qXYTOTALS3TM3 / ((xxAritQuadTOTALS3TM3 * yyAritQuadTOTALS3TM3)^0.5));
            rTOTALS3TM4 = (qXYTOTALS3TM4 / ((xxAritQuadTOTALS3TM4 * yyAritQuadTOTALS3TM4)^0.5));
            rTOTALS3TM5 = (qXYTOTALS3TM5 / ((xxAritQuadTOTALS3TM5 * yyAritQuadTOTALS3TM5)^0.5));
            rTOTALS3TM7 = (qXYTOTALS3TM7 / ((xxAritQuadTOTALS3TM7 * yyAritQuadTOTALS3TM7)^0.5));
    
            rQuadTOTALS3TM1 = ((rTOTALS3TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3TM2 = ((rTOTALS3TM2^2) * 100);
            rQuadTOTALS3TM3 = ((rTOTALS3TM3^2) * 100);
            rQuadTOTALS3TM4 = ((rTOTALS3TM4^2) * 100);
            rQuadTOTALS3TM5 = ((rTOTALS3TM5^2) * 100);
            rQuadTOTALS3TM7 = ((rTOTALS3TM7^2) * 100);
        
            syxTOTALS3TM1 = (((yyAritQuadTOTALS3TM1 - ((qXYTOTALS3TM1^2) / xxAritQuadTOTALS3TM1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM2 = (((yyAritQuadTOTALS3TM2 - ((qXYTOTALS3TM2^2) / xxAritQuadTOTALS3TM2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM3 = (((yyAritQuadTOTALS3TM3 - ((qXYTOTALS3TM3^2) / xxAritQuadTOTALS3TM3)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM4 = (((yyAritQuadTOTALS3TM4 - ((qXYTOTALS3TM4^2) / xxAritQuadTOTALS3TM4)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM5 = (((yyAritQuadTOTALS3TM5 - ((qXYTOTALS3TM5^2) / xxAritQuadTOTALS3TM5)) / (minPifVAL - 2))^0.5);
            syxTOTALS3TM7 = (((yyAritQuadTOTALS3TM7 - ((qXYTOTALS3TM7^2) / xxAritQuadTOTALS3TM7)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3TM1 = (((syxTOTALS3TM1^2) / xxAritQuadTOTALS3TM1)^0.5);
            bStandTOTALS3TM2 = (((syxTOTALS3TM2^2) / xxAritQuadTOTALS3TM2)^0.5);
            bStandTOTALS3TM3 = (((syxTOTALS3TM3^2) / xxAritQuadTOTALS3TM3)^0.5);
            bStandTOTALS3TM4 = (((syxTOTALS3TM4^2) / xxAritQuadTOTALS3TM4)^0.5);
            bStandTOTALS3TM5 = (((syxTOTALS3TM5^2) / xxAritQuadTOTALS3TM5)^0.5);
            bStandTOTALS3TM7 = (((syxTOTALS3TM7^2) / xxAritQuadTOTALS3TM7)^0.5);
    
            aStandTOTALS3TM1 = (bStandTOTALS3TM1 * ((xQuadTOTALS3TM1 / minPifVAL)^0.5));
            aStandTOTALS3TM2 = (bStandTOTALS3TM2 * ((xQuadTOTALS3TM2 / minPifVAL)^0.5));
            aStandTOTALS3TM3 = (bStandTOTALS3TM3 * ((xQuadTOTALS3TM3 / minPifVAL)^0.5));
            aStandTOTALS3TM4 = (bStandTOTALS3TM4 * ((xQuadTOTALS3TM4 / minPifVAL)^0.5));
            aStandTOTALS3TM5 = (bStandTOTALS3TM5 * ((xQuadTOTALS3TM5 / minPifVAL)^0.5));
            aStandTOTALS3TM7 = (bStandTOTALS3TM7 * ((xQuadTOTALS3TM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM1, bTOTALS3TM1, rTOTALS3TM1, rQuadTOTALS3TM1, aStandTOTALS3TM1, bStandTOTALS3TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM2, bTOTALS3TM2, rTOTALS3TM2, rQuadTOTALS3TM2, aStandTOTALS3TM2, bStandTOTALS3TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM3, bTOTALS3TM3, rTOTALS3TM3, rQuadTOTALS3TM3, aStandTOTALS3TM3, bStandTOTALS3TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM4, bTOTALS3TM4, rTOTALS3TM4, rQuadTOTALS3TM4, aStandTOTALS3TM4, bStandTOTALS3TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aTOTALS3TM5, bTOTALS3TM5, rTOTALS3TM5, rQuadTOTALS3TM5, aStandTOTALS3TM5, bStandTOTALS3TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aTOTALS3TM7, bTOTALS3TM7, rTOTALS3TM7, rQuadTOTALS3TM7, aStandTOTALS3TM7, bStandTOTALS3TM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifTOTALS3TM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifTOTALS3TM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifTOTALS3TM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifTOTALS3TM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifTOTALS3TM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM5arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3TM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifTOTALS3TM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3TM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifTOTALS3TM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT3TM1[i,j] = (aTOTALS3TM1 + (bTOTALS3TM1 * REFS3TM1[i,j]));
                    OUT3TM2[i,j] = (aTOTALS3TM2 + (bTOTALS3TM2 * REFS3TM2[i,j]));
                    OUT3TM3[i,j] = (aTOTALS3TM3 + (bTOTALS3TM3 * REFS3TM3[i,j]));
                    OUT3TM4[i,j] = (aTOTALS3TM4 + (bTOTALS3TM4 * REFS3TM4[i,j]));
                    OUT3TM5[i,j] = (aTOTALS3TM5 + (bTOTALS3TM5 * REFS3TM5[i,j]));
                    OUT3TM7[i,j] = (aTOTALS3TM7 + (bTOTALS3TM7 * REFS3TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3TM1);
        	CreatePyramid(OUT3TM2);
        	CreatePyramid(OUT3TM3);
        	CreatePyramid(OUT3TM4);
        	CreatePyramid(OUT3TM5);
        	CreatePyramid(OUT3TM7);
        
        	CreateHistogram(OUT3TM1);
        	CreateHistogram(OUT3TM2);
        	CreateHistogram(OUT3TM3);
        	CreateHistogram(OUT3TM4);
        	CreateHistogram(OUT3TM5);
        	CreateHistogram(OUT3TM7);
        
        	CloseRaster(REFS3TM1);
            CloseRaster(REFS3TM2);
            CloseRaster(REFS3TM3);
            CloseRaster(REFS3TM4);
            CloseRaster(REFS3TM5);
            CloseRaster(REFS3TM7);
    
            CloseRaster(OUT3TM1);
            CloseRaster(OUT3TM2);
            CloseRaster(OUT3TM3);
            CloseRaster(OUT3TM4);
            CloseRaster(OUT3TM5);
            CloseRaster(OUT3TM7);
        
        	printf("Scene 3 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS3MSS1, xAritTOTALS3MSS2, xAritTOTALS3MSS4;
            numeric yAritTOTALS3MSS1, yAritTOTALS3MSS2, yAritTOTALS3MSS4;
    
            numeric aTOTALS3MSS1, aTOTALS3MSS2, aTOTALS3MSS4;
            numeric bTOTALS3MSS1, bTOTALS3MSS2, bTOTALS3MSS4;
            numeric rTOTALS3MSS1, rTOTALS3MSS2, rTOTALS3MSS4;
            numeric rQuadTOTALS3MSS1, rQuadTOTALS3MSS2, rQuadTOTALS3MSS4;
            numeric syxTOTALS3MSS1, syxTOTALS3MSS2, syxTOTALS3MSS4;
            numeric bStandTOTALS3MSS1, bStandTOTALS3MSS2, bStandTOTALS3MSS4;
            numeric aStandTOTALS3MSS1, aStandTOTALS3MSS2, aStandTOTALS3MSS4;
    
            numeric xTOTALS3MSS1 = 0;
            numeric xTOTALS3MSS2 = 0;
            numeric xTOTALS3MSS4 = 0;
    
            numeric xQuadTOTALS3MSS1 = 0;
            numeric xQuadTOTALS3MSS2 = 0;
            numeric xQuadTOTALS3MSS4 = 0;
    
            numeric yTOTALS3MSS1 = 0;
            numeric yTOTALS3MSS2 = 0;
            numeric yTOTALS3MSS4 = 0;
    
            numeric yQuadTOTALS3MSS1 = 0;
            numeric yQuadTOTALS3MSS2 = 0;
            numeric yQuadTOTALS3MSS4 = 0;
    
            numeric xyTOTALS3MSS1 = 0;
            numeric xyTOTALS3MSS2 = 0;
            numeric xyTOTALS3MSS4 = 0;
    
            numeric xxAritQuadTOTALS3MSS1 = 0;
            numeric xxAritQuadTOTALS3MSS2 = 0;
            numeric xxAritQuadTOTALS3MSS4 = 0;
    
            numeric yyAritQuadTOTALS3MSS1 = 0;
            numeric yyAritQuadTOTALS3MSS2 = 0;
            numeric yyAritQuadTOTALS3MSS4 = 0;
    
            numeric qXYTOTALS3MSS1 = 0;
            numeric qXYTOTALS3MSS2 = 0;
            numeric qXYTOTALS3MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS3MSS1 = xTOTALS3MSS1 + pifTOTALS4TM2arrayRAND[m];
                xTOTALS3MSS2 = xTOTALS3MSS2 + pifTOTALS4TM3arrayRAND[m];
                xTOTALS3MSS4 = xTOTALS3MSS4 + pifTOTALS4TM4arrayRAND[m];
    
                xQuadTOTALS3MSS1 = (xQuadTOTALS3MSS1 + (pifTOTALS4TM2arrayRAND[m]^2));
                xQuadTOTALS3MSS2 = (xQuadTOTALS3MSS2 + (pifTOTALS4TM3arrayRAND[m]^2));
                xQuadTOTALS3MSS4 = (xQuadTOTALS3MSS4 + (pifTOTALS4TM4arrayRAND[m]^2));
    
                yTOTALS3MSS1 = yTOTALS3MSS1 + pifTOTALS3MSS1arrayRAND[m];
                yTOTALS3MSS2 = yTOTALS3MSS2 + pifTOTALS3MSS2arrayRAND[m];
                yTOTALS3MSS4 = yTOTALS3MSS4 + pifTOTALS3MSS4arrayRAND[m];
                
                yQuadTOTALS3MSS1 = (yQuadTOTALS3MSS1 + (pifTOTALS3MSS1arrayRAND[m]^2));
                yQuadTOTALS3MSS2 = (yQuadTOTALS3MSS2 + (pifTOTALS3MSS2arrayRAND[m]^2));
                yQuadTOTALS3MSS4 = (yQuadTOTALS3MSS4 + (pifTOTALS3MSS4arrayRAND[m]^2));
    
                xyTOTALS3MSS1 = (xyTOTALS3MSS1 + (pifTOTALS4TM2arrayRAND[m] * pifTOTALS3MSS1arrayRAND[m]));
                xyTOTALS3MSS2 = (xyTOTALS3MSS2 + (pifTOTALS4TM3arrayRAND[m] * pifTOTALS3MSS2arrayRAND[m]));
                xyTOTALS3MSS4 = (xyTOTALS3MSS4 + (pifTOTALS4TM4arrayRAND[m] * pifTOTALS3MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS3MSS1 = xTOTALS3MSS1 / minPifVAL;
            xAritTOTALS3MSS2 = xTOTALS3MSS2 / minPifVAL;
            xAritTOTALS3MSS4 = xTOTALS3MSS4 / minPifVAL;
    
            yAritTOTALS3MSS1 = yTOTALS3MSS1 / minPifVAL;
            yAritTOTALS3MSS2 = yTOTALS3MSS2 / minPifVAL;
            yAritTOTALS3MSS4 = yTOTALS3MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3MSS1 = (xxAritQuadTOTALS3MSS1 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS3MSS1)^2));
                xxAritQuadTOTALS3MSS2 = (xxAritQuadTOTALS3MSS2 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS3MSS2)^2));
                xxAritQuadTOTALS3MSS4 = (xxAritQuadTOTALS3MSS4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS3MSS4)^2));
    
                yyAritQuadTOTALS3MSS1 = (yyAritQuadTOTALS3MSS1 + ((pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)^2));
                yyAritQuadTOTALS3MSS2 = (yyAritQuadTOTALS3MSS2 + ((pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)^2));
                yyAritQuadTOTALS3MSS4 = (yyAritQuadTOTALS3MSS4 + ((pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)^2));
    
                qXYTOTALS3MSS1 = (qXYTOTALS3MSS1 + ((pifTOTALS4TM2arrayRAND[n] - xAritTOTALS3MSS1) * (pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)));
                qXYTOTALS3MSS2 = (qXYTOTALS3MSS2 + ((pifTOTALS4TM3arrayRAND[n] - xAritTOTALS3MSS2) * (pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)));
                qXYTOTALS3MSS4 = (qXYTOTALS3MSS4 + ((pifTOTALS4TM4arrayRAND[n] - xAritTOTALS3MSS4) * (pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)));
            }
        
            aTOTALS3MSS1 = (((xQuadTOTALS3MSS1 * yTOTALS3MSS1) - (xTOTALS3MSS1 * xyTOTALS3MSS1)) / ((minPifVAL * xQuadTOTALS3MSS1) - (xTOTALS3MSS1^2)));
            aTOTALS3MSS2 = (((xQuadTOTALS3MSS2 * yTOTALS3MSS2) - (xTOTALS3MSS2 * xyTOTALS3MSS2)) / ((minPifVAL * xQuadTOTALS3MSS2) - (xTOTALS3MSS2^2)));
            aTOTALS3MSS4 = (((xQuadTOTALS3MSS4 * yTOTALS3MSS4) - (xTOTALS3MSS4 * xyTOTALS3MSS4)) / ((minPifVAL * xQuadTOTALS3MSS4) - (xTOTALS3MSS4^2)));
            
            bTOTALS3MSS1 = qXYTOTALS3MSS1 / xxAritQuadTOTALS3MSS1;
            bTOTALS3MSS2 = qXYTOTALS3MSS2 / xxAritQuadTOTALS3MSS2;
            bTOTALS3MSS4 = qXYTOTALS3MSS4 / xxAritQuadTOTALS3MSS4;
    
            rTOTALS3MSS1 = (qXYTOTALS3MSS1 / ((xxAritQuadTOTALS3MSS1 * yyAritQuadTOTALS3MSS1)^0.5));
            rTOTALS3MSS2 = (qXYTOTALS3MSS2 / ((xxAritQuadTOTALS3MSS2 * yyAritQuadTOTALS3MSS2)^0.5));
            rTOTALS3MSS4 = (qXYTOTALS3MSS4 / ((xxAritQuadTOTALS3MSS4 * yyAritQuadTOTALS3MSS4)^0.5));
    
            rQuadTOTALS3MSS1 = ((rTOTALS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3MSS2 = ((rTOTALS3MSS2^2) * 100);
            rQuadTOTALS3MSS4 = ((rTOTALS3MSS4^2) * 100);
        
            syxTOTALS3MSS1 = (((yyAritQuadTOTALS3MSS1 - ((qXYTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS2 = (((yyAritQuadTOTALS3MSS2 - ((qXYTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS4 = (((yyAritQuadTOTALS3MSS4 - ((qXYTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3MSS1 = (((syxTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)^0.5);
            bStandTOTALS3MSS2 = (((syxTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)^0.5);
            bStandTOTALS3MSS4 = (((syxTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)^0.5);
    
            aStandTOTALS3MSS1 = (bStandTOTALS3MSS1 * ((xQuadTOTALS3MSS1 / minPifVAL)^0.5));
            aStandTOTALS3MSS2 = (bStandTOTALS3MSS2 * ((xQuadTOTALS3MSS2 / minPifVAL)^0.5));
            aStandTOTALS3MSS4 = (bStandTOTALS3MSS4 * ((xQuadTOTALS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS1, bTOTALS3MSS1, rTOTALS3MSS1, rQuadTOTALS3MSS1, aStandTOTALS3MSS1, bStandTOTALS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS2, bTOTALS3MSS2, rTOTALS3MSS2, rQuadTOTALS3MSS2, aStandTOTALS3MSS2, bStandTOTALS3MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS4, bTOTALS3MSS4, rTOTALS3MSS4, rQuadTOTALS3MSS4, aStandTOTALS3MSS4, bStandTOTALS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS3MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS3MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS3MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aTOTALS3MSS1 + (bTOTALS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aTOTALS3MSS2 + (bTOTALS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = REFS3MSS3[i,j];
                    OUT3MSS4[i,j] = (aTOTALS3MSS4 + (bTOTALS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT3MSS1);
        	CreatePyramid(OUT3MSS2);
        	CreatePyramid(OUT3MSS3);
        	CreatePyramid(OUT3MSS4);
        
        	CreateHistogram(OUT3MSS1);
        	CreateHistogram(OUT3MSS2);
        	CreateHistogram(OUT3MSS3);
        	CreateHistogram(OUT3MSS4);
        
        	CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
        
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
        }
        
        else
        {
        printf("Scene 4 - Master Scene (MSS):\n");
        printf("Scene 4 array values used for regression computation:\n");
    
        printf("MSS1: %12f ", pifTOTALS4MSS1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS4MSS1arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS4MSS1arrayRAND[minPifVAL]);
    
        printf("MSS2: %12f ", pifTOTALS4MSS2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS4MSS2arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS4MSS2arrayRAND[minPifVAL]);
    
        printf("MSS3: %12f ", pifTOTALS4MSS3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS4MSS3arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS4MSS3arrayRAND[minPifVAL]);
    
        printf("MSS4: %12f ", pifTOTALS4MSS4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifTOTALS4MSS4arrayRAND[o]);
        }
        printf("%12f\n", pifTOTALS4MSS4arrayRAND[minPifVAL]);
            
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                OUT4MSS1[i,j] = REFS4MSS1[i,j];
                OUT4MSS2[i,j] = REFS4MSS2[i,j];
                OUT4MSS3[i,j] = REFS4MSS3[i,j];
                OUT4MSS4[i,j] = REFS4MSS4[i,j];
                }
            }
        
        CreatePyramid(OUT4MSS1);
        CreatePyramid(OUT4MSS2);
        CreatePyramid(OUT4MSS3);
        CreatePyramid(OUT4MSS4);
    
        CreateHistogram(OUT4MSS1);
        CreateHistogram(OUT4MSS2);
        CreateHistogram(OUT4MSS3);
        CreateHistogram(OUT4MSS4);
        
        CloseRaster(REFS4MSS1);
        CloseRaster(REFS4MSS2);
        CloseRaster(REFS4MSS3);
        CloseRaster(REFS4MSS4);
        CloseRaster(OUT4MSS1);
        CloseRaster(OUT4MSS2);
        CloseRaster(OUT4MSS3);
        CloseRaster(OUT4MSS4);
        printf("Scene 4 (Master) output was written, histogram created and pyramid written\n\n\n");
        
            if ( sensors1 == 7 )
            {
        		printf("Master: Scene 4 (MSS), Slave: Scene 1 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors1 == 6 )
            {
        		printf("Master: Scene 4 (MSS), Slave: Scene 1 (TM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS1MSS1, xAritTOTALS1MSS2, xAritTOTALS1MSS3, xAritTOTALS1MSS4;
            numeric yAritTOTALS1MSS1, yAritTOTALS1MSS2, yAritTOTALS1MSS3, yAritTOTALS1MSS4;
    
            numeric aTOTALS1MSS1, aTOTALS1MSS2, aTOTALS1MSS3, aTOTALS1MSS4;
            numeric bTOTALS1MSS1, bTOTALS1MSS2, bTOTALS1MSS3, bTOTALS1MSS4;
            numeric rTOTALS1MSS1, rTOTALS1MSS2, rTOTALS1MSS3, rTOTALS1MSS4;
            numeric rQuadTOTALS1MSS1, rQuadTOTALS1MSS2, rQuadTOTALS1MSS3, rQuadTOTALS1MSS4;
            numeric syxTOTALS1MSS1, syxTOTALS1MSS2, syxTOTALS1MSS3, syxTOTALS1MSS4;
            numeric bStandTOTALS1MSS1, bStandTOTALS1MSS2, bStandTOTALS1MSS3, bStandTOTALS1MSS4;
            numeric aStandTOTALS1MSS1, aStandTOTALS1MSS2, aStandTOTALS1MSS3, aStandTOTALS1MSS4;
    
            numeric xTOTALS1MSS1 = 0;
            numeric xTOTALS1MSS2 = 0;
            numeric xTOTALS1MSS3 = 0;
            numeric xTOTALS1MSS4 = 0;
    
            numeric xQuadTOTALS1MSS1 = 0;
            numeric xQuadTOTALS1MSS2 = 0;
            numeric xQuadTOTALS1MSS3 = 0;
            numeric xQuadTOTALS1MSS4 = 0;
    
            numeric yTOTALS1MSS1 = 0;
            numeric yTOTALS1MSS2 = 0;
            numeric yTOTALS1MSS3 = 0;
            numeric yTOTALS1MSS4 = 0;
    
            numeric yQuadTOTALS1MSS1 = 0;
            numeric yQuadTOTALS1MSS2 = 0;
            numeric yQuadTOTALS1MSS3 = 0;
            numeric yQuadTOTALS1MSS4 = 0;
    
            numeric xyTOTALS1MSS1 = 0;
            numeric xyTOTALS1MSS2 = 0;
            numeric xyTOTALS1MSS3 = 0;
            numeric xyTOTALS1MSS4 = 0;
    
            numeric xxAritQuadTOTALS1MSS1 = 0;
            numeric xxAritQuadTOTALS1MSS2 = 0;
            numeric xxAritQuadTOTALS1MSS3 = 0;
            numeric xxAritQuadTOTALS1MSS4 = 0;
    
            numeric yyAritQuadTOTALS1MSS1 = 0;
            numeric yyAritQuadTOTALS1MSS2 = 0;
            numeric yyAritQuadTOTALS1MSS3 = 0;
            numeric yyAritQuadTOTALS1MSS4 = 0;
    
            numeric qXYTOTALS1MSS1 = 0;
            numeric qXYTOTALS1MSS2 = 0;
            numeric qXYTOTALS1MSS3 = 0;
            numeric qXYTOTALS1MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS1MSS1 = xTOTALS1MSS1 + pifTOTALS4MSS1arrayRAND[m];
                xTOTALS1MSS2 = xTOTALS1MSS2 + pifTOTALS4MSS2arrayRAND[m];
                xTOTALS1MSS3 = xTOTALS1MSS3 + pifTOTALS4MSS3arrayRAND[m];
                xTOTALS1MSS4 = xTOTALS1MSS4 + pifTOTALS4MSS4arrayRAND[m];
    
                xQuadTOTALS1MSS1 = (xQuadTOTALS1MSS1 + (pifTOTALS4MSS1arrayRAND[m]^2));
                xQuadTOTALS1MSS2 = (xQuadTOTALS1MSS2 + (pifTOTALS4MSS2arrayRAND[m]^2));
                xQuadTOTALS1MSS3 = (xQuadTOTALS1MSS3 + (pifTOTALS4MSS3arrayRAND[m]^2));
                xQuadTOTALS1MSS4 = (xQuadTOTALS1MSS4 + (pifTOTALS4MSS4arrayRAND[m]^2));
    
                yTOTALS1MSS1 = yTOTALS1MSS1 + pifTOTALS1MSS1arrayRAND[m];
                yTOTALS1MSS2 = yTOTALS1MSS2 + pifTOTALS1MSS2arrayRAND[m];
                yTOTALS1MSS3 = yTOTALS1MSS3 + pifTOTALS1MSS3arrayRAND[m];
                yTOTALS1MSS4 = yTOTALS1MSS4 + pifTOTALS1MSS4arrayRAND[m];
                
                yQuadTOTALS1MSS1 = (yQuadTOTALS1MSS1 + (pifTOTALS1MSS1arrayRAND[m]^2));
                yQuadTOTALS1MSS2 = (yQuadTOTALS1MSS2 + (pifTOTALS1MSS2arrayRAND[m]^2));
                yQuadTOTALS1MSS3 = (yQuadTOTALS1MSS3 + (pifTOTALS1MSS3arrayRAND[m]^2));
                yQuadTOTALS1MSS4 = (yQuadTOTALS1MSS4 + (pifTOTALS1MSS4arrayRAND[m]^2));
    
                xyTOTALS1MSS1 = (xyTOTALS1MSS1 + (pifTOTALS4MSS1arrayRAND[m] * pifTOTALS1MSS1arrayRAND[m]));
                xyTOTALS1MSS2 = (xyTOTALS1MSS2 + (pifTOTALS4MSS2arrayRAND[m] * pifTOTALS1MSS2arrayRAND[m]));
                xyTOTALS1MSS3 = (xyTOTALS1MSS3 + (pifTOTALS4MSS3arrayRAND[m] * pifTOTALS1MSS3arrayRAND[m]));
                xyTOTALS1MSS4 = (xyTOTALS1MSS4 + (pifTOTALS4MSS4arrayRAND[m] * pifTOTALS1MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS1MSS1 = xTOTALS1MSS1 / minPifVAL;
            xAritTOTALS1MSS2 = xTOTALS1MSS2 / minPifVAL;
            xAritTOTALS1MSS3 = xTOTALS1MSS3 / minPifVAL;
            xAritTOTALS1MSS4 = xTOTALS1MSS4 / minPifVAL;
    
            yAritTOTALS1MSS1 = yTOTALS1MSS1 / minPifVAL;
            yAritTOTALS1MSS2 = yTOTALS1MSS2 / minPifVAL;
            yAritTOTALS1MSS3 = yTOTALS1MSS3 / minPifVAL;
            yAritTOTALS1MSS4 = yTOTALS1MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS1MSS1 = (xxAritQuadTOTALS1MSS1 + ((pifTOTALS4MSS1arrayRAND[n] - xAritTOTALS1MSS1)^2));
                xxAritQuadTOTALS1MSS2 = (xxAritQuadTOTALS1MSS2 + ((pifTOTALS4MSS2arrayRAND[n] - xAritTOTALS1MSS2)^2));
                xxAritQuadTOTALS1MSS3 = (xxAritQuadTOTALS1MSS3 + ((pifTOTALS4MSS3arrayRAND[n] - xAritTOTALS1MSS3)^2));
                xxAritQuadTOTALS1MSS4 = (xxAritQuadTOTALS1MSS4 + ((pifTOTALS4MSS4arrayRAND[n] - xAritTOTALS1MSS4)^2));
    
                yyAritQuadTOTALS1MSS1 = (yyAritQuadTOTALS1MSS1 + ((pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)^2));
                yyAritQuadTOTALS1MSS2 = (yyAritQuadTOTALS1MSS2 + ((pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)^2));
                yyAritQuadTOTALS1MSS3 = (yyAritQuadTOTALS1MSS3 + ((pifTOTALS1MSS3arrayRAND[n] - yAritTOTALS1MSS3)^2));
                yyAritQuadTOTALS1MSS4 = (yyAritQuadTOTALS1MSS4 + ((pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)^2));
    
                qXYTOTALS1MSS1 = (qXYTOTALS1MSS1 + ((pifTOTALS4MSS1arrayRAND[n] - xAritTOTALS1MSS1) * (pifTOTALS1MSS1arrayRAND[n] - yAritTOTALS1MSS1)));
                qXYTOTALS1MSS2 = (qXYTOTALS1MSS2 + ((pifTOTALS4MSS2arrayRAND[n] - xAritTOTALS1MSS2) * (pifTOTALS1MSS2arrayRAND[n] - yAritTOTALS1MSS2)));
                qXYTOTALS1MSS3 = (qXYTOTALS1MSS3 + ((pifTOTALS4MSS3arrayRAND[n] - xAritTOTALS1MSS3) * (pifTOTALS1MSS3arrayRAND[n] - yAritTOTALS1MSS3)));
                qXYTOTALS1MSS4 = (qXYTOTALS1MSS4 + ((pifTOTALS4MSS4arrayRAND[n] - xAritTOTALS1MSS4) * (pifTOTALS1MSS4arrayRAND[n] - yAritTOTALS1MSS4)));
            }
        
            aTOTALS1MSS1 = (((xQuadTOTALS1MSS1 * yTOTALS1MSS1) - (xTOTALS1MSS1 * xyTOTALS1MSS1)) / ((minPifVAL * xQuadTOTALS1MSS1) - (xTOTALS1MSS1^2)));
            aTOTALS1MSS2 = (((xQuadTOTALS1MSS2 * yTOTALS1MSS2) - (xTOTALS1MSS2 * xyTOTALS1MSS2)) / ((minPifVAL * xQuadTOTALS1MSS2) - (xTOTALS1MSS2^2)));
            aTOTALS1MSS3 = (((xQuadTOTALS1MSS3 * yTOTALS1MSS3) - (xTOTALS1MSS3 * xyTOTALS1MSS3)) / ((minPifVAL * xQuadTOTALS1MSS3) - (xTOTALS1MSS3^2)));
            aTOTALS1MSS4 = (((xQuadTOTALS1MSS4 * yTOTALS1MSS4) - (xTOTALS1MSS4 * xyTOTALS1MSS4)) / ((minPifVAL * xQuadTOTALS1MSS4) - (xTOTALS1MSS4^2)));
            
            bTOTALS1MSS1 = qXYTOTALS1MSS1 / xxAritQuadTOTALS1MSS1;
            bTOTALS1MSS2 = qXYTOTALS1MSS2 / xxAritQuadTOTALS1MSS2;
            bTOTALS1MSS3 = qXYTOTALS1MSS3 / xxAritQuadTOTALS1MSS3;
            bTOTALS1MSS4 = qXYTOTALS1MSS4 / xxAritQuadTOTALS1MSS4;
    
            rTOTALS1MSS1 = (qXYTOTALS1MSS1 / ((xxAritQuadTOTALS1MSS1 * yyAritQuadTOTALS1MSS1)^0.5));
            rTOTALS1MSS2 = (qXYTOTALS1MSS2 / ((xxAritQuadTOTALS1MSS2 * yyAritQuadTOTALS1MSS2)^0.5));
            rTOTALS1MSS3 = (qXYTOTALS1MSS3 / ((xxAritQuadTOTALS1MSS3 * yyAritQuadTOTALS1MSS3)^0.5));
            rTOTALS1MSS4 = (qXYTOTALS1MSS4 / ((xxAritQuadTOTALS1MSS4 * yyAritQuadTOTALS1MSS4)^0.5));
    
            rQuadTOTALS1MSS1 = ((rTOTALS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS1MSS2 = ((rTOTALS1MSS2^2) * 100);
            rQuadTOTALS1MSS3 = ((rTOTALS1MSS3^2) * 100);
            rQuadTOTALS1MSS4 = ((rTOTALS1MSS4^2) * 100);
        
            syxTOTALS1MSS1 = (((yyAritQuadTOTALS1MSS1 - ((qXYTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS2 = (((yyAritQuadTOTALS1MSS2 - ((qXYTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS3 = (((yyAritQuadTOTALS1MSS3 - ((qXYTOTALS1MSS3^2) / xxAritQuadTOTALS1MSS3)) / (minPifVAL - 2))^0.5);
            syxTOTALS1MSS4 = (((yyAritQuadTOTALS1MSS4 - ((qXYTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS1MSS1 = (((syxTOTALS1MSS1^2) / xxAritQuadTOTALS1MSS1)^0.5);
            bStandTOTALS1MSS2 = (((syxTOTALS1MSS2^2) / xxAritQuadTOTALS1MSS2)^0.5);
            bStandTOTALS1MSS3 = (((syxTOTALS1MSS3^2) / xxAritQuadTOTALS1MSS3)^0.5);
            bStandTOTALS1MSS4 = (((syxTOTALS1MSS4^2) / xxAritQuadTOTALS1MSS4)^0.5);
    
            aStandTOTALS1MSS1 = (bStandTOTALS1MSS1 * ((xQuadTOTALS1MSS1 / minPifVAL)^0.5));
            aStandTOTALS1MSS2 = (bStandTOTALS1MSS2 * ((xQuadTOTALS1MSS2 / minPifVAL)^0.5));
            aStandTOTALS1MSS3 = (bStandTOTALS1MSS3 * ((xQuadTOTALS1MSS3 / minPifVAL)^0.5));
            aStandTOTALS1MSS4 = (bStandTOTALS1MSS4 * ((xQuadTOTALS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS1, bTOTALS1MSS1, rTOTALS1MSS1, rQuadTOTALS1MSS1, aStandTOTALS1MSS1, bStandTOTALS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS2, bTOTALS1MSS2, rTOTALS1MSS2, rQuadTOTALS1MSS2, aStandTOTALS1MSS2, bStandTOTALS1MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS3, bTOTALS1MSS3, rTOTALS1MSS3, rQuadTOTALS1MSS3, aStandTOTALS1MSS3, bStandTOTALS1MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS1MSS4, bTOTALS1MSS4, rTOTALS1MSS4, rQuadTOTALS1MSS4, aStandTOTALS1MSS4, bStandTOTALS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS1MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS1MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifTOTALS1MSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS1MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS1MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS1MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aTOTALS1MSS1 + (bTOTALS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aTOTALS1MSS2 + (bTOTALS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = (aTOTALS1MSS3 + (bTOTALS1MSS3 * REFS1MSS3[i,j]));
                    OUT1MSS4[i,j] = (aTOTALS1MSS4 + (bTOTALS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT1MSS1);
        	CreatePyramid(OUT1MSS2);
        	CreatePyramid(OUT1MSS3);
        	CreatePyramid(OUT1MSS4);
        
        	CreateHistogram(OUT1MSS1);
        	CreateHistogram(OUT1MSS2);
        	CreateHistogram(OUT1MSS3);
        	CreateHistogram(OUT1MSS4);
        
        	CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors2 == 7 )
            {
        		printf("Master: Scene 4 (MSS), Slave: Scene 2 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors2 == 6 )
            {
        		printf("Master: Scene 4 (MSS), Slave: Scene 2 (TM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS2MSS1, xAritTOTALS2MSS2, xAritTOTALS2MSS3, xAritTOTALS2MSS4;
            numeric yAritTOTALS2MSS1, yAritTOTALS2MSS2, yAritTOTALS2MSS3, yAritTOTALS2MSS4;
    
            numeric aTOTALS2MSS1, aTOTALS2MSS2, aTOTALS2MSS3, aTOTALS2MSS4;
            numeric bTOTALS2MSS1, bTOTALS2MSS2, bTOTALS2MSS3, bTOTALS2MSS4;
            numeric rTOTALS2MSS1, rTOTALS2MSS2, rTOTALS2MSS3, rTOTALS2MSS4;
            numeric rQuadTOTALS2MSS1, rQuadTOTALS2MSS2, rQuadTOTALS2MSS3, rQuadTOTALS2MSS4;
            numeric syxTOTALS2MSS1, syxTOTALS2MSS2, syxTOTALS2MSS3, syxTOTALS2MSS4;
            numeric bStandTOTALS2MSS1, bStandTOTALS2MSS2, bStandTOTALS2MSS3, bStandTOTALS2MSS4;
            numeric aStandTOTALS2MSS1, aStandTOTALS2MSS2, aStandTOTALS2MSS3, aStandTOTALS2MSS4;
    
            numeric xTOTALS2MSS1 = 0;
            numeric xTOTALS2MSS2 = 0;
            numeric xTOTALS2MSS3 = 0;
            numeric xTOTALS2MSS4 = 0;
    
            numeric xQuadTOTALS2MSS1 = 0;
            numeric xQuadTOTALS2MSS2 = 0;
            numeric xQuadTOTALS2MSS3 = 0;
            numeric xQuadTOTALS2MSS4 = 0;
    
            numeric yTOTALS2MSS1 = 0;
            numeric yTOTALS2MSS2 = 0;
            numeric yTOTALS2MSS3 = 0;
            numeric yTOTALS2MSS4 = 0;
    
            numeric yQuadTOTALS2MSS1 = 0;
            numeric yQuadTOTALS2MSS2 = 0;
            numeric yQuadTOTALS2MSS3 = 0;
            numeric yQuadTOTALS2MSS4 = 0;
    
            numeric xyTOTALS2MSS1 = 0;
            numeric xyTOTALS2MSS2 = 0;
            numeric xyTOTALS2MSS3 = 0;
            numeric xyTOTALS2MSS4 = 0;
    
            numeric xxAritQuadTOTALS2MSS1 = 0;
            numeric xxAritQuadTOTALS2MSS2 = 0;
            numeric xxAritQuadTOTALS2MSS3 = 0;
            numeric xxAritQuadTOTALS2MSS4 = 0;
    
            numeric yyAritQuadTOTALS2MSS1 = 0;
            numeric yyAritQuadTOTALS2MSS2 = 0;
            numeric yyAritQuadTOTALS2MSS3 = 0;
            numeric yyAritQuadTOTALS2MSS4 = 0;
    
            numeric qXYTOTALS2MSS1 = 0;
            numeric qXYTOTALS2MSS2 = 0;
            numeric qXYTOTALS2MSS3 = 0;
            numeric qXYTOTALS2MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xTOTALS2MSS1 = xTOTALS2MSS1 + pifTOTALS4MSS1arrayRAND[m];
                xTOTALS2MSS2 = xTOTALS2MSS2 + pifTOTALS4MSS2arrayRAND[m];
                xTOTALS2MSS3 = xTOTALS2MSS3 + pifTOTALS4MSS3arrayRAND[m];
                xTOTALS2MSS4 = xTOTALS2MSS4 + pifTOTALS4MSS4arrayRAND[m];
    
                xQuadTOTALS2MSS1 = (xQuadTOTALS2MSS1 + (pifTOTALS4MSS1arrayRAND[m]^2));
                xQuadTOTALS2MSS2 = (xQuadTOTALS2MSS2 + (pifTOTALS4MSS2arrayRAND[m]^2));
                xQuadTOTALS2MSS3 = (xQuadTOTALS2MSS3 + (pifTOTALS4MSS3arrayRAND[m]^2));
                xQuadTOTALS2MSS4 = (xQuadTOTALS2MSS4 + (pifTOTALS4MSS4arrayRAND[m]^2));
    
                yTOTALS2MSS1 = yTOTALS2MSS1 + pifTOTALS2MSS1arrayRAND[m];
                yTOTALS2MSS2 = yTOTALS2MSS2 + pifTOTALS2MSS2arrayRAND[m];
                yTOTALS2MSS3 = yTOTALS2MSS3 + pifTOTALS2MSS3arrayRAND[m];
                yTOTALS2MSS4 = yTOTALS2MSS4 + pifTOTALS2MSS4arrayRAND[m];
                
                yQuadTOTALS2MSS1 = (yQuadTOTALS2MSS1 + (pifTOTALS2MSS1arrayRAND[m]^2));
                yQuadTOTALS2MSS2 = (yQuadTOTALS2MSS2 + (pifTOTALS2MSS2arrayRAND[m]^2));
                yQuadTOTALS2MSS3 = (yQuadTOTALS2MSS3 + (pifTOTALS2MSS3arrayRAND[m]^2));
                yQuadTOTALS2MSS4 = (yQuadTOTALS2MSS4 + (pifTOTALS2MSS4arrayRAND[m]^2));
    
                xyTOTALS2MSS1 = (xyTOTALS2MSS1 + (pifTOTALS4MSS1arrayRAND[m] * pifTOTALS2MSS1arrayRAND[m]));
                xyTOTALS2MSS2 = (xyTOTALS2MSS2 + (pifTOTALS4MSS2arrayRAND[m] * pifTOTALS2MSS2arrayRAND[m]));
                xyTOTALS2MSS3 = (xyTOTALS2MSS3 + (pifTOTALS4MSS3arrayRAND[m] * pifTOTALS2MSS3arrayRAND[m]));
                xyTOTALS2MSS4 = (xyTOTALS2MSS4 + (pifTOTALS4MSS4arrayRAND[m] * pifTOTALS2MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS2MSS1 = xTOTALS2MSS1 / minPifVAL;
            xAritTOTALS2MSS2 = xTOTALS2MSS2 / minPifVAL;
            xAritTOTALS2MSS3 = xTOTALS2MSS3 / minPifVAL;
            xAritTOTALS2MSS4 = xTOTALS2MSS4 / minPifVAL;
    
            yAritTOTALS2MSS1 = yTOTALS2MSS1 / minPifVAL;
            yAritTOTALS2MSS2 = yTOTALS2MSS2 / minPifVAL;
            yAritTOTALS2MSS3 = yTOTALS2MSS3 / minPifVAL;
            yAritTOTALS2MSS4 = yTOTALS2MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS2MSS1 = (xxAritQuadTOTALS2MSS1 + ((pifTOTALS4MSS1arrayRAND[n] - xAritTOTALS2MSS1)^2));
                xxAritQuadTOTALS2MSS2 = (xxAritQuadTOTALS2MSS2 + ((pifTOTALS4MSS2arrayRAND[n] - xAritTOTALS2MSS2)^2));
                xxAritQuadTOTALS2MSS3 = (xxAritQuadTOTALS2MSS3 + ((pifTOTALS4MSS3arrayRAND[n] - xAritTOTALS2MSS3)^2));
                xxAritQuadTOTALS2MSS4 = (xxAritQuadTOTALS2MSS4 + ((pifTOTALS4MSS4arrayRAND[n] - xAritTOTALS2MSS4)^2));
    
                yyAritQuadTOTALS2MSS1 = (yyAritQuadTOTALS2MSS1 + ((pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)^2));
                yyAritQuadTOTALS2MSS2 = (yyAritQuadTOTALS2MSS2 + ((pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)^2));
                yyAritQuadTOTALS2MSS3 = (yyAritQuadTOTALS2MSS3 + ((pifTOTALS2MSS3arrayRAND[n] - yAritTOTALS2MSS3)^2));
                yyAritQuadTOTALS2MSS4 = (yyAritQuadTOTALS2MSS4 + ((pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)^2));
    
                qXYTOTALS2MSS1 = (qXYTOTALS2MSS1 + ((pifTOTALS4MSS1arrayRAND[n] - xAritTOTALS2MSS1) * (pifTOTALS2MSS1arrayRAND[n] - yAritTOTALS2MSS1)));
                qXYTOTALS2MSS2 = (qXYTOTALS2MSS2 + ((pifTOTALS4MSS2arrayRAND[n] - xAritTOTALS2MSS2) * (pifTOTALS2MSS2arrayRAND[n] - yAritTOTALS2MSS2)));
                qXYTOTALS2MSS3 = (qXYTOTALS2MSS3 + ((pifTOTALS4MSS3arrayRAND[n] - xAritTOTALS2MSS3) * (pifTOTALS2MSS3arrayRAND[n] - yAritTOTALS2MSS3)));
                qXYTOTALS2MSS4 = (qXYTOTALS2MSS4 + ((pifTOTALS4MSS4arrayRAND[n] - xAritTOTALS2MSS4) * (pifTOTALS2MSS4arrayRAND[n] - yAritTOTALS2MSS4)));
            }
        
            aTOTALS2MSS1 = (((xQuadTOTALS2MSS1 * yTOTALS2MSS1) - (xTOTALS2MSS1 * xyTOTALS2MSS1)) / ((minPifVAL * xQuadTOTALS2MSS1) - (xTOTALS2MSS1^2)));
            aTOTALS2MSS2 = (((xQuadTOTALS2MSS2 * yTOTALS2MSS2) - (xTOTALS2MSS2 * xyTOTALS2MSS2)) / ((minPifVAL * xQuadTOTALS2MSS2) - (xTOTALS2MSS2^2)));
            aTOTALS2MSS3 = (((xQuadTOTALS2MSS3 * yTOTALS2MSS3) - (xTOTALS2MSS3 * xyTOTALS2MSS3)) / ((minPifVAL * xQuadTOTALS2MSS3) - (xTOTALS2MSS3^2)));
            aTOTALS2MSS4 = (((xQuadTOTALS2MSS4 * yTOTALS2MSS4) - (xTOTALS2MSS4 * xyTOTALS2MSS4)) / ((minPifVAL * xQuadTOTALS2MSS4) - (xTOTALS2MSS4^2)));
            
            bTOTALS2MSS1 = qXYTOTALS2MSS1 / xxAritQuadTOTALS2MSS1;
            bTOTALS2MSS2 = qXYTOTALS2MSS2 / xxAritQuadTOTALS2MSS2;
            bTOTALS2MSS3 = qXYTOTALS2MSS3 / xxAritQuadTOTALS2MSS3;
            bTOTALS2MSS4 = qXYTOTALS2MSS4 / xxAritQuadTOTALS2MSS4;
    
            rTOTALS2MSS1 = (qXYTOTALS2MSS1 / ((xxAritQuadTOTALS2MSS1 * yyAritQuadTOTALS2MSS1)^0.5));
            rTOTALS2MSS2 = (qXYTOTALS2MSS2 / ((xxAritQuadTOTALS2MSS2 * yyAritQuadTOTALS2MSS2)^0.5));
            rTOTALS2MSS3 = (qXYTOTALS2MSS3 / ((xxAritQuadTOTALS2MSS3 * yyAritQuadTOTALS2MSS3)^0.5));
            rTOTALS2MSS4 = (qXYTOTALS2MSS4 / ((xxAritQuadTOTALS2MSS4 * yyAritQuadTOTALS2MSS4)^0.5));
    
            rQuadTOTALS2MSS1 = ((rTOTALS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS2MSS2 = ((rTOTALS2MSS2^2) * 100);
            rQuadTOTALS2MSS3 = ((rTOTALS2MSS3^2) * 100);
            rQuadTOTALS2MSS4 = ((rTOTALS2MSS4^2) * 100);
        
            syxTOTALS2MSS1 = (((yyAritQuadTOTALS2MSS1 - ((qXYTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS2 = (((yyAritQuadTOTALS2MSS2 - ((qXYTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS3 = (((yyAritQuadTOTALS2MSS3 - ((qXYTOTALS2MSS3^2) / xxAritQuadTOTALS2MSS3)) / (minPifVAL - 2))^0.5);
            syxTOTALS2MSS4 = (((yyAritQuadTOTALS2MSS4 - ((qXYTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS2MSS1 = (((syxTOTALS2MSS1^2) / xxAritQuadTOTALS2MSS1)^0.5);
            bStandTOTALS2MSS2 = (((syxTOTALS2MSS2^2) / xxAritQuadTOTALS2MSS2)^0.5);
            bStandTOTALS2MSS3 = (((syxTOTALS2MSS3^2) / xxAritQuadTOTALS2MSS3)^0.5);
            bStandTOTALS2MSS4 = (((syxTOTALS2MSS4^2) / xxAritQuadTOTALS2MSS4)^0.5);
    
            aStandTOTALS2MSS1 = (bStandTOTALS2MSS1 * ((xQuadTOTALS2MSS1 / minPifVAL)^0.5));
            aStandTOTALS2MSS2 = (bStandTOTALS2MSS2 * ((xQuadTOTALS2MSS2 / minPifVAL)^0.5));
            aStandTOTALS2MSS3 = (bStandTOTALS2MSS3 * ((xQuadTOTALS2MSS3 / minPifVAL)^0.5));
            aStandTOTALS2MSS4 = (bStandTOTALS2MSS4 * ((xQuadTOTALS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS1, bTOTALS2MSS1, rTOTALS2MSS1, rQuadTOTALS2MSS1, aStandTOTALS2MSS1, bStandTOTALS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS2, bTOTALS2MSS2, rTOTALS2MSS2, rQuadTOTALS2MSS2, aStandTOTALS2MSS2, bStandTOTALS2MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS3, bTOTALS2MSS3, rTOTALS2MSS3, rQuadTOTALS2MSS3, aStandTOTALS2MSS3, bStandTOTALS2MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS2MSS4, bTOTALS2MSS4, rTOTALS2MSS4, rQuadTOTALS2MSS4, aStandTOTALS2MSS4, bStandTOTALS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS2MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS2MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifTOTALS2MSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS2MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS2MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS2MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aTOTALS2MSS1 + (bTOTALS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aTOTALS2MSS2 + (bTOTALS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = (aTOTALS2MSS3 + (bTOTALS2MSS3 * REFS2MSS3[i,j]));
                    OUT2MSS4[i,j] = (aTOTALS2MSS4 + (bTOTALS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT2MSS1);
        	CreatePyramid(OUT2MSS2);
        	CreatePyramid(OUT2MSS3);
        	CreatePyramid(OUT2MSS4);
        
        	CreateHistogram(OUT2MSS1);
        	CreateHistogram(OUT2MSS2);
        	CreateHistogram(OUT2MSS3);
        	CreateHistogram(OUT2MSS4);
        
        	CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
            
            if ( sensors3 == 7 )
            {
        		printf("Master: Scene 4 (MSS), Slave: Scene 3 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors3 == 6 )
            {
        		printf("Master: Scene 4 (MSS), Slave: Scene 3 (TM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            {
            numeric xAritTOTALS3MSS1, xAritTOTALS3MSS2, xAritTOTALS3MSS3, xAritTOTALS3MSS4;
            numeric yAritTOTALS3MSS1, yAritTOTALS3MSS2, yAritTOTALS3MSS3, yAritTOTALS3MSS4;
    
            numeric aTOTALS3MSS1, aTOTALS3MSS2, aTOTALS3MSS3, aTOTALS3MSS4;
            numeric bTOTALS3MSS1, bTOTALS3MSS2, bTOTALS3MSS3, bTOTALS3MSS4;
            numeric rTOTALS3MSS1, rTOTALS3MSS2, rTOTALS3MSS3, rTOTALS3MSS4;
            numeric rQuadTOTALS3MSS1, rQuadTOTALS3MSS2, rQuadTOTALS3MSS3, rQuadTOTALS3MSS4;
            numeric syxTOTALS3MSS1, syxTOTALS3MSS2, syxTOTALS3MSS3, syxTOTALS3MSS4;
            numeric bStandTOTALS3MSS1, bStandTOTALS3MSS2, bStandTOTALS3MSS3, bStandTOTALS3MSS4;
            numeric aStandTOTALS3MSS1, aStandTOTALS3MSS2, aStandTOTALS3MSS3, aStandTOTALS3MSS4;
    
            numeric xTOTALS3MSS1 = 0;
            numeric xTOTALS3MSS2 = 0;
            numeric xTOTALS3MSS3 = 0;
            numeric xTOTALS3MSS4 = 0;
    
            numeric xQuadTOTALS3MSS1 = 0;
            numeric xQuadTOTALS3MSS2 = 0;
            numeric xQuadTOTALS3MSS3 = 0;
            numeric xQuadTOTALS3MSS4 = 0;
    
            numeric yTOTALS3MSS1 = 0;
            numeric yTOTALS3MSS2 = 0;
            numeric yTOTALS3MSS3 = 0;
            numeric yTOTALS3MSS4 = 0;
    
            numeric yQuadTOTALS3MSS1 = 0;
            numeric yQuadTOTALS3MSS2 = 0;
            numeric yQuadTOTALS3MSS3 = 0;
            numeric yQuadTOTALS3MSS4 = 0;
    
            numeric xyTOTALS3MSS1 = 0;
            numeric xyTOTALS3MSS2 = 0;
            numeric xyTOTALS3MSS3 = 0;
            numeric xyTOTALS3MSS4 = 0;
    
            numeric xxAritQuadTOTALS3MSS1 = 0;
            numeric xxAritQuadTOTALS3MSS2 = 0;
            numeric xxAritQuadTOTALS3MSS3 = 0;
            numeric xxAritQuadTOTALS3MSS4 = 0;
    
            numeric yyAritQuadTOTALS3MSS1 = 0;
            numeric yyAritQuadTOTALS3MSS2 = 0;
            numeric yyAritQuadTOTALS3MSS3 = 0;
            numeric yyAritQuadTOTALS3MSS4 = 0;
    
            numeric qXYTOTALS3MSS1 = 0;
            numeric qXYTOTALS3MSS2 = 0;
            numeric qXYTOTALS3MSS3 = 0;
            numeric qXYTOTALS3MSS4 = 0;
    
            for m = 1 to minPifVAL
                {		
                xTOTALS3MSS1 = xTOTALS3MSS1 + pifTOTALS4MSS1arrayRAND[m];
                xTOTALS3MSS2 = xTOTALS3MSS2 + pifTOTALS4MSS2arrayRAND[m];
                xTOTALS3MSS3 = xTOTALS3MSS3 + pifTOTALS4MSS3arrayRAND[m];
                xTOTALS3MSS4 = xTOTALS3MSS4 + pifTOTALS4MSS4arrayRAND[m];
    
                xQuadTOTALS3MSS1 = (xQuadTOTALS3MSS1 + (pifTOTALS4MSS1arrayRAND[m]^2));
                xQuadTOTALS3MSS2 = (xQuadTOTALS3MSS2 + (pifTOTALS4MSS2arrayRAND[m]^2));
                xQuadTOTALS3MSS3 = (xQuadTOTALS3MSS3 + (pifTOTALS4MSS3arrayRAND[m]^2));
                xQuadTOTALS3MSS4 = (xQuadTOTALS3MSS4 + (pifTOTALS4MSS4arrayRAND[m]^2));
    
                yTOTALS3MSS1 = yTOTALS3MSS1 + pifTOTALS3MSS1arrayRAND[m];
                yTOTALS3MSS2 = yTOTALS3MSS2 + pifTOTALS3MSS2arrayRAND[m];
                yTOTALS3MSS3 = yTOTALS3MSS3 + pifTOTALS3MSS3arrayRAND[m];
                yTOTALS3MSS4 = yTOTALS3MSS4 + pifTOTALS3MSS4arrayRAND[m];
                
                yQuadTOTALS3MSS1 = (yQuadTOTALS3MSS1 + (pifTOTALS3MSS1arrayRAND[m]^2));
                yQuadTOTALS3MSS2 = (yQuadTOTALS3MSS2 + (pifTOTALS3MSS2arrayRAND[m]^2));
                yQuadTOTALS3MSS3 = (yQuadTOTALS3MSS3 + (pifTOTALS3MSS3arrayRAND[m]^2));
                yQuadTOTALS3MSS4 = (yQuadTOTALS3MSS4 + (pifTOTALS3MSS4arrayRAND[m]^2));
    
                xyTOTALS3MSS1 = (xyTOTALS3MSS1 + (pifTOTALS4MSS1arrayRAND[m] * pifTOTALS3MSS1arrayRAND[m]));
                xyTOTALS3MSS2 = (xyTOTALS3MSS2 + (pifTOTALS4MSS2arrayRAND[m] * pifTOTALS3MSS2arrayRAND[m]));
                xyTOTALS3MSS3 = (xyTOTALS3MSS3 + (pifTOTALS4MSS3arrayRAND[m] * pifTOTALS3MSS3arrayRAND[m]));
                xyTOTALS3MSS4 = (xyTOTALS3MSS4 + (pifTOTALS4MSS4arrayRAND[m] * pifTOTALS3MSS4arrayRAND[m]));
            }	
            
            xAritTOTALS3MSS1 = xTOTALS3MSS1 / minPifVAL;
            xAritTOTALS3MSS2 = xTOTALS3MSS2 / minPifVAL;
            xAritTOTALS3MSS3 = xTOTALS3MSS3 / minPifVAL;
            xAritTOTALS3MSS4 = xTOTALS3MSS4 / minPifVAL;
    
            yAritTOTALS3MSS1 = yTOTALS3MSS1 / minPifVAL;
            yAritTOTALS3MSS2 = yTOTALS3MSS2 / minPifVAL;
            yAritTOTALS3MSS3 = yTOTALS3MSS3 / minPifVAL;
            yAritTOTALS3MSS4 = yTOTALS3MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadTOTALS3MSS1 = (xxAritQuadTOTALS3MSS1 + ((pifTOTALS4MSS1arrayRAND[n] - xAritTOTALS3MSS1)^2));
                xxAritQuadTOTALS3MSS2 = (xxAritQuadTOTALS3MSS2 + ((pifTOTALS4MSS2arrayRAND[n] - xAritTOTALS3MSS2)^2));
                xxAritQuadTOTALS3MSS3 = (xxAritQuadTOTALS3MSS3 + ((pifTOTALS4MSS3arrayRAND[n] - xAritTOTALS3MSS3)^2));
                xxAritQuadTOTALS3MSS4 = (xxAritQuadTOTALS3MSS4 + ((pifTOTALS4MSS4arrayRAND[n] - xAritTOTALS3MSS4)^2));
    
                yyAritQuadTOTALS3MSS1 = (yyAritQuadTOTALS3MSS1 + ((pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)^2));
                yyAritQuadTOTALS3MSS2 = (yyAritQuadTOTALS3MSS2 + ((pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)^2));
                yyAritQuadTOTALS3MSS3 = (yyAritQuadTOTALS3MSS3 + ((pifTOTALS3MSS3arrayRAND[n] - yAritTOTALS3MSS3)^2));
                yyAritQuadTOTALS3MSS4 = (yyAritQuadTOTALS3MSS4 + ((pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)^2));
    
                qXYTOTALS3MSS1 = (qXYTOTALS3MSS1 + ((pifTOTALS4MSS1arrayRAND[n] - xAritTOTALS3MSS1) * (pifTOTALS3MSS1arrayRAND[n] - yAritTOTALS3MSS1)));
                qXYTOTALS3MSS2 = (qXYTOTALS3MSS2 + ((pifTOTALS4MSS2arrayRAND[n] - xAritTOTALS3MSS2) * (pifTOTALS3MSS2arrayRAND[n] - yAritTOTALS3MSS2)));
                qXYTOTALS3MSS3 = (qXYTOTALS3MSS3 + ((pifTOTALS4MSS3arrayRAND[n] - xAritTOTALS3MSS3) * (pifTOTALS3MSS3arrayRAND[n] - yAritTOTALS3MSS3)));
                qXYTOTALS3MSS4 = (qXYTOTALS3MSS4 + ((pifTOTALS4MSS4arrayRAND[n] - xAritTOTALS3MSS4) * (pifTOTALS3MSS4arrayRAND[n] - yAritTOTALS3MSS4)));
            }
        
            aTOTALS3MSS1 = (((xQuadTOTALS3MSS1 * yTOTALS3MSS1) - (xTOTALS3MSS1 * xyTOTALS3MSS1)) / ((minPifVAL * xQuadTOTALS3MSS1) - (xTOTALS3MSS1^2)));
            aTOTALS3MSS2 = (((xQuadTOTALS3MSS2 * yTOTALS3MSS2) - (xTOTALS3MSS2 * xyTOTALS3MSS2)) / ((minPifVAL * xQuadTOTALS3MSS2) - (xTOTALS3MSS2^2)));
            aTOTALS3MSS3 = (((xQuadTOTALS3MSS3 * yTOTALS3MSS3) - (xTOTALS3MSS3 * xyTOTALS3MSS3)) / ((minPifVAL * xQuadTOTALS3MSS3) - (xTOTALS3MSS3^2)));
            aTOTALS3MSS4 = (((xQuadTOTALS3MSS4 * yTOTALS3MSS4) - (xTOTALS3MSS4 * xyTOTALS3MSS4)) / ((minPifVAL * xQuadTOTALS3MSS4) - (xTOTALS3MSS4^2)));
            
            bTOTALS3MSS1 = qXYTOTALS3MSS1 / xxAritQuadTOTALS3MSS1;
            bTOTALS3MSS2 = qXYTOTALS3MSS2 / xxAritQuadTOTALS3MSS2;
            bTOTALS3MSS3 = qXYTOTALS3MSS3 / xxAritQuadTOTALS3MSS3;
            bTOTALS3MSS4 = qXYTOTALS3MSS4 / xxAritQuadTOTALS3MSS4;
    
            rTOTALS3MSS1 = (qXYTOTALS3MSS1 / ((xxAritQuadTOTALS3MSS1 * yyAritQuadTOTALS3MSS1)^0.5));
            rTOTALS3MSS2 = (qXYTOTALS3MSS2 / ((xxAritQuadTOTALS3MSS2 * yyAritQuadTOTALS3MSS2)^0.5));
            rTOTALS3MSS3 = (qXYTOTALS3MSS3 / ((xxAritQuadTOTALS3MSS3 * yyAritQuadTOTALS3MSS3)^0.5));
            rTOTALS3MSS4 = (qXYTOTALS3MSS4 / ((xxAritQuadTOTALS3MSS4 * yyAritQuadTOTALS3MSS4)^0.5));
    
            rQuadTOTALS3MSS1 = ((rTOTALS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadTOTALS3MSS2 = ((rTOTALS3MSS2^2) * 100);
            rQuadTOTALS3MSS3 = ((rTOTALS3MSS3^2) * 100);
            rQuadTOTALS3MSS4 = ((rTOTALS3MSS4^2) * 100);
        
            syxTOTALS3MSS1 = (((yyAritQuadTOTALS3MSS1 - ((qXYTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS2 = (((yyAritQuadTOTALS3MSS2 - ((qXYTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS3 = (((yyAritQuadTOTALS3MSS3 - ((qXYTOTALS3MSS3^2) / xxAritQuadTOTALS3MSS3)) / (minPifVAL - 2))^0.5);
            syxTOTALS3MSS4 = (((yyAritQuadTOTALS3MSS4 - ((qXYTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandTOTALS3MSS1 = (((syxTOTALS3MSS1^2) / xxAritQuadTOTALS3MSS1)^0.5);
            bStandTOTALS3MSS2 = (((syxTOTALS3MSS2^2) / xxAritQuadTOTALS3MSS2)^0.5);
            bStandTOTALS3MSS3 = (((syxTOTALS3MSS3^2) / xxAritQuadTOTALS3MSS3)^0.5);
            bStandTOTALS3MSS4 = (((syxTOTALS3MSS4^2) / xxAritQuadTOTALS3MSS4)^0.5);
    
            aStandTOTALS3MSS1 = (bStandTOTALS3MSS1 * ((xQuadTOTALS3MSS1 / minPifVAL)^0.5));
            aStandTOTALS3MSS2 = (bStandTOTALS3MSS2 * ((xQuadTOTALS3MSS2 / minPifVAL)^0.5));
            aStandTOTALS3MSS3 = (bStandTOTALS3MSS3 * ((xQuadTOTALS3MSS3 / minPifVAL)^0.5));
            aStandTOTALS3MSS4 = (bStandTOTALS3MSS4 * ((xQuadTOTALS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS1, bTOTALS3MSS1, rTOTALS3MSS1, rQuadTOTALS3MSS1, aStandTOTALS3MSS1, bStandTOTALS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS2, bTOTALS3MSS2, rTOTALS3MSS2, rQuadTOTALS3MSS2, aStandTOTALS3MSS2, bStandTOTALS3MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS3, bTOTALS3MSS3, rTOTALS3MSS3, rQuadTOTALS3MSS3, aStandTOTALS3MSS3, bStandTOTALS3MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aTOTALS3MSS4, bTOTALS3MSS4, rTOTALS3MSS4, rQuadTOTALS3MSS4, aStandTOTALS3MSS4, bStandTOTALS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifTOTALS3MSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS1arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifTOTALS3MSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS2arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifTOTALS3MSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS3arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifTOTALS3MSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifTOTALS3MSS4arrayRAND[o]);
            }
            printf("%12f\n", pifTOTALS3MSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aTOTALS3MSS1 + (bTOTALS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aTOTALS3MSS2 + (bTOTALS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = (aTOTALS3MSS3 + (bTOTALS3MSS3 * REFS3MSS3[i,j]));
                    OUT3MSS4[i,j] = (aTOTALS3MSS4 + (bTOTALS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
        	CreatePyramid(OUT3MSS1);
        	CreatePyramid(OUT3MSS2);
        	CreatePyramid(OUT3MSS3);
        	CreatePyramid(OUT3MSS4);
        
        	CreateHistogram(OUT3MSS1);
        	CreateHistogram(OUT3MSS2);
        	CreateHistogram(OUT3MSS3);
        	CreateHistogram(OUT3MSS4);
        
        	CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
        
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n"); 
            }
        }
    }
}
########################################################### 3 Mask Part #####################################################
else                            # if ( isTherePifMask == 0 )
{
    if ( slaveMaster == 1 )
	{
        if ( sensors1 == 7 )
        {
        printf("Scene 1 - Master Scene (ETM):\n");
        printf("Scene 1 array values used for regression computation:\n");
	    printf("For Scene 1 (Master) and Slave (Scene 2):");
        printf("ETM1: %12f ", pifSEPERATS1S2ETM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S2ETM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S2ETM1arrayRAND[minPifVAL]);
    
        printf("ETM2: %12f ", pifSEPERATS1S2ETM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S2ETM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S2ETM2arrayRAND[minPifVAL]);
    
        printf("ETM3: %12f ", pifSEPERATS1S2ETM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S2ETM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S2ETM3arrayRAND[minPifVAL]);
    
        printf("ETM4: %12f ", pifSEPERATS1S2ETM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S2ETM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S2ETM4arrayRAND[minPifVAL]);
    
        printf("ETM5: %12f ", pifSEPERATS1S2ETM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S2ETM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S2ETM5arrayRAND[minPifVAL]);
    
        printf("ETM7: %12f ", pifSEPERATS1S2ETM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S2ETM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS1S2ETM7arrayRAND[minPifVAL]);
	    printf("For Scene 1 (Master) and Slave (Scene 3):");
        printf("ETM1: %12f ", pifSEPERATS1S3ETM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S3ETM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S3ETM1arrayRAND[minPifVAL]);
    
        printf("ETM2: %12f ", pifSEPERATS1S3ETM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S3ETM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S3ETM2arrayRAND[minPifVAL]);
    
        printf("ETM3: %12f ", pifSEPERATS1S3ETM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S3ETM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S3ETM3arrayRAND[minPifVAL]);
    
        printf("ETM4: %12f ", pifSEPERATS1S3ETM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S3ETM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S3ETM4arrayRAND[minPifVAL]);
    
        printf("ETM5: %12f ", pifSEPERATS1S3ETM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S3ETM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S3ETM5arrayRAND[minPifVAL]);
    
        printf("ETM7: %12f ", pifSEPERATS1S3ETM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S3ETM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS1S3ETM7arrayRAND[minPifVAL]);
	    printf("For Scene 1 (Master) and Slave (Scene 4):");
        printf("ETM1: %12f ", pifSEPERATS1S4ETM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S4ETM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S4ETM1arrayRAND[minPifVAL]);
    
        printf("ETM2: %12f ", pifSEPERATS1S4ETM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S4ETM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S4ETM2arrayRAND[minPifVAL]);
    
        printf("ETM3: %12f ", pifSEPERATS1S4ETM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S4ETM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S4ETM3arrayRAND[minPifVAL]);
    
        printf("ETM4: %12f ", pifSEPERATS1S4ETM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S4ETM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S4ETM4arrayRAND[minPifVAL]);
    
        printf("ETM5: %12f ", pifSEPERATS1S4ETM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S4ETM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S4ETM5arrayRAND[minPifVAL]);
    
        printf("ETM7: %12f ", pifSEPERATS1S4ETM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S4ETM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS1S4ETM7arrayRAND[minPifVAL]);
                for i = 1 to ETMlins
                {
                    for j = 1 to ETMcols
                    {
                    OUT1ETM1[i,j] = REFS1ETM1[i,j];
                    OUT1ETM2[i,j] = REFS1ETM2[i,j];
                    OUT1ETM3[i,j] = REFS1ETM3[i,j];
                    OUT1ETM4[i,j] = REFS1ETM4[i,j];
                    OUT1ETM5[i,j] = REFS1ETM5[i,j];
                    OUT1ETM7[i,j] = REFS1ETM7[i,j];
                    }
                }
            
    CreatePyramid(OUT1ETM1);
    CreatePyramid(OUT1ETM2);
    CreatePyramid(OUT1ETM3);
    CreatePyramid(OUT1ETM4);
    CreatePyramid(OUT1ETM5);
    CreatePyramid(OUT1ETM7);
    
    CreateHistogram(OUT1ETM1);
    CreateHistogram(OUT1ETM2);
    CreateHistogram(OUT1ETM3);
    CreateHistogram(OUT1ETM4);
    CreateHistogram(OUT1ETM5);
    CreateHistogram(OUT1ETM7);
    
    CloseRaster(REFS1ETM1);
    CloseRaster(REFS1ETM2);
    CloseRaster(REFS1ETM3);
    CloseRaster(REFS1ETM4);
    CloseRaster(REFS1ETM5);
    CloseRaster(REFS1ETM7);
    
    CloseRaster(OUT1ETM1);
    CloseRaster(OUT1ETM2);
    CloseRaster(OUT1ETM3);
    CloseRaster(OUT1ETM4);
    CloseRaster(OUT1ETM5);
    CloseRaster(OUT1ETM7);
        
	printf("Scene 1 (Master) output was written, histogram created and pyramid written...\n\n\n");  
                    
            if ( sensors2 == 7 )
            {
            numeric xAritSEPERATS2ETM1, xAritSEPERATS2ETM2, xAritSEPERATS2ETM3, xAritSEPERATS2ETM4, xAritSEPERATS2ETM5, xAritSEPERATS2ETM7;
            numeric yAritSEPERATS2ETM1, yAritSEPERATS2ETM2, yAritSEPERATS2ETM3, yAritSEPERATS2ETM4, yAritSEPERATS2ETM5, yAritSEPERATS2ETM7;
    
            numeric aSEPERATS2ETM1, aSEPERATS2ETM2, aSEPERATS2ETM3, aSEPERATS2ETM4, aSEPERATS2ETM5, aSEPERATS2ETM7;
            numeric bSEPERATS2ETM1, bSEPERATS2ETM2, bSEPERATS2ETM3, bSEPERATS2ETM4, bSEPERATS2ETM5, bSEPERATS2ETM7;
            numeric rSEPERATS2ETM1, rSEPERATS2ETM2, rSEPERATS2ETM3, rSEPERATS2ETM4, rSEPERATS2ETM5, rSEPERATS2ETM7;
            numeric rQuadSEPERATS2ETM1, rQuadSEPERATS2ETM2, rQuadSEPERATS2ETM3, rQuadSEPERATS2ETM4, rQuadSEPERATS2ETM5, rQuadSEPERATS2ETM7;
            numeric syxSEPERATS2ETM1, syxSEPERATS2ETM2, syxSEPERATS2ETM3, syxSEPERATS2ETM4, syxSEPERATS2ETM5, syxSEPERATS2ETM7;
            numeric bStandSEPERATS2ETM1, bStandSEPERATS2ETM2, bStandSEPERATS2ETM3, bStandSEPERATS2ETM4, bStandSEPERATS2ETM5, bStandSEPERATS2ETM7;
            numeric aStandSEPERATS2ETM1, aStandSEPERATS2ETM2, aStandSEPERATS2ETM3, aStandSEPERATS2ETM4, aStandSEPERATS2ETM5, aStandSEPERATS2ETM7;
    
            numeric xSEPERATS2ETM1 = 0;
            numeric xSEPERATS2ETM2 = 0;
            numeric xSEPERATS2ETM3 = 0;
            numeric xSEPERATS2ETM4 = 0;
            numeric xSEPERATS2ETM5 = 0;
            numeric xSEPERATS2ETM7 = 0;
    
            numeric xQuadSEPERATS2ETM1 = 0;
            numeric xQuadSEPERATS2ETM2 = 0;
            numeric xQuadSEPERATS2ETM3 = 0;
            numeric xQuadSEPERATS2ETM4 = 0;
            numeric xQuadSEPERATS2ETM5 = 0;
            numeric xQuadSEPERATS2ETM7 = 0;
    
            numeric ySEPERATS2ETM1 = 0;
            numeric ySEPERATS2ETM2 = 0;
            numeric ySEPERATS2ETM3 = 0;
            numeric ySEPERATS2ETM4 = 0;
            numeric ySEPERATS2ETM5 = 0;
            numeric ySEPERATS2ETM7 = 0;
    
            numeric yQuadSEPERATS2ETM1 = 0;
            numeric yQuadSEPERATS2ETM2 = 0;
            numeric yQuadSEPERATS2ETM3 = 0;
            numeric yQuadSEPERATS2ETM4 = 0;
            numeric yQuadSEPERATS2ETM5 = 0;
            numeric yQuadSEPERATS2ETM7 = 0;
    
            numeric xySEPERATS2ETM1 = 0;
            numeric xySEPERATS2ETM2 = 0;
            numeric xySEPERATS2ETM3 = 0;
            numeric xySEPERATS2ETM4 = 0;
            numeric xySEPERATS2ETM5 = 0;
            numeric xySEPERATS2ETM7 = 0;
    
            numeric xxAritQuadSEPERATS2ETM1 = 0;
            numeric xxAritQuadSEPERATS2ETM2 = 0;
            numeric xxAritQuadSEPERATS2ETM3 = 0;
            numeric xxAritQuadSEPERATS2ETM4 = 0;
            numeric xxAritQuadSEPERATS2ETM5 = 0;
            numeric xxAritQuadSEPERATS2ETM7 = 0;
    
            numeric yyAritQuadSEPERATS2ETM1 = 0;
            numeric yyAritQuadSEPERATS2ETM2 = 0;
            numeric yyAritQuadSEPERATS2ETM3 = 0;
            numeric yyAritQuadSEPERATS2ETM4 = 0;
            numeric yyAritQuadSEPERATS2ETM5 = 0;
            numeric yyAritQuadSEPERATS2ETM7 = 0;
    
            numeric qXYSEPERATS2ETM1 = 0;
            numeric qXYSEPERATS2ETM2 = 0;
            numeric qXYSEPERATS2ETM3 = 0;
            numeric qXYSEPERATS2ETM4 = 0;
            numeric qXYSEPERATS2ETM5 = 0;
            numeric qXYSEPERATS2ETM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS2ETM1 = xSEPERATS2ETM1 + pifSEPERATS1S2ETM1arrayRAND[m];
                xSEPERATS2ETM2 = xSEPERATS2ETM2 + pifSEPERATS1S2ETM2arrayRAND[m];
                xSEPERATS2ETM3 = xSEPERATS2ETM3 + pifSEPERATS1S2ETM3arrayRAND[m];
                xSEPERATS2ETM4 = xSEPERATS2ETM4 + pifSEPERATS1S2ETM4arrayRAND[m];
                xSEPERATS2ETM5 = xSEPERATS2ETM5 + pifSEPERATS1S2ETM5arrayRAND[m];
                xSEPERATS2ETM7 = xSEPERATS2ETM7 + pifSEPERATS1S2ETM7arrayRAND[m];
    
                xQuadSEPERATS2ETM1 = (xQuadSEPERATS2ETM1 + (pifSEPERATS1S2ETM1arrayRAND[m]^2));
                xQuadSEPERATS2ETM2 = (xQuadSEPERATS2ETM2 + (pifSEPERATS1S2ETM2arrayRAND[m]^2));
                xQuadSEPERATS2ETM3 = (xQuadSEPERATS2ETM3 + (pifSEPERATS1S2ETM3arrayRAND[m]^2));
                xQuadSEPERATS2ETM4 = (xQuadSEPERATS2ETM4 + (pifSEPERATS1S2ETM4arrayRAND[m]^2));
                xQuadSEPERATS2ETM5 = (xQuadSEPERATS2ETM5 + (pifSEPERATS1S2ETM5arrayRAND[m]^2));
                xQuadSEPERATS2ETM7 = (xQuadSEPERATS2ETM7 + (pifSEPERATS1S2ETM7arrayRAND[m]^2));
    
                ySEPERATS2ETM1 = ySEPERATS2ETM1 + pifSEPERATS2slaveETM1arrayRAND[m];
                ySEPERATS2ETM2 = ySEPERATS2ETM2 + pifSEPERATS2slaveETM2arrayRAND[m];
                ySEPERATS2ETM3 = ySEPERATS2ETM3 + pifSEPERATS2slaveETM3arrayRAND[m];
                ySEPERATS2ETM4 = ySEPERATS2ETM4 + pifSEPERATS2slaveETM4arrayRAND[m];
                ySEPERATS2ETM5 = ySEPERATS2ETM5 + pifSEPERATS2slaveETM5arrayRAND[m];
                ySEPERATS2ETM7 = ySEPERATS2ETM7 + pifSEPERATS2slaveETM7arrayRAND[m];
                
                yQuadSEPERATS2ETM1 = (yQuadSEPERATS2ETM1 + (pifSEPERATS2slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS2ETM2 = (yQuadSEPERATS2ETM2 + (pifSEPERATS2slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS2ETM3 = (yQuadSEPERATS2ETM3 + (pifSEPERATS2slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS2ETM4 = (yQuadSEPERATS2ETM4 + (pifSEPERATS2slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS2ETM5 = (yQuadSEPERATS2ETM5 + (pifSEPERATS2slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS2ETM7 = (yQuadSEPERATS2ETM7 + (pifSEPERATS2slaveETM7arrayRAND[m]^2));
    
                xySEPERATS2ETM1 = (xySEPERATS2ETM1 + (pifSEPERATS1S2ETM1arrayRAND[m] * pifSEPERATS2slaveETM1arrayRAND[m]));
                xySEPERATS2ETM2 = (xySEPERATS2ETM2 + (pifSEPERATS1S2ETM2arrayRAND[m] * pifSEPERATS2slaveETM2arrayRAND[m]));
                xySEPERATS2ETM3 = (xySEPERATS2ETM3 + (pifSEPERATS1S2ETM3arrayRAND[m] * pifSEPERATS2slaveETM3arrayRAND[m]));
                xySEPERATS2ETM4 = (xySEPERATS2ETM4 + (pifSEPERATS1S2ETM4arrayRAND[m] * pifSEPERATS2slaveETM4arrayRAND[m]));
                xySEPERATS2ETM5 = (xySEPERATS2ETM5 + (pifSEPERATS1S2ETM5arrayRAND[m] * pifSEPERATS2slaveETM5arrayRAND[m]));
                xySEPERATS2ETM7 = (xySEPERATS2ETM7 + (pifSEPERATS1S2ETM7arrayRAND[m] * pifSEPERATS2slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS2ETM1 = xSEPERATS2ETM1 / minPifVAL;
            xAritSEPERATS2ETM2 = xSEPERATS2ETM2 / minPifVAL;
            xAritSEPERATS2ETM3 = xSEPERATS2ETM3 / minPifVAL;
            xAritSEPERATS2ETM4 = xSEPERATS2ETM4 / minPifVAL;
            xAritSEPERATS2ETM5 = xSEPERATS2ETM5 / minPifVAL;
            xAritSEPERATS2ETM7 = xSEPERATS2ETM7 / minPifVAL;
    
            yAritSEPERATS2ETM1 = ySEPERATS2ETM1 / minPifVAL;
            yAritSEPERATS2ETM2 = ySEPERATS2ETM2 / minPifVAL;
            yAritSEPERATS2ETM3 = ySEPERATS2ETM3 / minPifVAL;
            yAritSEPERATS2ETM4 = ySEPERATS2ETM4 / minPifVAL;
            yAritSEPERATS2ETM5 = ySEPERATS2ETM5 / minPifVAL;
            yAritSEPERATS2ETM7 = ySEPERATS2ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2ETM1 = (xxAritQuadSEPERATS2ETM1 + ((pifSEPERATS1S2ETM1arrayRAND[n] - xAritSEPERATS2ETM1)^2));
                xxAritQuadSEPERATS2ETM2 = (xxAritQuadSEPERATS2ETM2 + ((pifSEPERATS1S2ETM2arrayRAND[n] - xAritSEPERATS2ETM2)^2));
                xxAritQuadSEPERATS2ETM3 = (xxAritQuadSEPERATS2ETM3 + ((pifSEPERATS1S2ETM3arrayRAND[n] - xAritSEPERATS2ETM3)^2));
                xxAritQuadSEPERATS2ETM4 = (xxAritQuadSEPERATS2ETM4 + ((pifSEPERATS1S2ETM4arrayRAND[n] - xAritSEPERATS2ETM4)^2));
                xxAritQuadSEPERATS2ETM5 = (xxAritQuadSEPERATS2ETM5 + ((pifSEPERATS1S2ETM5arrayRAND[n] - xAritSEPERATS2ETM5)^2));
                xxAritQuadSEPERATS2ETM7 = (xxAritQuadSEPERATS2ETM7 + ((pifSEPERATS1S2ETM7arrayRAND[n] - xAritSEPERATS2ETM7)^2));
    
                yyAritQuadSEPERATS2ETM1 = (yyAritQuadSEPERATS2ETM1 + ((pifSEPERATS2slaveETM1arrayRAND[n] - yAritSEPERATS2ETM1)^2));
                yyAritQuadSEPERATS2ETM2 = (yyAritQuadSEPERATS2ETM2 + ((pifSEPERATS2slaveETM2arrayRAND[n] - yAritSEPERATS2ETM2)^2));
                yyAritQuadSEPERATS2ETM3 = (yyAritQuadSEPERATS2ETM3 + ((pifSEPERATS2slaveETM3arrayRAND[n] - yAritSEPERATS2ETM3)^2));
                yyAritQuadSEPERATS2ETM4 = (yyAritQuadSEPERATS2ETM4 + ((pifSEPERATS2slaveETM4arrayRAND[n] - yAritSEPERATS2ETM4)^2));
                yyAritQuadSEPERATS2ETM5 = (yyAritQuadSEPERATS2ETM5 + ((pifSEPERATS2slaveETM5arrayRAND[n] - yAritSEPERATS2ETM5)^2));
                yyAritQuadSEPERATS2ETM7 = (yyAritQuadSEPERATS2ETM7 + ((pifSEPERATS2slaveETM7arrayRAND[n] - yAritSEPERATS2ETM7)^2));
    
                qXYSEPERATS2ETM1 = (qXYSEPERATS2ETM1 + ((pifSEPERATS1S2ETM1arrayRAND[n] - xAritSEPERATS2ETM1) * (pifSEPERATS2slaveETM1arrayRAND[n] - yAritSEPERATS2ETM1)));
                qXYSEPERATS2ETM2 = (qXYSEPERATS2ETM2 + ((pifSEPERATS1S2ETM2arrayRAND[n] - xAritSEPERATS2ETM2) * (pifSEPERATS2slaveETM2arrayRAND[n] - yAritSEPERATS2ETM2)));
                qXYSEPERATS2ETM3 = (qXYSEPERATS2ETM3 + ((pifSEPERATS1S2ETM3arrayRAND[n] - xAritSEPERATS2ETM3) * (pifSEPERATS2slaveETM3arrayRAND[n] - yAritSEPERATS2ETM3)));
                qXYSEPERATS2ETM4 = (qXYSEPERATS2ETM4 + ((pifSEPERATS1S2ETM4arrayRAND[n] - xAritSEPERATS2ETM4) * (pifSEPERATS2slaveETM4arrayRAND[n] - yAritSEPERATS2ETM4)));
                qXYSEPERATS2ETM5 = (qXYSEPERATS2ETM5 + ((pifSEPERATS1S2ETM5arrayRAND[n] - xAritSEPERATS2ETM5) * (pifSEPERATS2slaveETM5arrayRAND[n] - yAritSEPERATS2ETM5)));
                qXYSEPERATS2ETM7 = (qXYSEPERATS2ETM7 + ((pifSEPERATS1S2ETM7arrayRAND[n] - xAritSEPERATS2ETM7) * (pifSEPERATS2slaveETM7arrayRAND[n] - yAritSEPERATS2ETM7)));
            }
        
            aSEPERATS2ETM1 = (((xQuadSEPERATS2ETM1 * ySEPERATS2ETM1) - (xSEPERATS2ETM1 * xySEPERATS2ETM1)) / ((minPifVAL * xQuadSEPERATS2ETM1) - (xSEPERATS2ETM1^2)));
            aSEPERATS2ETM2 = (((xQuadSEPERATS2ETM2 * ySEPERATS2ETM2) - (xSEPERATS2ETM2 * xySEPERATS2ETM2)) / ((minPifVAL * xQuadSEPERATS2ETM2) - (xSEPERATS2ETM2^2)));
            aSEPERATS2ETM3 = (((xQuadSEPERATS2ETM3 * ySEPERATS2ETM3) - (xSEPERATS2ETM3 * xySEPERATS2ETM3)) / ((minPifVAL * xQuadSEPERATS2ETM3) - (xSEPERATS2ETM3^2)));
            aSEPERATS2ETM4 = (((xQuadSEPERATS2ETM4 * ySEPERATS2ETM4) - (xSEPERATS2ETM4 * xySEPERATS2ETM4)) / ((minPifVAL * xQuadSEPERATS2ETM4) - (xSEPERATS2ETM4^2)));
            aSEPERATS2ETM5 = (((xQuadSEPERATS2ETM5 * ySEPERATS2ETM5) - (xSEPERATS2ETM5 * xySEPERATS2ETM5)) / ((minPifVAL * xQuadSEPERATS2ETM5) - (xSEPERATS2ETM5^2)));
            aSEPERATS2ETM7 = (((xQuadSEPERATS2ETM7 * ySEPERATS2ETM7) - (xSEPERATS2ETM7 * xySEPERATS2ETM7)) / ((minPifVAL * xQuadSEPERATS2ETM7) - (xSEPERATS2ETM7^2)));
            
            bSEPERATS2ETM1 = qXYSEPERATS2ETM1 / xxAritQuadSEPERATS2ETM1;
            bSEPERATS2ETM2 = qXYSEPERATS2ETM2 / xxAritQuadSEPERATS2ETM2;
            bSEPERATS2ETM3 = qXYSEPERATS2ETM3 / xxAritQuadSEPERATS2ETM3;
            bSEPERATS2ETM4 = qXYSEPERATS2ETM4 / xxAritQuadSEPERATS2ETM4;
            bSEPERATS2ETM5 = qXYSEPERATS2ETM5 / xxAritQuadSEPERATS2ETM5;
            bSEPERATS2ETM7 = qXYSEPERATS2ETM7 / xxAritQuadSEPERATS2ETM7;
    
            rSEPERATS2ETM1 = (qXYSEPERATS2ETM1 / ((xxAritQuadSEPERATS2ETM1 * yyAritQuadSEPERATS2ETM1)^0.5));
            rSEPERATS2ETM2 = (qXYSEPERATS2ETM2 / ((xxAritQuadSEPERATS2ETM2 * yyAritQuadSEPERATS2ETM2)^0.5));
            rSEPERATS2ETM3 = (qXYSEPERATS2ETM3 / ((xxAritQuadSEPERATS2ETM3 * yyAritQuadSEPERATS2ETM3)^0.5));
            rSEPERATS2ETM4 = (qXYSEPERATS2ETM4 / ((xxAritQuadSEPERATS2ETM4 * yyAritQuadSEPERATS2ETM4)^0.5));
            rSEPERATS2ETM5 = (qXYSEPERATS2ETM5 / ((xxAritQuadSEPERATS2ETM5 * yyAritQuadSEPERATS2ETM5)^0.5));
            rSEPERATS2ETM7 = (qXYSEPERATS2ETM7 / ((xxAritQuadSEPERATS2ETM7 * yyAritQuadSEPERATS2ETM7)^0.5));
    
            rQuadSEPERATS2ETM1 = ((rSEPERATS2ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2ETM2 = ((rSEPERATS2ETM2^2) * 100);
            rQuadSEPERATS2ETM3 = ((rSEPERATS2ETM3^2) * 100);
            rQuadSEPERATS2ETM4 = ((rSEPERATS2ETM4^2) * 100);
            rQuadSEPERATS2ETM5 = ((rSEPERATS2ETM5^2) * 100);
            rQuadSEPERATS2ETM7 = ((rSEPERATS2ETM7^2) * 100);
        
            syxSEPERATS2ETM1 = (((yyAritQuadSEPERATS2ETM1 - ((qXYSEPERATS2ETM1^2) / xxAritQuadSEPERATS2ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM2 = (((yyAritQuadSEPERATS2ETM2 - ((qXYSEPERATS2ETM2^2) / xxAritQuadSEPERATS2ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM3 = (((yyAritQuadSEPERATS2ETM3 - ((qXYSEPERATS2ETM3^2) / xxAritQuadSEPERATS2ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM4 = (((yyAritQuadSEPERATS2ETM4 - ((qXYSEPERATS2ETM4^2) / xxAritQuadSEPERATS2ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM5 = (((yyAritQuadSEPERATS2ETM5 - ((qXYSEPERATS2ETM5^2) / xxAritQuadSEPERATS2ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM7 = (((yyAritQuadSEPERATS2ETM7 - ((qXYSEPERATS2ETM7^2) / xxAritQuadSEPERATS2ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2ETM1 = (((syxSEPERATS2ETM1^2) / xxAritQuadSEPERATS2ETM1)^0.5);
            bStandSEPERATS2ETM2 = (((syxSEPERATS2ETM2^2) / xxAritQuadSEPERATS2ETM2)^0.5);
            bStandSEPERATS2ETM3 = (((syxSEPERATS2ETM3^2) / xxAritQuadSEPERATS2ETM3)^0.5);
            bStandSEPERATS2ETM4 = (((syxSEPERATS2ETM4^2) / xxAritQuadSEPERATS2ETM4)^0.5);
            bStandSEPERATS2ETM5 = (((syxSEPERATS2ETM5^2) / xxAritQuadSEPERATS2ETM5)^0.5);
            bStandSEPERATS2ETM7 = (((syxSEPERATS2ETM7^2) / xxAritQuadSEPERATS2ETM7)^0.5);
    
            aStandSEPERATS2ETM1 = (bStandSEPERATS2ETM1 * ((xQuadSEPERATS2ETM1 / minPifVAL)^0.5));
            aStandSEPERATS2ETM2 = (bStandSEPERATS2ETM2 * ((xQuadSEPERATS2ETM2 / minPifVAL)^0.5));
            aStandSEPERATS2ETM3 = (bStandSEPERATS2ETM3 * ((xQuadSEPERATS2ETM3 / minPifVAL)^0.5));
            aStandSEPERATS2ETM4 = (bStandSEPERATS2ETM4 * ((xQuadSEPERATS2ETM4 / minPifVAL)^0.5));
            aStandSEPERATS2ETM5 = (bStandSEPERATS2ETM5 * ((xQuadSEPERATS2ETM5 / minPifVAL)^0.5));
            aStandSEPERATS2ETM7 = (bStandSEPERATS2ETM7 * ((xQuadSEPERATS2ETM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM1, bSEPERATS2ETM1, rSEPERATS2ETM1, rQuadSEPERATS2ETM1, aStandSEPERATS2ETM1, bStandSEPERATS2ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM2, bSEPERATS2ETM2, rSEPERATS2ETM2, rQuadSEPERATS2ETM2, aStandSEPERATS2ETM2, bStandSEPERATS2ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM3, bSEPERATS2ETM3, rSEPERATS2ETM3, rQuadSEPERATS2ETM3, aStandSEPERATS2ETM3, bStandSEPERATS2ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM4, bSEPERATS2ETM4, rSEPERATS2ETM4, rQuadSEPERATS2ETM4, aStandSEPERATS2ETM4, bStandSEPERATS2ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM5, bSEPERATS2ETM5, rSEPERATS2ETM5, rQuadSEPERATS2ETM5, aStandSEPERATS2ETM5, bStandSEPERATS2ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS2ETM7, bSEPERATS2ETM7, rSEPERATS2ETM7, rQuadSEPERATS2ETM7, aStandSEPERATS2ETM7, bStandSEPERATS2ETM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS2slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS2slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS2slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS2slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS2slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS2slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS2slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT2ETM1[i,j] = (aSEPERATS2ETM1 + (bSEPERATS2ETM1 * REFS2ETM1[i,j]));
                    OUT2ETM2[i,j] = (aSEPERATS2ETM2 + (bSEPERATS2ETM2 * REFS2ETM2[i,j]));
                    OUT2ETM3[i,j] = (aSEPERATS2ETM3 + (bSEPERATS2ETM3 * REFS2ETM3[i,j]));
                    OUT2ETM4[i,j] = (aSEPERATS2ETM4 + (bSEPERATS2ETM4 * REFS2ETM4[i,j]));
                    OUT2ETM5[i,j] = (aSEPERATS2ETM5 + (bSEPERATS2ETM5 * REFS2ETM5[i,j]));
                    OUT2ETM7[i,j] = (aSEPERATS2ETM7 + (bSEPERATS2ETM7 * REFS2ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2ETM1);
        	CreatePyramid(OUT2ETM2);
        	CreatePyramid(OUT2ETM3);
        	CreatePyramid(OUT2ETM4);
        	CreatePyramid(OUT2ETM5);
        	CreatePyramid(OUT2ETM7);
        
        	CreateHistogram(OUT2ETM1);
        	CreateHistogram(OUT2ETM2);
        	CreateHistogram(OUT2ETM3);
        	CreateHistogram(OUT2ETM4);
        	CreateHistogram(OUT2ETM5);
        	CreateHistogram(OUT2ETM7);
            CloseRaster(REFS2ETM1);
            CloseRaster(REFS2ETM2);
            CloseRaster(REFS2ETM3);
            CloseRaster(REFS2ETM4);
            CloseRaster(REFS2ETM5);
            CloseRaster(REFS2ETM7);
    
            CloseRaster(OUT2ETM1);
            CloseRaster(OUT2ETM2);
            CloseRaster(OUT2ETM3);
            CloseRaster(OUT2ETM4);
            CloseRaster(OUT2ETM5);
            CloseRaster(OUT2ETM7);
            
        	printf("Scene 2 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");            
            }
            
            else if ( sensors2 == 6 )
            {
            numeric xAritSEPERATS2TM1, xAritSEPERATS2TM2, xAritSEPERATS2TM3, xAritSEPERATS2TM4, xAritSEPERATS2TM5, xAritSEPERATS2TM7;
            numeric yAritSEPERATS2TM1, yAritSEPERATS2TM2, yAritSEPERATS2TM3, yAritSEPERATS2TM4, yAritSEPERATS2TM5, yAritSEPERATS2TM7;
    
            numeric aSEPERATS2TM1, aSEPERATS2TM2, aSEPERATS2TM3, aSEPERATS2TM4, aSEPERATS2TM5, aSEPERATS2TM7;
            numeric bSEPERATS2TM1, bSEPERATS2TM2, bSEPERATS2TM3, bSEPERATS2TM4, bSEPERATS2TM5, bSEPERATS2TM7;
            numeric rSEPERATS2TM1, rSEPERATS2TM2, rSEPERATS2TM3, rSEPERATS2TM4, rSEPERATS2TM5, rSEPERATS2TM7;
            numeric rQuadSEPERATS2TM1, rQuadSEPERATS2TM2, rQuadSEPERATS2TM3, rQuadSEPERATS2TM4, rQuadSEPERATS2TM5, rQuadSEPERATS2TM7;
            numeric syxSEPERATS2TM1, syxSEPERATS2TM2, syxSEPERATS2TM3, syxSEPERATS2TM4, syxSEPERATS2TM5, syxSEPERATS2TM7;
            numeric bStandSEPERATS2TM1, bStandSEPERATS2TM2, bStandSEPERATS2TM3, bStandSEPERATS2TM4, bStandSEPERATS2TM5, bStandSEPERATS2TM7;
            numeric aStandSEPERATS2TM1, aStandSEPERATS2TM2, aStandSEPERATS2TM3, aStandSEPERATS2TM4, aStandSEPERATS2TM5, aStandSEPERATS2TM7;
    
            numeric xSEPERATS2TM1 = 0;
            numeric xSEPERATS2TM2 = 0;
            numeric xSEPERATS2TM3 = 0;
            numeric xSEPERATS2TM4 = 0;
            numeric xSEPERATS2TM5 = 0;
            numeric xSEPERATS2TM7 = 0;
    
            numeric xQuadSEPERATS2TM1 = 0;
            numeric xQuadSEPERATS2TM2 = 0;
            numeric xQuadSEPERATS2TM3 = 0;
            numeric xQuadSEPERATS2TM4 = 0;
            numeric xQuadSEPERATS2TM5 = 0;
            numeric xQuadSEPERATS2TM7 = 0;
    
            numeric ySEPERATS2TM1 = 0;
            numeric ySEPERATS2TM2 = 0;
            numeric ySEPERATS2TM3 = 0;
            numeric ySEPERATS2TM4 = 0;
            numeric ySEPERATS2TM5 = 0;
            numeric ySEPERATS2TM7 = 0;
    
            numeric yQuadSEPERATS2TM1 = 0;
            numeric yQuadSEPERATS2TM2 = 0;
            numeric yQuadSEPERATS2TM3 = 0;
            numeric yQuadSEPERATS2TM4 = 0;
            numeric yQuadSEPERATS2TM5 = 0;
            numeric yQuadSEPERATS2TM7 = 0;
    
            numeric xySEPERATS2TM1 = 0;
            numeric xySEPERATS2TM2 = 0;
            numeric xySEPERATS2TM3 = 0;
            numeric xySEPERATS2TM4 = 0;
            numeric xySEPERATS2TM5 = 0;
            numeric xySEPERATS2TM7 = 0;
    
            numeric xxAritQuadSEPERATS2TM1 = 0;
            numeric xxAritQuadSEPERATS2TM2 = 0;
            numeric xxAritQuadSEPERATS2TM3 = 0;
            numeric xxAritQuadSEPERATS2TM4 = 0;
            numeric xxAritQuadSEPERATS2TM5 = 0;
            numeric xxAritQuadSEPERATS2TM7 = 0;
    
            numeric yyAritQuadSEPERATS2TM1 = 0;
            numeric yyAritQuadSEPERATS2TM2 = 0;
            numeric yyAritQuadSEPERATS2TM3 = 0;
            numeric yyAritQuadSEPERATS2TM4 = 0;
            numeric yyAritQuadSEPERATS2TM5 = 0;
            numeric yyAritQuadSEPERATS2TM7 = 0;
    
            numeric qXYSEPERATS2TM1 = 0;
            numeric qXYSEPERATS2TM2 = 0;
            numeric qXYSEPERATS2TM3 = 0;
            numeric qXYSEPERATS2TM4 = 0;
            numeric qXYSEPERATS2TM5 = 0;
            numeric qXYSEPERATS2TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS2TM1 = xSEPERATS2TM1 + pifSEPERATS1S2ETM1arrayRAND[m];
                xSEPERATS2TM2 = xSEPERATS2TM2 + pifSEPERATS1S2ETM2arrayRAND[m];
                xSEPERATS2TM3 = xSEPERATS2TM3 + pifSEPERATS1S2ETM3arrayRAND[m];
                xSEPERATS2TM4 = xSEPERATS2TM4 + pifSEPERATS1S2ETM4arrayRAND[m];
                xSEPERATS2TM5 = xSEPERATS2TM5 + pifSEPERATS1S2ETM5arrayRAND[m];
                xSEPERATS2TM7 = xSEPERATS2TM7 + pifSEPERATS1S2ETM7arrayRAND[m];
    
                xQuadSEPERATS2TM1 = (xQuadSEPERATS2TM1 + (pifSEPERATS1S2ETM1arrayRAND[m]^2));
                xQuadSEPERATS2TM2 = (xQuadSEPERATS2TM2 + (pifSEPERATS1S2ETM2arrayRAND[m]^2));
                xQuadSEPERATS2TM3 = (xQuadSEPERATS2TM3 + (pifSEPERATS1S2ETM3arrayRAND[m]^2));
                xQuadSEPERATS2TM4 = (xQuadSEPERATS2TM4 + (pifSEPERATS1S2ETM4arrayRAND[m]^2));
                xQuadSEPERATS2TM5 = (xQuadSEPERATS2TM5 + (pifSEPERATS1S2ETM5arrayRAND[m]^2));
                xQuadSEPERATS2TM7 = (xQuadSEPERATS2TM7 + (pifSEPERATS1S2ETM7arrayRAND[m]^2));
    
                ySEPERATS2TM1 = ySEPERATS2TM1 + pifSEPERATS2slaveTM1arrayRAND[m];
                ySEPERATS2TM2 = ySEPERATS2TM2 + pifSEPERATS2slaveTM2arrayRAND[m];
                ySEPERATS2TM3 = ySEPERATS2TM3 + pifSEPERATS2slaveTM3arrayRAND[m];
                ySEPERATS2TM4 = ySEPERATS2TM4 + pifSEPERATS2slaveTM4arrayRAND[m];
                ySEPERATS2TM5 = ySEPERATS2TM5 + pifSEPERATS2slaveTM5arrayRAND[m];
                ySEPERATS2TM7 = ySEPERATS2TM7 + pifSEPERATS2slaveTM7arrayRAND[m];
                
                yQuadSEPERATS2TM1 = (yQuadSEPERATS2TM1 + (pifSEPERATS2slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS2TM2 = (yQuadSEPERATS2TM2 + (pifSEPERATS2slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS2TM3 = (yQuadSEPERATS2TM3 + (pifSEPERATS2slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS2TM4 = (yQuadSEPERATS2TM4 + (pifSEPERATS2slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS2TM5 = (yQuadSEPERATS2TM5 + (pifSEPERATS2slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS2TM7 = (yQuadSEPERATS2TM7 + (pifSEPERATS2slaveTM7arrayRAND[m]^2));
    
                xySEPERATS2TM1 = (xySEPERATS2TM1 + (pifSEPERATS1S2ETM1arrayRAND[m] * pifSEPERATS2slaveTM1arrayRAND[m]));
                xySEPERATS2TM2 = (xySEPERATS2TM2 + (pifSEPERATS1S2ETM2arrayRAND[m] * pifSEPERATS2slaveTM2arrayRAND[m]));
                xySEPERATS2TM3 = (xySEPERATS2TM3 + (pifSEPERATS1S2ETM3arrayRAND[m] * pifSEPERATS2slaveTM3arrayRAND[m]));
                xySEPERATS2TM4 = (xySEPERATS2TM4 + (pifSEPERATS1S2ETM4arrayRAND[m] * pifSEPERATS2slaveTM4arrayRAND[m]));
                xySEPERATS2TM5 = (xySEPERATS2TM5 + (pifSEPERATS1S2ETM5arrayRAND[m] * pifSEPERATS2slaveTM5arrayRAND[m]));
                xySEPERATS2TM7 = (xySEPERATS2TM7 + (pifSEPERATS1S2ETM7arrayRAND[m] * pifSEPERATS2slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS2TM1 = xSEPERATS2TM1 / minPifVAL;
            xAritSEPERATS2TM2 = xSEPERATS2TM2 / minPifVAL;
            xAritSEPERATS2TM3 = xSEPERATS2TM3 / minPifVAL;
            xAritSEPERATS2TM4 = xSEPERATS2TM4 / minPifVAL;
            xAritSEPERATS2TM5 = xSEPERATS2TM5 / minPifVAL;
            xAritSEPERATS2TM7 = xSEPERATS2TM7 / minPifVAL;
    
            yAritSEPERATS2TM1 = ySEPERATS2TM1 / minPifVAL;
            yAritSEPERATS2TM2 = ySEPERATS2TM2 / minPifVAL;
            yAritSEPERATS2TM3 = ySEPERATS2TM3 / minPifVAL;
            yAritSEPERATS2TM4 = ySEPERATS2TM4 / minPifVAL;
            yAritSEPERATS2TM5 = ySEPERATS2TM5 / minPifVAL;
            yAritSEPERATS2TM7 = ySEPERATS2TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2TM1 = (xxAritQuadSEPERATS2TM1 + ((pifSEPERATS1S2ETM1arrayRAND[n] - xAritSEPERATS2TM1)^2));
                xxAritQuadSEPERATS2TM2 = (xxAritQuadSEPERATS2TM2 + ((pifSEPERATS1S2ETM2arrayRAND[n] - xAritSEPERATS2TM2)^2));
                xxAritQuadSEPERATS2TM3 = (xxAritQuadSEPERATS2TM3 + ((pifSEPERATS1S2ETM3arrayRAND[n] - xAritSEPERATS2TM3)^2));
                xxAritQuadSEPERATS2TM4 = (xxAritQuadSEPERATS2TM4 + ((pifSEPERATS1S2ETM4arrayRAND[n] - xAritSEPERATS2TM4)^2));
                xxAritQuadSEPERATS2TM5 = (xxAritQuadSEPERATS2TM5 + ((pifSEPERATS1S2ETM5arrayRAND[n] - xAritSEPERATS2TM5)^2));
                xxAritQuadSEPERATS2TM7 = (xxAritQuadSEPERATS2TM7 + ((pifSEPERATS1S2ETM7arrayRAND[n] - xAritSEPERATS2TM7)^2));
    
                yyAritQuadSEPERATS2TM1 = (yyAritQuadSEPERATS2TM1 + ((pifSEPERATS2slaveTM1arrayRAND[n] - yAritSEPERATS2TM1)^2));
                yyAritQuadSEPERATS2TM2 = (yyAritQuadSEPERATS2TM2 + ((pifSEPERATS2slaveTM2arrayRAND[n] - yAritSEPERATS2TM2)^2));
                yyAritQuadSEPERATS2TM3 = (yyAritQuadSEPERATS2TM3 + ((pifSEPERATS2slaveTM3arrayRAND[n] - yAritSEPERATS2TM3)^2));
                yyAritQuadSEPERATS2TM4 = (yyAritQuadSEPERATS2TM4 + ((pifSEPERATS2slaveTM4arrayRAND[n] - yAritSEPERATS2TM4)^2));
                yyAritQuadSEPERATS2TM5 = (yyAritQuadSEPERATS2TM5 + ((pifSEPERATS2slaveTM5arrayRAND[n] - yAritSEPERATS2TM5)^2));
                yyAritQuadSEPERATS2TM7 = (yyAritQuadSEPERATS2TM7 + ((pifSEPERATS2slaveTM7arrayRAND[n] - yAritSEPERATS2TM7)^2));
    
                qXYSEPERATS2TM1 = (qXYSEPERATS2TM1 + ((pifSEPERATS1S2ETM1arrayRAND[n] - xAritSEPERATS2TM1) * (pifSEPERATS2slaveTM1arrayRAND[n] - yAritSEPERATS2TM1)));
                qXYSEPERATS2TM2 = (qXYSEPERATS2TM2 + ((pifSEPERATS1S2ETM2arrayRAND[n] - xAritSEPERATS2TM2) * (pifSEPERATS2slaveTM2arrayRAND[n] - yAritSEPERATS2TM2)));
                qXYSEPERATS2TM3 = (qXYSEPERATS2TM3 + ((pifSEPERATS1S2ETM3arrayRAND[n] - xAritSEPERATS2TM3) * (pifSEPERATS2slaveTM3arrayRAND[n] - yAritSEPERATS2TM3)));
                qXYSEPERATS2TM4 = (qXYSEPERATS2TM4 + ((pifSEPERATS1S2ETM4arrayRAND[n] - xAritSEPERATS2TM4) * (pifSEPERATS2slaveTM4arrayRAND[n] - yAritSEPERATS2TM4)));
                qXYSEPERATS2TM5 = (qXYSEPERATS2TM5 + ((pifSEPERATS1S2ETM5arrayRAND[n] - xAritSEPERATS2TM5) * (pifSEPERATS2slaveTM5arrayRAND[n] - yAritSEPERATS2TM5)));
                qXYSEPERATS2TM7 = (qXYSEPERATS2TM7 + ((pifSEPERATS1S2ETM7arrayRAND[n] - xAritSEPERATS2TM7) * (pifSEPERATS2slaveTM7arrayRAND[n] - yAritSEPERATS2TM7)));
            }
        
            aSEPERATS2TM1 = (((xQuadSEPERATS2TM1 * ySEPERATS2TM1) - (xSEPERATS2TM1 * xySEPERATS2TM1)) / ((minPifVAL * xQuadSEPERATS2TM1) - (xSEPERATS2TM1^2)));
            aSEPERATS2TM2 = (((xQuadSEPERATS2TM2 * ySEPERATS2TM2) - (xSEPERATS2TM2 * xySEPERATS2TM2)) / ((minPifVAL * xQuadSEPERATS2TM2) - (xSEPERATS2TM2^2)));
            aSEPERATS2TM3 = (((xQuadSEPERATS2TM3 * ySEPERATS2TM3) - (xSEPERATS2TM3 * xySEPERATS2TM3)) / ((minPifVAL * xQuadSEPERATS2TM3) - (xSEPERATS2TM3^2)));
            aSEPERATS2TM4 = (((xQuadSEPERATS2TM4 * ySEPERATS2TM4) - (xSEPERATS2TM4 * xySEPERATS2TM4)) / ((minPifVAL * xQuadSEPERATS2TM4) - (xSEPERATS2TM4^2)));
            aSEPERATS2TM5 = (((xQuadSEPERATS2TM5 * ySEPERATS2TM5) - (xSEPERATS2TM5 * xySEPERATS2TM5)) / ((minPifVAL * xQuadSEPERATS2TM5) - (xSEPERATS2TM5^2)));
            aSEPERATS2TM7 = (((xQuadSEPERATS2TM7 * ySEPERATS2TM7) - (xSEPERATS2TM7 * xySEPERATS2TM7)) / ((minPifVAL * xQuadSEPERATS2TM7) - (xSEPERATS2TM7^2)));
            
            bSEPERATS2TM1 = qXYSEPERATS2TM1 / xxAritQuadSEPERATS2TM1;
            bSEPERATS2TM2 = qXYSEPERATS2TM2 / xxAritQuadSEPERATS2TM2;
            bSEPERATS2TM3 = qXYSEPERATS2TM3 / xxAritQuadSEPERATS2TM3;
            bSEPERATS2TM4 = qXYSEPERATS2TM4 / xxAritQuadSEPERATS2TM4;
            bSEPERATS2TM5 = qXYSEPERATS2TM5 / xxAritQuadSEPERATS2TM5;
            bSEPERATS2TM7 = qXYSEPERATS2TM7 / xxAritQuadSEPERATS2TM7;
    
            rSEPERATS2TM1 = (qXYSEPERATS2TM1 / ((xxAritQuadSEPERATS2TM1 * yyAritQuadSEPERATS2TM1)^0.5));
            rSEPERATS2TM2 = (qXYSEPERATS2TM2 / ((xxAritQuadSEPERATS2TM2 * yyAritQuadSEPERATS2TM2)^0.5));
            rSEPERATS2TM3 = (qXYSEPERATS2TM3 / ((xxAritQuadSEPERATS2TM3 * yyAritQuadSEPERATS2TM3)^0.5));
            rSEPERATS2TM4 = (qXYSEPERATS2TM4 / ((xxAritQuadSEPERATS2TM4 * yyAritQuadSEPERATS2TM4)^0.5));
            rSEPERATS2TM5 = (qXYSEPERATS2TM5 / ((xxAritQuadSEPERATS2TM5 * yyAritQuadSEPERATS2TM5)^0.5));
            rSEPERATS2TM7 = (qXYSEPERATS2TM7 / ((xxAritQuadSEPERATS2TM7 * yyAritQuadSEPERATS2TM7)^0.5));
    
            rQuadSEPERATS2TM1 = ((rSEPERATS2TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2TM2 = ((rSEPERATS2TM2^2) * 100);
            rQuadSEPERATS2TM3 = ((rSEPERATS2TM3^2) * 100);
            rQuadSEPERATS2TM4 = ((rSEPERATS2TM4^2) * 100);
            rQuadSEPERATS2TM5 = ((rSEPERATS2TM5^2) * 100);
            rQuadSEPERATS2TM7 = ((rSEPERATS2TM7^2) * 100);
        
            syxSEPERATS2TM1 = (((yyAritQuadSEPERATS2TM1 - ((qXYSEPERATS2TM1^2) / xxAritQuadSEPERATS2TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM2 = (((yyAritQuadSEPERATS2TM2 - ((qXYSEPERATS2TM2^2) / xxAritQuadSEPERATS2TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM3 = (((yyAritQuadSEPERATS2TM3 - ((qXYSEPERATS2TM3^2) / xxAritQuadSEPERATS2TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM4 = (((yyAritQuadSEPERATS2TM4 - ((qXYSEPERATS2TM4^2) / xxAritQuadSEPERATS2TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM5 = (((yyAritQuadSEPERATS2TM5 - ((qXYSEPERATS2TM5^2) / xxAritQuadSEPERATS2TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM7 = (((yyAritQuadSEPERATS2TM7 - ((qXYSEPERATS2TM7^2) / xxAritQuadSEPERATS2TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2TM1 = (((syxSEPERATS2TM1^2) / xxAritQuadSEPERATS2TM1)^0.5);
            bStandSEPERATS2TM2 = (((syxSEPERATS2TM2^2) / xxAritQuadSEPERATS2TM2)^0.5);
            bStandSEPERATS2TM3 = (((syxSEPERATS2TM3^2) / xxAritQuadSEPERATS2TM3)^0.5);
            bStandSEPERATS2TM4 = (((syxSEPERATS2TM4^2) / xxAritQuadSEPERATS2TM4)^0.5);
            bStandSEPERATS2TM5 = (((syxSEPERATS2TM5^2) / xxAritQuadSEPERATS2TM5)^0.5);
            bStandSEPERATS2TM7 = (((syxSEPERATS2TM7^2) / xxAritQuadSEPERATS2TM7)^0.5);
    
            aStandSEPERATS2TM1 = (bStandSEPERATS2TM1 * ((xQuadSEPERATS2TM1 / minPifVAL)^0.5));
            aStandSEPERATS2TM2 = (bStandSEPERATS2TM2 * ((xQuadSEPERATS2TM2 / minPifVAL)^0.5));
            aStandSEPERATS2TM3 = (bStandSEPERATS2TM3 * ((xQuadSEPERATS2TM3 / minPifVAL)^0.5));
            aStandSEPERATS2TM4 = (bStandSEPERATS2TM4 * ((xQuadSEPERATS2TM4 / minPifVAL)^0.5));
            aStandSEPERATS2TM5 = (bStandSEPERATS2TM5 * ((xQuadSEPERATS2TM5 / minPifVAL)^0.5));
            aStandSEPERATS2TM7 = (bStandSEPERATS2TM7 * ((xQuadSEPERATS2TM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM1, bSEPERATS2TM1, rSEPERATS2TM1, rQuadSEPERATS2TM1, aStandSEPERATS2TM1, bStandSEPERATS2TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM2, bSEPERATS2TM2, rSEPERATS2TM2, rQuadSEPERATS2TM2, aStandSEPERATS2TM2, bStandSEPERATS2TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM3, bSEPERATS2TM3, rSEPERATS2TM3, rQuadSEPERATS2TM3, aStandSEPERATS2TM3, bStandSEPERATS2TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM4, bSEPERATS2TM4, rSEPERATS2TM4, rQuadSEPERATS2TM4, aStandSEPERATS2TM4, bStandSEPERATS2TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM5, bSEPERATS2TM5, rSEPERATS2TM5, rQuadSEPERATS2TM5, aStandSEPERATS2TM5, bStandSEPERATS2TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS2TM7, bSEPERATS2TM7, rSEPERATS2TM7, rQuadSEPERATS2TM7, aStandSEPERATS2TM7, bStandSEPERATS2TM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS2slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS2slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS2slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS2slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS2slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS2slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS2slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT2TM1[i,j] = (aSEPERATS2TM1 + (bSEPERATS2TM1 * REFS2TM1[i,j]));
                    OUT2TM2[i,j] = (aSEPERATS2TM2 + (bSEPERATS2TM2 * REFS2TM2[i,j]));
                    OUT2TM3[i,j] = (aSEPERATS2TM3 + (bSEPERATS2TM3 * REFS2TM3[i,j]));
                    OUT2TM4[i,j] = (aSEPERATS2TM4 + (bSEPERATS2TM4 * REFS2TM4[i,j]));
                    OUT2TM5[i,j] = (aSEPERATS2TM5 + (bSEPERATS2TM5 * REFS2TM5[i,j]));
                    OUT2TM7[i,j] = (aSEPERATS2TM7 + (bSEPERATS2TM7 * REFS2TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2TM1);
        	CreatePyramid(OUT2TM2);
        	CreatePyramid(OUT2TM3);
        	CreatePyramid(OUT2TM4);
        	CreatePyramid(OUT2TM5);
        	CreatePyramid(OUT2TM7);
        
        	CreateHistogram(OUT2TM1);
        	CreateHistogram(OUT2TM2);
        	CreateHistogram(OUT2TM3);
        	CreateHistogram(OUT2TM4);
        	CreateHistogram(OUT2TM5);
        	CreateHistogram(OUT2TM7);
            CloseRaster(REFS2TM1);
            CloseRaster(REFS2TM2);
            CloseRaster(REFS2TM3);
            CloseRaster(REFS2TM4);
            CloseRaster(REFS2TM5);
            CloseRaster(REFS2TM7);
    
            CloseRaster(OUT2TM1);
            CloseRaster(OUT2TM2);
            CloseRaster(OUT2TM3);
            CloseRaster(OUT2TM4);
            CloseRaster(OUT2TM5);
            CloseRaster(OUT2TM7);
        
        	printf("Scene 2 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            { 
            numeric xAritSEPERATS2MSS1, xAritSEPERATS2MSS2, xAritSEPERATS2MSS4;
            numeric yAritSEPERATS2MSS1, yAritSEPERATS2MSS2, yAritSEPERATS2MSS4;
    
            numeric aSEPERATS2MSS1, aSEPERATS2MSS2, aSEPERATS2MSS4;
            numeric bSEPERATS2MSS1, bSEPERATS2MSS2, bSEPERATS2MSS4;
            numeric rSEPERATS2MSS1, rSEPERATS2MSS2, rSEPERATS2MSS4;
            numeric rQuadSEPERATS2MSS1, rQuadSEPERATS2MSS2, rQuadSEPERATS2MSS4;
            numeric syxSEPERATS2MSS1, syxSEPERATS2MSS2, syxSEPERATS2MSS4;
            numeric bStandSEPERATS2MSS1, bStandSEPERATS2MSS2, bStandSEPERATS2MSS4;
            numeric aStandSEPERATS2MSS1, aStandSEPERATS2MSS2, aStandSEPERATS2MSS4;
    
            numeric xSEPERATS2MSS1 = 0;
            numeric xSEPERATS2MSS2 = 0;
            numeric xSEPERATS2MSS4 = 0;
    
            numeric xQuadSEPERATS2MSS1 = 0;
            numeric xQuadSEPERATS2MSS2 = 0;
            numeric xQuadSEPERATS2MSS4 = 0;
    
            numeric ySEPERATS2MSS1 = 0;
            numeric ySEPERATS2MSS2 = 0;
            numeric ySEPERATS2MSS4 = 0;
    
            numeric yQuadSEPERATS2MSS1 = 0;
            numeric yQuadSEPERATS2MSS2 = 0;
            numeric yQuadSEPERATS2MSS4 = 0;
    
            numeric xySEPERATS2MSS1 = 0;
            numeric xySEPERATS2MSS2 = 0;
            numeric xySEPERATS2MSS4 = 0;
    
            numeric xxAritQuadSEPERATS2MSS1 = 0;
            numeric xxAritQuadSEPERATS2MSS2 = 0;
            numeric xxAritQuadSEPERATS2MSS4 = 0;
    
            numeric yyAritQuadSEPERATS2MSS1 = 0;
            numeric yyAritQuadSEPERATS2MSS2 = 0;
            numeric yyAritQuadSEPERATS2MSS4 = 0;
    
            numeric qXYSEPERATS2MSS1 = 0;
            numeric qXYSEPERATS2MSS2 = 0;
            numeric qXYSEPERATS2MSS4 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS2MSS1 = xSEPERATS2MSS1 + pifSEPERATS1S2ETM2arrayRAND[m];
                xSEPERATS2MSS2 = xSEPERATS2MSS2 + pifSEPERATS1S2ETM3arrayRAND[m];
                xSEPERATS2MSS4 = xSEPERATS2MSS4 + pifSEPERATS1S2ETM4arrayRAND[m];
    
                xQuadSEPERATS2MSS1 = (xQuadSEPERATS2MSS1 + (pifSEPERATS1S2ETM2arrayRAND[m]^2));
                xQuadSEPERATS2MSS2 = (xQuadSEPERATS2MSS2 + (pifSEPERATS1S2ETM3arrayRAND[m]^2));
                xQuadSEPERATS2MSS4 = (xQuadSEPERATS2MSS4 + (pifSEPERATS1S2ETM4arrayRAND[m]^2));
    
                ySEPERATS2MSS1 = ySEPERATS2MSS1 + pifSEPERATS2slaveMSS1arrayRAND[m];
                ySEPERATS2MSS2 = ySEPERATS2MSS2 + pifSEPERATS2slaveMSS2arrayRAND[m];
                ySEPERATS2MSS4 = ySEPERATS2MSS4 + pifSEPERATS2slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS2MSS1 = (yQuadSEPERATS2MSS1 + (pifSEPERATS2slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS2MSS2 = (yQuadSEPERATS2MSS2 + (pifSEPERATS2slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS2MSS4 = (yQuadSEPERATS2MSS4 + (pifSEPERATS2slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS2MSS1 = (xySEPERATS2MSS1 + (pifSEPERATS1S2ETM2arrayRAND[m] * pifSEPERATS2slaveMSS1arrayRAND[m]));
                xySEPERATS2MSS2 = (xySEPERATS2MSS2 + (pifSEPERATS1S2ETM3arrayRAND[m] * pifSEPERATS2slaveMSS2arrayRAND[m]));
                xySEPERATS2MSS4 = (xySEPERATS2MSS4 + (pifSEPERATS1S2ETM4arrayRAND[m] * pifSEPERATS2slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS2MSS1 = xSEPERATS2MSS1 / minPifVAL;
            xAritSEPERATS2MSS2 = xSEPERATS2MSS2 / minPifVAL;
            xAritSEPERATS2MSS4 = xSEPERATS2MSS4 / minPifVAL;
    
            yAritSEPERATS2MSS1 = ySEPERATS2MSS1 / minPifVAL;
            yAritSEPERATS2MSS2 = ySEPERATS2MSS2 / minPifVAL;
            yAritSEPERATS2MSS4 = ySEPERATS2MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2MSS1 = (xxAritQuadSEPERATS2MSS1 + ((pifSEPERATS1S2ETM2arrayRAND[n] - xAritSEPERATS2MSS1)^2));
                xxAritQuadSEPERATS2MSS2 = (xxAritQuadSEPERATS2MSS2 + ((pifSEPERATS1S2ETM3arrayRAND[n] - xAritSEPERATS2MSS2)^2));
                xxAritQuadSEPERATS2MSS4 = (xxAritQuadSEPERATS2MSS4 + ((pifSEPERATS1S2ETM4arrayRAND[n] - xAritSEPERATS2MSS4)^2));
    
                yyAritQuadSEPERATS2MSS1 = (yyAritQuadSEPERATS2MSS1 + ((pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)^2));
                yyAritQuadSEPERATS2MSS2 = (yyAritQuadSEPERATS2MSS2 + ((pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)^2));
                yyAritQuadSEPERATS2MSS4 = (yyAritQuadSEPERATS2MSS4 + ((pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)^2));
    
                qXYSEPERATS2MSS1 = (qXYSEPERATS2MSS1 + ((pifSEPERATS1S2ETM2arrayRAND[n] - xAritSEPERATS2MSS1) * (pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)));
                qXYSEPERATS2MSS2 = (qXYSEPERATS2MSS2 + ((pifSEPERATS1S2ETM3arrayRAND[n] - xAritSEPERATS2MSS2) * (pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)));
                qXYSEPERATS2MSS4 = (qXYSEPERATS2MSS4 + ((pifSEPERATS1S2ETM4arrayRAND[n] - xAritSEPERATS2MSS4) * (pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)));
            }
        
            aSEPERATS2MSS1 = (((xQuadSEPERATS2MSS1 * ySEPERATS2MSS1) - (xSEPERATS2MSS1 * xySEPERATS2MSS1)) / ((minPifVAL * xQuadSEPERATS2MSS1) - (xSEPERATS2MSS1^2)));
            aSEPERATS2MSS2 = (((xQuadSEPERATS2MSS2 * ySEPERATS2MSS2) - (xSEPERATS2MSS2 * xySEPERATS2MSS2)) / ((minPifVAL * xQuadSEPERATS2MSS2) - (xSEPERATS2MSS2^2)));
            aSEPERATS2MSS4 = (((xQuadSEPERATS2MSS4 * ySEPERATS2MSS4) - (xSEPERATS2MSS4 * xySEPERATS2MSS4)) / ((minPifVAL * xQuadSEPERATS2MSS4) - (xSEPERATS2MSS4^2)));
            
            bSEPERATS2MSS1 = qXYSEPERATS2MSS1 / xxAritQuadSEPERATS2MSS1;
            bSEPERATS2MSS2 = qXYSEPERATS2MSS2 / xxAritQuadSEPERATS2MSS2;
            bSEPERATS2MSS4 = qXYSEPERATS2MSS4 / xxAritQuadSEPERATS2MSS4;
    
            rSEPERATS2MSS1 = (qXYSEPERATS2MSS1 / ((xxAritQuadSEPERATS2MSS1 * yyAritQuadSEPERATS2MSS1)^0.5));
            rSEPERATS2MSS2 = (qXYSEPERATS2MSS2 / ((xxAritQuadSEPERATS2MSS2 * yyAritQuadSEPERATS2MSS2)^0.5));
            rSEPERATS2MSS4 = (qXYSEPERATS2MSS4 / ((xxAritQuadSEPERATS2MSS4 * yyAritQuadSEPERATS2MSS4)^0.5));
    
            rQuadSEPERATS2MSS1 = ((rSEPERATS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2MSS2 = ((rSEPERATS2MSS2^2) * 100);
            rQuadSEPERATS2MSS4 = ((rSEPERATS2MSS4^2) * 100);
        
            syxSEPERATS2MSS1 = (((yyAritQuadSEPERATS2MSS1 - ((qXYSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS2 = (((yyAritQuadSEPERATS2MSS2 - ((qXYSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS4 = (((yyAritQuadSEPERATS2MSS4 - ((qXYSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2MSS1 = (((syxSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)^0.5);
            bStandSEPERATS2MSS2 = (((syxSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)^0.5);
            bStandSEPERATS2MSS4 = (((syxSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)^0.5);
    
            aStandSEPERATS2MSS1 = (bStandSEPERATS2MSS1 * ((xQuadSEPERATS2MSS1 / minPifVAL)^0.5));
            aStandSEPERATS2MSS2 = (bStandSEPERATS2MSS2 * ((xQuadSEPERATS2MSS2 / minPifVAL)^0.5));
            aStandSEPERATS2MSS4 = (bStandSEPERATS2MSS4 * ((xQuadSEPERATS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS1, bSEPERATS2MSS1, rSEPERATS2MSS1, rQuadSEPERATS2MSS1, aStandSEPERATS2MSS1, bStandSEPERATS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS2, bSEPERATS2MSS2, rSEPERATS2MSS2, rQuadSEPERATS2MSS2, aStandSEPERATS2MSS2, bStandSEPERATS2MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS4, bSEPERATS2MSS4, rSEPERATS2MSS4, rQuadSEPERATS2MSS4, aStandSEPERATS2MSS4, bStandSEPERATS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS2slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS2slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS2slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aSEPERATS2MSS1 + (bSEPERATS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aSEPERATS2MSS2 + (bSEPERATS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = REFS2MSS3[i,j];
                    OUT2MSS4[i,j] = (aSEPERATS2MSS4 + (bSEPERATS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT2MSS1);
            CreatePyramid(OUT2MSS2);
            CreatePyramid(OUT2MSS3);
            CreatePyramid(OUT2MSS4);
        
            CreateHistogram(OUT2MSS1);
            CreateHistogram(OUT2MSS2);
            CreateHistogram(OUT2MSS3);
            CreateHistogram(OUT2MSS4);
            
            CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors3 == 7 )
            {
            numeric xAritSEPERATS3ETM1, xAritSEPERATS3ETM2, xAritSEPERATS3ETM3, xAritSEPERATS3ETM4, xAritSEPERATS3ETM5, xAritSEPERATS3ETM7;
            numeric yAritSEPERATS3ETM1, yAritSEPERATS3ETM2, yAritSEPERATS3ETM3, yAritSEPERATS3ETM4, yAritSEPERATS3ETM5, yAritSEPERATS3ETM7;
    
            numeric aSEPERATS3ETM1, aSEPERATS3ETM2, aSEPERATS3ETM3, aSEPERATS3ETM4, aSEPERATS3ETM5, aSEPERATS3ETM7;
            numeric bSEPERATS3ETM1, bSEPERATS3ETM2, bSEPERATS3ETM3, bSEPERATS3ETM4, bSEPERATS3ETM5, bSEPERATS3ETM7;
            numeric rSEPERATS3ETM1, rSEPERATS3ETM2, rSEPERATS3ETM3, rSEPERATS3ETM4, rSEPERATS3ETM5, rSEPERATS3ETM7;
            numeric rQuadSEPERATS3ETM1, rQuadSEPERATS3ETM2, rQuadSEPERATS3ETM3, rQuadSEPERATS3ETM4, rQuadSEPERATS3ETM5, rQuadSEPERATS3ETM7;
            numeric syxSEPERATS3ETM1, syxSEPERATS3ETM2, syxSEPERATS3ETM3, syxSEPERATS3ETM4, syxSEPERATS3ETM5, syxSEPERATS3ETM7;
            numeric bStandSEPERATS3ETM1, bStandSEPERATS3ETM2, bStandSEPERATS3ETM3, bStandSEPERATS3ETM4, bStandSEPERATS3ETM5, bStandSEPERATS3ETM7;
            numeric aStandSEPERATS3ETM1, aStandSEPERATS3ETM2, aStandSEPERATS3ETM3, aStandSEPERATS3ETM4, aStandSEPERATS3ETM5, aStandSEPERATS3ETM7;
    
            numeric xSEPERATS3ETM1 = 0;
            numeric xSEPERATS3ETM2 = 0;
            numeric xSEPERATS3ETM3 = 0;
            numeric xSEPERATS3ETM4 = 0;
            numeric xSEPERATS3ETM5 = 0;
            numeric xSEPERATS3ETM7 = 0;
    
            numeric xQuadSEPERATS3ETM1 = 0;
            numeric xQuadSEPERATS3ETM2 = 0;
            numeric xQuadSEPERATS3ETM3 = 0;
            numeric xQuadSEPERATS3ETM4 = 0;
            numeric xQuadSEPERATS3ETM5 = 0;
            numeric xQuadSEPERATS3ETM7 = 0;
    
            numeric ySEPERATS3ETM1 = 0;
            numeric ySEPERATS3ETM2 = 0;
            numeric ySEPERATS3ETM3 = 0;
            numeric ySEPERATS3ETM4 = 0;
            numeric ySEPERATS3ETM5 = 0;
            numeric ySEPERATS3ETM7 = 0;
    
            numeric yQuadSEPERATS3ETM1 = 0;
            numeric yQuadSEPERATS3ETM2 = 0;
            numeric yQuadSEPERATS3ETM3 = 0;
            numeric yQuadSEPERATS3ETM4 = 0;
            numeric yQuadSEPERATS3ETM5 = 0;
            numeric yQuadSEPERATS3ETM7 = 0;
    
            numeric xySEPERATS3ETM1 = 0;
            numeric xySEPERATS3ETM2 = 0;
            numeric xySEPERATS3ETM3 = 0;
            numeric xySEPERATS3ETM4 = 0;
            numeric xySEPERATS3ETM5 = 0;
            numeric xySEPERATS3ETM7 = 0;
    
            numeric xxAritQuadSEPERATS3ETM1 = 0;
            numeric xxAritQuadSEPERATS3ETM2 = 0;
            numeric xxAritQuadSEPERATS3ETM3 = 0;
            numeric xxAritQuadSEPERATS3ETM4 = 0;
            numeric xxAritQuadSEPERATS3ETM5 = 0;
            numeric xxAritQuadSEPERATS3ETM7 = 0;
    
            numeric yyAritQuadSEPERATS3ETM1 = 0;
            numeric yyAritQuadSEPERATS3ETM2 = 0;
            numeric yyAritQuadSEPERATS3ETM3 = 0;
            numeric yyAritQuadSEPERATS3ETM4 = 0;
            numeric yyAritQuadSEPERATS3ETM5 = 0;
            numeric yyAritQuadSEPERATS3ETM7 = 0;
    
            numeric qXYSEPERATS3ETM1 = 0;
            numeric qXYSEPERATS3ETM2 = 0;
            numeric qXYSEPERATS3ETM3 = 0;
            numeric qXYSEPERATS3ETM4 = 0;
            numeric qXYSEPERATS3ETM5 = 0;
            numeric qXYSEPERATS3ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS3ETM1 = xSEPERATS3ETM1 + pifSEPERATS1S3ETM1arrayRAND[m];
                xSEPERATS3ETM2 = xSEPERATS3ETM2 + pifSEPERATS1S3ETM2arrayRAND[m];
                xSEPERATS3ETM3 = xSEPERATS3ETM3 + pifSEPERATS1S3ETM3arrayRAND[m];
                xSEPERATS3ETM4 = xSEPERATS3ETM4 + pifSEPERATS1S3ETM4arrayRAND[m];
                xSEPERATS3ETM5 = xSEPERATS3ETM5 + pifSEPERATS1S3ETM5arrayRAND[m];
                xSEPERATS3ETM7 = xSEPERATS3ETM7 + pifSEPERATS1S3ETM7arrayRAND[m];
    
                xQuadSEPERATS3ETM1 = (xQuadSEPERATS3ETM1 + (pifSEPERATS1S3ETM1arrayRAND[m]^2));
                xQuadSEPERATS3ETM2 = (xQuadSEPERATS3ETM2 + (pifSEPERATS1S3ETM2arrayRAND[m]^2));
                xQuadSEPERATS3ETM3 = (xQuadSEPERATS3ETM3 + (pifSEPERATS1S3ETM3arrayRAND[m]^2));
                xQuadSEPERATS3ETM4 = (xQuadSEPERATS3ETM4 + (pifSEPERATS1S3ETM4arrayRAND[m]^2));
                xQuadSEPERATS3ETM5 = (xQuadSEPERATS3ETM5 + (pifSEPERATS1S3ETM5arrayRAND[m]^2));
                xQuadSEPERATS3ETM7 = (xQuadSEPERATS3ETM7 + (pifSEPERATS1S3ETM7arrayRAND[m]^2));
    
                ySEPERATS3ETM1 = ySEPERATS3ETM1 + pifSEPERATS3slaveETM1arrayRAND[m];
                ySEPERATS3ETM2 = ySEPERATS3ETM2 + pifSEPERATS3slaveETM2arrayRAND[m];
                ySEPERATS3ETM3 = ySEPERATS3ETM3 + pifSEPERATS3slaveETM3arrayRAND[m];
                ySEPERATS3ETM4 = ySEPERATS3ETM4 + pifSEPERATS3slaveETM4arrayRAND[m];
                ySEPERATS3ETM5 = ySEPERATS3ETM5 + pifSEPERATS3slaveETM5arrayRAND[m];
                ySEPERATS3ETM7 = ySEPERATS3ETM7 + pifSEPERATS3slaveETM7arrayRAND[m];
                
                yQuadSEPERATS3ETM1 = (yQuadSEPERATS3ETM1 + (pifSEPERATS3slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS3ETM2 = (yQuadSEPERATS3ETM2 + (pifSEPERATS3slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS3ETM3 = (yQuadSEPERATS3ETM3 + (pifSEPERATS3slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS3ETM4 = (yQuadSEPERATS3ETM4 + (pifSEPERATS3slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS3ETM5 = (yQuadSEPERATS3ETM5 + (pifSEPERATS3slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS3ETM7 = (yQuadSEPERATS3ETM7 + (pifSEPERATS3slaveETM7arrayRAND[m]^2));
    
                xySEPERATS3ETM1 = (xySEPERATS3ETM1 + (pifSEPERATS1S3ETM1arrayRAND[m] * pifSEPERATS3slaveETM1arrayRAND[m]));
                xySEPERATS3ETM2 = (xySEPERATS3ETM2 + (pifSEPERATS1S3ETM2arrayRAND[m] * pifSEPERATS3slaveETM2arrayRAND[m]));
                xySEPERATS3ETM3 = (xySEPERATS3ETM3 + (pifSEPERATS1S3ETM3arrayRAND[m] * pifSEPERATS3slaveETM3arrayRAND[m]));
                xySEPERATS3ETM4 = (xySEPERATS3ETM4 + (pifSEPERATS1S3ETM4arrayRAND[m] * pifSEPERATS3slaveETM4arrayRAND[m]));
                xySEPERATS3ETM5 = (xySEPERATS3ETM5 + (pifSEPERATS1S3ETM5arrayRAND[m] * pifSEPERATS3slaveETM5arrayRAND[m]));
                xySEPERATS3ETM7 = (xySEPERATS3ETM7 + (pifSEPERATS1S3ETM7arrayRAND[m] * pifSEPERATS3slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS3ETM1 = xSEPERATS3ETM1 / minPifVAL;
            xAritSEPERATS3ETM2 = xSEPERATS3ETM2 / minPifVAL;
            xAritSEPERATS3ETM3 = xSEPERATS3ETM3 / minPifVAL;
            xAritSEPERATS3ETM4 = xSEPERATS3ETM4 / minPifVAL;
            xAritSEPERATS3ETM5 = xSEPERATS3ETM5 / minPifVAL;
            xAritSEPERATS3ETM7 = xSEPERATS3ETM7 / minPifVAL;
    
            yAritSEPERATS3ETM1 = ySEPERATS3ETM1 / minPifVAL;
            yAritSEPERATS3ETM2 = ySEPERATS3ETM2 / minPifVAL;
            yAritSEPERATS3ETM3 = ySEPERATS3ETM3 / minPifVAL;
            yAritSEPERATS3ETM4 = ySEPERATS3ETM4 / minPifVAL;
            yAritSEPERATS3ETM5 = ySEPERATS3ETM5 / minPifVAL;
            yAritSEPERATS3ETM7 = ySEPERATS3ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3ETM1 = (xxAritQuadSEPERATS3ETM1 + ((pifSEPERATS1S3ETM1arrayRAND[n] - xAritSEPERATS3ETM1)^2));
                xxAritQuadSEPERATS3ETM2 = (xxAritQuadSEPERATS3ETM2 + ((pifSEPERATS1S3ETM2arrayRAND[n] - xAritSEPERATS3ETM2)^2));
                xxAritQuadSEPERATS3ETM3 = (xxAritQuadSEPERATS3ETM3 + ((pifSEPERATS1S3ETM3arrayRAND[n] - xAritSEPERATS3ETM3)^2));
                xxAritQuadSEPERATS3ETM4 = (xxAritQuadSEPERATS3ETM4 + ((pifSEPERATS1S3ETM4arrayRAND[n] - xAritSEPERATS3ETM4)^2));
                xxAritQuadSEPERATS3ETM5 = (xxAritQuadSEPERATS3ETM5 + ((pifSEPERATS1S3ETM5arrayRAND[n] - xAritSEPERATS3ETM5)^2));
                xxAritQuadSEPERATS3ETM7 = (xxAritQuadSEPERATS3ETM7 + ((pifSEPERATS1S3ETM7arrayRAND[n] - xAritSEPERATS3ETM7)^2));
    
                yyAritQuadSEPERATS3ETM1 = (yyAritQuadSEPERATS3ETM1 + ((pifSEPERATS3slaveETM1arrayRAND[n] - yAritSEPERATS3ETM1)^2));
                yyAritQuadSEPERATS3ETM2 = (yyAritQuadSEPERATS3ETM2 + ((pifSEPERATS3slaveETM2arrayRAND[n] - yAritSEPERATS3ETM2)^2));
                yyAritQuadSEPERATS3ETM3 = (yyAritQuadSEPERATS3ETM3 + ((pifSEPERATS3slaveETM3arrayRAND[n] - yAritSEPERATS3ETM3)^2));
                yyAritQuadSEPERATS3ETM4 = (yyAritQuadSEPERATS3ETM4 + ((pifSEPERATS3slaveETM4arrayRAND[n] - yAritSEPERATS3ETM4)^2));
                yyAritQuadSEPERATS3ETM5 = (yyAritQuadSEPERATS3ETM5 + ((pifSEPERATS3slaveETM5arrayRAND[n] - yAritSEPERATS3ETM5)^2));
                yyAritQuadSEPERATS3ETM7 = (yyAritQuadSEPERATS3ETM7 + ((pifSEPERATS3slaveETM7arrayRAND[n] - yAritSEPERATS3ETM7)^2));
    
                qXYSEPERATS3ETM1 = (qXYSEPERATS3ETM1 + ((pifSEPERATS1S3ETM1arrayRAND[n] - xAritSEPERATS3ETM1) * (pifSEPERATS3slaveETM1arrayRAND[n] - yAritSEPERATS3ETM1)));
                qXYSEPERATS3ETM2 = (qXYSEPERATS3ETM2 + ((pifSEPERATS1S3ETM2arrayRAND[n] - xAritSEPERATS3ETM2) * (pifSEPERATS3slaveETM2arrayRAND[n] - yAritSEPERATS3ETM2)));
                qXYSEPERATS3ETM3 = (qXYSEPERATS3ETM3 + ((pifSEPERATS1S3ETM3arrayRAND[n] - xAritSEPERATS3ETM3) * (pifSEPERATS3slaveETM3arrayRAND[n] - yAritSEPERATS3ETM3)));
                qXYSEPERATS3ETM4 = (qXYSEPERATS3ETM4 + ((pifSEPERATS1S3ETM4arrayRAND[n] - xAritSEPERATS3ETM4) * (pifSEPERATS3slaveETM4arrayRAND[n] - yAritSEPERATS3ETM4)));
                qXYSEPERATS3ETM5 = (qXYSEPERATS3ETM5 + ((pifSEPERATS1S3ETM5arrayRAND[n] - xAritSEPERATS3ETM5) * (pifSEPERATS3slaveETM5arrayRAND[n] - yAritSEPERATS3ETM5)));
                qXYSEPERATS3ETM7 = (qXYSEPERATS3ETM7 + ((pifSEPERATS1S3ETM7arrayRAND[n] - xAritSEPERATS3ETM7) * (pifSEPERATS3slaveETM7arrayRAND[n] - yAritSEPERATS3ETM7)));
            }
        
            aSEPERATS3ETM1 = (((xQuadSEPERATS3ETM1 * ySEPERATS3ETM1) - (xSEPERATS3ETM1 * xySEPERATS3ETM1)) / ((minPifVAL * xQuadSEPERATS3ETM1) - (xSEPERATS3ETM1^2)));
            aSEPERATS3ETM2 = (((xQuadSEPERATS3ETM2 * ySEPERATS3ETM2) - (xSEPERATS3ETM2 * xySEPERATS3ETM2)) / ((minPifVAL * xQuadSEPERATS3ETM2) - (xSEPERATS3ETM2^2)));
            aSEPERATS3ETM3 = (((xQuadSEPERATS3ETM3 * ySEPERATS3ETM3) - (xSEPERATS3ETM3 * xySEPERATS3ETM3)) / ((minPifVAL * xQuadSEPERATS3ETM3) - (xSEPERATS3ETM3^2)));
            aSEPERATS3ETM4 = (((xQuadSEPERATS3ETM4 * ySEPERATS3ETM4) - (xSEPERATS3ETM4 * xySEPERATS3ETM4)) / ((minPifVAL * xQuadSEPERATS3ETM4) - (xSEPERATS3ETM4^2)));
            aSEPERATS3ETM5 = (((xQuadSEPERATS3ETM5 * ySEPERATS3ETM5) - (xSEPERATS3ETM5 * xySEPERATS3ETM5)) / ((minPifVAL * xQuadSEPERATS3ETM5) - (xSEPERATS3ETM5^2)));
            aSEPERATS3ETM7 = (((xQuadSEPERATS3ETM7 * ySEPERATS3ETM7) - (xSEPERATS3ETM7 * xySEPERATS3ETM7)) / ((minPifVAL * xQuadSEPERATS3ETM7) - (xSEPERATS3ETM7^2)));
            
            bSEPERATS3ETM1 = qXYSEPERATS3ETM1 / xxAritQuadSEPERATS3ETM1;
            bSEPERATS3ETM2 = qXYSEPERATS3ETM2 / xxAritQuadSEPERATS3ETM2;
            bSEPERATS3ETM3 = qXYSEPERATS3ETM3 / xxAritQuadSEPERATS3ETM3;
            bSEPERATS3ETM4 = qXYSEPERATS3ETM4 / xxAritQuadSEPERATS3ETM4;
            bSEPERATS3ETM5 = qXYSEPERATS3ETM5 / xxAritQuadSEPERATS3ETM5;
            bSEPERATS3ETM7 = qXYSEPERATS3ETM7 / xxAritQuadSEPERATS3ETM7;
    
            rSEPERATS3ETM1 = (qXYSEPERATS3ETM1 / ((xxAritQuadSEPERATS3ETM1 * yyAritQuadSEPERATS3ETM1)^0.5));
            rSEPERATS3ETM2 = (qXYSEPERATS3ETM2 / ((xxAritQuadSEPERATS3ETM2 * yyAritQuadSEPERATS3ETM2)^0.5));
            rSEPERATS3ETM3 = (qXYSEPERATS3ETM3 / ((xxAritQuadSEPERATS3ETM3 * yyAritQuadSEPERATS3ETM3)^0.5));
            rSEPERATS3ETM4 = (qXYSEPERATS3ETM4 / ((xxAritQuadSEPERATS3ETM4 * yyAritQuadSEPERATS3ETM4)^0.5));
            rSEPERATS3ETM5 = (qXYSEPERATS3ETM5 / ((xxAritQuadSEPERATS3ETM5 * yyAritQuadSEPERATS3ETM5)^0.5));
            rSEPERATS3ETM7 = (qXYSEPERATS3ETM7 / ((xxAritQuadSEPERATS3ETM7 * yyAritQuadSEPERATS3ETM7)^0.5));
    
            rQuadSEPERATS3ETM1 = ((rSEPERATS3ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3ETM2 = ((rSEPERATS3ETM2^2) * 100);
            rQuadSEPERATS3ETM3 = ((rSEPERATS3ETM3^2) * 100);
            rQuadSEPERATS3ETM4 = ((rSEPERATS3ETM4^2) * 100);
            rQuadSEPERATS3ETM5 = ((rSEPERATS3ETM5^2) * 100);
            rQuadSEPERATS3ETM7 = ((rSEPERATS3ETM7^2) * 100);
        
            syxSEPERATS3ETM1 = (((yyAritQuadSEPERATS3ETM1 - ((qXYSEPERATS3ETM1^2) / xxAritQuadSEPERATS3ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM2 = (((yyAritQuadSEPERATS3ETM2 - ((qXYSEPERATS3ETM2^2) / xxAritQuadSEPERATS3ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM3 = (((yyAritQuadSEPERATS3ETM3 - ((qXYSEPERATS3ETM3^2) / xxAritQuadSEPERATS3ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM4 = (((yyAritQuadSEPERATS3ETM4 - ((qXYSEPERATS3ETM4^2) / xxAritQuadSEPERATS3ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM5 = (((yyAritQuadSEPERATS3ETM5 - ((qXYSEPERATS3ETM5^2) / xxAritQuadSEPERATS3ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM7 = (((yyAritQuadSEPERATS3ETM7 - ((qXYSEPERATS3ETM7^2) / xxAritQuadSEPERATS3ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3ETM1 = (((syxSEPERATS3ETM1^2) / xxAritQuadSEPERATS3ETM1)^0.5);
            bStandSEPERATS3ETM2 = (((syxSEPERATS3ETM2^2) / xxAritQuadSEPERATS3ETM2)^0.5);
            bStandSEPERATS3ETM3 = (((syxSEPERATS3ETM3^2) / xxAritQuadSEPERATS3ETM3)^0.5);
            bStandSEPERATS3ETM4 = (((syxSEPERATS3ETM4^2) / xxAritQuadSEPERATS3ETM4)^0.5);
            bStandSEPERATS3ETM5 = (((syxSEPERATS3ETM5^2) / xxAritQuadSEPERATS3ETM5)^0.5);
            bStandSEPERATS3ETM7 = (((syxSEPERATS3ETM7^2) / xxAritQuadSEPERATS3ETM7)^0.5);
    
            aStandSEPERATS3ETM1 = (bStandSEPERATS3ETM1 * ((xQuadSEPERATS3ETM1 / minPifVAL)^0.5));
            aStandSEPERATS3ETM2 = (bStandSEPERATS3ETM2 * ((xQuadSEPERATS3ETM2 / minPifVAL)^0.5));
            aStandSEPERATS3ETM3 = (bStandSEPERATS3ETM3 * ((xQuadSEPERATS3ETM3 / minPifVAL)^0.5));
            aStandSEPERATS3ETM4 = (bStandSEPERATS3ETM4 * ((xQuadSEPERATS3ETM4 / minPifVAL)^0.5));
            aStandSEPERATS3ETM5 = (bStandSEPERATS3ETM5 * ((xQuadSEPERATS3ETM5 / minPifVAL)^0.5));
            aStandSEPERATS3ETM7 = (bStandSEPERATS3ETM7 * ((xQuadSEPERATS3ETM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM1, bSEPERATS3ETM1, rSEPERATS3ETM1, rQuadSEPERATS3ETM1, aStandSEPERATS3ETM1, bStandSEPERATS3ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM2, bSEPERATS3ETM2, rSEPERATS3ETM2, rQuadSEPERATS3ETM2, aStandSEPERATS3ETM2, bStandSEPERATS3ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM3, bSEPERATS3ETM3, rSEPERATS3ETM3, rQuadSEPERATS3ETM3, aStandSEPERATS3ETM3, bStandSEPERATS3ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM4, bSEPERATS3ETM4, rSEPERATS3ETM4, rQuadSEPERATS3ETM4, aStandSEPERATS3ETM4, bStandSEPERATS3ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM5, bSEPERATS3ETM5, rSEPERATS3ETM5, rQuadSEPERATS3ETM5, aStandSEPERATS3ETM5, bStandSEPERATS3ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS3ETM7, bSEPERATS3ETM7, rSEPERATS3ETM7, rQuadSEPERATS3ETM7, aStandSEPERATS3ETM7, bStandSEPERATS3ETM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS3slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS3slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS3slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS3slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS3slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS3slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS3slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT3ETM1[i,j] = (aSEPERATS3ETM1 + (bSEPERATS3ETM1 * REFS3ETM1[i,j]));
                    OUT3ETM2[i,j] = (aSEPERATS3ETM2 + (bSEPERATS3ETM2 * REFS3ETM2[i,j]));
                    OUT3ETM3[i,j] = (aSEPERATS3ETM3 + (bSEPERATS3ETM3 * REFS3ETM3[i,j]));
                    OUT3ETM4[i,j] = (aSEPERATS3ETM4 + (bSEPERATS3ETM4 * REFS3ETM4[i,j]));
                    OUT3ETM5[i,j] = (aSEPERATS3ETM5 + (bSEPERATS3ETM5 * REFS3ETM5[i,j]));
                    OUT3ETM7[i,j] = (aSEPERATS3ETM7 + (bSEPERATS3ETM7 * REFS3ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3ETM1);
        	CreatePyramid(OUT3ETM2);
        	CreatePyramid(OUT3ETM3);
        	CreatePyramid(OUT3ETM4);
        	CreatePyramid(OUT3ETM5);
        	CreatePyramid(OUT3ETM7);
        
        	CreateHistogram(OUT3ETM1);
        	CreateHistogram(OUT3ETM2);
        	CreateHistogram(OUT3ETM3);
        	CreateHistogram(OUT3ETM4);
        	CreateHistogram(OUT3ETM5);
        	CreateHistogram(OUT3ETM7);
            CloseRaster(REFS3ETM1);
            CloseRaster(REFS3ETM2);
            CloseRaster(REFS3ETM3);
            CloseRaster(REFS3ETM4);
            CloseRaster(REFS3ETM5);
            CloseRaster(REFS3ETM7);
    
            CloseRaster(OUT3ETM1);
            CloseRaster(OUT3ETM2);
            CloseRaster(OUT3ETM3);
            CloseRaster(OUT3ETM4);
            CloseRaster(OUT3ETM5);
            CloseRaster(OUT3ETM7);
        
        	printf("Scene 3 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors3 == 6 )
            {
            numeric xAritSEPERATS3TM1, xAritSEPERATS3TM2, xAritSEPERATS3TM3, xAritSEPERATS3TM4, xAritSEPERATS3TM5, xAritSEPERATS3TM7;
            numeric yAritSEPERATS3TM1, yAritSEPERATS3TM2, yAritSEPERATS3TM3, yAritSEPERATS3TM4, yAritSEPERATS3TM5, yAritSEPERATS3TM7;
    
            numeric aSEPERATS3TM1, aSEPERATS3TM2, aSEPERATS3TM3, aSEPERATS3TM4, aSEPERATS3TM5, aSEPERATS3TM7;
            numeric bSEPERATS3TM1, bSEPERATS3TM2, bSEPERATS3TM3, bSEPERATS3TM4, bSEPERATS3TM5, bSEPERATS3TM7;
            numeric rSEPERATS3TM1, rSEPERATS3TM2, rSEPERATS3TM3, rSEPERATS3TM4, rSEPERATS3TM5, rSEPERATS3TM7;
            numeric rQuadSEPERATS3TM1, rQuadSEPERATS3TM2, rQuadSEPERATS3TM3, rQuadSEPERATS3TM4, rQuadSEPERATS3TM5, rQuadSEPERATS3TM7;
            numeric syxSEPERATS3TM1, syxSEPERATS3TM2, syxSEPERATS3TM3, syxSEPERATS3TM4, syxSEPERATS3TM5, syxSEPERATS3TM7;
            numeric bStandSEPERATS3TM1, bStandSEPERATS3TM2, bStandSEPERATS3TM3, bStandSEPERATS3TM4, bStandSEPERATS3TM5, bStandSEPERATS3TM7;
            numeric aStandSEPERATS3TM1, aStandSEPERATS3TM2, aStandSEPERATS3TM3, aStandSEPERATS3TM4, aStandSEPERATS3TM5, aStandSEPERATS3TM7;
    
            numeric xSEPERATS3TM1 = 0;
            numeric xSEPERATS3TM2 = 0;
            numeric xSEPERATS3TM3 = 0;
            numeric xSEPERATS3TM4 = 0;
            numeric xSEPERATS3TM5 = 0;
            numeric xSEPERATS3TM7 = 0;
    
            numeric xQuadSEPERATS3TM1 = 0;
            numeric xQuadSEPERATS3TM2 = 0;
            numeric xQuadSEPERATS3TM3 = 0;
            numeric xQuadSEPERATS3TM4 = 0;
            numeric xQuadSEPERATS3TM5 = 0;
            numeric xQuadSEPERATS3TM7 = 0;
    
            numeric ySEPERATS3TM1 = 0;
            numeric ySEPERATS3TM2 = 0;
            numeric ySEPERATS3TM3 = 0;
            numeric ySEPERATS3TM4 = 0;
            numeric ySEPERATS3TM5 = 0;
            numeric ySEPERATS3TM7 = 0;
    
            numeric yQuadSEPERATS3TM1 = 0;
            numeric yQuadSEPERATS3TM2 = 0;
            numeric yQuadSEPERATS3TM3 = 0;
            numeric yQuadSEPERATS3TM4 = 0;
            numeric yQuadSEPERATS3TM5 = 0;
            numeric yQuadSEPERATS3TM7 = 0;
    
            numeric xySEPERATS3TM1 = 0;
            numeric xySEPERATS3TM2 = 0;
            numeric xySEPERATS3TM3 = 0;
            numeric xySEPERATS3TM4 = 0;
            numeric xySEPERATS3TM5 = 0;
            numeric xySEPERATS3TM7 = 0;
    
            numeric xxAritQuadSEPERATS3TM1 = 0;
            numeric xxAritQuadSEPERATS3TM2 = 0;
            numeric xxAritQuadSEPERATS3TM3 = 0;
            numeric xxAritQuadSEPERATS3TM4 = 0;
            numeric xxAritQuadSEPERATS3TM5 = 0;
            numeric xxAritQuadSEPERATS3TM7 = 0;
    
            numeric yyAritQuadSEPERATS3TM1 = 0;
            numeric yyAritQuadSEPERATS3TM2 = 0;
            numeric yyAritQuadSEPERATS3TM3 = 0;
            numeric yyAritQuadSEPERATS3TM4 = 0;
            numeric yyAritQuadSEPERATS3TM5 = 0;
            numeric yyAritQuadSEPERATS3TM7 = 0;
    
            numeric qXYSEPERATS3TM1 = 0;
            numeric qXYSEPERATS3TM2 = 0;
            numeric qXYSEPERATS3TM3 = 0;
            numeric qXYSEPERATS3TM4 = 0;
            numeric qXYSEPERATS3TM5 = 0;
            numeric qXYSEPERATS3TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS3TM1 = xSEPERATS3TM1 + pifSEPERATS1S3ETM1arrayRAND[m];
                xSEPERATS3TM2 = xSEPERATS3TM2 + pifSEPERATS1S3ETM2arrayRAND[m];
                xSEPERATS3TM3 = xSEPERATS3TM3 + pifSEPERATS1S3ETM3arrayRAND[m];
                xSEPERATS3TM4 = xSEPERATS3TM4 + pifSEPERATS1S3ETM4arrayRAND[m];
                xSEPERATS3TM5 = xSEPERATS3TM5 + pifSEPERATS1S3ETM5arrayRAND[m];
                xSEPERATS3TM7 = xSEPERATS3TM7 + pifSEPERATS1S3ETM7arrayRAND[m];
    
                xQuadSEPERATS3TM1 = (xQuadSEPERATS3TM1 + (pifSEPERATS1S3ETM1arrayRAND[m]^2));
                xQuadSEPERATS3TM2 = (xQuadSEPERATS3TM2 + (pifSEPERATS1S3ETM2arrayRAND[m]^2));
                xQuadSEPERATS3TM3 = (xQuadSEPERATS3TM3 + (pifSEPERATS1S3ETM3arrayRAND[m]^2));
                xQuadSEPERATS3TM4 = (xQuadSEPERATS3TM4 + (pifSEPERATS1S3ETM4arrayRAND[m]^2));
                xQuadSEPERATS3TM5 = (xQuadSEPERATS3TM5 + (pifSEPERATS1S3ETM5arrayRAND[m]^2));
                xQuadSEPERATS3TM7 = (xQuadSEPERATS3TM7 + (pifSEPERATS1S3ETM7arrayRAND[m]^2));
    
                ySEPERATS3TM1 = ySEPERATS3TM1 + pifSEPERATS3slaveTM1arrayRAND[m];
                ySEPERATS3TM2 = ySEPERATS3TM2 + pifSEPERATS3slaveTM2arrayRAND[m];
                ySEPERATS3TM3 = ySEPERATS3TM3 + pifSEPERATS3slaveTM3arrayRAND[m];
                ySEPERATS3TM4 = ySEPERATS3TM4 + pifSEPERATS3slaveTM4arrayRAND[m];
                ySEPERATS3TM5 = ySEPERATS3TM5 + pifSEPERATS3slaveTM5arrayRAND[m];
                ySEPERATS3TM7 = ySEPERATS3TM7 + pifSEPERATS3slaveTM7arrayRAND[m];
                
                yQuadSEPERATS3TM1 = (yQuadSEPERATS3TM1 + (pifSEPERATS3slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS3TM2 = (yQuadSEPERATS3TM2 + (pifSEPERATS3slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS3TM3 = (yQuadSEPERATS3TM3 + (pifSEPERATS3slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS3TM4 = (yQuadSEPERATS3TM4 + (pifSEPERATS3slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS3TM5 = (yQuadSEPERATS3TM5 + (pifSEPERATS3slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS3TM7 = (yQuadSEPERATS3TM7 + (pifSEPERATS3slaveTM7arrayRAND[m]^2));
    
                xySEPERATS3TM1 = (xySEPERATS3TM1 + (pifSEPERATS1S3ETM1arrayRAND[m] * pifSEPERATS3slaveTM1arrayRAND[m]));
                xySEPERATS3TM2 = (xySEPERATS3TM2 + (pifSEPERATS1S3ETM2arrayRAND[m] * pifSEPERATS3slaveTM2arrayRAND[m]));
                xySEPERATS3TM3 = (xySEPERATS3TM3 + (pifSEPERATS1S3ETM3arrayRAND[m] * pifSEPERATS3slaveTM3arrayRAND[m]));
                xySEPERATS3TM4 = (xySEPERATS3TM4 + (pifSEPERATS1S3ETM4arrayRAND[m] * pifSEPERATS3slaveTM4arrayRAND[m]));
                xySEPERATS3TM5 = (xySEPERATS3TM5 + (pifSEPERATS1S3ETM5arrayRAND[m] * pifSEPERATS3slaveTM5arrayRAND[m]));
                xySEPERATS3TM7 = (xySEPERATS3TM7 + (pifSEPERATS1S3ETM7arrayRAND[m] * pifSEPERATS3slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS3TM1 = xSEPERATS3TM1 / minPifVAL;
            xAritSEPERATS3TM2 = xSEPERATS3TM2 / minPifVAL;
            xAritSEPERATS3TM3 = xSEPERATS3TM3 / minPifVAL;
            xAritSEPERATS3TM4 = xSEPERATS3TM4 / minPifVAL;
            xAritSEPERATS3TM5 = xSEPERATS3TM5 / minPifVAL;
            xAritSEPERATS3TM7 = xSEPERATS3TM7 / minPifVAL;
    
            yAritSEPERATS3TM1 = ySEPERATS3TM1 / minPifVAL;
            yAritSEPERATS3TM2 = ySEPERATS3TM2 / minPifVAL;
            yAritSEPERATS3TM3 = ySEPERATS3TM3 / minPifVAL;
            yAritSEPERATS3TM4 = ySEPERATS3TM4 / minPifVAL;
            yAritSEPERATS3TM5 = ySEPERATS3TM5 / minPifVAL;
            yAritSEPERATS3TM7 = ySEPERATS3TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3TM1 = (xxAritQuadSEPERATS3TM1 + ((pifSEPERATS1S3ETM1arrayRAND[n] - xAritSEPERATS3TM1)^2));
                xxAritQuadSEPERATS3TM2 = (xxAritQuadSEPERATS3TM2 + ((pifSEPERATS1S3ETM2arrayRAND[n] - xAritSEPERATS3TM2)^2));
                xxAritQuadSEPERATS3TM3 = (xxAritQuadSEPERATS3TM3 + ((pifSEPERATS1S3ETM3arrayRAND[n] - xAritSEPERATS3TM3)^2));
                xxAritQuadSEPERATS3TM4 = (xxAritQuadSEPERATS3TM4 + ((pifSEPERATS1S3ETM4arrayRAND[n] - xAritSEPERATS3TM4)^2));
                xxAritQuadSEPERATS3TM5 = (xxAritQuadSEPERATS3TM5 + ((pifSEPERATS1S3ETM5arrayRAND[n] - xAritSEPERATS3TM5)^2));
                xxAritQuadSEPERATS3TM7 = (xxAritQuadSEPERATS3TM7 + ((pifSEPERATS1S3ETM7arrayRAND[n] - xAritSEPERATS3TM7)^2));
    
                yyAritQuadSEPERATS3TM1 = (yyAritQuadSEPERATS3TM1 + ((pifSEPERATS3slaveTM1arrayRAND[n] - yAritSEPERATS3TM1)^2));
                yyAritQuadSEPERATS3TM2 = (yyAritQuadSEPERATS3TM2 + ((pifSEPERATS3slaveTM2arrayRAND[n] - yAritSEPERATS3TM2)^2));
                yyAritQuadSEPERATS3TM3 = (yyAritQuadSEPERATS3TM3 + ((pifSEPERATS3slaveTM3arrayRAND[n] - yAritSEPERATS3TM3)^2));
                yyAritQuadSEPERATS3TM4 = (yyAritQuadSEPERATS3TM4 + ((pifSEPERATS3slaveTM4arrayRAND[n] - yAritSEPERATS3TM4)^2));
                yyAritQuadSEPERATS3TM5 = (yyAritQuadSEPERATS3TM5 + ((pifSEPERATS3slaveTM5arrayRAND[n] - yAritSEPERATS3TM5)^2));
                yyAritQuadSEPERATS3TM7 = (yyAritQuadSEPERATS3TM7 + ((pifSEPERATS3slaveTM7arrayRAND[n] - yAritSEPERATS3TM7)^2));
    
                qXYSEPERATS3TM1 = (qXYSEPERATS3TM1 + ((pifSEPERATS1S3ETM1arrayRAND[n] - xAritSEPERATS3TM1) * (pifSEPERATS3slaveTM1arrayRAND[n] - yAritSEPERATS3TM1)));
                qXYSEPERATS3TM2 = (qXYSEPERATS3TM2 + ((pifSEPERATS1S3ETM2arrayRAND[n] - xAritSEPERATS3TM2) * (pifSEPERATS3slaveTM2arrayRAND[n] - yAritSEPERATS3TM2)));
                qXYSEPERATS3TM3 = (qXYSEPERATS3TM3 + ((pifSEPERATS1S3ETM3arrayRAND[n] - xAritSEPERATS3TM3) * (pifSEPERATS3slaveTM3arrayRAND[n] - yAritSEPERATS3TM3)));
                qXYSEPERATS3TM4 = (qXYSEPERATS3TM4 + ((pifSEPERATS1S3ETM4arrayRAND[n] - xAritSEPERATS3TM4) * (pifSEPERATS3slaveTM4arrayRAND[n] - yAritSEPERATS3TM4)));
                qXYSEPERATS3TM5 = (qXYSEPERATS3TM5 + ((pifSEPERATS1S3ETM5arrayRAND[n] - xAritSEPERATS3TM5) * (pifSEPERATS3slaveTM5arrayRAND[n] - yAritSEPERATS3TM5)));
                qXYSEPERATS3TM7 = (qXYSEPERATS3TM7 + ((pifSEPERATS1S3ETM7arrayRAND[n] - xAritSEPERATS3TM7) * (pifSEPERATS3slaveTM7arrayRAND[n] - yAritSEPERATS3TM7)));
            }
        
            aSEPERATS3TM1 = (((xQuadSEPERATS3TM1 * ySEPERATS3TM1) - (xSEPERATS3TM1 * xySEPERATS3TM1)) / ((minPifVAL * xQuadSEPERATS3TM1) - (xSEPERATS3TM1^2)));
            aSEPERATS3TM2 = (((xQuadSEPERATS3TM2 * ySEPERATS3TM2) - (xSEPERATS3TM2 * xySEPERATS3TM2)) / ((minPifVAL * xQuadSEPERATS3TM2) - (xSEPERATS3TM2^2)));
            aSEPERATS3TM3 = (((xQuadSEPERATS3TM3 * ySEPERATS3TM3) - (xSEPERATS3TM3 * xySEPERATS3TM3)) / ((minPifVAL * xQuadSEPERATS3TM3) - (xSEPERATS3TM3^2)));
            aSEPERATS3TM4 = (((xQuadSEPERATS3TM4 * ySEPERATS3TM4) - (xSEPERATS3TM4 * xySEPERATS3TM4)) / ((minPifVAL * xQuadSEPERATS3TM4) - (xSEPERATS3TM4^2)));
            aSEPERATS3TM5 = (((xQuadSEPERATS3TM5 * ySEPERATS3TM5) - (xSEPERATS3TM5 * xySEPERATS3TM5)) / ((minPifVAL * xQuadSEPERATS3TM5) - (xSEPERATS3TM5^2)));
            aSEPERATS3TM7 = (((xQuadSEPERATS3TM7 * ySEPERATS3TM7) - (xSEPERATS3TM7 * xySEPERATS3TM7)) / ((minPifVAL * xQuadSEPERATS3TM7) - (xSEPERATS3TM7^2)));
            
            bSEPERATS3TM1 = qXYSEPERATS3TM1 / xxAritQuadSEPERATS3TM1;
            bSEPERATS3TM2 = qXYSEPERATS3TM2 / xxAritQuadSEPERATS3TM2;
            bSEPERATS3TM3 = qXYSEPERATS3TM3 / xxAritQuadSEPERATS3TM3;
            bSEPERATS3TM4 = qXYSEPERATS3TM4 / xxAritQuadSEPERATS3TM4;
            bSEPERATS3TM5 = qXYSEPERATS3TM5 / xxAritQuadSEPERATS3TM5;
            bSEPERATS3TM7 = qXYSEPERATS3TM7 / xxAritQuadSEPERATS3TM7;
    
            rSEPERATS3TM1 = (qXYSEPERATS3TM1 / ((xxAritQuadSEPERATS3TM1 * yyAritQuadSEPERATS3TM1)^0.5));
            rSEPERATS3TM2 = (qXYSEPERATS3TM2 / ((xxAritQuadSEPERATS3TM2 * yyAritQuadSEPERATS3TM2)^0.5));
            rSEPERATS3TM3 = (qXYSEPERATS3TM3 / ((xxAritQuadSEPERATS3TM3 * yyAritQuadSEPERATS3TM3)^0.5));
            rSEPERATS3TM4 = (qXYSEPERATS3TM4 / ((xxAritQuadSEPERATS3TM4 * yyAritQuadSEPERATS3TM4)^0.5));
            rSEPERATS3TM5 = (qXYSEPERATS3TM5 / ((xxAritQuadSEPERATS3TM5 * yyAritQuadSEPERATS3TM5)^0.5));
            rSEPERATS3TM7 = (qXYSEPERATS3TM7 / ((xxAritQuadSEPERATS3TM7 * yyAritQuadSEPERATS3TM7)^0.5));
    
            rQuadSEPERATS3TM1 = ((rSEPERATS3TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3TM2 = ((rSEPERATS3TM2^2) * 100);
            rQuadSEPERATS3TM3 = ((rSEPERATS3TM3^2) * 100);
            rQuadSEPERATS3TM4 = ((rSEPERATS3TM4^2) * 100);
            rQuadSEPERATS3TM5 = ((rSEPERATS3TM5^2) * 100);
            rQuadSEPERATS3TM7 = ((rSEPERATS3TM7^2) * 100);
        
            syxSEPERATS3TM1 = (((yyAritQuadSEPERATS3TM1 - ((qXYSEPERATS3TM1^2) / xxAritQuadSEPERATS3TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM2 = (((yyAritQuadSEPERATS3TM2 - ((qXYSEPERATS3TM2^2) / xxAritQuadSEPERATS3TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM3 = (((yyAritQuadSEPERATS3TM3 - ((qXYSEPERATS3TM3^2) / xxAritQuadSEPERATS3TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM4 = (((yyAritQuadSEPERATS3TM4 - ((qXYSEPERATS3TM4^2) / xxAritQuadSEPERATS3TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM5 = (((yyAritQuadSEPERATS3TM5 - ((qXYSEPERATS3TM5^2) / xxAritQuadSEPERATS3TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM7 = (((yyAritQuadSEPERATS3TM7 - ((qXYSEPERATS3TM7^2) / xxAritQuadSEPERATS3TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3TM1 = (((syxSEPERATS3TM1^2) / xxAritQuadSEPERATS3TM1)^0.5);
            bStandSEPERATS3TM2 = (((syxSEPERATS3TM2^2) / xxAritQuadSEPERATS3TM2)^0.5);
            bStandSEPERATS3TM3 = (((syxSEPERATS3TM3^2) / xxAritQuadSEPERATS3TM3)^0.5);
            bStandSEPERATS3TM4 = (((syxSEPERATS3TM4^2) / xxAritQuadSEPERATS3TM4)^0.5);
            bStandSEPERATS3TM5 = (((syxSEPERATS3TM5^2) / xxAritQuadSEPERATS3TM5)^0.5);
            bStandSEPERATS3TM7 = (((syxSEPERATS3TM7^2) / xxAritQuadSEPERATS3TM7)^0.5);
    
            aStandSEPERATS3TM1 = (bStandSEPERATS3TM1 * ((xQuadSEPERATS3TM1 / minPifVAL)^0.5));
            aStandSEPERATS3TM2 = (bStandSEPERATS3TM2 * ((xQuadSEPERATS3TM2 / minPifVAL)^0.5));
            aStandSEPERATS3TM3 = (bStandSEPERATS3TM3 * ((xQuadSEPERATS3TM3 / minPifVAL)^0.5));
            aStandSEPERATS3TM4 = (bStandSEPERATS3TM4 * ((xQuadSEPERATS3TM4 / minPifVAL)^0.5));
            aStandSEPERATS3TM5 = (bStandSEPERATS3TM5 * ((xQuadSEPERATS3TM5 / minPifVAL)^0.5));
            aStandSEPERATS3TM7 = (bStandSEPERATS3TM7 * ((xQuadSEPERATS3TM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM1, bSEPERATS3TM1, rSEPERATS3TM1, rQuadSEPERATS3TM1, aStandSEPERATS3TM1, bStandSEPERATS3TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM2, bSEPERATS3TM2, rSEPERATS3TM2, rQuadSEPERATS3TM2, aStandSEPERATS3TM2, bStandSEPERATS3TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM3, bSEPERATS3TM3, rSEPERATS3TM3, rQuadSEPERATS3TM3, aStandSEPERATS3TM3, bStandSEPERATS3TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM4, bSEPERATS3TM4, rSEPERATS3TM4, rQuadSEPERATS3TM4, aStandSEPERATS3TM4, bStandSEPERATS3TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM5, bSEPERATS3TM5, rSEPERATS3TM5, rQuadSEPERATS3TM5, aStandSEPERATS3TM5, bStandSEPERATS3TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS3TM7, bSEPERATS3TM7, rSEPERATS3TM7, rQuadSEPERATS3TM7, aStandSEPERATS3TM7, bStandSEPERATS3TM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS3slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS3slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS3slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS3slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS3slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS3slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS3slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT3TM1[i,j] = (aSEPERATS3TM1 + (bSEPERATS3TM1 * REFS3TM1[i,j]));
                    OUT3TM2[i,j] = (aSEPERATS3TM2 + (bSEPERATS3TM2 * REFS3TM2[i,j]));
                    OUT3TM3[i,j] = (aSEPERATS3TM3 + (bSEPERATS3TM3 * REFS3TM3[i,j]));
                    OUT3TM4[i,j] = (aSEPERATS3TM4 + (bSEPERATS3TM4 * REFS3TM4[i,j]));
                    OUT3TM5[i,j] = (aSEPERATS3TM5 + (bSEPERATS3TM5 * REFS3TM5[i,j]));
                    OUT3TM7[i,j] = (aSEPERATS3TM7 + (bSEPERATS3TM7 * REFS3TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3TM1);
        	CreatePyramid(OUT3TM2);
        	CreatePyramid(OUT3TM3);
        	CreatePyramid(OUT3TM4);
        	CreatePyramid(OUT3TM5);
        	CreatePyramid(OUT3TM7);
        
        	CreateHistogram(OUT3TM1);
        	CreateHistogram(OUT3TM2);
        	CreateHistogram(OUT3TM3);
        	CreateHistogram(OUT3TM4);
        	CreateHistogram(OUT3TM5);
        	CreateHistogram(OUT3TM7);
            CloseRaster(REFS3TM1);
            CloseRaster(REFS3TM2);
            CloseRaster(REFS3TM3);
            CloseRaster(REFS3TM4);
            CloseRaster(REFS3TM5);
            CloseRaster(REFS3TM7);
    
            CloseRaster(OUT3TM1);
            CloseRaster(OUT3TM2);
            CloseRaster(OUT3TM3);
            CloseRaster(OUT3TM4);
            CloseRaster(OUT3TM5);
            CloseRaster(OUT3TM7);
        
        	printf("Scene 3 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            { 
            numeric xAritSEPERATS3MSS1, xAritSEPERATS3MSS2, xAritSEPERATS3MSS4;
            numeric yAritSEPERATS3MSS1, yAritSEPERATS3MSS2, yAritSEPERATS3MSS4;
    
            numeric aSEPERATS3MSS1, aSEPERATS3MSS2, aSEPERATS3MSS4;
            numeric bSEPERATS3MSS1, bSEPERATS3MSS2, bSEPERATS3MSS4;
            numeric rSEPERATS3MSS1, rSEPERATS3MSS2, rSEPERATS3MSS4;
            numeric rQuadSEPERATS3MSS1, rQuadSEPERATS3MSS2, rQuadSEPERATS3MSS4;
            numeric syxSEPERATS3MSS1, syxSEPERATS3MSS2, syxSEPERATS3MSS4;
            numeric bStandSEPERATS3MSS1, bStandSEPERATS3MSS2, bStandSEPERATS3MSS4;
            numeric aStandSEPERATS3MSS1, aStandSEPERATS3MSS2, aStandSEPERATS3MSS4;
    
            numeric xSEPERATS3MSS1 = 0;
            numeric xSEPERATS3MSS2 = 0;
            numeric xSEPERATS3MSS4 = 0;
    
            numeric xQuadSEPERATS3MSS1 = 0;
            numeric xQuadSEPERATS3MSS2 = 0;
            numeric xQuadSEPERATS3MSS4 = 0;
    
            numeric ySEPERATS3MSS1 = 0;
            numeric ySEPERATS3MSS2 = 0;
            numeric ySEPERATS3MSS4 = 0;
    
            numeric yQuadSEPERATS3MSS1 = 0;
            numeric yQuadSEPERATS3MSS2 = 0;
            numeric yQuadSEPERATS3MSS4 = 0;
    
            numeric xySEPERATS3MSS1 = 0;
            numeric xySEPERATS3MSS2 = 0;
            numeric xySEPERATS3MSS4 = 0;
    
            numeric xxAritQuadSEPERATS3MSS1 = 0;
            numeric xxAritQuadSEPERATS3MSS2 = 0;
            numeric xxAritQuadSEPERATS3MSS4 = 0;
    
            numeric yyAritQuadSEPERATS3MSS1 = 0;
            numeric yyAritQuadSEPERATS3MSS2 = 0;
            numeric yyAritQuadSEPERATS3MSS4 = 0;
    
            numeric qXYSEPERATS3MSS1 = 0;
            numeric qXYSEPERATS3MSS2 = 0;
            numeric qXYSEPERATS3MSS4 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS3MSS1 = xSEPERATS3MSS1 + pifSEPERATS1S3ETM2arrayRAND[m];
                xSEPERATS3MSS2 = xSEPERATS3MSS2 + pifSEPERATS1S3ETM3arrayRAND[m];
                xSEPERATS3MSS4 = xSEPERATS3MSS4 + pifSEPERATS1S3ETM4arrayRAND[m];
    
                xQuadSEPERATS3MSS1 = (xQuadSEPERATS3MSS1 + (pifSEPERATS1S3ETM2arrayRAND[m]^2));
                xQuadSEPERATS3MSS2 = (xQuadSEPERATS3MSS2 + (pifSEPERATS1S3ETM3arrayRAND[m]^2));
                xQuadSEPERATS3MSS4 = (xQuadSEPERATS3MSS4 + (pifSEPERATS1S3ETM4arrayRAND[m]^2));
    
                ySEPERATS3MSS1 = ySEPERATS3MSS1 + pifSEPERATS3slaveMSS1arrayRAND[m];
                ySEPERATS3MSS2 = ySEPERATS3MSS2 + pifSEPERATS3slaveMSS2arrayRAND[m];
                ySEPERATS3MSS4 = ySEPERATS3MSS4 + pifSEPERATS3slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS3MSS1 = (yQuadSEPERATS3MSS1 + (pifSEPERATS3slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS3MSS2 = (yQuadSEPERATS3MSS2 + (pifSEPERATS3slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS3MSS4 = (yQuadSEPERATS3MSS4 + (pifSEPERATS3slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS3MSS1 = (xySEPERATS3MSS1 + (pifSEPERATS1S3ETM2arrayRAND[m] * pifSEPERATS3slaveMSS1arrayRAND[m]));
                xySEPERATS3MSS2 = (xySEPERATS3MSS2 + (pifSEPERATS1S3ETM3arrayRAND[m] * pifSEPERATS3slaveMSS2arrayRAND[m]));
                xySEPERATS3MSS4 = (xySEPERATS3MSS4 + (pifSEPERATS1S3ETM4arrayRAND[m] * pifSEPERATS3slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS3MSS1 = xSEPERATS3MSS1 / minPifVAL;
            xAritSEPERATS3MSS2 = xSEPERATS3MSS2 / minPifVAL;
            xAritSEPERATS3MSS3 = xSEPERATS3MSS3 / minPifVAL;
            xAritSEPERATS3MSS4 = xSEPERATS3MSS4 / minPifVAL;
    
            yAritSEPERATS3MSS1 = ySEPERATS3MSS1 / minPifVAL;
            yAritSEPERATS3MSS2 = ySEPERATS3MSS2 / minPifVAL;
            yAritSEPERATS3MSS3 = ySEPERATS3MSS3 / minPifVAL;
            yAritSEPERATS3MSS4 = ySEPERATS3MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3MSS1 = (xxAritQuadSEPERATS3MSS1 + ((pifSEPERATS1S3ETM2arrayRAND[n] - xAritSEPERATS3MSS1)^2));
                xxAritQuadSEPERATS3MSS2 = (xxAritQuadSEPERATS3MSS2 + ((pifSEPERATS1S3ETM3arrayRAND[n] - xAritSEPERATS3MSS2)^2));
                xxAritQuadSEPERATS3MSS4 = (xxAritQuadSEPERATS3MSS4 + ((pifSEPERATS1S3ETM4arrayRAND[n] - xAritSEPERATS3MSS4)^2));
    
                yyAritQuadSEPERATS3MSS1 = (yyAritQuadSEPERATS3MSS1 + ((pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)^2));
                yyAritQuadSEPERATS3MSS2 = (yyAritQuadSEPERATS3MSS2 + ((pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)^2));
                yyAritQuadSEPERATS3MSS4 = (yyAritQuadSEPERATS3MSS4 + ((pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)^2));
    
                qXYSEPERATS3MSS1 = (qXYSEPERATS3MSS1 + ((pifSEPERATS1S3ETM2arrayRAND[n] - xAritSEPERATS3MSS1) * (pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)));
                qXYSEPERATS3MSS2 = (qXYSEPERATS3MSS2 + ((pifSEPERATS1S3ETM3arrayRAND[n] - xAritSEPERATS3MSS2) * (pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)));
                qXYSEPERATS3MSS4 = (qXYSEPERATS3MSS4 + ((pifSEPERATS1S3ETM4arrayRAND[n] - xAritSEPERATS3MSS4) * (pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)));
            }
        
            aSEPERATS3MSS1 = (((xQuadSEPERATS3MSS1 * ySEPERATS3MSS1) - (xSEPERATS3MSS1 * xySEPERATS3MSS1)) / ((minPifVAL * xQuadSEPERATS3MSS1) - (xSEPERATS3MSS1^2)));
            aSEPERATS3MSS2 = (((xQuadSEPERATS3MSS2 * ySEPERATS3MSS2) - (xSEPERATS3MSS2 * xySEPERATS3MSS2)) / ((minPifVAL * xQuadSEPERATS3MSS2) - (xSEPERATS3MSS2^2)));
            aSEPERATS3MSS4 = (((xQuadSEPERATS3MSS4 * ySEPERATS3MSS4) - (xSEPERATS3MSS4 * xySEPERATS3MSS4)) / ((minPifVAL * xQuadSEPERATS3MSS4) - (xSEPERATS3MSS4^2)));
            
            bSEPERATS3MSS1 = qXYSEPERATS3MSS1 / xxAritQuadSEPERATS3MSS1;
            bSEPERATS3MSS2 = qXYSEPERATS3MSS2 / xxAritQuadSEPERATS3MSS2;
            bSEPERATS3MSS4 = qXYSEPERATS3MSS4 / xxAritQuadSEPERATS3MSS4;
    
            rSEPERATS3MSS1 = (qXYSEPERATS3MSS1 / ((xxAritQuadSEPERATS3MSS1 * yyAritQuadSEPERATS3MSS1)^0.5));
            rSEPERATS3MSS2 = (qXYSEPERATS3MSS2 / ((xxAritQuadSEPERATS3MSS2 * yyAritQuadSEPERATS3MSS2)^0.5));
            rSEPERATS3MSS4 = (qXYSEPERATS3MSS4 / ((xxAritQuadSEPERATS3MSS4 * yyAritQuadSEPERATS3MSS4)^0.5));
    
            rQuadSEPERATS3MSS1 = ((rSEPERATS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3MSS2 = ((rSEPERATS3MSS2^2) * 100);
            rQuadSEPERATS3MSS4 = ((rSEPERATS3MSS4^2) * 100);
        
            syxSEPERATS3MSS1 = (((yyAritQuadSEPERATS3MSS1 - ((qXYSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS2 = (((yyAritQuadSEPERATS3MSS2 - ((qXYSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS4 = (((yyAritQuadSEPERATS3MSS4 - ((qXYSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3MSS1 = (((syxSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)^0.5);
            bStandSEPERATS3MSS2 = (((syxSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)^0.5);
            bStandSEPERATS3MSS4 = (((syxSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)^0.5);
    
            aStandSEPERATS3MSS1 = (bStandSEPERATS3MSS1 * ((xQuadSEPERATS3MSS1 / minPifVAL)^0.5));
            aStandSEPERATS3MSS2 = (bStandSEPERATS3MSS2 * ((xQuadSEPERATS3MSS2 / minPifVAL)^0.5));
            aStandSEPERATS3MSS4 = (bStandSEPERATS3MSS4 * ((xQuadSEPERATS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS1, bSEPERATS3MSS1, rSEPERATS3MSS1, rQuadSEPERATS3MSS1, aStandSEPERATS3MSS1, bStandSEPERATS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS2, bSEPERATS3MSS2, rSEPERATS3MSS2, rQuadSEPERATS3MSS2, aStandSEPERATS3MSS2, bStandSEPERATS3MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS4, bSEPERATS3MSS4, rSEPERATS3MSS4, rQuadSEPERATS3MSS4, aStandSEPERATS3MSS4, bStandSEPERATS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS3slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS3slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS3slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aSEPERATS3MSS1 + (bSEPERATS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aSEPERATS3MSS2 + (bSEPERATS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = REFS3MSS3[i,j];
                    OUT3MSS4[i,j] = (aSEPERATS3MSS4 + (bSEPERATS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT3MSS1);
            CreatePyramid(OUT3MSS2);
            CreatePyramid(OUT3MSS3);
            CreatePyramid(OUT3MSS4);
        
            CreateHistogram(OUT3MSS1);
            CreateHistogram(OUT3MSS2);
            CreateHistogram(OUT3MSS3);
            CreateHistogram(OUT3MSS4);
            
            CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
         
            if ( sensors4 == 7 )
            {
            numeric xAritSEPERATS4ETM1, xAritSEPERATS4ETM2, xAritSEPERATS4ETM3, xAritSEPERATS4ETM4, xAritSEPERATS4ETM5, xAritSEPERATS4ETM7;
            numeric yAritSEPERATS4ETM1, yAritSEPERATS4ETM2, yAritSEPERATS4ETM3, yAritSEPERATS4ETM4, yAritSEPERATS4ETM5, yAritSEPERATS4ETM7;
    
            numeric aSEPERATS4ETM1, aSEPERATS4ETM2, aSEPERATS4ETM3, aSEPERATS4ETM4, aSEPERATS4ETM5, aSEPERATS4ETM7;
            numeric bSEPERATS4ETM1, bSEPERATS4ETM2, bSEPERATS4ETM3, bSEPERATS4ETM4, bSEPERATS4ETM5, bSEPERATS4ETM7;
            numeric rSEPERATS4ETM1, rSEPERATS4ETM2, rSEPERATS4ETM3, rSEPERATS4ETM4, rSEPERATS4ETM5, rSEPERATS4ETM7;
            numeric rQuadSEPERATS4ETM1, rQuadSEPERATS4ETM2, rQuadSEPERATS4ETM3, rQuadSEPERATS4ETM4, rQuadSEPERATS4ETM5, rQuadSEPERATS4ETM7;
            numeric syxSEPERATS4ETM1, syxSEPERATS4ETM2, syxSEPERATS4ETM3, syxSEPERATS4ETM4, syxSEPERATS4ETM5, syxSEPERATS4ETM7;
            numeric bStandSEPERATS4ETM1, bStandSEPERATS4ETM2, bStandSEPERATS4ETM3, bStandSEPERATS4ETM4, bStandSEPERATS4ETM5, bStandSEPERATS4ETM7;
            numeric aStandSEPERATS4ETM1, aStandSEPERATS4ETM2, aStandSEPERATS4ETM3, aStandSEPERATS4ETM4, aStandSEPERATS4ETM5, aStandSEPERATS4ETM7;
    
            numeric xSEPERATS4ETM1 = 0;
            numeric xSEPERATS4ETM2 = 0;
            numeric xSEPERATS4ETM3 = 0;
            numeric xSEPERATS4ETM4 = 0;
            numeric xSEPERATS4ETM5 = 0;
            numeric xSEPERATS4ETM7 = 0;
    
            numeric xQuadSEPERATS4ETM1 = 0;
            numeric xQuadSEPERATS4ETM2 = 0;
            numeric xQuadSEPERATS4ETM3 = 0;
            numeric xQuadSEPERATS4ETM4 = 0;
            numeric xQuadSEPERATS4ETM5 = 0;
            numeric xQuadSEPERATS4ETM7 = 0;
    
            numeric ySEPERATS4ETM1 = 0;
            numeric ySEPERATS4ETM2 = 0;
            numeric ySEPERATS4ETM3 = 0;
            numeric ySEPERATS4ETM4 = 0;
            numeric ySEPERATS4ETM5 = 0;
            numeric ySEPERATS4ETM7 = 0;
    
            numeric yQuadSEPERATS4ETM1 = 0;
            numeric yQuadSEPERATS4ETM2 = 0;
            numeric yQuadSEPERATS4ETM3 = 0;
            numeric yQuadSEPERATS4ETM4 = 0;
            numeric yQuadSEPERATS4ETM5 = 0;
            numeric yQuadSEPERATS4ETM7 = 0;
    
            numeric xySEPERATS4ETM1 = 0;
            numeric xySEPERATS4ETM2 = 0;
            numeric xySEPERATS4ETM3 = 0;
            numeric xySEPERATS4ETM4 = 0;
            numeric xySEPERATS4ETM5 = 0;
            numeric xySEPERATS4ETM7 = 0;
    
            numeric xxAritQuadSEPERATS4ETM1 = 0;
            numeric xxAritQuadSEPERATS4ETM2 = 0;
            numeric xxAritQuadSEPERATS4ETM3 = 0;
            numeric xxAritQuadSEPERATS4ETM4 = 0;
            numeric xxAritQuadSEPERATS4ETM5 = 0;
            numeric xxAritQuadSEPERATS4ETM7 = 0;
    
            numeric yyAritQuadSEPERATS4ETM1 = 0;
            numeric yyAritQuadSEPERATS4ETM2 = 0;
            numeric yyAritQuadSEPERATS4ETM3 = 0;
            numeric yyAritQuadSEPERATS4ETM4 = 0;
            numeric yyAritQuadSEPERATS4ETM5 = 0;
            numeric yyAritQuadSEPERATS4ETM7 = 0;
    
            numeric qXYSEPERATS4ETM1 = 0;
            numeric qXYSEPERATS4ETM2 = 0;
            numeric qXYSEPERATS4ETM3 = 0;
            numeric qXYSEPERATS4ETM4 = 0;
            numeric qXYSEPERATS4ETM5 = 0;
            numeric qXYSEPERATS4ETM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS4ETM1 = xSEPERATS4ETM1 + pifSEPERATS1S4ETM1arrayRAND[m];
                xSEPERATS4ETM2 = xSEPERATS4ETM2 + pifSEPERATS1S4ETM2arrayRAND[m];
                xSEPERATS4ETM3 = xSEPERATS4ETM3 + pifSEPERATS1S4ETM3arrayRAND[m];
                xSEPERATS4ETM4 = xSEPERATS4ETM4 + pifSEPERATS1S4ETM4arrayRAND[m];
                xSEPERATS4ETM5 = xSEPERATS4ETM5 + pifSEPERATS1S4ETM5arrayRAND[m];
                xSEPERATS4ETM7 = xSEPERATS4ETM7 + pifSEPERATS1S4ETM7arrayRAND[m];
    
                xQuadSEPERATS4ETM1 = (xQuadSEPERATS4ETM1 + (pifSEPERATS1S4ETM1arrayRAND[m]^2));
                xQuadSEPERATS4ETM2 = (xQuadSEPERATS4ETM2 + (pifSEPERATS1S4ETM2arrayRAND[m]^2));
                xQuadSEPERATS4ETM3 = (xQuadSEPERATS4ETM3 + (pifSEPERATS1S4ETM3arrayRAND[m]^2));
                xQuadSEPERATS4ETM4 = (xQuadSEPERATS4ETM4 + (pifSEPERATS1S4ETM4arrayRAND[m]^2));
                xQuadSEPERATS4ETM5 = (xQuadSEPERATS4ETM5 + (pifSEPERATS1S4ETM5arrayRAND[m]^2));
                xQuadSEPERATS4ETM7 = (xQuadSEPERATS4ETM7 + (pifSEPERATS1S4ETM7arrayRAND[m]^2));
    
                ySEPERATS4ETM1 = ySEPERATS4ETM1 + pifSEPERATS4slaveETM1arrayRAND[m];
                ySEPERATS4ETM2 = ySEPERATS4ETM2 + pifSEPERATS4slaveETM2arrayRAND[m];
                ySEPERATS4ETM3 = ySEPERATS4ETM3 + pifSEPERATS4slaveETM3arrayRAND[m];
                ySEPERATS4ETM4 = ySEPERATS4ETM4 + pifSEPERATS4slaveETM4arrayRAND[m];
                ySEPERATS4ETM5 = ySEPERATS4ETM5 + pifSEPERATS4slaveETM5arrayRAND[m];
                ySEPERATS4ETM7 = ySEPERATS4ETM7 + pifSEPERATS4slaveETM7arrayRAND[m];
                
                yQuadSEPERATS4ETM1 = (yQuadSEPERATS4ETM1 + (pifSEPERATS4slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS4ETM2 = (yQuadSEPERATS4ETM2 + (pifSEPERATS4slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS4ETM3 = (yQuadSEPERATS4ETM3 + (pifSEPERATS4slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS4ETM4 = (yQuadSEPERATS4ETM4 + (pifSEPERATS4slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS4ETM5 = (yQuadSEPERATS4ETM5 + (pifSEPERATS4slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS4ETM7 = (yQuadSEPERATS4ETM7 + (pifSEPERATS4slaveETM7arrayRAND[m]^2));
    
                xySEPERATS4ETM1 = (xySEPERATS4ETM1 + (pifSEPERATS1S4ETM1arrayRAND[m] * pifSEPERATS4slaveETM1arrayRAND[m]));
                xySEPERATS4ETM2 = (xySEPERATS4ETM2 + (pifSEPERATS1S4ETM2arrayRAND[m] * pifSEPERATS4slaveETM2arrayRAND[m]));
                xySEPERATS4ETM3 = (xySEPERATS4ETM3 + (pifSEPERATS1S4ETM3arrayRAND[m] * pifSEPERATS4slaveETM3arrayRAND[m]));
                xySEPERATS4ETM4 = (xySEPERATS4ETM4 + (pifSEPERATS1S4ETM4arrayRAND[m] * pifSEPERATS4slaveETM4arrayRAND[m]));
                xySEPERATS4ETM5 = (xySEPERATS4ETM5 + (pifSEPERATS1S4ETM5arrayRAND[m] * pifSEPERATS4slaveETM5arrayRAND[m]));
                xySEPERATS4ETM7 = (xySEPERATS4ETM7 + (pifSEPERATS1S4ETM7arrayRAND[m] * pifSEPERATS4slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS4ETM1 = xSEPERATS4ETM1 / minPifVAL;
            xAritSEPERATS4ETM2 = xSEPERATS4ETM2 / minPifVAL;
            xAritSEPERATS4ETM3 = xSEPERATS4ETM3 / minPifVAL;
            xAritSEPERATS4ETM4 = xSEPERATS4ETM4 / minPifVAL;
            xAritSEPERATS4ETM5 = xSEPERATS4ETM5 / minPifVAL;
            xAritSEPERATS4ETM7 = xSEPERATS4ETM7 / minPifVAL;
    
            yAritSEPERATS4ETM1 = ySEPERATS4ETM1 / minPifVAL;
            yAritSEPERATS4ETM2 = ySEPERATS4ETM2 / minPifVAL;
            yAritSEPERATS4ETM3 = ySEPERATS4ETM3 / minPifVAL;
            yAritSEPERATS4ETM4 = ySEPERATS4ETM4 / minPifVAL;
            yAritSEPERATS4ETM5 = ySEPERATS4ETM5 / minPifVAL;
            yAritSEPERATS4ETM7 = ySEPERATS4ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4ETM1 = (xxAritQuadSEPERATS4ETM1 + ((pifSEPERATS1S4ETM1arrayRAND[n] - xAritSEPERATS4ETM1)^2));
                xxAritQuadSEPERATS4ETM2 = (xxAritQuadSEPERATS4ETM2 + ((pifSEPERATS1S4ETM2arrayRAND[n] - xAritSEPERATS4ETM2)^2));
                xxAritQuadSEPERATS4ETM3 = (xxAritQuadSEPERATS4ETM3 + ((pifSEPERATS1S4ETM3arrayRAND[n] - xAritSEPERATS4ETM3)^2));
                xxAritQuadSEPERATS4ETM4 = (xxAritQuadSEPERATS4ETM4 + ((pifSEPERATS1S4ETM4arrayRAND[n] - xAritSEPERATS4ETM4)^2));
                xxAritQuadSEPERATS4ETM5 = (xxAritQuadSEPERATS4ETM5 + ((pifSEPERATS1S4ETM5arrayRAND[n] - xAritSEPERATS4ETM5)^2));
                xxAritQuadSEPERATS4ETM7 = (xxAritQuadSEPERATS4ETM7 + ((pifSEPERATS1S4ETM7arrayRAND[n] - xAritSEPERATS4ETM7)^2));
    
                yyAritQuadSEPERATS4ETM1 = (yyAritQuadSEPERATS4ETM1 + ((pifSEPERATS4slaveETM1arrayRAND[n] - yAritSEPERATS4ETM1)^2));
                yyAritQuadSEPERATS4ETM2 = (yyAritQuadSEPERATS4ETM2 + ((pifSEPERATS4slaveETM2arrayRAND[n] - yAritSEPERATS4ETM2)^2));
                yyAritQuadSEPERATS4ETM3 = (yyAritQuadSEPERATS4ETM3 + ((pifSEPERATS4slaveETM3arrayRAND[n] - yAritSEPERATS4ETM3)^2));
                yyAritQuadSEPERATS4ETM4 = (yyAritQuadSEPERATS4ETM4 + ((pifSEPERATS4slaveETM4arrayRAND[n] - yAritSEPERATS4ETM4)^2));
                yyAritQuadSEPERATS4ETM5 = (yyAritQuadSEPERATS4ETM5 + ((pifSEPERATS4slaveETM5arrayRAND[n] - yAritSEPERATS4ETM5)^2));
                yyAritQuadSEPERATS4ETM7 = (yyAritQuadSEPERATS4ETM7 + ((pifSEPERATS4slaveETM7arrayRAND[n] - yAritSEPERATS4ETM7)^2));
    
                qXYSEPERATS4ETM1 = (qXYSEPERATS4ETM1 + ((pifSEPERATS1S4ETM1arrayRAND[n] - xAritSEPERATS4ETM1) * (pifSEPERATS4slaveETM1arrayRAND[n] - yAritSEPERATS4ETM1)));
                qXYSEPERATS4ETM2 = (qXYSEPERATS4ETM2 + ((pifSEPERATS1S4ETM2arrayRAND[n] - xAritSEPERATS4ETM2) * (pifSEPERATS4slaveETM2arrayRAND[n] - yAritSEPERATS4ETM2)));
                qXYSEPERATS4ETM3 = (qXYSEPERATS4ETM3 + ((pifSEPERATS1S4ETM3arrayRAND[n] - xAritSEPERATS4ETM3) * (pifSEPERATS4slaveETM3arrayRAND[n] - yAritSEPERATS4ETM3)));
                qXYSEPERATS4ETM4 = (qXYSEPERATS4ETM4 + ((pifSEPERATS1S4ETM4arrayRAND[n] - xAritSEPERATS4ETM4) * (pifSEPERATS4slaveETM4arrayRAND[n] - yAritSEPERATS4ETM4)));
                qXYSEPERATS4ETM5 = (qXYSEPERATS4ETM5 + ((pifSEPERATS1S4ETM5arrayRAND[n] - xAritSEPERATS4ETM5) * (pifSEPERATS4slaveETM5arrayRAND[n] - yAritSEPERATS4ETM5)));
                qXYSEPERATS4ETM7 = (qXYSEPERATS4ETM7 + ((pifSEPERATS1S4ETM7arrayRAND[n] - xAritSEPERATS4ETM7) * (pifSEPERATS4slaveETM7arrayRAND[n] - yAritSEPERATS4ETM7)));
            }
        
            aSEPERATS4ETM1 = (((xQuadSEPERATS4ETM1 * ySEPERATS4ETM1) - (xSEPERATS4ETM1 * xySEPERATS4ETM1)) / ((minPifVAL * xQuadSEPERATS4ETM1) - (xSEPERATS4ETM1^2)));
            aSEPERATS4ETM2 = (((xQuadSEPERATS4ETM2 * ySEPERATS4ETM2) - (xSEPERATS4ETM2 * xySEPERATS4ETM2)) / ((minPifVAL * xQuadSEPERATS4ETM2) - (xSEPERATS4ETM2^2)));
            aSEPERATS4ETM3 = (((xQuadSEPERATS4ETM3 * ySEPERATS4ETM3) - (xSEPERATS4ETM3 * xySEPERATS4ETM3)) / ((minPifVAL * xQuadSEPERATS4ETM3) - (xSEPERATS4ETM3^2)));
            aSEPERATS4ETM4 = (((xQuadSEPERATS4ETM4 * ySEPERATS4ETM4) - (xSEPERATS4ETM4 * xySEPERATS4ETM4)) / ((minPifVAL * xQuadSEPERATS4ETM4) - (xSEPERATS4ETM4^2)));
            aSEPERATS4ETM5 = (((xQuadSEPERATS4ETM5 * ySEPERATS4ETM5) - (xSEPERATS4ETM5 * xySEPERATS4ETM5)) / ((minPifVAL * xQuadSEPERATS4ETM5) - (xSEPERATS4ETM5^2)));
            aSEPERATS4ETM7 = (((xQuadSEPERATS4ETM7 * ySEPERATS4ETM7) - (xSEPERATS4ETM7 * xySEPERATS4ETM7)) / ((minPifVAL * xQuadSEPERATS4ETM7) - (xSEPERATS4ETM7^2)));
            
            bSEPERATS4ETM1 = qXYSEPERATS4ETM1 / xxAritQuadSEPERATS4ETM1;
            bSEPERATS4ETM2 = qXYSEPERATS4ETM2 / xxAritQuadSEPERATS4ETM2;
            bSEPERATS4ETM3 = qXYSEPERATS4ETM3 / xxAritQuadSEPERATS4ETM3;
            bSEPERATS4ETM4 = qXYSEPERATS4ETM4 / xxAritQuadSEPERATS4ETM4;
            bSEPERATS4ETM5 = qXYSEPERATS4ETM5 / xxAritQuadSEPERATS4ETM5;
            bSEPERATS4ETM7 = qXYSEPERATS4ETM7 / xxAritQuadSEPERATS4ETM7;
    
            rSEPERATS4ETM1 = (qXYSEPERATS4ETM1 / ((xxAritQuadSEPERATS4ETM1 * yyAritQuadSEPERATS4ETM1)^0.5));
            rSEPERATS4ETM2 = (qXYSEPERATS4ETM2 / ((xxAritQuadSEPERATS4ETM2 * yyAritQuadSEPERATS4ETM2)^0.5));
            rSEPERATS4ETM3 = (qXYSEPERATS4ETM3 / ((xxAritQuadSEPERATS4ETM3 * yyAritQuadSEPERATS4ETM3)^0.5));
            rSEPERATS4ETM4 = (qXYSEPERATS4ETM4 / ((xxAritQuadSEPERATS4ETM4 * yyAritQuadSEPERATS4ETM4)^0.5));
            rSEPERATS4ETM5 = (qXYSEPERATS4ETM5 / ((xxAritQuadSEPERATS4ETM5 * yyAritQuadSEPERATS4ETM5)^0.5));
            rSEPERATS4ETM7 = (qXYSEPERATS4ETM7 / ((xxAritQuadSEPERATS4ETM7 * yyAritQuadSEPERATS4ETM7)^0.5));
    
            rQuadSEPERATS4ETM1 = ((rSEPERATS4ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4ETM2 = ((rSEPERATS4ETM2^2) * 100);
            rQuadSEPERATS4ETM3 = ((rSEPERATS4ETM3^2) * 100);
            rQuadSEPERATS4ETM4 = ((rSEPERATS4ETM4^2) * 100);
            rQuadSEPERATS4ETM5 = ((rSEPERATS4ETM5^2) * 100);
            rQuadSEPERATS4ETM7 = ((rSEPERATS4ETM7^2) * 100);
        
            syxSEPERATS4ETM1 = (((yyAritQuadSEPERATS4ETM1 - ((qXYSEPERATS4ETM1^2) / xxAritQuadSEPERATS4ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM2 = (((yyAritQuadSEPERATS4ETM2 - ((qXYSEPERATS4ETM2^2) / xxAritQuadSEPERATS4ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM3 = (((yyAritQuadSEPERATS4ETM3 - ((qXYSEPERATS4ETM3^2) / xxAritQuadSEPERATS4ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM4 = (((yyAritQuadSEPERATS4ETM4 - ((qXYSEPERATS4ETM4^2) / xxAritQuadSEPERATS4ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM5 = (((yyAritQuadSEPERATS4ETM5 - ((qXYSEPERATS4ETM5^2) / xxAritQuadSEPERATS4ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM7 = (((yyAritQuadSEPERATS4ETM7 - ((qXYSEPERATS4ETM7^2) / xxAritQuadSEPERATS4ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4ETM1 = (((syxSEPERATS4ETM1^2) / xxAritQuadSEPERATS4ETM1)^0.5);
            bStandSEPERATS4ETM2 = (((syxSEPERATS4ETM2^2) / xxAritQuadSEPERATS4ETM2)^0.5);
            bStandSEPERATS4ETM3 = (((syxSEPERATS4ETM3^2) / xxAritQuadSEPERATS4ETM3)^0.5);
            bStandSEPERATS4ETM4 = (((syxSEPERATS4ETM4^2) / xxAritQuadSEPERATS4ETM4)^0.5);
            bStandSEPERATS4ETM5 = (((syxSEPERATS4ETM5^2) / xxAritQuadSEPERATS4ETM5)^0.5);
            bStandSEPERATS4ETM7 = (((syxSEPERATS4ETM7^2) / xxAritQuadSEPERATS4ETM7)^0.5);
    
            aStandSEPERATS4ETM1 = (bStandSEPERATS4ETM1 * ((xQuadSEPERATS4ETM1 / minPifVAL)^0.5));
            aStandSEPERATS4ETM2 = (bStandSEPERATS4ETM2 * ((xQuadSEPERATS4ETM2 / minPifVAL)^0.5));
            aStandSEPERATS4ETM3 = (bStandSEPERATS4ETM3 * ((xQuadSEPERATS4ETM3 / minPifVAL)^0.5));
            aStandSEPERATS4ETM4 = (bStandSEPERATS4ETM4 * ((xQuadSEPERATS4ETM4 / minPifVAL)^0.5));
            aStandSEPERATS4ETM5 = (bStandSEPERATS4ETM5 * ((xQuadSEPERATS4ETM5 / minPifVAL)^0.5));
            aStandSEPERATS4ETM7 = (bStandSEPERATS4ETM7 * ((xQuadSEPERATS4ETM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM1, bSEPERATS4ETM1, rSEPERATS4ETM1, rQuadSEPERATS4ETM1, aStandSEPERATS4ETM1, bStandSEPERATS4ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM2, bSEPERATS4ETM2, rSEPERATS4ETM2, rQuadSEPERATS4ETM2, aStandSEPERATS4ETM2, bStandSEPERATS4ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM3, bSEPERATS4ETM3, rSEPERATS4ETM3, rQuadSEPERATS4ETM3, aStandSEPERATS4ETM3, bStandSEPERATS4ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM4, bSEPERATS4ETM4, rSEPERATS4ETM4, rQuadSEPERATS4ETM4, aStandSEPERATS4ETM4, bStandSEPERATS4ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM5, bSEPERATS4ETM5, rSEPERATS4ETM5, rQuadSEPERATS4ETM5, aStandSEPERATS4ETM5, bStandSEPERATS4ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS4ETM7, bSEPERATS4ETM7, rSEPERATS4ETM7, rQuadSEPERATS4ETM7, aStandSEPERATS4ETM7, bStandSEPERATS4ETM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS4slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS4slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS4slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS4slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS4slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS4slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS4slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT4ETM1[i,j] = (aSEPERATS4ETM1 + (bSEPERATS4ETM1 * REFS4ETM1[i,j]));
                    OUT4ETM2[i,j] = (aSEPERATS4ETM2 + (bSEPERATS4ETM2 * REFS4ETM2[i,j]));
                    OUT4ETM3[i,j] = (aSEPERATS4ETM3 + (bSEPERATS4ETM3 * REFS4ETM3[i,j]));
                    OUT4ETM4[i,j] = (aSEPERATS4ETM4 + (bSEPERATS4ETM4 * REFS4ETM4[i,j]));
                    OUT4ETM5[i,j] = (aSEPERATS4ETM5 + (bSEPERATS4ETM5 * REFS4ETM5[i,j]));
                    OUT4ETM7[i,j] = (aSEPERATS4ETM7 + (bSEPERATS4ETM7 * REFS4ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4ETM1);
        	CreatePyramid(OUT4ETM2);
        	CreatePyramid(OUT4ETM3);
        	CreatePyramid(OUT4ETM4);
        	CreatePyramid(OUT4ETM5);
        	CreatePyramid(OUT4ETM7);
        
        	CreateHistogram(OUT4ETM1);
        	CreateHistogram(OUT4ETM2);
        	CreateHistogram(OUT4ETM3);
        	CreateHistogram(OUT4ETM4);
        	CreateHistogram(OUT4ETM5);
        	CreateHistogram(OUT4ETM7);
            CloseRaster(REFS4ETM1);
            CloseRaster(REFS4ETM2);
            CloseRaster(REFS4ETM3);
            CloseRaster(REFS4ETM4);
            CloseRaster(REFS4ETM5);
            CloseRaster(REFS4ETM7);
    
            CloseRaster(OUT4ETM1);
            CloseRaster(OUT4ETM2);
            CloseRaster(OUT4ETM3);
            CloseRaster(OUT4ETM4);
            CloseRaster(OUT4ETM5);
            CloseRaster(OUT4ETM7);
            
        	printf("Scene 4 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");            
            }
            
            else if ( sensors4 == 6 )
            {
            numeric xAritSEPERATS4TM1, xAritSEPERATS4TM2, xAritSEPERATS4TM3, xAritSEPERATS4TM4, xAritSEPERATS4TM5, xAritSEPERATS4TM7;
            numeric yAritSEPERATS4TM1, yAritSEPERATS4TM2, yAritSEPERATS4TM3, yAritSEPERATS4TM4, yAritSEPERATS4TM5, yAritSEPERATS4TM7;
    
            numeric aSEPERATS4TM1, aSEPERATS4TM2, aSEPERATS4TM3, aSEPERATS4TM4, aSEPERATS4TM5, aSEPERATS4TM7;
            numeric bSEPERATS4TM1, bSEPERATS4TM2, bSEPERATS4TM3, bSEPERATS4TM4, bSEPERATS4TM5, bSEPERATS4TM7;
            numeric rSEPERATS4TM1, rSEPERATS4TM2, rSEPERATS4TM3, rSEPERATS4TM4, rSEPERATS4TM5, rSEPERATS4TM7;
            numeric rQuadSEPERATS4TM1, rQuadSEPERATS4TM2, rQuadSEPERATS4TM3, rQuadSEPERATS4TM4, rQuadSEPERATS4TM5, rQuadSEPERATS4TM7;
            numeric syxSEPERATS4TM1, syxSEPERATS4TM2, syxSEPERATS4TM3, syxSEPERATS4TM4, syxSEPERATS4TM5, syxSEPERATS4TM7;
            numeric bStandSEPERATS4TM1, bStandSEPERATS4TM2, bStandSEPERATS4TM3, bStandSEPERATS4TM4, bStandSEPERATS4TM5, bStandSEPERATS4TM7;
            numeric aStandSEPERATS4TM1, aStandSEPERATS4TM2, aStandSEPERATS4TM3, aStandSEPERATS4TM4, aStandSEPERATS4TM5, aStandSEPERATS4TM7;
    
            numeric xSEPERATS4TM1 = 0;
            numeric xSEPERATS4TM2 = 0;
            numeric xSEPERATS4TM3 = 0;
            numeric xSEPERATS4TM4 = 0;
            numeric xSEPERATS4TM5 = 0;
            numeric xSEPERATS4TM7 = 0;
    
            numeric xQuadSEPERATS4TM1 = 0;
            numeric xQuadSEPERATS4TM2 = 0;
            numeric xQuadSEPERATS4TM3 = 0;
            numeric xQuadSEPERATS4TM4 = 0;
            numeric xQuadSEPERATS4TM5 = 0;
            numeric xQuadSEPERATS4TM7 = 0;
    
            numeric ySEPERATS4TM1 = 0;
            numeric ySEPERATS4TM2 = 0;
            numeric ySEPERATS4TM3 = 0;
            numeric ySEPERATS4TM4 = 0;
            numeric ySEPERATS4TM5 = 0;
            numeric ySEPERATS4TM7 = 0;
    
            numeric yQuadSEPERATS4TM1 = 0;
            numeric yQuadSEPERATS4TM2 = 0;
            numeric yQuadSEPERATS4TM3 = 0;
            numeric yQuadSEPERATS4TM4 = 0;
            numeric yQuadSEPERATS4TM5 = 0;
            numeric yQuadSEPERATS4TM7 = 0;
    
            numeric xySEPERATS4TM1 = 0;
            numeric xySEPERATS4TM2 = 0;
            numeric xySEPERATS4TM3 = 0;
            numeric xySEPERATS4TM4 = 0;
            numeric xySEPERATS4TM5 = 0;
            numeric xySEPERATS4TM7 = 0;
    
            numeric xxAritQuadSEPERATS4TM1 = 0;
            numeric xxAritQuadSEPERATS4TM2 = 0;
            numeric xxAritQuadSEPERATS4TM3 = 0;
            numeric xxAritQuadSEPERATS4TM4 = 0;
            numeric xxAritQuadSEPERATS4TM5 = 0;
            numeric xxAritQuadSEPERATS4TM7 = 0;
    
            numeric yyAritQuadSEPERATS4TM1 = 0;
            numeric yyAritQuadSEPERATS4TM2 = 0;
            numeric yyAritQuadSEPERATS4TM3 = 0;
            numeric yyAritQuadSEPERATS4TM4 = 0;
            numeric yyAritQuadSEPERATS4TM5 = 0;
            numeric yyAritQuadSEPERATS4TM7 = 0;
    
            numeric qXYSEPERATS4TM1 = 0;
            numeric qXYSEPERATS4TM2 = 0;
            numeric qXYSEPERATS4TM3 = 0;
            numeric qXYSEPERATS4TM4 = 0;
            numeric qXYSEPERATS4TM5 = 0;
            numeric qXYSEPERATS4TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS4TM1 = xSEPERATS4TM1 + pifSEPERATS1S4ETM1arrayRAND[m];
                xSEPERATS4TM2 = xSEPERATS4TM2 + pifSEPERATS1S4ETM2arrayRAND[m];
                xSEPERATS4TM3 = xSEPERATS4TM3 + pifSEPERATS1S4ETM3arrayRAND[m];
                xSEPERATS4TM4 = xSEPERATS4TM4 + pifSEPERATS1S4ETM4arrayRAND[m];
                xSEPERATS4TM5 = xSEPERATS4TM5 + pifSEPERATS1S4ETM5arrayRAND[m];
                xSEPERATS4TM7 = xSEPERATS4TM7 + pifSEPERATS1S4ETM7arrayRAND[m];
    
                xQuadSEPERATS4TM1 = (xQuadSEPERATS4TM1 + (pifSEPERATS1S4ETM1arrayRAND[m]^2));
                xQuadSEPERATS4TM2 = (xQuadSEPERATS4TM2 + (pifSEPERATS1S4ETM2arrayRAND[m]^2));
                xQuadSEPERATS4TM3 = (xQuadSEPERATS4TM3 + (pifSEPERATS1S4ETM3arrayRAND[m]^2));
                xQuadSEPERATS4TM4 = (xQuadSEPERATS4TM4 + (pifSEPERATS1S4ETM4arrayRAND[m]^2));
                xQuadSEPERATS4TM5 = (xQuadSEPERATS4TM5 + (pifSEPERATS1S4ETM5arrayRAND[m]^2));
                xQuadSEPERATS4TM7 = (xQuadSEPERATS4TM7 + (pifSEPERATS1S4ETM7arrayRAND[m]^2));
    
                ySEPERATS4TM1 = ySEPERATS4TM1 + pifSEPERATS4slaveTM1arrayRAND[m];
                ySEPERATS4TM2 = ySEPERATS4TM2 + pifSEPERATS4slaveTM2arrayRAND[m];
                ySEPERATS4TM3 = ySEPERATS4TM3 + pifSEPERATS4slaveTM3arrayRAND[m];
                ySEPERATS4TM4 = ySEPERATS4TM4 + pifSEPERATS4slaveTM4arrayRAND[m];
                ySEPERATS4TM5 = ySEPERATS4TM5 + pifSEPERATS4slaveTM5arrayRAND[m];
                ySEPERATS4TM7 = ySEPERATS4TM7 + pifSEPERATS4slaveTM7arrayRAND[m];
                
                yQuadSEPERATS4TM1 = (yQuadSEPERATS4TM1 + (pifSEPERATS4slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS4TM2 = (yQuadSEPERATS4TM2 + (pifSEPERATS4slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS4TM3 = (yQuadSEPERATS4TM3 + (pifSEPERATS4slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS4TM4 = (yQuadSEPERATS4TM4 + (pifSEPERATS4slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS4TM5 = (yQuadSEPERATS4TM5 + (pifSEPERATS4slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS4TM7 = (yQuadSEPERATS4TM7 + (pifSEPERATS4slaveTM7arrayRAND[m]^2));
    
                xySEPERATS4TM1 = (xySEPERATS4TM1 + (pifSEPERATS1S4ETM1arrayRAND[m] * pifSEPERATS4slaveTM1arrayRAND[m]));
                xySEPERATS4TM2 = (xySEPERATS4TM2 + (pifSEPERATS1S4ETM2arrayRAND[m] * pifSEPERATS4slaveTM2arrayRAND[m]));
                xySEPERATS4TM3 = (xySEPERATS4TM3 + (pifSEPERATS1S4ETM3arrayRAND[m] * pifSEPERATS4slaveTM3arrayRAND[m]));
                xySEPERATS4TM4 = (xySEPERATS4TM4 + (pifSEPERATS1S4ETM4arrayRAND[m] * pifSEPERATS4slaveTM4arrayRAND[m]));
                xySEPERATS4TM5 = (xySEPERATS4TM5 + (pifSEPERATS1S4ETM5arrayRAND[m] * pifSEPERATS4slaveTM5arrayRAND[m]));
                xySEPERATS4TM7 = (xySEPERATS4TM7 + (pifSEPERATS1S4ETM7arrayRAND[m] * pifSEPERATS4slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS4TM1 = xSEPERATS4TM1 / minPifVAL;
            xAritSEPERATS4TM2 = xSEPERATS4TM2 / minPifVAL;
            xAritSEPERATS4TM3 = xSEPERATS4TM3 / minPifVAL;
            xAritSEPERATS4TM4 = xSEPERATS4TM4 / minPifVAL;
            xAritSEPERATS4TM5 = xSEPERATS4TM5 / minPifVAL;
            xAritSEPERATS4TM7 = xSEPERATS4TM7 / minPifVAL;
    
            yAritSEPERATS4TM1 = ySEPERATS4TM1 / minPifVAL;
            yAritSEPERATS4TM2 = ySEPERATS4TM2 / minPifVAL;
            yAritSEPERATS4TM3 = ySEPERATS4TM3 / minPifVAL;
            yAritSEPERATS4TM4 = ySEPERATS4TM4 / minPifVAL;
            yAritSEPERATS4TM5 = ySEPERATS4TM5 / minPifVAL;
            yAritSEPERATS4TM7 = ySEPERATS4TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4TM1 = (xxAritQuadSEPERATS4TM1 + ((pifSEPERATS1S4ETM1arrayRAND[n] - xAritSEPERATS4TM1)^2));
                xxAritQuadSEPERATS4TM2 = (xxAritQuadSEPERATS4TM2 + ((pifSEPERATS1S4ETM2arrayRAND[n] - xAritSEPERATS4TM2)^2));
                xxAritQuadSEPERATS4TM3 = (xxAritQuadSEPERATS4TM3 + ((pifSEPERATS1S4ETM3arrayRAND[n] - xAritSEPERATS4TM3)^2));
                xxAritQuadSEPERATS4TM4 = (xxAritQuadSEPERATS4TM4 + ((pifSEPERATS1S4ETM4arrayRAND[n] - xAritSEPERATS4TM4)^2));
                xxAritQuadSEPERATS4TM5 = (xxAritQuadSEPERATS4TM5 + ((pifSEPERATS1S4ETM5arrayRAND[n] - xAritSEPERATS4TM5)^2));
                xxAritQuadSEPERATS4TM7 = (xxAritQuadSEPERATS4TM7 + ((pifSEPERATS1S4ETM7arrayRAND[n] - xAritSEPERATS4TM7)^2));
    
                yyAritQuadSEPERATS4TM1 = (yyAritQuadSEPERATS4TM1 + ((pifSEPERATS4slaveTM1arrayRAND[n] - yAritSEPERATS4TM1)^2));
                yyAritQuadSEPERATS4TM2 = (yyAritQuadSEPERATS4TM2 + ((pifSEPERATS4slaveTM2arrayRAND[n] - yAritSEPERATS4TM2)^2));
                yyAritQuadSEPERATS4TM3 = (yyAritQuadSEPERATS4TM3 + ((pifSEPERATS4slaveTM3arrayRAND[n] - yAritSEPERATS4TM3)^2));
                yyAritQuadSEPERATS4TM4 = (yyAritQuadSEPERATS4TM4 + ((pifSEPERATS4slaveTM4arrayRAND[n] - yAritSEPERATS4TM4)^2));
                yyAritQuadSEPERATS4TM5 = (yyAritQuadSEPERATS4TM5 + ((pifSEPERATS4slaveTM5arrayRAND[n] - yAritSEPERATS4TM5)^2));
                yyAritQuadSEPERATS4TM7 = (yyAritQuadSEPERATS4TM7 + ((pifSEPERATS4slaveTM7arrayRAND[n] - yAritSEPERATS4TM7)^2));
    
                qXYSEPERATS4TM1 = (qXYSEPERATS4TM1 + ((pifSEPERATS1S4ETM1arrayRAND[n] - xAritSEPERATS4TM1) * (pifSEPERATS4slaveTM1arrayRAND[n] - yAritSEPERATS4TM1)));
                qXYSEPERATS4TM2 = (qXYSEPERATS4TM2 + ((pifSEPERATS1S4ETM2arrayRAND[n] - xAritSEPERATS4TM2) * (pifSEPERATS4slaveTM2arrayRAND[n] - yAritSEPERATS4TM2)));
                qXYSEPERATS4TM3 = (qXYSEPERATS4TM3 + ((pifSEPERATS1S4ETM3arrayRAND[n] - xAritSEPERATS4TM3) * (pifSEPERATS4slaveTM3arrayRAND[n] - yAritSEPERATS4TM3)));
                qXYSEPERATS4TM4 = (qXYSEPERATS4TM4 + ((pifSEPERATS1S4ETM4arrayRAND[n] - xAritSEPERATS4TM4) * (pifSEPERATS4slaveTM4arrayRAND[n] - yAritSEPERATS4TM4)));
                qXYSEPERATS4TM5 = (qXYSEPERATS4TM5 + ((pifSEPERATS1S4ETM5arrayRAND[n] - xAritSEPERATS4TM5) * (pifSEPERATS4slaveTM5arrayRAND[n] - yAritSEPERATS4TM5)));
                qXYSEPERATS4TM7 = (qXYSEPERATS4TM7 + ((pifSEPERATS1S4ETM7arrayRAND[n] - xAritSEPERATS4TM7) * (pifSEPERATS4slaveTM7arrayRAND[n] - yAritSEPERATS4TM7)));
            }
        
            aSEPERATS4TM1 = (((xQuadSEPERATS4TM1 * ySEPERATS4TM1) - (xSEPERATS4TM1 * xySEPERATS4TM1)) / ((minPifVAL * xQuadSEPERATS4TM1) - (xSEPERATS4TM1^2)));
            aSEPERATS4TM2 = (((xQuadSEPERATS4TM2 * ySEPERATS4TM2) - (xSEPERATS4TM2 * xySEPERATS4TM2)) / ((minPifVAL * xQuadSEPERATS4TM2) - (xSEPERATS4TM2^2)));
            aSEPERATS4TM3 = (((xQuadSEPERATS4TM3 * ySEPERATS4TM3) - (xSEPERATS4TM3 * xySEPERATS4TM3)) / ((minPifVAL * xQuadSEPERATS4TM3) - (xSEPERATS4TM3^2)));
            aSEPERATS4TM4 = (((xQuadSEPERATS4TM4 * ySEPERATS4TM4) - (xSEPERATS4TM4 * xySEPERATS4TM4)) / ((minPifVAL * xQuadSEPERATS4TM4) - (xSEPERATS4TM4^2)));
            aSEPERATS4TM5 = (((xQuadSEPERATS4TM5 * ySEPERATS4TM5) - (xSEPERATS4TM5 * xySEPERATS4TM5)) / ((minPifVAL * xQuadSEPERATS4TM5) - (xSEPERATS4TM5^2)));
            aSEPERATS4TM7 = (((xQuadSEPERATS4TM7 * ySEPERATS4TM7) - (xSEPERATS4TM7 * xySEPERATS4TM7)) / ((minPifVAL * xQuadSEPERATS4TM7) - (xSEPERATS4TM7^2)));
            
            bSEPERATS4TM1 = qXYSEPERATS4TM1 / xxAritQuadSEPERATS4TM1;
            bSEPERATS4TM2 = qXYSEPERATS4TM2 / xxAritQuadSEPERATS4TM2;
            bSEPERATS4TM3 = qXYSEPERATS4TM3 / xxAritQuadSEPERATS4TM3;
            bSEPERATS4TM4 = qXYSEPERATS4TM4 / xxAritQuadSEPERATS4TM4;
            bSEPERATS4TM5 = qXYSEPERATS4TM5 / xxAritQuadSEPERATS4TM5;
            bSEPERATS4TM7 = qXYSEPERATS4TM7 / xxAritQuadSEPERATS4TM7;
    
            rSEPERATS4TM1 = (qXYSEPERATS4TM1 / ((xxAritQuadSEPERATS4TM1 * yyAritQuadSEPERATS4TM1)^0.5));
            rSEPERATS4TM2 = (qXYSEPERATS4TM2 / ((xxAritQuadSEPERATS4TM2 * yyAritQuadSEPERATS4TM2)^0.5));
            rSEPERATS4TM3 = (qXYSEPERATS4TM3 / ((xxAritQuadSEPERATS4TM3 * yyAritQuadSEPERATS4TM3)^0.5));
            rSEPERATS4TM4 = (qXYSEPERATS4TM4 / ((xxAritQuadSEPERATS4TM4 * yyAritQuadSEPERATS4TM4)^0.5));
            rSEPERATS4TM5 = (qXYSEPERATS4TM5 / ((xxAritQuadSEPERATS4TM5 * yyAritQuadSEPERATS4TM5)^0.5));
            rSEPERATS4TM7 = (qXYSEPERATS4TM7 / ((xxAritQuadSEPERATS4TM7 * yyAritQuadSEPERATS4TM7)^0.5));
    
            rQuadSEPERATS4TM1 = ((rSEPERATS4TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4TM2 = ((rSEPERATS4TM2^2) * 100);
            rQuadSEPERATS4TM3 = ((rSEPERATS4TM3^2) * 100);
            rQuadSEPERATS4TM4 = ((rSEPERATS4TM4^2) * 100);
            rQuadSEPERATS4TM5 = ((rSEPERATS4TM5^2) * 100);
            rQuadSEPERATS4TM7 = ((rSEPERATS4TM7^2) * 100);
        
            syxSEPERATS4TM1 = (((yyAritQuadSEPERATS4TM1 - ((qXYSEPERATS4TM1^2) / xxAritQuadSEPERATS4TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM2 = (((yyAritQuadSEPERATS4TM2 - ((qXYSEPERATS4TM2^2) / xxAritQuadSEPERATS4TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM3 = (((yyAritQuadSEPERATS4TM3 - ((qXYSEPERATS4TM3^2) / xxAritQuadSEPERATS4TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM4 = (((yyAritQuadSEPERATS4TM4 - ((qXYSEPERATS4TM4^2) / xxAritQuadSEPERATS4TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM5 = (((yyAritQuadSEPERATS4TM5 - ((qXYSEPERATS4TM5^2) / xxAritQuadSEPERATS4TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM7 = (((yyAritQuadSEPERATS4TM7 - ((qXYSEPERATS4TM7^2) / xxAritQuadSEPERATS4TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4TM1 = (((syxSEPERATS4TM1^2) / xxAritQuadSEPERATS4TM1)^0.5);
            bStandSEPERATS4TM2 = (((syxSEPERATS4TM2^2) / xxAritQuadSEPERATS4TM2)^0.5);
            bStandSEPERATS4TM3 = (((syxSEPERATS4TM3^2) / xxAritQuadSEPERATS4TM3)^0.5);
            bStandSEPERATS4TM4 = (((syxSEPERATS4TM4^2) / xxAritQuadSEPERATS4TM4)^0.5);
            bStandSEPERATS4TM5 = (((syxSEPERATS4TM5^2) / xxAritQuadSEPERATS4TM5)^0.5);
            bStandSEPERATS4TM7 = (((syxSEPERATS4TM7^2) / xxAritQuadSEPERATS4TM7)^0.5);
    
            aStandSEPERATS4TM1 = (bStandSEPERATS4TM1 * ((xQuadSEPERATS4TM1 / minPifVAL)^0.5));
            aStandSEPERATS4TM2 = (bStandSEPERATS4TM2 * ((xQuadSEPERATS4TM2 / minPifVAL)^0.5));
            aStandSEPERATS4TM3 = (bStandSEPERATS4TM3 * ((xQuadSEPERATS4TM3 / minPifVAL)^0.5));
            aStandSEPERATS4TM4 = (bStandSEPERATS4TM4 * ((xQuadSEPERATS4TM4 / minPifVAL)^0.5));
            aStandSEPERATS4TM5 = (bStandSEPERATS4TM5 * ((xQuadSEPERATS4TM5 / minPifVAL)^0.5));
            aStandSEPERATS4TM7 = (bStandSEPERATS4TM7 * ((xQuadSEPERATS4TM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM1, bSEPERATS4TM1, rSEPERATS4TM1, rQuadSEPERATS4TM1, aStandSEPERATS4TM1, bStandSEPERATS4TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM2, bSEPERATS4TM2, rSEPERATS4TM2, rQuadSEPERATS4TM2, aStandSEPERATS4TM2, bStandSEPERATS4TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM3, bSEPERATS4TM3, rSEPERATS4TM3, rQuadSEPERATS4TM3, aStandSEPERATS4TM3, bStandSEPERATS4TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM4, bSEPERATS4TM4, rSEPERATS4TM4, rQuadSEPERATS4TM4, aStandSEPERATS4TM4, bStandSEPERATS4TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM5, bSEPERATS4TM5, rSEPERATS4TM5, rQuadSEPERATS4TM5, aStandSEPERATS4TM5, bStandSEPERATS4TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS4TM7, bSEPERATS4TM7, rSEPERATS4TM7, rQuadSEPERATS4TM7, aStandSEPERATS4TM7, bStandSEPERATS4TM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS4slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS4slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS4slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS4slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS4slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS4slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS4slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT4TM1[i,j] = (aSEPERATS4TM1 + (bSEPERATS4TM1 * REFS4TM1[i,j]));
                    OUT4TM2[i,j] = (aSEPERATS4TM2 + (bSEPERATS4TM2 * REFS4TM2[i,j]));
                    OUT4TM3[i,j] = (aSEPERATS4TM3 + (bSEPERATS4TM3 * REFS4TM3[i,j]));
                    OUT4TM4[i,j] = (aSEPERATS4TM4 + (bSEPERATS4TM4 * REFS4TM4[i,j]));
                    OUT4TM5[i,j] = (aSEPERATS4TM5 + (bSEPERATS4TM5 * REFS4TM5[i,j]));
                    OUT4TM7[i,j] = (aSEPERATS4TM7 + (bSEPERATS4TM7 * REFS4TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4TM1);
        	CreatePyramid(OUT4TM2);
        	CreatePyramid(OUT4TM3);
        	CreatePyramid(OUT4TM4);
        	CreatePyramid(OUT4TM5);
        	CreatePyramid(OUT4TM7);
        
        	CreateHistogram(OUT4TM1);
        	CreateHistogram(OUT4TM2);
        	CreateHistogram(OUT4TM3);
        	CreateHistogram(OUT4TM4);
        	CreateHistogram(OUT4TM5);
        	CreateHistogram(OUT4TM7);
            CloseRaster(REFS4TM1);
            CloseRaster(REFS4TM2);
            CloseRaster(REFS4TM3);
            CloseRaster(REFS4TM4);
            CloseRaster(REFS4TM5);
            CloseRaster(REFS4TM7);
    
            CloseRaster(OUT4TM1);
            CloseRaster(OUT4TM2);
            CloseRaster(OUT4TM3);
            CloseRaster(OUT4TM4);
            CloseRaster(OUT4TM5);
            CloseRaster(OUT4TM7);
        
        	printf("Scene 4 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            else
            { 
            numeric xAritSEPERATS4MSS1, xAritSEPERATS4MSS2, xAritSEPERATS4MSS4;
            numeric yAritSEPERATS4MSS1, yAritSEPERATS4MSS2, yAritSEPERATS4MSS4;
    
            numeric aSEPERATS4MSS1, aSEPERATS4MSS2, aSEPERATS4MSS4;
            numeric bSEPERATS4MSS1, bSEPERATS4MSS2, bSEPERATS4MSS4;
            numeric rSEPERATS4MSS1, rSEPERATS4MSS2, rSEPERATS4MSS4;
            numeric rQuadSEPERATS4MSS1, rQuadSEPERATS4MSS2, rQuadSEPERATS4MSS4;
            numeric syxSEPERATS4MSS1, syxSEPERATS4MSS2, syxSEPERATS4MSS4;
            numeric bStandSEPERATS4MSS1, bStandSEPERATS4MSS2, bStandSEPERATS4MSS4;
            numeric aStandSEPERATS4MSS1, aStandSEPERATS4MSS2, aStandSEPERATS4MSS4;
    
            numeric xSEPERATS4MSS1 = 0;
            numeric xSEPERATS4MSS2 = 0;
            numeric xSEPERATS4MSS4 = 0;
    
            numeric xQuadSEPERATS4MSS1 = 0;
            numeric xQuadSEPERATS4MSS2 = 0;
            numeric xQuadSEPERATS4MSS4 = 0;
    
            numeric ySEPERATS4MSS1 = 0;
            numeric ySEPERATS4MSS2 = 0;
            numeric ySEPERATS4MSS4 = 0;
    
            numeric yQuadSEPERATS4MSS1 = 0;
            numeric yQuadSEPERATS4MSS2 = 0;
            numeric yQuadSEPERATS4MSS4 = 0;
    
            numeric xySEPERATS4MSS1 = 0;
            numeric xySEPERATS4MSS2 = 0;
            numeric xySEPERATS4MSS4 = 0;
    
            numeric xxAritQuadSEPERATS4MSS1 = 0;
            numeric xxAritQuadSEPERATS4MSS2 = 0;
            numeric xxAritQuadSEPERATS4MSS4 = 0;
    
            numeric yyAritQuadSEPERATS4MSS1 = 0;
            numeric yyAritQuadSEPERATS4MSS2 = 0;
            numeric yyAritQuadSEPERATS4MSS4 = 0;
    
            numeric qXYSEPERATS4MSS1 = 0;
            numeric qXYSEPERATS4MSS2 = 0;
            numeric qXYSEPERATS4MSS4 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS4MSS1 = xSEPERATS4MSS1 + pifSEPERATS1S4ETM2arrayRAND[m];
                xSEPERATS4MSS2 = xSEPERATS4MSS2 + pifSEPERATS1S4ETM3arrayRAND[m];
                xSEPERATS4MSS4 = xSEPERATS4MSS4 + pifSEPERATS1S4ETM4arrayRAND[m];
    
                xQuadSEPERATS4MSS1 = (xQuadSEPERATS4MSS1 + (pifSEPERATS1S4ETM2arrayRAND[m]^2));
                xQuadSEPERATS4MSS2 = (xQuadSEPERATS4MSS2 + (pifSEPERATS1S4ETM3arrayRAND[m]^2));
                xQuadSEPERATS4MSS4 = (xQuadSEPERATS4MSS4 + (pifSEPERATS1S4ETM4arrayRAND[m]^2));
    
                ySEPERATS4MSS1 = ySEPERATS4MSS1 + pifSEPERATS4slaveMSS1arrayRAND[m];
                ySEPERATS4MSS2 = ySEPERATS4MSS2 + pifSEPERATS4slaveMSS2arrayRAND[m];
                ySEPERATS4MSS4 = ySEPERATS4MSS4 + pifSEPERATS4slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS4MSS1 = (yQuadSEPERATS4MSS1 + (pifSEPERATS4slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS4MSS2 = (yQuadSEPERATS4MSS2 + (pifSEPERATS4slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS4MSS4 = (yQuadSEPERATS4MSS4 + (pifSEPERATS4slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS4MSS1 = (xySEPERATS4MSS1 + (pifSEPERATS1S4ETM2arrayRAND[m] * pifSEPERATS4slaveMSS1arrayRAND[m]));
                xySEPERATS4MSS2 = (xySEPERATS4MSS2 + (pifSEPERATS1S4ETM3arrayRAND[m] * pifSEPERATS4slaveMSS2arrayRAND[m]));
                xySEPERATS4MSS4 = (xySEPERATS4MSS4 + (pifSEPERATS1S4ETM4arrayRAND[m] * pifSEPERATS4slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS4MSS1 = xSEPERATS4MSS1 / minPifVAL;
            xAritSEPERATS4MSS2 = xSEPERATS4MSS2 / minPifVAL;
            xAritSEPERATS4MSS4 = xSEPERATS4MSS4 / minPifVAL;
    
            yAritSEPERATS4MSS1 = ySEPERATS4MSS1 / minPifVAL;
            yAritSEPERATS4MSS2 = ySEPERATS4MSS2 / minPifVAL;
            yAritSEPERATS4MSS4 = ySEPERATS4MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4MSS1 = (xxAritQuadSEPERATS4MSS1 + ((pifSEPERATS1S4ETM2arrayRAND[n] - xAritSEPERATS4MSS1)^2));
                xxAritQuadSEPERATS4MSS2 = (xxAritQuadSEPERATS4MSS2 + ((pifSEPERATS1S4ETM3arrayRAND[n] - xAritSEPERATS4MSS2)^2));
                xxAritQuadSEPERATS4MSS4 = (xxAritQuadSEPERATS4MSS4 + ((pifSEPERATS1S4ETM4arrayRAND[n] - xAritSEPERATS4MSS4)^2));
    
                yyAritQuadSEPERATS4MSS1 = (yyAritQuadSEPERATS4MSS1 + ((pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)^2));
                yyAritQuadSEPERATS4MSS2 = (yyAritQuadSEPERATS4MSS2 + ((pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)^2));
                yyAritQuadSEPERATS4MSS4 = (yyAritQuadSEPERATS4MSS4 + ((pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)^2));
                qXYSEPERATS4MSS1 = (qXYSEPERATS4MSS1 + ((pifSEPERATS1S4ETM2arrayRAND[n] - xAritSEPERATS4MSS1) * (pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)));
                qXYSEPERATS4MSS2 = (qXYSEPERATS4MSS2 + ((pifSEPERATS1S4ETM3arrayRAND[n] - xAritSEPERATS4MSS2) * (pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)));
                qXYSEPERATS4MSS4 = (qXYSEPERATS4MSS4 + ((pifSEPERATS1S4ETM4arrayRAND[n] - xAritSEPERATS4MSS4) * (pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)));
            }
        
            aSEPERATS4MSS1 = (((xQuadSEPERATS4MSS1 * ySEPERATS4MSS1) - (xSEPERATS4MSS1 * xySEPERATS4MSS1)) / ((minPifVAL * xQuadSEPERATS4MSS1) - (xSEPERATS4MSS1^2)));
            aSEPERATS4MSS2 = (((xQuadSEPERATS4MSS2 * ySEPERATS4MSS2) - (xSEPERATS4MSS2 * xySEPERATS4MSS2)) / ((minPifVAL * xQuadSEPERATS4MSS2) - (xSEPERATS4MSS2^2)));
            aSEPERATS4MSS4 = (((xQuadSEPERATS4MSS4 * ySEPERATS4MSS4) - (xSEPERATS4MSS4 * xySEPERATS4MSS4)) / ((minPifVAL * xQuadSEPERATS4MSS4) - (xSEPERATS4MSS4^2)));
            
            bSEPERATS4MSS1 = qXYSEPERATS4MSS1 / xxAritQuadSEPERATS4MSS1;
            bSEPERATS4MSS2 = qXYSEPERATS4MSS2 / xxAritQuadSEPERATS4MSS2;
            bSEPERATS4MSS4 = qXYSEPERATS4MSS4 / xxAritQuadSEPERATS4MSS4;
    
            rSEPERATS4MSS1 = (qXYSEPERATS4MSS1 / ((xxAritQuadSEPERATS4MSS1 * yyAritQuadSEPERATS4MSS1)^0.5));
            rSEPERATS4MSS2 = (qXYSEPERATS4MSS2 / ((xxAritQuadSEPERATS4MSS2 * yyAritQuadSEPERATS4MSS2)^0.5));
            rSEPERATS4MSS4 = (qXYSEPERATS4MSS4 / ((xxAritQuadSEPERATS4MSS4 * yyAritQuadSEPERATS4MSS4)^0.5));
    
            rQuadSEPERATS4MSS1 = ((rSEPERATS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4MSS2 = ((rSEPERATS4MSS2^2) * 100);
            rQuadSEPERATS4MSS4 = ((rSEPERATS4MSS4^2) * 100);
        
            syxSEPERATS4MSS1 = (((yyAritQuadSEPERATS4MSS1 - ((qXYSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS2 = (((yyAritQuadSEPERATS4MSS2 - ((qXYSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS4 = (((yyAritQuadSEPERATS4MSS4 - ((qXYSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4MSS1 = (((syxSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)^0.5);
            bStandSEPERATS4MSS2 = (((syxSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)^0.5);
            bStandSEPERATS4MSS4 = (((syxSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)^0.5);
    
            aStandSEPERATS4MSS1 = (bStandSEPERATS4MSS1 * ((xQuadSEPERATS4MSS1 / minPifVAL)^0.5));
            aStandSEPERATS4MSS2 = (bStandSEPERATS4MSS2 * ((xQuadSEPERATS4MSS2 / minPifVAL)^0.5));
            aStandSEPERATS4MSS4 = (bStandSEPERATS4MSS4 * ((xQuadSEPERATS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS1, bSEPERATS4MSS1, rSEPERATS4MSS1, rQuadSEPERATS4MSS1, aStandSEPERATS4MSS1, bStandSEPERATS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS2, bSEPERATS4MSS2, rSEPERATS4MSS2, rQuadSEPERATS4MSS2, aStandSEPERATS4MSS2, bStandSEPERATS4MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS4, bSEPERATS4MSS4, rSEPERATS4MSS4, rQuadSEPERATS4MSS4, aStandSEPERATS4MSS4, bStandSEPERATS4MSS4);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS4slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS4slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS4slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aSEPERATS4MSS1 + (bSEPERATS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aSEPERATS4MSS2 + (bSEPERATS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = REFS4MSS3[i,j];
                    OUT4MSS4[i,j] = (aSEPERATS4MSS4 + (bSEPERATS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT4MSS1);
            CreatePyramid(OUT4MSS2);
            CreatePyramid(OUT4MSS3);
            CreatePyramid(OUT4MSS4);
        
            CreateHistogram(OUT4MSS1);
            CreateHistogram(OUT4MSS2);
            CreateHistogram(OUT4MSS3);
            CreateHistogram(OUT4MSS4);
            
            CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
        }
        
        else if ( sensors1 == 6 )
        {
        printf("Scene 1 - Master Scene (TM):\n");
        printf("Scene 1 array values used for regression computation:\n");
	    printf("For Scene 1 (Master) and Slave (Scene 2):");
        printf("TM1: %12f ", pifSEPERATS1S2TM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S2TM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S2TM1arrayRAND[minPifVAL]);
    
        printf("TM2: %12f ", pifSEPERATS1S2TM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S2TM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S2TM2arrayRAND[minPifVAL]);
    
        printf("TM3: %12f ", pifSEPERATS1S2TM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S2TM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S2TM3arrayRAND[minPifVAL]);
    
        printf("TM4: %12f ", pifSEPERATS1S2TM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S2TM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S2TM4arrayRAND[minPifVAL]);
    
        printf("TM5: %12f ", pifSEPERATS1S2TM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S2TM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S2TM5arrayRAND[minPifVAL]);
    
        printf("TM7: %12f ", pifSEPERATS1S2TM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S2TM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS1S2TM7arrayRAND[minPifVAL]);
	    printf("For Scene 1 (Master) and Slave (Scene 3):");
        printf("TM1: %12f ", pifSEPERATS1S3TM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S3TM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S3TM1arrayRAND[minPifVAL]);
    
        printf("TM2: %12f ", pifSEPERATS1S3TM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S3TM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S3TM2arrayRAND[minPifVAL]);
    
        printf("TM3: %12f ", pifSEPERATS1S3TM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S3TM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S3TM3arrayRAND[minPifVAL]);
    
        printf("TM4: %12f ", pifSEPERATS1S3TM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S3TM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S3TM4arrayRAND[minPifVAL]);
    
        printf("TM5: %12f ", pifSEPERATS1S3TM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S3TM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S3TM5arrayRAND[minPifVAL]);
    
        printf("TM7: %12f ", pifSEPERATS1S3TM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S3TM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS1S3TM7arrayRAND[minPifVAL]);
	    printf("For Scene 1 (Master) and Slave (Scene 4):");
        printf("TM1: %12f ", pifSEPERATS1S4TM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S4TM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S4TM1arrayRAND[minPifVAL]);
    
        printf("TM2: %12f ", pifSEPERATS1S4TM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S4TM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S4TM2arrayRAND[minPifVAL]);
    
        printf("TM3: %12f ", pifSEPERATS1S4TM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S4TM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S4TM3arrayRAND[minPifVAL]);
    
        printf("TM4: %12f ", pifSEPERATS1S4TM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S4TM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S4TM4arrayRAND[minPifVAL]);
    
        printf("TM5: %12f ", pifSEPERATS1S4TM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S4TM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S4TM5arrayRAND[minPifVAL]);
    
        printf("TM7: %12f ", pifSEPERATS1S4TM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S4TM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS1S4TM7arrayRAND[minPifVAL]);
                for i = 1 to TMlins
                {
                    for j = 1 to TMcols
                    {
                    OUT1TM1[i,j] = REFS1TM1[i,j];
                    OUT1TM2[i,j] = REFS1TM2[i,j];
                    OUT1TM3[i,j] = REFS1TM3[i,j];
                    OUT1TM4[i,j] = REFS1TM4[i,j];
                    OUT1TM5[i,j] = REFS1TM5[i,j];
                    OUT1TM7[i,j] = REFS1TM7[i,j];
                    }
                }
            
        CreatePyramid(OUT1TM1);
        CreatePyramid(OUT1TM2);
        CreatePyramid(OUT1TM3);
        CreatePyramid(OUT1TM4);
        CreatePyramid(OUT1TM5);
        CreatePyramid(OUT1TM7);
        
        CreateHistogram(OUT1TM1);
        CreateHistogram(OUT1TM2);
        CreateHistogram(OUT1TM3);
        CreateHistogram(OUT1TM4);
        CreateHistogram(OUT1TM5);
        CreateHistogram(OUT1TM7);
        
        CloseRaster(REFS1TM1);
        CloseRaster(REFS1TM2);
        CloseRaster(REFS1TM3);
        CloseRaster(REFS1TM4);
        CloseRaster(REFS1TM5);
        CloseRaster(REFS1TM7);
        
        CloseRaster(OUT1TM1);
        CloseRaster(OUT1TM2);
        CloseRaster(OUT1TM3);
        CloseRaster(OUT1TM4);
        CloseRaster(OUT1TM5);
        CloseRaster(OUT1TM7);
            
        printf("Scene 1 (Master) output was written, histogram created and pyramid written...\n\n\n"); 
            if ( sensors2 == 7 )
            {
            numeric xAritSEPERATS2ETM1, xAritSEPERATS2ETM2, xAritSEPERATS2ETM3, xAritSEPERATS2ETM4, xAritSEPERATS2ETM5, xAritSEPERATS2ETM7;
            numeric yAritSEPERATS2ETM1, yAritSEPERATS2ETM2, yAritSEPERATS2ETM3, yAritSEPERATS2ETM4, yAritSEPERATS2ETM5, yAritSEPERATS2ETM7;
    
            numeric aSEPERATS2ETM1, aSEPERATS2ETM2, aSEPERATS2ETM3, aSEPERATS2ETM4, aSEPERATS2ETM5, aSEPERATS2ETM7;
            numeric bSEPERATS2ETM1, bSEPERATS2ETM2, bSEPERATS2ETM3, bSEPERATS2ETM4, bSEPERATS2ETM5, bSEPERATS2ETM7;
            numeric rSEPERATS2ETM1, rSEPERATS2ETM2, rSEPERATS2ETM3, rSEPERATS2ETM4, rSEPERATS2ETM5, rSEPERATS2ETM7;
            numeric rQuadSEPERATS2ETM1, rQuadSEPERATS2ETM2, rQuadSEPERATS2ETM3, rQuadSEPERATS2ETM4, rQuadSEPERATS2ETM5, rQuadSEPERATS2ETM7;
            numeric syxSEPERATS2ETM1, syxSEPERATS2ETM2, syxSEPERATS2ETM3, syxSEPERATS2ETM4, syxSEPERATS2ETM5, syxSEPERATS2ETM7;
            numeric bStandSEPERATS2ETM1, bStandSEPERATS2ETM2, bStandSEPERATS2ETM3, bStandSEPERATS2ETM4, bStandSEPERATS2ETM5, bStandSEPERATS2ETM7;
            numeric aStandSEPERATS2ETM1, aStandSEPERATS2ETM2, aStandSEPERATS2ETM3, aStandSEPERATS2ETM4, aStandSEPERATS2ETM5, aStandSEPERATS2ETM7;
    
            numeric xSEPERATS2ETM1 = 0;
            numeric xSEPERATS2ETM2 = 0;
            numeric xSEPERATS2ETM3 = 0;
            numeric xSEPERATS2ETM4 = 0;
            numeric xSEPERATS2ETM5 = 0;
            numeric xSEPERATS2ETM7 = 0;
    
            numeric xQuadSEPERATS2ETM1 = 0;
            numeric xQuadSEPERATS2ETM2 = 0;
            numeric xQuadSEPERATS2ETM3 = 0;
            numeric xQuadSEPERATS2ETM4 = 0;
            numeric xQuadSEPERATS2ETM5 = 0;
            numeric xQuadSEPERATS2ETM7 = 0;
    
            numeric ySEPERATS2ETM1 = 0;
            numeric ySEPERATS2ETM2 = 0;
            numeric ySEPERATS2ETM3 = 0;
            numeric ySEPERATS2ETM4 = 0;
            numeric ySEPERATS2ETM5 = 0;
            numeric ySEPERATS2ETM7 = 0;
    
            numeric yQuadSEPERATS2ETM1 = 0;
            numeric yQuadSEPERATS2ETM2 = 0;
            numeric yQuadSEPERATS2ETM3 = 0;
            numeric yQuadSEPERATS2ETM4 = 0;
            numeric yQuadSEPERATS2ETM5 = 0;
            numeric yQuadSEPERATS2ETM7 = 0;
    
            numeric xySEPERATS2ETM1 = 0;
            numeric xySEPERATS2ETM2 = 0;
            numeric xySEPERATS2ETM3 = 0;
            numeric xySEPERATS2ETM4 = 0;
            numeric xySEPERATS2ETM5 = 0;
            numeric xySEPERATS2ETM7 = 0;
    
            numeric xxAritQuadSEPERATS2ETM1 = 0;
            numeric xxAritQuadSEPERATS2ETM2 = 0;
            numeric xxAritQuadSEPERATS2ETM3 = 0;
            numeric xxAritQuadSEPERATS2ETM4 = 0;
            numeric xxAritQuadSEPERATS2ETM5 = 0;
            numeric xxAritQuadSEPERATS2ETM7 = 0;
    
            numeric yyAritQuadSEPERATS2ETM1 = 0;
            numeric yyAritQuadSEPERATS2ETM2 = 0;
            numeric yyAritQuadSEPERATS2ETM3 = 0;
            numeric yyAritQuadSEPERATS2ETM4 = 0;
            numeric yyAritQuadSEPERATS2ETM5 = 0;
            numeric yyAritQuadSEPERATS2ETM7 = 0;
    
            numeric qXYSEPERATS2ETM1 = 0;
            numeric qXYSEPERATS2ETM2 = 0;
            numeric qXYSEPERATS2ETM3 = 0;
            numeric qXYSEPERATS2ETM4 = 0;
            numeric qXYSEPERATS2ETM5 = 0;
            numeric qXYSEPERATS2ETM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS2ETM1 = xSEPERATS2ETM1 + pifSEPERATS1S2TM1arrayRAND[m];
                xSEPERATS2ETM2 = xSEPERATS2ETM2 + pifSEPERATS1S2TM2arrayRAND[m];
                xSEPERATS2ETM3 = xSEPERATS2ETM3 + pifSEPERATS1S2TM3arrayRAND[m];
                xSEPERATS2ETM4 = xSEPERATS2ETM4 + pifSEPERATS1S2TM4arrayRAND[m];
                xSEPERATS2ETM5 = xSEPERATS2ETM5 + pifSEPERATS1S2TM5arrayRAND[m];
                xSEPERATS2ETM7 = xSEPERATS2ETM7 + pifSEPERATS1S2TM7arrayRAND[m];
    
                xQuadSEPERATS2ETM1 = (xQuadSEPERATS2ETM1 + (pifSEPERATS1S2TM1arrayRAND[m]^2));
                xQuadSEPERATS2ETM2 = (xQuadSEPERATS2ETM2 + (pifSEPERATS1S2TM2arrayRAND[m]^2));
                xQuadSEPERATS2ETM3 = (xQuadSEPERATS2ETM3 + (pifSEPERATS1S2TM3arrayRAND[m]^2));
                xQuadSEPERATS2ETM4 = (xQuadSEPERATS2ETM4 + (pifSEPERATS1S2TM4arrayRAND[m]^2));
                xQuadSEPERATS2ETM5 = (xQuadSEPERATS2ETM5 + (pifSEPERATS1S2TM5arrayRAND[m]^2));
                xQuadSEPERATS2ETM7 = (xQuadSEPERATS2ETM7 + (pifSEPERATS1S2TM7arrayRAND[m]^2));
    
                ySEPERATS2ETM1 = ySEPERATS2ETM1 + pifSEPERATS2slaveETM1arrayRAND[m];
                ySEPERATS2ETM2 = ySEPERATS2ETM2 + pifSEPERATS2slaveETM2arrayRAND[m];
                ySEPERATS2ETM3 = ySEPERATS2ETM3 + pifSEPERATS2slaveETM3arrayRAND[m];
                ySEPERATS2ETM4 = ySEPERATS2ETM4 + pifSEPERATS2slaveETM4arrayRAND[m];
                ySEPERATS2ETM5 = ySEPERATS2ETM5 + pifSEPERATS2slaveETM5arrayRAND[m];
                ySEPERATS2ETM7 = ySEPERATS2ETM7 + pifSEPERATS2slaveETM7arrayRAND[m];
                
                yQuadSEPERATS2ETM1 = (yQuadSEPERATS2ETM1 + (pifSEPERATS2slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS2ETM2 = (yQuadSEPERATS2ETM2 + (pifSEPERATS2slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS2ETM3 = (yQuadSEPERATS2ETM3 + (pifSEPERATS2slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS2ETM4 = (yQuadSEPERATS2ETM4 + (pifSEPERATS2slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS2ETM5 = (yQuadSEPERATS2ETM5 + (pifSEPERATS2slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS2ETM7 = (yQuadSEPERATS2ETM7 + (pifSEPERATS2slaveETM7arrayRAND[m]^2));
    
                xySEPERATS2ETM1 = (xySEPERATS2ETM1 + (pifSEPERATS1S2TM1arrayRAND[m] * pifSEPERATS2slaveETM1arrayRAND[m]));
                xySEPERATS2ETM2 = (xySEPERATS2ETM2 + (pifSEPERATS1S2TM2arrayRAND[m] * pifSEPERATS2slaveETM2arrayRAND[m]));
                xySEPERATS2ETM3 = (xySEPERATS2ETM3 + (pifSEPERATS1S2TM3arrayRAND[m] * pifSEPERATS2slaveETM3arrayRAND[m]));
                xySEPERATS2ETM4 = (xySEPERATS2ETM4 + (pifSEPERATS1S2TM4arrayRAND[m] * pifSEPERATS2slaveETM4arrayRAND[m]));
                xySEPERATS2ETM5 = (xySEPERATS2ETM5 + (pifSEPERATS1S2TM5arrayRAND[m] * pifSEPERATS2slaveETM5arrayRAND[m]));
                xySEPERATS2ETM7 = (xySEPERATS2ETM7 + (pifSEPERATS1S2TM7arrayRAND[m] * pifSEPERATS2slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS2ETM1 = xSEPERATS2ETM1 / minPifVAL;
            xAritSEPERATS2ETM2 = xSEPERATS2ETM2 / minPifVAL;
            xAritSEPERATS2ETM3 = xSEPERATS2ETM3 / minPifVAL;
            xAritSEPERATS2ETM4 = xSEPERATS2ETM4 / minPifVAL;
            xAritSEPERATS2ETM5 = xSEPERATS2ETM5 / minPifVAL;
            xAritSEPERATS2ETM7 = xSEPERATS2ETM7 / minPifVAL;
    
            yAritSEPERATS2ETM1 = ySEPERATS2ETM1 / minPifVAL;
            yAritSEPERATS2ETM2 = ySEPERATS2ETM2 / minPifVAL;
            yAritSEPERATS2ETM3 = ySEPERATS2ETM3 / minPifVAL;
            yAritSEPERATS2ETM4 = ySEPERATS2ETM4 / minPifVAL;
            yAritSEPERATS2ETM5 = ySEPERATS2ETM5 / minPifVAL;
            yAritSEPERATS2ETM7 = ySEPERATS2ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2ETM1 = (xxAritQuadSEPERATS2ETM1 + ((pifSEPERATS1S2TM1arrayRAND[n] - xAritSEPERATS2ETM1)^2));
                xxAritQuadSEPERATS2ETM2 = (xxAritQuadSEPERATS2ETM2 + ((pifSEPERATS1S2TM2arrayRAND[n] - xAritSEPERATS2ETM2)^2));
                xxAritQuadSEPERATS2ETM3 = (xxAritQuadSEPERATS2ETM3 + ((pifSEPERATS1S2TM3arrayRAND[n] - xAritSEPERATS2ETM3)^2));
                xxAritQuadSEPERATS2ETM4 = (xxAritQuadSEPERATS2ETM4 + ((pifSEPERATS1S2TM4arrayRAND[n] - xAritSEPERATS2ETM4)^2));
                xxAritQuadSEPERATS2ETM5 = (xxAritQuadSEPERATS2ETM5 + ((pifSEPERATS1S2TM5arrayRAND[n] - xAritSEPERATS2ETM5)^2));
                xxAritQuadSEPERATS2ETM7 = (xxAritQuadSEPERATS2ETM7 + ((pifSEPERATS1S2TM7arrayRAND[n] - xAritSEPERATS2ETM7)^2));
    
                yyAritQuadSEPERATS2ETM1 = (yyAritQuadSEPERATS2ETM1 + ((pifSEPERATS2slaveETM1arrayRAND[n] - yAritSEPERATS2ETM1)^2));
                yyAritQuadSEPERATS2ETM2 = (yyAritQuadSEPERATS2ETM2 + ((pifSEPERATS2slaveETM2arrayRAND[n] - yAritSEPERATS2ETM2)^2));
                yyAritQuadSEPERATS2ETM3 = (yyAritQuadSEPERATS2ETM3 + ((pifSEPERATS2slaveETM3arrayRAND[n] - yAritSEPERATS2ETM3)^2));
                yyAritQuadSEPERATS2ETM4 = (yyAritQuadSEPERATS2ETM4 + ((pifSEPERATS2slaveETM4arrayRAND[n] - yAritSEPERATS2ETM4)^2));
                yyAritQuadSEPERATS2ETM5 = (yyAritQuadSEPERATS2ETM5 + ((pifSEPERATS2slaveETM5arrayRAND[n] - yAritSEPERATS2ETM5)^2));
                yyAritQuadSEPERATS2ETM7 = (yyAritQuadSEPERATS2ETM7 + ((pifSEPERATS2slaveETM7arrayRAND[n] - yAritSEPERATS2ETM7)^2));
    
                qXYSEPERATS2ETM1 = (qXYSEPERATS2ETM1 + ((pifSEPERATS1S2TM1arrayRAND[n] - xAritSEPERATS2ETM1) * (pifSEPERATS2slaveETM1arrayRAND[n] - yAritSEPERATS2ETM1)));
                qXYSEPERATS2ETM2 = (qXYSEPERATS2ETM2 + ((pifSEPERATS1S2TM2arrayRAND[n] - xAritSEPERATS2ETM2) * (pifSEPERATS2slaveETM2arrayRAND[n] - yAritSEPERATS2ETM2)));
                qXYSEPERATS2ETM3 = (qXYSEPERATS2ETM3 + ((pifSEPERATS1S2TM3arrayRAND[n] - xAritSEPERATS2ETM3) * (pifSEPERATS2slaveETM3arrayRAND[n] - yAritSEPERATS2ETM3)));
                qXYSEPERATS2ETM4 = (qXYSEPERATS2ETM4 + ((pifSEPERATS1S2TM4arrayRAND[n] - xAritSEPERATS2ETM4) * (pifSEPERATS2slaveETM4arrayRAND[n] - yAritSEPERATS2ETM4)));
                qXYSEPERATS2ETM5 = (qXYSEPERATS2ETM5 + ((pifSEPERATS1S2TM5arrayRAND[n] - xAritSEPERATS2ETM5) * (pifSEPERATS2slaveETM5arrayRAND[n] - yAritSEPERATS2ETM5)));
                qXYSEPERATS2ETM7 = (qXYSEPERATS2ETM7 + ((pifSEPERATS1S2TM7arrayRAND[n] - xAritSEPERATS2ETM7) * (pifSEPERATS2slaveETM7arrayRAND[n] - yAritSEPERATS2ETM7)));
            }
        
            aSEPERATS2ETM1 = (((xQuadSEPERATS2ETM1 * ySEPERATS2ETM1) - (xSEPERATS2ETM1 * xySEPERATS2ETM1)) / ((minPifVAL * xQuadSEPERATS2ETM1) - (xSEPERATS2ETM1^2)));
            aSEPERATS2ETM2 = (((xQuadSEPERATS2ETM2 * ySEPERATS2ETM2) - (xSEPERATS2ETM2 * xySEPERATS2ETM2)) / ((minPifVAL * xQuadSEPERATS2ETM2) - (xSEPERATS2ETM2^2)));
            aSEPERATS2ETM3 = (((xQuadSEPERATS2ETM3 * ySEPERATS2ETM3) - (xSEPERATS2ETM3 * xySEPERATS2ETM3)) / ((minPifVAL * xQuadSEPERATS2ETM3) - (xSEPERATS2ETM3^2)));
            aSEPERATS2ETM4 = (((xQuadSEPERATS2ETM4 * ySEPERATS2ETM4) - (xSEPERATS2ETM4 * xySEPERATS2ETM4)) / ((minPifVAL * xQuadSEPERATS2ETM4) - (xSEPERATS2ETM4^2)));
            aSEPERATS2ETM5 = (((xQuadSEPERATS2ETM5 * ySEPERATS2ETM5) - (xSEPERATS2ETM5 * xySEPERATS2ETM5)) / ((minPifVAL * xQuadSEPERATS2ETM5) - (xSEPERATS2ETM5^2)));
            aSEPERATS2ETM7 = (((xQuadSEPERATS2ETM7 * ySEPERATS2ETM7) - (xSEPERATS2ETM7 * xySEPERATS2ETM7)) / ((minPifVAL * xQuadSEPERATS2ETM7) - (xSEPERATS2ETM7^2)));
            
            bSEPERATS2ETM1 = qXYSEPERATS2ETM1 / xxAritQuadSEPERATS2ETM1;
            bSEPERATS2ETM2 = qXYSEPERATS2ETM2 / xxAritQuadSEPERATS2ETM2;
            bSEPERATS2ETM3 = qXYSEPERATS2ETM3 / xxAritQuadSEPERATS2ETM3;
            bSEPERATS2ETM4 = qXYSEPERATS2ETM4 / xxAritQuadSEPERATS2ETM4;
            bSEPERATS2ETM5 = qXYSEPERATS2ETM5 / xxAritQuadSEPERATS2ETM5;
            bSEPERATS2ETM7 = qXYSEPERATS2ETM7 / xxAritQuadSEPERATS2ETM7;
    
            rSEPERATS2ETM1 = (qXYSEPERATS2ETM1 / ((xxAritQuadSEPERATS2ETM1 * yyAritQuadSEPERATS2ETM1)^0.5));
            rSEPERATS2ETM2 = (qXYSEPERATS2ETM2 / ((xxAritQuadSEPERATS2ETM2 * yyAritQuadSEPERATS2ETM2)^0.5));
            rSEPERATS2ETM3 = (qXYSEPERATS2ETM3 / ((xxAritQuadSEPERATS2ETM3 * yyAritQuadSEPERATS2ETM3)^0.5));
            rSEPERATS2ETM4 = (qXYSEPERATS2ETM4 / ((xxAritQuadSEPERATS2ETM4 * yyAritQuadSEPERATS2ETM4)^0.5));
            rSEPERATS2ETM5 = (qXYSEPERATS2ETM5 / ((xxAritQuadSEPERATS2ETM5 * yyAritQuadSEPERATS2ETM5)^0.5));
            rSEPERATS2ETM7 = (qXYSEPERATS2ETM7 / ((xxAritQuadSEPERATS2ETM7 * yyAritQuadSEPERATS2ETM7)^0.5));
    
            rQuadSEPERATS2ETM1 = ((rSEPERATS2ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2ETM2 = ((rSEPERATS2ETM2^2) * 100);
            rQuadSEPERATS2ETM3 = ((rSEPERATS2ETM3^2) * 100);
            rQuadSEPERATS2ETM4 = ((rSEPERATS2ETM4^2) * 100);
            rQuadSEPERATS2ETM5 = ((rSEPERATS2ETM5^2) * 100);
            rQuadSEPERATS2ETM7 = ((rSEPERATS2ETM7^2) * 100);
        
            syxSEPERATS2ETM1 = (((yyAritQuadSEPERATS2ETM1 - ((qXYSEPERATS2ETM1^2) / xxAritQuadSEPERATS2ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM2 = (((yyAritQuadSEPERATS2ETM2 - ((qXYSEPERATS2ETM2^2) / xxAritQuadSEPERATS2ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM3 = (((yyAritQuadSEPERATS2ETM3 - ((qXYSEPERATS2ETM3^2) / xxAritQuadSEPERATS2ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM4 = (((yyAritQuadSEPERATS2ETM4 - ((qXYSEPERATS2ETM4^2) / xxAritQuadSEPERATS2ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM5 = (((yyAritQuadSEPERATS2ETM5 - ((qXYSEPERATS2ETM5^2) / xxAritQuadSEPERATS2ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM7 = (((yyAritQuadSEPERATS2ETM7 - ((qXYSEPERATS2ETM7^2) / xxAritQuadSEPERATS2ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2ETM1 = (((syxSEPERATS2ETM1^2) / xxAritQuadSEPERATS2ETM1)^0.5);
            bStandSEPERATS2ETM2 = (((syxSEPERATS2ETM2^2) / xxAritQuadSEPERATS2ETM2)^0.5);
            bStandSEPERATS2ETM3 = (((syxSEPERATS2ETM3^2) / xxAritQuadSEPERATS2ETM3)^0.5);
            bStandSEPERATS2ETM4 = (((syxSEPERATS2ETM4^2) / xxAritQuadSEPERATS2ETM4)^0.5);
            bStandSEPERATS2ETM5 = (((syxSEPERATS2ETM5^2) / xxAritQuadSEPERATS2ETM5)^0.5);
            bStandSEPERATS2ETM7 = (((syxSEPERATS2ETM7^2) / xxAritQuadSEPERATS2ETM7)^0.5);
    
            aStandSEPERATS2ETM1 = (bStandSEPERATS2ETM1 * ((xQuadSEPERATS2ETM1 / minPifVAL)^0.5));
            aStandSEPERATS2ETM2 = (bStandSEPERATS2ETM2 * ((xQuadSEPERATS2ETM2 / minPifVAL)^0.5));
            aStandSEPERATS2ETM3 = (bStandSEPERATS2ETM3 * ((xQuadSEPERATS2ETM3 / minPifVAL)^0.5));
            aStandSEPERATS2ETM4 = (bStandSEPERATS2ETM4 * ((xQuadSEPERATS2ETM4 / minPifVAL)^0.5));
            aStandSEPERATS2ETM5 = (bStandSEPERATS2ETM5 * ((xQuadSEPERATS2ETM5 / minPifVAL)^0.5));
            aStandSEPERATS2ETM7 = (bStandSEPERATS2ETM7 * ((xQuadSEPERATS2ETM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM1, bSEPERATS2ETM1, rSEPERATS2ETM1, rQuadSEPERATS2ETM1, aStandSEPERATS2ETM1, bStandSEPERATS2ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM2, bSEPERATS2ETM2, rSEPERATS2ETM2, rQuadSEPERATS2ETM2, aStandSEPERATS2ETM2, bStandSEPERATS2ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM3, bSEPERATS2ETM3, rSEPERATS2ETM3, rQuadSEPERATS2ETM3, aStandSEPERATS2ETM3, bStandSEPERATS2ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM4, bSEPERATS2ETM4, rSEPERATS2ETM4, rQuadSEPERATS2ETM4, aStandSEPERATS2ETM4, bStandSEPERATS2ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM5, bSEPERATS2ETM5, rSEPERATS2ETM5, rQuadSEPERATS2ETM5, aStandSEPERATS2ETM5, bStandSEPERATS2ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS2ETM7, bSEPERATS2ETM7, rSEPERATS2ETM7, rQuadSEPERATS2ETM7, aStandSEPERATS2ETM7, bStandSEPERATS2ETM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS2slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS2slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS2slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS2slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS2slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS2slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS2slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT2ETM1[i,j] = (aSEPERATS2ETM1 + (bSEPERATS2ETM1 * REFS2ETM1[i,j]));
                    OUT2ETM2[i,j] = (aSEPERATS2ETM2 + (bSEPERATS2ETM2 * REFS2ETM2[i,j]));
                    OUT2ETM3[i,j] = (aSEPERATS2ETM3 + (bSEPERATS2ETM3 * REFS2ETM3[i,j]));
                    OUT2ETM4[i,j] = (aSEPERATS2ETM4 + (bSEPERATS2ETM4 * REFS2ETM4[i,j]));
                    OUT2ETM5[i,j] = (aSEPERATS2ETM5 + (bSEPERATS2ETM5 * REFS2ETM5[i,j]));
                    OUT2ETM7[i,j] = (aSEPERATS2ETM7 + (bSEPERATS2ETM7 * REFS2ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2ETM1);
        	CreatePyramid(OUT2ETM2);
        	CreatePyramid(OUT2ETM3);
        	CreatePyramid(OUT2ETM4);
        	CreatePyramid(OUT2ETM5);
        	CreatePyramid(OUT2ETM7);
        
        	CreateHistogram(OUT2ETM1);
        	CreateHistogram(OUT2ETM2);
        	CreateHistogram(OUT2ETM3);
        	CreateHistogram(OUT2ETM4);
        	CreateHistogram(OUT2ETM5);
        	CreateHistogram(OUT2ETM7);
            CloseRaster(REFS2ETM1);
            CloseRaster(REFS2ETM2);
            CloseRaster(REFS2ETM3);
            CloseRaster(REFS2ETM4);
            CloseRaster(REFS2ETM5);
            CloseRaster(REFS2ETM7);
    
            CloseRaster(OUT2ETM1);
            CloseRaster(OUT2ETM2);
            CloseRaster(OUT2ETM3);
            CloseRaster(OUT2ETM4);
            CloseRaster(OUT2ETM5);
            CloseRaster(OUT2ETM7);
        
        	printf("Scene 2 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors2 == 6 )
            {
            numeric xAritSEPERATS2TM1, xAritSEPERATS2TM2, xAritSEPERATS2TM3, xAritSEPERATS2TM4, xAritSEPERATS2TM5, xAritSEPERATS2TM7;
            numeric yAritSEPERATS2TM1, yAritSEPERATS2TM2, yAritSEPERATS2TM3, yAritSEPERATS2TM4, yAritSEPERATS2TM5, yAritSEPERATS2TM7;
    
            numeric aSEPERATS2TM1, aSEPERATS2TM2, aSEPERATS2TM3, aSEPERATS2TM4, aSEPERATS2TM5, aSEPERATS2TM7;
            numeric bSEPERATS2TM1, bSEPERATS2TM2, bSEPERATS2TM3, bSEPERATS2TM4, bSEPERATS2TM5, bSEPERATS2TM7;
            numeric rSEPERATS2TM1, rSEPERATS2TM2, rSEPERATS2TM3, rSEPERATS2TM4, rSEPERATS2TM5, rSEPERATS2TM7;
            numeric rQuadSEPERATS2TM1, rQuadSEPERATS2TM2, rQuadSEPERATS2TM3, rQuadSEPERATS2TM4, rQuadSEPERATS2TM5, rQuadSEPERATS2TM7;
            numeric syxSEPERATS2TM1, syxSEPERATS2TM2, syxSEPERATS2TM3, syxSEPERATS2TM4, syxSEPERATS2TM5, syxSEPERATS2TM7;
            numeric bStandSEPERATS2TM1, bStandSEPERATS2TM2, bStandSEPERATS2TM3, bStandSEPERATS2TM4, bStandSEPERATS2TM5, bStandSEPERATS2TM7;
            numeric aStandSEPERATS2TM1, aStandSEPERATS2TM2, aStandSEPERATS2TM3, aStandSEPERATS2TM4, aStandSEPERATS2TM5, aStandSEPERATS2TM7;
    
            numeric xSEPERATS2TM1 = 0;
            numeric xSEPERATS2TM2 = 0;
            numeric xSEPERATS2TM3 = 0;
            numeric xSEPERATS2TM4 = 0;
            numeric xSEPERATS2TM5 = 0;
            numeric xSEPERATS2TM7 = 0;
    
            numeric xQuadSEPERATS2TM1 = 0;
            numeric xQuadSEPERATS2TM2 = 0;
            numeric xQuadSEPERATS2TM3 = 0;
            numeric xQuadSEPERATS2TM4 = 0;
            numeric xQuadSEPERATS2TM5 = 0;
            numeric xQuadSEPERATS2TM7 = 0;
    
            numeric ySEPERATS2TM1 = 0;
            numeric ySEPERATS2TM2 = 0;
            numeric ySEPERATS2TM3 = 0;
            numeric ySEPERATS2TM4 = 0;
            numeric ySEPERATS2TM5 = 0;
            numeric ySEPERATS2TM7 = 0;
    
            numeric yQuadSEPERATS2TM1 = 0;
            numeric yQuadSEPERATS2TM2 = 0;
            numeric yQuadSEPERATS2TM3 = 0;
            numeric yQuadSEPERATS2TM4 = 0;
            numeric yQuadSEPERATS2TM5 = 0;
            numeric yQuadSEPERATS2TM7 = 0;
    
            numeric xySEPERATS2TM1 = 0;
            numeric xySEPERATS2TM2 = 0;
            numeric xySEPERATS2TM3 = 0;
            numeric xySEPERATS2TM4 = 0;
            numeric xySEPERATS2TM5 = 0;
            numeric xySEPERATS2TM7 = 0;
    
            numeric xxAritQuadSEPERATS2TM1 = 0;
            numeric xxAritQuadSEPERATS2TM2 = 0;
            numeric xxAritQuadSEPERATS2TM3 = 0;
            numeric xxAritQuadSEPERATS2TM4 = 0;
            numeric xxAritQuadSEPERATS2TM5 = 0;
            numeric xxAritQuadSEPERATS2TM7 = 0;
    
            numeric yyAritQuadSEPERATS2TM1 = 0;
            numeric yyAritQuadSEPERATS2TM2 = 0;
            numeric yyAritQuadSEPERATS2TM3 = 0;
            numeric yyAritQuadSEPERATS2TM4 = 0;
            numeric yyAritQuadSEPERATS2TM5 = 0;
            numeric yyAritQuadSEPERATS2TM7 = 0;
    
            numeric qXYSEPERATS2TM1 = 0;
            numeric qXYSEPERATS2TM2 = 0;
            numeric qXYSEPERATS2TM3 = 0;
            numeric qXYSEPERATS2TM4 = 0;
            numeric qXYSEPERATS2TM5 = 0;
            numeric qXYSEPERATS2TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS2TM1 = xSEPERATS2TM1 + pifSEPERATS1S2TM1arrayRAND[m];
                xSEPERATS2TM2 = xSEPERATS2TM2 + pifSEPERATS1S2TM2arrayRAND[m];
                xSEPERATS2TM3 = xSEPERATS2TM3 + pifSEPERATS1S2TM3arrayRAND[m];
                xSEPERATS2TM4 = xSEPERATS2TM4 + pifSEPERATS1S2TM4arrayRAND[m];
                xSEPERATS2TM5 = xSEPERATS2TM5 + pifSEPERATS1S2TM5arrayRAND[m];
                xSEPERATS2TM7 = xSEPERATS2TM7 + pifSEPERATS1S2TM7arrayRAND[m];
    
                xQuadSEPERATS2TM1 = (xQuadSEPERATS2TM1 + (pifSEPERATS1S2TM1arrayRAND[m]^2));
                xQuadSEPERATS2TM2 = (xQuadSEPERATS2TM2 + (pifSEPERATS1S2TM2arrayRAND[m]^2));
                xQuadSEPERATS2TM3 = (xQuadSEPERATS2TM3 + (pifSEPERATS1S2TM3arrayRAND[m]^2));
                xQuadSEPERATS2TM4 = (xQuadSEPERATS2TM4 + (pifSEPERATS1S2TM4arrayRAND[m]^2));
                xQuadSEPERATS2TM5 = (xQuadSEPERATS2TM5 + (pifSEPERATS1S2TM5arrayRAND[m]^2));
                xQuadSEPERATS2TM7 = (xQuadSEPERATS2TM7 + (pifSEPERATS1S2TM7arrayRAND[m]^2));
    
                ySEPERATS2TM1 = ySEPERATS2TM1 + pifSEPERATS2slaveTM1arrayRAND[m];
                ySEPERATS2TM2 = ySEPERATS2TM2 + pifSEPERATS2slaveTM2arrayRAND[m];
                ySEPERATS2TM3 = ySEPERATS2TM3 + pifSEPERATS2slaveTM3arrayRAND[m];
                ySEPERATS2TM4 = ySEPERATS2TM4 + pifSEPERATS2slaveTM4arrayRAND[m];
                ySEPERATS2TM5 = ySEPERATS2TM5 + pifSEPERATS2slaveTM5arrayRAND[m];
                ySEPERATS2TM7 = ySEPERATS2TM7 + pifSEPERATS2slaveTM7arrayRAND[m];
                
                yQuadSEPERATS2TM1 = (yQuadSEPERATS2TM1 + (pifSEPERATS2slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS2TM2 = (yQuadSEPERATS2TM2 + (pifSEPERATS2slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS2TM3 = (yQuadSEPERATS2TM3 + (pifSEPERATS2slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS2TM4 = (yQuadSEPERATS2TM4 + (pifSEPERATS2slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS2TM5 = (yQuadSEPERATS2TM5 + (pifSEPERATS2slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS2TM7 = (yQuadSEPERATS2TM7 + (pifSEPERATS2slaveTM7arrayRAND[m]^2));
    
                xySEPERATS2TM1 = (xySEPERATS2TM1 + (pifSEPERATS1S2TM1arrayRAND[m] * pifSEPERATS2slaveTM1arrayRAND[m]));
                xySEPERATS2TM2 = (xySEPERATS2TM2 + (pifSEPERATS1S2TM2arrayRAND[m] * pifSEPERATS2slaveTM2arrayRAND[m]));
                xySEPERATS2TM3 = (xySEPERATS2TM3 + (pifSEPERATS1S2TM3arrayRAND[m] * pifSEPERATS2slaveTM3arrayRAND[m]));
                xySEPERATS2TM4 = (xySEPERATS2TM4 + (pifSEPERATS1S2TM4arrayRAND[m] * pifSEPERATS2slaveTM4arrayRAND[m]));
                xySEPERATS2TM5 = (xySEPERATS2TM5 + (pifSEPERATS1S2TM5arrayRAND[m] * pifSEPERATS2slaveTM5arrayRAND[m]));
                xySEPERATS2TM7 = (xySEPERATS2TM7 + (pifSEPERATS1S2TM7arrayRAND[m] * pifSEPERATS2slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS2TM1 = xSEPERATS2TM1 / minPifVAL;
            xAritSEPERATS2TM2 = xSEPERATS2TM2 / minPifVAL;
            xAritSEPERATS2TM3 = xSEPERATS2TM3 / minPifVAL;
            xAritSEPERATS2TM4 = xSEPERATS2TM4 / minPifVAL;
            xAritSEPERATS2TM5 = xSEPERATS2TM5 / minPifVAL;
            xAritSEPERATS2TM7 = xSEPERATS2TM7 / minPifVAL;
    
            yAritSEPERATS2TM1 = ySEPERATS2TM1 / minPifVAL;
            yAritSEPERATS2TM2 = ySEPERATS2TM2 / minPifVAL;
            yAritSEPERATS2TM3 = ySEPERATS2TM3 / minPifVAL;
            yAritSEPERATS2TM4 = ySEPERATS2TM4 / minPifVAL;
            yAritSEPERATS2TM5 = ySEPERATS2TM5 / minPifVAL;
            yAritSEPERATS2TM7 = ySEPERATS2TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2TM1 = (xxAritQuadSEPERATS2TM1 + ((pifSEPERATS1S2TM1arrayRAND[n] - xAritSEPERATS2TM1)^2));
                xxAritQuadSEPERATS2TM2 = (xxAritQuadSEPERATS2TM2 + ((pifSEPERATS1S2TM2arrayRAND[n] - xAritSEPERATS2TM2)^2));
                xxAritQuadSEPERATS2TM3 = (xxAritQuadSEPERATS2TM3 + ((pifSEPERATS1S2TM3arrayRAND[n] - xAritSEPERATS2TM3)^2));
                xxAritQuadSEPERATS2TM4 = (xxAritQuadSEPERATS2TM4 + ((pifSEPERATS1S2TM4arrayRAND[n] - xAritSEPERATS2TM4)^2));
                xxAritQuadSEPERATS2TM5 = (xxAritQuadSEPERATS2TM5 + ((pifSEPERATS1S2TM5arrayRAND[n] - xAritSEPERATS2TM5)^2));
                xxAritQuadSEPERATS2TM7 = (xxAritQuadSEPERATS2TM7 + ((pifSEPERATS1S2TM7arrayRAND[n] - xAritSEPERATS2TM7)^2));
    
                yyAritQuadSEPERATS2TM1 = (yyAritQuadSEPERATS2TM1 + ((pifSEPERATS2slaveTM1arrayRAND[n] - yAritSEPERATS2TM1)^2));
                yyAritQuadSEPERATS2TM2 = (yyAritQuadSEPERATS2TM2 + ((pifSEPERATS2slaveTM2arrayRAND[n] - yAritSEPERATS2TM2)^2));
                yyAritQuadSEPERATS2TM3 = (yyAritQuadSEPERATS2TM3 + ((pifSEPERATS2slaveTM3arrayRAND[n] - yAritSEPERATS2TM3)^2));
                yyAritQuadSEPERATS2TM4 = (yyAritQuadSEPERATS2TM4 + ((pifSEPERATS2slaveTM4arrayRAND[n] - yAritSEPERATS2TM4)^2));
                yyAritQuadSEPERATS2TM5 = (yyAritQuadSEPERATS2TM5 + ((pifSEPERATS2slaveTM5arrayRAND[n] - yAritSEPERATS2TM5)^2));
                yyAritQuadSEPERATS2TM7 = (yyAritQuadSEPERATS2TM7 + ((pifSEPERATS2slaveTM7arrayRAND[n] - yAritSEPERATS2TM7)^2));
    
                qXYSEPERATS2TM1 = (qXYSEPERATS2TM1 + ((pifSEPERATS1S2TM1arrayRAND[n] - xAritSEPERATS2TM1) * (pifSEPERATS2slaveTM1arrayRAND[n] - yAritSEPERATS2TM1)));
                qXYSEPERATS2TM2 = (qXYSEPERATS2TM2 + ((pifSEPERATS1S2TM2arrayRAND[n] - xAritSEPERATS2TM2) * (pifSEPERATS2slaveTM2arrayRAND[n] - yAritSEPERATS2TM2)));
                qXYSEPERATS2TM3 = (qXYSEPERATS2TM3 + ((pifSEPERATS1S2TM3arrayRAND[n] - xAritSEPERATS2TM3) * (pifSEPERATS2slaveTM3arrayRAND[n] - yAritSEPERATS2TM3)));
                qXYSEPERATS2TM4 = (qXYSEPERATS2TM4 + ((pifSEPERATS1S2TM4arrayRAND[n] - xAritSEPERATS2TM4) * (pifSEPERATS2slaveTM4arrayRAND[n] - yAritSEPERATS2TM4)));
                qXYSEPERATS2TM5 = (qXYSEPERATS2TM5 + ((pifSEPERATS1S2TM5arrayRAND[n] - xAritSEPERATS2TM5) * (pifSEPERATS2slaveTM5arrayRAND[n] - yAritSEPERATS2TM5)));
                qXYSEPERATS2TM7 = (qXYSEPERATS2TM7 + ((pifSEPERATS1S2TM7arrayRAND[n] - xAritSEPERATS2TM7) * (pifSEPERATS2slaveTM7arrayRAND[n] - yAritSEPERATS2TM7)));
            }
        
            aSEPERATS2TM1 = (((xQuadSEPERATS2TM1 * ySEPERATS2TM1) - (xSEPERATS2TM1 * xySEPERATS2TM1)) / ((minPifVAL * xQuadSEPERATS2TM1) - (xSEPERATS2TM1^2)));
            aSEPERATS2TM2 = (((xQuadSEPERATS2TM2 * ySEPERATS2TM2) - (xSEPERATS2TM2 * xySEPERATS2TM2)) / ((minPifVAL * xQuadSEPERATS2TM2) - (xSEPERATS2TM2^2)));
            aSEPERATS2TM3 = (((xQuadSEPERATS2TM3 * ySEPERATS2TM3) - (xSEPERATS2TM3 * xySEPERATS2TM3)) / ((minPifVAL * xQuadSEPERATS2TM3) - (xSEPERATS2TM3^2)));
            aSEPERATS2TM4 = (((xQuadSEPERATS2TM4 * ySEPERATS2TM4) - (xSEPERATS2TM4 * xySEPERATS2TM4)) / ((minPifVAL * xQuadSEPERATS2TM4) - (xSEPERATS2TM4^2)));
            aSEPERATS2TM5 = (((xQuadSEPERATS2TM5 * ySEPERATS2TM5) - (xSEPERATS2TM5 * xySEPERATS2TM5)) / ((minPifVAL * xQuadSEPERATS2TM5) - (xSEPERATS2TM5^2)));
            aSEPERATS2TM7 = (((xQuadSEPERATS2TM7 * ySEPERATS2TM7) - (xSEPERATS2TM7 * xySEPERATS2TM7)) / ((minPifVAL * xQuadSEPERATS2TM7) - (xSEPERATS2TM7^2)));
            
            bSEPERATS2TM1 = qXYSEPERATS2TM1 / xxAritQuadSEPERATS2TM1;
            bSEPERATS2TM2 = qXYSEPERATS2TM2 / xxAritQuadSEPERATS2TM2;
            bSEPERATS2TM3 = qXYSEPERATS2TM3 / xxAritQuadSEPERATS2TM3;
            bSEPERATS2TM4 = qXYSEPERATS2TM4 / xxAritQuadSEPERATS2TM4;
            bSEPERATS2TM5 = qXYSEPERATS2TM5 / xxAritQuadSEPERATS2TM5;
            bSEPERATS2TM7 = qXYSEPERATS2TM7 / xxAritQuadSEPERATS2TM7;
    
            rSEPERATS2TM1 = (qXYSEPERATS2TM1 / ((xxAritQuadSEPERATS2TM1 * yyAritQuadSEPERATS2TM1)^0.5));
            rSEPERATS2TM2 = (qXYSEPERATS2TM2 / ((xxAritQuadSEPERATS2TM2 * yyAritQuadSEPERATS2TM2)^0.5));
            rSEPERATS2TM3 = (qXYSEPERATS2TM3 / ((xxAritQuadSEPERATS2TM3 * yyAritQuadSEPERATS2TM3)^0.5));
            rSEPERATS2TM4 = (qXYSEPERATS2TM4 / ((xxAritQuadSEPERATS2TM4 * yyAritQuadSEPERATS2TM4)^0.5));
            rSEPERATS2TM5 = (qXYSEPERATS2TM5 / ((xxAritQuadSEPERATS2TM5 * yyAritQuadSEPERATS2TM5)^0.5));
            rSEPERATS2TM7 = (qXYSEPERATS2TM7 / ((xxAritQuadSEPERATS2TM7 * yyAritQuadSEPERATS2TM7)^0.5));
    
            rQuadSEPERATS2TM1 = ((rSEPERATS2TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2TM2 = ((rSEPERATS2TM2^2) * 100);
            rQuadSEPERATS2TM3 = ((rSEPERATS2TM3^2) * 100);
            rQuadSEPERATS2TM4 = ((rSEPERATS2TM4^2) * 100);
            rQuadSEPERATS2TM5 = ((rSEPERATS2TM5^2) * 100);
            rQuadSEPERATS2TM7 = ((rSEPERATS2TM7^2) * 100);
        
            syxSEPERATS2TM1 = (((yyAritQuadSEPERATS2TM1 - ((qXYSEPERATS2TM1^2) / xxAritQuadSEPERATS2TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM2 = (((yyAritQuadSEPERATS2TM2 - ((qXYSEPERATS2TM2^2) / xxAritQuadSEPERATS2TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM3 = (((yyAritQuadSEPERATS2TM3 - ((qXYSEPERATS2TM3^2) / xxAritQuadSEPERATS2TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM4 = (((yyAritQuadSEPERATS2TM4 - ((qXYSEPERATS2TM4^2) / xxAritQuadSEPERATS2TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM5 = (((yyAritQuadSEPERATS2TM5 - ((qXYSEPERATS2TM5^2) / xxAritQuadSEPERATS2TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM7 = (((yyAritQuadSEPERATS2TM7 - ((qXYSEPERATS2TM7^2) / xxAritQuadSEPERATS2TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2TM1 = (((syxSEPERATS2TM1^2) / xxAritQuadSEPERATS2TM1)^0.5);
            bStandSEPERATS2TM2 = (((syxSEPERATS2TM2^2) / xxAritQuadSEPERATS2TM2)^0.5);
            bStandSEPERATS2TM3 = (((syxSEPERATS2TM3^2) / xxAritQuadSEPERATS2TM3)^0.5);
            bStandSEPERATS2TM4 = (((syxSEPERATS2TM4^2) / xxAritQuadSEPERATS2TM4)^0.5);
            bStandSEPERATS2TM5 = (((syxSEPERATS2TM5^2) / xxAritQuadSEPERATS2TM5)^0.5);
            bStandSEPERATS2TM7 = (((syxSEPERATS2TM7^2) / xxAritQuadSEPERATS2TM7)^0.5);
    
            aStandSEPERATS2TM1 = (bStandSEPERATS2TM1 * ((xQuadSEPERATS2TM1 / minPifVAL)^0.5));
            aStandSEPERATS2TM2 = (bStandSEPERATS2TM2 * ((xQuadSEPERATS2TM2 / minPifVAL)^0.5));
            aStandSEPERATS2TM3 = (bStandSEPERATS2TM3 * ((xQuadSEPERATS2TM3 / minPifVAL)^0.5));
            aStandSEPERATS2TM4 = (bStandSEPERATS2TM4 * ((xQuadSEPERATS2TM4 / minPifVAL)^0.5));
            aStandSEPERATS2TM5 = (bStandSEPERATS2TM5 * ((xQuadSEPERATS2TM5 / minPifVAL)^0.5));
            aStandSEPERATS2TM7 = (bStandSEPERATS2TM7 * ((xQuadSEPERATS2TM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM1, bSEPERATS2TM1, rSEPERATS2TM1, rQuadSEPERATS2TM1, aStandSEPERATS2TM1, bStandSEPERATS2TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM2, bSEPERATS2TM2, rSEPERATS2TM2, rQuadSEPERATS2TM2, aStandSEPERATS2TM2, bStandSEPERATS2TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM3, bSEPERATS2TM3, rSEPERATS2TM3, rQuadSEPERATS2TM3, aStandSEPERATS2TM3, bStandSEPERATS2TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM4, bSEPERATS2TM4, rSEPERATS2TM4, rQuadSEPERATS2TM4, aStandSEPERATS2TM4, bStandSEPERATS2TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM5, bSEPERATS2TM5, rSEPERATS2TM5, rQuadSEPERATS2TM5, aStandSEPERATS2TM5, bStandSEPERATS2TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS2TM7, bSEPERATS2TM7, rSEPERATS2TM7, rQuadSEPERATS2TM7, aStandSEPERATS2TM7, bStandSEPERATS2TM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS2slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS2slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS2slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS2slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS2slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS2slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
      printf("%12f ", pifSEPERATS2slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS2slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT2TM1[i,j] = (aSEPERATS2TM1 + (bSEPERATS2TM1 * REFS2TM1[i,j]));
                    OUT2TM2[i,j] = (aSEPERATS2TM2 + (bSEPERATS2TM2 * REFS2TM2[i,j]));
                    OUT2TM3[i,j] = (aSEPERATS2TM3 + (bSEPERATS2TM3 * REFS2TM3[i,j]));
                    OUT2TM4[i,j] = (aSEPERATS2TM4 + (bSEPERATS2TM4 * REFS2TM4[i,j]));
                    OUT2TM5[i,j] = (aSEPERATS2TM5 + (bSEPERATS2TM5 * REFS2TM5[i,j]));
                    OUT2TM7[i,j] = (aSEPERATS2TM7 + (bSEPERATS2TM7 * REFS2TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2TM1);
        	CreatePyramid(OUT2TM2);
        	CreatePyramid(OUT2TM3);
        	CreatePyramid(OUT2TM4);
        	CreatePyramid(OUT2TM5);
        	CreatePyramid(OUT2TM7);
        
        	CreateHistogram(OUT2TM1);
        	CreateHistogram(OUT2TM2);
        	CreateHistogram(OUT2TM3);
        	CreateHistogram(OUT2TM4);
        	CreateHistogram(OUT2TM5);
        	CreateHistogram(OUT2TM7);
            CloseRaster(REFS2TM1);
            CloseRaster(REFS2TM2);
            CloseRaster(REFS2TM3);
            CloseRaster(REFS2TM4);
            CloseRaster(REFS2TM5);
            CloseRaster(REFS2TM7);
    
            CloseRaster(OUT2TM1);
            CloseRaster(OUT2TM2);
            CloseRaster(OUT2TM3);
            CloseRaster(OUT2TM4);
            CloseRaster(OUT2TM5);
            CloseRaster(OUT2TM7);
        
        	printf("Scene 2 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            { 
            numeric xAritSEPERATS2MSS1, xAritSEPERATS2MSS2, xAritSEPERATS2MSS4;
            numeric yAritSEPERATS2MSS1, yAritSEPERATS2MSS2, yAritSEPERATS2MSS4;
    
            numeric aSEPERATS2MSS1, aSEPERATS2MSS2, aSEPERATS2MSS4;
            numeric bSEPERATS2MSS1, bSEPERATS2MSS2, bSEPERATS2MSS4;
            numeric rSEPERATS2MSS1, rSEPERATS2MSS2, rSEPERATS2MSS4;
            numeric rQuadSEPERATS2MSS1, rQuadSEPERATS2MSS2, rQuadSEPERATS2MSS4;
            numeric syxSEPERATS2MSS1, syxSEPERATS2MSS2, syxSEPERATS2MSS4;
            numeric bStandSEPERATS2MSS1, bStandSEPERATS2MSS2, bStandSEPERATS2MSS4;
            numeric aStandSEPERATS2MSS1, aStandSEPERATS2MSS2, aStandSEPERATS2MSS4;
    
            numeric xSEPERATS2MSS1 = 0;
            numeric xSEPERATS2MSS2 = 0;
            numeric xSEPERATS2MSS4 = 0;
    
            numeric xQuadSEPERATS2MSS1 = 0;
            numeric xQuadSEPERATS2MSS2 = 0;
            numeric xQuadSEPERATS2MSS4 = 0;
    
            numeric ySEPERATS2MSS1 = 0;
            numeric ySEPERATS2MSS2 = 0;
            numeric ySEPERATS2MSS4 = 0;
    
            numeric yQuadSEPERATS2MSS1 = 0;
            numeric yQuadSEPERATS2MSS2 = 0;
            numeric yQuadSEPERATS2MSS4 = 0;
    
            numeric xySEPERATS2MSS1 = 0;
            numeric xySEPERATS2MSS2 = 0;
            numeric xySEPERATS2MSS4 = 0;
    
            numeric xxAritQuadSEPERATS2MSS1 = 0;
            numeric xxAritQuadSEPERATS2MSS2 = 0;
            numeric xxAritQuadSEPERATS2MSS4 = 0;
    
            numeric yyAritQuadSEPERATS2MSS1 = 0;
            numeric yyAritQuadSEPERATS2MSS2 = 0;
            numeric yyAritQuadSEPERATS2MSS4 = 0;
    
            numeric qXYSEPERATS2MSS1 = 0;
            numeric qXYSEPERATS2MSS2 = 0;
            numeric qXYSEPERATS2MSS4 = 0;
    
            for m = 1 to minPifVAL
            {		
                xSEPERATS2MSS1 = xSEPERATS2MSS1 + pifSEPERATS1S2TM2arrayRAND[m];
                xSEPERATS2MSS2 = xSEPERATS2MSS2 + pifSEPERATS1S2TM3arrayRAND[m];
                xSEPERATS2MSS4 = xSEPERATS2MSS4 + pifSEPERATS1S2TM4arrayRAND[m];
    
                xQuadSEPERATS2MSS1 = (xQuadSEPERATS2MSS1 + (pifSEPERATS1S2TM2arrayRAND[m]^2));
                xQuadSEPERATS2MSS2 = (xQuadSEPERATS2MSS2 + (pifSEPERATS1S2TM3arrayRAND[m]^2));
                xQuadSEPERATS2MSS4 = (xQuadSEPERATS2MSS4 + (pifSEPERATS1S2TM4arrayRAND[m]^2));
    
                ySEPERATS2MSS1 = ySEPERATS2MSS1 + pifSEPERATS2slaveMSS1arrayRAND[m];
                ySEPERATS2MSS2 = ySEPERATS2MSS2 + pifSEPERATS2slaveMSS2arrayRAND[m];
                ySEPERATS2MSS4 = ySEPERATS2MSS4 + pifSEPERATS2slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS2MSS1 = (yQuadSEPERATS2MSS1 + (pifSEPERATS2slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS2MSS2 = (yQuadSEPERATS2MSS2 + (pifSEPERATS2slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS2MSS4 = (yQuadSEPERATS2MSS4 + (pifSEPERATS2slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS2MSS1 = (xySEPERATS2MSS1 + (pifSEPERATS1S2TM2arrayRAND[m] * pifSEPERATS2slaveMSS1arrayRAND[m]));
                xySEPERATS2MSS2 = (xySEPERATS2MSS2 + (pifSEPERATS1S2TM3arrayRAND[m] * pifSEPERATS2slaveMSS2arrayRAND[m]));
                xySEPERATS2MSS4 = (xySEPERATS2MSS4 + (pifSEPERATS1S2TM4arrayRAND[m] * pifSEPERATS2slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS2MSS1 = xSEPERATS2MSS1 / minPifVAL;
            xAritSEPERATS2MSS2 = xSEPERATS2MSS2 / minPifVAL;
            xAritSEPERATS2MSS4 = xSEPERATS2MSS4 / minPifVAL;
    
            yAritSEPERATS2MSS1 = ySEPERATS2MSS1 / minPifVAL;
            yAritSEPERATS2MSS2 = ySEPERATS2MSS2 / minPifVAL;
            yAritSEPERATS2MSS4 = ySEPERATS2MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2MSS1 = (xxAritQuadSEPERATS2MSS1 + ((pifSEPERATS1S2TM2arrayRAND[n] - xAritSEPERATS2MSS1)^2));
                xxAritQuadSEPERATS2MSS2 = (xxAritQuadSEPERATS2MSS2 + ((pifSEPERATS1S2TM3arrayRAND[n] - xAritSEPERATS2MSS2)^2));
                xxAritQuadSEPERATS2MSS4 = (xxAritQuadSEPERATS2MSS4 + ((pifSEPERATS1S2TM4arrayRAND[n] - xAritSEPERATS2MSS4)^2));
    
                yyAritQuadSEPERATS2MSS1 = (yyAritQuadSEPERATS2MSS1 + ((pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)^2));
                yyAritQuadSEPERATS2MSS2 = (yyAritQuadSEPERATS2MSS2 + ((pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)^2));
                yyAritQuadSEPERATS2MSS4 = (yyAritQuadSEPERATS2MSS4 + ((pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)^2));
    
                qXYSEPERATS2MSS1 = (qXYSEPERATS2MSS1 + ((pifSEPERATS1S2TM2arrayRAND[n] - xAritSEPERATS2MSS1) * (pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)));
                qXYSEPERATS2MSS2 = (qXYSEPERATS2MSS2 + ((pifSEPERATS1S2TM3arrayRAND[n] - xAritSEPERATS2MSS2) * (pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)));
                qXYSEPERATS2MSS4 = (qXYSEPERATS2MSS4 + ((pifSEPERATS1S2TM4arrayRAND[n] - xAritSEPERATS2MSS4) * (pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)));
          }
        
            aSEPERATS2MSS1 = (((xQuadSEPERATS2MSS1 * ySEPERATS2MSS1) - (xSEPERATS2MSS1 * xySEPERATS2MSS1)) / ((minPifVAL * xQuadSEPERATS2MSS1) - (xSEPERATS2MSS1^2)));
            aSEPERATS2MSS2 = (((xQuadSEPERATS2MSS2 * ySEPERATS2MSS2) - (xSEPERATS2MSS2 * xySEPERATS2MSS2)) / ((minPifVAL * xQuadSEPERATS2MSS2) - (xSEPERATS2MSS2^2)));
            aSEPERATS2MSS4 = (((xQuadSEPERATS2MSS4 * ySEPERATS2MSS4) - (xSEPERATS2MSS4 * xySEPERATS2MSS4)) / ((minPifVAL * xQuadSEPERATS2MSS4) - (xSEPERATS2MSS4^2)));
            
            bSEPERATS2MSS1 = qXYSEPERATS2MSS1 / xxAritQuadSEPERATS2MSS1;
            bSEPERATS2MSS2 = qXYSEPERATS2MSS2 / xxAritQuadSEPERATS2MSS2;
            bSEPERATS2MSS4 = qXYSEPERATS2MSS4 / xxAritQuadSEPERATS2MSS4;
    
            rSEPERATS2MSS1 = (qXYSEPERATS2MSS1 / ((xxAritQuadSEPERATS2MSS1 * yyAritQuadSEPERATS2MSS1)^0.5));
            rSEPERATS2MSS2 = (qXYSEPERATS2MSS2 / ((xxAritQuadSEPERATS2MSS2 * yyAritQuadSEPERATS2MSS2)^0.5));
            rSEPERATS2MSS4 = (qXYSEPERATS2MSS4 / ((xxAritQuadSEPERATS2MSS4 * yyAritQuadSEPERATS2MSS4)^0.5));
    
            rQuadSEPERATS2MSS1 = ((rSEPERATS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2MSS2 = ((rSEPERATS2MSS2^2) * 100);
            rQuadSEPERATS2MSS4 = ((rSEPERATS2MSS4^2) * 100);
        
            syxSEPERATS2MSS1 = (((yyAritQuadSEPERATS2MSS1 - ((qXYSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS2 = (((yyAritQuadSEPERATS2MSS2 - ((qXYSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS4 = (((yyAritQuadSEPERATS2MSS4 - ((qXYSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2MSS1 = (((syxSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)^0.5);
            bStandSEPERATS2MSS2 = (((syxSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)^0.5);
            bStandSEPERATS2MSS4 = (((syxSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)^0.5);
    
            aStandSEPERATS2MSS1 = (bStandSEPERATS2MSS1 * ((xQuadSEPERATS2MSS1 / minPifVAL)^0.5));
            aStandSEPERATS2MSS2 = (bStandSEPERATS2MSS2 * ((xQuadSEPERATS2MSS2 / minPifVAL)^0.5));
            aStandSEPERATS2MSS4 = (bStandSEPERATS2MSS4 * ((xQuadSEPERATS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS1, bSEPERATS2MSS1, rSEPERATS2MSS1, rQuadSEPERATS2MSS1, aStandSEPERATS2MSS1, bStandSEPERATS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS2, bSEPERATS2MSS2, rSEPERATS2MSS2, rQuadSEPERATS2MSS2, aStandSEPERATS2MSS2, bStandSEPERATS2MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS4, bSEPERATS2MSS4, rSEPERATS2MSS4, rQuadSEPERATS2MSS4, aStandSEPERATS2MSS4, bStandSEPERATS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS2slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS2slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS2slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aSEPERATS2MSS1 + (bSEPERATS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aSEPERATS2MSS2 + (bSEPERATS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = REFS2MSS3[i,j];
                    OUT2MSS4[i,j] = (aSEPERATS2MSS4 + (bSEPERATS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT2MSS1);
            CreatePyramid(OUT2MSS2);
            CreatePyramid(OUT2MSS3);
            CreatePyramid(OUT2MSS4);
        
            CreateHistogram(OUT2MSS1);
            CreateHistogram(OUT2MSS2);
            CreateHistogram(OUT2MSS3);
            CreateHistogram(OUT2MSS4);
            
            CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors3 == 7 )
            {
            numeric xAritSEPERATS3ETM1, xAritSEPERATS3ETM2, xAritSEPERATS3ETM3, xAritSEPERATS3ETM4, xAritSEPERATS3ETM5, xAritSEPERATS3ETM7;
            numeric yAritSEPERATS3ETM1, yAritSEPERATS3ETM2, yAritSEPERATS3ETM3, yAritSEPERATS3ETM4, yAritSEPERATS3ETM5, yAritSEPERATS3ETM7;
    
            numeric aSEPERATS3ETM1, aSEPERATS3ETM2, aSEPERATS3ETM3, aSEPERATS3ETM4, aSEPERATS3ETM5, aSEPERATS3ETM7;
            numeric bSEPERATS3ETM1, bSEPERATS3ETM2, bSEPERATS3ETM3, bSEPERATS3ETM4, bSEPERATS3ETM5, bSEPERATS3ETM7;
            numeric rSEPERATS3ETM1, rSEPERATS3ETM2, rSEPERATS3ETM3, rSEPERATS3ETM4, rSEPERATS3ETM5, rSEPERATS3ETM7;
            numeric rQuadSEPERATS3ETM1, rQuadSEPERATS3ETM2, rQuadSEPERATS3ETM3, rQuadSEPERATS3ETM4, rQuadSEPERATS3ETM5, rQuadSEPERATS3ETM7;
            numeric syxSEPERATS3ETM1, syxSEPERATS3ETM2, syxSEPERATS3ETM3, syxSEPERATS3ETM4, syxSEPERATS3ETM5, syxSEPERATS3ETM7;
            numeric bStandSEPERATS3ETM1, bStandSEPERATS3ETM2, bStandSEPERATS3ETM3, bStandSEPERATS3ETM4, bStandSEPERATS3ETM5, bStandSEPERATS3ETM7;
            numeric aStandSEPERATS3ETM1, aStandSEPERATS3ETM2, aStandSEPERATS3ETM3, aStandSEPERATS3ETM4, aStandSEPERATS3ETM5, aStandSEPERATS3ETM7;
    
            numeric xSEPERATS3ETM1 = 0;
            numeric xSEPERATS3ETM2 = 0;
            numeric xSEPERATS3ETM3 = 0;
            numeric xSEPERATS3ETM4 = 0;
            numeric xSEPERATS3ETM5 = 0;
            numeric xSEPERATS3ETM7 = 0;
    
            numeric xQuadSEPERATS3ETM1 = 0;
            numeric xQuadSEPERATS3ETM2 = 0;
            numeric xQuadSEPERATS3ETM3 = 0;
            numeric xQuadSEPERATS3ETM4 = 0;
            numeric xQuadSEPERATS3ETM5 = 0;
            numeric xQuadSEPERATS3ETM7 = 0;
    
            numeric ySEPERATS3ETM1 = 0;
            numeric ySEPERATS3ETM2 = 0;
            numeric ySEPERATS3ETM3 = 0;
            numeric ySEPERATS3ETM4 = 0;
            numeric ySEPERATS3ETM5 = 0;
            numeric ySEPERATS3ETM7 = 0;
    
            numeric yQuadSEPERATS3ETM1 = 0;
            numeric yQuadSEPERATS3ETM2 = 0;
            numeric yQuadSEPERATS3ETM3 = 0;
            numeric yQuadSEPERATS3ETM4 = 0;
            numeric yQuadSEPERATS3ETM5 = 0;
            numeric yQuadSEPERATS3ETM7 = 0;
    
            numeric xySEPERATS3ETM1 = 0;
            numeric xySEPERATS3ETM2 = 0;
            numeric xySEPERATS3ETM3 = 0;
            numeric xySEPERATS3ETM4 = 0;
            numeric xySEPERATS3ETM5 = 0;
            numeric xySEPERATS3ETM7 = 0;
    
            numeric xxAritQuadSEPERATS3ETM1 = 0;
            numeric xxAritQuadSEPERATS3ETM2 = 0;
            numeric xxAritQuadSEPERATS3ETM3 = 0;
            numeric xxAritQuadSEPERATS3ETM4 = 0;
            numeric xxAritQuadSEPERATS3ETM5 = 0;
            numeric xxAritQuadSEPERATS3ETM7 = 0;
    
            numeric yyAritQuadSEPERATS3ETM1 = 0;
            numeric yyAritQuadSEPERATS3ETM2 = 0;
            numeric yyAritQuadSEPERATS3ETM3 = 0;
            numeric yyAritQuadSEPERATS3ETM4 = 0;
            numeric yyAritQuadSEPERATS3ETM5 = 0;
            numeric yyAritQuadSEPERATS3ETM7 = 0;
    
            numeric qXYSEPERATS3ETM1 = 0;
            numeric qXYSEPERATS3ETM2 = 0;
            numeric qXYSEPERATS3ETM3 = 0;
            numeric qXYSEPERATS3ETM4 = 0;
            numeric qXYSEPERATS3ETM5 = 0;
            numeric qXYSEPERATS3ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS3ETM1 = xSEPERATS3ETM1 + pifSEPERATS1S3TM1arrayRAND[m];
                xSEPERATS3ETM2 = xSEPERATS3ETM2 + pifSEPERATS1S3TM2arrayRAND[m];
                xSEPERATS3ETM3 = xSEPERATS3ETM3 + pifSEPERATS1S3TM3arrayRAND[m];
                xSEPERATS3ETM4 = xSEPERATS3ETM4 + pifSEPERATS1S3TM4arrayRAND[m];
                xSEPERATS3ETM5 = xSEPERATS3ETM5 + pifSEPERATS1S3TM5arrayRAND[m];
                xSEPERATS3ETM7 = xSEPERATS3ETM7 + pifSEPERATS1S3TM7arrayRAND[m];
    
                xQuadSEPERATS3ETM1 = (xQuadSEPERATS3ETM1 + (pifSEPERATS1S3TM1arrayRAND[m]^2));
                xQuadSEPERATS3ETM2 = (xQuadSEPERATS3ETM2 + (pifSEPERATS1S3TM2arrayRAND[m]^2));
                xQuadSEPERATS3ETM3 = (xQuadSEPERATS3ETM3 + (pifSEPERATS1S3TM3arrayRAND[m]^2));
                xQuadSEPERATS3ETM4 = (xQuadSEPERATS3ETM4 + (pifSEPERATS1S3TM4arrayRAND[m]^2));
                xQuadSEPERATS3ETM5 = (xQuadSEPERATS3ETM5 + (pifSEPERATS1S3TM5arrayRAND[m]^2));
                xQuadSEPERATS3ETM7 = (xQuadSEPERATS3ETM7 + (pifSEPERATS1S3TM7arrayRAND[m]^2));
    
                ySEPERATS3ETM1 = ySEPERATS3ETM1 + pifSEPERATS3slaveETM1arrayRAND[m];
                ySEPERATS3ETM2 = ySEPERATS3ETM2 + pifSEPERATS3slaveETM2arrayRAND[m];
                ySEPERATS3ETM3 = ySEPERATS3ETM3 + pifSEPERATS3slaveETM3arrayRAND[m];
                ySEPERATS3ETM4 = ySEPERATS3ETM4 + pifSEPERATS3slaveETM4arrayRAND[m];
                ySEPERATS3ETM5 = ySEPERATS3ETM5 + pifSEPERATS3slaveETM5arrayRAND[m];
                ySEPERATS3ETM7 = ySEPERATS3ETM7 + pifSEPERATS3slaveETM7arrayRAND[m];
                
                yQuadSEPERATS3ETM1 = (yQuadSEPERATS3ETM1 + (pifSEPERATS3slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS3ETM2 = (yQuadSEPERATS3ETM2 + (pifSEPERATS3slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS3ETM3 = (yQuadSEPERATS3ETM3 + (pifSEPERATS3slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS3ETM4 = (yQuadSEPERATS3ETM4 + (pifSEPERATS3slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS3ETM5 = (yQuadSEPERATS3ETM5 + (pifSEPERATS3slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS3ETM7 = (yQuadSEPERATS3ETM7 + (pifSEPERATS3slaveETM7arrayRAND[m]^2));
    
                xySEPERATS3ETM1 = (xySEPERATS3ETM1 + (pifSEPERATS1S3TM1arrayRAND[m] * pifSEPERATS3slaveETM1arrayRAND[m]));
                xySEPERATS3ETM2 = (xySEPERATS3ETM2 + (pifSEPERATS1S3TM2arrayRAND[m] * pifSEPERATS3slaveETM2arrayRAND[m]));
                xySEPERATS3ETM3 = (xySEPERATS3ETM3 + (pifSEPERATS1S3TM3arrayRAND[m] * pifSEPERATS3slaveETM3arrayRAND[m]));
                xySEPERATS3ETM4 = (xySEPERATS3ETM4 + (pifSEPERATS1S3TM4arrayRAND[m] * pifSEPERATS3slaveETM4arrayRAND[m]));
                xySEPERATS3ETM5 = (xySEPERATS3ETM5 + (pifSEPERATS1S3TM5arrayRAND[m] * pifSEPERATS3slaveETM5arrayRAND[m]));
                xySEPERATS3ETM7 = (xySEPERATS3ETM7 + (pifSEPERATS1S3TM7arrayRAND[m] * pifSEPERATS3slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS3ETM1 = xSEPERATS3ETM1 / minPifVAL;
            xAritSEPERATS3ETM2 = xSEPERATS3ETM2 / minPifVAL;
            xAritSEPERATS3ETM3 = xSEPERATS3ETM3 / minPifVAL;
            xAritSEPERATS3ETM4 = xSEPERATS3ETM4 / minPifVAL;
            xAritSEPERATS3ETM5 = xSEPERATS3ETM5 / minPifVAL;
            xAritSEPERATS3ETM7 = xSEPERATS3ETM7 / minPifVAL;
    
            yAritSEPERATS3ETM1 = ySEPERATS3ETM1 / minPifVAL;
            yAritSEPERATS3ETM2 = ySEPERATS3ETM2 / minPifVAL;
            yAritSEPERATS3ETM3 = ySEPERATS3ETM3 / minPifVAL;
            yAritSEPERATS3ETM4 = ySEPERATS3ETM4 / minPifVAL;
            yAritSEPERATS3ETM5 = ySEPERATS3ETM5 / minPifVAL;
            yAritSEPERATS3ETM7 = ySEPERATS3ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3ETM1 = (xxAritQuadSEPERATS3ETM1 + ((pifSEPERATS1S3TM1arrayRAND[n] - xAritSEPERATS3ETM1)^2));
                xxAritQuadSEPERATS3ETM2 = (xxAritQuadSEPERATS3ETM2 + ((pifSEPERATS1S3TM2arrayRAND[n] - xAritSEPERATS3ETM2)^2));
                xxAritQuadSEPERATS3ETM3 = (xxAritQuadSEPERATS3ETM3 + ((pifSEPERATS1S3TM3arrayRAND[n] - xAritSEPERATS3ETM3)^2));
                xxAritQuadSEPERATS3ETM4 = (xxAritQuadSEPERATS3ETM4 + ((pifSEPERATS1S3TM4arrayRAND[n] - xAritSEPERATS3ETM4)^2));
                xxAritQuadSEPERATS3ETM5 = (xxAritQuadSEPERATS3ETM5 + ((pifSEPERATS1S3TM5arrayRAND[n] - xAritSEPERATS3ETM5)^2));
                xxAritQuadSEPERATS3ETM7 = (xxAritQuadSEPERATS3ETM7 + ((pifSEPERATS1S3TM7arrayRAND[n] - xAritSEPERATS3ETM7)^2));
    
                yyAritQuadSEPERATS3ETM1 = (yyAritQuadSEPERATS3ETM1 + ((pifSEPERATS3slaveETM1arrayRAND[n] - yAritSEPERATS3ETM1)^2));
                yyAritQuadSEPERATS3ETM2 = (yyAritQuadSEPERATS3ETM2 + ((pifSEPERATS3slaveETM2arrayRAND[n] - yAritSEPERATS3ETM2)^2));
                yyAritQuadSEPERATS3ETM3 = (yyAritQuadSEPERATS3ETM3 + ((pifSEPERATS3slaveETM3arrayRAND[n] - yAritSEPERATS3ETM3)^2));
                yyAritQuadSEPERATS3ETM4 = (yyAritQuadSEPERATS3ETM4 + ((pifSEPERATS3slaveETM4arrayRAND[n] - yAritSEPERATS3ETM4)^2));
                yyAritQuadSEPERATS3ETM5 = (yyAritQuadSEPERATS3ETM5 + ((pifSEPERATS3slaveETM5arrayRAND[n] - yAritSEPERATS3ETM5)^2));
                yyAritQuadSEPERATS3ETM7 = (yyAritQuadSEPERATS3ETM7 + ((pifSEPERATS3slaveETM7arrayRAND[n] - yAritSEPERATS3ETM7)^2));
    
                qXYSEPERATS3ETM1 = (qXYSEPERATS3ETM1 + ((pifSEPERATS1S3TM1arrayRAND[n] - xAritSEPERATS3ETM1) * (pifSEPERATS3slaveETM1arrayRAND[n] - yAritSEPERATS3ETM1)));
                qXYSEPERATS3ETM2 = (qXYSEPERATS3ETM2 + ((pifSEPERATS1S3TM2arrayRAND[n] - xAritSEPERATS3ETM2) * (pifSEPERATS3slaveETM2arrayRAND[n] - yAritSEPERATS3ETM2)));
                qXYSEPERATS3ETM3 = (qXYSEPERATS3ETM3 + ((pifSEPERATS1S3TM3arrayRAND[n] - xAritSEPERATS3ETM3) * (pifSEPERATS3slaveETM3arrayRAND[n] - yAritSEPERATS3ETM3)));
                qXYSEPERATS3ETM4 = (qXYSEPERATS3ETM4 + ((pifSEPERATS1S3TM4arrayRAND[n] - xAritSEPERATS3ETM4) * (pifSEPERATS3slaveETM4arrayRAND[n] - yAritSEPERATS3ETM4)));
                qXYSEPERATS3ETM5 = (qXYSEPERATS3ETM5 + ((pifSEPERATS1S3TM5arrayRAND[n] - xAritSEPERATS3ETM5) * (pifSEPERATS3slaveETM5arrayRAND[n] - yAritSEPERATS3ETM5)));
                qXYSEPERATS3ETM7 = (qXYSEPERATS3ETM7 + ((pifSEPERATS1S3TM7arrayRAND[n] - xAritSEPERATS3ETM7) * (pifSEPERATS3slaveETM7arrayRAND[n] - yAritSEPERATS3ETM7)));
            }
        
            aSEPERATS3ETM1 = (((xQuadSEPERATS3ETM1 * ySEPERATS3ETM1) - (xSEPERATS3ETM1 * xySEPERATS3ETM1)) / ((minPifVAL * xQuadSEPERATS3ETM1) - (xSEPERATS3ETM1^2)));
            aSEPERATS3ETM2 = (((xQuadSEPERATS3ETM2 * ySEPERATS3ETM2) - (xSEPERATS3ETM2 * xySEPERATS3ETM2)) / ((minPifVAL * xQuadSEPERATS3ETM2) - (xSEPERATS3ETM2^2)));
            aSEPERATS3ETM3 = (((xQuadSEPERATS3ETM3 * ySEPERATS3ETM3) - (xSEPERATS3ETM3 * xySEPERATS3ETM3)) / ((minPifVAL * xQuadSEPERATS3ETM3) - (xSEPERATS3ETM3^2)));
            aSEPERATS3ETM4 = (((xQuadSEPERATS3ETM4 * ySEPERATS3ETM4) - (xSEPERATS3ETM4 * xySEPERATS3ETM4)) / ((minPifVAL * xQuadSEPERATS3ETM4) - (xSEPERATS3ETM4^2)));
            aSEPERATS3ETM5 = (((xQuadSEPERATS3ETM5 * ySEPERATS3ETM5) - (xSEPERATS3ETM5 * xySEPERATS3ETM5)) / ((minPifVAL * xQuadSEPERATS3ETM5) - (xSEPERATS3ETM5^2)));
            aSEPERATS3ETM7 = (((xQuadSEPERATS3ETM7 * ySEPERATS3ETM7) - (xSEPERATS3ETM7 * xySEPERATS3ETM7)) / ((minPifVAL * xQuadSEPERATS3ETM7) - (xSEPERATS3ETM7^2)));
            
            bSEPERATS3ETM1 = qXYSEPERATS3ETM1 / xxAritQuadSEPERATS3ETM1;
            bSEPERATS3ETM2 = qXYSEPERATS3ETM2 / xxAritQuadSEPERATS3ETM2;
            bSEPERATS3ETM3 = qXYSEPERATS3ETM3 / xxAritQuadSEPERATS3ETM3;
            bSEPERATS3ETM4 = qXYSEPERATS3ETM4 / xxAritQuadSEPERATS3ETM4;
            bSEPERATS3ETM5 = qXYSEPERATS3ETM5 / xxAritQuadSEPERATS3ETM5;
            bSEPERATS3ETM7 = qXYSEPERATS3ETM7 / xxAritQuadSEPERATS3ETM7;
    
            rSEPERATS3ETM1 = (qXYSEPERATS3ETM1 / ((xxAritQuadSEPERATS3ETM1 * yyAritQuadSEPERATS3ETM1)^0.5));
            rSEPERATS3ETM2 = (qXYSEPERATS3ETM2 / ((xxAritQuadSEPERATS3ETM2 * yyAritQuadSEPERATS3ETM2)^0.5));
            rSEPERATS3ETM3 = (qXYSEPERATS3ETM3 / ((xxAritQuadSEPERATS3ETM3 * yyAritQuadSEPERATS3ETM3)^0.5));
            rSEPERATS3ETM4 = (qXYSEPERATS3ETM4 / ((xxAritQuadSEPERATS3ETM4 * yyAritQuadSEPERATS3ETM4)^0.5));
            rSEPERATS3ETM5 = (qXYSEPERATS3ETM5 / ((xxAritQuadSEPERATS3ETM5 * yyAritQuadSEPERATS3ETM5)^0.5));
            rSEPERATS3ETM7 = (qXYSEPERATS3ETM7 / ((xxAritQuadSEPERATS3ETM7 * yyAritQuadSEPERATS3ETM7)^0.5));
    
            rQuadSEPERATS3ETM1 = ((rSEPERATS3ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3ETM2 = ((rSEPERATS3ETM2^2) * 100);
            rQuadSEPERATS3ETM3 = ((rSEPERATS3ETM3^2) * 100);
            rQuadSEPERATS3ETM4 = ((rSEPERATS3ETM4^2) * 100);
            rQuadSEPERATS3ETM5 = ((rSEPERATS3ETM5^2) * 100);
            rQuadSEPERATS3ETM7 = ((rSEPERATS3ETM7^2) * 100);
        
            syxSEPERATS3ETM1 = (((yyAritQuadSEPERATS3ETM1 - ((qXYSEPERATS3ETM1^2) / xxAritQuadSEPERATS3ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM2 = (((yyAritQuadSEPERATS3ETM2 - ((qXYSEPERATS3ETM2^2) / xxAritQuadSEPERATS3ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM3 = (((yyAritQuadSEPERATS3ETM3 - ((qXYSEPERATS3ETM3^2) / xxAritQuadSEPERATS3ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM4 = (((yyAritQuadSEPERATS3ETM4 - ((qXYSEPERATS3ETM4^2) / xxAritQuadSEPERATS3ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM5 = (((yyAritQuadSEPERATS3ETM5 - ((qXYSEPERATS3ETM5^2) / xxAritQuadSEPERATS3ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM7 = (((yyAritQuadSEPERATS3ETM7 - ((qXYSEPERATS3ETM7^2) / xxAritQuadSEPERATS3ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3ETM1 = (((syxSEPERATS3ETM1^2) / xxAritQuadSEPERATS3ETM1)^0.5);
            bStandSEPERATS3ETM2 = (((syxSEPERATS3ETM2^2) / xxAritQuadSEPERATS3ETM2)^0.5);
            bStandSEPERATS3ETM3 = (((syxSEPERATS3ETM3^2) / xxAritQuadSEPERATS3ETM3)^0.5);
            bStandSEPERATS3ETM4 = (((syxSEPERATS3ETM4^2) / xxAritQuadSEPERATS3ETM4)^0.5);
            bStandSEPERATS3ETM5 = (((syxSEPERATS3ETM5^2) / xxAritQuadSEPERATS3ETM5)^0.5);
            bStandSEPERATS3ETM7 = (((syxSEPERATS3ETM7^2) / xxAritQuadSEPERATS3ETM7)^0.5);
    
            aStandSEPERATS3ETM1 = (bStandSEPERATS3ETM1 * ((xQuadSEPERATS3ETM1 / minPifVAL)^0.5));
            aStandSEPERATS3ETM2 = (bStandSEPERATS3ETM2 * ((xQuadSEPERATS3ETM2 / minPifVAL)^0.5));
            aStandSEPERATS3ETM3 = (bStandSEPERATS3ETM3 * ((xQuadSEPERATS3ETM3 / minPifVAL)^0.5));
            aStandSEPERATS3ETM4 = (bStandSEPERATS3ETM4 * ((xQuadSEPERATS3ETM4 / minPifVAL)^0.5));
            aStandSEPERATS3ETM5 = (bStandSEPERATS3ETM5 * ((xQuadSEPERATS3ETM5 / minPifVAL)^0.5));
            aStandSEPERATS3ETM7 = (bStandSEPERATS3ETM7 * ((xQuadSEPERATS3ETM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM1, bSEPERATS3ETM1, rSEPERATS3ETM1, rQuadSEPERATS3ETM1, aStandSEPERATS3ETM1, bStandSEPERATS3ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM2, bSEPERATS3ETM2, rSEPERATS3ETM2, rQuadSEPERATS3ETM2, aStandSEPERATS3ETM2, bStandSEPERATS3ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM3, bSEPERATS3ETM3, rSEPERATS3ETM3, rQuadSEPERATS3ETM3, aStandSEPERATS3ETM3, bStandSEPERATS3ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM4, bSEPERATS3ETM4, rSEPERATS3ETM4, rQuadSEPERATS3ETM4, aStandSEPERATS3ETM4, bStandSEPERATS3ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM5, bSEPERATS3ETM5, rSEPERATS3ETM5, rQuadSEPERATS3ETM5, aStandSEPERATS3ETM5, bStandSEPERATS3ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS3ETM7, bSEPERATS3ETM7, rSEPERATS3ETM7, rQuadSEPERATS3ETM7, aStandSEPERATS3ETM7, bStandSEPERATS3ETM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS3slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS3slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS3slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS3slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS3slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS3slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS3slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT3ETM1[i,j] = (aSEPERATS3ETM1 + (bSEPERATS3ETM1 * REFS3ETM1[i,j]));
                    OUT3ETM2[i,j] = (aSEPERATS3ETM2 + (bSEPERATS3ETM2 * REFS3ETM2[i,j]));
                    OUT3ETM3[i,j] = (aSEPERATS3ETM3 + (bSEPERATS3ETM3 * REFS3ETM3[i,j]));
                    OUT3ETM4[i,j] = (aSEPERATS3ETM4 + (bSEPERATS3ETM4 * REFS3ETM4[i,j]));
                    OUT3ETM5[i,j] = (aSEPERATS3ETM5 + (bSEPERATS3ETM5 * REFS3ETM5[i,j]));
                    OUT3ETM7[i,j] = (aSEPERATS3ETM7 + (bSEPERATS3ETM7 * REFS3ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3ETM1);
        	CreatePyramid(OUT3ETM2);
        	CreatePyramid(OUT3ETM3);
        	CreatePyramid(OUT3ETM4);
        	CreatePyramid(OUT3ETM5);
        	CreatePyramid(OUT3ETM7);
        
        	CreateHistogram(OUT3ETM1);
        	CreateHistogram(OUT3ETM2);
        	CreateHistogram(OUT3ETM3);
        	CreateHistogram(OUT3ETM4);
        	CreateHistogram(OUT3ETM5);
        	CreateHistogram(OUT3ETM7);
            CloseRaster(REFS3ETM1);
            CloseRaster(REFS3ETM2);
            CloseRaster(REFS3ETM3);
            CloseRaster(REFS3ETM4);
            CloseRaster(REFS3ETM5);
            CloseRaster(REFS3ETM7);
    
            CloseRaster(OUT3ETM1);
            CloseRaster(OUT3ETM2);
            CloseRaster(OUT3ETM3);
            CloseRaster(OUT3ETM4);
            CloseRaster(OUT3ETM5);
            CloseRaster(OUT3ETM7);
            
        	printf("Scene 3 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors3 == 6 )
            {
            numeric xAritSEPERATS3TM1, xAritSEPERATS3TM2, xAritSEPERATS3TM3, xAritSEPERATS3TM4, xAritSEPERATS3TM5, xAritSEPERATS3TM7;
            numeric yAritSEPERATS3TM1, yAritSEPERATS3TM2, yAritSEPERATS3TM3, yAritSEPERATS3TM4, yAritSEPERATS3TM5, yAritSEPERATS3TM7;
    
            numeric aSEPERATS3TM1, aSEPERATS3TM2, aSEPERATS3TM3, aSEPERATS3TM4, aSEPERATS3TM5, aSEPERATS3TM7;
            numeric bSEPERATS3TM1, bSEPERATS3TM2, bSEPERATS3TM3, bSEPERATS3TM4, bSEPERATS3TM5, bSEPERATS3TM7;
            numeric rSEPERATS3TM1, rSEPERATS3TM2, rSEPERATS3TM3, rSEPERATS3TM4, rSEPERATS3TM5, rSEPERATS3TM7;
            numeric rQuadSEPERATS3TM1, rQuadSEPERATS3TM2, rQuadSEPERATS3TM3, rQuadSEPERATS3TM4, rQuadSEPERATS3TM5, rQuadSEPERATS3TM7;
            numeric syxSEPERATS3TM1, syxSEPERATS3TM2, syxSEPERATS3TM3, syxSEPERATS3TM4, syxSEPERATS3TM5, syxSEPERATS3TM7;
            numeric bStandSEPERATS3TM1, bStandSEPERATS3TM2, bStandSEPERATS3TM3, bStandSEPERATS3TM4, bStandSEPERATS3TM5, bStandSEPERATS3TM7;
            numeric aStandSEPERATS3TM1, aStandSEPERATS3TM2, aStandSEPERATS3TM3, aStandSEPERATS3TM4, aStandSEPERATS3TM5, aStandSEPERATS3TM7;
    
            numeric xSEPERATS3TM1 = 0;
            numeric xSEPERATS3TM2 = 0;
            numeric xSEPERATS3TM3 = 0;
            numeric xSEPERATS3TM4 = 0;
            numeric xSEPERATS3TM5 = 0;
            numeric xSEPERATS3TM7 = 0;
    
            numeric xQuadSEPERATS3TM1 = 0;
            numeric xQuadSEPERATS3TM2 = 0;
            numeric xQuadSEPERATS3TM3 = 0;
            numeric xQuadSEPERATS3TM4 = 0;
            numeric xQuadSEPERATS3TM5 = 0;
            numeric xQuadSEPERATS3TM7 = 0;
    
            numeric ySEPERATS3TM1 = 0;
            numeric ySEPERATS3TM2 = 0;
            numeric ySEPERATS3TM3 = 0;
            numeric ySEPERATS3TM4 = 0;
            numeric ySEPERATS3TM5 = 0;
            numeric ySEPERATS3TM7 = 0;
    
            numeric yQuadSEPERATS3TM1 = 0;
            numeric yQuadSEPERATS3TM2 = 0;
            numeric yQuadSEPERATS3TM3 = 0;
            numeric yQuadSEPERATS3TM4 = 0;
            numeric yQuadSEPERATS3TM5 = 0;
            numeric yQuadSEPERATS3TM7 = 0;
    
            numeric xySEPERATS3TM1 = 0;
            numeric xySEPERATS3TM2 = 0;
            numeric xySEPERATS3TM3 = 0;
            numeric xySEPERATS3TM4 = 0;
            numeric xySEPERATS3TM5 = 0;
            numeric xySEPERATS3TM7 = 0;
    
            numeric xxAritQuadSEPERATS3TM1 = 0;
            numeric xxAritQuadSEPERATS3TM2 = 0;
            numeric xxAritQuadSEPERATS3TM3 = 0;
            numeric xxAritQuadSEPERATS3TM4 = 0;
            numeric xxAritQuadSEPERATS3TM5 = 0;
            numeric xxAritQuadSEPERATS3TM7 = 0;
    
            numeric yyAritQuadSEPERATS3TM1 = 0;
            numeric yyAritQuadSEPERATS3TM2 = 0;
            numeric yyAritQuadSEPERATS3TM3 = 0;
            numeric yyAritQuadSEPERATS3TM4 = 0;
            numeric yyAritQuadSEPERATS3TM5 = 0;
            numeric yyAritQuadSEPERATS3TM7 = 0;
    
            numeric qXYSEPERATS3TM1 = 0;
            numeric qXYSEPERATS3TM2 = 0;
            numeric qXYSEPERATS3TM3 = 0;
            numeric qXYSEPERATS3TM4 = 0;
            numeric qXYSEPERATS3TM5 = 0;
            numeric qXYSEPERATS3TM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS3TM1 = xSEPERATS3TM1 + pifSEPERATS1S3TM1arrayRAND[m];
                xSEPERATS3TM2 = xSEPERATS3TM2 + pifSEPERATS1S3TM2arrayRAND[m];
                xSEPERATS3TM3 = xSEPERATS3TM3 + pifSEPERATS1S3TM3arrayRAND[m];
                xSEPERATS3TM4 = xSEPERATS3TM4 + pifSEPERATS1S3TM4arrayRAND[m];
                xSEPERATS3TM5 = xSEPERATS3TM5 + pifSEPERATS1S3TM5arrayRAND[m];
                xSEPERATS3TM7 = xSEPERATS3TM7 + pifSEPERATS1S3TM7arrayRAND[m];
    
                xQuadSEPERATS3TM1 = (xQuadSEPERATS3TM1 + (pifSEPERATS1S3TM1arrayRAND[m]^2));
                xQuadSEPERATS3TM2 = (xQuadSEPERATS3TM2 + (pifSEPERATS1S3TM2arrayRAND[m]^2));
                xQuadSEPERATS3TM3 = (xQuadSEPERATS3TM3 + (pifSEPERATS1S3TM3arrayRAND[m]^2));
                xQuadSEPERATS3TM4 = (xQuadSEPERATS3TM4 + (pifSEPERATS1S3TM4arrayRAND[m]^2));
                xQuadSEPERATS3TM5 = (xQuadSEPERATS3TM5 + (pifSEPERATS1S3TM5arrayRAND[m]^2));
                xQuadSEPERATS3TM7 = (xQuadSEPERATS3TM7 + (pifSEPERATS1S3TM7arrayRAND[m]^2));
    
                ySEPERATS3TM1 = ySEPERATS3TM1 + pifSEPERATS3slaveTM1arrayRAND[m];
                ySEPERATS3TM2 = ySEPERATS3TM2 + pifSEPERATS3slaveTM2arrayRAND[m];
                ySEPERATS3TM3 = ySEPERATS3TM3 + pifSEPERATS3slaveTM3arrayRAND[m];
                ySEPERATS3TM4 = ySEPERATS3TM4 + pifSEPERATS3slaveTM4arrayRAND[m];
                ySEPERATS3TM5 = ySEPERATS3TM5 + pifSEPERATS3slaveTM5arrayRAND[m];
                ySEPERATS3TM7 = ySEPERATS3TM7 + pifSEPERATS3slaveTM7arrayRAND[m];
                
                yQuadSEPERATS3TM1 = (yQuadSEPERATS3TM1 + (pifSEPERATS3slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS3TM2 = (yQuadSEPERATS3TM2 + (pifSEPERATS3slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS3TM3 = (yQuadSEPERATS3TM3 + (pifSEPERATS3slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS3TM4 = (yQuadSEPERATS3TM4 + (pifSEPERATS3slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS3TM5 = (yQuadSEPERATS3TM5 + (pifSEPERATS3slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS3TM7 = (yQuadSEPERATS3TM7 + (pifSEPERATS3slaveTM7arrayRAND[m]^2));
    
                xySEPERATS3TM1 = (xySEPERATS3TM1 + (pifSEPERATS1S3TM1arrayRAND[m] * pifSEPERATS3slaveTM1arrayRAND[m]));
                xySEPERATS3TM2 = (xySEPERATS3TM2 + (pifSEPERATS1S3TM2arrayRAND[m] * pifSEPERATS3slaveTM2arrayRAND[m]));
                xySEPERATS3TM3 = (xySEPERATS3TM3 + (pifSEPERATS1S3TM3arrayRAND[m] * pifSEPERATS3slaveTM3arrayRAND[m]));
                xySEPERATS3TM4 = (xySEPERATS3TM4 + (pifSEPERATS1S3TM4arrayRAND[m] * pifSEPERATS3slaveTM4arrayRAND[m]));
                xySEPERATS3TM5 = (xySEPERATS3TM5 + (pifSEPERATS1S3TM5arrayRAND[m] * pifSEPERATS3slaveTM5arrayRAND[m]));
                xySEPERATS3TM7 = (xySEPERATS3TM7 + (pifSEPERATS1S3TM7arrayRAND[m] * pifSEPERATS3slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS3TM1 = xSEPERATS3TM1 / minPifVAL;
            xAritSEPERATS3TM2 = xSEPERATS3TM2 / minPifVAL;
            xAritSEPERATS3TM3 = xSEPERATS3TM3 / minPifVAL;
            xAritSEPERATS3TM4 = xSEPERATS3TM4 / minPifVAL;
            xAritSEPERATS3TM5 = xSEPERATS3TM5 / minPifVAL;
            xAritSEPERATS3TM7 = xSEPERATS3TM7 / minPifVAL;
    
            yAritSEPERATS3TM1 = ySEPERATS3TM1 / minPifVAL;
            yAritSEPERATS3TM2 = ySEPERATS3TM2 / minPifVAL;
            yAritSEPERATS3TM3 = ySEPERATS3TM3 / minPifVAL;
            yAritSEPERATS3TM4 = ySEPERATS3TM4 / minPifVAL;
            yAritSEPERATS3TM5 = ySEPERATS3TM5 / minPifVAL;
            yAritSEPERATS3TM7 = ySEPERATS3TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3TM1 = (xxAritQuadSEPERATS3TM1 + ((pifSEPERATS1S3TM1arrayRAND[n] - xAritSEPERATS3TM1)^2));
                xxAritQuadSEPERATS3TM2 = (xxAritQuadSEPERATS3TM2 + ((pifSEPERATS1S3TM2arrayRAND[n] - xAritSEPERATS3TM2)^2));
                xxAritQuadSEPERATS3TM3 = (xxAritQuadSEPERATS3TM3 + ((pifSEPERATS1S3TM3arrayRAND[n] - xAritSEPERATS3TM3)^2));
                xxAritQuadSEPERATS3TM4 = (xxAritQuadSEPERATS3TM4 + ((pifSEPERATS1S3TM4arrayRAND[n] - xAritSEPERATS3TM4)^2));
                xxAritQuadSEPERATS3TM5 = (xxAritQuadSEPERATS3TM5 + ((pifSEPERATS1S3TM5arrayRAND[n] - xAritSEPERATS3TM5)^2));
                xxAritQuadSEPERATS3TM7 = (xxAritQuadSEPERATS3TM7 + ((pifSEPERATS1S3TM7arrayRAND[n] - xAritSEPERATS3TM7)^2));
    
                yyAritQuadSEPERATS3TM1 = (yyAritQuadSEPERATS3TM1 + ((pifSEPERATS3slaveTM1arrayRAND[n] - yAritSEPERATS3TM1)^2));
                yyAritQuadSEPERATS3TM2 = (yyAritQuadSEPERATS3TM2 + ((pifSEPERATS3slaveTM2arrayRAND[n] - yAritSEPERATS3TM2)^2));
                yyAritQuadSEPERATS3TM3 = (yyAritQuadSEPERATS3TM3 + ((pifSEPERATS3slaveTM3arrayRAND[n] - yAritSEPERATS3TM3)^2));
                yyAritQuadSEPERATS3TM4 = (yyAritQuadSEPERATS3TM4 + ((pifSEPERATS3slaveTM4arrayRAND[n] - yAritSEPERATS3TM4)^2));
                yyAritQuadSEPERATS3TM5 = (yyAritQuadSEPERATS3TM5 + ((pifSEPERATS3slaveTM5arrayRAND[n] - yAritSEPERATS3TM5)^2));
                yyAritQuadSEPERATS3TM7 = (yyAritQuadSEPERATS3TM7 + ((pifSEPERATS3slaveTM7arrayRAND[n] - yAritSEPERATS3TM7)^2));
    
                qXYSEPERATS3TM1 = (qXYSEPERATS3TM1 + ((pifSEPERATS1S3TM1arrayRAND[n] - xAritSEPERATS3TM1) * (pifSEPERATS3slaveTM1arrayRAND[n] - yAritSEPERATS3TM1)));
                qXYSEPERATS3TM2 = (qXYSEPERATS3TM2 + ((pifSEPERATS1S3TM2arrayRAND[n] - xAritSEPERATS3TM2) * (pifSEPERATS3slaveTM2arrayRAND[n] - yAritSEPERATS3TM2)));
                qXYSEPERATS3TM3 = (qXYSEPERATS3TM3 + ((pifSEPERATS1S3TM3arrayRAND[n] - xAritSEPERATS3TM3) * (pifSEPERATS3slaveTM3arrayRAND[n] - yAritSEPERATS3TM3)));
                qXYSEPERATS3TM4 = (qXYSEPERATS3TM4 + ((pifSEPERATS1S3TM4arrayRAND[n] - xAritSEPERATS3TM4) * (pifSEPERATS3slaveTM4arrayRAND[n] - yAritSEPERATS3TM4)));
                qXYSEPERATS3TM5 = (qXYSEPERATS3TM5 + ((pifSEPERATS1S3TM5arrayRAND[n] - xAritSEPERATS3TM5) * (pifSEPERATS3slaveTM5arrayRAND[n] - yAritSEPERATS3TM5)));
                qXYSEPERATS3TM7 = (qXYSEPERATS3TM7 + ((pifSEPERATS1S3TM7arrayRAND[n] - xAritSEPERATS3TM7) * (pifSEPERATS3slaveTM7arrayRAND[n] - yAritSEPERATS3TM7)));
            }
        
            aSEPERATS3TM1 = (((xQuadSEPERATS3TM1 * ySEPERATS3TM1) - (xSEPERATS3TM1 * xySEPERATS3TM1)) / ((minPifVAL * xQuadSEPERATS3TM1) - (xSEPERATS3TM1^2)));
            aSEPERATS3TM2 = (((xQuadSEPERATS3TM2 * ySEPERATS3TM2) - (xSEPERATS3TM2 * xySEPERATS3TM2)) / ((minPifVAL * xQuadSEPERATS3TM2) - (xSEPERATS3TM2^2)));
            aSEPERATS3TM3 = (((xQuadSEPERATS3TM3 * ySEPERATS3TM3) - (xSEPERATS3TM3 * xySEPERATS3TM3)) / ((minPifVAL * xQuadSEPERATS3TM3) - (xSEPERATS3TM3^2)));
            aSEPERATS3TM4 = (((xQuadSEPERATS3TM4 * ySEPERATS3TM4) - (xSEPERATS3TM4 * xySEPERATS3TM4)) / ((minPifVAL * xQuadSEPERATS3TM4) - (xSEPERATS3TM4^2)));
            aSEPERATS3TM5 = (((xQuadSEPERATS3TM5 * ySEPERATS3TM5) - (xSEPERATS3TM5 * xySEPERATS3TM5)) / ((minPifVAL * xQuadSEPERATS3TM5) - (xSEPERATS3TM5^2)));
            aSEPERATS3TM7 = (((xQuadSEPERATS3TM7 * ySEPERATS3TM7) - (xSEPERATS3TM7 * xySEPERATS3TM7)) / ((minPifVAL * xQuadSEPERATS3TM7) - (xSEPERATS3TM7^2)));
            
            bSEPERATS3TM1 = qXYSEPERATS3TM1 / xxAritQuadSEPERATS3TM1;
            bSEPERATS3TM2 = qXYSEPERATS3TM2 / xxAritQuadSEPERATS3TM2;
            bSEPERATS3TM3 = qXYSEPERATS3TM3 / xxAritQuadSEPERATS3TM3;
            bSEPERATS3TM4 = qXYSEPERATS3TM4 / xxAritQuadSEPERATS3TM4;
            bSEPERATS3TM5 = qXYSEPERATS3TM5 / xxAritQuadSEPERATS3TM5;
            bSEPERATS3TM7 = qXYSEPERATS3TM7 / xxAritQuadSEPERATS3TM7;
    
            rSEPERATS3TM1 = (qXYSEPERATS3TM1 / ((xxAritQuadSEPERATS3TM1 * yyAritQuadSEPERATS3TM1)^0.5));
            rSEPERATS3TM2 = (qXYSEPERATS3TM2 / ((xxAritQuadSEPERATS3TM2 * yyAritQuadSEPERATS3TM2)^0.5));
            rSEPERATS3TM3 = (qXYSEPERATS3TM3 / ((xxAritQuadSEPERATS3TM3 * yyAritQuadSEPERATS3TM3)^0.5));
            rSEPERATS3TM4 = (qXYSEPERATS3TM4 / ((xxAritQuadSEPERATS3TM4 * yyAritQuadSEPERATS3TM4)^0.5));
            rSEPERATS3TM5 = (qXYSEPERATS3TM5 / ((xxAritQuadSEPERATS3TM5 * yyAritQuadSEPERATS3TM5)^0.5));
            rSEPERATS3TM7 = (qXYSEPERATS3TM7 / ((xxAritQuadSEPERATS3TM7 * yyAritQuadSEPERATS3TM7)^0.5));
    
            rQuadSEPERATS3TM1 = ((rSEPERATS3TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3TM2 = ((rSEPERATS3TM2^2) * 100);
            rQuadSEPERATS3TM3 = ((rSEPERATS3TM3^2) * 100);
            rQuadSEPERATS3TM4 = ((rSEPERATS3TM4^2) * 100);
            rQuadSEPERATS3TM5 = ((rSEPERATS3TM5^2) * 100);
            rQuadSEPERATS3TM7 = ((rSEPERATS3TM7^2) * 100);
        
            syxSEPERATS3TM1 = (((yyAritQuadSEPERATS3TM1 - ((qXYSEPERATS3TM1^2) / xxAritQuadSEPERATS3TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM2 = (((yyAritQuadSEPERATS3TM2 - ((qXYSEPERATS3TM2^2) / xxAritQuadSEPERATS3TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM3 = (((yyAritQuadSEPERATS3TM3 - ((qXYSEPERATS3TM3^2) / xxAritQuadSEPERATS3TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM4 = (((yyAritQuadSEPERATS3TM4 - ((qXYSEPERATS3TM4^2) / xxAritQuadSEPERATS3TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM5 = (((yyAritQuadSEPERATS3TM5 - ((qXYSEPERATS3TM5^2) / xxAritQuadSEPERATS3TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM7 = (((yyAritQuadSEPERATS3TM7 - ((qXYSEPERATS3TM7^2) / xxAritQuadSEPERATS3TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3TM1 = (((syxSEPERATS3TM1^2) / xxAritQuadSEPERATS3TM1)^0.5);
            bStandSEPERATS3TM2 = (((syxSEPERATS3TM2^2) / xxAritQuadSEPERATS3TM2)^0.5);
            bStandSEPERATS3TM3 = (((syxSEPERATS3TM3^2) / xxAritQuadSEPERATS3TM3)^0.5);
            bStandSEPERATS3TM4 = (((syxSEPERATS3TM4^2) / xxAritQuadSEPERATS3TM4)^0.5);
            bStandSEPERATS3TM5 = (((syxSEPERATS3TM5^2) / xxAritQuadSEPERATS3TM5)^0.5);
            bStandSEPERATS3TM7 = (((syxSEPERATS3TM7^2) / xxAritQuadSEPERATS3TM7)^0.5);
    
            aStandSEPERATS3TM1 = (bStandSEPERATS3TM1 * ((xQuadSEPERATS3TM1 / minPifVAL)^0.5));
            aStandSEPERATS3TM2 = (bStandSEPERATS3TM2 * ((xQuadSEPERATS3TM2 / minPifVAL)^0.5));
            aStandSEPERATS3TM3 = (bStandSEPERATS3TM3 * ((xQuadSEPERATS3TM3 / minPifVAL)^0.5));
            aStandSEPERATS3TM4 = (bStandSEPERATS3TM4 * ((xQuadSEPERATS3TM4 / minPifVAL)^0.5));
            aStandSEPERATS3TM5 = (bStandSEPERATS3TM5 * ((xQuadSEPERATS3TM5 / minPifVAL)^0.5));
            aStandSEPERATS3TM7 = (bStandSEPERATS3TM7 * ((xQuadSEPERATS3TM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM1, bSEPERATS3TM1, rSEPERATS3TM1, rQuadSEPERATS3TM1, aStandSEPERATS3TM1, bStandSEPERATS3TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM2, bSEPERATS3TM2, rSEPERATS3TM2, rQuadSEPERATS3TM2, aStandSEPERATS3TM2, bStandSEPERATS3TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM3, bSEPERATS3TM3, rSEPERATS3TM3, rQuadSEPERATS3TM3, aStandSEPERATS3TM3, bStandSEPERATS3TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM4, bSEPERATS3TM4, rSEPERATS3TM4, rQuadSEPERATS3TM4, aStandSEPERATS3TM4, bStandSEPERATS3TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM5, bSEPERATS3TM5, rSEPERATS3TM5, rQuadSEPERATS3TM5, aStandSEPERATS3TM5, bStandSEPERATS3TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS3TM7, bSEPERATS3TM7, rSEPERATS3TM7, rQuadSEPERATS3TM7, aStandSEPERATS3TM7, bStandSEPERATS3TM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS3slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS3slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS3slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS3slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS3slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS3slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS3slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT3TM1[i,j] = (aSEPERATS3TM1 + (bSEPERATS3TM1 * REFS3TM1[i,j]));
                    OUT3TM2[i,j] = (aSEPERATS3TM2 + (bSEPERATS3TM2 * REFS3TM2[i,j]));
                    OUT3TM3[i,j] = (aSEPERATS3TM3 + (bSEPERATS3TM3 * REFS3TM3[i,j]));
                    OUT3TM4[i,j] = (aSEPERATS3TM4 + (bSEPERATS3TM4 * REFS3TM4[i,j]));
                    OUT3TM5[i,j] = (aSEPERATS3TM5 + (bSEPERATS3TM5 * REFS3TM5[i,j]));
                    OUT3TM7[i,j] = (aSEPERATS3TM7 + (bSEPERATS3TM7 * REFS3TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3TM1);
        	CreatePyramid(OUT3TM2);
        	CreatePyramid(OUT3TM3);
        	CreatePyramid(OUT3TM4);
        	CreatePyramid(OUT3TM5);
        	CreatePyramid(OUT3TM7);
        
        	CreateHistogram(OUT3TM1);
        	CreateHistogram(OUT3TM2);
        	CreateHistogram(OUT3TM3);
        	CreateHistogram(OUT3TM4);
        	CreateHistogram(OUT3TM5);
        	CreateHistogram(OUT3TM7);
            CloseRaster(REFS3TM1);
            CloseRaster(REFS3TM2);
            CloseRaster(REFS3TM3);
            CloseRaster(REFS3TM4);
            CloseRaster(REFS3TM5);
            CloseRaster(REFS3TM7);
    
            CloseRaster(OUT3TM1);
            CloseRaster(OUT3TM2);
            CloseRaster(OUT3TM3);
            CloseRaster(OUT3TM4);
            CloseRaster(OUT3TM5);
            CloseRaster(OUT3TM7);
        
        	printf("Scene 3 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            { 
            numeric xAritSEPERATS3MSS1, xAritSEPERATS3MSS2, xAritSEPERATS3MSS4;
            numeric yAritSEPERATS3MSS1, yAritSEPERATS3MSS2, yAritSEPERATS3MSS4;
    
            numeric aSEPERATS3MSS1, aSEPERATS3MSS2, aSEPERATS3MSS4;
            numeric bSEPERATS3MSS1, bSEPERATS3MSS2, bSEPERATS3MSS4;
            numeric rSEPERATS3MSS1, rSEPERATS3MSS2, rSEPERATS3MSS4;
            numeric rQuadSEPERATS3MSS1, rQuadSEPERATS3MSS2, rQuadSEPERATS3MSS4;
            numeric syxSEPERATS3MSS1, syxSEPERATS3MSS2, syxSEPERATS3MSS4;
            numeric bStandSEPERATS3MSS1, bStandSEPERATS3MSS2, bStandSEPERATS3MSS4;
            numeric aStandSEPERATS3MSS1, aStandSEPERATS3MSS2, aStandSEPERATS3MSS4;
    
            numeric xSEPERATS3MSS1 = 0;
            numeric xSEPERATS3MSS2 = 0;
            numeric xSEPERATS3MSS4 = 0;
    
            numeric xQuadSEPERATS3MSS1 = 0;
            numeric xQuadSEPERATS3MSS2 = 0;
            numeric xQuadSEPERATS3MSS4 = 0;
    
            numeric ySEPERATS3MSS1 = 0;
            numeric ySEPERATS3MSS2 = 0;
            numeric ySEPERATS3MSS4 = 0;
    
            numeric yQuadSEPERATS3MSS1 = 0;
            numeric yQuadSEPERATS3MSS2 = 0;
            numeric yQuadSEPERATS3MSS4 = 0;
    
            numeric xySEPERATS3MSS1 = 0;
            numeric xySEPERATS3MSS2 = 0;
            numeric xySEPERATS3MSS4 = 0;
    
            numeric xxAritQuadSEPERATS3MSS1 = 0;
            numeric xxAritQuadSEPERATS3MSS2 = 0;
            numeric xxAritQuadSEPERATS3MSS4 = 0;
    
            numeric yyAritQuadSEPERATS3MSS1 = 0;
            numeric yyAritQuadSEPERATS3MSS2 = 0;
            numeric yyAritQuadSEPERATS3MSS4 = 0;
    
            numeric qXYSEPERATS3MSS1 = 0;
            numeric qXYSEPERATS3MSS2 = 0;
            numeric qXYSEPERATS3MSS4 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS3MSS1 = xSEPERATS3MSS1 + pifSEPERATS1S3TM2arrayRAND[m];
                xSEPERATS3MSS2 = xSEPERATS3MSS2 + pifSEPERATS1S3TM3arrayRAND[m];
                xSEPERATS3MSS4 = xSEPERATS3MSS4 + pifSEPERATS1S3TM4arrayRAND[m];
    
                xQuadSEPERATS3MSS1 = (xQuadSEPERATS3MSS1 + (pifSEPERATS1S3TM2arrayRAND[m]^2));
                xQuadSEPERATS3MSS2 = (xQuadSEPERATS3MSS2 + (pifSEPERATS1S3TM3arrayRAND[m]^2));
                xQuadSEPERATS3MSS4 = (xQuadSEPERATS3MSS4 + (pifSEPERATS1S3TM4arrayRAND[m]^2));
    
                ySEPERATS3MSS1 = ySEPERATS3MSS1 + pifSEPERATS3slaveMSS1arrayRAND[m];
                ySEPERATS3MSS2 = ySEPERATS3MSS2 + pifSEPERATS3slaveMSS2arrayRAND[m];
                ySEPERATS3MSS4 = ySEPERATS3MSS4 + pifSEPERATS3slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS3MSS1 = (yQuadSEPERATS3MSS1 + (pifSEPERATS3slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS3MSS2 = (yQuadSEPERATS3MSS2 + (pifSEPERATS3slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS3MSS4 = (yQuadSEPERATS3MSS4 + (pifSEPERATS3slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS3MSS1 = (xySEPERATS3MSS1 + (pifSEPERATS1S3TM2arrayRAND[m] * pifSEPERATS3slaveMSS1arrayRAND[m]));
                xySEPERATS3MSS2 = (xySEPERATS3MSS2 + (pifSEPERATS1S3TM3arrayRAND[m] * pifSEPERATS3slaveMSS2arrayRAND[m]));
                xySEPERATS3MSS4 = (xySEPERATS3MSS4 + (pifSEPERATS1S3TM4arrayRAND[m] * pifSEPERATS3slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS3MSS1 = xSEPERATS3MSS1 / minPifVAL;
            xAritSEPERATS3MSS2 = xSEPERATS3MSS2 / minPifVAL;
            xAritSEPERATS3MSS4 = xSEPERATS3MSS4 / minPifVAL;
    
            yAritSEPERATS3MSS1 = ySEPERATS3MSS1 / minPifVAL;
            yAritSEPERATS3MSS2 = ySEPERATS3MSS2 / minPifVAL;
            yAritSEPERATS3MSS4 = ySEPERATS3MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3MSS1 = (xxAritQuadSEPERATS3MSS1 + ((pifSEPERATS1S3TM2arrayRAND[n] - xAritSEPERATS3MSS1)^2));
                xxAritQuadSEPERATS3MSS2 = (xxAritQuadSEPERATS3MSS2 + ((pifSEPERATS1S3TM3arrayRAND[n] - xAritSEPERATS3MSS2)^2));
                xxAritQuadSEPERATS3MSS4 = (xxAritQuadSEPERATS3MSS4 + ((pifSEPERATS1S3TM4arrayRAND[n] - xAritSEPERATS3MSS4)^2));
    
                yyAritQuadSEPERATS3MSS1 = (yyAritQuadSEPERATS3MSS1 + ((pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)^2));
                yyAritQuadSEPERATS3MSS2 = (yyAritQuadSEPERATS3MSS2 + ((pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)^2));
                yyAritQuadSEPERATS3MSS3 = (yyAritQuadSEPERATS3MSS3 + ((pifSEPERATS3slaveMSS3arrayRAND[n] - yAritSEPERATS3MSS3)^2));
                yyAritQuadSEPERATS3MSS4 = (yyAritQuadSEPERATS3MSS4 + ((pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)^2));
    
                qXYSEPERATS3MSS1 = (qXYSEPERATS3MSS1 + ((pifSEPERATS1S3TM2arrayRAND[n] - xAritSEPERATS3MSS1) * (pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)));
                qXYSEPERATS3MSS2 = (qXYSEPERATS3MSS2 + ((pifSEPERATS1S3TM3arrayRAND[n] - xAritSEPERATS3MSS2) * (pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)));
                qXYSEPERATS3MSS4 = (qXYSEPERATS3MSS4 + ((pifSEPERATS1S3TM4arrayRAND[n] - xAritSEPERATS3MSS4) * (pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)));
            }
        
            aSEPERATS3MSS1 = (((xQuadSEPERATS3MSS1 * ySEPERATS3MSS1) - (xSEPERATS3MSS1 * xySEPERATS3MSS1)) / ((minPifVAL * xQuadSEPERATS3MSS1) - (xSEPERATS3MSS1^2)));
            aSEPERATS3MSS2 = (((xQuadSEPERATS3MSS2 * ySEPERATS3MSS2) - (xSEPERATS3MSS2 * xySEPERATS3MSS2)) / ((minPifVAL * xQuadSEPERATS3MSS2) - (xSEPERATS3MSS2^2)));
            aSEPERATS3MSS4 = (((xQuadSEPERATS3MSS4 * ySEPERATS3MSS4) - (xSEPERATS3MSS4 * xySEPERATS3MSS4)) / ((minPifVAL * xQuadSEPERATS3MSS4) - (xSEPERATS3MSS4^2)));
            
            bSEPERATS3MSS1 = qXYSEPERATS3MSS1 / xxAritQuadSEPERATS3MSS1;
            bSEPERATS3MSS2 = qXYSEPERATS3MSS2 / xxAritQuadSEPERATS3MSS2;
            bSEPERATS3MSS4 = qXYSEPERATS3MSS4 / xxAritQuadSEPERATS3MSS4;
    
            rSEPERATS3MSS1 = (qXYSEPERATS3MSS1 / ((xxAritQuadSEPERATS3MSS1 * yyAritQuadSEPERATS3MSS1)^0.5));
            rSEPERATS3MSS2 = (qXYSEPERATS3MSS2 / ((xxAritQuadSEPERATS3MSS2 * yyAritQuadSEPERATS3MSS2)^0.5));
            rSEPERATS3MSS4 = (qXYSEPERATS3MSS4 / ((xxAritQuadSEPERATS3MSS4 * yyAritQuadSEPERATS3MSS4)^0.5));
    
            rQuadSEPERATS3MSS1 = ((rSEPERATS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3MSS2 = ((rSEPERATS3MSS2^2) * 100);
            rQuadSEPERATS3MSS4 = ((rSEPERATS3MSS4^2) * 100);
        
            syxSEPERATS3MSS1 = (((yyAritQuadSEPERATS3MSS1 - ((qXYSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS2 = (((yyAritQuadSEPERATS3MSS2 - ((qXYSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS4 = (((yyAritQuadSEPERATS3MSS4 - ((qXYSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3MSS1 = (((syxSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)^0.5);
            bStandSEPERATS3MSS2 = (((syxSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)^0.5);
            bStandSEPERATS3MSS4 = (((syxSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)^0.5);
    
            aStandSEPERATS3MSS1 = (bStandSEPERATS3MSS1 * ((xQuadSEPERATS3MSS1 / minPifVAL)^0.5));
            aStandSEPERATS3MSS2 = (bStandSEPERATS3MSS2 * ((xQuadSEPERATS3MSS2 / minPifVAL)^0.5));
            aStandSEPERATS3MSS4 = (bStandSEPERATS3MSS4 * ((xQuadSEPERATS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS1, bSEPERATS3MSS1, rSEPERATS3MSS1, rQuadSEPERATS3MSS1, aStandSEPERATS3MSS1, bStandSEPERATS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS2, bSEPERATS3MSS2, rSEPERATS3MSS2, rQuadSEPERATS3MSS2, aStandSEPERATS3MSS2, bStandSEPERATS3MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS4, bSEPERATS3MSS4, rSEPERATS3MSS4, rQuadSEPERATS3MSS4, aStandSEPERATS3MSS4, bStandSEPERATS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS3slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS3slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS3slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aSEPERATS3MSS1 + (bSEPERATS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aSEPERATS3MSS2 + (bSEPERATS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = REFS3MSS3[i,j];
                    OUT3MSS4[i,j] = (aSEPERATS3MSS4 + (bSEPERATS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT3MSS1);
            CreatePyramid(OUT3MSS2);
            CreatePyramid(OUT3MSS3);
            CreatePyramid(OUT3MSS4);
        
            CreateHistogram(OUT3MSS1);
            CreateHistogram(OUT3MSS2);
            CreateHistogram(OUT3MSS3);
            CreateHistogram(OUT3MSS4);
            
            CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors4 == 7 )
            {
            numeric xAritSEPERATS4ETM1, xAritSEPERATS4ETM2, xAritSEPERATS4ETM3, xAritSEPERATS4ETM4, xAritSEPERATS4ETM5, xAritSEPERATS4ETM7;
            numeric yAritSEPERATS4ETM1, yAritSEPERATS4ETM2, yAritSEPERATS4ETM3, yAritSEPERATS4ETM4, yAritSEPERATS4ETM5, yAritSEPERATS4ETM7;
    
            numeric aSEPERATS4ETM1, aSEPERATS4ETM2, aSEPERATS4ETM3, aSEPERATS4ETM4, aSEPERATS4ETM5, aSEPERATS4ETM7;
            numeric bSEPERATS4ETM1, bSEPERATS4ETM2, bSEPERATS4ETM3, bSEPERATS4ETM4, bSEPERATS4ETM5, bSEPERATS4ETM7;
            numeric rSEPERATS4ETM1, rSEPERATS4ETM2, rSEPERATS4ETM3, rSEPERATS4ETM4, rSEPERATS4ETM5, rSEPERATS4ETM7;
            numeric rQuadSEPERATS4ETM1, rQuadSEPERATS4ETM2, rQuadSEPERATS4ETM3, rQuadSEPERATS4ETM4, rQuadSEPERATS4ETM5, rQuadSEPERATS4ETM7;
            numeric syxSEPERATS4ETM1, syxSEPERATS4ETM2, syxSEPERATS4ETM3, syxSEPERATS4ETM4, syxSEPERATS4ETM5, syxSEPERATS4ETM7;
            numeric bStandSEPERATS4ETM1, bStandSEPERATS4ETM2, bStandSEPERATS4ETM3, bStandSEPERATS4ETM4, bStandSEPERATS4ETM5, bStandSEPERATS4ETM7;
            numeric aStandSEPERATS4ETM1, aStandSEPERATS4ETM2, aStandSEPERATS4ETM3, aStandSEPERATS4ETM4, aStandSEPERATS4ETM5, aStandSEPERATS4ETM7;
    
            numeric xSEPERATS4ETM1 = 0;
            numeric xSEPERATS4ETM2 = 0;
            numeric xSEPERATS4ETM3 = 0;
            numeric xSEPERATS4ETM4 = 0;
            numeric xSEPERATS4ETM5 = 0;
            numeric xSEPERATS4ETM7 = 0;
    
            numeric xQuadSEPERATS4ETM1 = 0;
            numeric xQuadSEPERATS4ETM2 = 0;
            numeric xQuadSEPERATS4ETM3 = 0;
            numeric xQuadSEPERATS4ETM4 = 0;
            numeric xQuadSEPERATS4ETM5 = 0;
            numeric xQuadSEPERATS4ETM7 = 0;
    
            numeric ySEPERATS4ETM1 = 0;
            numeric ySEPERATS4ETM2 = 0;
            numeric ySEPERATS4ETM3 = 0;
            numeric ySEPERATS4ETM4 = 0;
            numeric ySEPERATS4ETM5 = 0;
            numeric ySEPERATS4ETM7 = 0;
    
            numeric yQuadSEPERATS4ETM1 = 0;
            numeric yQuadSEPERATS4ETM2 = 0;
            numeric yQuadSEPERATS4ETM3 = 0;
            numeric yQuadSEPERATS4ETM4 = 0;
            numeric yQuadSEPERATS4ETM5 = 0;
            numeric yQuadSEPERATS4ETM7 = 0;
    
            numeric xySEPERATS4ETM1 = 0;
            numeric xySEPERATS4ETM2 = 0;
            numeric xySEPERATS4ETM3 = 0;
            numeric xySEPERATS4ETM4 = 0;
            numeric xySEPERATS4ETM5 = 0;
            numeric xySEPERATS4ETM7 = 0;
    
            numeric xxAritQuadSEPERATS4ETM1 = 0;
            numeric xxAritQuadSEPERATS4ETM2 = 0;
            numeric xxAritQuadSEPERATS4ETM3 = 0;
            numeric xxAritQuadSEPERATS4ETM4 = 0;
            numeric xxAritQuadSEPERATS4ETM5 = 0;
            numeric xxAritQuadSEPERATS4ETM7 = 0;
    
            numeric yyAritQuadSEPERATS4ETM1 = 0;
            numeric yyAritQuadSEPERATS4ETM2 = 0;
            numeric yyAritQuadSEPERATS4ETM3 = 0;
            numeric yyAritQuadSEPERATS4ETM4 = 0;
            numeric yyAritQuadSEPERATS4ETM5 = 0;
            numeric yyAritQuadSEPERATS4ETM7 = 0;
    
            numeric qXYSEPERATS4ETM1 = 0;
            numeric qXYSEPERATS4ETM2 = 0;
            numeric qXYSEPERATS4ETM3 = 0;
            numeric qXYSEPERATS4ETM4 = 0;
            numeric qXYSEPERATS4ETM5 = 0;
            numeric qXYSEPERATS4ETM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS4ETM1 = xSEPERATS4ETM1 + pifSEPERATS1S4TM1arrayRAND[m];
                xSEPERATS4ETM2 = xSEPERATS4ETM2 + pifSEPERATS1S4TM2arrayRAND[m];
                xSEPERATS4ETM3 = xSEPERATS4ETM3 + pifSEPERATS1S4TM3arrayRAND[m];
                xSEPERATS4ETM4 = xSEPERATS4ETM4 + pifSEPERATS1S4TM4arrayRAND[m];
                xSEPERATS4ETM5 = xSEPERATS4ETM5 + pifSEPERATS1S4TM5arrayRAND[m];
                xSEPERATS4ETM7 = xSEPERATS4ETM7 + pifSEPERATS1S4TM7arrayRAND[m];
    
                xQuadSEPERATS4ETM1 = (xQuadSEPERATS4ETM1 + (pifSEPERATS1S4TM1arrayRAND[m]^2));
                xQuadSEPERATS4ETM2 = (xQuadSEPERATS4ETM2 + (pifSEPERATS1S4TM2arrayRAND[m]^2));
                xQuadSEPERATS4ETM3 = (xQuadSEPERATS4ETM3 + (pifSEPERATS1S4TM3arrayRAND[m]^2));
                xQuadSEPERATS4ETM4 = (xQuadSEPERATS4ETM4 + (pifSEPERATS1S4TM4arrayRAND[m]^2));
                xQuadSEPERATS4ETM5 = (xQuadSEPERATS4ETM5 + (pifSEPERATS1S4TM5arrayRAND[m]^2));
                xQuadSEPERATS4ETM7 = (xQuadSEPERATS4ETM7 + (pifSEPERATS1S4TM7arrayRAND[m]^2));
    
                ySEPERATS4ETM1 = ySEPERATS4ETM1 + pifSEPERATS4slaveETM1arrayRAND[m];
                ySEPERATS4ETM2 = ySEPERATS4ETM2 + pifSEPERATS4slaveETM2arrayRAND[m];
                ySEPERATS4ETM3 = ySEPERATS4ETM3 + pifSEPERATS4slaveETM3arrayRAND[m];
                ySEPERATS4ETM4 = ySEPERATS4ETM4 + pifSEPERATS4slaveETM4arrayRAND[m];
                ySEPERATS4ETM5 = ySEPERATS4ETM5 + pifSEPERATS4slaveETM5arrayRAND[m];
                ySEPERATS4ETM7 = ySEPERATS4ETM7 + pifSEPERATS4slaveETM7arrayRAND[m];
                
                yQuadSEPERATS4ETM1 = (yQuadSEPERATS4ETM1 + (pifSEPERATS4slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS4ETM2 = (yQuadSEPERATS4ETM2 + (pifSEPERATS4slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS4ETM3 = (yQuadSEPERATS4ETM3 + (pifSEPERATS4slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS4ETM4 = (yQuadSEPERATS4ETM4 + (pifSEPERATS4slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS4ETM5 = (yQuadSEPERATS4ETM5 + (pifSEPERATS4slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS4ETM7 = (yQuadSEPERATS4ETM7 + (pifSEPERATS4slaveETM7arrayRAND[m]^2));
    
                xySEPERATS4ETM1 = (xySEPERATS4ETM1 + (pifSEPERATS1S4TM1arrayRAND[m] * pifSEPERATS4slaveETM1arrayRAND[m]));
                xySEPERATS4ETM2 = (xySEPERATS4ETM2 + (pifSEPERATS1S4TM2arrayRAND[m] * pifSEPERATS4slaveETM2arrayRAND[m]));
                xySEPERATS4ETM3 = (xySEPERATS4ETM3 + (pifSEPERATS1S4TM3arrayRAND[m] * pifSEPERATS4slaveETM3arrayRAND[m]));
                xySEPERATS4ETM4 = (xySEPERATS4ETM4 + (pifSEPERATS1S4TM4arrayRAND[m] * pifSEPERATS4slaveETM4arrayRAND[m]));
                xySEPERATS4ETM5 = (xySEPERATS4ETM5 + (pifSEPERATS1S4TM5arrayRAND[m] * pifSEPERATS4slaveETM5arrayRAND[m]));
                xySEPERATS4ETM7 = (xySEPERATS4ETM7 + (pifSEPERATS1S4TM7arrayRAND[m] * pifSEPERATS4slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS4ETM1 = xSEPERATS4ETM1 / minPifVAL;
            xAritSEPERATS4ETM2 = xSEPERATS4ETM2 / minPifVAL;
            xAritSEPERATS4ETM3 = xSEPERATS4ETM3 / minPifVAL;
            xAritSEPERATS4ETM4 = xSEPERATS4ETM4 / minPifVAL;
            xAritSEPERATS4ETM5 = xSEPERATS4ETM5 / minPifVAL;
            xAritSEPERATS4ETM7 = xSEPERATS4ETM7 / minPifVAL;
    
            yAritSEPERATS4ETM1 = ySEPERATS4ETM1 / minPifVAL;
            yAritSEPERATS4ETM2 = ySEPERATS4ETM2 / minPifVAL;
            yAritSEPERATS4ETM3 = ySEPERATS4ETM3 / minPifVAL;
            yAritSEPERATS4ETM4 = ySEPERATS4ETM4 / minPifVAL;
            yAritSEPERATS4ETM5 = ySEPERATS4ETM5 / minPifVAL;
            yAritSEPERATS4ETM7 = ySEPERATS4ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4ETM1 = (xxAritQuadSEPERATS4ETM1 + ((pifSEPERATS1S4TM1arrayRAND[n] - xAritSEPERATS4ETM1)^2));
                xxAritQuadSEPERATS4ETM2 = (xxAritQuadSEPERATS4ETM2 + ((pifSEPERATS1S4TM2arrayRAND[n] - xAritSEPERATS4ETM2)^2));
                xxAritQuadSEPERATS4ETM3 = (xxAritQuadSEPERATS4ETM3 + ((pifSEPERATS1S4TM3arrayRAND[n] - xAritSEPERATS4ETM3)^2));
                xxAritQuadSEPERATS4ETM4 = (xxAritQuadSEPERATS4ETM4 + ((pifSEPERATS1S4TM4arrayRAND[n] - xAritSEPERATS4ETM4)^2));
                xxAritQuadSEPERATS4ETM5 = (xxAritQuadSEPERATS4ETM5 + ((pifSEPERATS1S4TM5arrayRAND[n] - xAritSEPERATS4ETM5)^2));
                xxAritQuadSEPERATS4ETM7 = (xxAritQuadSEPERATS4ETM7 + ((pifSEPERATS1S4TM7arrayRAND[n] - xAritSEPERATS4ETM7)^2));
    
                yyAritQuadSEPERATS4ETM1 = (yyAritQuadSEPERATS4ETM1 + ((pifSEPERATS4slaveETM1arrayRAND[n] - yAritSEPERATS4ETM1)^2));
                yyAritQuadSEPERATS4ETM2 = (yyAritQuadSEPERATS4ETM2 + ((pifSEPERATS4slaveETM2arrayRAND[n] - yAritSEPERATS4ETM2)^2));
                yyAritQuadSEPERATS4ETM3 = (yyAritQuadSEPERATS4ETM3 + ((pifSEPERATS4slaveETM3arrayRAND[n] - yAritSEPERATS4ETM3)^2));
                yyAritQuadSEPERATS4ETM4 = (yyAritQuadSEPERATS4ETM4 + ((pifSEPERATS4slaveETM4arrayRAND[n] - yAritSEPERATS4ETM4)^2));
                yyAritQuadSEPERATS4ETM5 = (yyAritQuadSEPERATS4ETM5 + ((pifSEPERATS4slaveETM5arrayRAND[n] - yAritSEPERATS4ETM5)^2));
                yyAritQuadSEPERATS4ETM7 = (yyAritQuadSEPERATS4ETM7 + ((pifSEPERATS4slaveETM7arrayRAND[n] - yAritSEPERATS4ETM7)^2));
    
                qXYSEPERATS4ETM1 = (qXYSEPERATS4ETM1 + ((pifSEPERATS1S4TM1arrayRAND[n] - xAritSEPERATS4ETM1) * (pifSEPERATS4slaveETM1arrayRAND[n] - yAritSEPERATS4ETM1)));
                qXYSEPERATS4ETM2 = (qXYSEPERATS4ETM2 + ((pifSEPERATS1S4TM2arrayRAND[n] - xAritSEPERATS4ETM2) * (pifSEPERATS4slaveETM2arrayRAND[n] - yAritSEPERATS4ETM2)));
                qXYSEPERATS4ETM3 = (qXYSEPERATS4ETM3 + ((pifSEPERATS1S4TM3arrayRAND[n] - xAritSEPERATS4ETM3) * (pifSEPERATS4slaveETM3arrayRAND[n] - yAritSEPERATS4ETM3)));
                qXYSEPERATS4ETM4 = (qXYSEPERATS4ETM4 + ((pifSEPERATS1S4TM4arrayRAND[n] - xAritSEPERATS4ETM4) * (pifSEPERATS4slaveETM4arrayRAND[n] - yAritSEPERATS4ETM4)));
                qXYSEPERATS4ETM5 = (qXYSEPERATS4ETM5 + ((pifSEPERATS1S4TM5arrayRAND[n] - xAritSEPERATS4ETM5) * (pifSEPERATS4slaveETM5arrayRAND[n] - yAritSEPERATS4ETM5)));
                qXYSEPERATS4ETM7 = (qXYSEPERATS4ETM7 + ((pifSEPERATS1S4TM7arrayRAND[n] - xAritSEPERATS4ETM7) * (pifSEPERATS4slaveETM7arrayRAND[n] - yAritSEPERATS4ETM7)));
            }
        
            aSEPERATS4ETM1 = (((xQuadSEPERATS4ETM1 * ySEPERATS4ETM1) - (xSEPERATS4ETM1 * xySEPERATS4ETM1)) / ((minPifVAL * xQuadSEPERATS4ETM1) - (xSEPERATS4ETM1^2)));
            aSEPERATS4ETM2 = (((xQuadSEPERATS4ETM2 * ySEPERATS4ETM2) - (xSEPERATS4ETM2 * xySEPERATS4ETM2)) / ((minPifVAL * xQuadSEPERATS4ETM2) - (xSEPERATS4ETM2^2)));
            aSEPERATS4ETM3 = (((xQuadSEPERATS4ETM3 * ySEPERATS4ETM3) - (xSEPERATS4ETM3 * xySEPERATS4ETM3)) / ((minPifVAL * xQuadSEPERATS4ETM3) - (xSEPERATS4ETM3^2)));
            aSEPERATS4ETM4 = (((xQuadSEPERATS4ETM4 * ySEPERATS4ETM4) - (xSEPERATS4ETM4 * xySEPERATS4ETM4)) / ((minPifVAL * xQuadSEPERATS4ETM4) - (xSEPERATS4ETM4^2)));
            aSEPERATS4ETM5 = (((xQuadSEPERATS4ETM5 * ySEPERATS4ETM5) - (xSEPERATS4ETM5 * xySEPERATS4ETM5)) / ((minPifVAL * xQuadSEPERATS4ETM5) - (xSEPERATS4ETM5^2)));
            aSEPERATS4ETM7 = (((xQuadSEPERATS4ETM7 * ySEPERATS4ETM7) - (xSEPERATS4ETM7 * xySEPERATS4ETM7)) / ((minPifVAL * xQuadSEPERATS4ETM7) - (xSEPERATS4ETM7^2)));
            
            bSEPERATS4ETM1 = qXYSEPERATS4ETM1 / xxAritQuadSEPERATS4ETM1;
            bSEPERATS4ETM2 = qXYSEPERATS4ETM2 / xxAritQuadSEPERATS4ETM2;
            bSEPERATS4ETM3 = qXYSEPERATS4ETM3 / xxAritQuadSEPERATS4ETM3;
            bSEPERATS4ETM4 = qXYSEPERATS4ETM4 / xxAritQuadSEPERATS4ETM4;
            bSEPERATS4ETM5 = qXYSEPERATS4ETM5 / xxAritQuadSEPERATS4ETM5;
            bSEPERATS4ETM7 = qXYSEPERATS4ETM7 / xxAritQuadSEPERATS4ETM7;
    
            rSEPERATS4ETM1 = (qXYSEPERATS4ETM1 / ((xxAritQuadSEPERATS4ETM1 * yyAritQuadSEPERATS4ETM1)^0.5));
            rSEPERATS4ETM2 = (qXYSEPERATS4ETM2 / ((xxAritQuadSEPERATS4ETM2 * yyAritQuadSEPERATS4ETM2)^0.5));
            rSEPERATS4ETM3 = (qXYSEPERATS4ETM3 / ((xxAritQuadSEPERATS4ETM3 * yyAritQuadSEPERATS4ETM3)^0.5));
            rSEPERATS4ETM4 = (qXYSEPERATS4ETM4 / ((xxAritQuadSEPERATS4ETM4 * yyAritQuadSEPERATS4ETM4)^0.5));
            rSEPERATS4ETM5 = (qXYSEPERATS4ETM5 / ((xxAritQuadSEPERATS4ETM5 * yyAritQuadSEPERATS4ETM5)^0.5));
            rSEPERATS4ETM7 = (qXYSEPERATS4ETM7 / ((xxAritQuadSEPERATS4ETM7 * yyAritQuadSEPERATS4ETM7)^0.5));
    
            rQuadSEPERATS4ETM1 = ((rSEPERATS4ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4ETM2 = ((rSEPERATS4ETM2^2) * 100);
            rQuadSEPERATS4ETM3 = ((rSEPERATS4ETM3^2) * 100);
            rQuadSEPERATS4ETM4 = ((rSEPERATS4ETM4^2) * 100);
            rQuadSEPERATS4ETM5 = ((rSEPERATS4ETM5^2) * 100);
            rQuadSEPERATS4ETM7 = ((rSEPERATS4ETM7^2) * 100);
        
            syxSEPERATS4ETM1 = (((yyAritQuadSEPERATS4ETM1 - ((qXYSEPERATS4ETM1^2) / xxAritQuadSEPERATS4ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM2 = (((yyAritQuadSEPERATS4ETM2 - ((qXYSEPERATS4ETM2^2) / xxAritQuadSEPERATS4ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM3 = (((yyAritQuadSEPERATS4ETM3 - ((qXYSEPERATS4ETM3^2) / xxAritQuadSEPERATS4ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM4 = (((yyAritQuadSEPERATS4ETM4 - ((qXYSEPERATS4ETM4^2) / xxAritQuadSEPERATS4ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM5 = (((yyAritQuadSEPERATS4ETM5 - ((qXYSEPERATS4ETM5^2) / xxAritQuadSEPERATS4ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM7 = (((yyAritQuadSEPERATS4ETM7 - ((qXYSEPERATS4ETM7^2) / xxAritQuadSEPERATS4ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4ETM1 = (((syxSEPERATS4ETM1^2) / xxAritQuadSEPERATS4ETM1)^0.5);
            bStandSEPERATS4ETM2 = (((syxSEPERATS4ETM2^2) / xxAritQuadSEPERATS4ETM2)^0.5);
            bStandSEPERATS4ETM3 = (((syxSEPERATS4ETM3^2) / xxAritQuadSEPERATS4ETM3)^0.5);
            bStandSEPERATS4ETM4 = (((syxSEPERATS4ETM4^2) / xxAritQuadSEPERATS4ETM4)^0.5);
            bStandSEPERATS4ETM5 = (((syxSEPERATS4ETM5^2) / xxAritQuadSEPERATS4ETM5)^0.5);
            bStandSEPERATS4ETM7 = (((syxSEPERATS4ETM7^2) / xxAritQuadSEPERATS4ETM7)^0.5);
    
            aStandSEPERATS4ETM1 = (bStandSEPERATS4ETM1 * ((xQuadSEPERATS4ETM1 / minPifVAL)^0.5));
            aStandSEPERATS4ETM2 = (bStandSEPERATS4ETM2 * ((xQuadSEPERATS4ETM2 / minPifVAL)^0.5));
            aStandSEPERATS4ETM3 = (bStandSEPERATS4ETM3 * ((xQuadSEPERATS4ETM3 / minPifVAL)^0.5));
            aStandSEPERATS4ETM4 = (bStandSEPERATS4ETM4 * ((xQuadSEPERATS4ETM4 / minPifVAL)^0.5));
            aStandSEPERATS4ETM5 = (bStandSEPERATS4ETM5 * ((xQuadSEPERATS4ETM5 / minPifVAL)^0.5));
            aStandSEPERATS4ETM7 = (bStandSEPERATS4ETM7 * ((xQuadSEPERATS4ETM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM1, bSEPERATS4ETM1, rSEPERATS4ETM1, rQuadSEPERATS4ETM1, aStandSEPERATS4ETM1, bStandSEPERATS4ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM2, bSEPERATS4ETM2, rSEPERATS4ETM2, rQuadSEPERATS4ETM2, aStandSEPERATS4ETM2, bStandSEPERATS4ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM3, bSEPERATS4ETM3, rSEPERATS4ETM3, rQuadSEPERATS4ETM3, aStandSEPERATS4ETM3, bStandSEPERATS4ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM4, bSEPERATS4ETM4, rSEPERATS4ETM4, rQuadSEPERATS4ETM4, aStandSEPERATS4ETM4, bStandSEPERATS4ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM5, bSEPERATS4ETM5, rSEPERATS4ETM5, rQuadSEPERATS4ETM5, aStandSEPERATS4ETM5, bStandSEPERATS4ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS4ETM7, bSEPERATS4ETM7, rSEPERATS4ETM7, rQuadSEPERATS4ETM7, aStandSEPERATS4ETM7, bStandSEPERATS4ETM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS4slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS4slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS4slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS4slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS4slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS4slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS4slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT4ETM1[i,j] = (aSEPERATS4ETM1 + (bSEPERATS4ETM1 * REFS4ETM1[i,j]));
                    OUT4ETM2[i,j] = (aSEPERATS4ETM2 + (bSEPERATS4ETM2 * REFS4ETM2[i,j]));
                    OUT4ETM3[i,j] = (aSEPERATS4ETM3 + (bSEPERATS4ETM3 * REFS4ETM3[i,j]));
                    OUT4ETM4[i,j] = (aSEPERATS4ETM4 + (bSEPERATS4ETM4 * REFS4ETM4[i,j]));
                    OUT4ETM5[i,j] = (aSEPERATS4ETM5 + (bSEPERATS4ETM5 * REFS4ETM5[i,j]));
                    OUT4ETM7[i,j] = (aSEPERATS4ETM7 + (bSEPERATS4ETM7 * REFS4ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4ETM1);
        	CreatePyramid(OUT4ETM2);
        	CreatePyramid(OUT4ETM3);
        	CreatePyramid(OUT4ETM4);
        	CreatePyramid(OUT4ETM5);
        	CreatePyramid(OUT4ETM7);
        
        	CreateHistogram(OUT4ETM1);
        	CreateHistogram(OUT4ETM2);
        	CreateHistogram(OUT4ETM3);
        	CreateHistogram(OUT4ETM4);
        	CreateHistogram(OUT4ETM5);
        	CreateHistogram(OUT4ETM7);
            CloseRaster(REFS4ETM1);
            CloseRaster(REFS4ETM2);
            CloseRaster(REFS4ETM3);
            CloseRaster(REFS4ETM4);
            CloseRaster(REFS4ETM5);
            CloseRaster(REFS4ETM7);
    
            CloseRaster(OUT4ETM1);
            CloseRaster(OUT4ETM2);
            CloseRaster(OUT4ETM3);
            CloseRaster(OUT4ETM4);
            CloseRaster(OUT4ETM5);
            CloseRaster(OUT4ETM7);
        
        	printf("Scene 4 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors4 == 6 )
            {
            numeric xAritSEPERATS4TM1, xAritSEPERATS4TM2, xAritSEPERATS4TM3, xAritSEPERATS4TM4, xAritSEPERATS4TM5, xAritSEPERATS4TM7;
            numeric yAritSEPERATS4TM1, yAritSEPERATS4TM2, yAritSEPERATS4TM3, yAritSEPERATS4TM4, yAritSEPERATS4TM5, yAritSEPERATS4TM7;
    
            numeric aSEPERATS4TM1, aSEPERATS4TM2, aSEPERATS4TM3, aSEPERATS4TM4, aSEPERATS4TM5, aSEPERATS4TM7;
            numeric bSEPERATS4TM1, bSEPERATS4TM2, bSEPERATS4TM3, bSEPERATS4TM4, bSEPERATS4TM5, bSEPERATS4TM7;
            numeric rSEPERATS4TM1, rSEPERATS4TM2, rSEPERATS4TM3, rSEPERATS4TM4, rSEPERATS4TM5, rSEPERATS4TM7;
            numeric rQuadSEPERATS4TM1, rQuadSEPERATS4TM2, rQuadSEPERATS4TM3, rQuadSEPERATS4TM4, rQuadSEPERATS4TM5, rQuadSEPERATS4TM7;
            numeric syxSEPERATS4TM1, syxSEPERATS4TM2, syxSEPERATS4TM3, syxSEPERATS4TM4, syxSEPERATS4TM5, syxSEPERATS4TM7;
            numeric bStandSEPERATS4TM1, bStandSEPERATS4TM2, bStandSEPERATS4TM3, bStandSEPERATS4TM4, bStandSEPERATS4TM5, bStandSEPERATS4TM7;
            numeric aStandSEPERATS4TM1, aStandSEPERATS4TM2, aStandSEPERATS4TM3, aStandSEPERATS4TM4, aStandSEPERATS4TM5, aStandSEPERATS4TM7;
    
            numeric xSEPERATS4TM1 = 0;
            numeric xSEPERATS4TM2 = 0;
            numeric xSEPERATS4TM3 = 0;
            numeric xSEPERATS4TM4 = 0;
            numeric xSEPERATS4TM5 = 0;
            numeric xSEPERATS4TM7 = 0;
    
            numeric xQuadSEPERATS4TM1 = 0;
            numeric xQuadSEPERATS4TM2 = 0;
            numeric xQuadSEPERATS4TM3 = 0;
            numeric xQuadSEPERATS4TM4 = 0;
            numeric xQuadSEPERATS4TM5 = 0;
            numeric xQuadSEPERATS4TM7 = 0;
    
            numeric ySEPERATS4TM1 = 0;
            numeric ySEPERATS4TM2 = 0;
            numeric ySEPERATS4TM3 = 0;
            numeric ySEPERATS4TM4 = 0;
            numeric ySEPERATS4TM5 = 0;
            numeric ySEPERATS4TM7 = 0;
    
            numeric yQuadSEPERATS4TM1 = 0;
            numeric yQuadSEPERATS4TM2 = 0;
            numeric yQuadSEPERATS4TM3 = 0;
            numeric yQuadSEPERATS4TM4 = 0;
            numeric yQuadSEPERATS4TM5 = 0;
            numeric yQuadSEPERATS4TM7 = 0;
    
            numeric xySEPERATS4TM1 = 0;
            numeric xySEPERATS4TM2 = 0;
            numeric xySEPERATS4TM3 = 0;
            numeric xySEPERATS4TM4 = 0;
            numeric xySEPERATS4TM5 = 0;
            numeric xySEPERATS4TM7 = 0;
    
            numeric xxAritQuadSEPERATS4TM1 = 0;
            numeric xxAritQuadSEPERATS4TM2 = 0;
            numeric xxAritQuadSEPERATS4TM3 = 0;
            numeric xxAritQuadSEPERATS4TM4 = 0;
            numeric xxAritQuadSEPERATS4TM5 = 0;
            numeric xxAritQuadSEPERATS4TM7 = 0;
    
            numeric yyAritQuadSEPERATS4TM1 = 0;
            numeric yyAritQuadSEPERATS4TM2 = 0;
            numeric yyAritQuadSEPERATS4TM3 = 0;
            numeric yyAritQuadSEPERATS4TM4 = 0;
            numeric yyAritQuadSEPERATS4TM5 = 0;
            numeric yyAritQuadSEPERATS4TM7 = 0;
    
            numeric qXYSEPERATS4TM1 = 0;
            numeric qXYSEPERATS4TM2 = 0;
            numeric qXYSEPERATS4TM3 = 0;
            numeric qXYSEPERATS4TM4 = 0;
            numeric qXYSEPERATS4TM5 = 0;
            numeric qXYSEPERATS4TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS4TM1 = xSEPERATS4TM1 + pifSEPERATS1S4TM1arrayRAND[m];
                xSEPERATS4TM2 = xSEPERATS4TM2 + pifSEPERATS1S4TM2arrayRAND[m];
                xSEPERATS4TM3 = xSEPERATS4TM3 + pifSEPERATS1S4TM3arrayRAND[m];
                xSEPERATS4TM4 = xSEPERATS4TM4 + pifSEPERATS1S4TM4arrayRAND[m];
                xSEPERATS4TM5 = xSEPERATS4TM5 + pifSEPERATS1S4TM5arrayRAND[m];
                xSEPERATS4TM7 = xSEPERATS4TM7 + pifSEPERATS1S4TM7arrayRAND[m];
    
                xQuadSEPERATS4TM1 = (xQuadSEPERATS4TM1 + (pifSEPERATS1S4TM1arrayRAND[m]^2));
                xQuadSEPERATS4TM2 = (xQuadSEPERATS4TM2 + (pifSEPERATS1S4TM2arrayRAND[m]^2));
                xQuadSEPERATS4TM3 = (xQuadSEPERATS4TM3 + (pifSEPERATS1S4TM3arrayRAND[m]^2));
                xQuadSEPERATS4TM4 = (xQuadSEPERATS4TM4 + (pifSEPERATS1S4TM4arrayRAND[m]^2));
                xQuadSEPERATS4TM5 = (xQuadSEPERATS4TM5 + (pifSEPERATS1S4TM5arrayRAND[m]^2));
                xQuadSEPERATS4TM7 = (xQuadSEPERATS4TM7 + (pifSEPERATS1S4TM7arrayRAND[m]^2));
    
                ySEPERATS4TM1 = ySEPERATS4TM1 + pifSEPERATS4slaveTM1arrayRAND[m];
                ySEPERATS4TM2 = ySEPERATS4TM2 + pifSEPERATS4slaveTM2arrayRAND[m];
                ySEPERATS4TM3 = ySEPERATS4TM3 + pifSEPERATS4slaveTM3arrayRAND[m];
                ySEPERATS4TM4 = ySEPERATS4TM4 + pifSEPERATS4slaveTM4arrayRAND[m];
                ySEPERATS4TM5 = ySEPERATS4TM5 + pifSEPERATS4slaveTM5arrayRAND[m];
                ySEPERATS4TM7 = ySEPERATS4TM7 + pifSEPERATS4slaveTM7arrayRAND[m];
                
                yQuadSEPERATS4TM1 = (yQuadSEPERATS4TM1 + (pifSEPERATS4slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS4TM2 = (yQuadSEPERATS4TM2 + (pifSEPERATS4slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS4TM3 = (yQuadSEPERATS4TM3 + (pifSEPERATS4slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS4TM4 = (yQuadSEPERATS4TM4 + (pifSEPERATS4slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS4TM5 = (yQuadSEPERATS4TM5 + (pifSEPERATS4slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS4TM7 = (yQuadSEPERATS4TM7 + (pifSEPERATS4slaveTM7arrayRAND[m]^2));
    
                xySEPERATS4TM1 = (xySEPERATS4TM1 + (pifSEPERATS1S4TM1arrayRAND[m] * pifSEPERATS4slaveTM1arrayRAND[m]));
                xySEPERATS4TM2 = (xySEPERATS4TM2 + (pifSEPERATS1S4TM2arrayRAND[m] * pifSEPERATS4slaveTM2arrayRAND[m]));
                xySEPERATS4TM3 = (xySEPERATS4TM3 + (pifSEPERATS1S4TM3arrayRAND[m] * pifSEPERATS4slaveTM3arrayRAND[m]));
                xySEPERATS4TM4 = (xySEPERATS4TM4 + (pifSEPERATS1S4TM4arrayRAND[m] * pifSEPERATS4slaveTM4arrayRAND[m]));
                xySEPERATS4TM5 = (xySEPERATS4TM5 + (pifSEPERATS1S4TM5arrayRAND[m] * pifSEPERATS4slaveTM5arrayRAND[m]));
                xySEPERATS4TM7 = (xySEPERATS4TM7 + (pifSEPERATS1S4TM7arrayRAND[m] * pifSEPERATS4slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS4TM1 = xSEPERATS4TM1 / minPifVAL;
            xAritSEPERATS4TM2 = xSEPERATS4TM2 / minPifVAL;
            xAritSEPERATS4TM3 = xSEPERATS4TM3 / minPifVAL;
            xAritSEPERATS4TM4 = xSEPERATS4TM4 / minPifVAL;
            xAritSEPERATS4TM5 = xSEPERATS4TM5 / minPifVAL;
            xAritSEPERATS4TM7 = xSEPERATS4TM7 / minPifVAL;
    
            yAritSEPERATS4TM1 = ySEPERATS4TM1 / minPifVAL;
            yAritSEPERATS4TM2 = ySEPERATS4TM2 / minPifVAL;
            yAritSEPERATS4TM3 = ySEPERATS4TM3 / minPifVAL;
            yAritSEPERATS4TM4 = ySEPERATS4TM4 / minPifVAL;
            yAritSEPERATS4TM5 = ySEPERATS4TM5 / minPifVAL;
            yAritSEPERATS4TM7 = ySEPERATS4TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4TM1 = (xxAritQuadSEPERATS4TM1 + ((pifSEPERATS1S4TM1arrayRAND[n] - xAritSEPERATS4TM1)^2));
                xxAritQuadSEPERATS4TM2 = (xxAritQuadSEPERATS4TM2 + ((pifSEPERATS1S4TM2arrayRAND[n] - xAritSEPERATS4TM2)^2));
                xxAritQuadSEPERATS4TM3 = (xxAritQuadSEPERATS4TM3 + ((pifSEPERATS1S4TM3arrayRAND[n] - xAritSEPERATS4TM3)^2));
                xxAritQuadSEPERATS4TM4 = (xxAritQuadSEPERATS4TM4 + ((pifSEPERATS1S4TM4arrayRAND[n] - xAritSEPERATS4TM4)^2));
                xxAritQuadSEPERATS4TM5 = (xxAritQuadSEPERATS4TM5 + ((pifSEPERATS1S4TM5arrayRAND[n] - xAritSEPERATS4TM5)^2));
                xxAritQuadSEPERATS4TM7 = (xxAritQuadSEPERATS4TM7 + ((pifSEPERATS1S4TM7arrayRAND[n] - xAritSEPERATS4TM7)^2));
    
                yyAritQuadSEPERATS4TM1 = (yyAritQuadSEPERATS4TM1 + ((pifSEPERATS4slaveTM1arrayRAND[n] - yAritSEPERATS4TM1)^2));
                yyAritQuadSEPERATS4TM2 = (yyAritQuadSEPERATS4TM2 + ((pifSEPERATS4slaveTM2arrayRAND[n] - yAritSEPERATS4TM2)^2));
                yyAritQuadSEPERATS4TM3 = (yyAritQuadSEPERATS4TM3 + ((pifSEPERATS4slaveTM3arrayRAND[n] - yAritSEPERATS4TM3)^2));
                yyAritQuadSEPERATS4TM4 = (yyAritQuadSEPERATS4TM4 + ((pifSEPERATS4slaveTM4arrayRAND[n] - yAritSEPERATS4TM4)^2));
                yyAritQuadSEPERATS4TM5 = (yyAritQuadSEPERATS4TM5 + ((pifSEPERATS4slaveTM5arrayRAND[n] - yAritSEPERATS4TM5)^2));
                yyAritQuadSEPERATS4TM7 = (yyAritQuadSEPERATS4TM7 + ((pifSEPERATS4slaveTM7arrayRAND[n] - yAritSEPERATS4TM7)^2));
    
                qXYSEPERATS4TM1 = (qXYSEPERATS4TM1 + ((pifSEPERATS1S4TM1arrayRAND[n] - xAritSEPERATS4TM1) * (pifSEPERATS4slaveTM1arrayRAND[n] - yAritSEPERATS4TM1)));
                qXYSEPERATS4TM2 = (qXYSEPERATS4TM2 + ((pifSEPERATS1S4TM2arrayRAND[n] - xAritSEPERATS4TM2) * (pifSEPERATS4slaveTM2arrayRAND[n] - yAritSEPERATS4TM2)));
                qXYSEPERATS4TM3 = (qXYSEPERATS4TM3 + ((pifSEPERATS1S4TM3arrayRAND[n] - xAritSEPERATS4TM3) * (pifSEPERATS4slaveTM3arrayRAND[n] - yAritSEPERATS4TM3)));
                qXYSEPERATS4TM4 = (qXYSEPERATS4TM4 + ((pifSEPERATS1S4TM4arrayRAND[n] - xAritSEPERATS4TM4) * (pifSEPERATS4slaveTM4arrayRAND[n] - yAritSEPERATS4TM4)));
                qXYSEPERATS4TM5 = (qXYSEPERATS4TM5 + ((pifSEPERATS1S4TM5arrayRAND[n] - xAritSEPERATS4TM5) * (pifSEPERATS4slaveTM5arrayRAND[n] - yAritSEPERATS4TM5)));
                qXYSEPERATS4TM7 = (qXYSEPERATS4TM7 + ((pifSEPERATS1S4TM7arrayRAND[n] - xAritSEPERATS4TM7) * (pifSEPERATS4slaveTM7arrayRAND[n] - yAritSEPERATS4TM7)));
            }
        
            aSEPERATS4TM1 = (((xQuadSEPERATS4TM1 * ySEPERATS4TM1) - (xSEPERATS4TM1 * xySEPERATS4TM1)) / ((minPifVAL * xQuadSEPERATS4TM1) - (xSEPERATS4TM1^2)));
            aSEPERATS4TM2 = (((xQuadSEPERATS4TM2 * ySEPERATS4TM2) - (xSEPERATS4TM2 * xySEPERATS4TM2)) / ((minPifVAL * xQuadSEPERATS4TM2) - (xSEPERATS4TM2^2)));
            aSEPERATS4TM3 = (((xQuadSEPERATS4TM3 * ySEPERATS4TM3) - (xSEPERATS4TM3 * xySEPERATS4TM3)) / ((minPifVAL * xQuadSEPERATS4TM3) - (xSEPERATS4TM3^2)));
            aSEPERATS4TM4 = (((xQuadSEPERATS4TM4 * ySEPERATS4TM4) - (xSEPERATS4TM4 * xySEPERATS4TM4)) / ((minPifVAL * xQuadSEPERATS4TM4) - (xSEPERATS4TM4^2)));
            aSEPERATS4TM5 = (((xQuadSEPERATS4TM5 * ySEPERATS4TM5) - (xSEPERATS4TM5 * xySEPERATS4TM5)) / ((minPifVAL * xQuadSEPERATS4TM5) - (xSEPERATS4TM5^2)));
            aSEPERATS4TM7 = (((xQuadSEPERATS4TM7 * ySEPERATS4TM7) - (xSEPERATS4TM7 * xySEPERATS4TM7)) / ((minPifVAL * xQuadSEPERATS4TM7) - (xSEPERATS4TM7^2)));
            
            bSEPERATS4TM1 = qXYSEPERATS4TM1 / xxAritQuadSEPERATS4TM1;
            bSEPERATS4TM2 = qXYSEPERATS4TM2 / xxAritQuadSEPERATS4TM2;
            bSEPERATS4TM3 = qXYSEPERATS4TM3 / xxAritQuadSEPERATS4TM3;
            bSEPERATS4TM4 = qXYSEPERATS4TM4 / xxAritQuadSEPERATS4TM4;
            bSEPERATS4TM5 = qXYSEPERATS4TM5 / xxAritQuadSEPERATS4TM5;
            bSEPERATS4TM7 = qXYSEPERATS4TM7 / xxAritQuadSEPERATS4TM7;
    
            rSEPERATS4TM1 = (qXYSEPERATS4TM1 / ((xxAritQuadSEPERATS4TM1 * yyAritQuadSEPERATS4TM1)^0.5));
            rSEPERATS4TM2 = (qXYSEPERATS4TM2 / ((xxAritQuadSEPERATS4TM2 * yyAritQuadSEPERATS4TM2)^0.5));
            rSEPERATS4TM3 = (qXYSEPERATS4TM3 / ((xxAritQuadSEPERATS4TM3 * yyAritQuadSEPERATS4TM3)^0.5));
            rSEPERATS4TM4 = (qXYSEPERATS4TM4 / ((xxAritQuadSEPERATS4TM4 * yyAritQuadSEPERATS4TM4)^0.5));
            rSEPERATS4TM5 = (qXYSEPERATS4TM5 / ((xxAritQuadSEPERATS4TM5 * yyAritQuadSEPERATS4TM5)^0.5));
            rSEPERATS4TM7 = (qXYSEPERATS4TM7 / ((xxAritQuadSEPERATS4TM7 * yyAritQuadSEPERATS4TM7)^0.5));
    
            rQuadSEPERATS4TM1 = ((rSEPERATS4TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4TM2 = ((rSEPERATS4TM2^2) * 100);
            rQuadSEPERATS4TM3 = ((rSEPERATS4TM3^2) * 100);
            rQuadSEPERATS4TM4 = ((rSEPERATS4TM4^2) * 100);
            rQuadSEPERATS4TM5 = ((rSEPERATS4TM5^2) * 100);
            rQuadSEPERATS4TM7 = ((rSEPERATS4TM7^2) * 100);
        
            syxSEPERATS4TM1 = (((yyAritQuadSEPERATS4TM1 - ((qXYSEPERATS4TM1^2) / xxAritQuadSEPERATS4TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM2 = (((yyAritQuadSEPERATS4TM2 - ((qXYSEPERATS4TM2^2) / xxAritQuadSEPERATS4TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM3 = (((yyAritQuadSEPERATS4TM3 - ((qXYSEPERATS4TM3^2) / xxAritQuadSEPERATS4TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM4 = (((yyAritQuadSEPERATS4TM4 - ((qXYSEPERATS4TM4^2) / xxAritQuadSEPERATS4TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM5 = (((yyAritQuadSEPERATS4TM5 - ((qXYSEPERATS4TM5^2) / xxAritQuadSEPERATS4TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM7 = (((yyAritQuadSEPERATS4TM7 - ((qXYSEPERATS4TM7^2) / xxAritQuadSEPERATS4TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4TM1 = (((syxSEPERATS4TM1^2) / xxAritQuadSEPERATS4TM1)^0.5);
            bStandSEPERATS4TM2 = (((syxSEPERATS4TM2^2) / xxAritQuadSEPERATS4TM2)^0.5);
            bStandSEPERATS4TM3 = (((syxSEPERATS4TM3^2) / xxAritQuadSEPERATS4TM3)^0.5);
            bStandSEPERATS4TM4 = (((syxSEPERATS4TM4^2) / xxAritQuadSEPERATS4TM4)^0.5);
            bStandSEPERATS4TM5 = (((syxSEPERATS4TM5^2) / xxAritQuadSEPERATS4TM5)^0.5);
            bStandSEPERATS4TM7 = (((syxSEPERATS4TM7^2) / xxAritQuadSEPERATS4TM7)^0.5);
    
            aStandSEPERATS4TM1 = (bStandSEPERATS4TM1 * ((xQuadSEPERATS4TM1 / minPifVAL)^0.5));
            aStandSEPERATS4TM2 = (bStandSEPERATS4TM2 * ((xQuadSEPERATS4TM2 / minPifVAL)^0.5));
            aStandSEPERATS4TM3 = (bStandSEPERATS4TM3 * ((xQuadSEPERATS4TM3 / minPifVAL)^0.5));
            aStandSEPERATS4TM4 = (bStandSEPERATS4TM4 * ((xQuadSEPERATS4TM4 / minPifVAL)^0.5));
            aStandSEPERATS4TM5 = (bStandSEPERATS4TM5 * ((xQuadSEPERATS4TM5 / minPifVAL)^0.5));
            aStandSEPERATS4TM7 = (bStandSEPERATS4TM7 * ((xQuadSEPERATS4TM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM1, bSEPERATS4TM1, rSEPERATS4TM1, rQuadSEPERATS4TM1, aStandSEPERATS4TM1, bStandSEPERATS4TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM2, bSEPERATS4TM2, rSEPERATS4TM2, rQuadSEPERATS4TM2, aStandSEPERATS4TM2, bStandSEPERATS4TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM3, bSEPERATS4TM3, rSEPERATS4TM3, rQuadSEPERATS4TM3, aStandSEPERATS4TM3, bStandSEPERATS4TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM4, bSEPERATS4TM4, rSEPERATS4TM4, rQuadSEPERATS4TM4, aStandSEPERATS4TM4, bStandSEPERATS4TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM5, bSEPERATS4TM5, rSEPERATS4TM5, rQuadSEPERATS4TM5, aStandSEPERATS4TM5, bStandSEPERATS4TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS4TM7, bSEPERATS4TM7, rSEPERATS4TM7, rQuadSEPERATS4TM7, aStandSEPERATS4TM7, bStandSEPERATS4TM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS4slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS4slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS4slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS4slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS4slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS4slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS4slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT4TM1[i,j] = (aSEPERATS4TM1 + (bSEPERATS4TM1 * REFS4TM1[i,j]));
                    OUT4TM2[i,j] = (aSEPERATS4TM2 + (bSEPERATS4TM2 * REFS4TM2[i,j]));
                    OUT4TM3[i,j] = (aSEPERATS4TM3 + (bSEPERATS4TM3 * REFS4TM3[i,j]));
                    OUT4TM4[i,j] = (aSEPERATS4TM4 + (bSEPERATS4TM4 * REFS4TM4[i,j]));
                    OUT4TM5[i,j] = (aSEPERATS4TM5 + (bSEPERATS4TM5 * REFS4TM5[i,j]));
                    OUT4TM7[i,j] = (aSEPERATS4TM7 + (bSEPERATS4TM7 * REFS4TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4TM1);
        	CreatePyramid(OUT4TM2);
        	CreatePyramid(OUT4TM3);
        	CreatePyramid(OUT4TM4);
        	CreatePyramid(OUT4TM5);
        	CreatePyramid(OUT4TM7);
        
        	CreateHistogram(OUT4TM1);
        	CreateHistogram(OUT4TM2);
        	CreateHistogram(OUT4TM3);
        	CreateHistogram(OUT4TM4);
        	CreateHistogram(OUT4TM5);
        	CreateHistogram(OUT4TM7);
            CloseRaster(REFS4TM1);
            CloseRaster(REFS4TM2);
            CloseRaster(REFS4TM3);
            CloseRaster(REFS4TM4);
            CloseRaster(REFS4TM5);
            CloseRaster(REFS4TM7);
    
            CloseRaster(OUT4TM1);
            CloseRaster(OUT4TM2);
            CloseRaster(OUT4TM3);
            CloseRaster(OUT4TM4);
            CloseRaster(OUT4TM5);
            CloseRaster(OUT4TM7);
        
        	printf("Scene 4 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            { 
            numeric xAritSEPERATS4MSS1, xAritSEPERATS4MSS2, xAritSEPERATS4MSS4;
            numeric yAritSEPERATS4MSS1, yAritSEPERATS4MSS2, yAritSEPERATS4MSS4;
    
            numeric aSEPERATS4MSS1, aSEPERATS4MSS2, aSEPERATS4MSS4;
            numeric bSEPERATS4MSS1, bSEPERATS4MSS2, bSEPERATS4MSS4;
            numeric rSEPERATS4MSS1, rSEPERATS4MSS2, rSEPERATS4MSS4;
            numeric rQuadSEPERATS4MSS1, rQuadSEPERATS4MSS2, rQuadSEPERATS4MSS4;
            numeric syxSEPERATS4MSS1, syxSEPERATS4MSS2, syxSEPERATS4MSS4;
            numeric bStandSEPERATS4MSS1, bStandSEPERATS4MSS2, bStandSEPERATS4MSS4;
            numeric aStandSEPERATS4MSS1, aStandSEPERATS4MSS2, aStandSEPERATS4MSS4;
    
            numeric xSEPERATS4MSS1 = 0;
            numeric xSEPERATS4MSS2 = 0;
            numeric xSEPERATS4MSS4 = 0;
    
            numeric xQuadSEPERATS4MSS1 = 0;
            numeric xQuadSEPERATS4MSS2 = 0;
            numeric xQuadSEPERATS4MSS4 = 0;
    
            numeric ySEPERATS4MSS1 = 0;
            numeric ySEPERATS4MSS2 = 0;
            numeric ySEPERATS4MSS4 = 0;
    
            numeric yQuadSEPERATS4MSS1 = 0;
            numeric yQuadSEPERATS4MSS2 = 0;
            numeric yQuadSEPERATS4MSS4 = 0;
    
            numeric xySEPERATS4MSS1 = 0;
            numeric xySEPERATS4MSS2 = 0;
            numeric xySEPERATS4MSS4 = 0;
    
            numeric xxAritQuadSEPERATS4MSS1 = 0;
            numeric xxAritQuadSEPERATS4MSS2 = 0;
            numeric xxAritQuadSEPERATS4MSS4 = 0;
    
            numeric yyAritQuadSEPERATS4MSS1 = 0;
            numeric yyAritQuadSEPERATS4MSS2 = 0;
            numeric yyAritQuadSEPERATS4MSS4 = 0;
    
            numeric qXYSEPERATS4MSS1 = 0;
            numeric qXYSEPERATS4MSS2 = 0;
            numeric qXYSEPERATS4MSS4 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS4MSS1 = xSEPERATS4MSS1 + pifSEPERATS1S4TM2arrayRAND[m];
                xSEPERATS4MSS2 = xSEPERATS4MSS2 + pifSEPERATS1S4TM3arrayRAND[m];
                xSEPERATS4MSS4 = xSEPERATS4MSS4 + pifSEPERATS1S4TM4arrayRAND[m];
    
                xQuadSEPERATS4MSS1 = (xQuadSEPERATS4MSS1 + (pifSEPERATS1S4TM2arrayRAND[m]^2));
                xQuadSEPERATS4MSS2 = (xQuadSEPERATS4MSS2 + (pifSEPERATS1S4TM3arrayRAND[m]^2));
                xQuadSEPERATS4MSS4 = (xQuadSEPERATS4MSS4 + (pifSEPERATS1S4TM4arrayRAND[m]^2));
    
                ySEPERATS4MSS1 = ySEPERATS4MSS1 + pifSEPERATS4slaveMSS1arrayRAND[m];
                ySEPERATS4MSS2 = ySEPERATS4MSS2 + pifSEPERATS4slaveMSS2arrayRAND[m];
                ySEPERATS4MSS4 = ySEPERATS4MSS4 + pifSEPERATS4slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS4MSS1 = (yQuadSEPERATS4MSS1 + (pifSEPERATS4slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS4MSS2 = (yQuadSEPERATS4MSS2 + (pifSEPERATS4slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS4MSS4 = (yQuadSEPERATS4MSS4 + (pifSEPERATS4slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS4MSS1 = (xySEPERATS4MSS1 + (pifSEPERATS1S4TM2arrayRAND[m] * pifSEPERATS4slaveMSS1arrayRAND[m]));
                xySEPERATS4MSS2 = (xySEPERATS4MSS2 + (pifSEPERATS1S4TM3arrayRAND[m] * pifSEPERATS4slaveMSS2arrayRAND[m]));
                xySEPERATS4MSS4 = (xySEPERATS4MSS4 + (pifSEPERATS1S4TM4arrayRAND[m] * pifSEPERATS4slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS4MSS1 = xSEPERATS4MSS1 / minPifVAL;
            xAritSEPERATS4MSS2 = xSEPERATS4MSS2 / minPifVAL;
            xAritSEPERATS4MSS4 = xSEPERATS4MSS4 / minPifVAL;
    
            yAritSEPERATS4MSS1 = ySEPERATS4MSS1 / minPifVAL;
            yAritSEPERATS4MSS2 = ySEPERATS4MSS2 / minPifVAL;
            yAritSEPERATS4MSS4 = ySEPERATS4MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4MSS1 = (xxAritQuadSEPERATS4MSS1 + ((pifSEPERATS1S4TM2arrayRAND[n] - xAritSEPERATS4MSS1)^2));
                xxAritQuadSEPERATS4MSS2 = (xxAritQuadSEPERATS4MSS2 + ((pifSEPERATS1S4TM3arrayRAND[n] - xAritSEPERATS4MSS2)^2));
                xxAritQuadSEPERATS4MSS4 = (xxAritQuadSEPERATS4MSS4 + ((pifSEPERATS1S4TM4arrayRAND[n] - xAritSEPERATS4MSS4)^2));
    
                yyAritQuadSEPERATS4MSS1 = (yyAritQuadSEPERATS4MSS1 + ((pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)^2));
                yyAritQuadSEPERATS4MSS2 = (yyAritQuadSEPERATS4MSS2 + ((pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)^2));
                yyAritQuadSEPERATS4MSS4 = (yyAritQuadSEPERATS4MSS4 + ((pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)^2));
    
                qXYSEPERATS4MSS1 = (qXYSEPERATS4MSS1 + ((pifSEPERATS1S4TM2arrayRAND[n] - xAritSEPERATS4MSS1) * (pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)));
                qXYSEPERATS4MSS2 = (qXYSEPERATS4MSS2 + ((pifSEPERATS1S4TM3arrayRAND[n] - xAritSEPERATS4MSS2) * (pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)));
                qXYSEPERATS4MSS4 = (qXYSEPERATS4MSS4 + ((pifSEPERATS1S4TM4arrayRAND[n] - xAritSEPERATS4MSS4) * (pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)));
            }
        
            aSEPERATS4MSS1 = (((xQuadSEPERATS4MSS1 * ySEPERATS4MSS1) - (xSEPERATS4MSS1 * xySEPERATS4MSS1)) / ((minPifVAL * xQuadSEPERATS4MSS1) - (xSEPERATS4MSS1^2)));
            aSEPERATS4MSS2 = (((xQuadSEPERATS4MSS2 * ySEPERATS4MSS2) - (xSEPERATS4MSS2 * xySEPERATS4MSS2)) / ((minPifVAL * xQuadSEPERATS4MSS2) - (xSEPERATS4MSS2^2)));
            aSEPERATS4MSS4 = (((xQuadSEPERATS4MSS4 * ySEPERATS4MSS4) - (xSEPERATS4MSS4 * xySEPERATS4MSS4)) / ((minPifVAL * xQuadSEPERATS4MSS4) - (xSEPERATS4MSS4^2)));
            
            bSEPERATS4MSS1 = qXYSEPERATS4MSS1 / xxAritQuadSEPERATS4MSS1;
            bSEPERATS4MSS2 = qXYSEPERATS4MSS2 / xxAritQuadSEPERATS4MSS2;
            bSEPERATS4MSS4 = qXYSEPERATS4MSS4 / xxAritQuadSEPERATS4MSS4;
    
            rSEPERATS4MSS1 = (qXYSEPERATS4MSS1 / ((xxAritQuadSEPERATS4MSS1 * yyAritQuadSEPERATS4MSS1)^0.5));
            rSEPERATS4MSS2 = (qXYSEPERATS4MSS2 / ((xxAritQuadSEPERATS4MSS2 * yyAritQuadSEPERATS4MSS2)^0.5));
            rSEPERATS4MSS4 = (qXYSEPERATS4MSS4 / ((xxAritQuadSEPERATS4MSS4 * yyAritQuadSEPERATS4MSS4)^0.5));
    
            rQuadSEPERATS4MSS1 = ((rSEPERATS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4MSS2 = ((rSEPERATS4MSS2^2) * 100);
            rQuadSEPERATS4MSS4 = ((rSEPERATS4MSS4^2) * 100);
        
            syxSEPERATS4MSS1 = (((yyAritQuadSEPERATS4MSS1 - ((qXYSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS2 = (((yyAritQuadSEPERATS4MSS2 - ((qXYSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS4 = (((yyAritQuadSEPERATS4MSS4 - ((qXYSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4MSS1 = (((syxSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)^0.5);
            bStandSEPERATS4MSS2 = (((syxSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)^0.5);
            bStandSEPERATS4MSS4 = (((syxSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)^0.5);
    
            aStandSEPERATS4MSS1 = (bStandSEPERATS4MSS1 * ((xQuadSEPERATS4MSS1 / minPifVAL)^0.5));
            aStandSEPERATS4MSS2 = (bStandSEPERATS4MSS2 * ((xQuadSEPERATS4MSS2 / minPifVAL)^0.5));
            aStandSEPERATS4MSS4 = (bStandSEPERATS4MSS4 * ((xQuadSEPERATS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS1, bSEPERATS4MSS1, rSEPERATS4MSS1, rQuadSEPERATS4MSS1, aStandSEPERATS4MSS1, bStandSEPERATS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS2, bSEPERATS4MSS2, rSEPERATS4MSS2, rQuadSEPERATS4MSS2, aStandSEPERATS4MSS2, bStandSEPERATS4MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS4, bSEPERATS4MSS4, rSEPERATS4MSS4, rQuadSEPERATS4MSS4, aStandSEPERATS4MSS4, bStandSEPERATS4MSS4);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS4slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS4slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS4slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aSEPERATS4MSS1 + (bSEPERATS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aSEPERATS4MSS2 + (bSEPERATS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = REFS4MSS3[i,j];
                    OUT4MSS4[i,j] = (aSEPERATS4MSS4 + (bSEPERATS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT4MSS1);
            CreatePyramid(OUT4MSS2);
            CreatePyramid(OUT4MSS3);
            CreatePyramid(OUT4MSS4);
        
            CreateHistogram(OUT4MSS1);
            CreateHistogram(OUT4MSS2);
            CreateHistogram(OUT4MSS3);
            CreateHistogram(OUT4MSS4);
            
            CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
        }
        
        else
        {
        printf("Scene 1 - Master Scene (MSS):\n");
        printf("Scene 1 array values used for regression computation:\n");
	    printf("For Scene 1 (Master) and Slave (Scene 2):");
        printf("MSS1: %12f ", pifSEPERATS1S2MSS1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S2MSS1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S2MSS1arrayRAND[minPifVAL]);
    
        printf("MSS2: %12f ", pifSEPERATS1S2MSS2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S2MSS2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S2MSS2arrayRAND[minPifVAL]);
    
        printf("MSS3: %12f ", pifSEPERATS1S2MSS3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S2MSS3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S2MSS3arrayRAND[minPifVAL]);
    
        printf("MSS4: %12f ", pifSEPERATS1S2MSS4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S2MSS4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S2MSS4arrayRAND[minPifVAL]);
    
        
	    printf("For Scene 1 (Master) and Slave (Scene 3):");
        printf("MSS1: %12f ", pifSEPERATS1S3MSS1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S3MSS1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S3MSS1arrayRAND[minPifVAL]);
    
        printf("MSS2: %12f ", pifSEPERATS1S3MSS2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S3MSS2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S3MSS2arrayRAND[minPifVAL]);
    
        printf("MSS3: %12f ", pifSEPERATS1S3MSS3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S3MSS3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S3MSS3arrayRAND[minPifVAL]);
    
        printf("MSS4: %12f ", pifSEPERATS1S3MSS4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S3MSS4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S3MSS4arrayRAND[minPifVAL]);
	    printf("For Scene 1 (Master) and Slave (Scene 4):");
        printf("MSS1: %12f ", pifSEPERATS1S4MSS1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S4MSS1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S4MSS1arrayRAND[minPifVAL]);
    
        printf("MSS2: %12f ", pifSEPERATS1S4MSS2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S4MSS2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S4MSS2arrayRAND[minPifVAL]);
    
        printf("MSS3: %12f ", pifSEPERATS1S4MSS3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S4MSS3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S4MSS3arrayRAND[minPifVAL]);
    
        printf("MSS4: %12f ", pifSEPERATS1S4MSS4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS1S4MSS4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS1S4MSS4arrayRAND[minPifVAL]);
                for i = 1 to MSSlins
                {
                    for j = 1 to MSScols
                    {
                    OUT1MSS1[i,j] = REFS1MSS1[i,j];
                    OUT1MSS2[i,j] = REFS1MSS2[i,j];
                    OUT1MSS3[i,j] = REFS1MSS3[i,j];
                    OUT1MSS4[i,j] = REFS1MSS4[i,j];
                    }
                }
            
        CreatePyramid(OUT1MSS1);
        CreatePyramid(OUT1MSS2);
        CreatePyramid(OUT1MSS3);
        CreatePyramid(OUT1MSS4);
        
        CreateHistogram(OUT1MSS1);
        CreateHistogram(OUT1MSS2);
        CreateHistogram(OUT1MSS3);
        CreateHistogram(OUT1MSS4);
        
        CloseRaster(REFS1MSS1);
        CloseRaster(REFS1MSS2);
        CloseRaster(REFS1MSS3);
        CloseRaster(REFS1MSS4);
        
        CloseRaster(OUT1MSS1);
        CloseRaster(OUT1MSS2);
        CloseRaster(OUT1MSS3);
        CloseRaster(OUT1MSS4);
            
        printf("Scene 1 (Master) output was written, histogram created and pyramid written...\n\n\n"); 
             
            if ( sensors2 == 7 )
            {
                printf("Master: Scene 1 (MSS), Slave: Scene 2 (ETM) - IMPOSSIBLE...\n\n\n");            
            }
            
            else if ( sensors2 == 6 )
            {
                printf("Master: Scene 1 (MSS), Slave: Scene 2 (ETM) - IMPOSSIBLE...\n\n\n");            
            }
            
            else
            {
            numeric xAritSEPERATS2MSS1, xAritSEPERATS2MSS2, xAritSEPERATS2MSS3, xAritSEPERATS2MSS4;
            numeric yAritSEPERATS2MSS1, yAritSEPERATS2MSS2, yAritSEPERATS2MSS3, yAritSEPERATS2MSS4;
    
            numeric aSEPERATS2MSS1, aSEPERATS2MSS2, aSEPERATS2MSS3, aSEPERATS2MSS4;
            numeric bSEPERATS2MSS1, bSEPERATS2MSS2, bSEPERATS2MSS3, bSEPERATS2MSS4;
            numeric rSEPERATS2MSS1, rSEPERATS2MSS2, rSEPERATS2MSS3, rSEPERATS2MSS4;
            numeric rQuadSEPERATS2MSS1, rQuadSEPERATS2MSS2, rQuadSEPERATS2MSS3, rQuadSEPERATS2MSS4;
            numeric syxSEPERATS2MSS1, syxSEPERATS2MSS2, syxSEPERATS2MSS3, syxSEPERATS2MSS4;
            numeric bStandSEPERATS2MSS1, bStandSEPERATS2MSS2, bStandSEPERATS2MSS3, bStandSEPERATS2MSS4;
            numeric aStandSEPERATS2MSS1, aStandSEPERATS2MSS2, aStandSEPERATS2MSS3, aStandSEPERATS2MSS4;
    
            numeric xSEPERATS2MSS1 = 0;
            numeric xSEPERATS2MSS2 = 0;
            numeric xSEPERATS2MSS3 = 0;
            numeric xSEPERATS2MSS4 = 0;
    
            numeric xQuadSEPERATS2MSS1 = 0;
            numeric xQuadSEPERATS2MSS2 = 0;
            numeric xQuadSEPERATS2MSS3 = 0;
            numeric xQuadSEPERATS2MSS4 = 0;
    
            numeric ySEPERATS2MSS1 = 0;
            numeric ySEPERATS2MSS2 = 0;
            numeric ySEPERATS2MSS3 = 0;
            numeric ySEPERATS2MSS4 = 0;
    
            numeric yQuadSEPERATS2MSS1 = 0;
            numeric yQuadSEPERATS2MSS2 = 0;
            numeric yQuadSEPERATS2MSS3 = 0;
            numeric yQuadSEPERATS2MSS4 = 0;
    
            numeric xySEPERATS2MSS1 = 0;
            numeric xySEPERATS2MSS2 = 0;
            numeric xySEPERATS2MSS3 = 0;
            numeric xySEPERATS2MSS4 = 0;
    
            numeric xxAritQuadSEPERATS2MSS1 = 0;
            numeric xxAritQuadSEPERATS2MSS2 = 0;
            numeric xxAritQuadSEPERATS2MSS3 = 0;
            numeric xxAritQuadSEPERATS2MSS4 = 0;
    
            numeric yyAritQuadSEPERATS2MSS1 = 0;
            numeric yyAritQuadSEPERATS2MSS2 = 0;
            numeric yyAritQuadSEPERATS2MSS3 = 0;
            numeric yyAritQuadSEPERATS2MSS4 = 0;
    
            numeric qXYSEPERATS2MSS1 = 0;
            numeric qXYSEPERATS2MSS2 = 0;
            numeric qXYSEPERATS2MSS3 = 0;
            numeric qXYSEPERATS2MSS4 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS2MSS1 = xSEPERATS2MSS1 + pifSEPERATS1S2MSS1arrayRAND[m];
                xSEPERATS2MSS2 = xSEPERATS2MSS2 + pifSEPERATS1S2MSS2arrayRAND[m];
                xSEPERATS2MSS3 = xSEPERATS2MSS3 + pifSEPERATS1S2MSS3arrayRAND[m];
                xSEPERATS2MSS4 = xSEPERATS2MSS4 + pifSEPERATS1S2MSS4arrayRAND[m];
    
                xQuadSEPERATS2MSS1 = (xQuadSEPERATS2MSS1 + (pifSEPERATS1S2MSS1arrayRAND[m]^2));
                xQuadSEPERATS2MSS2 = (xQuadSEPERATS2MSS2 + (pifSEPERATS1S2MSS2arrayRAND[m]^2));
                xQuadSEPERATS2MSS3 = (xQuadSEPERATS2MSS3 + (pifSEPERATS1S2MSS3arrayRAND[m]^2));
                xQuadSEPERATS2MSS4 = (xQuadSEPERATS2MSS4 + (pifSEPERATS1S2MSS4arrayRAND[m]^2));
    
                ySEPERATS2MSS1 = ySEPERATS2MSS1 + pifSEPERATS2slaveMSS1arrayRAND[m];
                ySEPERATS2MSS2 = ySEPERATS2MSS2 + pifSEPERATS2slaveMSS2arrayRAND[m];
                ySEPERATS2MSS3 = ySEPERATS2MSS3 + pifSEPERATS2slaveMSS3arrayRAND[m];
                ySEPERATS2MSS4 = ySEPERATS2MSS4 + pifSEPERATS2slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS2MSS1 = (yQuadSEPERATS2MSS1 + (pifSEPERATS2slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS2MSS2 = (yQuadSEPERATS2MSS2 + (pifSEPERATS2slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS2MSS3 = (yQuadSEPERATS2MSS3 + (pifSEPERATS2slaveMSS3arrayRAND[m]^2));
                yQuadSEPERATS2MSS4 = (yQuadSEPERATS2MSS4 + (pifSEPERATS2slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS2MSS1 = (xySEPERATS2MSS1 + (pifSEPERATS1S2MSS1arrayRAND[m] * pifSEPERATS2slaveMSS1arrayRAND[m]));
                xySEPERATS2MSS2 = (xySEPERATS2MSS2 + (pifSEPERATS1S2MSS2arrayRAND[m] * pifSEPERATS2slaveMSS2arrayRAND[m]));
                xySEPERATS2MSS3 = (xySEPERATS2MSS3 + (pifSEPERATS1S2MSS3arrayRAND[m] * pifSEPERATS2slaveMSS3arrayRAND[m]));
                xySEPERATS2MSS4 = (xySEPERATS2MSS4 + (pifSEPERATS1S2MSS4arrayRAND[m] * pifSEPERATS2slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS2MSS1 = xSEPERATS2MSS1 / minPifVAL;
            xAritSEPERATS2MSS2 = xSEPERATS2MSS2 / minPifVAL;
            xAritSEPERATS2MSS3 = xSEPERATS2MSS3 / minPifVAL;
            xAritSEPERATS2MSS4 = xSEPERATS2MSS4 / minPifVAL;
    
            yAritSEPERATS2MSS1 = ySEPERATS2MSS1 / minPifVAL;
            yAritSEPERATS2MSS2 = ySEPERATS2MSS2 / minPifVAL;
            yAritSEPERATS2MSS3 = ySEPERATS2MSS3 / minPifVAL;
            yAritSEPERATS2MSS4 = ySEPERATS2MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2MSS1 = (xxAritQuadSEPERATS2MSS1 + ((pifSEPERATS1S2MSS1arrayRAND[n] - xAritSEPERATS2MSS1)^2));
                xxAritQuadSEPERATS2MSS2 = (xxAritQuadSEPERATS2MSS2 + ((pifSEPERATS1S2MSS2arrayRAND[n] - xAritSEPERATS2MSS2)^2));
                xxAritQuadSEPERATS2MSS3 = (xxAritQuadSEPERATS2MSS3 + ((pifSEPERATS1S2MSS3arrayRAND[n] - xAritSEPERATS2MSS3)^2));
                xxAritQuadSEPERATS2MSS4 = (xxAritQuadSEPERATS2MSS4 + ((pifSEPERATS1S2MSS4arrayRAND[n] - xAritSEPERATS2MSS4)^2));
    
                yyAritQuadSEPERATS2MSS1 = (yyAritQuadSEPERATS2MSS1 + ((pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)^2));
                yyAritQuadSEPERATS2MSS2 = (yyAritQuadSEPERATS2MSS2 + ((pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)^2));
                yyAritQuadSEPERATS2MSS3 = (yyAritQuadSEPERATS2MSS3 + ((pifSEPERATS2slaveMSS3arrayRAND[n] - yAritSEPERATS2MSS3)^2));
                yyAritQuadSEPERATS2MSS4 = (yyAritQuadSEPERATS2MSS4 + ((pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)^2));
    
                qXYSEPERATS2MSS1 = (qXYSEPERATS2MSS1 + ((pifSEPERATS1S2MSS1arrayRAND[n] - xAritSEPERATS2MSS1) * (pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)));
                qXYSEPERATS2MSS2 = (qXYSEPERATS2MSS2 + ((pifSEPERATS1S2MSS2arrayRAND[n] - xAritSEPERATS2MSS2) * (pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)));
                qXYSEPERATS2MSS3 = (qXYSEPERATS2MSS3 + ((pifSEPERATS1S2MSS3arrayRAND[n] - xAritSEPERATS2MSS3) * (pifSEPERATS2slaveMSS3arrayRAND[n] - yAritSEPERATS2MSS3)));
                qXYSEPERATS2MSS4 = (qXYSEPERATS2MSS4 + ((pifSEPERATS1S2MSS4arrayRAND[n] - xAritSEPERATS2MSS4) * (pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)));
            }
        
            aSEPERATS2MSS1 = (((xQuadSEPERATS2MSS1 * ySEPERATS2MSS1) - (xSEPERATS2MSS1 * xySEPERATS2MSS1)) / ((minPifVAL * xQuadSEPERATS2MSS1) - (xSEPERATS2MSS1^2)));
            aSEPERATS2MSS2 = (((xQuadSEPERATS2MSS2 * ySEPERATS2MSS2) - (xSEPERATS2MSS2 * xySEPERATS2MSS2)) / ((minPifVAL * xQuadSEPERATS2MSS2) - (xSEPERATS2MSS2^2)));
            aSEPERATS2MSS3 = (((xQuadSEPERATS2MSS3 * ySEPERATS2MSS3) - (xSEPERATS2MSS3 * xySEPERATS2MSS3)) / ((minPifVAL * xQuadSEPERATS2MSS3) - (xSEPERATS2MSS3^2)));
            aSEPERATS2MSS4 = (((xQuadSEPERATS2MSS4 * ySEPERATS2MSS4) - (xSEPERATS2MSS4 * xySEPERATS2MSS4)) / ((minPifVAL * xQuadSEPERATS2MSS4) - (xSEPERATS2MSS4^2)));
            
            bSEPERATS2MSS1 = qXYSEPERATS2MSS1 / xxAritQuadSEPERATS2MSS1;
            bSEPERATS2MSS2 = qXYSEPERATS2MSS2 / xxAritQuadSEPERATS2MSS2;
            bSEPERATS2MSS3 = qXYSEPERATS2MSS3 / xxAritQuadSEPERATS2MSS3;
            bSEPERATS2MSS4 = qXYSEPERATS2MSS4 / xxAritQuadSEPERATS2MSS4;
    
            rSEPERATS2MSS1 = (qXYSEPERATS2MSS1 / ((xxAritQuadSEPERATS2MSS1 * yyAritQuadSEPERATS2MSS1)^0.5));
            rSEPERATS2MSS2 = (qXYSEPERATS2MSS2 / ((xxAritQuadSEPERATS2MSS2 * yyAritQuadSEPERATS2MSS2)^0.5));
            rSEPERATS2MSS3 = (qXYSEPERATS2MSS3 / ((xxAritQuadSEPERATS2MSS3 * yyAritQuadSEPERATS2MSS3)^0.5));
            rSEPERATS2MSS4 = (qXYSEPERATS2MSS4 / ((xxAritQuadSEPERATS2MSS4 * yyAritQuadSEPERATS2MSS4)^0.5));
    
            rQuadSEPERATS2MSS1 = ((rSEPERATS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2MSS2 = ((rSEPERATS2MSS2^2) * 100);
            rQuadSEPERATS2MSS3 = ((rSEPERATS2MSS3^2) * 100);
            rQuadSEPERATS2MSS4 = ((rSEPERATS2MSS4^2) * 100);
        
            syxSEPERATS2MSS1 = (((yyAritQuadSEPERATS2MSS1 - ((qXYSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS2 = (((yyAritQuadSEPERATS2MSS2 - ((qXYSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS3 = (((yyAritQuadSEPERATS2MSS3 - ((qXYSEPERATS2MSS3^2) / xxAritQuadSEPERATS2MSS3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS4 = (((yyAritQuadSEPERATS2MSS4 - ((qXYSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2MSS1 = (((syxSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)^0.5);
            bStandSEPERATS2MSS2 = (((syxSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)^0.5);
            bStandSEPERATS2MSS3 = (((syxSEPERATS2MSS3^2) / xxAritQuadSEPERATS2MSS3)^0.5);
            bStandSEPERATS2MSS4 = (((syxSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)^0.5);
    
            aStandSEPERATS2MSS1 = (bStandSEPERATS2MSS1 * ((xQuadSEPERATS2MSS1 / minPifVAL)^0.5));
            aStandSEPERATS2MSS2 = (bStandSEPERATS2MSS2 * ((xQuadSEPERATS2MSS2 / minPifVAL)^0.5));
            aStandSEPERATS2MSS3 = (bStandSEPERATS2MSS3 * ((xQuadSEPERATS2MSS3 / minPifVAL)^0.5));
            aStandSEPERATS2MSS4 = (bStandSEPERATS2MSS4 * ((xQuadSEPERATS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS1, bSEPERATS2MSS1, rSEPERATS2MSS1, rQuadSEPERATS2MSS1, aStandSEPERATS2MSS1, bStandSEPERATS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS2, bSEPERATS2MSS2, rSEPERATS2MSS2, rQuadSEPERATS2MSS2, aStandSEPERATS2MSS2, bStandSEPERATS2MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS3, bSEPERATS2MSS3, rSEPERATS2MSS3, rQuadSEPERATS2MSS3, aStandSEPERATS2MSS3, bStandSEPERATS2MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS4, bSEPERATS2MSS4, rSEPERATS2MSS4, rQuadSEPERATS2MSS4, aStandSEPERATS2MSS4, bStandSEPERATS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS2slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS2slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifSEPERATS2slaveMSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS2slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aSEPERATS2MSS1 + (bSEPERATS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aSEPERATS2MSS2 + (bSEPERATS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = (aSEPERATS2MSS3 + (bSEPERATS2MSS3 * REFS2MSS3[i,j]));
                    OUT2MSS4[i,j] = (aSEPERATS2MSS4 + (bSEPERATS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT2MSS1);
            CreatePyramid(OUT2MSS2);
            CreatePyramid(OUT2MSS3);
            CreatePyramid(OUT2MSS4);
        
            CreateHistogram(OUT2MSS1);
            CreateHistogram(OUT2MSS2);
            CreateHistogram(OUT2MSS3);
            CreateHistogram(OUT2MSS4);
            
            CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors3 == 7 )
            {
                printf("Master: Scene 1 (MSS), Slave: Scene 3 (ETM) - IMPOSSIBLE...\n\n\n");            
            }
            
            else if ( sensors3 == 6 )
            {
                printf("Master: Scene 1 (MSS), Slave: Scene 3 (TM) - IMPOSSIBLE...\n\n\n");            
            }
            
            else
            {
            numeric xAritSEPERATS3MSS1, xAritSEPERATS3MSS2, xAritSEPERATS3MSS3, xAritSEPERATS3MSS4;
            numeric yAritSEPERATS3MSS1, yAritSEPERATS3MSS2, yAritSEPERATS3MSS3, yAritSEPERATS3MSS4;
    
            numeric aSEPERATS3MSS1, aSEPERATS3MSS2, aSEPERATS3MSS3, aSEPERATS3MSS4;
            numeric bSEPERATS3MSS1, bSEPERATS3MSS2, bSEPERATS3MSS3, bSEPERATS3MSS4;
            numeric rSEPERATS3MSS1, rSEPERATS3MSS2, rSEPERATS3MSS3, rSEPERATS3MSS4;
            numeric rQuadSEPERATS3MSS1, rQuadSEPERATS3MSS2, rQuadSEPERATS3MSS3, rQuadSEPERATS3MSS4;
            numeric syxSEPERATS3MSS1, syxSEPERATS3MSS2, syxSEPERATS3MSS3, syxSEPERATS3MSS4;
            numeric bStandSEPERATS3MSS1, bStandSEPERATS3MSS2, bStandSEPERATS3MSS3, bStandSEPERATS3MSS4;
            numeric aStandSEPERATS3MSS1, aStandSEPERATS3MSS2, aStandSEPERATS3MSS3, aStandSEPERATS3MSS4;
    
            numeric xSEPERATS3MSS1 = 0;
            numeric xSEPERATS3MSS2 = 0;
            numeric xSEPERATS3MSS3 = 0;
            numeric xSEPERATS3MSS4 = 0;
    
            numeric xQuadSEPERATS3MSS1 = 0;
            numeric xQuadSEPERATS3MSS2 = 0;
            numeric xQuadSEPERATS3MSS3 = 0;
            numeric xQuadSEPERATS3MSS4 = 0;
    
            numeric ySEPERATS3MSS1 = 0;
            numeric ySEPERATS3MSS2 = 0;
            numeric ySEPERATS3MSS3 = 0;
            numeric ySEPERATS3MSS4 = 0;
    
            numeric yQuadSEPERATS3MSS1 = 0;
            numeric yQuadSEPERATS3MSS2 = 0;
            numeric yQuadSEPERATS3MSS3 = 0;
            numeric yQuadSEPERATS3MSS4 = 0;
    
            numeric xySEPERATS3MSS1 = 0;
            numeric xySEPERATS3MSS2 = 0;
            numeric xySEPERATS3MSS3 = 0;
            numeric xySEPERATS3MSS4 = 0;
    
            numeric xxAritQuadSEPERATS3MSS1 = 0;
            numeric xxAritQuadSEPERATS3MSS2 = 0;
            numeric xxAritQuadSEPERATS3MSS3 = 0;
            numeric xxAritQuadSEPERATS3MSS4 = 0;
    
            numeric yyAritQuadSEPERATS3MSS1 = 0;
            numeric yyAritQuadSEPERATS3MSS2 = 0;
            numeric yyAritQuadSEPERATS3MSS3 = 0;
            numeric yyAritQuadSEPERATS3MSS4 = 0;
    
            numeric qXYSEPERATS3MSS1 = 0;
            numeric qXYSEPERATS3MSS2 = 0;
            numeric qXYSEPERATS3MSS3 = 0;
            numeric qXYSEPERATS3MSS4 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS3MSS1 = xSEPERATS3MSS1 + pifSEPERATS1S3MSS1arrayRAND[m];
                xSEPERATS3MSS2 = xSEPERATS3MSS2 + pifSEPERATS1S3MSS2arrayRAND[m];
                xSEPERATS3MSS3 = xSEPERATS3MSS3 + pifSEPERATS1S3MSS3arrayRAND[m];
                xSEPERATS3MSS4 = xSEPERATS3MSS4 + pifSEPERATS1S3MSS4arrayRAND[m];
    
                xQuadSEPERATS3MSS1 = (xQuadSEPERATS3MSS1 + (pifSEPERATS1S3MSS1arrayRAND[m]^2));
                xQuadSEPERATS3MSS2 = (xQuadSEPERATS3MSS2 + (pifSEPERATS1S3MSS2arrayRAND[m]^2));
                xQuadSEPERATS3MSS3 = (xQuadSEPERATS3MSS3 + (pifSEPERATS1S3MSS3arrayRAND[m]^2));
                xQuadSEPERATS3MSS4 = (xQuadSEPERATS3MSS4 + (pifSEPERATS1S3MSS4arrayRAND[m]^2));
    
                ySEPERATS3MSS1 = ySEPERATS3MSS1 + pifSEPERATS3slaveMSS1arrayRAND[m];
                ySEPERATS3MSS2 = ySEPERATS3MSS2 + pifSEPERATS3slaveMSS2arrayRAND[m];
                ySEPERATS3MSS3 = ySEPERATS3MSS3 + pifSEPERATS3slaveMSS3arrayRAND[m];
                ySEPERATS3MSS4 = ySEPERATS3MSS4 + pifSEPERATS3slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS3MSS1 = (yQuadSEPERATS3MSS1 + (pifSEPERATS3slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS3MSS2 = (yQuadSEPERATS3MSS2 + (pifSEPERATS3slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS3MSS3 = (yQuadSEPERATS3MSS3 + (pifSEPERATS3slaveMSS3arrayRAND[m]^2));
                yQuadSEPERATS3MSS4 = (yQuadSEPERATS3MSS4 + (pifSEPERATS3slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS3MSS1 = (xySEPERATS3MSS1 + (pifSEPERATS1S3MSS1arrayRAND[m] * pifSEPERATS3slaveMSS1arrayRAND[m]));
                xySEPERATS3MSS2 = (xySEPERATS3MSS2 + (pifSEPERATS1S3MSS2arrayRAND[m] * pifSEPERATS3slaveMSS2arrayRAND[m]));
                xySEPERATS3MSS3 = (xySEPERATS3MSS3 + (pifSEPERATS1S3MSS3arrayRAND[m] * pifSEPERATS3slaveMSS3arrayRAND[m]));
                xySEPERATS3MSS4 = (xySEPERATS3MSS4 + (pifSEPERATS1S3MSS4arrayRAND[m] * pifSEPERATS3slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS3MSS1 = xSEPERATS3MSS1 / minPifVAL;
            xAritSEPERATS3MSS2 = xSEPERATS3MSS2 / minPifVAL;
            xAritSEPERATS3MSS3 = xSEPERATS3MSS3 / minPifVAL;
            xAritSEPERATS3MSS4 = xSEPERATS3MSS4 / minPifVAL;
    
            yAritSEPERATS3MSS1 = ySEPERATS3MSS1 / minPifVAL;
            yAritSEPERATS3MSS2 = ySEPERATS3MSS2 / minPifVAL;
            yAritSEPERATS3MSS3 = ySEPERATS3MSS3 / minPifVAL;
            yAritSEPERATS3MSS4 = ySEPERATS3MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3MSS1 = (xxAritQuadSEPERATS3MSS1 + ((pifSEPERATS1S3MSS1arrayRAND[n] - xAritSEPERATS3MSS1)^2));
                xxAritQuadSEPERATS3MSS2 = (xxAritQuadSEPERATS3MSS2 + ((pifSEPERATS1S3MSS2arrayRAND[n] - xAritSEPERATS3MSS2)^2));
                xxAritQuadSEPERATS3MSS3 = (xxAritQuadSEPERATS3MSS3 + ((pifSEPERATS1S3MSS3arrayRAND[n] - xAritSEPERATS3MSS3)^2));
                xxAritQuadSEPERATS3MSS4 = (xxAritQuadSEPERATS3MSS4 + ((pifSEPERATS1S3MSS4arrayRAND[n] - xAritSEPERATS3MSS4)^2));
    
                yyAritQuadSEPERATS3MSS1 = (yyAritQuadSEPERATS3MSS1 + ((pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)^2));
                yyAritQuadSEPERATS3MSS2 = (yyAritQuadSEPERATS3MSS2 + ((pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)^2));
                yyAritQuadSEPERATS3MSS3 = (yyAritQuadSEPERATS3MSS3 + ((pifSEPERATS3slaveMSS3arrayRAND[n] - yAritSEPERATS3MSS3)^2));
                yyAritQuadSEPERATS3MSS4 = (yyAritQuadSEPERATS3MSS4 + ((pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)^2));
    
                qXYSEPERATS3MSS1 = (qXYSEPERATS3MSS1 + ((pifSEPERATS1S3MSS1arrayRAND[n] - xAritSEPERATS3MSS1) * (pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)));
                qXYSEPERATS3MSS2 = (qXYSEPERATS3MSS2 + ((pifSEPERATS1S3MSS2arrayRAND[n] - xAritSEPERATS3MSS2) * (pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)));
                qXYSEPERATS3MSS3 = (qXYSEPERATS3MSS3 + ((pifSEPERATS1S3MSS3arrayRAND[n] - xAritSEPERATS3MSS3) * (pifSEPERATS3slaveMSS3arrayRAND[n] - yAritSEPERATS3MSS3)));
                qXYSEPERATS3MSS4 = (qXYSEPERATS3MSS4 + ((pifSEPERATS1S3MSS4arrayRAND[n] - xAritSEPERATS3MSS4) * (pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)));
            }
        
            aSEPERATS3MSS1 = (((xQuadSEPERATS3MSS1 * ySEPERATS3MSS1) - (xSEPERATS3MSS1 * xySEPERATS3MSS1)) / ((minPifVAL * xQuadSEPERATS3MSS1) - (xSEPERATS3MSS1^2)));
            aSEPERATS3MSS2 = (((xQuadSEPERATS3MSS2 * ySEPERATS3MSS2) - (xSEPERATS3MSS2 * xySEPERATS3MSS2)) / ((minPifVAL * xQuadSEPERATS3MSS2) - (xSEPERATS3MSS2^2)));
            aSEPERATS3MSS3 = (((xQuadSEPERATS3MSS3 * ySEPERATS3MSS3) - (xSEPERATS3MSS3 * xySEPERATS3MSS3)) / ((minPifVAL * xQuadSEPERATS3MSS3) - (xSEPERATS3MSS3^2)));
            aSEPERATS3MSS4 = (((xQuadSEPERATS3MSS4 * ySEPERATS3MSS4) - (xSEPERATS3MSS4 * xySEPERATS3MSS4)) / ((minPifVAL * xQuadSEPERATS3MSS4) - (xSEPERATS3MSS4^2)));
            
            bSEPERATS3MSS1 = qXYSEPERATS3MSS1 / xxAritQuadSEPERATS3MSS1;
            bSEPERATS3MSS2 = qXYSEPERATS3MSS2 / xxAritQuadSEPERATS3MSS2;
            bSEPERATS3MSS3 = qXYSEPERATS3MSS3 / xxAritQuadSEPERATS3MSS3;
            bSEPERATS3MSS4 = qXYSEPERATS3MSS4 / xxAritQuadSEPERATS3MSS4;
    
            rSEPERATS3MSS1 = (qXYSEPERATS3MSS1 / ((xxAritQuadSEPERATS3MSS1 * yyAritQuadSEPERATS3MSS1)^0.5));
            rSEPERATS3MSS2 = (qXYSEPERATS3MSS2 / ((xxAritQuadSEPERATS3MSS2 * yyAritQuadSEPERATS3MSS2)^0.5));
            rSEPERATS3MSS3 = (qXYSEPERATS3MSS3 / ((xxAritQuadSEPERATS3MSS3 * yyAritQuadSEPERATS3MSS3)^0.5));
            rSEPERATS3MSS4 = (qXYSEPERATS3MSS4 / ((xxAritQuadSEPERATS3MSS4 * yyAritQuadSEPERATS3MSS4)^0.5));
    
            rQuadSEPERATS3MSS1 = ((rSEPERATS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3MSS2 = ((rSEPERATS3MSS2^2) * 100);
            rQuadSEPERATS3MSS3 = ((rSEPERATS3MSS3^2) * 100);
            rQuadSEPERATS3MSS4 = ((rSEPERATS3MSS4^2) * 100);
        
            syxSEPERATS3MSS1 = (((yyAritQuadSEPERATS3MSS1 - ((qXYSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS2 = (((yyAritQuadSEPERATS3MSS2 - ((qXYSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS3 = (((yyAritQuadSEPERATS3MSS3 - ((qXYSEPERATS3MSS3^2) / xxAritQuadSEPERATS3MSS3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS4 = (((yyAritQuadSEPERATS3MSS4 - ((qXYSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3MSS1 = (((syxSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)^0.5);
            bStandSEPERATS3MSS2 = (((syxSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)^0.5);
            bStandSEPERATS3MSS3 = (((syxSEPERATS3MSS3^2) / xxAritQuadSEPERATS3MSS3)^0.5);
            bStandSEPERATS3MSS4 = (((syxSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)^0.5);
    
            aStandSEPERATS3MSS1 = (bStandSEPERATS3MSS1 * ((xQuadSEPERATS3MSS1 / minPifVAL)^0.5));
            aStandSEPERATS3MSS2 = (bStandSEPERATS3MSS2 * ((xQuadSEPERATS3MSS2 / minPifVAL)^0.5));
            aStandSEPERATS3MSS3 = (bStandSEPERATS3MSS3 * ((xQuadSEPERATS3MSS3 / minPifVAL)^0.5));
            aStandSEPERATS3MSS4 = (bStandSEPERATS3MSS4 * ((xQuadSEPERATS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS1, bSEPERATS3MSS1, rSEPERATS3MSS1, rQuadSEPERATS3MSS1, aStandSEPERATS3MSS1, bStandSEPERATS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS2, bSEPERATS3MSS2, rSEPERATS3MSS2, rQuadSEPERATS3MSS2, aStandSEPERATS3MSS2, bStandSEPERATS3MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS3, bSEPERATS3MSS3, rSEPERATS3MSS3, rQuadSEPERATS3MSS3, aStandSEPERATS3MSS3, bStandSEPERATS3MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS4, bSEPERATS3MSS4, rSEPERATS3MSS4, rQuadSEPERATS3MSS4, aStandSEPERATS3MSS4, bStandSEPERATS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS3slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS3slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifSEPERATS3slaveMSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS3slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aSEPERATS3MSS1 + (bSEPERATS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aSEPERATS3MSS2 + (bSEPERATS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = (aSEPERATS3MSS3 + (bSEPERATS3MSS3 * REFS3MSS3[i,j]));
                    OUT3MSS4[i,j] = (aSEPERATS3MSS4 + (bSEPERATS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT3MSS1);
            CreatePyramid(OUT3MSS2);
            CreatePyramid(OUT3MSS3);
            CreatePyramid(OUT3MSS4);
        
            CreateHistogram(OUT3MSS1);
            CreateHistogram(OUT3MSS2);
            CreateHistogram(OUT3MSS3);
            CreateHistogram(OUT3MSS4);
            
            CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors4 == 7 )
            {
                printf("Master: Scene 1 (MSS), Slave: Scene 4 (ETM) - IMPOSSIBLE...\n\n\n");            
            }
            
            else if ( sensors4 == 6 )
            {
                printf("Master: Scene 1 (MSS), Slave: Scene 4 (TM) - IMPOSSIBLE...\n\n\n");            
            }
            
            else
            {
            numeric xAritSEPERATS4MSS1, xAritSEPERATS4MSS2, xAritSEPERATS4MSS3, xAritSEPERATS4MSS4;
            numeric yAritSEPERATS4MSS1, yAritSEPERATS4MSS2, yAritSEPERATS4MSS3, yAritSEPERATS4MSS4;
    
            numeric aSEPERATS4MSS1, aSEPERATS4MSS2, aSEPERATS4MSS3, aSEPERATS4MSS4;
            numeric bSEPERATS4MSS1, bSEPERATS4MSS2, bSEPERATS4MSS3, bSEPERATS4MSS4;
            numeric rSEPERATS4MSS1, rSEPERATS4MSS2, rSEPERATS4MSS3, rSEPERATS4MSS4;
            numeric rQuadSEPERATS4MSS1, rQuadSEPERATS4MSS2, rQuadSEPERATS4MSS3, rQuadSEPERATS4MSS4;
            numeric syxSEPERATS4MSS1, syxSEPERATS4MSS2, syxSEPERATS4MSS3, syxSEPERATS4MSS4;
            numeric bStandSEPERATS4MSS1, bStandSEPERATS4MSS2, bStandSEPERATS4MSS3, bStandSEPERATS4MSS4;
            numeric aStandSEPERATS4MSS1, aStandSEPERATS4MSS2, aStandSEPERATS4MSS3, aStandSEPERATS4MSS4;
    
            numeric xSEPERATS4MSS1 = 0;
            numeric xSEPERATS4MSS2 = 0;
            numeric xSEPERATS4MSS3 = 0;
            numeric xSEPERATS4MSS4 = 0;
    
            numeric xQuadSEPERATS4MSS1 = 0;
            numeric xQuadSEPERATS4MSS2 = 0;
            numeric xQuadSEPERATS4MSS3 = 0;
            numeric xQuadSEPERATS4MSS4 = 0;
    
            numeric ySEPERATS4MSS1 = 0;
            numeric ySEPERATS4MSS2 = 0;
            numeric ySEPERATS4MSS3 = 0;
            numeric ySEPERATS4MSS4 = 0;
    
            numeric yQuadSEPERATS4MSS1 = 0;
            numeric yQuadSEPERATS4MSS2 = 0;
            numeric yQuadSEPERATS4MSS3 = 0;
            numeric yQuadSEPERATS4MSS4 = 0;
    
            numeric xySEPERATS4MSS1 = 0;
            numeric xySEPERATS4MSS2 = 0;
            numeric xySEPERATS4MSS3 = 0;
            numeric xySEPERATS4MSS4 = 0;
    
            numeric xxAritQuadSEPERATS4MSS1 = 0;
            numeric xxAritQuadSEPERATS4MSS2 = 0;
            numeric xxAritQuadSEPERATS4MSS3 = 0;
            numeric xxAritQuadSEPERATS4MSS4 = 0;
    
            numeric yyAritQuadSEPERATS4MSS1 = 0;
            numeric yyAritQuadSEPERATS4MSS2 = 0;
            numeric yyAritQuadSEPERATS4MSS3 = 0;
            numeric yyAritQuadSEPERATS4MSS4 = 0;
    
            numeric qXYSEPERATS4MSS1 = 0;
            numeric qXYSEPERATS4MSS2 = 0;
            numeric qXYSEPERATS4MSS3 = 0;
            numeric qXYSEPERATS4MSS4 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS4MSS1 = xSEPERATS4MSS1 + pifSEPERATS1S4MSS1arrayRAND[m];
                xSEPERATS4MSS2 = xSEPERATS4MSS2 + pifSEPERATS1S4MSS2arrayRAND[m];
                xSEPERATS4MSS3 = xSEPERATS4MSS3 + pifSEPERATS1S4MSS3arrayRAND[m];
                xSEPERATS4MSS4 = xSEPERATS4MSS4 + pifSEPERATS1S4MSS4arrayRAND[m];
    
                xQuadSEPERATS4MSS1 = (xQuadSEPERATS4MSS1 + (pifSEPERATS1S4MSS1arrayRAND[m]^2));
                xQuadSEPERATS4MSS2 = (xQuadSEPERATS4MSS2 + (pifSEPERATS1S4MSS2arrayRAND[m]^2));
                xQuadSEPERATS4MSS3 = (xQuadSEPERATS4MSS3 + (pifSEPERATS1S4MSS3arrayRAND[m]^2));
                xQuadSEPERATS4MSS4 = (xQuadSEPERATS4MSS4 + (pifSEPERATS1S4MSS4arrayRAND[m]^2));
    
                ySEPERATS4MSS1 = ySEPERATS4MSS1 + pifSEPERATS4slaveMSS1arrayRAND[m];
                ySEPERATS4MSS2 = ySEPERATS4MSS2 + pifSEPERATS4slaveMSS2arrayRAND[m];
                ySEPERATS4MSS3 = ySEPERATS4MSS3 + pifSEPERATS4slaveMSS3arrayRAND[m];
                ySEPERATS4MSS4 = ySEPERATS4MSS4 + pifSEPERATS4slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS4MSS1 = (yQuadSEPERATS4MSS1 + (pifSEPERATS4slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS4MSS2 = (yQuadSEPERATS4MSS2 + (pifSEPERATS4slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS4MSS3 = (yQuadSEPERATS4MSS3 + (pifSEPERATS4slaveMSS3arrayRAND[m]^2));
                yQuadSEPERATS4MSS4 = (yQuadSEPERATS4MSS4 + (pifSEPERATS4slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS4MSS1 = (xySEPERATS4MSS1 + (pifSEPERATS1S4MSS1arrayRAND[m] * pifSEPERATS4slaveMSS1arrayRAND[m]));
                xySEPERATS4MSS2 = (xySEPERATS4MSS2 + (pifSEPERATS1S4MSS2arrayRAND[m] * pifSEPERATS4slaveMSS2arrayRAND[m]));
                xySEPERATS4MSS3 = (xySEPERATS4MSS3 + (pifSEPERATS1S4MSS3arrayRAND[m] * pifSEPERATS4slaveMSS3arrayRAND[m]));
                xySEPERATS4MSS4 = (xySEPERATS4MSS4 + (pifSEPERATS1S4MSS4arrayRAND[m] * pifSEPERATS4slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS4MSS1 = xSEPERATS4MSS1 / minPifVAL;
            xAritSEPERATS4MSS2 = xSEPERATS4MSS2 / minPifVAL;
            xAritSEPERATS4MSS3 = xSEPERATS4MSS3 / minPifVAL;
            xAritSEPERATS4MSS4 = xSEPERATS4MSS4 / minPifVAL;
    
            yAritSEPERATS4MSS1 = ySEPERATS4MSS1 / minPifVAL;
            yAritSEPERATS4MSS2 = ySEPERATS4MSS2 / minPifVAL;
            yAritSEPERATS4MSS3 = ySEPERATS4MSS3 / minPifVAL;
            yAritSEPERATS4MSS4 = ySEPERATS4MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4MSS1 = (xxAritQuadSEPERATS4MSS1 + ((pifSEPERATS1S4MSS1arrayRAND[n] - xAritSEPERATS4MSS1)^2));
                xxAritQuadSEPERATS4MSS2 = (xxAritQuadSEPERATS4MSS2 + ((pifSEPERATS1S4MSS2arrayRAND[n] - xAritSEPERATS4MSS2)^2));
                xxAritQuadSEPERATS4MSS3 = (xxAritQuadSEPERATS4MSS3 + ((pifSEPERATS1S4MSS3arrayRAND[n] - xAritSEPERATS4MSS3)^2));
                xxAritQuadSEPERATS4MSS4 = (xxAritQuadSEPERATS4MSS4 + ((pifSEPERATS1S4MSS4arrayRAND[n] - xAritSEPERATS4MSS4)^2));
    
                yyAritQuadSEPERATS4MSS1 = (yyAritQuadSEPERATS4MSS1 + ((pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)^2));
                yyAritQuadSEPERATS4MSS2 = (yyAritQuadSEPERATS4MSS2 + ((pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)^2));
                yyAritQuadSEPERATS4MSS3 = (yyAritQuadSEPERATS4MSS3 + ((pifSEPERATS4slaveMSS3arrayRAND[n] - yAritSEPERATS4MSS3)^2));
                yyAritQuadSEPERATS4MSS4 = (yyAritQuadSEPERATS4MSS4 + ((pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)^2));
    
                qXYSEPERATS4MSS1 = (qXYSEPERATS4MSS1 + ((pifSEPERATS1S4MSS1arrayRAND[n] - xAritSEPERATS4MSS1) * (pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)));
                qXYSEPERATS4MSS2 = (qXYSEPERATS4MSS2 + ((pifSEPERATS1S4MSS2arrayRAND[n] - xAritSEPERATS4MSS2) * (pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)));
                qXYSEPERATS4MSS3 = (qXYSEPERATS4MSS3 + ((pifSEPERATS1S4MSS3arrayRAND[n] - xAritSEPERATS4MSS3) * (pifSEPERATS4slaveMSS3arrayRAND[n] - yAritSEPERATS4MSS3)));
                qXYSEPERATS4MSS4 = (qXYSEPERATS4MSS4 + ((pifSEPERATS1S4MSS4arrayRAND[n] - xAritSEPERATS4MSS4) * (pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)));
            }
        
            aSEPERATS4MSS1 = (((xQuadSEPERATS4MSS1 * ySEPERATS4MSS1) - (xSEPERATS4MSS1 * xySEPERATS4MSS1)) / ((minPifVAL * xQuadSEPERATS4MSS1) - (xSEPERATS4MSS1^2)));
            aSEPERATS4MSS2 = (((xQuadSEPERATS4MSS2 * ySEPERATS4MSS2) - (xSEPERATS4MSS2 * xySEPERATS4MSS2)) / ((minPifVAL * xQuadSEPERATS4MSS2) - (xSEPERATS4MSS2^2)));
            aSEPERATS4MSS3 = (((xQuadSEPERATS4MSS3 * ySEPERATS4MSS3) - (xSEPERATS4MSS3 * xySEPERATS4MSS3)) / ((minPifVAL * xQuadSEPERATS4MSS3) - (xSEPERATS4MSS3^2)));
            aSEPERATS4MSS4 = (((xQuadSEPERATS4MSS4 * ySEPERATS4MSS4) - (xSEPERATS4MSS4 * xySEPERATS4MSS4)) / ((minPifVAL * xQuadSEPERATS4MSS4) - (xSEPERATS4MSS4^2)));
            
            bSEPERATS4MSS1 = qXYSEPERATS4MSS1 / xxAritQuadSEPERATS4MSS1;
            bSEPERATS4MSS2 = qXYSEPERATS4MSS2 / xxAritQuadSEPERATS4MSS2;
            bSEPERATS4MSS3 = qXYSEPERATS4MSS3 / xxAritQuadSEPERATS4MSS3;
            bSEPERATS4MSS4 = qXYSEPERATS4MSS4 / xxAritQuadSEPERATS4MSS4;
    
            rSEPERATS4MSS1 = (qXYSEPERATS4MSS1 / ((xxAritQuadSEPERATS4MSS1 * yyAritQuadSEPERATS4MSS1)^0.5));
            rSEPERATS4MSS2 = (qXYSEPERATS4MSS2 / ((xxAritQuadSEPERATS4MSS2 * yyAritQuadSEPERATS4MSS2)^0.5));
            rSEPERATS4MSS3 = (qXYSEPERATS4MSS3 / ((xxAritQuadSEPERATS4MSS3 * yyAritQuadSEPERATS4MSS3)^0.5));
            rSEPERATS4MSS4 = (qXYSEPERATS4MSS4 / ((xxAritQuadSEPERATS4MSS4 * yyAritQuadSEPERATS4MSS4)^0.5));
    
            rQuadSEPERATS4MSS1 = ((rSEPERATS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4MSS2 = ((rSEPERATS4MSS2^2) * 100);
            rQuadSEPERATS4MSS3 = ((rSEPERATS4MSS3^2) * 100);
            rQuadSEPERATS4MSS4 = ((rSEPERATS4MSS4^2) * 100);
        
            syxSEPERATS4MSS1 = (((yyAritQuadSEPERATS4MSS1 - ((qXYSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS2 = (((yyAritQuadSEPERATS4MSS2 - ((qXYSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS3 = (((yyAritQuadSEPERATS4MSS3 - ((qXYSEPERATS4MSS3^2) / xxAritQuadSEPERATS4MSS3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS4 = (((yyAritQuadSEPERATS4MSS4 - ((qXYSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4MSS1 = (((syxSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)^0.5);
            bStandSEPERATS4MSS2 = (((syxSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)^0.5);
            bStandSEPERATS4MSS3 = (((syxSEPERATS4MSS3^2) / xxAritQuadSEPERATS4MSS3)^0.5);
            bStandSEPERATS4MSS4 = (((syxSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)^0.5);
    
            aStandSEPERATS4MSS1 = (bStandSEPERATS4MSS1 * ((xQuadSEPERATS4MSS1 / minPifVAL)^0.5));
            aStandSEPERATS4MSS2 = (bStandSEPERATS4MSS2 * ((xQuadSEPERATS4MSS2 / minPifVAL)^0.5));
            aStandSEPERATS4MSS3 = (bStandSEPERATS4MSS3 * ((xQuadSEPERATS4MSS3 / minPifVAL)^0.5));
            aStandSEPERATS4MSS4 = (bStandSEPERATS4MSS4 * ((xQuadSEPERATS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS1, bSEPERATS4MSS1, rSEPERATS4MSS1, rQuadSEPERATS4MSS1, aStandSEPERATS4MSS1, bStandSEPERATS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS2, bSEPERATS4MSS2, rSEPERATS4MSS2, rQuadSEPERATS4MSS2, aStandSEPERATS4MSS2, bStandSEPERATS4MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS3, bSEPERATS4MSS3, rSEPERATS4MSS3, rQuadSEPERATS4MSS3, aStandSEPERATS4MSS3, bStandSEPERATS4MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS4, bSEPERATS4MSS4, rSEPERATS4MSS4, rQuadSEPERATS4MSS4, aStandSEPERATS4MSS4, bStandSEPERATS4MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS4slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS4slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifSEPERATS4slaveMSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS4slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aSEPERATS4MSS1 + (bSEPERATS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aSEPERATS4MSS2 + (bSEPERATS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = (aSEPERATS4MSS3 + (bSEPERATS4MSS3 * REFS4MSS3[i,j]));
                    OUT4MSS4[i,j] = (aSEPERATS4MSS4 + (bSEPERATS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT4MSS1);
            CreatePyramid(OUT4MSS2);
            CreatePyramid(OUT4MSS3);
            CreatePyramid(OUT4MSS4);
        
            CreateHistogram(OUT4MSS1);
            CreateHistogram(OUT4MSS2);
            CreateHistogram(OUT4MSS3);
            CreateHistogram(OUT4MSS4);
            
            CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
        }
	}
	else if ( slaveMaster == 2 )
	{
        if ( sensors2 == 7 )
        {
        printf("Scene 2 - Master Scene (ETM):\n");
        printf("Scene 2 array values used for regression computation:\n");
	    printf("For Scene 2 (Master) and Slave (Scene 1):");
        printf("ETM1: %12f ", pifSEPERATS2S1ETM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S1ETM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S1ETM1arrayRAND[minPifVAL]);
    
        printf("ETM2: %12f ", pifSEPERATS2S1ETM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S1ETM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S1ETM2arrayRAND[minPifVAL]);
    
        printf("ETM3: %12f ", pifSEPERATS2S1ETM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S1ETM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S1ETM3arrayRAND[minPifVAL]);
    
        printf("ETM4: %12f ", pifSEPERATS2S1ETM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S1ETM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S1ETM4arrayRAND[minPifVAL]);
    
        printf("ETM5: %12f ", pifSEPERATS2S1ETM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S1ETM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S1ETM5arrayRAND[minPifVAL]);
    
        printf("ETM7: %12f ", pifSEPERATS2S1ETM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S1ETM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS2S1ETM7arrayRAND[minPifVAL]);
	    printf("For Scene 2 (Master) and Slave (Scene 3):");
        printf("ETM1: %12f ", pifSEPERATS2S3ETM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S3ETM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S3ETM1arrayRAND[minPifVAL]);
    
        printf("ETM2: %12f ", pifSEPERATS2S3ETM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S3ETM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S3ETM2arrayRAND[minPifVAL]);
    
        printf("ETM3: %12f ", pifSEPERATS2S3ETM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S3ETM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S3ETM3arrayRAND[minPifVAL]);
    
        printf("ETM4: %12f ", pifSEPERATS2S3ETM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S3ETM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S3ETM4arrayRAND[minPifVAL]);
    
        printf("ETM5: %12f ", pifSEPERATS2S3ETM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S3ETM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S3ETM5arrayRAND[minPifVAL]);
    
        printf("ETM7: %12f ", pifSEPERATS2S3ETM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S3ETM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS2S3ETM7arrayRAND[minPifVAL]);
	    printf("For Scene 2 (Master) and Slave (Scene 4):");
        printf("ETM1: %12f ", pifSEPERATS2S4ETM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S4ETM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S4ETM1arrayRAND[minPifVAL]);
    
        printf("ETM2: %12f ", pifSEPERATS2S4ETM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S4ETM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S4ETM2arrayRAND[minPifVAL]);
 
        printf("ETM3: %12f ", pifSEPERATS2S4ETM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S4ETM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S4ETM3arrayRAND[minPifVAL]);
    
        printf("ETM4: %12f ", pifSEPERATS2S4ETM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S4ETM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S4ETM4arrayRAND[minPifVAL]);
    
        printf("ETM5: %12f ", pifSEPERATS2S4ETM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S4ETM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S4ETM5arrayRAND[minPifVAL]);
    
        printf("ETM7: %12f ", pifSEPERATS2S4ETM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S4ETM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS2S4ETM7arrayRAND[minPifVAL]);
                for i = 1 to ETMlins
                {
                    for j = 1 to ETMcols
                    {
                    OUT2ETM1[i,j] = REFS2ETM1[i,j];
                    OUT2ETM2[i,j] = REFS2ETM2[i,j];
                    OUT2ETM3[i,j] = REFS2ETM3[i,j];
                    OUT2ETM4[i,j] = REFS2ETM4[i,j];
                    OUT2ETM5[i,j] = REFS2ETM5[i,j];
                    OUT2ETM7[i,j] = REFS2ETM7[i,j];
                    }
                }
            
        CreatePyramid(OUT2ETM1);
        CreatePyramid(OUT2ETM2);
        CreatePyramid(OUT2ETM3);
        CreatePyramid(OUT2ETM4);
        CreatePyramid(OUT2ETM5);
        CreatePyramid(OUT2ETM7);
        
        CreateHistogram(OUT2ETM1);
        CreateHistogram(OUT2ETM2);
        CreateHistogram(OUT2ETM3);
        CreateHistogram(OUT2ETM4);
        CreateHistogram(OUT2ETM5);
        CreateHistogram(OUT2ETM7);
        
        CloseRaster(REFS2ETM1);
        CloseRaster(REFS2ETM2);
        CloseRaster(REFS2ETM3);
        CloseRaster(REFS2ETM4);
        CloseRaster(REFS2ETM5);
        CloseRaster(REFS2ETM7);
        
        CloseRaster(OUT2ETM1);
        CloseRaster(OUT2ETM2);
        CloseRaster(OUT2ETM3);
        CloseRaster(OUT2ETM4);
        CloseRaster(OUT2ETM5);
        CloseRaster(OUT2ETM7);
            
        printf("Scene 2 (Master) output was written, histogram created and pyramid written...\n\n\n");
        
            if ( sensors1 == 7 )
            {
            numeric xAritSEPERATS1ETM1, xAritSEPERATS1ETM2, xAritSEPERATS1ETM3, xAritSEPERATS1ETM4, xAritSEPERATS1ETM5, xAritSEPERATS1ETM7;
            numeric yAritSEPERATS1ETM1, yAritSEPERATS1ETM2, yAritSEPERATS1ETM3, yAritSEPERATS1ETM4, yAritSEPERATS1ETM5, yAritSEPERATS1ETM7;
    
            numeric aSEPERATS1ETM1, aSEPERATS1ETM2, aSEPERATS1ETM3, aSEPERATS1ETM4, aSEPERATS1ETM5, aSEPERATS1ETM7;
            numeric bSEPERATS1ETM1, bSEPERATS1ETM2, bSEPERATS1ETM3, bSEPERATS1ETM4, bSEPERATS1ETM5, bSEPERATS1ETM7;
            numeric rSEPERATS1ETM1, rSEPERATS1ETM2, rSEPERATS1ETM3, rSEPERATS1ETM4, rSEPERATS1ETM5, rSEPERATS1ETM7;
            numeric rQuadSEPERATS1ETM1, rQuadSEPERATS1ETM2, rQuadSEPERATS1ETM3, rQuadSEPERATS1ETM4, rQuadSEPERATS1ETM5, rQuadSEPERATS1ETM7;
            numeric syxSEPERATS1ETM1, syxSEPERATS1ETM2, syxSEPERATS1ETM3, syxSEPERATS1ETM4, syxSEPERATS1ETM5, syxSEPERATS1ETM7;
            numeric bStandSEPERATS1ETM1, bStandSEPERATS1ETM2, bStandSEPERATS1ETM3, bStandSEPERATS1ETM4, bStandSEPERATS1ETM5, bStandSEPERATS1ETM7;
            numeric aStandSEPERATS1ETM1, aStandSEPERATS1ETM2, aStandSEPERATS1ETM3, aStandSEPERATS1ETM4, aStandSEPERATS1ETM5, aStandSEPERATS1ETM7;
    
            numeric xSEPERATS1ETM1 = 0;
            numeric xSEPERATS1ETM2 = 0;
            numeric xSEPERATS1ETM3 = 0;
            numeric xSEPERATS1ETM4 = 0;
            numeric xSEPERATS1ETM5 = 0;
            numeric xSEPERATS1ETM7 = 0;
    
            numeric xQuadSEPERATS1ETM1 = 0;
            numeric xQuadSEPERATS1ETM2 = 0;
            numeric xQuadSEPERATS1ETM3 = 0;
            numeric xQuadSEPERATS1ETM4 = 0;
            numeric xQuadSEPERATS1ETM5 = 0;
            numeric xQuadSEPERATS1ETM7 = 0;
    
            numeric ySEPERATS1ETM1 = 0;
            numeric ySEPERATS1ETM2 = 0;
            numeric ySEPERATS1ETM3 = 0;
            numeric ySEPERATS1ETM4 = 0;
            numeric ySEPERATS1ETM5 = 0;
            numeric ySEPERATS1ETM7 = 0;
    
            numeric yQuadSEPERATS1ETM1 = 0;
            numeric yQuadSEPERATS1ETM2 = 0;
            numeric yQuadSEPERATS1ETM3 = 0;
            numeric yQuadSEPERATS1ETM4 = 0;
            numeric yQuadSEPERATS1ETM5 = 0;
            numeric yQuadSEPERATS1ETM7 = 0;
    
            numeric xySEPERATS1ETM1 = 0;
            numeric xySEPERATS1ETM2 = 0;
            numeric xySEPERATS1ETM3 = 0;
            numeric xySEPERATS1ETM4 = 0;
            numeric xySEPERATS1ETM5 = 0;
            numeric xySEPERATS1ETM7 = 0;
    
            numeric xxAritQuadSEPERATS1ETM1 = 0;
            numeric xxAritQuadSEPERATS1ETM2 = 0;
            numeric xxAritQuadSEPERATS1ETM3 = 0;
            numeric xxAritQuadSEPERATS1ETM4 = 0;
            numeric xxAritQuadSEPERATS1ETM5 = 0;
            numeric xxAritQuadSEPERATS1ETM7 = 0;
    
            numeric yyAritQuadSEPERATS1ETM1 = 0;
            numeric yyAritQuadSEPERATS1ETM2 = 0;
            numeric yyAritQuadSEPERATS1ETM3 = 0;
            numeric yyAritQuadSEPERATS1ETM4 = 0;
            numeric yyAritQuadSEPERATS1ETM5 = 0;
            numeric yyAritQuadSEPERATS1ETM7 = 0;
    
            numeric qXYSEPERATS1ETM1 = 0;
            numeric qXYSEPERATS1ETM2 = 0;
            numeric qXYSEPERATS1ETM3 = 0;
            numeric qXYSEPERATS1ETM4 = 0;
            numeric qXYSEPERATS1ETM5 = 0;
            numeric qXYSEPERATS1ETM7 = 0;
            
            for m = 1 to minPifVAL
            {		
                xSEPERATS1ETM1 = xSEPERATS1ETM1 + pifSEPERATS2S1ETM1arrayRAND[m];
                xSEPERATS1ETM2 = xSEPERATS1ETM2 + pifSEPERATS2S1ETM2arrayRAND[m];
                xSEPERATS1ETM3 = xSEPERATS1ETM3 + pifSEPERATS2S1ETM3arrayRAND[m];
                xSEPERATS1ETM4 = xSEPERATS1ETM4 + pifSEPERATS2S1ETM4arrayRAND[m];
                xSEPERATS1ETM5 = xSEPERATS1ETM5 + pifSEPERATS2S1ETM5arrayRAND[m];
                xSEPERATS1ETM7 = xSEPERATS1ETM7 + pifSEPERATS2S1ETM7arrayRAND[m];
    
                xQuadSEPERATS1ETM1 = (xQuadSEPERATS1ETM1 + (pifSEPERATS2S1ETM1arrayRAND[m]^2));
                xQuadSEPERATS1ETM2 = (xQuadSEPERATS1ETM2 + (pifSEPERATS2S1ETM2arrayRAND[m]^2));
                xQuadSEPERATS1ETM3 = (xQuadSEPERATS1ETM3 + (pifSEPERATS2S1ETM3arrayRAND[m]^2));
                xQuadSEPERATS1ETM4 = (xQuadSEPERATS1ETM4 + (pifSEPERATS2S1ETM4arrayRAND[m]^2));
                xQuadSEPERATS1ETM5 = (xQuadSEPERATS1ETM5 + (pifSEPERATS2S1ETM5arrayRAND[m]^2));
                xQuadSEPERATS1ETM7 = (xQuadSEPERATS1ETM7 + (pifSEPERATS2S1ETM7arrayRAND[m]^2));
    
                ySEPERATS1ETM1 = ySEPERATS1ETM1 + pifSEPERATS1slaveETM1arrayRAND[m];
                ySEPERATS1ETM2 = ySEPERATS1ETM2 + pifSEPERATS1slaveETM2arrayRAND[m];
                ySEPERATS1ETM3 = ySEPERATS1ETM3 + pifSEPERATS1slaveETM3arrayRAND[m];
                ySEPERATS1ETM4 = ySEPERATS1ETM4 + pifSEPERATS1slaveETM4arrayRAND[m];
                ySEPERATS1ETM5 = ySEPERATS1ETM5 + pifSEPERATS1slaveETM5arrayRAND[m];
                ySEPERATS1ETM7 = ySEPERATS1ETM7 + pifSEPERATS1slaveETM7arrayRAND[m];
                
                yQuadSEPERATS1ETM1 = (yQuadSEPERATS1ETM1 + (pifSEPERATS1slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS1ETM2 = (yQuadSEPERATS1ETM2 + (pifSEPERATS1slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS1ETM3 = (yQuadSEPERATS1ETM3 + (pifSEPERATS1slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS1ETM4 = (yQuadSEPERATS1ETM4 + (pifSEPERATS1slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS1ETM5 = (yQuadSEPERATS1ETM5 + (pifSEPERATS1slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS1ETM7 = (yQuadSEPERATS1ETM7 + (pifSEPERATS1slaveETM7arrayRAND[m]^2));
    
                xySEPERATS1ETM1 = (xySEPERATS1ETM1 + (pifSEPERATS2S1ETM1arrayRAND[m] * pifSEPERATS1slaveETM1arrayRAND[m]));
                xySEPERATS1ETM2 = (xySEPERATS1ETM2 + (pifSEPERATS2S1ETM2arrayRAND[m] * pifSEPERATS1slaveETM2arrayRAND[m]));
                xySEPERATS1ETM3 = (xySEPERATS1ETM3 + (pifSEPERATS2S1ETM3arrayRAND[m] * pifSEPERATS1slaveETM3arrayRAND[m]));
                xySEPERATS1ETM4 = (xySEPERATS1ETM4 + (pifSEPERATS2S1ETM4arrayRAND[m] * pifSEPERATS1slaveETM4arrayRAND[m]));
                xySEPERATS1ETM5 = (xySEPERATS1ETM5 + (pifSEPERATS2S1ETM5arrayRAND[m] * pifSEPERATS1slaveETM5arrayRAND[m]));
                xySEPERATS1ETM7 = (xySEPERATS1ETM7 + (pifSEPERATS2S1ETM7arrayRAND[m] * pifSEPERATS1slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS1ETM1 = xSEPERATS1ETM1 / minPifVAL;
            xAritSEPERATS1ETM2 = xSEPERATS1ETM2 / minPifVAL;
            xAritSEPERATS1ETM3 = xSEPERATS1ETM3 / minPifVAL;
            xAritSEPERATS1ETM4 = xSEPERATS1ETM4 / minPifVAL;
            xAritSEPERATS1ETM5 = xSEPERATS1ETM5 / minPifVAL;
            xAritSEPERATS1ETM7 = xSEPERATS1ETM7 / minPifVAL;
    
            yAritSEPERATS1ETM1 = ySEPERATS1ETM1 / minPifVAL;
            yAritSEPERATS1ETM2 = ySEPERATS1ETM2 / minPifVAL;
            yAritSEPERATS1ETM3 = ySEPERATS1ETM3 / minPifVAL;
            yAritSEPERATS1ETM4 = ySEPERATS1ETM4 / minPifVAL;
            yAritSEPERATS1ETM5 = ySEPERATS1ETM5 / minPifVAL;
            yAritSEPERATS1ETM7 = ySEPERATS1ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1ETM1 = (xxAritQuadSEPERATS1ETM1 + ((pifSEPERATS2S1ETM1arrayRAND[n] - xAritSEPERATS1ETM1)^2));
                xxAritQuadSEPERATS1ETM2 = (xxAritQuadSEPERATS1ETM2 + ((pifSEPERATS2S1ETM2arrayRAND[n] - xAritSEPERATS1ETM2)^2));
                xxAritQuadSEPERATS1ETM3 = (xxAritQuadSEPERATS1ETM3 + ((pifSEPERATS2S1ETM3arrayRAND[n] - xAritSEPERATS1ETM3)^2));
                xxAritQuadSEPERATS1ETM4 = (xxAritQuadSEPERATS1ETM4 + ((pifSEPERATS2S1ETM4arrayRAND[n] - xAritSEPERATS1ETM4)^2));
                xxAritQuadSEPERATS1ETM5 = (xxAritQuadSEPERATS1ETM5 + ((pifSEPERATS2S1ETM5arrayRAND[n] - xAritSEPERATS1ETM5)^2));
                xxAritQuadSEPERATS1ETM7 = (xxAritQuadSEPERATS1ETM7 + ((pifSEPERATS2S1ETM7arrayRAND[n] - xAritSEPERATS1ETM7)^2));
    
                yyAritQuadSEPERATS1ETM1 = (yyAritQuadSEPERATS1ETM1 + ((pifSEPERATS1slaveETM1arrayRAND[n] - yAritSEPERATS1ETM1)^2));
                yyAritQuadSEPERATS1ETM2 = (yyAritQuadSEPERATS1ETM2 + ((pifSEPERATS1slaveETM2arrayRAND[n] - yAritSEPERATS1ETM2)^2));
                yyAritQuadSEPERATS1ETM3 = (yyAritQuadSEPERATS1ETM3 + ((pifSEPERATS1slaveETM3arrayRAND[n] - yAritSEPERATS1ETM3)^2));
                yyAritQuadSEPERATS1ETM4 = (yyAritQuadSEPERATS1ETM4 + ((pifSEPERATS1slaveETM4arrayRAND[n] - yAritSEPERATS1ETM4)^2));
                yyAritQuadSEPERATS1ETM5 = (yyAritQuadSEPERATS1ETM5 + ((pifSEPERATS1slaveETM5arrayRAND[n] - yAritSEPERATS1ETM5)^2));
                yyAritQuadSEPERATS1ETM7 = (yyAritQuadSEPERATS1ETM7 + ((pifSEPERATS1slaveETM7arrayRAND[n] - yAritSEPERATS1ETM7)^2));
    
                qXYSEPERATS1ETM1 = (qXYSEPERATS1ETM1 + ((pifSEPERATS2S1ETM1arrayRAND[n] - xAritSEPERATS1ETM1) * (pifSEPERATS1slaveETM1arrayRAND[n] - yAritSEPERATS1ETM1)));
                qXYSEPERATS1ETM2 = (qXYSEPERATS1ETM2 + ((pifSEPERATS2S1ETM2arrayRAND[n] - xAritSEPERATS1ETM2) * (pifSEPERATS1slaveETM2arrayRAND[n] - yAritSEPERATS1ETM2)));
                qXYSEPERATS1ETM3 = (qXYSEPERATS1ETM3 + ((pifSEPERATS2S1ETM3arrayRAND[n] - xAritSEPERATS1ETM3) * (pifSEPERATS1slaveETM3arrayRAND[n] - yAritSEPERATS1ETM3)));
                qXYSEPERATS1ETM4 = (qXYSEPERATS1ETM4 + ((pifSEPERATS2S1ETM4arrayRAND[n] - xAritSEPERATS1ETM4) * (pifSEPERATS1slaveETM4arrayRAND[n] - yAritSEPERATS1ETM4)));
                qXYSEPERATS1ETM5 = (qXYSEPERATS1ETM5 + ((pifSEPERATS2S1ETM5arrayRAND[n] - xAritSEPERATS1ETM5) * (pifSEPERATS1slaveETM5arrayRAND[n] - yAritSEPERATS1ETM5)));
                qXYSEPERATS1ETM7 = (qXYSEPERATS1ETM7 + ((pifSEPERATS2S1ETM7arrayRAND[n] - xAritSEPERATS1ETM7) * (pifSEPERATS1slaveETM7arrayRAND[n] - yAritSEPERATS1ETM7)));
            }
        
            aSEPERATS1ETM1 = (((xQuadSEPERATS1ETM1 * ySEPERATS1ETM1) - (xSEPERATS1ETM1 * xySEPERATS1ETM1)) / ((minPifVAL * xQuadSEPERATS1ETM1) - (xSEPERATS1ETM1^2)));
            aSEPERATS1ETM2 = (((xQuadSEPERATS1ETM2 * ySEPERATS1ETM2) - (xSEPERATS1ETM2 * xySEPERATS1ETM2)) / ((minPifVAL * xQuadSEPERATS1ETM2) - (xSEPERATS1ETM2^2)));
            aSEPERATS1ETM3 = (((xQuadSEPERATS1ETM3 * ySEPERATS1ETM3) - (xSEPERATS1ETM3 * xySEPERATS1ETM3)) / ((minPifVAL * xQuadSEPERATS1ETM3) - (xSEPERATS1ETM3^2)));
            aSEPERATS1ETM4 = (((xQuadSEPERATS1ETM4 * ySEPERATS1ETM4) - (xSEPERATS1ETM4 * xySEPERATS1ETM4)) / ((minPifVAL * xQuadSEPERATS1ETM4) - (xSEPERATS1ETM4^2)));
            aSEPERATS1ETM5 = (((xQuadSEPERATS1ETM5 * ySEPERATS1ETM5) - (xSEPERATS1ETM5 * xySEPERATS1ETM5)) / ((minPifVAL * xQuadSEPERATS1ETM5) - (xSEPERATS1ETM5^2)));
            aSEPERATS1ETM7 = (((xQuadSEPERATS1ETM7 * ySEPERATS1ETM7) - (xSEPERATS1ETM7 * xySEPERATS1ETM7)) / ((minPifVAL * xQuadSEPERATS1ETM7) - (xSEPERATS1ETM7^2)));
            
            bSEPERATS1ETM1 = qXYSEPERATS1ETM1 / xxAritQuadSEPERATS1ETM1;
            bSEPERATS1ETM2 = qXYSEPERATS1ETM2 / xxAritQuadSEPERATS1ETM2;
            bSEPERATS1ETM3 = qXYSEPERATS1ETM3 / xxAritQuadSEPERATS1ETM3;
            bSEPERATS1ETM4 = qXYSEPERATS1ETM4 / xxAritQuadSEPERATS1ETM4;
            bSEPERATS1ETM5 = qXYSEPERATS1ETM5 / xxAritQuadSEPERATS1ETM5;
            bSEPERATS1ETM7 = qXYSEPERATS1ETM7 / xxAritQuadSEPERATS1ETM7;
    
            rSEPERATS1ETM1 = (qXYSEPERATS1ETM1 / ((xxAritQuadSEPERATS1ETM1 * yyAritQuadSEPERATS1ETM1)^0.5));
            rSEPERATS1ETM2 = (qXYSEPERATS1ETM2 / ((xxAritQuadSEPERATS1ETM2 * yyAritQuadSEPERATS1ETM2)^0.5));
            rSEPERATS1ETM3 = (qXYSEPERATS1ETM3 / ((xxAritQuadSEPERATS1ETM3 * yyAritQuadSEPERATS1ETM3)^0.5));
            rSEPERATS1ETM4 = (qXYSEPERATS1ETM4 / ((xxAritQuadSEPERATS1ETM4 * yyAritQuadSEPERATS1ETM4)^0.5));
            rSEPERATS1ETM5 = (qXYSEPERATS1ETM5 / ((xxAritQuadSEPERATS1ETM5 * yyAritQuadSEPERATS1ETM5)^0.5));
            rSEPERATS1ETM7 = (qXYSEPERATS1ETM7 / ((xxAritQuadSEPERATS1ETM7 * yyAritQuadSEPERATS1ETM7)^0.5));
    
            rQuadSEPERATS1ETM1 = ((rSEPERATS1ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1ETM2 = ((rSEPERATS1ETM2^2) * 100);
            rQuadSEPERATS1ETM3 = ((rSEPERATS1ETM3^2) * 100);
            rQuadSEPERATS1ETM4 = ((rSEPERATS1ETM4^2) * 100);
            rQuadSEPERATS1ETM5 = ((rSEPERATS1ETM5^2) * 100);
            rQuadSEPERATS1ETM7 = ((rSEPERATS1ETM7^2) * 100);
        
            syxSEPERATS1ETM1 = (((yyAritQuadSEPERATS1ETM1 - ((qXYSEPERATS1ETM1^2) / xxAritQuadSEPERATS1ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM2 = (((yyAritQuadSEPERATS1ETM2 - ((qXYSEPERATS1ETM2^2) / xxAritQuadSEPERATS1ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM3 = (((yyAritQuadSEPERATS1ETM3 - ((qXYSEPERATS1ETM3^2) / xxAritQuadSEPERATS1ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM4 = (((yyAritQuadSEPERATS1ETM4 - ((qXYSEPERATS1ETM4^2) / xxAritQuadSEPERATS1ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM5 = (((yyAritQuadSEPERATS1ETM5 - ((qXYSEPERATS1ETM5^2) / xxAritQuadSEPERATS1ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM7 = (((yyAritQuadSEPERATS1ETM7 - ((qXYSEPERATS1ETM7^2) / xxAritQuadSEPERATS1ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1ETM1 = (((syxSEPERATS1ETM1^2) / xxAritQuadSEPERATS1ETM1)^0.5);
            bStandSEPERATS1ETM2 = (((syxSEPERATS1ETM2^2) / xxAritQuadSEPERATS1ETM2)^0.5);
            bStandSEPERATS1ETM3 = (((syxSEPERATS1ETM3^2) / xxAritQuadSEPERATS1ETM3)^0.5);
            bStandSEPERATS1ETM4 = (((syxSEPERATS1ETM4^2) / xxAritQuadSEPERATS1ETM4)^0.5);
            bStandSEPERATS1ETM5 = (((syxSEPERATS1ETM5^2) / xxAritQuadSEPERATS1ETM5)^0.5);
            bStandSEPERATS1ETM7 = (((syxSEPERATS1ETM7^2) / xxAritQuadSEPERATS1ETM7)^0.5);
    
            aStandSEPERATS1ETM1 = (bStandSEPERATS1ETM1 * ((xQuadSEPERATS1ETM1 / minPifVAL)^0.5));
            aStandSEPERATS1ETM2 = (bStandSEPERATS1ETM2 * ((xQuadSEPERATS1ETM2 / minPifVAL)^0.5));
            aStandSEPERATS1ETM3 = (bStandSEPERATS1ETM3 * ((xQuadSEPERATS1ETM3 / minPifVAL)^0.5));
            aStandSEPERATS1ETM4 = (bStandSEPERATS1ETM4 * ((xQuadSEPERATS1ETM4 / minPifVAL)^0.5));
            aStandSEPERATS1ETM5 = (bStandSEPERATS1ETM5 * ((xQuadSEPERATS1ETM5 / minPifVAL)^0.5));
            aStandSEPERATS1ETM7 = (bStandSEPERATS1ETM7 * ((xQuadSEPERATS1ETM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM1, bSEPERATS1ETM1, rSEPERATS1ETM1, rQuadSEPERATS1ETM1, aStandSEPERATS1ETM1, bStandSEPERATS1ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM2, bSEPERATS1ETM2, rSEPERATS1ETM2, rQuadSEPERATS1ETM2, aStandSEPERATS1ETM2, bStandSEPERATS1ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM3, bSEPERATS1ETM3, rSEPERATS1ETM3, rQuadSEPERATS1ETM3, aStandSEPERATS1ETM3, bStandSEPERATS1ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM4, bSEPERATS1ETM4, rSEPERATS1ETM4, rQuadSEPERATS1ETM4, aStandSEPERATS1ETM4, bStandSEPERATS1ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM5, bSEPERATS1ETM5, rSEPERATS1ETM5, rQuadSEPERATS1ETM5, aStandSEPERATS1ETM5, bStandSEPERATS1ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS1ETM7, bSEPERATS1ETM7, rSEPERATS1ETM7, rQuadSEPERATS1ETM7, aStandSEPERATS1ETM7, bStandSEPERATS1ETM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS1slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS1slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS1slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS1slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS1slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS1slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS1slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT1ETM1[i,j] = (aSEPERATS1ETM1 + (bSEPERATS1ETM1 * REFS1ETM1[i,j]));
                    OUT1ETM2[i,j] = (aSEPERATS1ETM2 + (bSEPERATS1ETM2 * REFS1ETM2[i,j]));
                    OUT1ETM3[i,j] = (aSEPERATS1ETM3 + (bSEPERATS1ETM3 * REFS1ETM3[i,j]));
                    OUT1ETM4[i,j] = (aSEPERATS1ETM4 + (bSEPERATS1ETM4 * REFS1ETM4[i,j]));
                    OUT1ETM5[i,j] = (aSEPERATS1ETM5 + (bSEPERATS1ETM5 * REFS1ETM5[i,j]));
                    OUT1ETM7[i,j] = (aSEPERATS1ETM7 + (bSEPERATS1ETM7 * REFS1ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1ETM1);
        	CreatePyramid(OUT1ETM2);
        	CreatePyramid(OUT1ETM3);
        	CreatePyramid(OUT1ETM4);
        	CreatePyramid(OUT1ETM5);
        	CreatePyramid(OUT1ETM7);
        
        	CreateHistogram(OUT1ETM1);
        	CreateHistogram(OUT1ETM2);
        	CreateHistogram(OUT1ETM3);
        	CreateHistogram(OUT1ETM4);
        	CreateHistogram(OUT1ETM5);
        	CreateHistogram(OUT1ETM7);
            CloseRaster(REFS1ETM1);
            CloseRaster(REFS1ETM2);
            CloseRaster(REFS1ETM3);
            CloseRaster(REFS1ETM4);
            CloseRaster(REFS1ETM5);
            CloseRaster(REFS1ETM7);
    
            CloseRaster(OUT1ETM1);
            CloseRaster(OUT1ETM2);
            CloseRaster(OUT1ETM3);
            CloseRaster(OUT1ETM4);
            CloseRaster(OUT1ETM5);
            CloseRaster(OUT1ETM7);
        
        	printf("Scene 1 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors1 == 6 )
            {
            numeric xAritSEPERATS1TM1, xAritSEPERATS1TM2, xAritSEPERATS1TM3, xAritSEPERATS1TM4, xAritSEPERATS1TM5, xAritSEPERATS1TM7;
            numeric yAritSEPERATS1TM1, yAritSEPERATS1TM2, yAritSEPERATS1TM3, yAritSEPERATS1TM4, yAritSEPERATS1TM5, yAritSEPERATS1TM7;
    
            numeric aSEPERATS1TM1, aSEPERATS1TM2, aSEPERATS1TM3, aSEPERATS1TM4, aSEPERATS1TM5, aSEPERATS1TM7;
            numeric bSEPERATS1TM1, bSEPERATS1TM2, bSEPERATS1TM3, bSEPERATS1TM4, bSEPERATS1TM5, bSEPERATS1TM7;
            numeric rSEPERATS1TM1, rSEPERATS1TM2, rSEPERATS1TM3, rSEPERATS1TM4, rSEPERATS1TM5, rSEPERATS1TM7;
            numeric rQuadSEPERATS1TM1, rQuadSEPERATS1TM2, rQuadSEPERATS1TM3, rQuadSEPERATS1TM4, rQuadSEPERATS1TM5, rQuadSEPERATS1TM7;
            numeric syxSEPERATS1TM1, syxSEPERATS1TM2, syxSEPERATS1TM3, syxSEPERATS1TM4, syxSEPERATS1TM5, syxSEPERATS1TM7;
            numeric bStandSEPERATS1TM1, bStandSEPERATS1TM2, bStandSEPERATS1TM3, bStandSEPERATS1TM4, bStandSEPERATS1TM5, bStandSEPERATS1TM7;
            numeric aStandSEPERATS1TM1, aStandSEPERATS1TM2, aStandSEPERATS1TM3, aStandSEPERATS1TM4, aStandSEPERATS1TM5, aStandSEPERATS1TM7;
    
            numeric xSEPERATS1TM1 = 0;
            numeric xSEPERATS1TM2 = 0;
            numeric xSEPERATS1TM3 = 0;
            numeric xSEPERATS1TM4 = 0;
            numeric xSEPERATS1TM5 = 0;
            numeric xSEPERATS1TM7 = 0;
    
            numeric xQuadSEPERATS1TM1 = 0;
            numeric xQuadSEPERATS1TM2 = 0;
            numeric xQuadSEPERATS1TM3 = 0;
            numeric xQuadSEPERATS1TM4 = 0;
            numeric xQuadSEPERATS1TM5 = 0;
            numeric xQuadSEPERATS1TM7 = 0;
    
            numeric ySEPERATS1TM1 = 0;
            numeric ySEPERATS1TM2 = 0;
            numeric ySEPERATS1TM3 = 0;
            numeric ySEPERATS1TM4 = 0;
            numeric ySEPERATS1TM5 = 0;
            numeric ySEPERATS1TM7 = 0;
    
            numeric yQuadSEPERATS1TM1 = 0;
            numeric yQuadSEPERATS1TM2 = 0;
            numeric yQuadSEPERATS1TM3 = 0;
            numeric yQuadSEPERATS1TM4 = 0;
            numeric yQuadSEPERATS1TM5 = 0;
            numeric yQuadSEPERATS1TM7 = 0;
    
            numeric xySEPERATS1TM1 = 0;
            numeric xySEPERATS1TM2 = 0;
            numeric xySEPERATS1TM3 = 0;
            numeric xySEPERATS1TM4 = 0;
            numeric xySEPERATS1TM5 = 0;
            numeric xySEPERATS1TM7 = 0;
    
            numeric xxAritQuadSEPERATS1TM1 = 0;
            numeric xxAritQuadSEPERATS1TM2 = 0;
            numeric xxAritQuadSEPERATS1TM3 = 0;
            numeric xxAritQuadSEPERATS1TM4 = 0;
            numeric xxAritQuadSEPERATS1TM5 = 0;
            numeric xxAritQuadSEPERATS1TM7 = 0;
    
            numeric yyAritQuadSEPERATS1TM1 = 0;
            numeric yyAritQuadSEPERATS1TM2 = 0;
            numeric yyAritQuadSEPERATS1TM3 = 0;
            numeric yyAritQuadSEPERATS1TM4 = 0;
            numeric yyAritQuadSEPERATS1TM5 = 0;
            numeric yyAritQuadSEPERATS1TM7 = 0;
    
            numeric qXYSEPERATS1TM1 = 0;
            numeric qXYSEPERATS1TM2 = 0;
            numeric qXYSEPERATS1TM3 = 0;
            numeric qXYSEPERATS1TM4 = 0;
            numeric qXYSEPERATS1TM5 = 0;
            numeric qXYSEPERATS1TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1TM1 = xSEPERATS1TM1 + pifSEPERATS2S1ETM1arrayRAND[m];
                xSEPERATS1TM2 = xSEPERATS1TM2 + pifSEPERATS2S1ETM2arrayRAND[m];
                xSEPERATS1TM3 = xSEPERATS1TM3 + pifSEPERATS2S1ETM3arrayRAND[m];
                xSEPERATS1TM4 = xSEPERATS1TM4 + pifSEPERATS2S1ETM4arrayRAND[m];
                xSEPERATS1TM5 = xSEPERATS1TM5 + pifSEPERATS2S1ETM5arrayRAND[m];
                xSEPERATS1TM7 = xSEPERATS1TM7 + pifSEPERATS2S1ETM7arrayRAND[m];
    
                xQuadSEPERATS1TM1 = (xQuadSEPERATS1TM1 + (pifSEPERATS2S1ETM1arrayRAND[m]^2));
                xQuadSEPERATS1TM2 = (xQuadSEPERATS1TM2 + (pifSEPERATS2S1ETM2arrayRAND[m]^2));
                xQuadSEPERATS1TM3 = (xQuadSEPERATS1TM3 + (pifSEPERATS2S1ETM3arrayRAND[m]^2));
                xQuadSEPERATS1TM4 = (xQuadSEPERATS1TM4 + (pifSEPERATS2S1ETM4arrayRAND[m]^2));
                xQuadSEPERATS1TM5 = (xQuadSEPERATS1TM5 + (pifSEPERATS2S1ETM5arrayRAND[m]^2));
                xQuadSEPERATS1TM7 = (xQuadSEPERATS1TM7 + (pifSEPERATS2S1ETM7arrayRAND[m]^2));
    
                ySEPERATS1TM1 = ySEPERATS1TM1 + pifSEPERATS1slaveTM1arrayRAND[m];
                ySEPERATS1TM2 = ySEPERATS1TM2 + pifSEPERATS1slaveTM2arrayRAND[m];
                ySEPERATS1TM3 = ySEPERATS1TM3 + pifSEPERATS1slaveTM3arrayRAND[m];
                ySEPERATS1TM4 = ySEPERATS1TM4 + pifSEPERATS1slaveTM4arrayRAND[m];
                ySEPERATS1TM5 = ySEPERATS1TM5 + pifSEPERATS1slaveTM5arrayRAND[m];
                ySEPERATS1TM7 = ySEPERATS1TM7 + pifSEPERATS1slaveTM7arrayRAND[m];
                
                yQuadSEPERATS1TM1 = (yQuadSEPERATS1TM1 + (pifSEPERATS1slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS1TM2 = (yQuadSEPERATS1TM2 + (pifSEPERATS1slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS1TM3 = (yQuadSEPERATS1TM3 + (pifSEPERATS1slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS1TM4 = (yQuadSEPERATS1TM4 + (pifSEPERATS1slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS1TM5 = (yQuadSEPERATS1TM5 + (pifSEPERATS1slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS1TM7 = (yQuadSEPERATS1TM7 + (pifSEPERATS1slaveTM7arrayRAND[m]^2));
    
                xySEPERATS1TM1 = (xySEPERATS1TM1 + (pifSEPERATS2S1ETM1arrayRAND[m] * pifSEPERATS1slaveTM1arrayRAND[m]));
                xySEPERATS1TM2 = (xySEPERATS1TM2 + (pifSEPERATS2S1ETM2arrayRAND[m] * pifSEPERATS1slaveTM2arrayRAND[m]));
                xySEPERATS1TM3 = (xySEPERATS1TM3 + (pifSEPERATS2S1ETM3arrayRAND[m] * pifSEPERATS1slaveTM3arrayRAND[m]));
                xySEPERATS1TM4 = (xySEPERATS1TM4 + (pifSEPERATS2S1ETM4arrayRAND[m] * pifSEPERATS1slaveTM4arrayRAND[m]));
                xySEPERATS1TM5 = (xySEPERATS1TM5 + (pifSEPERATS2S1ETM5arrayRAND[m] * pifSEPERATS1slaveTM5arrayRAND[m]));
                xySEPERATS1TM7 = (xySEPERATS1TM7 + (pifSEPERATS2S1ETM7arrayRAND[m] * pifSEPERATS1slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS1TM1 = xSEPERATS1TM1 / minPifVAL;
            xAritSEPERATS1TM2 = xSEPERATS1TM2 / minPifVAL;
            xAritSEPERATS1TM3 = xSEPERATS1TM3 / minPifVAL;
            xAritSEPERATS1TM4 = xSEPERATS1TM4 / minPifVAL;
            xAritSEPERATS1TM5 = xSEPERATS1TM5 / minPifVAL;
            xAritSEPERATS1TM7 = xSEPERATS1TM7 / minPifVAL;
    
            yAritSEPERATS1TM1 = ySEPERATS1TM1 / minPifVAL;
            yAritSEPERATS1TM2 = ySEPERATS1TM2 / minPifVAL;
            yAritSEPERATS1TM3 = ySEPERATS1TM3 / minPifVAL;
            yAritSEPERATS1TM4 = ySEPERATS1TM4 / minPifVAL;
            yAritSEPERATS1TM5 = ySEPERATS1TM5 / minPifVAL;
            yAritSEPERATS1TM7 = ySEPERATS1TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1TM1 = (xxAritQuadSEPERATS1TM1 + ((pifSEPERATS2S1ETM1arrayRAND[n] - xAritSEPERATS1TM1)^2));
                xxAritQuadSEPERATS1TM2 = (xxAritQuadSEPERATS1TM2 + ((pifSEPERATS2S1ETM2arrayRAND[n] - xAritSEPERATS1TM2)^2));
                xxAritQuadSEPERATS1TM3 = (xxAritQuadSEPERATS1TM3 + ((pifSEPERATS2S1ETM3arrayRAND[n] - xAritSEPERATS1TM3)^2));
                xxAritQuadSEPERATS1TM4 = (xxAritQuadSEPERATS1TM4 + ((pifSEPERATS2S1ETM4arrayRAND[n] - xAritSEPERATS1TM4)^2));
                xxAritQuadSEPERATS1TM5 = (xxAritQuadSEPERATS1TM5 + ((pifSEPERATS2S1ETM5arrayRAND[n] - xAritSEPERATS1TM5)^2));
                xxAritQuadSEPERATS1TM7 = (xxAritQuadSEPERATS1TM7 + ((pifSEPERATS2S1ETM7arrayRAND[n] - xAritSEPERATS1TM7)^2));
    
                yyAritQuadSEPERATS1TM1 = (yyAritQuadSEPERATS1TM1 + ((pifSEPERATS1slaveTM1arrayRAND[n] - yAritSEPERATS1TM1)^2));
                yyAritQuadSEPERATS1TM2 = (yyAritQuadSEPERATS1TM2 + ((pifSEPERATS1slaveTM2arrayRAND[n] - yAritSEPERATS1TM2)^2));
                yyAritQuadSEPERATS1TM3 = (yyAritQuadSEPERATS1TM3 + ((pifSEPERATS1slaveTM3arrayRAND[n] - yAritSEPERATS1TM3)^2));
                yyAritQuadSEPERATS1TM4 = (yyAritQuadSEPERATS1TM4 + ((pifSEPERATS1slaveTM4arrayRAND[n] - yAritSEPERATS1TM4)^2));
                yyAritQuadSEPERATS1TM5 = (yyAritQuadSEPERATS1TM5 + ((pifSEPERATS1slaveTM5arrayRAND[n] - yAritSEPERATS1TM5)^2));
                yyAritQuadSEPERATS1TM7 = (yyAritQuadSEPERATS1TM7 + ((pifSEPERATS1slaveTM7arrayRAND[n] - yAritSEPERATS1TM7)^2));
    
                qXYSEPERATS1TM1 = (qXYSEPERATS1TM1 + ((pifSEPERATS2S1ETM1arrayRAND[n] - xAritSEPERATS1TM1) * (pifSEPERATS1slaveTM1arrayRAND[n] - yAritSEPERATS1TM1)));
                qXYSEPERATS1TM2 = (qXYSEPERATS1TM2 + ((pifSEPERATS2S1ETM2arrayRAND[n] - xAritSEPERATS1TM2) * (pifSEPERATS1slaveTM2arrayRAND[n] - yAritSEPERATS1TM2)));
                qXYSEPERATS1TM3 = (qXYSEPERATS1TM3 + ((pifSEPERATS2S1ETM3arrayRAND[n] - xAritSEPERATS1TM3) * (pifSEPERATS1slaveTM3arrayRAND[n] - yAritSEPERATS1TM3)));
                qXYSEPERATS1TM4 = (qXYSEPERATS1TM4 + ((pifSEPERATS2S1ETM4arrayRAND[n] - xAritSEPERATS1TM4) * (pifSEPERATS1slaveTM4arrayRAND[n] - yAritSEPERATS1TM4)));
                qXYSEPERATS1TM5 = (qXYSEPERATS1TM5 + ((pifSEPERATS2S1ETM5arrayRAND[n] - xAritSEPERATS1TM5) * (pifSEPERATS1slaveTM5arrayRAND[n] - yAritSEPERATS1TM5)));
                qXYSEPERATS1TM7 = (qXYSEPERATS1TM7 + ((pifSEPERATS2S1ETM7arrayRAND[n] - xAritSEPERATS1TM7) * (pifSEPERATS1slaveTM7arrayRAND[n] - yAritSEPERATS1TM7)));
            }
        
            aSEPERATS1TM1 = (((xQuadSEPERATS1TM1 * ySEPERATS1TM1) - (xSEPERATS1TM1 * xySEPERATS1TM1)) / ((minPifVAL * xQuadSEPERATS1TM1) - (xSEPERATS1TM1^2)));
            aSEPERATS1TM2 = (((xQuadSEPERATS1TM2 * ySEPERATS1TM2) - (xSEPERATS1TM2 * xySEPERATS1TM2)) / ((minPifVAL * xQuadSEPERATS1TM2) - (xSEPERATS1TM2^2)));
            aSEPERATS1TM3 = (((xQuadSEPERATS1TM3 * ySEPERATS1TM3) - (xSEPERATS1TM3 * xySEPERATS1TM3)) / ((minPifVAL * xQuadSEPERATS1TM3) - (xSEPERATS1TM3^2)));
            aSEPERATS1TM4 = (((xQuadSEPERATS1TM4 * ySEPERATS1TM4) - (xSEPERATS1TM4 * xySEPERATS1TM4)) / ((minPifVAL * xQuadSEPERATS1TM4) - (xSEPERATS1TM4^2)));
            aSEPERATS1TM5 = (((xQuadSEPERATS1TM5 * ySEPERATS1TM5) - (xSEPERATS1TM5 * xySEPERATS1TM5)) / ((minPifVAL * xQuadSEPERATS1TM5) - (xSEPERATS1TM5^2)));
            aSEPERATS1TM7 = (((xQuadSEPERATS1TM7 * ySEPERATS1TM7) - (xSEPERATS1TM7 * xySEPERATS1TM7)) / ((minPifVAL * xQuadSEPERATS1TM7) - (xSEPERATS1TM7^2)));
            
            bSEPERATS1TM1 = qXYSEPERATS1TM1 / xxAritQuadSEPERATS1TM1;
            bSEPERATS1TM2 = qXYSEPERATS1TM2 / xxAritQuadSEPERATS1TM2;
            bSEPERATS1TM3 = qXYSEPERATS1TM3 / xxAritQuadSEPERATS1TM3;
            bSEPERATS1TM4 = qXYSEPERATS1TM4 / xxAritQuadSEPERATS1TM4;
            bSEPERATS1TM5 = qXYSEPERATS1TM5 / xxAritQuadSEPERATS1TM5;
            bSEPERATS1TM7 = qXYSEPERATS1TM7 / xxAritQuadSEPERATS1TM7;
    
            rSEPERATS1TM1 = (qXYSEPERATS1TM1 / ((xxAritQuadSEPERATS1TM1 * yyAritQuadSEPERATS1TM1)^0.5));
            rSEPERATS1TM2 = (qXYSEPERATS1TM2 / ((xxAritQuadSEPERATS1TM2 * yyAritQuadSEPERATS1TM2)^0.5));
            rSEPERATS1TM3 = (qXYSEPERATS1TM3 / ((xxAritQuadSEPERATS1TM3 * yyAritQuadSEPERATS1TM3)^0.5));
            rSEPERATS1TM4 = (qXYSEPERATS1TM4 / ((xxAritQuadSEPERATS1TM4 * yyAritQuadSEPERATS1TM4)^0.5));
            rSEPERATS1TM5 = (qXYSEPERATS1TM5 / ((xxAritQuadSEPERATS1TM5 * yyAritQuadSEPERATS1TM5)^0.5));
            rSEPERATS1TM7 = (qXYSEPERATS1TM7 / ((xxAritQuadSEPERATS1TM7 * yyAritQuadSEPERATS1TM7)^0.5));
    
            rQuadSEPERATS1TM1 = ((rSEPERATS1TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1TM2 = ((rSEPERATS1TM2^2) * 100);
            rQuadSEPERATS1TM3 = ((rSEPERATS1TM3^2) * 100);
            rQuadSEPERATS1TM4 = ((rSEPERATS1TM4^2) * 100);
            rQuadSEPERATS1TM5 = ((rSEPERATS1TM5^2) * 100);
            rQuadSEPERATS1TM7 = ((rSEPERATS1TM7^2) * 100);
        
            syxSEPERATS1TM1 = (((yyAritQuadSEPERATS1TM1 - ((qXYSEPERATS1TM1^2) / xxAritQuadSEPERATS1TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM2 = (((yyAritQuadSEPERATS1TM2 - ((qXYSEPERATS1TM2^2) / xxAritQuadSEPERATS1TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM3 = (((yyAritQuadSEPERATS1TM3 - ((qXYSEPERATS1TM3^2) / xxAritQuadSEPERATS1TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM4 = (((yyAritQuadSEPERATS1TM4 - ((qXYSEPERATS1TM4^2) / xxAritQuadSEPERATS1TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM5 = (((yyAritQuadSEPERATS1TM5 - ((qXYSEPERATS1TM5^2) / xxAritQuadSEPERATS1TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM7 = (((yyAritQuadSEPERATS1TM7 - ((qXYSEPERATS1TM7^2) / xxAritQuadSEPERATS1TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1TM1 = (((syxSEPERATS1TM1^2) / xxAritQuadSEPERATS1TM1)^0.5);
            bStandSEPERATS1TM2 = (((syxSEPERATS1TM2^2) / xxAritQuadSEPERATS1TM2)^0.5);
            bStandSEPERATS1TM3 = (((syxSEPERATS1TM3^2) / xxAritQuadSEPERATS1TM3)^0.5);
            bStandSEPERATS1TM4 = (((syxSEPERATS1TM4^2) / xxAritQuadSEPERATS1TM4)^0.5);
            bStandSEPERATS1TM5 = (((syxSEPERATS1TM5^2) / xxAritQuadSEPERATS1TM5)^0.5);
            bStandSEPERATS1TM7 = (((syxSEPERATS1TM7^2) / xxAritQuadSEPERATS1TM7)^0.5);
    
            aStandSEPERATS1TM1 = (bStandSEPERATS1TM1 * ((xQuadSEPERATS1TM1 / minPifVAL)^0.5));
            aStandSEPERATS1TM2 = (bStandSEPERATS1TM2 * ((xQuadSEPERATS1TM2 / minPifVAL)^0.5));
            aStandSEPERATS1TM3 = (bStandSEPERATS1TM3 * ((xQuadSEPERATS1TM3 / minPifVAL)^0.5));
            aStandSEPERATS1TM4 = (bStandSEPERATS1TM4 * ((xQuadSEPERATS1TM4 / minPifVAL)^0.5));
            aStandSEPERATS1TM5 = (bStandSEPERATS1TM5 * ((xQuadSEPERATS1TM5 / minPifVAL)^0.5));
            aStandSEPERATS1TM7 = (bStandSEPERATS1TM7 * ((xQuadSEPERATS1TM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM1, bSEPERATS1TM1, rSEPERATS1TM1, rQuadSEPERATS1TM1, aStandSEPERATS1TM1, bStandSEPERATS1TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM2, bSEPERATS1TM2, rSEPERATS1TM2, rQuadSEPERATS1TM2, aStandSEPERATS1TM2, bStandSEPERATS1TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM3, bSEPERATS1TM3, rSEPERATS1TM3, rQuadSEPERATS1TM3, aStandSEPERATS1TM3, bStandSEPERATS1TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM4, bSEPERATS1TM4, rSEPERATS1TM4, rQuadSEPERATS1TM4, aStandSEPERATS1TM4, bStandSEPERATS1TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM5, bSEPERATS1TM5, rSEPERATS1TM5, rQuadSEPERATS1TM5, aStandSEPERATS1TM5, bStandSEPERATS1TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS1TM7, bSEPERATS1TM7, rSEPERATS1TM7, rQuadSEPERATS1TM7, aStandSEPERATS1TM7, bStandSEPERATS1TM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS1slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS1slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS1slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS1slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS1slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS1slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS1slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT1TM1[i,j] = (aSEPERATS1TM1 + (bSEPERATS1TM1 * REFS1TM1[i,j]));
                    OUT1TM2[i,j] = (aSEPERATS1TM2 + (bSEPERATS1TM2 * REFS1TM2[i,j]));
                    OUT1TM3[i,j] = (aSEPERATS1TM3 + (bSEPERATS1TM3 * REFS1TM3[i,j]));
                    OUT1TM4[i,j] = (aSEPERATS1TM4 + (bSEPERATS1TM4 * REFS1TM4[i,j]));
                    OUT1TM5[i,j] = (aSEPERATS1TM5 + (bSEPERATS1TM5 * REFS1TM5[i,j]));
                    OUT1TM7[i,j] = (aSEPERATS1TM7 + (bSEPERATS1TM7 * REFS1TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1TM1);
        	CreatePyramid(OUT1TM2);
        	CreatePyramid(OUT1TM3);
        	CreatePyramid(OUT1TM4);
        	CreatePyramid(OUT1TM5);
        	CreatePyramid(OUT1TM7);
        
        	CreateHistogram(OUT1TM1);
        	CreateHistogram(OUT1TM2);
        	CreateHistogram(OUT1TM3);
        	CreateHistogram(OUT1TM4);
        	CreateHistogram(OUT1TM5);
        	CreateHistogram(OUT1TM7);
            CloseRaster(REFS1TM1);
            CloseRaster(REFS1TM2);
            CloseRaster(REFS1TM3);
            CloseRaster(REFS1TM4);
            CloseRaster(REFS1TM5);
            CloseRaster(REFS1TM7);
    
            CloseRaster(OUT1TM1);
            CloseRaster(OUT1TM2);
            CloseRaster(OUT1TM3);
            CloseRaster(OUT1TM4);
            CloseRaster(OUT1TM5);
            CloseRaster(OUT1TM7);
        
        	printf("Scene 1 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS1MSS1, xAritSEPERATS1MSS2, xAritSEPERATS1MSS4;
            numeric yAritSEPERATS1MSS1, yAritSEPERATS1MSS2, yAritSEPERATS1MSS4;
    
            numeric aSEPERATS1MSS1, aSEPERATS1MSS2, aSEPERATS1MSS4;
            numeric bSEPERATS1MSS1, bSEPERATS1MSS2, bSEPERATS1MSS4;
            numeric rSEPERATS1MSS1, rSEPERATS1MSS2, rSEPERATS1MSS4;
            numeric rQuadSEPERATS1MSS1, rQuadSEPERATS1MSS2, rQuadSEPERATS1MSS4;
            numeric syxSEPERATS1MSS1, syxSEPERATS1MSS2, syxSEPERATS1MSS4;
            numeric bStandSEPERATS1MSS1, bStandSEPERATS1MSS2, bStandSEPERATS1MSS4;
            numeric aStandSEPERATS1MSS1, aStandSEPERATS1MSS2, aStandSEPERATS1MSS4;
    
            numeric xSEPERATS1MSS1 = 0;
            numeric xSEPERATS1MSS2 = 0;
            numeric xSEPERATS1MSS4 = 0;
    
            numeric xQuadSEPERATS1MSS1 = 0;
            numeric xQuadSEPERATS1MSS2 = 0;
            numeric xQuadSEPERATS1MSS4 = 0;
    
            numeric ySEPERATS1MSS1 = 0;
            numeric ySEPERATS1MSS2 = 0;
            numeric ySEPERATS1MSS4 = 0;
    
            numeric yQuadSEPERATS1MSS1 = 0;
            numeric yQuadSEPERATS1MSS2 = 0;
            numeric yQuadSEPERATS1MSS4 = 0;
    
            numeric xySEPERATS1MSS1 = 0;
            numeric xySEPERATS1MSS2 = 0;
            numeric xySEPERATS1MSS4 = 0;
    
            numeric xxAritQuadSEPERATS1MSS1 = 0;
            numeric xxAritQuadSEPERATS1MSS2 = 0;
            numeric xxAritQuadSEPERATS1MSS4 = 0;
    
            numeric yyAritQuadSEPERATS1MSS1 = 0;
            numeric yyAritQuadSEPERATS1MSS2 = 0;
            numeric yyAritQuadSEPERATS1MSS4 = 0;
    
            numeric qXYSEPERATS1MSS1 = 0;
            numeric qXYSEPERATS1MSS2 = 0;
            numeric qXYSEPERATS1MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1MSS1 = xSEPERATS1MSS1 + pifSEPERATS2S1ETM2arrayRAND[m];
                xSEPERATS1MSS2 = xSEPERATS1MSS2 + pifSEPERATS2S1ETM3arrayRAND[m];
                xSEPERATS1MSS4 = xSEPERATS1MSS4 + pifSEPERATS2S1ETM4arrayRAND[m];
    
                xQuadSEPERATS1MSS1 = (xQuadSEPERATS1MSS1 + (pifSEPERATS2S1ETM2arrayRAND[m]^2));
                xQuadSEPERATS1MSS2 = (xQuadSEPERATS1MSS2 + (pifSEPERATS2S1ETM3arrayRAND[m]^2));
                xQuadSEPERATS1MSS4 = (xQuadSEPERATS1MSS4 + (pifSEPERATS2S1ETM4arrayRAND[m]^2));
    
                ySEPERATS1MSS1 = ySEPERATS1MSS1 + pifSEPERATS1slaveMSS1arrayRAND[m];
                ySEPERATS1MSS2 = ySEPERATS1MSS2 + pifSEPERATS1slaveMSS2arrayRAND[m];
                ySEPERATS1MSS4 = ySEPERATS1MSS4 + pifSEPERATS1slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS1MSS1 = (yQuadSEPERATS1MSS1 + (pifSEPERATS1slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS1MSS2 = (yQuadSEPERATS1MSS2 + (pifSEPERATS1slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS1MSS4 = (yQuadSEPERATS1MSS4 + (pifSEPERATS1slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS1MSS1 = (xySEPERATS1MSS1 + (pifSEPERATS2S1ETM2arrayRAND[m] * pifSEPERATS1slaveMSS1arrayRAND[m]));
                xySEPERATS1MSS2 = (xySEPERATS1MSS2 + (pifSEPERATS2S1ETM3arrayRAND[m] * pifSEPERATS1slaveMSS2arrayRAND[m]));
                xySEPERATS1MSS4 = (xySEPERATS1MSS4 + (pifSEPERATS2S1ETM4arrayRAND[m] * pifSEPERATS1slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS1MSS1 = xSEPERATS1MSS1 / minPifVAL;
            xAritSEPERATS1MSS2 = xSEPERATS1MSS2 / minPifVAL;
            xAritSEPERATS1MSS4 = xSEPERATS1MSS4 / minPifVAL;
    
            yAritSEPERATS1MSS1 = ySEPERATS1MSS1 / minPifVAL;
            yAritSEPERATS1MSS2 = ySEPERATS1MSS2 / minPifVAL;
            yAritSEPERATS1MSS4 = ySEPERATS1MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1MSS1 = (xxAritQuadSEPERATS1MSS1 + ((pifSEPERATS2S1ETM2arrayRAND[n] - xAritSEPERATS1MSS1)^2));
                xxAritQuadSEPERATS1MSS2 = (xxAritQuadSEPERATS1MSS2 + ((pifSEPERATS2S1ETM3arrayRAND[n] - xAritSEPERATS1MSS2)^2));
                xxAritQuadSEPERATS1MSS4 = (xxAritQuadSEPERATS1MSS4 + ((pifSEPERATS2S1ETM4arrayRAND[n] - xAritSEPERATS1MSS4)^2));
    
                yyAritQuadSEPERATS1MSS1 = (yyAritQuadSEPERATS1MSS1 + ((pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)^2));
                yyAritQuadSEPERATS1MSS2 = (yyAritQuadSEPERATS1MSS2 + ((pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)^2));
                yyAritQuadSEPERATS1MSS4 = (yyAritQuadSEPERATS1MSS4 + ((pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)^2));
    
                qXYSEPERATS1MSS1 = (qXYSEPERATS1MSS1 + ((pifSEPERATS2S1ETM2arrayRAND[n] - xAritSEPERATS1MSS1) * (pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)));
                qXYSEPERATS1MSS2 = (qXYSEPERATS1MSS2 + ((pifSEPERATS2S1ETM3arrayRAND[n] - xAritSEPERATS1MSS2) * (pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)));
                qXYSEPERATS1MSS4 = (qXYSEPERATS1MSS4 + ((pifSEPERATS2S1ETM4arrayRAND[n] - xAritSEPERATS1MSS4) * (pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)));
            }
        
            aSEPERATS1MSS1 = (((xQuadSEPERATS1MSS1 * ySEPERATS1MSS1) - (xSEPERATS1MSS1 * xySEPERATS1MSS1)) / ((minPifVAL * xQuadSEPERATS1MSS1) - (xSEPERATS1MSS1^2)));
            aSEPERATS1MSS2 = (((xQuadSEPERATS1MSS2 * ySEPERATS1MSS2) - (xSEPERATS1MSS2 * xySEPERATS1MSS2)) / ((minPifVAL * xQuadSEPERATS1MSS2) - (xSEPERATS1MSS2^2)));
            aSEPERATS1MSS4 = (((xQuadSEPERATS1MSS4 * ySEPERATS1MSS4) - (xSEPERATS1MSS4 * xySEPERATS1MSS4)) / ((minPifVAL * xQuadSEPERATS1MSS4) - (xSEPERATS1MSS4^2)));
            
            bSEPERATS1MSS1 = qXYSEPERATS1MSS1 / xxAritQuadSEPERATS1MSS1;
            bSEPERATS1MSS2 = qXYSEPERATS1MSS2 / xxAritQuadSEPERATS1MSS2;
            bSEPERATS1MSS4 = qXYSEPERATS1MSS4 / xxAritQuadSEPERATS1MSS4;
    
            rSEPERATS1MSS1 = (qXYSEPERATS1MSS1 / ((xxAritQuadSEPERATS1MSS1 * yyAritQuadSEPERATS1MSS1)^0.5));
            rSEPERATS1MSS2 = (qXYSEPERATS1MSS2 / ((xxAritQuadSEPERATS1MSS2 * yyAritQuadSEPERATS1MSS2)^0.5));
            rSEPERATS1MSS4 = (qXYSEPERATS1MSS4 / ((xxAritQuadSEPERATS1MSS4 * yyAritQuadSEPERATS1MSS4)^0.5));
    
            rQuadSEPERATS1MSS1 = ((rSEPERATS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1MSS2 = ((rSEPERATS1MSS2^2) * 100);
            rQuadSEPERATS1MSS4 = ((rSEPERATS1MSS4^2) * 100);
        
            syxSEPERATS1MSS1 = (((yyAritQuadSEPERATS1MSS1 - ((qXYSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS2 = (((yyAritQuadSEPERATS1MSS2 - ((qXYSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS4 = (((yyAritQuadSEPERATS1MSS4 - ((qXYSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1MSS1 = (((syxSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)^0.5);
            bStandSEPERATS1MSS2 = (((syxSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)^0.5);
            bStandSEPERATS1MSS4 = (((syxSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)^0.5);
    
            aStandSEPERATS1MSS1 = (bStandSEPERATS1MSS1 * ((xQuadSEPERATS1MSS1 / minPifVAL)^0.5));
            aStandSEPERATS1MSS2 = (bStandSEPERATS1MSS2 * ((xQuadSEPERATS1MSS2 / minPifVAL)^0.5));
            aStandSEPERATS1MSS4 = (bStandSEPERATS1MSS4 * ((xQuadSEPERATS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS1, bSEPERATS1MSS1, rSEPERATS1MSS1, rQuadSEPERATS1MSS1, aStandSEPERATS1MSS1, bStandSEPERATS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS2, bSEPERATS1MSS2, rSEPERATS1MSS2, rQuadSEPERATS1MSS2, aStandSEPERATS1MSS2, bStandSEPERATS1MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS4, bSEPERATS1MSS4, rSEPERATS1MSS4, rQuadSEPERATS1MSS4, aStandSEPERATS1MSS4, bStandSEPERATS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS1slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS1slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS1slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aSEPERATS1MSS1 + (bSEPERATS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aSEPERATS1MSS2 + (bSEPERATS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = REFS1MSS3[i,j];
                    OUT1MSS4[i,j] = (aSEPERATS1MSS4 + (bSEPERATS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT1MSS1);
            CreatePyramid(OUT1MSS2);
            CreatePyramid(OUT1MSS3);
            CreatePyramid(OUT1MSS4);
        
            CreateHistogram(OUT1MSS1);
            CreateHistogram(OUT1MSS2);
            CreateHistogram(OUT1MSS3);
            CreateHistogram(OUT1MSS4);
            
            CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors3 == 7 )
            {
            numeric xAritSEPERATS3ETM1, xAritSEPERATS3ETM2, xAritSEPERATS3ETM3, xAritSEPERATS3ETM4, xAritSEPERATS3ETM5, xAritSEPERATS3ETM7;
            numeric yAritSEPERATS3ETM1, yAritSEPERATS3ETM2, yAritSEPERATS3ETM3, yAritSEPERATS3ETM4, yAritSEPERATS3ETM5, yAritSEPERATS3ETM7;
    
            numeric aSEPERATS3ETM1, aSEPERATS3ETM2, aSEPERATS3ETM3, aSEPERATS3ETM4, aSEPERATS3ETM5, aSEPERATS3ETM7;
            numeric bSEPERATS3ETM1, bSEPERATS3ETM2, bSEPERATS3ETM3, bSEPERATS3ETM4, bSEPERATS3ETM5, bSEPERATS3ETM7;
            numeric rSEPERATS3ETM1, rSEPERATS3ETM2, rSEPERATS3ETM3, rSEPERATS3ETM4, rSEPERATS3ETM5, rSEPERATS3ETM7;
            numeric rQuadSEPERATS3ETM1, rQuadSEPERATS3ETM2, rQuadSEPERATS3ETM3, rQuadSEPERATS3ETM4, rQuadSEPERATS3ETM5, rQuadSEPERATS3ETM7;
            numeric syxSEPERATS3ETM1, syxSEPERATS3ETM2, syxSEPERATS3ETM3, syxSEPERATS3ETM4, syxSEPERATS3ETM5, syxSEPERATS3ETM7;
            numeric bStandSEPERATS3ETM1, bStandSEPERATS3ETM2, bStandSEPERATS3ETM3, bStandSEPERATS3ETM4, bStandSEPERATS3ETM5, bStandSEPERATS3ETM7;
            numeric aStandSEPERATS3ETM1, aStandSEPERATS3ETM2, aStandSEPERATS3ETM3, aStandSEPERATS3ETM4, aStandSEPERATS3ETM5, aStandSEPERATS3ETM7;
    
            numeric xSEPERATS3ETM1 = 0;
            numeric xSEPERATS3ETM2 = 0;
            numeric xSEPERATS3ETM3 = 0;
            numeric xSEPERATS3ETM4 = 0;
            numeric xSEPERATS3ETM5 = 0;
            numeric xSEPERATS3ETM7 = 0;
    
            numeric xQuadSEPERATS3ETM1 = 0;
            numeric xQuadSEPERATS3ETM2 = 0;
            numeric xQuadSEPERATS3ETM3 = 0;
            numeric xQuadSEPERATS3ETM4 = 0;
            numeric xQuadSEPERATS3ETM5 = 0;
            numeric xQuadSEPERATS3ETM7 = 0;
    
            numeric ySEPERATS3ETM1 = 0;
            numeric ySEPERATS3ETM2 = 0;
            numeric ySEPERATS3ETM3 = 0;
            numeric ySEPERATS3ETM4 = 0;
            numeric ySEPERATS3ETM5 = 0;
            numeric ySEPERATS3ETM7 = 0;
    
            numeric yQuadSEPERATS3ETM1 = 0;
            numeric yQuadSEPERATS3ETM2 = 0;
            numeric yQuadSEPERATS3ETM3 = 0;
            numeric yQuadSEPERATS3ETM4 = 0;
            numeric yQuadSEPERATS3ETM5 = 0;
            numeric yQuadSEPERATS3ETM7 = 0;
    
            numeric xySEPERATS3ETM1 = 0;
            numeric xySEPERATS3ETM2 = 0;
            numeric xySEPERATS3ETM3 = 0;
            numeric xySEPERATS3ETM4 = 0;
            numeric xySEPERATS3ETM5 = 0;
            numeric xySEPERATS3ETM7 = 0;
    
            numeric xxAritQuadSEPERATS3ETM1 = 0;
            numeric xxAritQuadSEPERATS3ETM2 = 0;
            numeric xxAritQuadSEPERATS3ETM3 = 0;
            numeric xxAritQuadSEPERATS3ETM4 = 0;
            numeric xxAritQuadSEPERATS3ETM5 = 0;
            numeric xxAritQuadSEPERATS3ETM7 = 0;
    
            numeric yyAritQuadSEPERATS3ETM1 = 0;
            numeric yyAritQuadSEPERATS3ETM2 = 0;
            numeric yyAritQuadSEPERATS3ETM3 = 0;
            numeric yyAritQuadSEPERATS3ETM4 = 0;
            numeric yyAritQuadSEPERATS3ETM5 = 0;
            numeric yyAritQuadSEPERATS3ETM7 = 0;
    
            numeric qXYSEPERATS3ETM1 = 0;
            numeric qXYSEPERATS3ETM2 = 0;
            numeric qXYSEPERATS3ETM3 = 0;
            numeric qXYSEPERATS3ETM4 = 0;
            numeric qXYSEPERATS3ETM5 = 0;
            numeric qXYSEPERATS3ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS3ETM1 = xSEPERATS3ETM1 + pifSEPERATS2S3ETM1arrayRAND[m];
                xSEPERATS3ETM2 = xSEPERATS3ETM2 + pifSEPERATS2S3ETM2arrayRAND[m];
                xSEPERATS3ETM3 = xSEPERATS3ETM3 + pifSEPERATS2S3ETM3arrayRAND[m];
                xSEPERATS3ETM4 = xSEPERATS3ETM4 + pifSEPERATS2S3ETM4arrayRAND[m];
                xSEPERATS3ETM5 = xSEPERATS3ETM5 + pifSEPERATS2S3ETM5arrayRAND[m];
                xSEPERATS3ETM7 = xSEPERATS3ETM7 + pifSEPERATS2S3ETM7arrayRAND[m];
    
                xQuadSEPERATS3ETM1 = (xQuadSEPERATS3ETM1 + (pifSEPERATS2S3ETM1arrayRAND[m]^2));
                xQuadSEPERATS3ETM2 = (xQuadSEPERATS3ETM2 + (pifSEPERATS2S3ETM2arrayRAND[m]^2));
                xQuadSEPERATS3ETM3 = (xQuadSEPERATS3ETM3 + (pifSEPERATS2S3ETM3arrayRAND[m]^2));
                xQuadSEPERATS3ETM4 = (xQuadSEPERATS3ETM4 + (pifSEPERATS2S3ETM4arrayRAND[m]^2));
                xQuadSEPERATS3ETM5 = (xQuadSEPERATS3ETM5 + (pifSEPERATS2S3ETM5arrayRAND[m]^2));
                xQuadSEPERATS3ETM7 = (xQuadSEPERATS3ETM7 + (pifSEPERATS2S3ETM7arrayRAND[m]^2));
    
                ySEPERATS3ETM1 = ySEPERATS3ETM1 + pifSEPERATS3slaveETM1arrayRAND[m];
                ySEPERATS3ETM2 = ySEPERATS3ETM2 + pifSEPERATS3slaveETM2arrayRAND[m];
                ySEPERATS3ETM3 = ySEPERATS3ETM3 + pifSEPERATS3slaveETM3arrayRAND[m];
                ySEPERATS3ETM4 = ySEPERATS3ETM4 + pifSEPERATS3slaveETM4arrayRAND[m];
                ySEPERATS3ETM5 = ySEPERATS3ETM5 + pifSEPERATS3slaveETM5arrayRAND[m];
                ySEPERATS3ETM7 = ySEPERATS3ETM7 + pifSEPERATS3slaveETM7arrayRAND[m];
                
                yQuadSEPERATS3ETM1 = (yQuadSEPERATS3ETM1 + (pifSEPERATS3slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS3ETM2 = (yQuadSEPERATS3ETM2 + (pifSEPERATS3slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS3ETM3 = (yQuadSEPERATS3ETM3 + (pifSEPERATS3slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS3ETM4 = (yQuadSEPERATS3ETM4 + (pifSEPERATS3slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS3ETM5 = (yQuadSEPERATS3ETM5 + (pifSEPERATS3slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS3ETM7 = (yQuadSEPERATS3ETM7 + (pifSEPERATS3slaveETM7arrayRAND[m]^2));
    
                xySEPERATS3ETM1 = (xySEPERATS3ETM1 + (pifSEPERATS2S3ETM1arrayRAND[m] * pifSEPERATS3slaveETM1arrayRAND[m]));
                xySEPERATS3ETM2 = (xySEPERATS3ETM2 + (pifSEPERATS2S3ETM2arrayRAND[m] * pifSEPERATS3slaveETM2arrayRAND[m]));
                xySEPERATS3ETM3 = (xySEPERATS3ETM3 + (pifSEPERATS2S3ETM3arrayRAND[m] * pifSEPERATS3slaveETM3arrayRAND[m]));
                xySEPERATS3ETM4 = (xySEPERATS3ETM4 + (pifSEPERATS2S3ETM4arrayRAND[m] * pifSEPERATS3slaveETM4arrayRAND[m]));
                xySEPERATS3ETM5 = (xySEPERATS3ETM5 + (pifSEPERATS2S3ETM5arrayRAND[m] * pifSEPERATS3slaveETM5arrayRAND[m]));
                xySEPERATS3ETM7 = (xySEPERATS3ETM7 + (pifSEPERATS2S3ETM7arrayRAND[m] * pifSEPERATS3slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS3ETM1 = xSEPERATS3ETM1 / minPifVAL;
            xAritSEPERATS3ETM2 = xSEPERATS3ETM2 / minPifVAL;
            xAritSEPERATS3ETM3 = xSEPERATS3ETM3 / minPifVAL;
            xAritSEPERATS3ETM4 = xSEPERATS3ETM4 / minPifVAL;
            xAritSEPERATS3ETM5 = xSEPERATS3ETM5 / minPifVAL;
            xAritSEPERATS3ETM7 = xSEPERATS3ETM7 / minPifVAL;
    
            yAritSEPERATS3ETM1 = ySEPERATS3ETM1 / minPifVAL;
            yAritSEPERATS3ETM2 = ySEPERATS3ETM2 / minPifVAL;
            yAritSEPERATS3ETM3 = ySEPERATS3ETM3 / minPifVAL;
            yAritSEPERATS3ETM4 = ySEPERATS3ETM4 / minPifVAL;
            yAritSEPERATS3ETM5 = ySEPERATS3ETM5 / minPifVAL;
            yAritSEPERATS3ETM7 = ySEPERATS3ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3ETM1 = (xxAritQuadSEPERATS3ETM1 + ((pifSEPERATS2S3ETM1arrayRAND[n] - xAritSEPERATS3ETM1)^2));
                xxAritQuadSEPERATS3ETM2 = (xxAritQuadSEPERATS3ETM2 + ((pifSEPERATS2S3ETM2arrayRAND[n] - xAritSEPERATS3ETM2)^2));
                xxAritQuadSEPERATS3ETM3 = (xxAritQuadSEPERATS3ETM3 + ((pifSEPERATS2S3ETM3arrayRAND[n] - xAritSEPERATS3ETM3)^2));
                xxAritQuadSEPERATS3ETM4 = (xxAritQuadSEPERATS3ETM4 + ((pifSEPERATS2S3ETM4arrayRAND[n] - xAritSEPERATS3ETM4)^2));
                xxAritQuadSEPERATS3ETM5 = (xxAritQuadSEPERATS3ETM5 + ((pifSEPERATS2S3ETM5arrayRAND[n] - xAritSEPERATS3ETM5)^2));
                xxAritQuadSEPERATS3ETM7 = (xxAritQuadSEPERATS3ETM7 + ((pifSEPERATS2S3ETM7arrayRAND[n] - xAritSEPERATS3ETM7)^2));
    
                yyAritQuadSEPERATS3ETM1 = (yyAritQuadSEPERATS3ETM1 + ((pifSEPERATS3slaveETM1arrayRAND[n] - yAritSEPERATS3ETM1)^2));
                yyAritQuadSEPERATS3ETM2 = (yyAritQuadSEPERATS3ETM2 + ((pifSEPERATS3slaveETM2arrayRAND[n] - yAritSEPERATS3ETM2)^2));
                yyAritQuadSEPERATS3ETM3 = (yyAritQuadSEPERATS3ETM3 + ((pifSEPERATS3slaveETM3arrayRAND[n] - yAritSEPERATS3ETM3)^2));
                yyAritQuadSEPERATS3ETM4 = (yyAritQuadSEPERATS3ETM4 + ((pifSEPERATS3slaveETM4arrayRAND[n] - yAritSEPERATS3ETM4)^2));
                yyAritQuadSEPERATS3ETM5 = (yyAritQuadSEPERATS3ETM5 + ((pifSEPERATS3slaveETM5arrayRAND[n] - yAritSEPERATS3ETM5)^2));
                yyAritQuadSEPERATS3ETM7 = (yyAritQuadSEPERATS3ETM7 + ((pifSEPERATS3slaveETM7arrayRAND[n] - yAritSEPERATS3ETM7)^2));
    
                qXYSEPERATS3ETM1 = (qXYSEPERATS3ETM1 + ((pifSEPERATS2S3ETM1arrayRAND[n] - xAritSEPERATS3ETM1) * (pifSEPERATS3slaveETM1arrayRAND[n] - yAritSEPERATS3ETM1)));
                qXYSEPERATS3ETM2 = (qXYSEPERATS3ETM2 + ((pifSEPERATS2S3ETM2arrayRAND[n] - xAritSEPERATS3ETM2) * (pifSEPERATS3slaveETM2arrayRAND[n] - yAritSEPERATS3ETM2)));
                qXYSEPERATS3ETM3 = (qXYSEPERATS3ETM3 + ((pifSEPERATS2S3ETM3arrayRAND[n] - xAritSEPERATS3ETM3) * (pifSEPERATS3slaveETM3arrayRAND[n] - yAritSEPERATS3ETM3)));
                qXYSEPERATS3ETM4 = (qXYSEPERATS3ETM4 + ((pifSEPERATS2S3ETM4arrayRAND[n] - xAritSEPERATS3ETM4) * (pifSEPERATS3slaveETM4arrayRAND[n] - yAritSEPERATS3ETM4)));
                qXYSEPERATS3ETM5 = (qXYSEPERATS3ETM5 + ((pifSEPERATS2S3ETM5arrayRAND[n] - xAritSEPERATS3ETM5) * (pifSEPERATS3slaveETM5arrayRAND[n] - yAritSEPERATS3ETM5)));
                qXYSEPERATS3ETM7 = (qXYSEPERATS3ETM7 + ((pifSEPERATS2S3ETM7arrayRAND[n] - xAritSEPERATS3ETM7) * (pifSEPERATS3slaveETM7arrayRAND[n] - yAritSEPERATS3ETM7)));
            }
        
            aSEPERATS3ETM1 = (((xQuadSEPERATS3ETM1 * ySEPERATS3ETM1) - (xSEPERATS3ETM1 * xySEPERATS3ETM1)) / ((minPifVAL * xQuadSEPERATS3ETM1) - (xSEPERATS3ETM1^2)));
            aSEPERATS3ETM2 = (((xQuadSEPERATS3ETM2 * ySEPERATS3ETM2) - (xSEPERATS3ETM2 * xySEPERATS3ETM2)) /((minPifVAL * xQuadSEPERATS3ETM2) - (xSEPERATS3ETM2^2)));
            aSEPERATS3ETM3 = (((xQuadSEPERATS3ETM3 * ySEPERATS3ETM3) - (xSEPERATS3ETM3 * xySEPERATS3ETM3)) / ((minPifVAL * xQuadSEPERATS3ETM3) - (xSEPERATS3ETM3^2)));
            aSEPERATS3ETM4 = (((xQuadSEPERATS3ETM4 * ySEPERATS3ETM4) - (xSEPERATS3ETM4 * xySEPERATS3ETM4)) / ((minPifVAL * xQuadSEPERATS3ETM4) - (xSEPERATS3ETM4^2)));
            aSEPERATS3ETM5 = (((xQuadSEPERATS3ETM5 * ySEPERATS3ETM5) - (xSEPERATS3ETM5 * xySEPERATS3ETM5)) / ((minPifVAL * xQuadSEPERATS3ETM5) - (xSEPERATS3ETM5^2)));
            aSEPERATS3ETM7 = (((xQuadSEPERATS3ETM7 * ySEPERATS3ETM7) - (xSEPERATS3ETM7 * xySEPERATS3ETM7)) / ((minPifVAL * xQuadSEPERATS3ETM7) - (xSEPERATS3ETM7^2)));
            
            bSEPERATS3ETM1 = qXYSEPERATS3ETM1 / xxAritQuadSEPERATS3ETM1;
            bSEPERATS3ETM2 = qXYSEPERATS3ETM2 / xxAritQuadSEPERATS3ETM2;
            bSEPERATS3ETM3 = qXYSEPERATS3ETM3 / xxAritQuadSEPERATS3ETM3;
            bSEPERATS3ETM4 = qXYSEPERATS3ETM4 / xxAritQuadSEPERATS3ETM4;
            bSEPERATS3ETM5 = qXYSEPERATS3ETM5 / xxAritQuadSEPERATS3ETM5;
            bSEPERATS3ETM7 = qXYSEPERATS3ETM7 / xxAritQuadSEPERATS3ETM7;
    
            rSEPERATS3ETM1 = (qXYSEPERATS3ETM1 / ((xxAritQuadSEPERATS3ETM1 * yyAritQuadSEPERATS3ETM1)^0.5));
            rSEPERATS3ETM2 = (qXYSEPERATS3ETM2 / ((xxAritQuadSEPERATS3ETM2 * yyAritQuadSEPERATS3ETM2)^0.5));
            rSEPERATS3ETM3 = (qXYSEPERATS3ETM3 / ((xxAritQuadSEPERATS3ETM3 * yyAritQuadSEPERATS3ETM3)^0.5));
            rSEPERATS3ETM4 = (qXYSEPERATS3ETM4 / ((xxAritQuadSEPERATS3ETM4 * yyAritQuadSEPERATS3ETM4)^0.5));
            rSEPERATS3ETM5 = (qXYSEPERATS3ETM5 / ((xxAritQuadSEPERATS3ETM5 * yyAritQuadSEPERATS3ETM5)^0.5));
            rSEPERATS3ETM7 = (qXYSEPERATS3ETM7 / ((xxAritQuadSEPERATS3ETM7 * yyAritQuadSEPERATS3ETM7)^0.5));
    
            rQuadSEPERATS3ETM1 = ((rSEPERATS3ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3ETM2 = ((rSEPERATS3ETM2^2) * 100);
            rQuadSEPERATS3ETM3 = ((rSEPERATS3ETM3^2) * 100);
            rQuadSEPERATS3ETM4 = ((rSEPERATS3ETM4^2) * 100);
            rQuadSEPERATS3ETM5 = ((rSEPERATS3ETM5^2) * 100);
            rQuadSEPERATS3ETM7 = ((rSEPERATS3ETM7^2) * 100);
        
            syxSEPERATS3ETM1 = (((yyAritQuadSEPERATS3ETM1 - ((qXYSEPERATS3ETM1^2) / xxAritQuadSEPERATS3ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM2 = (((yyAritQuadSEPERATS3ETM2 - ((qXYSEPERATS3ETM2^2) / xxAritQuadSEPERATS3ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM3 = (((yyAritQuadSEPERATS3ETM3 - ((qXYSEPERATS3ETM3^2) / xxAritQuadSEPERATS3ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM4 = (((yyAritQuadSEPERATS3ETM4 - ((qXYSEPERATS3ETM4^2) / xxAritQuadSEPERATS3ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM5 = (((yyAritQuadSEPERATS3ETM5 - ((qXYSEPERATS3ETM5^2) / xxAritQuadSEPERATS3ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM7 = (((yyAritQuadSEPERATS3ETM7 - ((qXYSEPERATS3ETM7^2) / xxAritQuadSEPERATS3ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3ETM1 = (((syxSEPERATS3ETM1^2) / xxAritQuadSEPERATS3ETM1)^0.5);
            bStandSEPERATS3ETM2 = (((syxSEPERATS3ETM2^2) / xxAritQuadSEPERATS3ETM2)^0.5);
            bStandSEPERATS3ETM3 = (((syxSEPERATS3ETM3^2) / xxAritQuadSEPERATS3ETM3)^0.5);
            bStandSEPERATS3ETM4 = (((syxSEPERATS3ETM4^2) / xxAritQuadSEPERATS3ETM4)^0.5);
            bStandSEPERATS3ETM5 = (((syxSEPERATS3ETM5^2) / xxAritQuadSEPERATS3ETM5)^0.5);
            bStandSEPERATS3ETM7 = (((syxSEPERATS3ETM7^2) / xxAritQuadSEPERATS3ETM7)^0.5);
    
            aStandSEPERATS3ETM1 = (bStandSEPERATS3ETM1 * ((xQuadSEPERATS3ETM1 / minPifVAL)^0.5));
            aStandSEPERATS3ETM2 = (bStandSEPERATS3ETM2 * ((xQuadSEPERATS3ETM2 / minPifVAL)^0.5));
            aStandSEPERATS3ETM3 = (bStandSEPERATS3ETM3 * ((xQuadSEPERATS3ETM3 / minPifVAL)^0.5));
            aStandSEPERATS3ETM4 = (bStandSEPERATS3ETM4 * ((xQuadSEPERATS3ETM4 / minPifVAL)^0.5));
            aStandSEPERATS3ETM5 = (bStandSEPERATS3ETM5 * ((xQuadSEPERATS3ETM5 / minPifVAL)^0.5));
            aStandSEPERATS3ETM7 = (bStandSEPERATS3ETM7 * ((xQuadSEPERATS3ETM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM1, bSEPERATS3ETM1, rSEPERATS3ETM1, rQuadSEPERATS3ETM1, aStandSEPERATS3ETM1, bStandSEPERATS3ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM2, bSEPERATS3ETM2, rSEPERATS3ETM2, rQuadSEPERATS3ETM2, aStandSEPERATS3ETM2, bStandSEPERATS3ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM3, bSEPERATS3ETM3, rSEPERATS3ETM3, rQuadSEPERATS3ETM3, aStandSEPERATS3ETM3, bStandSEPERATS3ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM4, bSEPERATS3ETM4, rSEPERATS3ETM4, rQuadSEPERATS3ETM4, aStandSEPERATS3ETM4, bStandSEPERATS3ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM5, bSEPERATS3ETM5, rSEPERATS3ETM5, rQuadSEPERATS3ETM5, aStandSEPERATS3ETM5, bStandSEPERATS3ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS3ETM7, bSEPERATS3ETM7, rSEPERATS3ETM7, rQuadSEPERATS3ETM7, aStandSEPERATS3ETM7, bStandSEPERATS3ETM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS3slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS3slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS3slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS3slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS3slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS3slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS3slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT3ETM1[i,j] = (aSEPERATS3ETM1 + (bSEPERATS3ETM1 * REFS3ETM1[i,j]));
                    OUT3ETM2[i,j] = (aSEPERATS3ETM2 + (bSEPERATS3ETM2 * REFS3ETM2[i,j]));
                    OUT3ETM3[i,j] = (aSEPERATS3ETM3 + (bSEPERATS3ETM3 * REFS3ETM3[i,j]));
                    OUT3ETM4[i,j] = (aSEPERATS3ETM4 + (bSEPERATS3ETM4 * REFS3ETM4[i,j]));
                    OUT3ETM5[i,j] = (aSEPERATS3ETM5 + (bSEPERATS3ETM5 * REFS3ETM5[i,j]));
                    OUT3ETM7[i,j] = (aSEPERATS3ETM7 + (bSEPERATS3ETM7 * REFS3ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3ETM1);
        	CreatePyramid(OUT3ETM2);
        	CreatePyramid(OUT3ETM3);
        	CreatePyramid(OUT3ETM4);
        	CreatePyramid(OUT3ETM5);
        	CreatePyramid(OUT3ETM7);
        
        	CreateHistogram(OUT3ETM1);
        	CreateHistogram(OUT3ETM2);
        	CreateHistogram(OUT3ETM3);
        	CreateHistogram(OUT3ETM4);
        	CreateHistogram(OUT3ETM5);
        	CreateHistogram(OUT3ETM7);
            CloseRaster(REFS3ETM1);
            CloseRaster(REFS3ETM2);
            CloseRaster(REFS3ETM3);
            CloseRaster(REFS3ETM4);
            CloseRaster(REFS3ETM5);
            CloseRaster(REFS3ETM7);
    
            CloseRaster(OUT3ETM1);
            CloseRaster(OUT3ETM2);
            CloseRaster(OUT3ETM3);
            CloseRaster(OUT3ETM4);
            CloseRaster(OUT3ETM5);
            CloseRaster(OUT3ETM7);
        
        	printf("Scene 3 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors3 == 6 )
            {
            numeric xAritSEPERATS3TM1, xAritSEPERATS3TM2, xAritSEPERATS3TM3, xAritSEPERATS3TM4, xAritSEPERATS3TM5, xAritSEPERATS3TM7;
            numeric yAritSEPERATS3TM1, yAritSEPERATS3TM2, yAritSEPERATS3TM3, yAritSEPERATS3TM4, yAritSEPERATS3TM5, yAritSEPERATS3TM7;
    
            numeric aSEPERATS3TM1, aSEPERATS3TM2, aSEPERATS3TM3, aSEPERATS3TM4, aSEPERATS3TM5, aSEPERATS3TM7;
            numeric bSEPERATS3TM1, bSEPERATS3TM2, bSEPERATS3TM3, bSEPERATS3TM4, bSEPERATS3TM5, bSEPERATS3TM7;
            numeric rSEPERATS3TM1, rSEPERATS3TM2, rSEPERATS3TM3, rSEPERATS3TM4, rSEPERATS3TM5, rSEPERATS3TM7;
            numeric rQuadSEPERATS3TM1, rQuadSEPERATS3TM2, rQuadSEPERATS3TM3, rQuadSEPERATS3TM4, rQuadSEPERATS3TM5, rQuadSEPERATS3TM7;
            numeric syxSEPERATS3TM1, syxSEPERATS3TM2, syxSEPERATS3TM3, syxSEPERATS3TM4, syxSEPERATS3TM5, syxSEPERATS3TM7;
            numeric bStandSEPERATS3TM1, bStandSEPERATS3TM2, bStandSEPERATS3TM3, bStandSEPERATS3TM4, bStandSEPERATS3TM5, bStandSEPERATS3TM7;
            numeric aStandSEPERATS3TM1, aStandSEPERATS3TM2, aStandSEPERATS3TM3, aStandSEPERATS3TM4, aStandSEPERATS3TM5, aStandSEPERATS3TM7;
    
            numeric xSEPERATS3TM1 = 0;
            numeric xSEPERATS3TM2 = 0;
            numeric xSEPERATS3TM3 = 0;
            numeric xSEPERATS3TM4 = 0;
            numeric xSEPERATS3TM5 = 0;
            numeric xSEPERATS3TM7 = 0;
    
            numeric xQuadSEPERATS3TM1 = 0;
            numeric xQuadSEPERATS3TM2 = 0;
            numeric xQuadSEPERATS3TM3 = 0;
            numeric xQuadSEPERATS3TM4 = 0;
            numeric xQuadSEPERATS3TM5 = 0;
            numeric xQuadSEPERATS3TM7 = 0;
    
            numeric ySEPERATS3TM1 = 0;
            numeric ySEPERATS3TM2 = 0;
            numeric ySEPERATS3TM3 = 0;
            numeric ySEPERATS3TM4 = 0;
            numeric ySEPERATS3TM5 = 0;
            numeric ySEPERATS3TM7 = 0;
    
            numeric yQuadSEPERATS3TM1 = 0;
            numeric yQuadSEPERATS3TM2 = 0;
            numeric yQuadSEPERATS3TM3 = 0;
            numeric yQuadSEPERATS3TM4 = 0;
            numeric yQuadSEPERATS3TM5 = 0;
            numeric yQuadSEPERATS3TM7 = 0;
    
            numeric xySEPERATS3TM1 = 0;
            numeric xySEPERATS3TM2 = 0;
            numeric xySEPERATS3TM3 = 0;
            numeric xySEPERATS3TM4 = 0;
            numeric xySEPERATS3TM5 = 0;
            numeric xySEPERATS3TM7 = 0;
    
            numeric xxAritQuadSEPERATS3TM1 = 0;
            numeric xxAritQuadSEPERATS3TM2 = 0;
            numeric xxAritQuadSEPERATS3TM3 = 0;
            numeric xxAritQuadSEPERATS3TM4 = 0;
            numeric xxAritQuadSEPERATS3TM5 = 0;
            numeric xxAritQuadSEPERATS3TM7 = 0;
    
            numeric yyAritQuadSEPERATS3TM1 = 0;
            numeric yyAritQuadSEPERATS3TM2 = 0;
            numeric yyAritQuadSEPERATS3TM3 = 0;
            numeric yyAritQuadSEPERATS3TM4 = 0;
            numeric yyAritQuadSEPERATS3TM5 = 0;
            numeric yyAritQuadSEPERATS3TM7 = 0;
    
            numeric qXYSEPERATS3TM1 = 0;
            numeric qXYSEPERATS3TM2 = 0;
            numeric qXYSEPERATS3TM3 = 0;
            numeric qXYSEPERATS3TM4 = 0;
            numeric qXYSEPERATS3TM5 = 0;
            numeric qXYSEPERATS3TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS3TM1 = xSEPERATS3TM1 + pifSEPERATS2S3ETM1arrayRAND[m];
                xSEPERATS3TM2 = xSEPERATS3TM2 + pifSEPERATS2S3ETM2arrayRAND[m];
                xSEPERATS3TM3 = xSEPERATS3TM3 + pifSEPERATS2S3ETM3arrayRAND[m];
                xSEPERATS3TM4 = xSEPERATS3TM4 + pifSEPERATS2S3ETM4arrayRAND[m];
                xSEPERATS3TM5 = xSEPERATS3TM5 + pifSEPERATS2S3ETM5arrayRAND[m];
                xSEPERATS3TM7 = xSEPERATS3TM7 + pifSEPERATS2S3ETM7arrayRAND[m];
    
                xQuadSEPERATS3TM1 = (xQuadSEPERATS3TM1 + (pifSEPERATS2S3ETM1arrayRAND[m]^2));
                xQuadSEPERATS3TM2 = (xQuadSEPERATS3TM2 + (pifSEPERATS2S3ETM2arrayRAND[m]^2));
                xQuadSEPERATS3TM3 = (xQuadSEPERATS3TM3 + (pifSEPERATS2S3ETM3arrayRAND[m]^2));
                xQuadSEPERATS3TM4 = (xQuadSEPERATS3TM4 + (pifSEPERATS2S3ETM4arrayRAND[m]^2));
                xQuadSEPERATS3TM5 = (xQuadSEPERATS3TM5 + (pifSEPERATS2S3ETM5arrayRAND[m]^2));
                xQuadSEPERATS3TM7 = (xQuadSEPERATS3TM7 + (pifSEPERATS2S3ETM7arrayRAND[m]^2));
    
                ySEPERATS3TM1 = ySEPERATS3TM1 + pifSEPERATS3slaveTM1arrayRAND[m];
                ySEPERATS3TM2 = ySEPERATS3TM2 + pifSEPERATS3slaveTM2arrayRAND[m];
                ySEPERATS3TM3 = ySEPERATS3TM3 + pifSEPERATS3slaveTM3arrayRAND[m];
                ySEPERATS3TM4 = ySEPERATS3TM4 + pifSEPERATS3slaveTM4arrayRAND[m];
                ySEPERATS3TM5 = ySEPERATS3TM5 + pifSEPERATS3slaveTM5arrayRAND[m];
                ySEPERATS3TM7 = ySEPERATS3TM7 + pifSEPERATS3slaveTM7arrayRAND[m];
                
                yQuadSEPERATS3TM1 = (yQuadSEPERATS3TM1 + (pifSEPERATS3slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS3TM2 = (yQuadSEPERATS3TM2 + (pifSEPERATS3slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS3TM3 = (yQuadSEPERATS3TM3 + (pifSEPERATS3slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS3TM4 = (yQuadSEPERATS3TM4 + (pifSEPERATS3slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS3TM5 = (yQuadSEPERATS3TM5 + (pifSEPERATS3slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS3TM7 = (yQuadSEPERATS3TM7 + (pifSEPERATS3slaveTM7arrayRAND[m]^2));
    
                xySEPERATS3TM1 = (xySEPERATS3TM1 + (pifSEPERATS2S3ETM1arrayRAND[m] * pifSEPERATS3slaveTM1arrayRAND[m]));
                xySEPERATS3TM2 = (xySEPERATS3TM2 + (pifSEPERATS2S3ETM2arrayRAND[m] * pifSEPERATS3slaveTM2arrayRAND[m]));
                xySEPERATS3TM3 = (xySEPERATS3TM3 + (pifSEPERATS2S3ETM3arrayRAND[m] * pifSEPERATS3slaveTM3arrayRAND[m]));
                xySEPERATS3TM4 = (xySEPERATS3TM4 + (pifSEPERATS2S3ETM4arrayRAND[m] * pifSEPERATS3slaveTM4arrayRAND[m]));
                xySEPERATS3TM5 = (xySEPERATS3TM5 + (pifSEPERATS2S3ETM5arrayRAND[m] * pifSEPERATS3slaveTM5arrayRAND[m]));
                xySEPERATS3TM7 = (xySEPERATS3TM7 + (pifSEPERATS2S3ETM7arrayRAND[m] * pifSEPERATS3slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS3TM1 = xSEPERATS3TM1 / minPifVAL;
            xAritSEPERATS3TM2 = xSEPERATS3TM2 / minPifVAL;
            xAritSEPERATS3TM3 = xSEPERATS3TM3 / minPifVAL;
            xAritSEPERATS3TM4 = xSEPERATS3TM4 / minPifVAL;
            xAritSEPERATS3TM5 = xSEPERATS3TM5 / minPifVAL;
            xAritSEPERATS3TM7 = xSEPERATS3TM7 / minPifVAL;
    
            yAritSEPERATS3TM1 = ySEPERATS3TM1 / minPifVAL;
            yAritSEPERATS3TM2 = ySEPERATS3TM2 / minPifVAL;
            yAritSEPERATS3TM3 = ySEPERATS3TM3 / minPifVAL;
            yAritSEPERATS3TM4 = ySEPERATS3TM4 / minPifVAL;
            yAritSEPERATS3TM5 = ySEPERATS3TM5 / minPifVAL;
            yAritSEPERATS3TM7 = ySEPERATS3TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3TM1 = (xxAritQuadSEPERATS3TM1 + ((pifSEPERATS2S3ETM1arrayRAND[n] - xAritSEPERATS3TM1)^2));
                xxAritQuadSEPERATS3TM2 = (xxAritQuadSEPERATS3TM2 + ((pifSEPERATS2S3ETM2arrayRAND[n] - xAritSEPERATS3TM2)^2));
                xxAritQuadSEPERATS3TM3 = (xxAritQuadSEPERATS3TM3 + ((pifSEPERATS2S3ETM3arrayRAND[n] - xAritSEPERATS3TM3)^2));
                xxAritQuadSEPERATS3TM4 = (xxAritQuadSEPERATS3TM4 + ((pifSEPERATS2S3ETM4arrayRAND[n] - xAritSEPERATS3TM4)^2));
                xxAritQuadSEPERATS3TM5 = (xxAritQuadSEPERATS3TM5 + ((pifSEPERATS2S3ETM5arrayRAND[n] - xAritSEPERATS3TM5)^2));
                xxAritQuadSEPERATS3TM7 = (xxAritQuadSEPERATS3TM7 + ((pifSEPERATS2S3ETM7arrayRAND[n] - xAritSEPERATS3TM7)^2));
    
                yyAritQuadSEPERATS3TM1 = (yyAritQuadSEPERATS3TM1 + ((pifSEPERATS3slaveTM1arrayRAND[n] - yAritSEPERATS3TM1)^2));
                yyAritQuadSEPERATS3TM2 = (yyAritQuadSEPERATS3TM2 + ((pifSEPERATS3slaveTM2arrayRAND[n] - yAritSEPERATS3TM2)^2));
                yyAritQuadSEPERATS3TM3 = (yyAritQuadSEPERATS3TM3 + ((pifSEPERATS3slaveTM3arrayRAND[n] - yAritSEPERATS3TM3)^2));
                yyAritQuadSEPERATS3TM4 = (yyAritQuadSEPERATS3TM4 + ((pifSEPERATS3slaveTM4arrayRAND[n] - yAritSEPERATS3TM4)^2));
                yyAritQuadSEPERATS3TM5 = (yyAritQuadSEPERATS3TM5 + ((pifSEPERATS3slaveTM5arrayRAND[n] - yAritSEPERATS3TM5)^2));
                yyAritQuadSEPERATS3TM7 = (yyAritQuadSEPERATS3TM7 + ((pifSEPERATS3slaveTM7arrayRAND[n] - yAritSEPERATS3TM7)^2));
    
                qXYSEPERATS3TM1 = (qXYSEPERATS3TM1 + ((pifSEPERATS2S3ETM1arrayRAND[n] - xAritSEPERATS3TM1) * (pifSEPERATS3slaveTM1arrayRAND[n] - yAritSEPERATS3TM1)));
                qXYSEPERATS3TM2 = (qXYSEPERATS3TM2 + ((pifSEPERATS2S3ETM2arrayRAND[n] - xAritSEPERATS3TM2) * (pifSEPERATS3slaveTM2arrayRAND[n] - yAritSEPERATS3TM2)));
                qXYSEPERATS3TM3 = (qXYSEPERATS3TM3 + ((pifSEPERATS2S3ETM3arrayRAND[n] - xAritSEPERATS3TM3) * (pifSEPERATS3slaveTM3arrayRAND[n] - yAritSEPERATS3TM3)));
                qXYSEPERATS3TM4 = (qXYSEPERATS3TM4 + ((pifSEPERATS2S3ETM4arrayRAND[n] - xAritSEPERATS3TM4) * (pifSEPERATS3slaveTM4arrayRAND[n] - yAritSEPERATS3TM4)));
                qXYSEPERATS3TM5 = (qXYSEPERATS3TM5 + ((pifSEPERATS2S3ETM5arrayRAND[n] - xAritSEPERATS3TM5) * (pifSEPERATS3slaveTM5arrayRAND[n] - yAritSEPERATS3TM5)));
                qXYSEPERATS3TM7 = (qXYSEPERATS3TM7 + ((pifSEPERATS2S3ETM7arrayRAND[n] - xAritSEPERATS3TM7) * (pifSEPERATS3slaveTM7arrayRAND[n] - yAritSEPERATS3TM7)));
            }
        
            aSEPERATS3TM1 = (((xQuadSEPERATS3TM1 * ySEPERATS3TM1) - (xSEPERATS3TM1 * xySEPERATS3TM1)) / ((minPifVAL * xQuadSEPERATS3TM1) - (xSEPERATS3TM1^2)));
            aSEPERATS3TM2 = (((xQuadSEPERATS3TM2 * ySEPERATS3TM2) - (xSEPERATS3TM2 * xySEPERATS3TM2)) / ((minPifVAL * xQuadSEPERATS3TM2) - (xSEPERATS3TM2^2)));
            aSEPERATS3TM3 = (((xQuadSEPERATS3TM3 * ySEPERATS3TM3) - (xSEPERATS3TM3 * xySEPERATS3TM3)) / ((minPifVAL * xQuadSEPERATS3TM3) - (xSEPERATS3TM3^2)));
            aSEPERATS3TM4 = (((xQuadSEPERATS3TM4 * ySEPERATS3TM4) - (xSEPERATS3TM4 * xySEPERATS3TM4)) / ((minPifVAL * xQuadSEPERATS3TM4) - (xSEPERATS3TM4^2)));
            aSEPERATS3TM5 = (((xQuadSEPERATS3TM5 * ySEPERATS3TM5) - (xSEPERATS3TM5 * xySEPERATS3TM5)) / ((minPifVAL * xQuadSEPERATS3TM5) - (xSEPERATS3TM5^2)));
            aSEPERATS3TM7 = (((xQuadSEPERATS3TM7 * ySEPERATS3TM7) - (xSEPERATS3TM7 * xySEPERATS3TM7)) / ((minPifVAL * xQuadSEPERATS3TM7) - (xSEPERATS3TM7^2)));
            
            bSEPERATS3TM1 = qXYSEPERATS3TM1 / xxAritQuadSEPERATS3TM1;
            bSEPERATS3TM2 = qXYSEPERATS3TM2 / xxAritQuadSEPERATS3TM2;
            bSEPERATS3TM3 = qXYSEPERATS3TM3 / xxAritQuadSEPERATS3TM3;
            bSEPERATS3TM4 = qXYSEPERATS3TM4 / xxAritQuadSEPERATS3TM4;
            bSEPERATS3TM5 = qXYSEPERATS3TM5 / xxAritQuadSEPERATS3TM5;
            bSEPERATS3TM7 = qXYSEPERATS3TM7 / xxAritQuadSEPERATS3TM7;
    
            rSEPERATS3TM1 = (qXYSEPERATS3TM1 / ((xxAritQuadSEPERATS3TM1 * yyAritQuadSEPERATS3TM1)^0.5));
            rSEPERATS3TM2 = (qXYSEPERATS3TM2 / ((xxAritQuadSEPERATS3TM2 * yyAritQuadSEPERATS3TM2)^0.5));
            rSEPERATS3TM3 = (qXYSEPERATS3TM3 / ((xxAritQuadSEPERATS3TM3 * yyAritQuadSEPERATS3TM3)^0.5));
            rSEPERATS3TM4 = (qXYSEPERATS3TM4 / ((xxAritQuadSEPERATS3TM4 * yyAritQuadSEPERATS3TM4)^0.5));
            rSEPERATS3TM5 = (qXYSEPERATS3TM5 / ((xxAritQuadSEPERATS3TM5 * yyAritQuadSEPERATS3TM5)^0.5));
            rSEPERATS3TM7 = (qXYSEPERATS3TM7 / ((xxAritQuadSEPERATS3TM7 * yyAritQuadSEPERATS3TM7)^0.5));
    
            rQuadSEPERATS3TM1 = ((rSEPERATS3TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3TM2 = ((rSEPERATS3TM2^2) * 100);
            rQuadSEPERATS3TM3 = ((rSEPERATS3TM3^2) * 100);
            rQuadSEPERATS3TM4 = ((rSEPERATS3TM4^2) * 100);
            rQuadSEPERATS3TM5 = ((rSEPERATS3TM5^2) * 100);
            rQuadSEPERATS3TM7 = ((rSEPERATS3TM7^2) * 100);
        
            syxSEPERATS3TM1 = (((yyAritQuadSEPERATS3TM1 - ((qXYSEPERATS3TM1^2) / xxAritQuadSEPERATS3TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM2 = (((yyAritQuadSEPERATS3TM2 - ((qXYSEPERATS3TM2^2) / xxAritQuadSEPERATS3TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM3 = (((yyAritQuadSEPERATS3TM3 - ((qXYSEPERATS3TM3^2) / xxAritQuadSEPERATS3TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM4 = (((yyAritQuadSEPERATS3TM4 - ((qXYSEPERATS3TM4^2) / xxAritQuadSEPERATS3TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM5 = (((yyAritQuadSEPERATS3TM5 - ((qXYSEPERATS3TM5^2) / xxAritQuadSEPERATS3TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM7 = (((yyAritQuadSEPERATS3TM7 - ((qXYSEPERATS3TM7^2) / xxAritQuadSEPERATS3TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3TM1 = (((syxSEPERATS3TM1^2) / xxAritQuadSEPERATS3TM1)^0.5);
            bStandSEPERATS3TM2 = (((syxSEPERATS3TM2^2) / xxAritQuadSEPERATS3TM2)^0.5);
            bStandSEPERATS3TM3 = (((syxSEPERATS3TM3^2) / xxAritQuadSEPERATS3TM3)^0.5);
            bStandSEPERATS3TM4 = (((syxSEPERATS3TM4^2) / xxAritQuadSEPERATS3TM4)^0.5);
            bStandSEPERATS3TM5 = (((syxSEPERATS3TM5^2) / xxAritQuadSEPERATS3TM5)^0.5);
            bStandSEPERATS3TM7 = (((syxSEPERATS3TM7^2) / xxAritQuadSEPERATS3TM7)^0.5);
    
            aStandSEPERATS3TM1 = (bStandSEPERATS3TM1 * ((xQuadSEPERATS3TM1 / minPifVAL)^0.5));
            aStandSEPERATS3TM2 = (bStandSEPERATS3TM2 * ((xQuadSEPERATS3TM2 / minPifVAL)^0.5));
            aStandSEPERATS3TM3 = (bStandSEPERATS3TM3 * ((xQuadSEPERATS3TM3 / minPifVAL)^0.5));
            aStandSEPERATS3TM4 = (bStandSEPERATS3TM4 * ((xQuadSEPERATS3TM4 / minPifVAL)^0.5));
            aStandSEPERATS3TM5 = (bStandSEPERATS3TM5 * ((xQuadSEPERATS3TM5 / minPifVAL)^0.5));
            aStandSEPERATS3TM7 = (bStandSEPERATS3TM7 * ((xQuadSEPERATS3TM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM1, bSEPERATS3TM1, rSEPERATS3TM1, rQuadSEPERATS3TM1, aStandSEPERATS3TM1, bStandSEPERATS3TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM2, bSEPERATS3TM2, rSEPERATS3TM2, rQuadSEPERATS3TM2, aStandSEPERATS3TM2, bStandSEPERATS3TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM3, bSEPERATS3TM3, rSEPERATS3TM3, rQuadSEPERATS3TM3, aStandSEPERATS3TM3, bStandSEPERATS3TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM4, bSEPERATS3TM4, rSEPERATS3TM4, rQuadSEPERATS3TM4, aStandSEPERATS3TM4, bStandSEPERATS3TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM5, bSEPERATS3TM5, rSEPERATS3TM5, rQuadSEPERATS3TM5, aStandSEPERATS3TM5, bStandSEPERATS3TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS3TM7, bSEPERATS3TM7, rSEPERATS3TM7, rQuadSEPERATS3TM7, aStandSEPERATS3TM7, bStandSEPERATS3TM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS3slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS3slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS3slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS3slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS3slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS3slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS3slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT3TM1[i,j] = (aSEPERATS3TM1 + (bSEPERATS3TM1 * REFS3TM1[i,j]));
                    OUT3TM2[i,j] = (aSEPERATS3TM2 + (bSEPERATS3TM2 * REFS3TM2[i,j]));
                    OUT3TM3[i,j] = (aSEPERATS3TM3 + (bSEPERATS3TM3 * REFS3TM3[i,j]));
                    OUT3TM4[i,j] = (aSEPERATS3TM4 + (bSEPERATS3TM4 * REFS3TM4[i,j]));
                    OUT3TM5[i,j] = (aSEPERATS3TM5 + (bSEPERATS3TM5 * REFS3TM5[i,j]));
                    OUT3TM7[i,j] = (aSEPERATS3TM7 + (bSEPERATS3TM7 * REFS3TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3TM1);
        	CreatePyramid(OUT3TM2);
        	CreatePyramid(OUT3TM3);
        	CreatePyramid(OUT3TM4);
        	CreatePyramid(OUT3TM5);
        	CreatePyramid(OUT3TM7);
        
        	CreateHistogram(OUT3TM1);
        	CreateHistogram(OUT3TM2);
        	CreateHistogram(OUT3TM3);
        	CreateHistogram(OUT3TM4);
        	CreateHistogram(OUT3TM5);
        	CreateHistogram(OUT3TM7);
            CloseRaster(REFS3TM1);
            CloseRaster(REFS3TM2);
            CloseRaster(REFS3TM3);
            CloseRaster(REFS3TM4);
            CloseRaster(REFS3TM5);
            CloseRaster(REFS3TM7);
    
            CloseRaster(OUT3TM1);
            CloseRaster(OUT3TM2);
            CloseRaster(OUT3TM3);
            CloseRaster(OUT3TM4);
            CloseRaster(OUT3TM5);
            CloseRaster(OUT3TM7);
        
        	printf("Scene 3 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS3MSS1, xAritSEPERATS3MSS2, xAritSEPERATS3MSS4;
            numeric yAritSEPERATS3MSS1, yAritSEPERATS3MSS2, yAritSEPERATS3MSS4;
    
            numeric aSEPERATS3MSS1, aSEPERATS3MSS2, aSEPERATS3MSS4;
            numeric bSEPERATS3MSS1, bSEPERATS3MSS2, bSEPERATS3MSS4;
            numeric rSEPERATS3MSS1, rSEPERATS3MSS2, rSEPERATS3MSS4;
            numeric rQuadSEPERATS3MSS1, rQuadSEPERATS3MSS2, rQuadSEPERATS3MSS4;
            numeric syxSEPERATS3MSS1, syxSEPERATS3MSS2, syxSEPERATS3MSS4;
            numeric bStandSEPERATS3MSS1, bStandSEPERATS3MSS2, bStandSEPERATS3MSS4;
            numeric aStandSEPERATS3MSS1, aStandSEPERATS3MSS2, aStandSEPERATS3MSS4;
    
            numeric xSEPERATS3MSS1 = 0;
            numeric xSEPERATS3MSS2 = 0;
            numeric xSEPERATS3MSS4 = 0;
    
            numeric xQuadSEPERATS3MSS1 = 0;
            numeric xQuadSEPERATS3MSS2 = 0;
            numeric xQuadSEPERATS3MSS4 = 0;
    
            numeric ySEPERATS3MSS1 = 0;
            numeric ySEPERATS3MSS2 = 0;
            numeric ySEPERATS3MSS4 = 0;
    
            numeric yQuadSEPERATS3MSS1 = 0;
            numeric yQuadSEPERATS3MSS2 = 0;
            numeric yQuadSEPERATS3MSS4 = 0;
    
            numeric xySEPERATS3MSS1 = 0;
            numeric xySEPERATS3MSS2 = 0;
            numeric xySEPERATS3MSS4 = 0;
    
            numeric xxAritQuadSEPERATS3MSS1 = 0;
            numeric xxAritQuadSEPERATS3MSS2 = 0;
            numeric xxAritQuadSEPERATS3MSS4 = 0;
    
            numeric yyAritQuadSEPERATS3MSS1 = 0;
            numeric yyAritQuadSEPERATS3MSS2 = 0;
            numeric yyAritQuadSEPERATS3MSS4 = 0;
    
            numeric qXYSEPERATS3MSS1 = 0;
            numeric qXYSEPERATS3MSS2 = 0;
            numeric qXYSEPERATS3MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS3MSS1 = xSEPERATS3MSS1 + pifSEPERATS2S3ETM2arrayRAND[m];
                xSEPERATS3MSS2 = xSEPERATS3MSS2 + pifSEPERATS2S3ETM3arrayRAND[m];
                xSEPERATS3MSS4 = xSEPERATS3MSS4 + pifSEPERATS2S3ETM4arrayRAND[m];
    
                xQuadSEPERATS3MSS1 = (xQuadSEPERATS3MSS1 + (pifSEPERATS2S3ETM2arrayRAND[m]^2));
                xQuadSEPERATS3MSS2 = (xQuadSEPERATS3MSS2 + (pifSEPERATS2S3ETM3arrayRAND[m]^2));
                xQuadSEPERATS3MSS4 = (xQuadSEPERATS3MSS4 + (pifSEPERATS2S3ETM4arrayRAND[m]^2));
    
                ySEPERATS3MSS1 = ySEPERATS3MSS1 + pifSEPERATS3slaveMSS1arrayRAND[m];
                ySEPERATS3MSS2 = ySEPERATS3MSS2 + pifSEPERATS3slaveMSS2arrayRAND[m];
                ySEPERATS3MSS4 = ySEPERATS3MSS4 + pifSEPERATS3slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS3MSS1 = (yQuadSEPERATS3MSS1 + (pifSEPERATS3slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS3MSS2 = (yQuadSEPERATS3MSS2 + (pifSEPERATS3slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS3MSS4 = (yQuadSEPERATS3MSS4 + (pifSEPERATS3slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS3MSS1 = (xySEPERATS3MSS1 + (pifSEPERATS2S3ETM2arrayRAND[m] * pifSEPERATS3slaveMSS1arrayRAND[m]));
                xySEPERATS3MSS2 = (xySEPERATS3MSS2 + (pifSEPERATS2S3ETM3arrayRAND[m] * pifSEPERATS3slaveMSS2arrayRAND[m]));
                xySEPERATS3MSS4 = (xySEPERATS3MSS4 + (pifSEPERATS2S3ETM4arrayRAND[m] * pifSEPERATS3slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS3MSS1 = xSEPERATS3MSS1 / minPifVAL;
            xAritSEPERATS3MSS2 = xSEPERATS3MSS2 / minPifVAL;
            xAritSEPERATS3MSS4 = xSEPERATS3MSS4 / minPifVAL;
    
            yAritSEPERATS3MSS1 = ySEPERATS3MSS1 / minPifVAL;
            yAritSEPERATS3MSS2 = ySEPERATS3MSS2 / minPifVAL;
            yAritSEPERATS3MSS4 = ySEPERATS3MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3MSS1 = (xxAritQuadSEPERATS3MSS1 + ((pifSEPERATS2S3ETM2arrayRAND[n] - xAritSEPERATS3MSS1)^2));
                xxAritQuadSEPERATS3MSS2 = (xxAritQuadSEPERATS3MSS2 + ((pifSEPERATS2S3ETM3arrayRAND[n] - xAritSEPERATS3MSS2)^2));
                xxAritQuadSEPERATS3MSS4 = (xxAritQuadSEPERATS3MSS4 + ((pifSEPERATS2S3ETM4arrayRAND[n] - xAritSEPERATS3MSS4)^2));
    
                yyAritQuadSEPERATS3MSS1 = (yyAritQuadSEPERATS3MSS1 + ((pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)^2));
                yyAritQuadSEPERATS3MSS2 = (yyAritQuadSEPERATS3MSS2 + ((pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)^2));
                yyAritQuadSEPERATS3MSS4 = (yyAritQuadSEPERATS3MSS4 + ((pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)^2));
    
                qXYSEPERATS3MSS1 = (qXYSEPERATS3MSS1 + ((pifSEPERATS2S3ETM2arrayRAND[n] - xAritSEPERATS3MSS1) * (pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)));
                qXYSEPERATS3MSS2 = (qXYSEPERATS3MSS2 + ((pifSEPERATS2S3ETM3arrayRAND[n] - xAritSEPERATS3MSS2) * (pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)));
                qXYSEPERATS3MSS4 = (qXYSEPERATS3MSS4 + ((pifSEPERATS2S3ETM4arrayRAND[n] - xAritSEPERATS3MSS4) * (pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)));
            }
        
            aSEPERATS3MSS1 = (((xQuadSEPERATS3MSS1 * ySEPERATS3MSS1) - (xSEPERATS3MSS1 * xySEPERATS3MSS1)) / ((minPifVAL * xQuadSEPERATS3MSS1) - (xSEPERATS3MSS1^2)));
            aSEPERATS3MSS2 = (((xQuadSEPERATS3MSS2 * ySEPERATS3MSS2) - (xSEPERATS3MSS2 * xySEPERATS3MSS2)) / ((minPifVAL * xQuadSEPERATS3MSS2) - (xSEPERATS3MSS2^2)));
            aSEPERATS3MSS4 = (((xQuadSEPERATS3MSS4 * ySEPERATS3MSS4) - (xSEPERATS3MSS4 * xySEPERATS3MSS4)) / ((minPifVAL * xQuadSEPERATS3MSS4) - (xSEPERATS3MSS4^2)));
            
            bSEPERATS3MSS1 = qXYSEPERATS3MSS1 / xxAritQuadSEPERATS3MSS1;
            bSEPERATS3MSS2 = qXYSEPERATS3MSS2 / xxAritQuadSEPERATS3MSS2;
            bSEPERATS3MSS4 = qXYSEPERATS3MSS4 / xxAritQuadSEPERATS3MSS4;
    
            rSEPERATS3MSS1 = (qXYSEPERATS3MSS1 / ((xxAritQuadSEPERATS3MSS1 * yyAritQuadSEPERATS3MSS1)^0.5));
            rSEPERATS3MSS2 = (qXYSEPERATS3MSS2 / ((xxAritQuadSEPERATS3MSS2 * yyAritQuadSEPERATS3MSS2)^0.5));
            rSEPERATS3MSS4 = (qXYSEPERATS3MSS4 / ((xxAritQuadSEPERATS3MSS4 * yyAritQuadSEPERATS3MSS4)^0.5));
    
            rQuadSEPERATS3MSS1 = ((rSEPERATS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3MSS2 = ((rSEPERATS3MSS2^2) * 100);
            rQuadSEPERATS3MSS4 = ((rSEPERATS3MSS4^2) * 100);
        
            syxSEPERATS3MSS1 = (((yyAritQuadSEPERATS3MSS1 - ((qXYSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS2 = (((yyAritQuadSEPERATS3MSS2 - ((qXYSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS4 = (((yyAritQuadSEPERATS3MSS4 - ((qXYSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3MSS1 = (((syxSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)^0.5);
            bStandSEPERATS3MSS2 = (((syxSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)^0.5);
            bStandSEPERATS3MSS4 = (((syxSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)^0.5);
    
            aStandSEPERATS3MSS1 = (bStandSEPERATS3MSS1 * ((xQuadSEPERATS3MSS1 / minPifVAL)^0.5));
            aStandSEPERATS3MSS2 = (bStandSEPERATS3MSS2 * ((xQuadSEPERATS3MSS2 / minPifVAL)^0.5));
            aStandSEPERATS3MSS4 = (bStandSEPERATS3MSS4 * ((xQuadSEPERATS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS1, bSEPERATS3MSS1, rSEPERATS3MSS1, rQuadSEPERATS3MSS1, aStandSEPERATS3MSS1, bStandSEPERATS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS2, bSEPERATS3MSS2, rSEPERATS3MSS2, rQuadSEPERATS3MSS2, aStandSEPERATS3MSS2, bStandSEPERATS3MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS4, bSEPERATS3MSS4, rSEPERATS3MSS4, rQuadSEPERATS3MSS4, aStandSEPERATS3MSS4, bStandSEPERATS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS3slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS3slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS3slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aSEPERATS3MSS1 + (bSEPERATS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aSEPERATS3MSS2 + (bSEPERATS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = REFS3MSS3[i,j];
                    OUT3MSS4[i,j] = (aSEPERATS3MSS4 + (bSEPERATS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT3MSS1);
            CreatePyramid(OUT3MSS2);
            CreatePyramid(OUT3MSS3);
            CreatePyramid(OUT3MSS4);
        
            CreateHistogram(OUT3MSS1);
            CreateHistogram(OUT3MSS2);
            CreateHistogram(OUT3MSS3);
            CreateHistogram(OUT3MSS4);
            
            CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors4 == 7 )
            {
            numeric xAritSEPERATS4ETM1, xAritSEPERATS4ETM2, xAritSEPERATS4ETM3, xAritSEPERATS4ETM4, xAritSEPERATS4ETM5, xAritSEPERATS4ETM7;
            numeric yAritSEPERATS4ETM1, yAritSEPERATS4ETM2, yAritSEPERATS4ETM3, yAritSEPERATS4ETM4, yAritSEPERATS4ETM5, yAritSEPERATS4ETM7;
    
            numeric aSEPERATS4ETM1, aSEPERATS4ETM2, aSEPERATS4ETM3, aSEPERATS4ETM4, aSEPERATS4ETM5, aSEPERATS4ETM7;
            numeric bSEPERATS4ETM1, bSEPERATS4ETM2, bSEPERATS4ETM3, bSEPERATS4ETM4, bSEPERATS4ETM5, bSEPERATS4ETM7;
            numeric rSEPERATS4ETM1, rSEPERATS4ETM2, rSEPERATS4ETM3, rSEPERATS4ETM4, rSEPERATS4ETM5, rSEPERATS4ETM7;
            numeric rQuadSEPERATS4ETM1, rQuadSEPERATS4ETM2, rQuadSEPERATS4ETM3, rQuadSEPERATS4ETM4, rQuadSEPERATS4ETM5, rQuadSEPERATS4ETM7;
            numeric syxSEPERATS4ETM1, syxSEPERATS4ETM2, syxSEPERATS4ETM3, syxSEPERATS4ETM4, syxSEPERATS4ETM5, syxSEPERATS4ETM7;
            numeric bStandSEPERATS4ETM1, bStandSEPERATS4ETM2, bStandSEPERATS4ETM3, bStandSEPERATS4ETM4, bStandSEPERATS4ETM5, bStandSEPERATS4ETM7;
            numeric aStandSEPERATS4ETM1, aStandSEPERATS4ETM2, aStandSEPERATS4ETM3, aStandSEPERATS4ETM4, aStandSEPERATS4ETM5, aStandSEPERATS4ETM7;
    
            numeric xSEPERATS4ETM1 = 0;
            numeric xSEPERATS4ETM2 = 0;
            numeric xSEPERATS4ETM3 = 0;
            numeric xSEPERATS4ETM4 = 0;
            numeric xSEPERATS4ETM5 = 0;
            numeric xSEPERATS4ETM7 = 0;
    
            numeric xQuadSEPERATS4ETM1 = 0;
            numeric xQuadSEPERATS4ETM2 = 0;
            numeric xQuadSEPERATS4ETM3 = 0;
            numeric xQuadSEPERATS4ETM4 = 0;
            numeric xQuadSEPERATS4ETM5 = 0;
            numeric xQuadSEPERATS4ETM7 = 0;
    
            numeric ySEPERATS4ETM1 = 0;
            numeric ySEPERATS4ETM2 = 0;
            numeric ySEPERATS4ETM3 = 0;
            numeric ySEPERATS4ETM4 = 0;
            numeric ySEPERATS4ETM5 = 0;
            numeric ySEPERATS4ETM7 = 0;
    
            numeric yQuadSEPERATS4ETM1 = 0;
            numeric yQuadSEPERATS4ETM2 = 0;
            numeric yQuadSEPERATS4ETM3 = 0;
            numeric yQuadSEPERATS4ETM4 = 0;
            numeric yQuadSEPERATS4ETM5 = 0;
            numeric yQuadSEPERATS4ETM7 = 0;
    
            numeric xySEPERATS4ETM1 = 0;
            numeric xySEPERATS4ETM2 = 0;
            numeric xySEPERATS4ETM3 = 0;
            numeric xySEPERATS4ETM4 = 0;
            numeric xySEPERATS4ETM5 = 0;
            numeric xySEPERATS4ETM7 = 0;
    
            numeric xxAritQuadSEPERATS4ETM1 = 0;
            numeric xxAritQuadSEPERATS4ETM2 = 0;
            numeric xxAritQuadSEPERATS4ETM3 = 0;
            numeric xxAritQuadSEPERATS4ETM4 = 0;
            numeric xxAritQuadSEPERATS4ETM5 = 0;
            numeric xxAritQuadSEPERATS4ETM7 = 0;
    
            numeric yyAritQuadSEPERATS4ETM1 = 0;
            numeric yyAritQuadSEPERATS4ETM2 = 0;
            numeric yyAritQuadSEPERATS4ETM3 = 0;
            numeric yyAritQuadSEPERATS4ETM4 = 0;
            numeric yyAritQuadSEPERATS4ETM5 = 0;
            numeric yyAritQuadSEPERATS4ETM7 = 0;
    
            numeric qXYSEPERATS4ETM1 = 0;
            numeric qXYSEPERATS4ETM2 = 0;
            numeric qXYSEPERATS4ETM3 = 0;
            numeric qXYSEPERATS4ETM4 = 0;
            numeric qXYSEPERATS4ETM5 = 0;
            numeric qXYSEPERATS4ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS4ETM1 = xSEPERATS4ETM1 + pifSEPERATS2S4ETM1arrayRAND[m];
                xSEPERATS4ETM2 = xSEPERATS4ETM2 + pifSEPERATS2S4ETM2arrayRAND[m];
                xSEPERATS4ETM3 = xSEPERATS4ETM3 + pifSEPERATS2S4ETM3arrayRAND[m];
                xSEPERATS4ETM4 = xSEPERATS4ETM4 + pifSEPERATS2S4ETM4arrayRAND[m];
                xSEPERATS4ETM5 = xSEPERATS4ETM5 + pifSEPERATS2S4ETM5arrayRAND[m];
                xSEPERATS4ETM7 = xSEPERATS4ETM7 + pifSEPERATS2S4ETM7arrayRAND[m];
    
                xQuadSEPERATS4ETM1 = (xQuadSEPERATS4ETM1 + (pifSEPERATS2S4ETM1arrayRAND[m]^2));
                xQuadSEPERATS4ETM2 = (xQuadSEPERATS4ETM2 + (pifSEPERATS2S4ETM2arrayRAND[m]^2));
                xQuadSEPERATS4ETM3 = (xQuadSEPERATS4ETM3 + (pifSEPERATS2S4ETM3arrayRAND[m]^2));
                xQuadSEPERATS4ETM4 = (xQuadSEPERATS4ETM4 + (pifSEPERATS2S4ETM4arrayRAND[m]^2));
                xQuadSEPERATS4ETM5 = (xQuadSEPERATS4ETM5 + (pifSEPERATS2S4ETM5arrayRAND[m]^2));
                xQuadSEPERATS4ETM7 = (xQuadSEPERATS4ETM7 + (pifSEPERATS2S4ETM7arrayRAND[m]^2));
    
                ySEPERATS4ETM1 = ySEPERATS4ETM1 + pifSEPERATS4slaveETM1arrayRAND[m];
                ySEPERATS4ETM2 = ySEPERATS4ETM2 + pifSEPERATS4slaveETM2arrayRAND[m];
                ySEPERATS4ETM3 = ySEPERATS4ETM3 + pifSEPERATS4slaveETM3arrayRAND[m];
                ySEPERATS4ETM4 = ySEPERATS4ETM4 + pifSEPERATS4slaveETM4arrayRAND[m];
                ySEPERATS4ETM5 = ySEPERATS4ETM5 + pifSEPERATS4slaveETM5arrayRAND[m];
                ySEPERATS4ETM7 = ySEPERATS4ETM7 + pifSEPERATS4slaveETM7arrayRAND[m];
                
                yQuadSEPERATS4ETM1 = (yQuadSEPERATS4ETM1 + (pifSEPERATS4slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS4ETM2 = (yQuadSEPERATS4ETM2 + (pifSEPERATS4slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS4ETM3 = (yQuadSEPERATS4ETM3 + (pifSEPERATS4slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS4ETM4 = (yQuadSEPERATS4ETM4 + (pifSEPERATS4slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS4ETM5 = (yQuadSEPERATS4ETM5 + (pifSEPERATS4slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS4ETM7 = (yQuadSEPERATS4ETM7 + (pifSEPERATS4slaveETM7arrayRAND[m]^2));
    
                xySEPERATS4ETM1 = (xySEPERATS4ETM1 + (pifSEPERATS2S4ETM1arrayRAND[m] * pifSEPERATS4slaveETM1arrayRAND[m]));
                xySEPERATS4ETM2 = (xySEPERATS4ETM2 + (pifSEPERATS2S4ETM2arrayRAND[m] * pifSEPERATS4slaveETM2arrayRAND[m]));
                xySEPERATS4ETM3 = (xySEPERATS4ETM3 + (pifSEPERATS2S4ETM3arrayRAND[m] * pifSEPERATS4slaveETM3arrayRAND[m]));
                xySEPERATS4ETM4 = (xySEPERATS4ETM4 + (pifSEPERATS2S4ETM4arrayRAND[m] * pifSEPERATS4slaveETM4arrayRAND[m]));
                xySEPERATS4ETM5 = (xySEPERATS4ETM5 + (pifSEPERATS2S4ETM5arrayRAND[m] * pifSEPERATS4slaveETM5arrayRAND[m]));
                xySEPERATS4ETM7 = (xySEPERATS4ETM7 + (pifSEPERATS2S4ETM7arrayRAND[m] * pifSEPERATS4slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS4ETM1 = xSEPERATS4ETM1 / minPifVAL;
            xAritSEPERATS4ETM2 = xSEPERATS4ETM2 / minPifVAL;
            xAritSEPERATS4ETM3 = xSEPERATS4ETM3 / minPifVAL;
            xAritSEPERATS4ETM4 = xSEPERATS4ETM4 / minPifVAL;
            xAritSEPERATS4ETM5 = xSEPERATS4ETM5 / minPifVAL;
            xAritSEPERATS4ETM7 = xSEPERATS4ETM7 / minPifVAL;
    
            yAritSEPERATS4ETM1 = ySEPERATS4ETM1 / minPifVAL;
            yAritSEPERATS4ETM2 = ySEPERATS4ETM2 / minPifVAL;
            yAritSEPERATS4ETM3 = ySEPERATS4ETM3 / minPifVAL;
            yAritSEPERATS4ETM4 = ySEPERATS4ETM4 / minPifVAL;
            yAritSEPERATS4ETM5 = ySEPERATS4ETM5 / minPifVAL;
            yAritSEPERATS4ETM7 = ySEPERATS4ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4ETM1 = (xxAritQuadSEPERATS4ETM1 + ((pifSEPERATS2S4ETM1arrayRAND[n] - xAritSEPERATS4ETM1)^2));
                xxAritQuadSEPERATS4ETM2 = (xxAritQuadSEPERATS4ETM2 + ((pifSEPERATS2S4ETM2arrayRAND[n] - xAritSEPERATS4ETM2)^2));
                xxAritQuadSEPERATS4ETM3 = (xxAritQuadSEPERATS4ETM3 + ((pifSEPERATS2S4ETM3arrayRAND[n] - xAritSEPERATS4ETM3)^2));
                xxAritQuadSEPERATS4ETM4 = (xxAritQuadSEPERATS4ETM4 + ((pifSEPERATS2S4ETM4arrayRAND[n] - xAritSEPERATS4ETM4)^2));
                xxAritQuadSEPERATS4ETM5 = (xxAritQuadSEPERATS4ETM5 + ((pifSEPERATS2S4ETM5arrayRAND[n] - xAritSEPERATS4ETM5)^2));
                xxAritQuadSEPERATS4ETM7 = (xxAritQuadSEPERATS4ETM7 + ((pifSEPERATS2S4ETM7arrayRAND[n] - xAritSEPERATS4ETM7)^2));
    
                yyAritQuadSEPERATS4ETM1 = (yyAritQuadSEPERATS4ETM1 + ((pifSEPERATS4slaveETM1arrayRAND[n] - yAritSEPERATS4ETM1)^2));
                yyAritQuadSEPERATS4ETM2 = (yyAritQuadSEPERATS4ETM2 + ((pifSEPERATS4slaveETM2arrayRAND[n] - yAritSEPERATS4ETM2)^2));
                yyAritQuadSEPERATS4ETM3 = (yyAritQuadSEPERATS4ETM3 + ((pifSEPERATS4slaveETM3arrayRAND[n] - yAritSEPERATS4ETM3)^2));
                yyAritQuadSEPERATS4ETM4 = (yyAritQuadSEPERATS4ETM4 + ((pifSEPERATS4slaveETM4arrayRAND[n] - yAritSEPERATS4ETM4)^2));
                yyAritQuadSEPERATS4ETM5 = (yyAritQuadSEPERATS4ETM5 + ((pifSEPERATS4slaveETM5arrayRAND[n] - yAritSEPERATS4ETM5)^2));
                yyAritQuadSEPERATS4ETM7 = (yyAritQuadSEPERATS4ETM7 + ((pifSEPERATS4slaveETM7arrayRAND[n] - yAritSEPERATS4ETM7)^2));
    
                qXYSEPERATS4ETM1 = (qXYSEPERATS4ETM1 + ((pifSEPERATS2S4ETM1arrayRAND[n] - xAritSEPERATS4ETM1) * (pifSEPERATS4slaveETM1arrayRAND[n] - yAritSEPERATS4ETM1)));
                qXYSEPERATS4ETM2 = (qXYSEPERATS4ETM2 + ((pifSEPERATS2S4ETM2arrayRAND[n] - xAritSEPERATS4ETM2) * (pifSEPERATS4slaveETM2arrayRAND[n] - yAritSEPERATS4ETM2)));
                qXYSEPERATS4ETM3 = (qXYSEPERATS4ETM3 + ((pifSEPERATS2S4ETM3arrayRAND[n] - xAritSEPERATS4ETM3) * (pifSEPERATS4slaveETM3arrayRAND[n] - yAritSEPERATS4ETM3)));
                qXYSEPERATS4ETM4 = (qXYSEPERATS4ETM4 + ((pifSEPERATS2S4ETM4arrayRAND[n] - xAritSEPERATS4ETM4) * (pifSEPERATS4slaveETM4arrayRAND[n] - yAritSEPERATS4ETM4)));
                qXYSEPERATS4ETM5 = (qXYSEPERATS4ETM5 + ((pifSEPERATS2S4ETM5arrayRAND[n] - xAritSEPERATS4ETM5) * (pifSEPERATS4slaveETM5arrayRAND[n] - yAritSEPERATS4ETM5)));
                qXYSEPERATS4ETM7 = (qXYSEPERATS4ETM7 + ((pifSEPERATS2S4ETM7arrayRAND[n] - xAritSEPERATS4ETM7) * (pifSEPERATS4slaveETM7arrayRAND[n] - yAritSEPERATS4ETM7)));
            }
        
            aSEPERATS4ETM1 = (((xQuadSEPERATS4ETM1 * ySEPERATS4ETM1) - (xSEPERATS4ETM1 * xySEPERATS4ETM1)) / ((minPifVAL * xQuadSEPERATS4ETM1) - (xSEPERATS4ETM1^2)));
            aSEPERATS4ETM2 = (((xQuadSEPERATS4ETM2 * ySEPERATS4ETM2) - (xSEPERATS4ETM2 * xySEPERATS4ETM2)) / ((minPifVAL * xQuadSEPERATS4ETM2) - (xSEPERATS4ETM2^2)));
            aSEPERATS4ETM3 = (((xQuadSEPERATS4ETM3 * ySEPERATS4ETM3) - (xSEPERATS4ETM3 * xySEPERATS4ETM3)) / ((minPifVAL * xQuadSEPERATS4ETM3) - (xSEPERATS4ETM3^2)));
            aSEPERATS4ETM4 = (((xQuadSEPERATS4ETM4 * ySEPERATS4ETM4) - (xSEPERATS4ETM4 * xySEPERATS4ETM4)) / ((minPifVAL * xQuadSEPERATS4ETM4) - (xSEPERATS4ETM4^2)));
            aSEPERATS4ETM5 = (((xQuadSEPERATS4ETM5 * ySEPERATS4ETM5) - (xSEPERATS4ETM5 * xySEPERATS4ETM5)) / ((minPifVAL * xQuadSEPERATS4ETM5) - (xSEPERATS4ETM5^2)));
            aSEPERATS4ETM7 = (((xQuadSEPERATS4ETM7 * ySEPERATS4ETM7) - (xSEPERATS4ETM7 * xySEPERATS4ETM7)) / ((minPifVAL * xQuadSEPERATS4ETM7) - (xSEPERATS4ETM7^2)));
            
            bSEPERATS4ETM1 = qXYSEPERATS4ETM1 / xxAritQuadSEPERATS4ETM1;
            bSEPERATS4ETM2 = qXYSEPERATS4ETM2 / xxAritQuadSEPERATS4ETM2;
            bSEPERATS4ETM3 = qXYSEPERATS4ETM3 / xxAritQuadSEPERATS4ETM3;
            bSEPERATS4ETM4 = qXYSEPERATS4ETM4 / xxAritQuadSEPERATS4ETM4;
            bSEPERATS4ETM5 = qXYSEPERATS4ETM5 / xxAritQuadSEPERATS4ETM5;
            bSEPERATS4ETM7 = qXYSEPERATS4ETM7 / xxAritQuadSEPERATS4ETM7;
    
            rSEPERATS4ETM1 = (qXYSEPERATS4ETM1 / ((xxAritQuadSEPERATS4ETM1 * yyAritQuadSEPERATS4ETM1)^0.5));
            rSEPERATS4ETM2 = (qXYSEPERATS4ETM2 / ((xxAritQuadSEPERATS4ETM2 * yyAritQuadSEPERATS4ETM2)^0.5));
            rSEPERATS4ETM3 = (qXYSEPERATS4ETM3 / ((xxAritQuadSEPERATS4ETM3 * yyAritQuadSEPERATS4ETM3)^0.5));
            rSEPERATS4ETM4 = (qXYSEPERATS4ETM4 / ((xxAritQuadSEPERATS4ETM4 * yyAritQuadSEPERATS4ETM4)^0.5));
            rSEPERATS4ETM5 = (qXYSEPERATS4ETM5 / ((xxAritQuadSEPERATS4ETM5 * yyAritQuadSEPERATS4ETM5)^0.5));
            rSEPERATS4ETM7 = (qXYSEPERATS4ETM7 / ((xxAritQuadSEPERATS4ETM7 * yyAritQuadSEPERATS4ETM7)^0.5));
    
            rQuadSEPERATS4ETM1 = ((rSEPERATS4ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4ETM2 = ((rSEPERATS4ETM2^2) * 100);
            rQuadSEPERATS4ETM3 = ((rSEPERATS4ETM3^2) * 100);
            rQuadSEPERATS4ETM4 = ((rSEPERATS4ETM4^2) * 100);
            rQuadSEPERATS4ETM5 = ((rSEPERATS4ETM5^2) * 100);
            rQuadSEPERATS4ETM7 = ((rSEPERATS4ETM7^2) * 100);
        
            syxSEPERATS4ETM1 = (((yyAritQuadSEPERATS4ETM1 - ((qXYSEPERATS4ETM1^2) / xxAritQuadSEPERATS4ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM2 = (((yyAritQuadSEPERATS4ETM2 - ((qXYSEPERATS4ETM2^2) / xxAritQuadSEPERATS4ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM3 = (((yyAritQuadSEPERATS4ETM3 - ((qXYSEPERATS4ETM3^2) / xxAritQuadSEPERATS4ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM4 = (((yyAritQuadSEPERATS4ETM4 - ((qXYSEPERATS4ETM4^2) / xxAritQuadSEPERATS4ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM5 = (((yyAritQuadSEPERATS4ETM5 - ((qXYSEPERATS4ETM5^2) / xxAritQuadSEPERATS4ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM7 = (((yyAritQuadSEPERATS4ETM7 - ((qXYSEPERATS4ETM7^2) / xxAritQuadSEPERATS4ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4ETM1 = (((syxSEPERATS4ETM1^2) / xxAritQuadSEPERATS4ETM1)^0.5);
            bStandSEPERATS4ETM2 = (((syxSEPERATS4ETM2^2) / xxAritQuadSEPERATS4ETM2)^0.5);
            bStandSEPERATS4ETM3 = (((syxSEPERATS4ETM3^2) / xxAritQuadSEPERATS4ETM3)^0.5);
            bStandSEPERATS4ETM4 = (((syxSEPERATS4ETM4^2) / xxAritQuadSEPERATS4ETM4)^0.5);
            bStandSEPERATS4ETM5 = (((syxSEPERATS4ETM5^2) / xxAritQuadSEPERATS4ETM5)^0.5);
            bStandSEPERATS4ETM7 = (((syxSEPERATS4ETM7^2) / xxAritQuadSEPERATS4ETM7)^0.5);
    
            aStandSEPERATS4ETM1 = (bStandSEPERATS4ETM1 * ((xQuadSEPERATS4ETM1 / minPifVAL)^0.5));
            aStandSEPERATS4ETM2 = (bStandSEPERATS4ETM2 * ((xQuadSEPERATS4ETM2 / minPifVAL)^0.5));
            aStandSEPERATS4ETM3 = (bStandSEPERATS4ETM3 * ((xQuadSEPERATS4ETM3 / minPifVAL)^0.5));
            aStandSEPERATS4ETM4 = (bStandSEPERATS4ETM4 * ((xQuadSEPERATS4ETM4 / minPifVAL)^0.5));
            aStandSEPERATS4ETM5 = (bStandSEPERATS4ETM5 * ((xQuadSEPERATS4ETM5 / minPifVAL)^0.5));
            aStandSEPERATS4ETM7 = (bStandSEPERATS4ETM7 * ((xQuadSEPERATS4ETM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM1, bSEPERATS4ETM1, rSEPERATS4ETM1, rQuadSEPERATS4ETM1, aStandSEPERATS4ETM1, bStandSEPERATS4ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM2, bSEPERATS4ETM2, rSEPERATS4ETM2, rQuadSEPERATS4ETM2, aStandSEPERATS4ETM2, bStandSEPERATS4ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM3, bSEPERATS4ETM3, rSEPERATS4ETM3, rQuadSEPERATS4ETM3, aStandSEPERATS4ETM3, bStandSEPERATS4ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM4, bSEPERATS4ETM4, rSEPERATS4ETM4, rQuadSEPERATS4ETM4, aStandSEPERATS4ETM4, bStandSEPERATS4ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM5, bSEPERATS4ETM5, rSEPERATS4ETM5, rQuadSEPERATS4ETM5, aStandSEPERATS4ETM5, bStandSEPERATS4ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS4ETM7, bSEPERATS4ETM7, rSEPERATS4ETM7, rQuadSEPERATS4ETM7, aStandSEPERATS4ETM7, bStandSEPERATS4ETM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS4slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS4slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS4slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS4slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS4slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS4slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS4slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT4ETM1[i,j] = (aSEPERATS4ETM1 + (bSEPERATS4ETM1 * REFS4ETM1[i,j]));
                    OUT4ETM2[i,j] = (aSEPERATS4ETM2 + (bSEPERATS4ETM2 * REFS4ETM2[i,j]));
                    OUT4ETM3[i,j] = (aSEPERATS4ETM3 + (bSEPERATS4ETM3 * REFS4ETM3[i,j]));
                    OUT4ETM4[i,j] = (aSEPERATS4ETM4 + (bSEPERATS4ETM4 * REFS4ETM4[i,j]));
                    OUT4ETM5[i,j] = (aSEPERATS4ETM5 + (bSEPERATS4ETM5 * REFS4ETM5[i,j]));
                    OUT4ETM7[i,j] = (aSEPERATS4ETM7 + (bSEPERATS4ETM7 * REFS4ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4ETM1);
        	CreatePyramid(OUT4ETM2);
        	CreatePyramid(OUT4ETM3);
        	CreatePyramid(OUT4ETM4);
        	CreatePyramid(OUT4ETM5);
        	CreatePyramid(OUT4ETM7);
        
        	CreateHistogram(OUT4ETM1);
        	CreateHistogram(OUT4ETM2);
        	CreateHistogram(OUT4ETM3);
        	CreateHistogram(OUT4ETM4);
        	CreateHistogram(OUT4ETM5);
        	CreateHistogram(OUT4ETM7);
            CloseRaster(REFS4ETM1);
            CloseRaster(REFS4ETM2);
            CloseRaster(REFS4ETM3);
            CloseRaster(REFS4ETM4);
            CloseRaster(REFS4ETM5);
            CloseRaster(REFS4ETM7);
    
            CloseRaster(OUT4ETM1);
            CloseRaster(OUT4ETM2);
            CloseRaster(OUT4ETM3);
            CloseRaster(OUT4ETM4);
            CloseRaster(OUT4ETM5);
            CloseRaster(OUT4ETM7);
            
        	printf("Scene 4 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors4 == 6 )
            {
            numeric xAritSEPERATS4TM1, xAritSEPERATS4TM2, xAritSEPERATS4TM3, xAritSEPERATS4TM4, xAritSEPERATS4TM5, xAritSEPERATS4TM7;
            numeric yAritSEPERATS4TM1, yAritSEPERATS4TM2, yAritSEPERATS4TM3, yAritSEPERATS4TM4, yAritSEPERATS4TM5, yAritSEPERATS4TM7;
    
            numeric aSEPERATS4TM1, aSEPERATS4TM2, aSEPERATS4TM3, aSEPERATS4TM4, aSEPERATS4TM5, aSEPERATS4TM7;
            numeric bSEPERATS4TM1, bSEPERATS4TM2, bSEPERATS4TM3, bSEPERATS4TM4, bSEPERATS4TM5, bSEPERATS4TM7;
            numeric rSEPERATS4TM1, rSEPERATS4TM2, rSEPERATS4TM3, rSEPERATS4TM4, rSEPERATS4TM5, rSEPERATS4TM7;
            numeric rQuadSEPERATS4TM1, rQuadSEPERATS4TM2, rQuadSEPERATS4TM3, rQuadSEPERATS4TM4, rQuadSEPERATS4TM5, rQuadSEPERATS4TM7;
            numeric syxSEPERATS4TM1, syxSEPERATS4TM2, syxSEPERATS4TM3, syxSEPERATS4TM4, syxSEPERATS4TM5, syxSEPERATS4TM7;
            numeric bStandSEPERATS4TM1, bStandSEPERATS4TM2, bStandSEPERATS4TM3, bStandSEPERATS4TM4, bStandSEPERATS4TM5, bStandSEPERATS4TM7;
            numeric aStandSEPERATS4TM1, aStandSEPERATS4TM2, aStandSEPERATS4TM3, aStandSEPERATS4TM4, aStandSEPERATS4TM5, aStandSEPERATS4TM7;
    
            numeric xSEPERATS4TM1 = 0;
            numeric xSEPERATS4TM2 = 0;
            numeric xSEPERATS4TM3 = 0;
            numeric xSEPERATS4TM4 = 0;
            numeric xSEPERATS4TM5 = 0;
            numeric xSEPERATS4TM7 = 0;
    
            numeric xQuadSEPERATS4TM1 = 0;
            numeric xQuadSEPERATS4TM2 = 0;
            numeric xQuadSEPERATS4TM3 = 0;
            numeric xQuadSEPERATS4TM4 = 0;
            numeric xQuadSEPERATS4TM5 = 0;
            numeric xQuadSEPERATS4TM7 = 0;
    
            numeric ySEPERATS4TM1 = 0;
            numeric ySEPERATS4TM2 = 0;
            numeric ySEPERATS4TM3 = 0;
            numeric ySEPERATS4TM4 = 0;
            numeric ySEPERATS4TM5 = 0;
            numeric ySEPERATS4TM7 = 0;
    
            numeric yQuadSEPERATS4TM1 = 0;
            numeric yQuadSEPERATS4TM2 = 0;
            numeric yQuadSEPERATS4TM3 = 0;
            numeric yQuadSEPERATS4TM4 = 0;
            numeric yQuadSEPERATS4TM5 = 0;
            numeric yQuadSEPERATS4TM7 = 0;
    
            numeric xySEPERATS4TM1 = 0;
            numeric xySEPERATS4TM2 = 0;
            numeric xySEPERATS4TM3 = 0;
            numeric xySEPERATS4TM4 = 0;
            numeric xySEPERATS4TM5 = 0;
            numeric xySEPERATS4TM7 = 0;
    
            numeric xxAritQuadSEPERATS4TM1 = 0;
            numeric xxAritQuadSEPERATS4TM2 = 0;
            numeric xxAritQuadSEPERATS4TM3 = 0;
            numeric xxAritQuadSEPERATS4TM4 = 0;
            numeric xxAritQuadSEPERATS4TM5 = 0;
            numeric xxAritQuadSEPERATS4TM7 = 0;
    
            numeric yyAritQuadSEPERATS4TM1 = 0;
            numeric yyAritQuadSEPERATS4TM2 = 0;
            numeric yyAritQuadSEPERATS4TM3 = 0;
            numeric yyAritQuadSEPERATS4TM4 = 0;
            numeric yyAritQuadSEPERATS4TM5 = 0;
            numeric yyAritQuadSEPERATS4TM7 = 0;
    
            numeric qXYSEPERATS4TM1 = 0;
            numeric qXYSEPERATS4TM2 = 0;
            numeric qXYSEPERATS4TM3 = 0;
            numeric qXYSEPERATS4TM4 = 0;
            numeric qXYSEPERATS4TM5 = 0;
            numeric qXYSEPERATS4TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS4TM1 = xSEPERATS4TM1 + pifSEPERATS2S4ETM1arrayRAND[m];
                xSEPERATS4TM2 = xSEPERATS4TM2 + pifSEPERATS2S4ETM2arrayRAND[m];
                xSEPERATS4TM3 = xSEPERATS4TM3 + pifSEPERATS2S4ETM3arrayRAND[m];
                xSEPERATS4TM4 = xSEPERATS4TM4 + pifSEPERATS2S4ETM4arrayRAND[m];
                xSEPERATS4TM5 = xSEPERATS4TM5 + pifSEPERATS2S4ETM5arrayRAND[m];
                xSEPERATS4TM7 = xSEPERATS4TM7 + pifSEPERATS2S4ETM7arrayRAND[m];
    
                xQuadSEPERATS4TM1 = (xQuadSEPERATS4TM1 + (pifSEPERATS2S4ETM1arrayRAND[m]^2));
                xQuadSEPERATS4TM2 = (xQuadSEPERATS4TM2 + (pifSEPERATS2S4ETM2arrayRAND[m]^2));
                xQuadSEPERATS4TM3 = (xQuadSEPERATS4TM3 + (pifSEPERATS2S4ETM3arrayRAND[m]^2));
                xQuadSEPERATS4TM4 = (xQuadSEPERATS4TM4 + (pifSEPERATS2S4ETM4arrayRAND[m]^2));
                xQuadSEPERATS4TM5 = (xQuadSEPERATS4TM5 + (pifSEPERATS2S4ETM5arrayRAND[m]^2));
                xQuadSEPERATS4TM7 = (xQuadSEPERATS4TM7 + (pifSEPERATS2S4ETM7arrayRAND[m]^2));
    
                ySEPERATS4TM1 = ySEPERATS4TM1 + pifSEPERATS4slaveTM1arrayRAND[m];
                ySEPERATS4TM2 = ySEPERATS4TM2 + pifSEPERATS4slaveTM2arrayRAND[m];
                ySEPERATS4TM3 = ySEPERATS4TM3 + pifSEPERATS4slaveTM3arrayRAND[m];
                ySEPERATS4TM4 = ySEPERATS4TM4 + pifSEPERATS4slaveTM4arrayRAND[m];
                ySEPERATS4TM5 = ySEPERATS4TM5 + pifSEPERATS4slaveTM5arrayRAND[m];
                ySEPERATS4TM7 = ySEPERATS4TM7 + pifSEPERATS4slaveTM7arrayRAND[m];
                
                yQuadSEPERATS4TM1 = (yQuadSEPERATS4TM1 + (pifSEPERATS4slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS4TM2 = (yQuadSEPERATS4TM2 + (pifSEPERATS4slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS4TM3 = (yQuadSEPERATS4TM3 + (pifSEPERATS4slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS4TM4 = (yQuadSEPERATS4TM4 + (pifSEPERATS4slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS4TM5 = (yQuadSEPERATS4TM5 + (pifSEPERATS4slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS4TM7 = (yQuadSEPERATS4TM7 + (pifSEPERATS4slaveTM7arrayRAND[m]^2));
    
                xySEPERATS4TM1 = (xySEPERATS4TM1 + (pifSEPERATS2S4ETM1arrayRAND[m] * pifSEPERATS4slaveTM1arrayRAND[m]));
                xySEPERATS4TM2 = (xySEPERATS4TM2 + (pifSEPERATS2S4ETM2arrayRAND[m] * pifSEPERATS4slaveTM2arrayRAND[m]));
                xySEPERATS4TM3 = (xySEPERATS4TM3 + (pifSEPERATS2S4ETM3arrayRAND[m] * pifSEPERATS4slaveTM3arrayRAND[m]));
                xySEPERATS4TM4 = (xySEPERATS4TM4 + (pifSEPERATS2S4ETM4arrayRAND[m] * pifSEPERATS4slaveTM4arrayRAND[m]));
                xySEPERATS4TM5 = (xySEPERATS4TM5 + (pifSEPERATS2S4ETM5arrayRAND[m] * pifSEPERATS4slaveTM5arrayRAND[m]));
                xySEPERATS4TM7 = (xySEPERATS4TM7 + (pifSEPERATS2S4ETM7arrayRAND[m] * pifSEPERATS4slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS4TM1 = xSEPERATS4TM1 / minPifVAL;
            xAritSEPERATS4TM2 = xSEPERATS4TM2 / minPifVAL;
            xAritSEPERATS4TM3 = xSEPERATS4TM3 / minPifVAL;
            xAritSEPERATS4TM4 = xSEPERATS4TM4 / minPifVAL;
            xAritSEPERATS4TM5 = xSEPERATS4TM5 / minPifVAL;
            xAritSEPERATS4TM7 = xSEPERATS4TM7 / minPifVAL;
    
            yAritSEPERATS4TM1 = ySEPERATS4TM1 / minPifVAL;
            yAritSEPERATS4TM2 = ySEPERATS4TM2 / minPifVAL;
            yAritSEPERATS4TM3 = ySEPERATS4TM3 / minPifVAL;
            yAritSEPERATS4TM4 = ySEPERATS4TM4 / minPifVAL;
            yAritSEPERATS4TM5 = ySEPERATS4TM5 / minPifVAL;
            yAritSEPERATS4TM7 = ySEPERATS4TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4TM1 = (xxAritQuadSEPERATS4TM1 + ((pifSEPERATS2S4ETM1arrayRAND[n] - xAritSEPERATS4TM1)^2));
                xxAritQuadSEPERATS4TM2 = (xxAritQuadSEPERATS4TM2 + ((pifSEPERATS2S4ETM2arrayRAND[n] - xAritSEPERATS4TM2)^2));
                xxAritQuadSEPERATS4TM3 = (xxAritQuadSEPERATS4TM3 + ((pifSEPERATS2S4ETM3arrayRAND[n] - xAritSEPERATS4TM3)^2));
                xxAritQuadSEPERATS4TM4 = (xxAritQuadSEPERATS4TM4 + ((pifSEPERATS2S4ETM4arrayRAND[n] - xAritSEPERATS4TM4)^2));
                xxAritQuadSEPERATS4TM5 = (xxAritQuadSEPERATS4TM5 + ((pifSEPERATS2S4ETM5arrayRAND[n] - xAritSEPERATS4TM5)^2));
                xxAritQuadSEPERATS4TM7 = (xxAritQuadSEPERATS4TM7 + ((pifSEPERATS2S4ETM7arrayRAND[n] - xAritSEPERATS4TM7)^2));
    
                yyAritQuadSEPERATS4TM1 = (yyAritQuadSEPERATS4TM1 + ((pifSEPERATS4slaveTM1arrayRAND[n] - yAritSEPERATS4TM1)^2));
                yyAritQuadSEPERATS4TM2 = (yyAritQuadSEPERATS4TM2 + ((pifSEPERATS4slaveTM2arrayRAND[n] - yAritSEPERATS4TM2)^2));
                yyAritQuadSEPERATS4TM3 = (yyAritQuadSEPERATS4TM3 + ((pifSEPERATS4slaveTM3arrayRAND[n] - yAritSEPERATS4TM3)^2));
                yyAritQuadSEPERATS4TM4 = (yyAritQuadSEPERATS4TM4 + ((pifSEPERATS4slaveTM4arrayRAND[n] - yAritSEPERATS4TM4)^2));
                yyAritQuadSEPERATS4TM5 = (yyAritQuadSEPERATS4TM5 + ((pifSEPERATS4slaveTM5arrayRAND[n] - yAritSEPERATS4TM5)^2));
                yyAritQuadSEPERATS4TM7 = (yyAritQuadSEPERATS4TM7 + ((pifSEPERATS4slaveTM7arrayRAND[n] - yAritSEPERATS4TM7)^2));
    
                qXYSEPERATS4TM1 = (qXYSEPERATS4TM1 + ((pifSEPERATS2S4ETM1arrayRAND[n] - xAritSEPERATS4TM1) * (pifSEPERATS4slaveTM1arrayRAND[n] - yAritSEPERATS4TM1)));
                qXYSEPERATS4TM2 = (qXYSEPERATS4TM2 + ((pifSEPERATS2S4ETM2arrayRAND[n] - xAritSEPERATS4TM2) * (pifSEPERATS4slaveTM2arrayRAND[n] - yAritSEPERATS4TM2)));
                qXYSEPERATS4TM3 = (qXYSEPERATS4TM3 + ((pifSEPERATS2S4ETM3arrayRAND[n] - xAritSEPERATS4TM3) * (pifSEPERATS4slaveTM3arrayRAND[n] - yAritSEPERATS4TM3)));
                qXYSEPERATS4TM4 = (qXYSEPERATS4TM4 + ((pifSEPERATS2S4ETM4arrayRAND[n] - xAritSEPERATS4TM4) * (pifSEPERATS4slaveTM4arrayRAND[n] - yAritSEPERATS4TM4)));
                qXYSEPERATS4TM5 = (qXYSEPERATS4TM5 + ((pifSEPERATS2S4ETM5arrayRAND[n] - xAritSEPERATS4TM5) * (pifSEPERATS4slaveTM5arrayRAND[n] - yAritSEPERATS4TM5)));
                qXYSEPERATS4TM7 = (qXYSEPERATS4TM7 + ((pifSEPERATS2S4ETM7arrayRAND[n] - xAritSEPERATS4TM7) * (pifSEPERATS4slaveTM7arrayRAND[n] - yAritSEPERATS4TM7)));
            }
        
            aSEPERATS4TM1 = (((xQuadSEPERATS4TM1 * ySEPERATS4TM1) - (xSEPERATS4TM1 * xySEPERATS4TM1)) / ((minPifVAL * xQuadSEPERATS4TM1) - (xSEPERATS4TM1^2)));
            aSEPERATS4TM2 = (((xQuadSEPERATS4TM2 * ySEPERATS4TM2) - (xSEPERATS4TM2 * xySEPERATS4TM2)) / ((minPifVAL * xQuadSEPERATS4TM2) - (xSEPERATS4TM2^2)));
            aSEPERATS4TM3 = (((xQuadSEPERATS4TM3 * ySEPERATS4TM3) - (xSEPERATS4TM3 * xySEPERATS4TM3)) / ((minPifVAL * xQuadSEPERATS4TM3) - (xSEPERATS4TM3^2)));
            aSEPERATS4TM4 = (((xQuadSEPERATS4TM4 * ySEPERATS4TM4) - (xSEPERATS4TM4 * xySEPERATS4TM4)) / ((minPifVAL * xQuadSEPERATS4TM4) - (xSEPERATS4TM4^2)));
            aSEPERATS4TM5 = (((xQuadSEPERATS4TM5 * ySEPERATS4TM5) - (xSEPERATS4TM5 * xySEPERATS4TM5)) / ((minPifVAL * xQuadSEPERATS4TM5) - (xSEPERATS4TM5^2)));
            aSEPERATS4TM7 = (((xQuadSEPERATS4TM7 * ySEPERATS4TM7) - (xSEPERATS4TM7 * xySEPERATS4TM7)) / ((minPifVAL * xQuadSEPERATS4TM7) - (xSEPERATS4TM7^2)));
            
            bSEPERATS4TM1 = qXYSEPERATS4TM1 / xxAritQuadSEPERATS4TM1;
            bSEPERATS4TM2 = qXYSEPERATS4TM2 / xxAritQuadSEPERATS4TM2;
            bSEPERATS4TM3 = qXYSEPERATS4TM3 / xxAritQuadSEPERATS4TM3;
            bSEPERATS4TM4 = qXYSEPERATS4TM4 / xxAritQuadSEPERATS4TM4;
            bSEPERATS4TM5 = qXYSEPERATS4TM5 / xxAritQuadSEPERATS4TM5;
            bSEPERATS4TM7 = qXYSEPERATS4TM7 / xxAritQuadSEPERATS4TM7;
    
            rSEPERATS4TM1 = (qXYSEPERATS4TM1 / ((xxAritQuadSEPERATS4TM1 * yyAritQuadSEPERATS4TM1)^0.5));
            rSEPERATS4TM2 = (qXYSEPERATS4TM2 / ((xxAritQuadSEPERATS4TM2 * yyAritQuadSEPERATS4TM2)^0.5));
            rSEPERATS4TM3 = (qXYSEPERATS4TM3 / ((xxAritQuadSEPERATS4TM3 * yyAritQuadSEPERATS4TM3)^0.5));
            rSEPERATS4TM4 = (qXYSEPERATS4TM4 / ((xxAritQuadSEPERATS4TM4 * yyAritQuadSEPERATS4TM4)^0.5));
            rSEPERATS4TM5 = (qXYSEPERATS4TM5 / ((xxAritQuadSEPERATS4TM5 * yyAritQuadSEPERATS4TM5)^0.5));
            rSEPERATS4TM7 = (qXYSEPERATS4TM7 / ((xxAritQuadSEPERATS4TM7 * yyAritQuadSEPERATS4TM7)^0.5));
    
            rQuadSEPERATS4TM1 = ((rSEPERATS4TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4TM2 = ((rSEPERATS4TM2^2) * 100);
            rQuadSEPERATS4TM3 = ((rSEPERATS4TM3^2) * 100);
            rQuadSEPERATS4TM4 = ((rSEPERATS4TM4^2) * 100);
            rQuadSEPERATS4TM5 = ((rSEPERATS4TM5^2) * 100);
            rQuadSEPERATS4TM7 = ((rSEPERATS4TM7^2) * 100);
        
            syxSEPERATS4TM1 = (((yyAritQuadSEPERATS4TM1 - ((qXYSEPERATS4TM1^2) / xxAritQuadSEPERATS4TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM2 = (((yyAritQuadSEPERATS4TM2 - ((qXYSEPERATS4TM2^2) / xxAritQuadSEPERATS4TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM3 = (((yyAritQuadSEPERATS4TM3 - ((qXYSEPERATS4TM3^2) / xxAritQuadSEPERATS4TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM4 = (((yyAritQuadSEPERATS4TM4 - ((qXYSEPERATS4TM4^2) / xxAritQuadSEPERATS4TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM5 = (((yyAritQuadSEPERATS4TM5 - ((qXYSEPERATS4TM5^2) / xxAritQuadSEPERATS4TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM7 = (((yyAritQuadSEPERATS4TM7 - ((qXYSEPERATS4TM7^2) / xxAritQuadSEPERATS4TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4TM1 = (((syxSEPERATS4TM1^2) / xxAritQuadSEPERATS4TM1)^0.5);
            bStandSEPERATS4TM2 = (((syxSEPERATS4TM2^2) / xxAritQuadSEPERATS4TM2)^0.5);
            bStandSEPERATS4TM3 = (((syxSEPERATS4TM3^2) / xxAritQuadSEPERATS4TM3)^0.5);
            bStandSEPERATS4TM4 = (((syxSEPERATS4TM4^2) / xxAritQuadSEPERATS4TM4)^0.5);
            bStandSEPERATS4TM5 = (((syxSEPERATS4TM5^2) / xxAritQuadSEPERATS4TM5)^0.5);
            bStandSEPERATS4TM7 = (((syxSEPERATS4TM7^2) / xxAritQuadSEPERATS4TM7)^0.5);
    
            aStandSEPERATS4TM1 = (bStandSEPERATS4TM1 * ((xQuadSEPERATS4TM1 / minPifVAL)^0.5));
            aStandSEPERATS4TM2 = (bStandSEPERATS4TM2 * ((xQuadSEPERATS4TM2 / minPifVAL)^0.5));
            aStandSEPERATS4TM3 = (bStandSEPERATS4TM3 * ((xQuadSEPERATS4TM3 / minPifVAL)^0.5));
            aStandSEPERATS4TM4 = (bStandSEPERATS4TM4 * ((xQuadSEPERATS4TM4 / minPifVAL)^0.5));
            aStandSEPERATS4TM5 = (bStandSEPERATS4TM5 * ((xQuadSEPERATS4TM5 / minPifVAL)^0.5));
            aStandSEPERATS4TM7 = (bStandSEPERATS4TM7 * ((xQuadSEPERATS4TM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM1, bSEPERATS4TM1, rSEPERATS4TM1, rQuadSEPERATS4TM1, aStandSEPERATS4TM1, bStandSEPERATS4TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM2, bSEPERATS4TM2, rSEPERATS4TM2, rQuadSEPERATS4TM2, aStandSEPERATS4TM2, bStandSEPERATS4TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM3, bSEPERATS4TM3, rSEPERATS4TM3, rQuadSEPERATS4TM3, aStandSEPERATS4TM3, bStandSEPERATS4TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM4, bSEPERATS4TM4, rSEPERATS4TM4, rQuadSEPERATS4TM4, aStandSEPERATS4TM4, bStandSEPERATS4TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM5, bSEPERATS4TM5, rSEPERATS4TM5, rQuadSEPERATS4TM5, aStandSEPERATS4TM5, bStandSEPERATS4TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS4TM7, bSEPERATS4TM7, rSEPERATS4TM7, rQuadSEPERATS4TM7, aStandSEPERATS4TM7, bStandSEPERATS4TM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS4slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS4slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS4slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS4slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS4slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS4slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS4slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT4TM1[i,j] = (aSEPERATS4TM1 + (bSEPERATS4TM1 * REFS4TM1[i,j]));
                    OUT4TM2[i,j] = (aSEPERATS4TM2 + (bSEPERATS4TM2 * REFS4TM2[i,j]));
                    OUT4TM3[i,j] = (aSEPERATS4TM3 + (bSEPERATS4TM3 * REFS4TM3[i,j]));
                    OUT4TM4[i,j] = (aSEPERATS4TM4 + (bSEPERATS4TM4 * REFS4TM4[i,j]));
                    OUT4TM5[i,j] = (aSEPERATS4TM5 + (bSEPERATS4TM5 * REFS4TM5[i,j]));
                    OUT4TM7[i,j] = (aSEPERATS4TM7 + (bSEPERATS4TM7 * REFS4TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4TM1);
        	CreatePyramid(OUT4TM2);
        	CreatePyramid(OUT4TM3);
        	CreatePyramid(OUT4TM4);
        	CreatePyramid(OUT4TM5);
        	CreatePyramid(OUT4TM7);
        
        	CreateHistogram(OUT4TM1);
        	CreateHistogram(OUT4TM2);
        	CreateHistogram(OUT4TM3);
        	CreateHistogram(OUT4TM4);
        	CreateHistogram(OUT4TM5);
        	CreateHistogram(OUT4TM7);
            CloseRaster(REFS4TM1);
            CloseRaster(REFS4TM2);
            CloseRaster(REFS4TM3);
            CloseRaster(REFS4TM4);
            CloseRaster(REFS4TM5);
            CloseRaster(REFS4TM7);
    
            CloseRaster(OUT4TM1);
            CloseRaster(OUT4TM2);
            CloseRaster(OUT4TM3);
            CloseRaster(OUT4TM4);
            CloseRaster(OUT4TM5);
            CloseRaster(OUT4TM7);
        
        	printf("Scene 4 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS4MSS1, xAritSEPERATS4MSS2, xAritSEPERATS4MSS4;
            numeric yAritSEPERATS4MSS1, yAritSEPERATS4MSS2, yAritSEPERATS4MSS4;
    
            numeric aSEPERATS4MSS1, aSEPERATS4MSS2, aSEPERATS4MSS4;
            numeric bSEPERATS4MSS1, bSEPERATS4MSS2, bSEPERATS4MSS4;
            numeric rSEPERATS4MSS1, rSEPERATS4MSS2, rSEPERATS4MSS4;
            numeric rQuadSEPERATS4MSS1, rQuadSEPERATS4MSS2, rQuadSEPERATS4MSS4;
            numeric syxSEPERATS4MSS1, syxSEPERATS4MSS2, syxSEPERATS4MSS4;
            numeric bStandSEPERATS4MSS1, bStandSEPERATS4MSS2, bStandSEPERATS4MSS4;
            numeric aStandSEPERATS4MSS1, aStandSEPERATS4MSS2, aStandSEPERATS4MSS4;
    
            numeric xSEPERATS4MSS1 = 0;
            numeric xSEPERATS4MSS2 = 0;
            numeric xSEPERATS4MSS4 = 0;
    
            numeric xQuadSEPERATS4MSS1 = 0;
            numeric xQuadSEPERATS4MSS2 = 0;
            numeric xQuadSEPERATS4MSS4 = 0;
    
            numeric ySEPERATS4MSS1 = 0;
            numeric ySEPERATS4MSS2 = 0;
            numeric ySEPERATS4MSS4 = 0;
    
            numeric yQuadSEPERATS4MSS1 = 0;
            numeric yQuadSEPERATS4MSS2 = 0;
            numeric yQuadSEPERATS4MSS4 = 0;
    
            numeric xySEPERATS4MSS1 = 0;
            numeric xySEPERATS4MSS2 = 0;
            numeric xySEPERATS4MSS4 = 0;
    
            numeric xxAritQuadSEPERATS4MSS1 = 0;
            numeric xxAritQuadSEPERATS4MSS2 = 0;
            numeric xxAritQuadSEPERATS4MSS4 = 0;
    
            numeric yyAritQuadSEPERATS4MSS1 = 0;
            numeric yyAritQuadSEPERATS4MSS2 = 0;
            numeric yyAritQuadSEPERATS4MSS4 = 0;
    
            numeric qXYSEPERATS4MSS1 = 0;
            numeric qXYSEPERATS4MSS2 = 0;
            numeric qXYSEPERATS4MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS4MSS1 = xSEPERATS4MSS1 + pifSEPERATS2S4ETM2arrayRAND[m];
                xSEPERATS4MSS2 = xSEPERATS4MSS2 + pifSEPERATS2S4ETM3arrayRAND[m];
                xSEPERATS4MSS4 = xSEPERATS4MSS4 + pifSEPERATS2S4ETM4arrayRAND[m];
    
                xQuadSEPERATS4MSS1 = (xQuadSEPERATS4MSS1 + (pifSEPERATS2S4ETM2arrayRAND[m]^2));
                xQuadSEPERATS4MSS2 = (xQuadSEPERATS4MSS2 + (pifSEPERATS2S4ETM3arrayRAND[m]^2));
                xQuadSEPERATS4MSS4 = (xQuadSEPERATS4MSS4 + (pifSEPERATS2S4ETM4arrayRAND[m]^2));
    
                ySEPERATS4MSS1 = ySEPERATS4MSS1 + pifSEPERATS4slaveMSS1arrayRAND[m];
                ySEPERATS4MSS2 = ySEPERATS4MSS2 + pifSEPERATS4slaveMSS2arrayRAND[m];
                ySEPERATS4MSS4 = ySEPERATS4MSS4 + pifSEPERATS4slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS4MSS1 = (yQuadSEPERATS4MSS1 + (pifSEPERATS4slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS4MSS2 = (yQuadSEPERATS4MSS2 + (pifSEPERATS4slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS4MSS4 = (yQuadSEPERATS4MSS4 + (pifSEPERATS4slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS4MSS1 = (xySEPERATS4MSS1 + (pifSEPERATS2S4ETM2arrayRAND[m] * pifSEPERATS4slaveMSS1arrayRAND[m]));
                xySEPERATS4MSS2 = (xySEPERATS4MSS2 + (pifSEPERATS2S4ETM3arrayRAND[m] * pifSEPERATS4slaveMSS2arrayRAND[m]));
                xySEPERATS4MSS4 = (xySEPERATS4MSS4 + (pifSEPERATS2S4ETM4arrayRAND[m] * pifSEPERATS4slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS4MSS1 = xSEPERATS4MSS1 / minPifVAL;
            xAritSEPERATS4MSS2 = xSEPERATS4MSS2 / minPifVAL;
            xAritSEPERATS4MSS4 = xSEPERATS4MSS4 / minPifVAL;
    
            yAritSEPERATS4MSS1 = ySEPERATS4MSS1 / minPifVAL;
            yAritSEPERATS4MSS2 = ySEPERATS4MSS2 / minPifVAL;
            yAritSEPERATS4MSS4 = ySEPERATS4MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4MSS1 = (xxAritQuadSEPERATS4MSS1 + ((pifSEPERATS2S4ETM2arrayRAND[n] - xAritSEPERATS4MSS1)^2));
                xxAritQuadSEPERATS4MSS2 = (xxAritQuadSEPERATS4MSS2 + ((pifSEPERATS2S4ETM3arrayRAND[n] - xAritSEPERATS4MSS2)^2));
                xxAritQuadSEPERATS4MSS4 = (xxAritQuadSEPERATS4MSS4 + ((pifSEPERATS2S4ETM4arrayRAND[n] - xAritSEPERATS4MSS4)^2));
    
                yyAritQuadSEPERATS4MSS1 = (yyAritQuadSEPERATS4MSS1 + ((pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)^2));
                yyAritQuadSEPERATS4MSS2 = (yyAritQuadSEPERATS4MSS2 + ((pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)^2));
                yyAritQuadSEPERATS4MSS4 = (yyAritQuadSEPERATS4MSS4 + ((pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)^2));
    
                qXYSEPERATS4MSS1 = (qXYSEPERATS4MSS1 + ((pifSEPERATS2S4ETM2arrayRAND[n] - xAritSEPERATS4MSS1) * (pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)));
                qXYSEPERATS4MSS2 = (qXYSEPERATS4MSS2 + ((pifSEPERATS2S4ETM3arrayRAND[n] - xAritSEPERATS4MSS2) * (pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)));
                qXYSEPERATS4MSS4 = (qXYSEPERATS4MSS4 + ((pifSEPERATS2S4ETM4arrayRAND[n] - xAritSEPERATS4MSS4) * (pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)));
            }
        
            aSEPERATS4MSS1 = (((xQuadSEPERATS4MSS1 * ySEPERATS4MSS1) - (xSEPERATS4MSS1 * xySEPERATS4MSS1)) / ((minPifVAL * xQuadSEPERATS4MSS1) - (xSEPERATS4MSS1^2)));
            aSEPERATS4MSS2 = (((xQuadSEPERATS4MSS2 * ySEPERATS4MSS2) - (xSEPERATS4MSS2 * xySEPERATS4MSS2)) / ((minPifVAL * xQuadSEPERATS4MSS2) - (xSEPERATS4MSS2^2)));
            aSEPERATS4MSS4 = (((xQuadSEPERATS4MSS4 * ySEPERATS4MSS4) - (xSEPERATS4MSS4 * xySEPERATS4MSS4)) / ((minPifVAL * xQuadSEPERATS4MSS4) - (xSEPERATS4MSS4^2)));
            
            bSEPERATS4MSS1 = qXYSEPERATS4MSS1 / xxAritQuadSEPERATS4MSS1;
            bSEPERATS4MSS2 = qXYSEPERATS4MSS2 / xxAritQuadSEPERATS4MSS2;
            bSEPERATS4MSS4 = qXYSEPERATS4MSS4 / xxAritQuadSEPERATS4MSS4;
    
            rSEPERATS4MSS1 = (qXYSEPERATS4MSS1 / ((xxAritQuadSEPERATS4MSS1 * yyAritQuadSEPERATS4MSS1)^0.5));
            rSEPERATS4MSS2 = (qXYSEPERATS4MSS2 / ((xxAritQuadSEPERATS4MSS2 * yyAritQuadSEPERATS4MSS2)^0.5));
            rSEPERATS4MSS4 = (qXYSEPERATS4MSS4 / ((xxAritQuadSEPERATS4MSS4 * yyAritQuadSEPERATS4MSS4)^0.5));
    
            rQuadSEPERATS4MSS1 = ((rSEPERATS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4MSS2 = ((rSEPERATS4MSS2^2) * 100);
            rQuadSEPERATS4MSS4 = ((rSEPERATS4MSS4^2) * 100);
        
            syxSEPERATS4MSS1 = (((yyAritQuadSEPERATS4MSS1 - ((qXYSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS2 = (((yyAritQuadSEPERATS4MSS2 - ((qXYSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS4 = (((yyAritQuadSEPERATS4MSS4 - ((qXYSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4MSS1 = (((syxSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)^0.5);
            bStandSEPERATS4MSS2 = (((syxSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)^0.5);
            bStandSEPERATS4MSS4 = (((syxSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)^0.5);
    
            aStandSEPERATS4MSS1 = (bStandSEPERATS4MSS1 * ((xQuadSEPERATS4MSS1 / minPifVAL)^0.5));
            aStandSEPERATS4MSS2 = (bStandSEPERATS4MSS2 * ((xQuadSEPERATS4MSS2 / minPifVAL)^0.5));
            aStandSEPERATS4MSS4 = (bStandSEPERATS4MSS4 * ((xQuadSEPERATS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS1, bSEPERATS4MSS1, rSEPERATS4MSS1, rQuadSEPERATS4MSS1, aStandSEPERATS4MSS1, bStandSEPERATS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS2, bSEPERATS4MSS2, rSEPERATS4MSS2, rQuadSEPERATS4MSS2, aStandSEPERATS4MSS2, bStandSEPERATS4MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS4, bSEPERATS4MSS4, rSEPERATS4MSS4, rQuadSEPERATS4MSS4, aStandSEPERATS4MSS4, bStandSEPERATS4MSS4);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS4slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS4slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS4slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aSEPERATS4MSS1 + (bSEPERATS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aSEPERATS4MSS2 + (bSEPERATS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = REFS4MSS3[i,j];
                    OUT4MSS4[i,j] = (aSEPERATS4MSS4 + (bSEPERATS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT4MSS1);
            CreatePyramid(OUT4MSS2);
            CreatePyramid(OUT4MSS3);
            CreatePyramid(OUT4MSS4);
        
            CreateHistogram(OUT4MSS1);
            CreateHistogram(OUT4MSS2);
            CreateHistogram(OUT4MSS3);
            CreateHistogram(OUT4MSS4);
            
            CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }   
        }
        
        else if ( sensors2 == 6 )
        {
        printf("Scene 2 - Master Scene (TM):\n");
        printf("Scene 2 array values used for regression computation:\n");
	    printf("For Scene 2 (Master) and Slave (Scene 1):");
        printf("TM1: %12f ", pifSEPERATS2S1TM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S1TM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S1TM1arrayRAND[minPifVAL]);
    
        printf("TM2: %12f ", pifSEPERATS2S1TM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S1TM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S1TM2arrayRAND[minPifVAL]);
    
        printf("TM3: %12f ", pifSEPERATS2S1TM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S1TM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S1TM3arrayRAND[minPifVAL]);
    
        printf("TM4: %12f ", pifSEPERATS2S1TM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S1TM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S1TM4arrayRAND[minPifVAL]);
    
        printf("TM5: %12f ", pifSEPERATS2S1TM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S1TM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S1TM5arrayRAND[minPifVAL]);
    
        printf("TM7: %12f ", pifSEPERATS2S1TM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S1TM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS2S1TM7arrayRAND[minPifVAL]);
	    printf("For Scene 2 (Master) and Slave (Scene 3):");
        printf("TM1: %12f ", pifSEPERATS2S3TM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S3TM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S3TM1arrayRAND[minPifVAL]);
    
        printf("TM2: %12f ", pifSEPERATS2S3TM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S3TM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S3TM2arrayRAND[minPifVAL]);
    
        printf("TM3: %12f ", pifSEPERATS2S3TM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S3TM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S3TM3arrayRAND[minPifVAL]);
    
        printf("TM4: %12f ", pifSEPERATS2S3TM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S3TM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S3TM4arrayRAND[minPifVAL]);
    
        printf("TM5: %12f ", pifSEPERATS2S3TM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S3TM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S3TM5arrayRAND[minPifVAL]);
    
        printf("TM7: %12f ", pifSEPERATS2S3TM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S3TM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS2S3TM7arrayRAND[minPifVAL]);
	    printf("For Scene 2 (Master) and Slave (Scene 4):");
        printf("TM1: %12f ", pifSEPERATS2S4TM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S4TM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S4TM1arrayRAND[minPifVAL]);
    
        printf("TM2: %12f ", pifSEPERATS2S4TM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S4TM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S4TM2arrayRAND[minPifVAL]);
    
        printf("TM3: %12f ", pifSEPERATS2S4TM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S4TM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S4TM3arrayRAND[minPifVAL]);
    
        printf("TM4: %12f ", pifSEPERATS2S4TM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S4TM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S4TM4arrayRAND[minPifVAL]);
    
        printf("TM5: %12f ", pifSEPERATS2S4TM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S4TM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S4TM5arrayRAND[minPifVAL]);
    
        printf("TM7: %12f ", pifSEPERATS2S4TM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S4TM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS2S4TM7arrayRAND[minPifVAL]);
                for i = 1 to TMlins
                {
                    for j = 1 to TMcols
                    {
                    OUT2TM1[i,j] = REFS2TM1[i,j];
                    OUT2TM2[i,j] = REFS2TM2[i,j];
                    OUT2TM3[i,j] = REFS2TM3[i,j];
                    OUT2TM4[i,j] = REFS2TM4[i,j];
                    OUT2TM5[i,j] = REFS2TM5[i,j];
                    OUT2TM7[i,j] = REFS2TM7[i,j];
                    }
                }
            
        CreatePyramid(OUT2TM1);
        CreatePyramid(OUT2TM2);
        CreatePyramid(OUT2TM3);
        CreatePyramid(OUT2TM4);
        CreatePyramid(OUT2TM5);
        CreatePyramid(OUT2TM7);
        
        CreateHistogram(OUT2TM1);
        CreateHistogram(OUT2TM2);
        CreateHistogram(OUT2TM3);
        CreateHistogram(OUT2TM4);
        CreateHistogram(OUT2TM5);
        CreateHistogram(OUT2TM7);
        
        CloseRaster(REFS2TM1);
        CloseRaster(REFS2TM2);
        CloseRaster(REFS2TM3);
        CloseRaster(REFS2TM4);
        CloseRaster(REFS2TM5);
        CloseRaster(REFS2TM7);
        
        CloseRaster(OUT2TM1);
        CloseRaster(OUT2TM2);
        CloseRaster(OUT2TM3);
        CloseRaster(OUT2TM4);
        CloseRaster(OUT2TM5);
        CloseRaster(OUT2TM7);
            
        printf("Scene 2 (Master) output was written, histogram created and pyramid written...\n\n\n");
                
            if ( sensors1 == 7 )
            {
            numeric xAritSEPERATS1ETM1, xAritSEPERATS1ETM2, xAritSEPERATS1ETM3, xAritSEPERATS1ETM4, xAritSEPERATS1ETM5, xAritSEPERATS1ETM7;
            numeric yAritSEPERATS1ETM1, yAritSEPERATS1ETM2, yAritSEPERATS1ETM3, yAritSEPERATS1ETM4, yAritSEPERATS1ETM5, yAritSEPERATS1ETM7;
    
            numeric aSEPERATS1ETM1, aSEPERATS1ETM2, aSEPERATS1ETM3, aSEPERATS1ETM4, aSEPERATS1ETM5, aSEPERATS1ETM7;
            numeric bSEPERATS1ETM1, bSEPERATS1ETM2, bSEPERATS1ETM3, bSEPERATS1ETM4, bSEPERATS1ETM5, bSEPERATS1ETM7;
            numeric rSEPERATS1ETM1, rSEPERATS1ETM2, rSEPERATS1ETM3, rSEPERATS1ETM4, rSEPERATS1ETM5, rSEPERATS1ETM7;
            numeric rQuadSEPERATS1ETM1, rQuadSEPERATS1ETM2, rQuadSEPERATS1ETM3, rQuadSEPERATS1ETM4, rQuadSEPERATS1ETM5, rQuadSEPERATS1ETM7;
            numeric syxSEPERATS1ETM1, syxSEPERATS1ETM2, syxSEPERATS1ETM3, syxSEPERATS1ETM4, syxSEPERATS1ETM5, syxSEPERATS1ETM7;
            numeric bStandSEPERATS1ETM1, bStandSEPERATS1ETM2, bStandSEPERATS1ETM3, bStandSEPERATS1ETM4, bStandSEPERATS1ETM5, bStandSEPERATS1ETM7;
            numeric aStandSEPERATS1ETM1, aStandSEPERATS1ETM2, aStandSEPERATS1ETM3, aStandSEPERATS1ETM4, aStandSEPERATS1ETM5, aStandSEPERATS1ETM7;
    
            numeric xSEPERATS1ETM1 = 0;
            numeric xSEPERATS1ETM2 = 0;
            numeric xSEPERATS1ETM3 = 0;
            numeric xSEPERATS1ETM4 = 0;
            numeric xSEPERATS1ETM5 = 0;
            numeric xSEPERATS1ETM7 = 0;
    
            numeric xQuadSEPERATS1ETM1 = 0;
            numeric xQuadSEPERATS1ETM2 = 0;
            numeric xQuadSEPERATS1ETM3 = 0;
            numeric xQuadSEPERATS1ETM4 = 0;
            numeric xQuadSEPERATS1ETM5 = 0;
            numeric xQuadSEPERATS1ETM7 = 0;
    
            numeric ySEPERATS1ETM1 = 0;
            numeric ySEPERATS1ETM2 = 0;
            numeric ySEPERATS1ETM3 = 0;
            numeric ySEPERATS1ETM4 = 0;
            numeric ySEPERATS1ETM5 = 0;
            numeric ySEPERATS1ETM7 = 0;
    
            numeric yQuadSEPERATS1ETM1 = 0;
            numeric yQuadSEPERATS1ETM2 = 0;
            numeric yQuadSEPERATS1ETM3 = 0;
            numeric yQuadSEPERATS1ETM4 = 0;
            numeric yQuadSEPERATS1ETM5 = 0;
            numeric yQuadSEPERATS1ETM7 = 0;
    
            numeric xySEPERATS1ETM1 = 0;
            numeric xySEPERATS1ETM2 = 0;
            numeric xySEPERATS1ETM3 = 0;
            numeric xySEPERATS1ETM4 = 0;
            numeric xySEPERATS1ETM5 = 0;
            numeric xySEPERATS1ETM7 = 0;
    
            numeric xxAritQuadSEPERATS1ETM1 = 0;
            numeric xxAritQuadSEPERATS1ETM2 = 0;
            numeric xxAritQuadSEPERATS1ETM3 = 0;
            numeric xxAritQuadSEPERATS1ETM4 = 0;
            numeric xxAritQuadSEPERATS1ETM5 = 0;
            numeric xxAritQuadSEPERATS1ETM7 = 0;
    
            numeric yyAritQuadSEPERATS1ETM1 = 0;
            numeric yyAritQuadSEPERATS1ETM2 = 0;
            numeric yyAritQuadSEPERATS1ETM3 = 0;
            numeric yyAritQuadSEPERATS1ETM4 = 0;
            numeric yyAritQuadSEPERATS1ETM5 = 0;
            numeric yyAritQuadSEPERATS1ETM7 = 0;
    
            numeric qXYSEPERATS1ETM1 = 0;
            numeric qXYSEPERATS1ETM2 = 0;
            numeric qXYSEPERATS1ETM3 = 0;
            numeric qXYSEPERATS1ETM4 = 0;
            numeric qXYSEPERATS1ETM5 = 0;
            numeric qXYSEPERATS1ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1ETM1 = xSEPERATS1ETM1 + pifSEPERATS2S1TM1arrayRAND[m];
                xSEPERATS1ETM2 = xSEPERATS1ETM2 + pifSEPERATS2S1TM2arrayRAND[m];
                xSEPERATS1ETM3 = xSEPERATS1ETM3 + pifSEPERATS2S1TM3arrayRAND[m];
                xSEPERATS1ETM4 = xSEPERATS1ETM4 + pifSEPERATS2S1TM4arrayRAND[m];
                xSEPERATS1ETM5 = xSEPERATS1ETM5 + pifSEPERATS2S1TM5arrayRAND[m];
                xSEPERATS1ETM7 = xSEPERATS1ETM7 + pifSEPERATS2S1TM7arrayRAND[m];
    
                xQuadSEPERATS1ETM1 = (xQuadSEPERATS1ETM1 + (pifSEPERATS2S1TM1arrayRAND[m]^2));
                xQuadSEPERATS1ETM2 = (xQuadSEPERATS1ETM2 + (pifSEPERATS2S1TM2arrayRAND[m]^2));
                xQuadSEPERATS1ETM3 = (xQuadSEPERATS1ETM3 + (pifSEPERATS2S1TM3arrayRAND[m]^2));
                xQuadSEPERATS1ETM4 = (xQuadSEPERATS1ETM4 + (pifSEPERATS2S1TM4arrayRAND[m]^2));
                xQuadSEPERATS1ETM5 = (xQuadSEPERATS1ETM5 + (pifSEPERATS2S1TM5arrayRAND[m]^2));
                xQuadSEPERATS1ETM7 = (xQuadSEPERATS1ETM7 + (pifSEPERATS2S1TM7arrayRAND[m]^2));
    
                ySEPERATS1ETM1 = ySEPERATS1ETM1 + pifSEPERATS1slaveETM1arrayRAND[m];
                ySEPERATS1ETM2 = ySEPERATS1ETM2 + pifSEPERATS1slaveETM2arrayRAND[m];
                ySEPERATS1ETM3 = ySEPERATS1ETM3 + pifSEPERATS1slaveETM3arrayRAND[m];
                ySEPERATS1ETM4 = ySEPERATS1ETM4 + pifSEPERATS1slaveETM4arrayRAND[m];
                ySEPERATS1ETM5 = ySEPERATS1ETM5 + pifSEPERATS1slaveETM5arrayRAND[m];
                ySEPERATS1ETM7 = ySEPERATS1ETM7 + pifSEPERATS1slaveETM7arrayRAND[m];
                
                yQuadSEPERATS1ETM1 = (yQuadSEPERATS1ETM1 + (pifSEPERATS1slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS1ETM2 = (yQuadSEPERATS1ETM2 + (pifSEPERATS1slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS1ETM3 = (yQuadSEPERATS1ETM3 + (pifSEPERATS1slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS1ETM4 = (yQuadSEPERATS1ETM4 + (pifSEPERATS1slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS1ETM5 = (yQuadSEPERATS1ETM5 + (pifSEPERATS1slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS1ETM7 = (yQuadSEPERATS1ETM7 + (pifSEPERATS1slaveETM7arrayRAND[m]^2));
    
                xySEPERATS1ETM1 = (xySEPERATS1ETM1 + (pifSEPERATS2S1TM1arrayRAND[m] * pifSEPERATS1slaveETM1arrayRAND[m]));
                xySEPERATS1ETM2 = (xySEPERATS1ETM2 + (pifSEPERATS2S1TM2arrayRAND[m] * pifSEPERATS1slaveETM2arrayRAND[m]));
                xySEPERATS1ETM3 = (xySEPERATS1ETM3 + (pifSEPERATS2S1TM3arrayRAND[m] * pifSEPERATS1slaveETM3arrayRAND[m]));
                xySEPERATS1ETM4 = (xySEPERATS1ETM4 + (pifSEPERATS2S1TM4arrayRAND[m] * pifSEPERATS1slaveETM4arrayRAND[m]));
                xySEPERATS1ETM5 = (xySEPERATS1ETM5 + (pifSEPERATS2S1TM5arrayRAND[m] * pifSEPERATS1slaveETM5arrayRAND[m]));
                xySEPERATS1ETM7 = (xySEPERATS1ETM7 + (pifSEPERATS2S1TM7arrayRAND[m] * pifSEPERATS1slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS1ETM1 = xSEPERATS1ETM1 / minPifVAL;
            xAritSEPERATS1ETM2 = xSEPERATS1ETM2 / minPifVAL;
            xAritSEPERATS1ETM3 = xSEPERATS1ETM3 / minPifVAL;
            xAritSEPERATS1ETM4 = xSEPERATS1ETM4 / minPifVAL;
            xAritSEPERATS1ETM5 = xSEPERATS1ETM5 / minPifVAL;
            xAritSEPERATS1ETM7 = xSEPERATS1ETM7 / minPifVAL;
    
            yAritSEPERATS1ETM1 = ySEPERATS1ETM1 / minPifVAL;
            yAritSEPERATS1ETM2 = ySEPERATS1ETM2 / minPifVAL;
            yAritSEPERATS1ETM3 = ySEPERATS1ETM3 / minPifVAL;
            yAritSEPERATS1ETM4 = ySEPERATS1ETM4 / minPifVAL;
            yAritSEPERATS1ETM5 = ySEPERATS1ETM5 / minPifVAL;
            yAritSEPERATS1ETM7 = ySEPERATS1ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1ETM1 = (xxAritQuadSEPERATS1ETM1 + ((pifSEPERATS2S1TM1arrayRAND[n] - xAritSEPERATS1ETM1)^2));
                xxAritQuadSEPERATS1ETM2 = (xxAritQuadSEPERATS1ETM2 + ((pifSEPERATS2S1TM2arrayRAND[n] - xAritSEPERATS1ETM2)^2));
                xxAritQuadSEPERATS1ETM3 = (xxAritQuadSEPERATS1ETM3 + ((pifSEPERATS2S1TM3arrayRAND[n] - xAritSEPERATS1ETM3)^2));
                xxAritQuadSEPERATS1ETM4 = (xxAritQuadSEPERATS1ETM4 + ((pifSEPERATS2S1TM4arrayRAND[n] - xAritSEPERATS1ETM4)^2));
                xxAritQuadSEPERATS1ETM5 = (xxAritQuadSEPERATS1ETM5 + ((pifSEPERATS2S1TM5arrayRAND[n] - xAritSEPERATS1ETM5)^2));
                xxAritQuadSEPERATS1ETM7 = (xxAritQuadSEPERATS1ETM7 + ((pifSEPERATS2S1TM7arrayRAND[n] - xAritSEPERATS1ETM7)^2));
    
                yyAritQuadSEPERATS1ETM1 = (yyAritQuadSEPERATS1ETM1 + ((pifSEPERATS1slaveETM1arrayRAND[n] - yAritSEPERATS1ETM1)^2));
                yyAritQuadSEPERATS1ETM2 = (yyAritQuadSEPERATS1ETM2 + ((pifSEPERATS1slaveETM2arrayRAND[n] - yAritSEPERATS1ETM2)^2));
                yyAritQuadSEPERATS1ETM3 = (yyAritQuadSEPERATS1ETM3 + ((pifSEPERATS1slaveETM3arrayRAND[n] - yAritSEPERATS1ETM3)^2));
                yyAritQuadSEPERATS1ETM4 = (yyAritQuadSEPERATS1ETM4 + ((pifSEPERATS1slaveETM4arrayRAND[n] - yAritSEPERATS1ETM4)^2));
                yyAritQuadSEPERATS1ETM5 = (yyAritQuadSEPERATS1ETM5 + ((pifSEPERATS1slaveETM5arrayRAND[n] - yAritSEPERATS1ETM5)^2));
                yyAritQuadSEPERATS1ETM7 = (yyAritQuadSEPERATS1ETM7 + ((pifSEPERATS1slaveETM7arrayRAND[n] - yAritSEPERATS1ETM7)^2));
    
                qXYSEPERATS1ETM1 = (qXYSEPERATS1ETM1 + ((pifSEPERATS2S1TM1arrayRAND[n] - xAritSEPERATS1ETM1) * (pifSEPERATS1slaveETM1arrayRAND[n] - yAritSEPERATS1ETM1)));
                qXYSEPERATS1ETM2 = (qXYSEPERATS1ETM2 + ((pifSEPERATS2S1TM2arrayRAND[n] - xAritSEPERATS1ETM2) * (pifSEPERATS1slaveETM2arrayRAND[n] - yAritSEPERATS1ETM2)));
                qXYSEPERATS1ETM3 = (qXYSEPERATS1ETM3 + ((pifSEPERATS2S1TM3arrayRAND[n] - xAritSEPERATS1ETM3) * (pifSEPERATS1slaveETM3arrayRAND[n] - yAritSEPERATS1ETM3)));
                qXYSEPERATS1ETM4 = (qXYSEPERATS1ETM4 + ((pifSEPERATS2S1TM4arrayRAND[n] - xAritSEPERATS1ETM4) * (pifSEPERATS1slaveETM4arrayRAND[n] - yAritSEPERATS1ETM4)));
                qXYSEPERATS1ETM5 = (qXYSEPERATS1ETM5 + ((pifSEPERATS2S1TM5arrayRAND[n] - xAritSEPERATS1ETM5) * (pifSEPERATS1slaveETM5arrayRAND[n] - yAritSEPERATS1ETM5)));
                qXYSEPERATS1ETM7 = (qXYSEPERATS1ETM7 + ((pifSEPERATS2S1TM7arrayRAND[n] - xAritSEPERATS1ETM7) * (pifSEPERATS1slaveETM7arrayRAND[n] - yAritSEPERATS1ETM7)));
            }
        
            aSEPERATS1ETM1 = (((xQuadSEPERATS1ETM1 * ySEPERATS1ETM1) - (xSEPERATS1ETM1 * xySEPERATS1ETM1)) / ((minPifVAL * xQuadSEPERATS1ETM1) - (xSEPERATS1ETM1^2)));
            aSEPERATS1ETM2 = (((xQuadSEPERATS1ETM2 * ySEPERATS1ETM2) - (xSEPERATS1ETM2 * xySEPERATS1ETM2)) / ((minPifVAL * xQuadSEPERATS1ETM2) - (xSEPERATS1ETM2^2)));
            aSEPERATS1ETM3 = (((xQuadSEPERATS1ETM3 * ySEPERATS1ETM3) - (xSEPERATS1ETM3 * xySEPERATS1ETM3)) / ((minPifVAL * xQuadSEPERATS1ETM3) - (xSEPERATS1ETM3^2)));
            aSEPERATS1ETM4 = (((xQuadSEPERATS1ETM4 * ySEPERATS1ETM4) - (xSEPERATS1ETM4 * xySEPERATS1ETM4)) / ((minPifVAL * xQuadSEPERATS1ETM4) - (xSEPERATS1ETM4^2)));
            aSEPERATS1ETM5 = (((xQuadSEPERATS1ETM5 * ySEPERATS1ETM5) - (xSEPERATS1ETM5 * xySEPERATS1ETM5)) / ((minPifVAL * xQuadSEPERATS1ETM5) - (xSEPERATS1ETM5^2)));
            aSEPERATS1ETM7 = (((xQuadSEPERATS1ETM7 * ySEPERATS1ETM7) - (xSEPERATS1ETM7 * xySEPERATS1ETM7)) / ((minPifVAL * xQuadSEPERATS1ETM7) - (xSEPERATS1ETM7^2)));
            
            bSEPERATS1ETM1 = qXYSEPERATS1ETM1 / xxAritQuadSEPERATS1ETM1;
            bSEPERATS1ETM2 = qXYSEPERATS1ETM2 / xxAritQuadSEPERATS1ETM2;
            bSEPERATS1ETM3 = qXYSEPERATS1ETM3 / xxAritQuadSEPERATS1ETM3;
            bSEPERATS1ETM4 = qXYSEPERATS1ETM4 / xxAritQuadSEPERATS1ETM4;
            bSEPERATS1ETM5 = qXYSEPERATS1ETM5 / xxAritQuadSEPERATS1ETM5;
            bSEPERATS1ETM7 = qXYSEPERATS1ETM7 / xxAritQuadSEPERATS1ETM7;
    
            rSEPERATS1ETM1 = (qXYSEPERATS1ETM1 / ((xxAritQuadSEPERATS1ETM1 * yyAritQuadSEPERATS1ETM1)^0.5));
            rSEPERATS1ETM2 = (qXYSEPERATS1ETM2 / ((xxAritQuadSEPERATS1ETM2 * yyAritQuadSEPERATS1ETM2)^0.5));
            rSEPERATS1ETM3 = (qXYSEPERATS1ETM3 / ((xxAritQuadSEPERATS1ETM3 * yyAritQuadSEPERATS1ETM3)^0.5));
            rSEPERATS1ETM4 = (qXYSEPERATS1ETM4 / ((xxAritQuadSEPERATS1ETM4 * yyAritQuadSEPERATS1ETM4)^0.5));
            rSEPERATS1ETM5 = (qXYSEPERATS1ETM5 / ((xxAritQuadSEPERATS1ETM5 * yyAritQuadSEPERATS1ETM5)^0.5));
            rSEPERATS1ETM7 = (qXYSEPERATS1ETM7 / ((xxAritQuadSEPERATS1ETM7 * yyAritQuadSEPERATS1ETM7)^0.5));
    
            rQuadSEPERATS1ETM1 = ((rSEPERATS1ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1ETM2 = ((rSEPERATS1ETM2^2) * 100);
            rQuadSEPERATS1ETM3 = ((rSEPERATS1ETM3^2) * 100);
            rQuadSEPERATS1ETM4 = ((rSEPERATS1ETM4^2) * 100);
            rQuadSEPERATS1ETM5 = ((rSEPERATS1ETM5^2) * 100);
            rQuadSEPERATS1ETM7 = ((rSEPERATS1ETM7^2) * 100);
        
            syxSEPERATS1ETM1 = (((yyAritQuadSEPERATS1ETM1 - ((qXYSEPERATS1ETM1^2) / xxAritQuadSEPERATS1ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM2 = (((yyAritQuadSEPERATS1ETM2 - ((qXYSEPERATS1ETM2^2) / xxAritQuadSEPERATS1ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM3 = (((yyAritQuadSEPERATS1ETM3 - ((qXYSEPERATS1ETM3^2) / xxAritQuadSEPERATS1ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM4 = (((yyAritQuadSEPERATS1ETM4 - ((qXYSEPERATS1ETM4^2) / xxAritQuadSEPERATS1ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM5 = (((yyAritQuadSEPERATS1ETM5 - ((qXYSEPERATS1ETM5^2) / xxAritQuadSEPERATS1ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM7 = (((yyAritQuadSEPERATS1ETM7 - ((qXYSEPERATS1ETM7^2) / xxAritQuadSEPERATS1ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1ETM1 = (((syxSEPERATS1ETM1^2) / xxAritQuadSEPERATS1ETM1)^0.5);
            bStandSEPERATS1ETM2 = (((syxSEPERATS1ETM2^2) / xxAritQuadSEPERATS1ETM2)^0.5);
            bStandSEPERATS1ETM3 = (((syxSEPERATS1ETM3^2) / xxAritQuadSEPERATS1ETM3)^0.5);
            bStandSEPERATS1ETM4 = (((syxSEPERATS1ETM4^2) / xxAritQuadSEPERATS1ETM4)^0.5);
            bStandSEPERATS1ETM5 = (((syxSEPERATS1ETM5^2) / xxAritQuadSEPERATS1ETM5)^0.5);
            bStandSEPERATS1ETM7 = (((syxSEPERATS1ETM7^2) / xxAritQuadSEPERATS1ETM7)^0.5);
    
            aStandSEPERATS1ETM1 = (bStandSEPERATS1ETM1 * ((xQuadSEPERATS1ETM1 / minPifVAL)^0.5));
            aStandSEPERATS1ETM2 = (bStandSEPERATS1ETM2 * ((xQuadSEPERATS1ETM2 / minPifVAL)^0.5));
            aStandSEPERATS1ETM3 = (bStandSEPERATS1ETM3 * ((xQuadSEPERATS1ETM3 / minPifVAL)^0.5));
            aStandSEPERATS1ETM4 = (bStandSEPERATS1ETM4 * ((xQuadSEPERATS1ETM4 / minPifVAL)^0.5));
            aStandSEPERATS1ETM5 = (bStandSEPERATS1ETM5 * ((xQuadSEPERATS1ETM5 / minPifVAL)^0.5));
            aStandSEPERATS1ETM7 = (bStandSEPERATS1ETM7 * ((xQuadSEPERATS1ETM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM1, bSEPERATS1ETM1, rSEPERATS1ETM1, rQuadSEPERATS1ETM1, aStandSEPERATS1ETM1, bStandSEPERATS1ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM2, bSEPERATS1ETM2, rSEPERATS1ETM2, rQuadSEPERATS1ETM2, aStandSEPERATS1ETM2, bStandSEPERATS1ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM3, bSEPERATS1ETM3, rSEPERATS1ETM3, rQuadSEPERATS1ETM3, aStandSEPERATS1ETM3, bStandSEPERATS1ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM4, bSEPERATS1ETM4, rSEPERATS1ETM4, rQuadSEPERATS1ETM4, aStandSEPERATS1ETM4, bStandSEPERATS1ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM5, bSEPERATS1ETM5, rSEPERATS1ETM5, rQuadSEPERATS1ETM5, aStandSEPERATS1ETM5, bStandSEPERATS1ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS1ETM7, bSEPERATS1ETM7, rSEPERATS1ETM7, rQuadSEPERATS1ETM7, aStandSEPERATS1ETM7, bStandSEPERATS1ETM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS1slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS1slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS1slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS1slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS1slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS1slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS1slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT1ETM1[i,j] = (aSEPERATS1ETM1 + (bSEPERATS1ETM1 * REFS1ETM1[i,j]));
                    OUT1ETM2[i,j] = (aSEPERATS1ETM2 + (bSEPERATS1ETM2 * REFS1ETM2[i,j]));
                    OUT1ETM3[i,j] = (aSEPERATS1ETM3 + (bSEPERATS1ETM3 * REFS1ETM3[i,j]));
                    OUT1ETM4[i,j] = (aSEPERATS1ETM4 + (bSEPERATS1ETM4 * REFS1ETM4[i,j]));
                    OUT1ETM5[i,j] = (aSEPERATS1ETM5 + (bSEPERATS1ETM5 * REFS1ETM5[i,j]));
                    OUT1ETM7[i,j] = (aSEPERATS1ETM7 + (bSEPERATS1ETM7 * REFS1ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1ETM1);
        	CreatePyramid(OUT1ETM2);
        	CreatePyramid(OUT1ETM3);
        	CreatePyramid(OUT1ETM4);
        	CreatePyramid(OUT1ETM5);
        	CreatePyramid(OUT1ETM7);
        
        	CreateHistogram(OUT1ETM1);
        	CreateHistogram(OUT1ETM2);
        	CreateHistogram(OUT1ETM3);
        	CreateHistogram(OUT1ETM4);
        	CreateHistogram(OUT1ETM5);
        	CreateHistogram(OUT1ETM7);
            CloseRaster(REFS1ETM1);
            CloseRaster(REFS1ETM2);
            CloseRaster(REFS1ETM3);
            CloseRaster(REFS1ETM4);
            CloseRaster(REFS1ETM5);
            CloseRaster(REFS1ETM7);
    
            CloseRaster(OUT1ETM1);
            CloseRaster(OUT1ETM2);
            CloseRaster(OUT1ETM3);
            CloseRaster(OUT1ETM4);
            CloseRaster(OUT1ETM5);
            CloseRaster(OUT1ETM7);
        
        	printf("Scene 1 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");         
            }
            
            else if ( sensors1 == 6 )
            {
            numeric xAritSEPERATS1TM1, xAritSEPERATS1TM2, xAritSEPERATS1TM3, xAritSEPERATS1TM4, xAritSEPERATS1TM5, xAritSEPERATS1TM7;
            numeric yAritSEPERATS1TM1, yAritSEPERATS1TM2, yAritSEPERATS1TM3, yAritSEPERATS1TM4, yAritSEPERATS1TM5, yAritSEPERATS1TM7;
    
            numeric aSEPERATS1TM1, aSEPERATS1TM2, aSEPERATS1TM3, aSEPERATS1TM4, aSEPERATS1TM5, aSEPERATS1TM7;
            numeric bSEPERATS1TM1, bSEPERATS1TM2, bSEPERATS1TM3, bSEPERATS1TM4, bSEPERATS1TM5, bSEPERATS1TM7;
            numeric rSEPERATS1TM1, rSEPERATS1TM2, rSEPERATS1TM3, rSEPERATS1TM4, rSEPERATS1TM5, rSEPERATS1TM7;
            numeric rQuadSEPERATS1TM1, rQuadSEPERATS1TM2, rQuadSEPERATS1TM3, rQuadSEPERATS1TM4, rQuadSEPERATS1TM5, rQuadSEPERATS1TM7;
            numeric syxSEPERATS1TM1, syxSEPERATS1TM2, syxSEPERATS1TM3, syxSEPERATS1TM4, syxSEPERATS1TM5, syxSEPERATS1TM7;
            numeric bStandSEPERATS1TM1, bStandSEPERATS1TM2, bStandSEPERATS1TM3, bStandSEPERATS1TM4, bStandSEPERATS1TM5, bStandSEPERATS1TM7;
            numeric aStandSEPERATS1TM1, aStandSEPERATS1TM2, aStandSEPERATS1TM3, aStandSEPERATS1TM4, aStandSEPERATS1TM5, aStandSEPERATS1TM7;
    
            numeric xSEPERATS1TM1 = 0;
            numeric xSEPERATS1TM2 = 0;
            numeric xSEPERATS1TM3 = 0;
            numeric xSEPERATS1TM4 = 0;
            numeric xSEPERATS1TM5 = 0;
            numeric xSEPERATS1TM7 = 0;
    
            numeric xQuadSEPERATS1TM1 = 0;
            numeric xQuadSEPERATS1TM2 = 0;
            numeric xQuadSEPERATS1TM3 = 0;
            numeric xQuadSEPERATS1TM4 = 0;
            numeric xQuadSEPERATS1TM5 = 0;
            numeric xQuadSEPERATS1TM7 = 0;
    
            numeric ySEPERATS1TM1 = 0;
            numeric ySEPERATS1TM2 = 0;
            numeric ySEPERATS1TM3 = 0;
            numeric ySEPERATS1TM4 = 0;
            numeric ySEPERATS1TM5 = 0;
            numeric ySEPERATS1TM7 = 0;
    
            numeric yQuadSEPERATS1TM1 = 0;
            numeric yQuadSEPERATS1TM2 = 0;
            numeric yQuadSEPERATS1TM3 = 0;
            numeric yQuadSEPERATS1TM4 = 0;
            numeric yQuadSEPERATS1TM5 = 0;
            numeric yQuadSEPERATS1TM7 = 0;
    
            numeric xySEPERATS1TM1 = 0;
            numeric xySEPERATS1TM2 = 0;
            numeric xySEPERATS1TM3 = 0;
            numeric xySEPERATS1TM4 = 0;
            numeric xySEPERATS1TM5 = 0;
            numeric xySEPERATS1TM7 = 0;
    
            numeric xxAritQuadSEPERATS1TM1 = 0;
            numeric xxAritQuadSEPERATS1TM2 = 0;
            numeric xxAritQuadSEPERATS1TM3 = 0;
            numeric xxAritQuadSEPERATS1TM4 = 0;
            numeric xxAritQuadSEPERATS1TM5 = 0;
            numeric xxAritQuadSEPERATS1TM7 = 0;
    
            numeric yyAritQuadSEPERATS1TM1 = 0;
            numeric yyAritQuadSEPERATS1TM2 = 0;
            numeric yyAritQuadSEPERATS1TM3 = 0;
            numeric yyAritQuadSEPERATS1TM4 = 0;
            numeric yyAritQuadSEPERATS1TM5 = 0;
            numeric yyAritQuadSEPERATS1TM7 = 0;
    
            numeric qXYSEPERATS1TM1 = 0;
            numeric qXYSEPERATS1TM2 = 0;
            numeric qXYSEPERATS1TM3 = 0;
            numeric qXYSEPERATS1TM4 = 0;
            numeric qXYSEPERATS1TM5 = 0;
            numeric qXYSEPERATS1TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1TM1 = xSEPERATS1TM1 + pifSEPERATS2S1TM1arrayRAND[m];
                xSEPERATS1TM2 = xSEPERATS1TM2 + pifSEPERATS2S1TM2arrayRAND[m];
                xSEPERATS1TM3 = xSEPERATS1TM3 + pifSEPERATS2S1TM3arrayRAND[m];
                xSEPERATS1TM4 = xSEPERATS1TM4 + pifSEPERATS2S1TM4arrayRAND[m];
                xSEPERATS1TM5 = xSEPERATS1TM5 + pifSEPERATS2S1TM5arrayRAND[m];
                xSEPERATS1TM7 = xSEPERATS1TM7 + pifSEPERATS2S1TM7arrayRAND[m];
    
                xQuadSEPERATS1TM1 = (xQuadSEPERATS1TM1 + (pifSEPERATS2S1TM1arrayRAND[m]^2));
                xQuadSEPERATS1TM2 = (xQuadSEPERATS1TM2 + (pifSEPERATS2S1TM2arrayRAND[m]^2));
                xQuadSEPERATS1TM3 = (xQuadSEPERATS1TM3 + (pifSEPERATS2S1TM3arrayRAND[m]^2));
                xQuadSEPERATS1TM4 = (xQuadSEPERATS1TM4 + (pifSEPERATS2S1TM4arrayRAND[m]^2));
                xQuadSEPERATS1TM5 = (xQuadSEPERATS1TM5 + (pifSEPERATS2S1TM5arrayRAND[m]^2));
                xQuadSEPERATS1TM7 = (xQuadSEPERATS1TM7 + (pifSEPERATS2S1TM7arrayRAND[m]^2));
    
                ySEPERATS1TM1 = ySEPERATS1TM1 + pifSEPERATS1slaveTM1arrayRAND[m];
                ySEPERATS1TM2 = ySEPERATS1TM2 + pifSEPERATS1slaveTM2arrayRAND[m];
                ySEPERATS1TM3 = ySEPERATS1TM3 + pifSEPERATS1slaveTM3arrayRAND[m];
                ySEPERATS1TM4 = ySEPERATS1TM4 + pifSEPERATS1slaveTM4arrayRAND[m];
                ySEPERATS1TM5 = ySEPERATS1TM5 + pifSEPERATS1slaveTM5arrayRAND[m];
                ySEPERATS1TM7 = ySEPERATS1TM7 + pifSEPERATS1slaveTM7arrayRAND[m];
                
                yQuadSEPERATS1TM1 = (yQuadSEPERATS1TM1 + (pifSEPERATS1slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS1TM2 = (yQuadSEPERATS1TM2 + (pifSEPERATS1slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS1TM3 = (yQuadSEPERATS1TM3 + (pifSEPERATS1slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS1TM4 = (yQuadSEPERATS1TM4 + (pifSEPERATS1slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS1TM5 = (yQuadSEPERATS1TM5 + (pifSEPERATS1slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS1TM7 = (yQuadSEPERATS1TM7 + (pifSEPERATS1slaveTM7arrayRAND[m]^2));
    
                xySEPERATS1TM1 = (xySEPERATS1TM1 + (pifSEPERATS2S1TM1arrayRAND[m] * pifSEPERATS1slaveTM1arrayRAND[m]));
                xySEPERATS1TM2 = (xySEPERATS1TM2 + (pifSEPERATS2S1TM2arrayRAND[m] * pifSEPERATS1slaveTM2arrayRAND[m]));
                xySEPERATS1TM3 = (xySEPERATS1TM3 + (pifSEPERATS2S1TM3arrayRAND[m] * pifSEPERATS1slaveTM3arrayRAND[m]));
                xySEPERATS1TM4 = (xySEPERATS1TM4 + (pifSEPERATS2S1TM4arrayRAND[m] * pifSEPERATS1slaveTM4arrayRAND[m]));
                xySEPERATS1TM5 = (xySEPERATS1TM5 + (pifSEPERATS2S1TM5arrayRAND[m] * pifSEPERATS1slaveTM5arrayRAND[m]));
                xySEPERATS1TM7 = (xySEPERATS1TM7 + (pifSEPERATS2S1TM7arrayRAND[m] * pifSEPERATS1slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS1TM1 = xSEPERATS1TM1 / minPifVAL;
            xAritSEPERATS1TM2 = xSEPERATS1TM2 / minPifVAL;
            xAritSEPERATS1TM3 = xSEPERATS1TM3 / minPifVAL;
            xAritSEPERATS1TM4 = xSEPERATS1TM4 / minPifVAL;
            xAritSEPERATS1TM5 = xSEPERATS1TM5 / minPifVAL;
            xAritSEPERATS1TM7 = xSEPERATS1TM7 / minPifVAL;
    
            yAritSEPERATS1TM1 = ySEPERATS1TM1 / minPifVAL;
            yAritSEPERATS1TM2 = ySEPERATS1TM2 / minPifVAL;
            yAritSEPERATS1TM3 = ySEPERATS1TM3 / minPifVAL;
            yAritSEPERATS1TM4 = ySEPERATS1TM4 / minPifVAL;
            yAritSEPERATS1TM5 = ySEPERATS1TM5 / minPifVAL;
            yAritSEPERATS1TM7 = ySEPERATS1TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1TM1 = (xxAritQuadSEPERATS1TM1 + ((pifSEPERATS2S1TM1arrayRAND[n] - xAritSEPERATS1TM1)^2));
                xxAritQuadSEPERATS1TM2 = (xxAritQuadSEPERATS1TM2 + ((pifSEPERATS2S1TM2arrayRAND[n] - xAritSEPERATS1TM2)^2));
                xxAritQuadSEPERATS1TM3 = (xxAritQuadSEPERATS1TM3 + ((pifSEPERATS2S1TM3arrayRAND[n] - xAritSEPERATS1TM3)^2));
                xxAritQuadSEPERATS1TM4 = (xxAritQuadSEPERATS1TM4 + ((pifSEPERATS2S1TM4arrayRAND[n] - xAritSEPERATS1TM4)^2));
                xxAritQuadSEPERATS1TM5 = (xxAritQuadSEPERATS1TM5 + ((pifSEPERATS2S1TM5arrayRAND[n] - xAritSEPERATS1TM5)^2));
                xxAritQuadSEPERATS1TM7 = (xxAritQuadSEPERATS1TM7 + ((pifSEPERATS2S1TM7arrayRAND[n] - xAritSEPERATS1TM7)^2));
    
                yyAritQuadSEPERATS1TM1 = (yyAritQuadSEPERATS1TM1 + ((pifSEPERATS1slaveTM1arrayRAND[n] - yAritSEPERATS1TM1)^2));
                yyAritQuadSEPERATS1TM2 = (yyAritQuadSEPERATS1TM2 + ((pifSEPERATS1slaveTM2arrayRAND[n] - yAritSEPERATS1TM2)^2));
                yyAritQuadSEPERATS1TM3 = (yyAritQuadSEPERATS1TM3 + ((pifSEPERATS1slaveTM3arrayRAND[n] - yAritSEPERATS1TM3)^2));
                yyAritQuadSEPERATS1TM4 = (yyAritQuadSEPERATS1TM4 + ((pifSEPERATS1slaveTM4arrayRAND[n] - yAritSEPERATS1TM4)^2));
                yyAritQuadSEPERATS1TM5 = (yyAritQuadSEPERATS1TM5 + ((pifSEPERATS1slaveTM5arrayRAND[n] - yAritSEPERATS1TM5)^2));
                yyAritQuadSEPERATS1TM7 = (yyAritQuadSEPERATS1TM7 + ((pifSEPERATS1slaveTM7arrayRAND[n] - yAritSEPERATS1TM7)^2));
    
                qXYSEPERATS1TM1 = (qXYSEPERATS1TM1 + ((pifSEPERATS2S1TM1arrayRAND[n] - xAritSEPERATS1TM1) * (pifSEPERATS1slaveTM1arrayRAND[n] - yAritSEPERATS1TM1)));
                qXYSEPERATS1TM2 = (qXYSEPERATS1TM2 + ((pifSEPERATS2S1TM2arrayRAND[n] - xAritSEPERATS1TM2) * (pifSEPERATS1slaveTM2arrayRAND[n] - yAritSEPERATS1TM2)));
                qXYSEPERATS1TM3 = (qXYSEPERATS1TM3 + ((pifSEPERATS2S1TM3arrayRAND[n] - xAritSEPERATS1TM3) * (pifSEPERATS1slaveTM3arrayRAND[n] - yAritSEPERATS1TM3)));
                qXYSEPERATS1TM4 = (qXYSEPERATS1TM4 + ((pifSEPERATS2S1TM4arrayRAND[n] - xAritSEPERATS1TM4) * (pifSEPERATS1slaveTM4arrayRAND[n] - yAritSEPERATS1TM4)));
                qXYSEPERATS1TM5 = (qXYSEPERATS1TM5 + ((pifSEPERATS2S1TM5arrayRAND[n] - xAritSEPERATS1TM5) * (pifSEPERATS1slaveTM5arrayRAND[n] - yAritSEPERATS1TM5)));
                qXYSEPERATS1TM7 = (qXYSEPERATS1TM7 + ((pifSEPERATS2S1TM7arrayRAND[n] - xAritSEPERATS1TM7) * (pifSEPERATS1slaveTM7arrayRAND[n] - yAritSEPERATS1TM7)));
            }
        
            aSEPERATS1TM1 = (((xQuadSEPERATS1TM1 * ySEPERATS1TM1) - (xSEPERATS1TM1 * xySEPERATS1TM1)) / ((minPifVAL * xQuadSEPERATS1TM1) - (xSEPERATS1TM1^2)));
            aSEPERATS1TM2 = (((xQuadSEPERATS1TM2 * ySEPERATS1TM2) - (xSEPERATS1TM2 * xySEPERATS1TM2)) / ((minPifVAL * xQuadSEPERATS1TM2) - (xSEPERATS1TM2^2)));
            aSEPERATS1TM3 = (((xQuadSEPERATS1TM3 * ySEPERATS1TM3) - (xSEPERATS1TM3 * xySEPERATS1TM3)) / ((minPifVAL * xQuadSEPERATS1TM3) - (xSEPERATS1TM3^2)));
            aSEPERATS1TM4 = (((xQuadSEPERATS1TM4 * ySEPERATS1TM4) - (xSEPERATS1TM4 * xySEPERATS1TM4)) / ((minPifVAL * xQuadSEPERATS1TM4) - (xSEPERATS1TM4^2)));
            aSEPERATS1TM5 = (((xQuadSEPERATS1TM5 * ySEPERATS1TM5) - (xSEPERATS1TM5 * xySEPERATS1TM5)) / ((minPifVAL * xQuadSEPERATS1TM5) - (xSEPERATS1TM5^2)));
            aSEPERATS1TM7 = (((xQuadSEPERATS1TM7 * ySEPERATS1TM7) - (xSEPERATS1TM7 * xySEPERATS1TM7)) / ((minPifVAL * xQuadSEPERATS1TM7) - (xSEPERATS1TM7^2)));
            
            bSEPERATS1TM1 = qXYSEPERATS1TM1 / xxAritQuadSEPERATS1TM1;
            bSEPERATS1TM2 = qXYSEPERATS1TM2 / xxAritQuadSEPERATS1TM2;
            bSEPERATS1TM3 = qXYSEPERATS1TM3 / xxAritQuadSEPERATS1TM3;
            bSEPERATS1TM4 = qXYSEPERATS1TM4 / xxAritQuadSEPERATS1TM4;
            bSEPERATS1TM5 = qXYSEPERATS1TM5 / xxAritQuadSEPERATS1TM5;
            bSEPERATS1TM7 = qXYSEPERATS1TM7 / xxAritQuadSEPERATS1TM7;
    
            rSEPERATS1TM1 = (qXYSEPERATS1TM1 / ((xxAritQuadSEPERATS1TM1 * yyAritQuadSEPERATS1TM1)^0.5));
            rSEPERATS1TM2 = (qXYSEPERATS1TM2 / ((xxAritQuadSEPERATS1TM2 * yyAritQuadSEPERATS1TM2)^0.5));
            rSEPERATS1TM3 = (qXYSEPERATS1TM3 / ((xxAritQuadSEPERATS1TM3 * yyAritQuadSEPERATS1TM3)^0.5));
            rSEPERATS1TM4 = (qXYSEPERATS1TM4 / ((xxAritQuadSEPERATS1TM4 * yyAritQuadSEPERATS1TM4)^0.5));
            rSEPERATS1TM5 = (qXYSEPERATS1TM5 / ((xxAritQuadSEPERATS1TM5 * yyAritQuadSEPERATS1TM5)^0.5));
            rSEPERATS1TM7 = (qXYSEPERATS1TM7 / ((xxAritQuadSEPERATS1TM7 * yyAritQuadSEPERATS1TM7)^0.5));
    
            rQuadSEPERATS1TM1 = ((rSEPERATS1TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1TM2 = ((rSEPERATS1TM2^2) * 100);
            rQuadSEPERATS1TM3 = ((rSEPERATS1TM3^2) * 100);
            rQuadSEPERATS1TM4 = ((rSEPERATS1TM4^2) * 100);
            rQuadSEPERATS1TM5 = ((rSEPERATS1TM5^2) * 100);
            rQuadSEPERATS1TM7 = ((rSEPERATS1TM7^2) * 100);
        
            syxSEPERATS1TM1 = (((yyAritQuadSEPERATS1TM1 - ((qXYSEPERATS1TM1^2) / xxAritQuadSEPERATS1TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM2 = (((yyAritQuadSEPERATS1TM2 - ((qXYSEPERATS1TM2^2) / xxAritQuadSEPERATS1TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM3 = (((yyAritQuadSEPERATS1TM3 - ((qXYSEPERATS1TM3^2) / xxAritQuadSEPERATS1TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM4 = (((yyAritQuadSEPERATS1TM4 - ((qXYSEPERATS1TM4^2) / xxAritQuadSEPERATS1TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM5 = (((yyAritQuadSEPERATS1TM5 - ((qXYSEPERATS1TM5^2) / xxAritQuadSEPERATS1TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM7 = (((yyAritQuadSEPERATS1TM7 - ((qXYSEPERATS1TM7^2) / xxAritQuadSEPERATS1TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1TM1 = (((syxSEPERATS1TM1^2) / xxAritQuadSEPERATS1TM1)^0.5);
            bStandSEPERATS1TM2 = (((syxSEPERATS1TM2^2) / xxAritQuadSEPERATS1TM2)^0.5);
            bStandSEPERATS1TM3 = (((syxSEPERATS1TM3^2) / xxAritQuadSEPERATS1TM3)^0.5);
            bStandSEPERATS1TM4 = (((syxSEPERATS1TM4^2) / xxAritQuadSEPERATS1TM4)^0.5);
            bStandSEPERATS1TM5 = (((syxSEPERATS1TM5^2) / xxAritQuadSEPERATS1TM5)^0.5);
            bStandSEPERATS1TM7 = (((syxSEPERATS1TM7^2) / xxAritQuadSEPERATS1TM7)^0.5);
    
            aStandSEPERATS1TM1 = (bStandSEPERATS1TM1 * ((xQuadSEPERATS1TM1 / minPifVAL)^0.5));
            aStandSEPERATS1TM2 = (bStandSEPERATS1TM2 * ((xQuadSEPERATS1TM2 / minPifVAL)^0.5));
            aStandSEPERATS1TM3 = (bStandSEPERATS1TM3 * ((xQuadSEPERATS1TM3 / minPifVAL)^0.5));
            aStandSEPERATS1TM4 = (bStandSEPERATS1TM4 * ((xQuadSEPERATS1TM4 / minPifVAL)^0.5));
            aStandSEPERATS1TM5 = (bStandSEPERATS1TM5 * ((xQuadSEPERATS1TM5 / minPifVAL)^0.5));
            aStandSEPERATS1TM7 = (bStandSEPERATS1TM7 * ((xQuadSEPERATS1TM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM1, bSEPERATS1TM1, rSEPERATS1TM1, rQuadSEPERATS1TM1, aStandSEPERATS1TM1, bStandSEPERATS1TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM2, bSEPERATS1TM2, rSEPERATS1TM2, rQuadSEPERATS1TM2, aStandSEPERATS1TM2, bStandSEPERATS1TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM3, bSEPERATS1TM3, rSEPERATS1TM3, rQuadSEPERATS1TM3, aStandSEPERATS1TM3, bStandSEPERATS1TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM4, bSEPERATS1TM4, rSEPERATS1TM4, rQuadSEPERATS1TM4, aStandSEPERATS1TM4, bStandSEPERATS1TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM5, bSEPERATS1TM5, rSEPERATS1TM5, rQuadSEPERATS1TM5, aStandSEPERATS1TM5, bStandSEPERATS1TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS1TM7, bSEPERATS1TM7, rSEPERATS1TM7, rQuadSEPERATS1TM7, aStandSEPERATS1TM7, bStandSEPERATS1TM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS1slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS1slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS1slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS1slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS1slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS1slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS1slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT1TM1[i,j] = (aSEPERATS1TM1 + (bSEPERATS1TM1 * REFS1TM1[i,j]));
                    OUT1TM2[i,j] = (aSEPERATS1TM2 + (bSEPERATS1TM2 * REFS1TM2[i,j]));
                    OUT1TM3[i,j] = (aSEPERATS1TM3 + (bSEPERATS1TM3 * REFS1TM3[i,j]));
                    OUT1TM4[i,j] = (aSEPERATS1TM4 + (bSEPERATS1TM4 * REFS1TM4[i,j]));
                    OUT1TM5[i,j] = (aSEPERATS1TM5 + (bSEPERATS1TM5 * REFS1TM5[i,j]));
                    OUT1TM7[i,j] = (aSEPERATS1TM7 + (bSEPERATS1TM7 * REFS1TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1TM1);
        	CreatePyramid(OUT1TM2);
        	CreatePyramid(OUT1TM3);
        	CreatePyramid(OUT1TM4);
        	CreatePyramid(OUT1TM5);
        	CreatePyramid(OUT1TM7);
        
        	CreateHistogram(OUT1TM1);
        	CreateHistogram(OUT1TM2);
        	CreateHistogram(OUT1TM3);
        	CreateHistogram(OUT1TM4);
        	CreateHistogram(OUT1TM5);
        	CreateHistogram(OUT1TM7);
            CloseRaster(REFS1TM1);
            CloseRaster(REFS1TM2);
            CloseRaster(REFS1TM3);
            CloseRaster(REFS1TM4);
            CloseRaster(REFS1TM5);
            CloseRaster(REFS1TM7);
    
            CloseRaster(OUT1TM1);
            CloseRaster(OUT1TM2);
            CloseRaster(OUT1TM3);
            CloseRaster(OUT1TM4);
            CloseRaster(OUT1TM5);
            CloseRaster(OUT1TM7);
        
        	printf("Scene 1 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS1MSS1, xAritSEPERATS1MSS2, xAritSEPERATS1MSS4;
            numeric yAritSEPERATS1MSS1, yAritSEPERATS1MSS2, yAritSEPERATS1MSS4;
    
            numeric aSEPERATS1MSS1, aSEPERATS1MSS2, aSEPERATS1MSS4;
            numeric bSEPERATS1MSS1, bSEPERATS1MSS2, bSEPERATS1MSS4;
            numeric rSEPERATS1MSS1, rSEPERATS1MSS2, rSEPERATS1MSS4;
            numeric rQuadSEPERATS1MSS1, rQuadSEPERATS1MSS2, rQuadSEPERATS1MSS4;
            numeric syxSEPERATS1MSS1, syxSEPERATS1MSS2, syxSEPERATS1MSS4;
            numeric bStandSEPERATS1MSS1, bStandSEPERATS1MSS2, bStandSEPERATS1MSS4;
            numeric aStandSEPERATS1MSS1, aStandSEPERATS1MSS2, aStandSEPERATS1MSS4;
    
            numeric xSEPERATS1MSS1 = 0;
            numeric xSEPERATS1MSS2 = 0;
            numeric xSEPERATS1MSS4 = 0;
    
            numeric xQuadSEPERATS1MSS1 = 0;
            numeric xQuadSEPERATS1MSS2 = 0;
            numeric xQuadSEPERATS1MSS4 = 0;
    
            numeric ySEPERATS1MSS1 = 0;
            numeric ySEPERATS1MSS2 = 0;
            numeric ySEPERATS1MSS4 = 0;
    
            numeric yQuadSEPERATS1MSS1 = 0;
            numeric yQuadSEPERATS1MSS2 = 0;
            numeric yQuadSEPERATS1MSS4 = 0;
    
            numeric xySEPERATS1MSS1 = 0;
            numeric xySEPERATS1MSS2 = 0;
            numeric xySEPERATS1MSS4 = 0;
    
            numeric xxAritQuadSEPERATS1MSS1 = 0;
            numeric xxAritQuadSEPERATS1MSS2 = 0;
            numeric xxAritQuadSEPERATS1MSS4 = 0;
    
            numeric yyAritQuadSEPERATS1MSS1 = 0;
            numeric yyAritQuadSEPERATS1MSS2 = 0;
            numeric yyAritQuadSEPERATS1MSS4 = 0;
    
            numeric qXYSEPERATS1MSS1 = 0;
            numeric qXYSEPERATS1MSS2 = 0;
            numeric qXYSEPERATS1MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1MSS1 = xSEPERATS1MSS1 + pifSEPERATS2S1TM2arrayRAND[m];
                xSEPERATS1MSS2 = xSEPERATS1MSS2 + pifSEPERATS2S1TM3arrayRAND[m];
                xSEPERATS1MSS4 = xSEPERATS1MSS4 + pifSEPERATS2S1TM4arrayRAND[m];
    
                xQuadSEPERATS1MSS1 = (xQuadSEPERATS1MSS1 + (pifSEPERATS2S1TM2arrayRAND[m]^2));
                xQuadSEPERATS1MSS2 = (xQuadSEPERATS1MSS2 + (pifSEPERATS2S1TM3arrayRAND[m]^2));
                xQuadSEPERATS1MSS4 = (xQuadSEPERATS1MSS4 + (pifSEPERATS2S1TM4arrayRAND[m]^2));
    
                ySEPERATS1MSS1 = ySEPERATS1MSS1 + pifSEPERATS1slaveMSS1arrayRAND[m];
                ySEPERATS1MSS2 = ySEPERATS1MSS2 + pifSEPERATS1slaveMSS2arrayRAND[m];
                ySEPERATS1MSS4 = ySEPERATS1MSS4 + pifSEPERATS1slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS1MSS1 = (yQuadSEPERATS1MSS1 + (pifSEPERATS1slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS1MSS2 = (yQuadSEPERATS1MSS2 + (pifSEPERATS1slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS1MSS4 = (yQuadSEPERATS1MSS4 + (pifSEPERATS1slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS1MSS1 = (xySEPERATS1MSS1 + (pifSEPERATS2S1TM2arrayRAND[m] * pifSEPERATS1slaveMSS1arrayRAND[m]));
                xySEPERATS1MSS2 = (xySEPERATS1MSS2 + (pifSEPERATS2S1TM3arrayRAND[m] * pifSEPERATS1slaveMSS2arrayRAND[m]));
                xySEPERATS1MSS4 = (xySEPERATS1MSS4 + (pifSEPERATS2S1TM4arrayRAND[m] * pifSEPERATS1slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS1MSS1 = xSEPERATS1MSS1 / minPifVAL;
            xAritSEPERATS1MSS2 = xSEPERATS1MSS2 / minPifVAL;
            xAritSEPERATS1MSS4 = xSEPERATS1MSS4 / minPifVAL;
    
            yAritSEPERATS1MSS1 = ySEPERATS1MSS1 / minPifVAL;
            yAritSEPERATS1MSS2 = ySEPERATS1MSS2 / minPifVAL;
            yAritSEPERATS1MSS4 = ySEPERATS1MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1MSS1 = (xxAritQuadSEPERATS1MSS1 + ((pifSEPERATS2S1TM2arrayRAND[n] - xAritSEPERATS1MSS1)^2));
                xxAritQuadSEPERATS1MSS2 = (xxAritQuadSEPERATS1MSS2 + ((pifSEPERATS2S1TM3arrayRAND[n] - xAritSEPERATS1MSS2)^2));
                xxAritQuadSEPERATS1MSS4 = (xxAritQuadSEPERATS1MSS4 + ((pifSEPERATS2S1TM4arrayRAND[n] - xAritSEPERATS1MSS4)^2));
    
                yyAritQuadSEPERATS1MSS1 = (yyAritQuadSEPERATS1MSS1 + ((pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)^2));
                yyAritQuadSEPERATS1MSS2 = (yyAritQuadSEPERATS1MSS2 + ((pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)^2));
                yyAritQuadSEPERATS1MSS4 = (yyAritQuadSEPERATS1MSS4 + ((pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)^2));
    
                qXYSEPERATS1MSS1 = (qXYSEPERATS1MSS1 + ((pifSEPERATS2S1TM2arrayRAND[n] - xAritSEPERATS1MSS1) * (pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)));
                qXYSEPERATS1MSS2 = (qXYSEPERATS1MSS2 + ((pifSEPERATS2S1TM3arrayRAND[n] - xAritSEPERATS1MSS2) * (pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)));
                qXYSEPERATS1MSS4 = (qXYSEPERATS1MSS4 + ((pifSEPERATS2S1TM4arrayRAND[n] - xAritSEPERATS1MSS4) * (pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)));
            }
        
            aSEPERATS1MSS1 = (((xQuadSEPERATS1MSS1 * ySEPERATS1MSS1) - (xSEPERATS1MSS1 * xySEPERATS1MSS1)) / ((minPifVAL * xQuadSEPERATS1MSS1) - (xSEPERATS1MSS1^2)));
            aSEPERATS1MSS2 = (((xQuadSEPERATS1MSS2 * ySEPERATS1MSS2) - (xSEPERATS1MSS2 * xySEPERATS1MSS2)) / ((minPifVAL * xQuadSEPERATS1MSS2) - (xSEPERATS1MSS2^2)));
            aSEPERATS1MSS4 = (((xQuadSEPERATS1MSS4 * ySEPERATS1MSS4) - (xSEPERATS1MSS4 * xySEPERATS1MSS4)) / ((minPifVAL * xQuadSEPERATS1MSS4) - (xSEPERATS1MSS4^2)));
            
            bSEPERATS1MSS1 = qXYSEPERATS1MSS1 / xxAritQuadSEPERATS1MSS1;
            bSEPERATS1MSS2 = qXYSEPERATS1MSS2 / xxAritQuadSEPERATS1MSS2;
            bSEPERATS1MSS4 = qXYSEPERATS1MSS4 / xxAritQuadSEPERATS1MSS4;
    
            rSEPERATS1MSS1 = (qXYSEPERATS1MSS1 / ((xxAritQuadSEPERATS1MSS1 * yyAritQuadSEPERATS1MSS1)^0.5));
            rSEPERATS1MSS2 = (qXYSEPERATS1MSS2 / ((xxAritQuadSEPERATS1MSS2 * yyAritQuadSEPERATS1MSS2)^0.5));
            rSEPERATS1MSS4 = (qXYSEPERATS1MSS4 / ((xxAritQuadSEPERATS1MSS4 * yyAritQuadSEPERATS1MSS4)^0.5));
    
            rQuadSEPERATS1MSS1 = ((rSEPERATS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1MSS2 = ((rSEPERATS1MSS2^2) * 100);
            rQuadSEPERATS1MSS4 = ((rSEPERATS1MSS4^2) * 100);
        
            syxSEPERATS1MSS1 = (((yyAritQuadSEPERATS1MSS1 - ((qXYSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS2 = (((yyAritQuadSEPERATS1MSS2 - ((qXYSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS4 = (((yyAritQuadSEPERATS1MSS4 - ((qXYSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1MSS1 = (((syxSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)^0.5);
            bStandSEPERATS1MSS2 = (((syxSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)^0.5);
            bStandSEPERATS1MSS4 = (((syxSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)^0.5);
    
            aStandSEPERATS1MSS1 = (bStandSEPERATS1MSS1 * ((xQuadSEPERATS1MSS1 / minPifVAL)^0.5));
            aStandSEPERATS1MSS2 = (bStandSEPERATS1MSS2 * ((xQuadSEPERATS1MSS2 / minPifVAL)^0.5));
            aStandSEPERATS1MSS4 = (bStandSEPERATS1MSS4 * ((xQuadSEPERATS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS1, bSEPERATS1MSS1, rSEPERATS1MSS1, rQuadSEPERATS1MSS1, aStandSEPERATS1MSS1, bStandSEPERATS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS2, bSEPERATS1MSS2, rSEPERATS1MSS2, rQuadSEPERATS1MSS2, aStandSEPERATS1MSS2, bStandSEPERATS1MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS4, bSEPERATS1MSS4, rSEPERATS1MSS4, rQuadSEPERATS1MSS4, aStandSEPERATS1MSS4, bStandSEPERATS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS1slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS1slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS1slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aSEPERATS1MSS1 + (bSEPERATS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aSEPERATS1MSS2 + (bSEPERATS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = REFS1MSS3[i,j];
                    OUT1MSS4[i,j] = (aSEPERATS1MSS4 + (bSEPERATS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT1MSS1);
            CreatePyramid(OUT1MSS2);
            CreatePyramid(OUT1MSS3);
            CreatePyramid(OUT1MSS4);
        
            CreateHistogram(OUT1MSS1);
            CreateHistogram(OUT1MSS2);
            CreateHistogram(OUT1MSS3);
            CreateHistogram(OUT1MSS4);
            
            CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors3 == 7 )
            {
            numeric xAritSEPERATS3ETM1, xAritSEPERATS3ETM2, xAritSEPERATS3ETM3, xAritSEPERATS3ETM4, xAritSEPERATS3ETM5, xAritSEPERATS3ETM7;
            numeric yAritSEPERATS3ETM1, yAritSEPERATS3ETM2, yAritSEPERATS3ETM3, yAritSEPERATS3ETM4, yAritSEPERATS3ETM5, yAritSEPERATS3ETM7;
    
            numeric aSEPERATS3ETM1, aSEPERATS3ETM2, aSEPERATS3ETM3, aSEPERATS3ETM4, aSEPERATS3ETM5, aSEPERATS3ETM7;
            numeric bSEPERATS3ETM1, bSEPERATS3ETM2, bSEPERATS3ETM3, bSEPERATS3ETM4, bSEPERATS3ETM5, bSEPERATS3ETM7;
            numeric rSEPERATS3ETM1, rSEPERATS3ETM2, rSEPERATS3ETM3, rSEPERATS3ETM4, rSEPERATS3ETM5, rSEPERATS3ETM7;
            numeric rQuadSEPERATS3ETM1, rQuadSEPERATS3ETM2, rQuadSEPERATS3ETM3, rQuadSEPERATS3ETM4, rQuadSEPERATS3ETM5, rQuadSEPERATS3ETM7;
            numeric syxSEPERATS3ETM1, syxSEPERATS3ETM2, syxSEPERATS3ETM3, syxSEPERATS3ETM4, syxSEPERATS3ETM5, syxSEPERATS3ETM7;
            numeric bStandSEPERATS3ETM1, bStandSEPERATS3ETM2, bStandSEPERATS3ETM3, bStandSEPERATS3ETM4, bStandSEPERATS3ETM5, bStandSEPERATS3ETM7;
            numeric aStandSEPERATS3ETM1, aStandSEPERATS3ETM2, aStandSEPERATS3ETM3, aStandSEPERATS3ETM4, aStandSEPERATS3ETM5, aStandSEPERATS3ETM7;
    
            numeric xSEPERATS3ETM1 = 0;
            numeric xSEPERATS3ETM2 = 0;
            numeric xSEPERATS3ETM3 = 0;
            numeric xSEPERATS3ETM4 = 0;
            numeric xSEPERATS3ETM5 = 0;
            numeric xSEPERATS3ETM7 = 0;
    
            numeric xQuadSEPERATS3ETM1 = 0;
            numeric xQuadSEPERATS3ETM2 = 0;
            numeric xQuadSEPERATS3ETM3 = 0;
            numeric xQuadSEPERATS3ETM4 = 0;
            numeric xQuadSEPERATS3ETM5 = 0;
            numeric xQuadSEPERATS3ETM7 = 0;
    
            numeric ySEPERATS3ETM1 = 0;
            numeric ySEPERATS3ETM2 = 0;
            numeric ySEPERATS3ETM3 = 0;
            numeric ySEPERATS3ETM4 = 0;
            numeric ySEPERATS3ETM5 = 0;
            numeric ySEPERATS3ETM7 = 0;
    
            numeric yQuadSEPERATS3ETM1 = 0;
            numeric yQuadSEPERATS3ETM2 = 0;
            numeric yQuadSEPERATS3ETM3 = 0;
            numeric yQuadSEPERATS3ETM4 = 0;
            numeric yQuadSEPERATS3ETM5 = 0;
            numeric yQuadSEPERATS3ETM7 = 0;
    
            numeric xySEPERATS3ETM1 = 0;
            numeric xySEPERATS3ETM2 = 0;
            numeric xySEPERATS3ETM3 = 0;
            numeric xySEPERATS3ETM4 = 0;
            numeric xySEPERATS3ETM5 = 0;
            numeric xySEPERATS3ETM7 = 0;
    
            numeric xxAritQuadSEPERATS3ETM1 = 0;
            numeric xxAritQuadSEPERATS3ETM2 = 0;
            numeric xxAritQuadSEPERATS3ETM3 = 0;
            numeric xxAritQuadSEPERATS3ETM4 = 0;
            numeric xxAritQuadSEPERATS3ETM5 = 0;
            numeric xxAritQuadSEPERATS3ETM7 = 0;
    
            numeric yyAritQuadSEPERATS3ETM1 = 0;
            numeric yyAritQuadSEPERATS3ETM2 = 0;
            numeric yyAritQuadSEPERATS3ETM3 = 0;
            numeric yyAritQuadSEPERATS3ETM4 = 0;
            numeric yyAritQuadSEPERATS3ETM5 = 0;
            numeric yyAritQuadSEPERATS3ETM7 = 0;
    
            numeric qXYSEPERATS3ETM1 = 0;
            numeric qXYSEPERATS3ETM2 = 0;
            numeric qXYSEPERATS3ETM3 = 0;
            numeric qXYSEPERATS3ETM4 = 0;
            numeric qXYSEPERATS3ETM5 = 0;
            numeric qXYSEPERATS3ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS3ETM1 = xSEPERATS3ETM1 + pifSEPERATS2S3TM1arrayRAND[m];
                xSEPERATS3ETM2 = xSEPERATS3ETM2 + pifSEPERATS2S3TM2arrayRAND[m];
                xSEPERATS3ETM3 = xSEPERATS3ETM3 + pifSEPERATS2S3TM3arrayRAND[m];
                xSEPERATS3ETM4 = xSEPERATS3ETM4 + pifSEPERATS2S3TM4arrayRAND[m];
                xSEPERATS3ETM5 = xSEPERATS3ETM5 + pifSEPERATS2S3TM5arrayRAND[m];
                xSEPERATS3ETM7 = xSEPERATS3ETM7 + pifSEPERATS2S3TM7arrayRAND[m];
    
                xQuadSEPERATS3ETM1 = (xQuadSEPERATS3ETM1 + (pifSEPERATS2S3TM1arrayRAND[m]^2));
                xQuadSEPERATS3ETM2 = (xQuadSEPERATS3ETM2 + (pifSEPERATS2S3TM2arrayRAND[m]^2));
                xQuadSEPERATS3ETM3 = (xQuadSEPERATS3ETM3 + (pifSEPERATS2S3TM3arrayRAND[m]^2));
                xQuadSEPERATS3ETM4 = (xQuadSEPERATS3ETM4 + (pifSEPERATS2S3TM4arrayRAND[m]^2));
                xQuadSEPERATS3ETM5 = (xQuadSEPERATS3ETM5 + (pifSEPERATS2S3TM5arrayRAND[m]^2));
                xQuadSEPERATS3ETM7 = (xQuadSEPERATS3ETM7 + (pifSEPERATS2S3TM7arrayRAND[m]^2));
    
                ySEPERATS3ETM1 = ySEPERATS3ETM1 + pifSEPERATS3slaveETM1arrayRAND[m];
                ySEPERATS3ETM2 = ySEPERATS3ETM2 + pifSEPERATS3slaveETM2arrayRAND[m];
                ySEPERATS3ETM3 = ySEPERATS3ETM3 + pifSEPERATS3slaveETM3arrayRAND[m];
                ySEPERATS3ETM4 = ySEPERATS3ETM4 + pifSEPERATS3slaveETM4arrayRAND[m];
                ySEPERATS3ETM5 = ySEPERATS3ETM5 + pifSEPERATS3slaveETM5arrayRAND[m];
                ySEPERATS3ETM7 = ySEPERATS3ETM7 + pifSEPERATS3slaveETM7arrayRAND[m];
                
                yQuadSEPERATS3ETM1 = (yQuadSEPERATS3ETM1 + (pifSEPERATS3slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS3ETM2 = (yQuadSEPERATS3ETM2 + (pifSEPERATS3slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS3ETM3 = (yQuadSEPERATS3ETM3 + (pifSEPERATS3slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS3ETM4 = (yQuadSEPERATS3ETM4 + (pifSEPERATS3slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS3ETM5 = (yQuadSEPERATS3ETM5 + (pifSEPERATS3slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS3ETM7 = (yQuadSEPERATS3ETM7 + (pifSEPERATS3slaveETM7arrayRAND[m]^2));
    
                xySEPERATS3ETM1 = (xySEPERATS3ETM1 + (pifSEPERATS2S3TM1arrayRAND[m] * pifSEPERATS3slaveETM1arrayRAND[m]));
                xySEPERATS3ETM2 = (xySEPERATS3ETM2 + (pifSEPERATS2S3TM2arrayRAND[m] * pifSEPERATS3slaveETM2arrayRAND[m]));
                xySEPERATS3ETM3 = (xySEPERATS3ETM3 + (pifSEPERATS2S3TM3arrayRAND[m] * pifSEPERATS3slaveETM3arrayRAND[m]));
                xySEPERATS3ETM4 = (xySEPERATS3ETM4 + (pifSEPERATS2S3TM4arrayRAND[m] * pifSEPERATS3slaveETM4arrayRAND[m]));
                xySEPERATS3ETM5 = (xySEPERATS3ETM5 + (pifSEPERATS2S3TM5arrayRAND[m] * pifSEPERATS3slaveETM5arrayRAND[m]));
                xySEPERATS3ETM7 = (xySEPERATS3ETM7 + (pifSEPERATS2S3TM7arrayRAND[m] * pifSEPERATS3slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS3ETM1 = xSEPERATS3ETM1 / minPifVAL;
            xAritSEPERATS3ETM2 = xSEPERATS3ETM2 / minPifVAL;
            xAritSEPERATS3ETM3 = xSEPERATS3ETM3 / minPifVAL;
            xAritSEPERATS3ETM4 = xSEPERATS3ETM4 / minPifVAL;
            xAritSEPERATS3ETM5 = xSEPERATS3ETM5 / minPifVAL;
            xAritSEPERATS3ETM7 = xSEPERATS3ETM7 / minPifVAL;
    
            yAritSEPERATS3ETM1 = ySEPERATS3ETM1 / minPifVAL;
            yAritSEPERATS3ETM2 = ySEPERATS3ETM2 / minPifVAL;
            yAritSEPERATS3ETM3 = ySEPERATS3ETM3 / minPifVAL;
            yAritSEPERATS3ETM4 = ySEPERATS3ETM4 / minPifVAL;
            yAritSEPERATS3ETM5 = ySEPERATS3ETM5 / minPifVAL;
            yAritSEPERATS3ETM7 = ySEPERATS3ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3ETM1 = (xxAritQuadSEPERATS3ETM1 + ((pifSEPERATS2S3TM1arrayRAND[n] - xAritSEPERATS3ETM1)^2));
                xxAritQuadSEPERATS3ETM2 = (xxAritQuadSEPERATS3ETM2 + ((pifSEPERATS2S3TM2arrayRAND[n] - xAritSEPERATS3ETM2)^2));
                xxAritQuadSEPERATS3ETM3 = (xxAritQuadSEPERATS3ETM3 + ((pifSEPERATS2S3TM3arrayRAND[n] - xAritSEPERATS3ETM3)^2));
                xxAritQuadSEPERATS3ETM4 = (xxAritQuadSEPERATS3ETM4 + ((pifSEPERATS2S3TM4arrayRAND[n] - xAritSEPERATS3ETM4)^2));
                xxAritQuadSEPERATS3ETM5 = (xxAritQuadSEPERATS3ETM5 + ((pifSEPERATS2S3TM5arrayRAND[n] - xAritSEPERATS3ETM5)^2));
                xxAritQuadSEPERATS3ETM7 = (xxAritQuadSEPERATS3ETM7 + ((pifSEPERATS2S3TM7arrayRAND[n] - xAritSEPERATS3ETM7)^2));
    
                yyAritQuadSEPERATS3ETM1 = (yyAritQuadSEPERATS3ETM1 + ((pifSEPERATS3slaveETM1arrayRAND[n] - yAritSEPERATS3ETM1)^2));
                yyAritQuadSEPERATS3ETM2 = (yyAritQuadSEPERATS3ETM2 + ((pifSEPERATS3slaveETM2arrayRAND[n] - yAritSEPERATS3ETM2)^2));
                yyAritQuadSEPERATS3ETM3 = (yyAritQuadSEPERATS3ETM3 + ((pifSEPERATS3slaveETM3arrayRAND[n] - yAritSEPERATS3ETM3)^2));
                yyAritQuadSEPERATS3ETM4 = (yyAritQuadSEPERATS3ETM4 + ((pifSEPERATS3slaveETM4arrayRAND[n] - yAritSEPERATS3ETM4)^2));
                yyAritQuadSEPERATS3ETM5 = (yyAritQuadSEPERATS3ETM5 + ((pifSEPERATS3slaveETM5arrayRAND[n] - yAritSEPERATS3ETM5)^2));
                yyAritQuadSEPERATS3ETM7 = (yyAritQuadSEPERATS3ETM7 + ((pifSEPERATS3slaveETM7arrayRAND[n] - yAritSEPERATS3ETM7)^2));
    
                qXYSEPERATS3ETM1 = (qXYSEPERATS3ETM1 + ((pifSEPERATS2S3TM1arrayRAND[n] - xAritSEPERATS3ETM1) * (pifSEPERATS3slaveETM1arrayRAND[n] - yAritSEPERATS3ETM1)));
                qXYSEPERATS3ETM2 = (qXYSEPERATS3ETM2 + ((pifSEPERATS2S3TM2arrayRAND[n] - xAritSEPERATS3ETM2) * (pifSEPERATS3slaveETM2arrayRAND[n] - yAritSEPERATS3ETM2)));
                qXYSEPERATS3ETM3 = (qXYSEPERATS3ETM3 + ((pifSEPERATS2S3TM3arrayRAND[n] - xAritSEPERATS3ETM3) * (pifSEPERATS3slaveETM3arrayRAND[n] - yAritSEPERATS3ETM3)));
                qXYSEPERATS3ETM4 = (qXYSEPERATS3ETM4 + ((pifSEPERATS2S3TM4arrayRAND[n] - xAritSEPERATS3ETM4) * (pifSEPERATS3slaveETM4arrayRAND[n] - yAritSEPERATS3ETM4)));
                qXYSEPERATS3ETM5 = (qXYSEPERATS3ETM5 + ((pifSEPERATS2S3TM5arrayRAND[n] - xAritSEPERATS3ETM5) * (pifSEPERATS3slaveETM5arrayRAND[n] - yAritSEPERATS3ETM5)));
                qXYSEPERATS3ETM7 = (qXYSEPERATS3ETM7 + ((pifSEPERATS2S3TM7arrayRAND[n] - xAritSEPERATS3ETM7) * (pifSEPERATS3slaveETM7arrayRAND[n] - yAritSEPERATS3ETM7)));
            }
        
            aSEPERATS3ETM1 = (((xQuadSEPERATS3ETM1 * ySEPERATS3ETM1) - (xSEPERATS3ETM1 * xySEPERATS3ETM1)) / ((minPifVAL * xQuadSEPERATS3ETM1) - (xSEPERATS3ETM1^2)));
            aSEPERATS3ETM2 = (((xQuadSEPERATS3ETM2 * ySEPERATS3ETM2) - (xSEPERATS3ETM2 * xySEPERATS3ETM2)) / ((minPifVAL * xQuadSEPERATS3ETM2) - (xSEPERATS3ETM2^2)));
            aSEPERATS3ETM3 = (((xQuadSEPERATS3ETM3 * ySEPERATS3ETM3) - (xSEPERATS3ETM3 * xySEPERATS3ETM3)) / ((minPifVAL * xQuadSEPERATS3ETM3) - (xSEPERATS3ETM3^2)));
            aSEPERATS3ETM4 = (((xQuadSEPERATS3ETM4 * ySEPERATS3ETM4) - (xSEPERATS3ETM4 * xySEPERATS3ETM4)) / ((minPifVAL * xQuadSEPERATS3ETM4) - (xSEPERATS3ETM4^2)));
            aSEPERATS3ETM5 = (((xQuadSEPERATS3ETM5 * ySEPERATS3ETM5) - (xSEPERATS3ETM5 * xySEPERATS3ETM5)) / ((minPifVAL * xQuadSEPERATS3ETM5) - (xSEPERATS3ETM5^2)));
            aSEPERATS3ETM7 = (((xQuadSEPERATS3ETM7 * ySEPERATS3ETM7) - (xSEPERATS3ETM7 * xySEPERATS3ETM7)) / ((minPifVAL * xQuadSEPERATS3ETM7) - (xSEPERATS3ETM7^2)));
            
            bSEPERATS3ETM1 = qXYSEPERATS3ETM1 / xxAritQuadSEPERATS3ETM1;
            bSEPERATS3ETM2 = qXYSEPERATS3ETM2 / xxAritQuadSEPERATS3ETM2;
            bSEPERATS3ETM3 = qXYSEPERATS3ETM3 / xxAritQuadSEPERATS3ETM3;
            bSEPERATS3ETM4 = qXYSEPERATS3ETM4 / xxAritQuadSEPERATS3ETM4;
            bSEPERATS3ETM5 = qXYSEPERATS3ETM5 / xxAritQuadSEPERATS3ETM5;
            bSEPERATS3ETM7 = qXYSEPERATS3ETM7 / xxAritQuadSEPERATS3ETM7;
    
            rSEPERATS3ETM1 = (qXYSEPERATS3ETM1 / ((xxAritQuadSEPERATS3ETM1 * yyAritQuadSEPERATS3ETM1)^0.5));
            rSEPERATS3ETM2 = (qXYSEPERATS3ETM2 / ((xxAritQuadSEPERATS3ETM2 * yyAritQuadSEPERATS3ETM2)^0.5));
            rSEPERATS3ETM3 = (qXYSEPERATS3ETM3 / ((xxAritQuadSEPERATS3ETM3 * yyAritQuadSEPERATS3ETM3)^0.5));
            rSEPERATS3ETM4 = (qXYSEPERATS3ETM4 / ((xxAritQuadSEPERATS3ETM4 * yyAritQuadSEPERATS3ETM4)^0.5));
            rSEPERATS3ETM5 = (qXYSEPERATS3ETM5 / ((xxAritQuadSEPERATS3ETM5 * yyAritQuadSEPERATS3ETM5)^0.5));
            rSEPERATS3ETM7 = (qXYSEPERATS3ETM7 / ((xxAritQuadSEPERATS3ETM7 * yyAritQuadSEPERATS3ETM7)^0.5));
    
            rQuadSEPERATS3ETM1 = ((rSEPERATS3ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3ETM2 = ((rSEPERATS3ETM2^2) * 100);
            rQuadSEPERATS3ETM3 = ((rSEPERATS3ETM3^2) * 100);
            rQuadSEPERATS3ETM4 = ((rSEPERATS3ETM4^2) * 100);
            rQuadSEPERATS3ETM5 = ((rSEPERATS3ETM5^2) * 100);
            rQuadSEPERATS3ETM7 = ((rSEPERATS3ETM7^2) * 100);
        
            syxSEPERATS3ETM1 = (((yyAritQuadSEPERATS3ETM1 - ((qXYSEPERATS3ETM1^2) / xxAritQuadSEPERATS3ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM2 = (((yyAritQuadSEPERATS3ETM2 - ((qXYSEPERATS3ETM2^2) / xxAritQuadSEPERATS3ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM3 = (((yyAritQuadSEPERATS3ETM3 - ((qXYSEPERATS3ETM3^2) / xxAritQuadSEPERATS3ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM4 = (((yyAritQuadSEPERATS3ETM4 - ((qXYSEPERATS3ETM4^2) / xxAritQuadSEPERATS3ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM5 = (((yyAritQuadSEPERATS3ETM5 - ((qXYSEPERATS3ETM5^2) / xxAritQuadSEPERATS3ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM7 = (((yyAritQuadSEPERATS3ETM7 - ((qXYSEPERATS3ETM7^2) / xxAritQuadSEPERATS3ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3ETM1 = (((syxSEPERATS3ETM1^2) / xxAritQuadSEPERATS3ETM1)^0.5);
            bStandSEPERATS3ETM2 = (((syxSEPERATS3ETM2^2) / xxAritQuadSEPERATS3ETM2)^0.5);
            bStandSEPERATS3ETM3 = (((syxSEPERATS3ETM3^2) / xxAritQuadSEPERATS3ETM3)^0.5);
            bStandSEPERATS3ETM4 = (((syxSEPERATS3ETM4^2) / xxAritQuadSEPERATS3ETM4)^0.5);
            bStandSEPERATS3ETM5 = (((syxSEPERATS3ETM5^2) / xxAritQuadSEPERATS3ETM5)^0.5);
            bStandSEPERATS3ETM7 = (((syxSEPERATS3ETM7^2) / xxAritQuadSEPERATS3ETM7)^0.5);
    
            aStandSEPERATS3ETM1 = (bStandSEPERATS3ETM1 * ((xQuadSEPERATS3ETM1 / minPifVAL)^0.5));
            aStandSEPERATS3ETM2 = (bStandSEPERATS3ETM2 * ((xQuadSEPERATS3ETM2 / minPifVAL)^0.5));
            aStandSEPERATS3ETM3 = (bStandSEPERATS3ETM3 * ((xQuadSEPERATS3ETM3 / minPifVAL)^0.5));
            aStandSEPERATS3ETM4 = (bStandSEPERATS3ETM4 * ((xQuadSEPERATS3ETM4 / minPifVAL)^0.5));
            aStandSEPERATS3ETM5 = (bStandSEPERATS3ETM5 * ((xQuadSEPERATS3ETM5 / minPifVAL)^0.5));
            aStandSEPERATS3ETM7 = (bStandSEPERATS3ETM7 * ((xQuadSEPERATS3ETM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM1, bSEPERATS3ETM1, rSEPERATS3ETM1, rQuadSEPERATS3ETM1, aStandSEPERATS3ETM1, bStandSEPERATS3ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM2, bSEPERATS3ETM2, rSEPERATS3ETM2, rQuadSEPERATS3ETM2, aStandSEPERATS3ETM2, bStandSEPERATS3ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM3, bSEPERATS3ETM3, rSEPERATS3ETM3, rQuadSEPERATS3ETM3, aStandSEPERATS3ETM3, bStandSEPERATS3ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM4, bSEPERATS3ETM4, rSEPERATS3ETM4, rQuadSEPERATS3ETM4, aStandSEPERATS3ETM4, bStandSEPERATS3ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM5, bSEPERATS3ETM5, rSEPERATS3ETM5, rQuadSEPERATS3ETM5, aStandSEPERATS3ETM5, bStandSEPERATS3ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS3ETM7, bSEPERATS3ETM7, rSEPERATS3ETM7, rQuadSEPERATS3ETM7, aStandSEPERATS3ETM7, bStandSEPERATS3ETM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS3slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS3slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS3slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS3slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS3slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS3slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS3slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT3ETM1[i,j] = (aSEPERATS3ETM1 + (bSEPERATS3ETM1 * REFS3ETM1[i,j]));
                    OUT3ETM2[i,j] = (aSEPERATS3ETM2 + (bSEPERATS3ETM2 * REFS3ETM2[i,j]));
                    OUT3ETM3[i,j] = (aSEPERATS3ETM3 + (bSEPERATS3ETM3 * REFS3ETM3[i,j]));
                    OUT3ETM4[i,j] = (aSEPERATS3ETM4 + (bSEPERATS3ETM4 * REFS3ETM4[i,j]));
                    OUT3ETM5[i,j] = (aSEPERATS3ETM5 + (bSEPERATS3ETM5 * REFS3ETM5[i,j]));
                    OUT3ETM7[i,j] = (aSEPERATS3ETM7 + (bSEPERATS3ETM7 * REFS3ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3ETM1);
        	CreatePyramid(OUT3ETM2);
        	CreatePyramid(OUT3ETM3);
        	CreatePyramid(OUT3ETM4);
        	CreatePyramid(OUT3ETM5);
        	CreatePyramid(OUT3ETM7);
        
        	CreateHistogram(OUT3ETM1);
        	CreateHistogram(OUT3ETM2);
        	CreateHistogram(OUT3ETM3);
        	CreateHistogram(OUT3ETM4);
        	CreateHistogram(OUT3ETM5);
        	CreateHistogram(OUT3ETM7);
            CloseRaster(REFS3ETM1);
            CloseRaster(REFS3ETM2);
            CloseRaster(REFS3ETM3);
            CloseRaster(REFS3ETM4);
            CloseRaster(REFS3ETM5);
            CloseRaster(REFS3ETM7);
    
            CloseRaster(OUT3ETM1);
            CloseRaster(OUT3ETM2);
            CloseRaster(OUT3ETM3);
            CloseRaster(OUT3ETM4);
            CloseRaster(OUT3ETM5);
            CloseRaster(OUT3ETM7);
            
        	printf("Scene 3 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors3 == 6 )
            {
            numeric xAritSEPERATS3TM1, xAritSEPERATS3TM2, xAritSEPERATS3TM3, xAritSEPERATS3TM4, xAritSEPERATS3TM5, xAritSEPERATS3TM7;
            numeric yAritSEPERATS3TM1, yAritSEPERATS3TM2, yAritSEPERATS3TM3, yAritSEPERATS3TM4, yAritSEPERATS3TM5, yAritSEPERATS3TM7;
    
            numeric aSEPERATS3TM1, aSEPERATS3TM2, aSEPERATS3TM3, aSEPERATS3TM4, aSEPERATS3TM5, aSEPERATS3TM7;
            numeric bSEPERATS3TM1, bSEPERATS3TM2, bSEPERATS3TM3, bSEPERATS3TM4, bSEPERATS3TM5, bSEPERATS3TM7;
            numeric rSEPERATS3TM1, rSEPERATS3TM2, rSEPERATS3TM3, rSEPERATS3TM4, rSEPERATS3TM5, rSEPERATS3TM7;
            numeric rQuadSEPERATS3TM1, rQuadSEPERATS3TM2, rQuadSEPERATS3TM3, rQuadSEPERATS3TM4, rQuadSEPERATS3TM5, rQuadSEPERATS3TM7;
            numeric syxSEPERATS3TM1, syxSEPERATS3TM2, syxSEPERATS3TM3, syxSEPERATS3TM4, syxSEPERATS3TM5, syxSEPERATS3TM7;
            numeric bStandSEPERATS3TM1, bStandSEPERATS3TM2, bStandSEPERATS3TM3, bStandSEPERATS3TM4, bStandSEPERATS3TM5, bStandSEPERATS3TM7;
            numeric aStandSEPERATS3TM1, aStandSEPERATS3TM2, aStandSEPERATS3TM3, aStandSEPERATS3TM4, aStandSEPERATS3TM5, aStandSEPERATS3TM7;
    
            numeric xSEPERATS3TM1 = 0;
            numeric xSEPERATS3TM2 = 0;
            numeric xSEPERATS3TM3 = 0;
            numeric xSEPERATS3TM4 = 0;
            numeric xSEPERATS3TM5 = 0;
            numeric xSEPERATS3TM7 = 0;
    
            numeric xQuadSEPERATS3TM1 = 0;
            numeric xQuadSEPERATS3TM2 = 0;
            numeric xQuadSEPERATS3TM3 = 0;
            numeric xQuadSEPERATS3TM4 = 0;
            numeric xQuadSEPERATS3TM5 = 0;
            numeric xQuadSEPERATS3TM7 = 0;
    
            numeric ySEPERATS3TM1 = 0;
            numeric ySEPERATS3TM2 = 0;
            numeric ySEPERATS3TM3 = 0;
            numeric ySEPERATS3TM4 = 0;
            numeric ySEPERATS3TM5 = 0;
            numeric ySEPERATS3TM7 = 0;
    
            numeric yQuadSEPERATS3TM1 = 0;
            numeric yQuadSEPERATS3TM2 = 0;
            numeric yQuadSEPERATS3TM3 = 0;
            numeric yQuadSEPERATS3TM4 = 0;
            numeric yQuadSEPERATS3TM5 = 0;
            numeric yQuadSEPERATS3TM7 = 0;
    
            numeric xySEPERATS3TM1 = 0;
            numeric xySEPERATS3TM2 = 0;
            numeric xySEPERATS3TM3 = 0;
            numeric xySEPERATS3TM4 = 0;
            numeric xySEPERATS3TM5 = 0;
            numeric xySEPERATS3TM7 = 0;
    
            numeric xxAritQuadSEPERATS3TM1 = 0;
            numeric xxAritQuadSEPERATS3TM2 = 0;
            numeric xxAritQuadSEPERATS3TM3 = 0;
            numeric xxAritQuadSEPERATS3TM4 = 0;
            numeric xxAritQuadSEPERATS3TM5 = 0;
            numeric xxAritQuadSEPERATS3TM7 = 0;
    
            numeric yyAritQuadSEPERATS3TM1 = 0;
            numeric yyAritQuadSEPERATS3TM2 = 0;
            numeric yyAritQuadSEPERATS3TM3 = 0;
            numeric yyAritQuadSEPERATS3TM4 = 0;
            numeric yyAritQuadSEPERATS3TM5 = 0;
            numeric yyAritQuadSEPERATS3TM7 = 0;
    
            numeric qXYSEPERATS3TM1 = 0;
            numeric qXYSEPERATS3TM2 = 0;
            numeric qXYSEPERATS3TM3 = 0;
            numeric qXYSEPERATS3TM4 = 0;
            numeric qXYSEPERATS3TM5 = 0;
            numeric qXYSEPERATS3TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS3TM1 = xSEPERATS3TM1 + pifSEPERATS2S3TM1arrayRAND[m];
                xSEPERATS3TM2 = xSEPERATS3TM2 + pifSEPERATS2S3TM2arrayRAND[m];
                xSEPERATS3TM3 = xSEPERATS3TM3 + pifSEPERATS2S3TM3arrayRAND[m];
                xSEPERATS3TM4 = xSEPERATS3TM4 + pifSEPERATS2S3TM4arrayRAND[m];
                xSEPERATS3TM5 = xSEPERATS3TM5 + pifSEPERATS2S3TM5arrayRAND[m];
                xSEPERATS3TM7 = xSEPERATS3TM7 + pifSEPERATS2S3TM7arrayRAND[m];
    
                xQuadSEPERATS3TM1 = (xQuadSEPERATS3TM1 + (pifSEPERATS2S3TM1arrayRAND[m]^2));
                xQuadSEPERATS3TM2 = (xQuadSEPERATS3TM2 + (pifSEPERATS2S3TM2arrayRAND[m]^2));
                xQuadSEPERATS3TM3 = (xQuadSEPERATS3TM3 + (pifSEPERATS2S3TM3arrayRAND[m]^2));
                xQuadSEPERATS3TM4 = (xQuadSEPERATS3TM4 + (pifSEPERATS2S3TM4arrayRAND[m]^2));
                xQuadSEPERATS3TM5 = (xQuadSEPERATS3TM5 + (pifSEPERATS2S3TM5arrayRAND[m]^2));
                xQuadSEPERATS3TM7 = (xQuadSEPERATS3TM7 + (pifSEPERATS2S3TM7arrayRAND[m]^2));
    
                ySEPERATS3TM1 = ySEPERATS3TM1 + pifSEPERATS3slaveTM1arrayRAND[m];
                ySEPERATS3TM2 = ySEPERATS3TM2 + pifSEPERATS3slaveTM2arrayRAND[m];
                ySEPERATS3TM3 = ySEPERATS3TM3 + pifSEPERATS3slaveTM3arrayRAND[m];
                ySEPERATS3TM4 = ySEPERATS3TM4 + pifSEPERATS3slaveTM4arrayRAND[m];
                ySEPERATS3TM5 = ySEPERATS3TM5 + pifSEPERATS3slaveTM5arrayRAND[m];
                ySEPERATS3TM7 = ySEPERATS3TM7 + pifSEPERATS3slaveTM7arrayRAND[m];
                
                yQuadSEPERATS3TM1 = (yQuadSEPERATS3TM1 + (pifSEPERATS3slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS3TM2 = (yQuadSEPERATS3TM2 + (pifSEPERATS3slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS3TM3 = (yQuadSEPERATS3TM3 + (pifSEPERATS3slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS3TM4 = (yQuadSEPERATS3TM4 + (pifSEPERATS3slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS3TM5 = (yQuadSEPERATS3TM5 + (pifSEPERATS3slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS3TM7 = (yQuadSEPERATS3TM7 + (pifSEPERATS3slaveTM7arrayRAND[m]^2));
    
                xySEPERATS3TM1 = (xySEPERATS3TM1 + (pifSEPERATS2S3TM1arrayRAND[m] * pifSEPERATS3slaveTM1arrayRAND[m]));
                xySEPERATS3TM2 = (xySEPERATS3TM2 + (pifSEPERATS2S3TM2arrayRAND[m] * pifSEPERATS3slaveTM2arrayRAND[m]));
                xySEPERATS3TM3 = (xySEPERATS3TM3 + (pifSEPERATS2S3TM3arrayRAND[m] * pifSEPERATS3slaveTM3arrayRAND[m]));
                xySEPERATS3TM4 = (xySEPERATS3TM4 + (pifSEPERATS2S3TM4arrayRAND[m] * pifSEPERATS3slaveTM4arrayRAND[m]));
                xySEPERATS3TM5 = (xySEPERATS3TM5 + (pifSEPERATS2S3TM5arrayRAND[m] * pifSEPERATS3slaveTM5arrayRAND[m]));
                xySEPERATS3TM7 = (xySEPERATS3TM7 + (pifSEPERATS2S3TM7arrayRAND[m] * pifSEPERATS3slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS3TM1 = xSEPERATS3TM1 / minPifVAL;
            xAritSEPERATS3TM2 = xSEPERATS3TM2 / minPifVAL;
            xAritSEPERATS3TM3 = xSEPERATS3TM3 / minPifVAL;
            xAritSEPERATS3TM4 = xSEPERATS3TM4 / minPifVAL;
            xAritSEPERATS3TM5 = xSEPERATS3TM5 / minPifVAL;
            xAritSEPERATS3TM7 = xSEPERATS3TM7 / minPifVAL;
    
            yAritSEPERATS3TM1 = ySEPERATS3TM1 / minPifVAL;
            yAritSEPERATS3TM2 = ySEPERATS3TM2 / minPifVAL;
            yAritSEPERATS3TM3 = ySEPERATS3TM3 / minPifVAL;
            yAritSEPERATS3TM4 = ySEPERATS3TM4 / minPifVAL;
            yAritSEPERATS3TM5 = ySEPERATS3TM5 / minPifVAL;
            yAritSEPERATS3TM7 = ySEPERATS3TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3TM1 = (xxAritQuadSEPERATS3TM1 + ((pifSEPERATS2S3TM1arrayRAND[n] - xAritSEPERATS3TM1)^2));
                xxAritQuadSEPERATS3TM2 = (xxAritQuadSEPERATS3TM2 + ((pifSEPERATS2S3TM2arrayRAND[n] - xAritSEPERATS3TM2)^2));
                xxAritQuadSEPERATS3TM3 = (xxAritQuadSEPERATS3TM3 + ((pifSEPERATS2S3TM3arrayRAND[n] - xAritSEPERATS3TM3)^2));
                xxAritQuadSEPERATS3TM4 = (xxAritQuadSEPERATS3TM4 + ((pifSEPERATS2S3TM4arrayRAND[n] - xAritSEPERATS3TM4)^2));
                xxAritQuadSEPERATS3TM5 = (xxAritQuadSEPERATS3TM5 + ((pifSEPERATS2S3TM5arrayRAND[n] - xAritSEPERATS3TM5)^2));
                xxAritQuadSEPERATS3TM7 = (xxAritQuadSEPERATS3TM7 + ((pifSEPERATS2S3TM7arrayRAND[n] - xAritSEPERATS3TM7)^2));
    
                yyAritQuadSEPERATS3TM1 = (yyAritQuadSEPERATS3TM1 + ((pifSEPERATS3slaveTM1arrayRAND[n] - yAritSEPERATS3TM1)^2));
                yyAritQuadSEPERATS3TM2 = (yyAritQuadSEPERATS3TM2 + ((pifSEPERATS3slaveTM2arrayRAND[n] - yAritSEPERATS3TM2)^2));
                yyAritQuadSEPERATS3TM3 = (yyAritQuadSEPERATS3TM3 + ((pifSEPERATS3slaveTM3arrayRAND[n] - yAritSEPERATS3TM3)^2));
                yyAritQuadSEPERATS3TM4 = (yyAritQuadSEPERATS3TM4 + ((pifSEPERATS3slaveTM4arrayRAND[n] - yAritSEPERATS3TM4)^2));
                yyAritQuadSEPERATS3TM5 = (yyAritQuadSEPERATS3TM5 + ((pifSEPERATS3slaveTM5arrayRAND[n] - yAritSEPERATS3TM5)^2));
                yyAritQuadSEPERATS3TM7 = (yyAritQuadSEPERATS3TM7 + ((pifSEPERATS3slaveTM7arrayRAND[n] - yAritSEPERATS3TM7)^2));
    
                qXYSEPERATS3TM1 = (qXYSEPERATS3TM1 + ((pifSEPERATS2S3TM1arrayRAND[n] - xAritSEPERATS3TM1) * (pifSEPERATS3slaveTM1arrayRAND[n] - yAritSEPERATS3TM1)));
                qXYSEPERATS3TM2 = (qXYSEPERATS3TM2 + ((pifSEPERATS2S3TM2arrayRAND[n] - xAritSEPERATS3TM2) * (pifSEPERATS3slaveTM2arrayRAND[n] - yAritSEPERATS3TM2)));
                qXYSEPERATS3TM3 = (qXYSEPERATS3TM3 + ((pifSEPERATS2S3TM3arrayRAND[n] - xAritSEPERATS3TM3) * (pifSEPERATS3slaveTM3arrayRAND[n] - yAritSEPERATS3TM3)));
                qXYSEPERATS3TM4 = (qXYSEPERATS3TM4 + ((pifSEPERATS2S3TM4arrayRAND[n] - xAritSEPERATS3TM4) * (pifSEPERATS3slaveTM4arrayRAND[n] - yAritSEPERATS3TM4)));
                qXYSEPERATS3TM5 = (qXYSEPERATS3TM5 + ((pifSEPERATS2S3TM5arrayRAND[n] - xAritSEPERATS3TM5) * (pifSEPERATS3slaveTM5arrayRAND[n] - yAritSEPERATS3TM5)));
                qXYSEPERATS3TM7 = (qXYSEPERATS3TM7 + ((pifSEPERATS2S3TM7arrayRAND[n] - xAritSEPERATS3TM7) * (pifSEPERATS3slaveTM7arrayRAND[n] - yAritSEPERATS3TM7)));
            }
        
            aSEPERATS3TM1 = (((xQuadSEPERATS3TM1 * ySEPERATS3TM1) - (xSEPERATS3TM1 * xySEPERATS3TM1)) / ((minPifVAL * xQuadSEPERATS3TM1) - (xSEPERATS3TM1^2)));
            aSEPERATS3TM2 = (((xQuadSEPERATS3TM2 * ySEPERATS3TM2) - (xSEPERATS3TM2 * xySEPERATS3TM2)) / ((minPifVAL * xQuadSEPERATS3TM2) - (xSEPERATS3TM2^2)));
            aSEPERATS3TM3 = (((xQuadSEPERATS3TM3 * ySEPERATS3TM3) - (xSEPERATS3TM3 * xySEPERATS3TM3)) / ((minPifVAL * xQuadSEPERATS3TM3) - (xSEPERATS3TM3^2)));
            aSEPERATS3TM4 = (((xQuadSEPERATS3TM4 * ySEPERATS3TM4) - (xSEPERATS3TM4 * xySEPERATS3TM4)) / ((minPifVAL * xQuadSEPERATS3TM4) - (xSEPERATS3TM4^2)));
            aSEPERATS3TM5 = (((xQuadSEPERATS3TM5 * ySEPERATS3TM5) - (xSEPERATS3TM5 * xySEPERATS3TM5)) / ((minPifVAL * xQuadSEPERATS3TM5) - (xSEPERATS3TM5^2)));
            aSEPERATS3TM7 = (((xQuadSEPERATS3TM7 * ySEPERATS3TM7) - (xSEPERATS3TM7 * xySEPERATS3TM7)) / ((minPifVAL * xQuadSEPERATS3TM7) - (xSEPERATS3TM7^2)));
            
            bSEPERATS3TM1 = qXYSEPERATS3TM1 / xxAritQuadSEPERATS3TM1;
            bSEPERATS3TM2 = qXYSEPERATS3TM2 / xxAritQuadSEPERATS3TM2;
            bSEPERATS3TM3 = qXYSEPERATS3TM3 / xxAritQuadSEPERATS3TM3;
            bSEPERATS3TM4 = qXYSEPERATS3TM4 / xxAritQuadSEPERATS3TM4;
            bSEPERATS3TM5 = qXYSEPERATS3TM5 / xxAritQuadSEPERATS3TM5;
            bSEPERATS3TM7 = qXYSEPERATS3TM7 / xxAritQuadSEPERATS3TM7;
    
            rSEPERATS3TM1 = (qXYSEPERATS3TM1 / ((xxAritQuadSEPERATS3TM1 * yyAritQuadSEPERATS3TM1)^0.5));
            rSEPERATS3TM2 = (qXYSEPERATS3TM2 / ((xxAritQuadSEPERATS3TM2 * yyAritQuadSEPERATS3TM2)^0.5));
            rSEPERATS3TM3 = (qXYSEPERATS3TM3 / ((xxAritQuadSEPERATS3TM3 * yyAritQuadSEPERATS3TM3)^0.5));
            rSEPERATS3TM4 = (qXYSEPERATS3TM4 / ((xxAritQuadSEPERATS3TM4 * yyAritQuadSEPERATS3TM4)^0.5));
            rSEPERATS3TM5 = (qXYSEPERATS3TM5 / ((xxAritQuadSEPERATS3TM5 * yyAritQuadSEPERATS3TM5)^0.5));
            rSEPERATS3TM7 = (qXYSEPERATS3TM7 / ((xxAritQuadSEPERATS3TM7 * yyAritQuadSEPERATS3TM7)^0.5));
    
            rQuadSEPERATS3TM1 = ((rSEPERATS3TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3TM2 = ((rSEPERATS3TM2^2) * 100);
            rQuadSEPERATS3TM3 = ((rSEPERATS3TM3^2) * 100);
            rQuadSEPERATS3TM4 = ((rSEPERATS3TM4^2) * 100);
            rQuadSEPERATS3TM5 = ((rSEPERATS3TM5^2) * 100);
            rQuadSEPERATS3TM7 = ((rSEPERATS3TM7^2) * 100);
        
            syxSEPERATS3TM1 = (((yyAritQuadSEPERATS3TM1 - ((qXYSEPERATS3TM1^2) / xxAritQuadSEPERATS3TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM2 = (((yyAritQuadSEPERATS3TM2 - ((qXYSEPERATS3TM2^2) / xxAritQuadSEPERATS3TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM3 = (((yyAritQuadSEPERATS3TM3 - ((qXYSEPERATS3TM3^2) / xxAritQuadSEPERATS3TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM4 = (((yyAritQuadSEPERATS3TM4 - ((qXYSEPERATS3TM4^2) / xxAritQuadSEPERATS3TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM5 = (((yyAritQuadSEPERATS3TM5 - ((qXYSEPERATS3TM5^2) / xxAritQuadSEPERATS3TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM7 = (((yyAritQuadSEPERATS3TM7 - ((qXYSEPERATS3TM7^2) / xxAritQuadSEPERATS3TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3TM1 = (((syxSEPERATS3TM1^2) / xxAritQuadSEPERATS3TM1)^0.5);
            bStandSEPERATS3TM2 = (((syxSEPERATS3TM2^2) / xxAritQuadSEPERATS3TM2)^0.5);
            bStandSEPERATS3TM3 = (((syxSEPERATS3TM3^2) / xxAritQuadSEPERATS3TM3)^0.5);
            bStandSEPERATS3TM4 = (((syxSEPERATS3TM4^2) / xxAritQuadSEPERATS3TM4)^0.5);
            bStandSEPERATS3TM5 = (((syxSEPERATS3TM5^2) / xxAritQuadSEPERATS3TM5)^0.5);
            bStandSEPERATS3TM7 = (((syxSEPERATS3TM7^2) / xxAritQuadSEPERATS3TM7)^0.5);
    
            aStandSEPERATS3TM1 = (bStandSEPERATS3TM1 * ((xQuadSEPERATS3TM1 / minPifVAL)^0.5));
            aStandSEPERATS3TM2 = (bStandSEPERATS3TM2 * ((xQuadSEPERATS3TM2 / minPifVAL)^0.5));
            aStandSEPERATS3TM3 = (bStandSEPERATS3TM3 * ((xQuadSEPERATS3TM3 / minPifVAL)^0.5));
            aStandSEPERATS3TM4 = (bStandSEPERATS3TM4 * ((xQuadSEPERATS3TM4 / minPifVAL)^0.5));
            aStandSEPERATS3TM5 = (bStandSEPERATS3TM5 * ((xQuadSEPERATS3TM5 / minPifVAL)^0.5));
            aStandSEPERATS3TM7 = (bStandSEPERATS3TM7 * ((xQuadSEPERATS3TM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM1, bSEPERATS3TM1, rSEPERATS3TM1, rQuadSEPERATS3TM1, aStandSEPERATS3TM1, bStandSEPERATS3TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM2, bSEPERATS3TM2, rSEPERATS3TM2, rQuadSEPERATS3TM2, aStandSEPERATS3TM2, bStandSEPERATS3TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM3, bSEPERATS3TM3, rSEPERATS3TM3, rQuadSEPERATS3TM3, aStandSEPERATS3TM3, bStandSEPERATS3TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM4, bSEPERATS3TM4, rSEPERATS3TM4, rQuadSEPERATS3TM4, aStandSEPERATS3TM4, bStandSEPERATS3TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM5, bSEPERATS3TM5, rSEPERATS3TM5, rQuadSEPERATS3TM5, aStandSEPERATS3TM5, bStandSEPERATS3TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS3TM7, bSEPERATS3TM7, rSEPERATS3TM7, rQuadSEPERATS3TM7, aStandSEPERATS3TM7, bStandSEPERATS3TM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS3slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS3slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS3slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS3slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS3slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS3slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS3slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT3TM1[i,j] = (aSEPERATS3TM1 + (bSEPERATS3TM1 * REFS3TM1[i,j]));
                    OUT3TM2[i,j] = (aSEPERATS3TM2 + (bSEPERATS3TM2 * REFS3TM2[i,j]));
                    OUT3TM3[i,j] = (aSEPERATS3TM3 + (bSEPERATS3TM3 * REFS3TM3[i,j]));
                    OUT3TM4[i,j] = (aSEPERATS3TM4 + (bSEPERATS3TM4 * REFS3TM4[i,j]));
                    OUT3TM5[i,j] = (aSEPERATS3TM5 + (bSEPERATS3TM5 * REFS3TM5[i,j]));
                    OUT3TM7[i,j] = (aSEPERATS3TM7 + (bSEPERATS3TM7 * REFS3TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3TM1);
        	CreatePyramid(OUT3TM2);
        	CreatePyramid(OUT3TM3);
        	CreatePyramid(OUT3TM4);
        	CreatePyramid(OUT3TM5);
        	CreatePyramid(OUT3TM7);
        
        	CreateHistogram(OUT3TM1);
        	CreateHistogram(OUT3TM2);
        	CreateHistogram(OUT3TM3);
        	CreateHistogram(OUT3TM4);
        	CreateHistogram(OUT3TM5);
        	CreateHistogram(OUT3TM7);
            CloseRaster(REFS3TM1);
            CloseRaster(REFS3TM2);
            CloseRaster(REFS3TM3);
            CloseRaster(REFS3TM4);
            CloseRaster(REFS3TM5);
            CloseRaster(REFS3TM7);
    
            CloseRaster(OUT3TM1);
            CloseRaster(OUT3TM2);
            CloseRaster(OUT3TM3);
            CloseRaster(OUT3TM4);
            CloseRaster(OUT3TM5);
            CloseRaster(OUT3TM7);
        
        	printf("Scene 3 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS3MSS1, xAritSEPERATS3MSS2, xAritSEPERATS3MSS4;
            numeric yAritSEPERATS3MSS1, yAritSEPERATS3MSS2, yAritSEPERATS3MSS4;
    
            numeric aSEPERATS3MSS1, aSEPERATS3MSS2, aSEPERATS3MSS4;
            numeric bSEPERATS3MSS1, bSEPERATS3MSS2, bSEPERATS3MSS4;
            numeric rSEPERATS3MSS1, rSEPERATS3MSS2, rSEPERATS3MSS4;
            numeric rQuadSEPERATS3MSS1, rQuadSEPERATS3MSS2, rQuadSEPERATS3MSS4;
            numeric syxSEPERATS3MSS1, syxSEPERATS3MSS2, syxSEPERATS3MSS4;
            numeric bStandSEPERATS3MSS1, bStandSEPERATS3MSS2, bStandSEPERATS3MSS4;
            numeric aStandSEPERATS3MSS1, aStandSEPERATS3MSS2, aStandSEPERATS3MSS4;
    
            numeric xSEPERATS3MSS1 = 0;
            numeric xSEPERATS3MSS2 = 0;
            numeric xSEPERATS3MSS4 = 0;
    
            numeric xQuadSEPERATS3MSS1 = 0;
            numeric xQuadSEPERATS3MSS2 = 0;
            numeric xQuadSEPERATS3MSS4 = 0;
    
            numeric ySEPERATS3MSS1 = 0;
            numeric ySEPERATS3MSS2 = 0;
            numeric ySEPERATS3MSS4 = 0;
    
            numeric yQuadSEPERATS3MSS1 = 0;
            numeric yQuadSEPERATS3MSS2 = 0;
            numeric yQuadSEPERATS3MSS4 = 0;
    
            numeric xySEPERATS3MSS1 = 0;
            numeric xySEPERATS3MSS2 = 0;
            numeric xySEPERATS3MSS4 = 0;
    
            numeric xxAritQuadSEPERATS3MSS1 = 0;
            numeric xxAritQuadSEPERATS3MSS2 = 0;
            numeric xxAritQuadSEPERATS3MSS4 = 0;
    
            numeric yyAritQuadSEPERATS3MSS1 = 0;
            numeric yyAritQuadSEPERATS3MSS2 = 0;
            numeric yyAritQuadSEPERATS3MSS4 = 0;
    
            numeric qXYSEPERATS3MSS1 = 0;
            numeric qXYSEPERATS3MSS2 = 0;
            numeric qXYSEPERATS3MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS3MSS1 = xSEPERATS3MSS1 + pifSEPERATS2S3TM2arrayRAND[m];
                xSEPERATS3MSS2 = xSEPERATS3MSS2 + pifSEPERATS2S3TM3arrayRAND[m];
                xSEPERATS3MSS4 = xSEPERATS3MSS4 + pifSEPERATS2S3TM4arrayRAND[m];
    
                xQuadSEPERATS3MSS1 = (xQuadSEPERATS3MSS1 + (pifSEPERATS2S3TM2arrayRAND[m]^2));
                xQuadSEPERATS3MSS2 = (xQuadSEPERATS3MSS2 + (pifSEPERATS2S3TM3arrayRAND[m]^2));
                xQuadSEPERATS3MSS4 = (xQuadSEPERATS3MSS4 + (pifSEPERATS2S3TM4arrayRAND[m]^2));
    
                ySEPERATS3MSS1 = ySEPERATS3MSS1 + pifSEPERATS3slaveMSS1arrayRAND[m];
                ySEPERATS3MSS2 = ySEPERATS3MSS2 + pifSEPERATS3slaveMSS2arrayRAND[m];
                ySEPERATS3MSS4 = ySEPERATS3MSS4 + pifSEPERATS3slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS3MSS1 = (yQuadSEPERATS3MSS1 + (pifSEPERATS3slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS3MSS2 = (yQuadSEPERATS3MSS2 + (pifSEPERATS3slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS3MSS4 = (yQuadSEPERATS3MSS4 + (pifSEPERATS3slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS3MSS1 = (xySEPERATS3MSS1 + (pifSEPERATS2S3TM2arrayRAND[m] * pifSEPERATS3slaveMSS1arrayRAND[m]));
                xySEPERATS3MSS2 = (xySEPERATS3MSS2 + (pifSEPERATS2S3TM3arrayRAND[m] * pifSEPERATS3slaveMSS2arrayRAND[m]));
                xySEPERATS3MSS4 = (xySEPERATS3MSS4 + (pifSEPERATS2S3TM4arrayRAND[m] * pifSEPERATS3slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS3MSS1 = xSEPERATS3MSS1 / minPifVAL;
            xAritSEPERATS3MSS2 = xSEPERATS3MSS2 / minPifVAL;
            xAritSEPERATS3MSS4 = xSEPERATS3MSS4 / minPifVAL;
    
            yAritSEPERATS3MSS1 = ySEPERATS3MSS1 / minPifVAL;
            yAritSEPERATS3MSS2 = ySEPERATS3MSS2 / minPifVAL;
            yAritSEPERATS3MSS4 = ySEPERATS3MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3MSS1 = (xxAritQuadSEPERATS3MSS1 + ((pifSEPERATS2S3TM2arrayRAND[n] - xAritSEPERATS3MSS1)^2));
                xxAritQuadSEPERATS3MSS2 = (xxAritQuadSEPERATS3MSS2 + ((pifSEPERATS2S3TM3arrayRAND[n] - xAritSEPERATS3MSS2)^2));
                xxAritQuadSEPERATS3MSS4 = (xxAritQuadSEPERATS3MSS4 + ((pifSEPERATS2S3TM4arrayRAND[n] - xAritSEPERATS3MSS4)^2));
    
                yyAritQuadSEPERATS3MSS1 = (yyAritQuadSEPERATS3MSS1 + ((pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)^2));
                yyAritQuadSEPERATS3MSS2 = (yyAritQuadSEPERATS3MSS2 + ((pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)^2));
                yyAritQuadSEPERATS3MSS4 = (yyAritQuadSEPERATS3MSS4 + ((pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)^2));
    
                qXYSEPERATS3MSS1 = (qXYSEPERATS3MSS1 + ((pifSEPERATS2S3TM2arrayRAND[n] - xAritSEPERATS3MSS1) * (pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)));
                qXYSEPERATS3MSS2 = (qXYSEPERATS3MSS2 + ((pifSEPERATS2S3TM3arrayRAND[n] - xAritSEPERATS3MSS2) * (pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)));
                qXYSEPERATS3MSS4 = (qXYSEPERATS3MSS4 + ((pifSEPERATS2S3TM4arrayRAND[n] - xAritSEPERATS3MSS4) * (pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)));
            }
        
            aSEPERATS3MSS1 = (((xQuadSEPERATS3MSS1 * ySEPERATS3MSS1) - (xSEPERATS3MSS1 * xySEPERATS3MSS1)) / ((minPifVAL * xQuadSEPERATS3MSS1) - (xSEPERATS3MSS1^2)));
            aSEPERATS3MSS2 = (((xQuadSEPERATS3MSS2 * ySEPERATS3MSS2) - (xSEPERATS3MSS2 * xySEPERATS3MSS2)) / ((minPifVAL * xQuadSEPERATS3MSS2) - (xSEPERATS3MSS2^2)));
            aSEPERATS3MSS4 = (((xQuadSEPERATS3MSS4 * ySEPERATS3MSS4) - (xSEPERATS3MSS4 * xySEPERATS3MSS4)) / ((minPifVAL * xQuadSEPERATS3MSS4) - (xSEPERATS3MSS4^2)));
            
            bSEPERATS3MSS1 = qXYSEPERATS3MSS1 / xxAritQuadSEPERATS3MSS1;
            bSEPERATS3MSS2 = qXYSEPERATS3MSS2 / xxAritQuadSEPERATS3MSS2;
            bSEPERATS3MSS4 = qXYSEPERATS3MSS4 / xxAritQuadSEPERATS3MSS4;
    
            rSEPERATS3MSS1 = (qXYSEPERATS3MSS1 / ((xxAritQuadSEPERATS3MSS1 * yyAritQuadSEPERATS3MSS1)^0.5));
            rSEPERATS3MSS2 = (qXYSEPERATS3MSS2 / ((xxAritQuadSEPERATS3MSS2 * yyAritQuadSEPERATS3MSS2)^0.5));
            rSEPERATS3MSS4 = (qXYSEPERATS3MSS4 / ((xxAritQuadSEPERATS3MSS4 * yyAritQuadSEPERATS3MSS4)^0.5));
    
            rQuadSEPERATS3MSS1 = ((rSEPERATS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3MSS2 = ((rSEPERATS3MSS2^2) * 100);
            rQuadSEPERATS3MSS4 = ((rSEPERATS3MSS4^2) * 100);
        
            syxSEPERATS3MSS1 = (((yyAritQuadSEPERATS3MSS1 - ((qXYSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS2 = (((yyAritQuadSEPERATS3MSS2 - ((qXYSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS4 = (((yyAritQuadSEPERATS3MSS4 - ((qXYSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3MSS1 = (((syxSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)^0.5);
            bStandSEPERATS3MSS2 = (((syxSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)^0.5);
            bStandSEPERATS3MSS4 = (((syxSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)^0.5);
    
            aStandSEPERATS3MSS1 = (bStandSEPERATS3MSS1 * ((xQuadSEPERATS3MSS1 / minPifVAL)^0.5));
            aStandSEPERATS3MSS2 = (bStandSEPERATS3MSS2 * ((xQuadSEPERATS3MSS2 / minPifVAL)^0.5));
            aStandSEPERATS3MSS4 = (bStandSEPERATS3MSS4 * ((xQuadSEPERATS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS1, bSEPERATS3MSS1, rSEPERATS3MSS1, rQuadSEPERATS3MSS1, aStandSEPERATS3MSS1, bStandSEPERATS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS2, bSEPERATS3MSS2, rSEPERATS3MSS2, rQuadSEPERATS3MSS2, aStandSEPERATS3MSS2, bStandSEPERATS3MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS4, bSEPERATS3MSS4, rSEPERATS3MSS4, rQuadSEPERATS3MSS4, aStandSEPERATS3MSS4, bStandSEPERATS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS3slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS3slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS3slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aSEPERATS3MSS1 + (bSEPERATS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aSEPERATS3MSS2 + (bSEPERATS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = REFS3MSS3[i,j];
                    OUT3MSS4[i,j] = (aSEPERATS3MSS4 + (bSEPERATS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT3MSS1);
            CreatePyramid(OUT3MSS2);
            CreatePyramid(OUT3MSS3);
            CreatePyramid(OUT3MSS4);
        
            CreateHistogram(OUT3MSS1);
            CreateHistogram(OUT3MSS2);
            CreateHistogram(OUT3MSS3);
            CreateHistogram(OUT3MSS4);
            
            CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            if ( sensors4 == 7 )
            {
            numeric xAritSEPERATS4ETM1, xAritSEPERATS4ETM2, xAritSEPERATS4ETM3, xAritSEPERATS4ETM4, xAritSEPERATS4ETM5, xAritSEPERATS4ETM7;
            numeric yAritSEPERATS4ETM1, yAritSEPERATS4ETM2, yAritSEPERATS4ETM3, yAritSEPERATS4ETM4, yAritSEPERATS4ETM5, yAritSEPERATS4ETM7;
    
            numeric aSEPERATS4ETM1, aSEPERATS4ETM2, aSEPERATS4ETM3, aSEPERATS4ETM4, aSEPERATS4ETM5, aSEPERATS4ETM7;
            numeric bSEPERATS4ETM1, bSEPERATS4ETM2, bSEPERATS4ETM3, bSEPERATS4ETM4, bSEPERATS4ETM5, bSEPERATS4ETM7;
            numeric rSEPERATS4ETM1, rSEPERATS4ETM2, rSEPERATS4ETM3, rSEPERATS4ETM4, rSEPERATS4ETM5, rSEPERATS4ETM7;
            numeric rQuadSEPERATS4ETM1, rQuadSEPERATS4ETM2, rQuadSEPERATS4ETM3, rQuadSEPERATS4ETM4, rQuadSEPERATS4ETM5, rQuadSEPERATS4ETM7;
            numeric syxSEPERATS4ETM1, syxSEPERATS4ETM2, syxSEPERATS4ETM3, syxSEPERATS4ETM4, syxSEPERATS4ETM5, syxSEPERATS4ETM7;
            numeric bStandSEPERATS4ETM1, bStandSEPERATS4ETM2, bStandSEPERATS4ETM3, bStandSEPERATS4ETM4, bStandSEPERATS4ETM5, bStandSEPERATS4ETM7;
            numeric aStandSEPERATS4ETM1, aStandSEPERATS4ETM2, aStandSEPERATS4ETM3, aStandSEPERATS4ETM4, aStandSEPERATS4ETM5, aStandSEPERATS4ETM7;
    
            numeric xSEPERATS4ETM1 = 0;
            numeric xSEPERATS4ETM2 = 0;
            numeric xSEPERATS4ETM3 = 0;
            numeric xSEPERATS4ETM4 = 0;
            numeric xSEPERATS4ETM5 = 0;
            numeric xSEPERATS4ETM7 = 0;
    
            numeric xQuadSEPERATS4ETM1 = 0;
            numeric xQuadSEPERATS4ETM2 = 0;
            numeric xQuadSEPERATS4ETM3 = 0;
            numeric xQuadSEPERATS4ETM4 = 0;
            numeric xQuadSEPERATS4ETM5 = 0;
            numeric xQuadSEPERATS4ETM7 = 0;
    
            numeric ySEPERATS4ETM1 = 0;
            numeric ySEPERATS4ETM2 = 0;
            numeric ySEPERATS4ETM3 = 0;
            numeric ySEPERATS4ETM4 = 0;
            numeric ySEPERATS4ETM5 = 0;
            numeric ySEPERATS4ETM7 = 0;
    
            numeric yQuadSEPERATS4ETM1 = 0;
            numeric yQuadSEPERATS4ETM2 = 0;
            numeric yQuadSEPERATS4ETM3 = 0;
            numeric yQuadSEPERATS4ETM4 = 0;
            numeric yQuadSEPERATS4ETM5 = 0;
            numeric yQuadSEPERATS4ETM7 = 0;
    
            numeric xySEPERATS4ETM1 = 0;
            numeric xySEPERATS4ETM2 = 0;
            numeric xySEPERATS4ETM3 = 0;
            numeric xySEPERATS4ETM4 = 0;
            numeric xySEPERATS4ETM5 = 0;
            numeric xySEPERATS4ETM7 = 0;
    
            numeric xxAritQuadSEPERATS4ETM1 = 0;
            numeric xxAritQuadSEPERATS4ETM2 = 0;
            numeric xxAritQuadSEPERATS4ETM3 = 0;
            numeric xxAritQuadSEPERATS4ETM4 = 0;
            numeric xxAritQuadSEPERATS4ETM5 = 0;
            numeric xxAritQuadSEPERATS4ETM7 = 0;
    
            numeric yyAritQuadSEPERATS4ETM1 = 0;
            numeric yyAritQuadSEPERATS4ETM2 = 0;
            numeric yyAritQuadSEPERATS4ETM3 = 0;
            numeric yyAritQuadSEPERATS4ETM4 = 0;
            numeric yyAritQuadSEPERATS4ETM5 = 0;
            numeric yyAritQuadSEPERATS4ETM7 = 0;
    
            numeric qXYSEPERATS4ETM1 = 0;
            numeric qXYSEPERATS4ETM2 = 0;
            numeric qXYSEPERATS4ETM3 = 0;
            numeric qXYSEPERATS4ETM4 = 0;
            numeric qXYSEPERATS4ETM5 = 0;
            numeric qXYSEPERATS4ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS4ETM1 = xSEPERATS4ETM1 + pifSEPERATS2S4TM1arrayRAND[m];
                xSEPERATS4ETM2 = xSEPERATS4ETM2 + pifSEPERATS2S4TM2arrayRAND[m];
                xSEPERATS4ETM3 = xSEPERATS4ETM3 + pifSEPERATS2S4TM3arrayRAND[m];
                xSEPERATS4ETM4 = xSEPERATS4ETM4 + pifSEPERATS2S4TM4arrayRAND[m];
                xSEPERATS4ETM5 = xSEPERATS4ETM5 + pifSEPERATS2S4TM5arrayRAND[m];
                xSEPERATS4ETM7 = xSEPERATS4ETM7 + pifSEPERATS2S4TM7arrayRAND[m];
    
                xQuadSEPERATS4ETM1 = (xQuadSEPERATS4ETM1 + (pifSEPERATS2S4TM1arrayRAND[m]^2));
                xQuadSEPERATS4ETM2 = (xQuadSEPERATS4ETM2 + (pifSEPERATS2S4TM2arrayRAND[m]^2));
                xQuadSEPERATS4ETM3 = (xQuadSEPERATS4ETM3 + (pifSEPERATS2S4TM3arrayRAND[m]^2));
                xQuadSEPERATS4ETM4 = (xQuadSEPERATS4ETM4 + (pifSEPERATS2S4TM4arrayRAND[m]^2));
                xQuadSEPERATS4ETM5 = (xQuadSEPERATS4ETM5 + (pifSEPERATS2S4TM5arrayRAND[m]^2));
                xQuadSEPERATS4ETM7 = (xQuadSEPERATS4ETM7 + (pifSEPERATS2S4TM7arrayRAND[m]^2));
    
                ySEPERATS4ETM1 = ySEPERATS4ETM1 + pifSEPERATS4slaveETM1arrayRAND[m];
                ySEPERATS4ETM2 = ySEPERATS4ETM2 + pifSEPERATS4slaveETM2arrayRAND[m];
                ySEPERATS4ETM3 = ySEPERATS4ETM3 + pifSEPERATS4slaveETM3arrayRAND[m];
                ySEPERATS4ETM4 = ySEPERATS4ETM4 + pifSEPERATS4slaveETM4arrayRAND[m];
                ySEPERATS4ETM5 = ySEPERATS4ETM5 + pifSEPERATS4slaveETM5arrayRAND[m];
                ySEPERATS4ETM7 = ySEPERATS4ETM7 + pifSEPERATS4slaveETM7arrayRAND[m];
                
                yQuadSEPERATS4ETM1 = (yQuadSEPERATS4ETM1 + (pifSEPERATS4slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS4ETM2 = (yQuadSEPERATS4ETM2 + (pifSEPERATS4slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS4ETM3 = (yQuadSEPERATS4ETM3 + (pifSEPERATS4slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS4ETM4 = (yQuadSEPERATS4ETM4 + (pifSEPERATS4slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS4ETM5 = (yQuadSEPERATS4ETM5 + (pifSEPERATS4slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS4ETM7 = (yQuadSEPERATS4ETM7 + (pifSEPERATS4slaveETM7arrayRAND[m]^2));
    
                xySEPERATS4ETM1 = (xySEPERATS4ETM1 + (pifSEPERATS2S4TM1arrayRAND[m] * pifSEPERATS4slaveETM1arrayRAND[m]));
                xySEPERATS4ETM2 = (xySEPERATS4ETM2 + (pifSEPERATS2S4TM2arrayRAND[m] * pifSEPERATS4slaveETM2arrayRAND[m]));
                xySEPERATS4ETM3 = (xySEPERATS4ETM3 + (pifSEPERATS2S4TM3arrayRAND[m] * pifSEPERATS4slaveETM3arrayRAND[m]));
                xySEPERATS4ETM4 = (xySEPERATS4ETM4 + (pifSEPERATS2S4TM4arrayRAND[m] * pifSEPERATS4slaveETM4arrayRAND[m]));
                xySEPERATS4ETM5 = (xySEPERATS4ETM5 + (pifSEPERATS2S4TM5arrayRAND[m] * pifSEPERATS4slaveETM5arrayRAND[m]));
                xySEPERATS4ETM7 = (xySEPERATS4ETM7 + (pifSEPERATS2S4TM7arrayRAND[m] * pifSEPERATS4slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS4ETM1 = xSEPERATS4ETM1 / minPifVAL;
            xAritSEPERATS4ETM2 = xSEPERATS4ETM2 / minPifVAL;
            xAritSEPERATS4ETM3 = xSEPERATS4ETM3 / minPifVAL;
            xAritSEPERATS4ETM4 = xSEPERATS4ETM4 / minPifVAL;
            xAritSEPERATS4ETM5 = xSEPERATS4ETM5 / minPifVAL;
            xAritSEPERATS4ETM7 = xSEPERATS4ETM7 / minPifVAL;
    
            yAritSEPERATS4ETM1 = ySEPERATS4ETM1 / minPifVAL;
            yAritSEPERATS4ETM2 = ySEPERATS4ETM2 / minPifVAL;
            yAritSEPERATS4ETM3 = ySEPERATS4ETM3 / minPifVAL;
            yAritSEPERATS4ETM4 = ySEPERATS4ETM4 / minPifVAL;
            yAritSEPERATS4ETM5 = ySEPERATS4ETM5 / minPifVAL;
            yAritSEPERATS4ETM7 = ySEPERATS4ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4ETM1 = (xxAritQuadSEPERATS4ETM1 + ((pifSEPERATS2S4TM1arrayRAND[n] - xAritSEPERATS4ETM1)^2));
                xxAritQuadSEPERATS4ETM2 = (xxAritQuadSEPERATS4ETM2 + ((pifSEPERATS2S4TM2arrayRAND[n] - xAritSEPERATS4ETM2)^2));
                xxAritQuadSEPERATS4ETM3 = (xxAritQuadSEPERATS4ETM3 + ((pifSEPERATS2S4TM3arrayRAND[n] - xAritSEPERATS4ETM3)^2));
                xxAritQuadSEPERATS4ETM4 = (xxAritQuadSEPERATS4ETM4 + ((pifSEPERATS2S4TM4arrayRAND[n] - xAritSEPERATS4ETM4)^2));
                xxAritQuadSEPERATS4ETM5 = (xxAritQuadSEPERATS4ETM5 + ((pifSEPERATS2S4TM5arrayRAND[n] - xAritSEPERATS4ETM5)^2));
                xxAritQuadSEPERATS4ETM7 = (xxAritQuadSEPERATS4ETM7 + ((pifSEPERATS2S4TM7arrayRAND[n] - xAritSEPERATS4ETM7)^2));
    
                yyAritQuadSEPERATS4ETM1 = (yyAritQuadSEPERATS4ETM1 + ((pifSEPERATS4slaveETM1arrayRAND[n] - yAritSEPERATS4ETM1)^2));
                yyAritQuadSEPERATS4ETM2 = (yyAritQuadSEPERATS4ETM2 + ((pifSEPERATS4slaveETM2arrayRAND[n] - yAritSEPERATS4ETM2)^2));
                yyAritQuadSEPERATS4ETM3 = (yyAritQuadSEPERATS4ETM3 + ((pifSEPERATS4slaveETM3arrayRAND[n] - yAritSEPERATS4ETM3)^2));
                yyAritQuadSEPERATS4ETM4 = (yyAritQuadSEPERATS4ETM4 + ((pifSEPERATS4slaveETM4arrayRAND[n] - yAritSEPERATS4ETM4)^2));
                yyAritQuadSEPERATS4ETM5 = (yyAritQuadSEPERATS4ETM5 + ((pifSEPERATS4slaveETM5arrayRAND[n] - yAritSEPERATS4ETM5)^2));
                yyAritQuadSEPERATS4ETM7 = (yyAritQuadSEPERATS4ETM7 + ((pifSEPERATS4slaveETM7arrayRAND[n] - yAritSEPERATS4ETM7)^2));
    
                qXYSEPERATS4ETM1 = (qXYSEPERATS4ETM1 + ((pifSEPERATS2S4TM1arrayRAND[n] - xAritSEPERATS4ETM1) * (pifSEPERATS4slaveETM1arrayRAND[n] - yAritSEPERATS4ETM1)));
                qXYSEPERATS4ETM2 = (qXYSEPERATS4ETM2 + ((pifSEPERATS2S4TM2arrayRAND[n] - xAritSEPERATS4ETM2) * (pifSEPERATS4slaveETM2arrayRAND[n] - yAritSEPERATS4ETM2)));
                qXYSEPERATS4ETM3 = (qXYSEPERATS4ETM3 + ((pifSEPERATS2S4TM3arrayRAND[n] - xAritSEPERATS4ETM3) * (pifSEPERATS4slaveETM3arrayRAND[n] - yAritSEPERATS4ETM3)));
                qXYSEPERATS4ETM4 = (qXYSEPERATS4ETM4 + ((pifSEPERATS2S4TM4arrayRAND[n] - xAritSEPERATS4ETM4) * (pifSEPERATS4slaveETM4arrayRAND[n] - yAritSEPERATS4ETM4)));
                qXYSEPERATS4ETM5 = (qXYSEPERATS4ETM5 + ((pifSEPERATS2S4TM5arrayRAND[n] - xAritSEPERATS4ETM5) * (pifSEPERATS4slaveETM5arrayRAND[n] - yAritSEPERATS4ETM5)));
                qXYSEPERATS4ETM7 = (qXYSEPERATS4ETM7 + ((pifSEPERATS2S4TM7arrayRAND[n] - xAritSEPERATS4ETM7) * (pifSEPERATS4slaveETM7arrayRAND[n] - yAritSEPERATS4ETM7)));
            }
        
            aSEPERATS4ETM1 = (((xQuadSEPERATS4ETM1 * ySEPERATS4ETM1) - (xSEPERATS4ETM1 * xySEPERATS4ETM1)) / ((minPifVAL * xQuadSEPERATS4ETM1) - (xSEPERATS4ETM1^2)));
            aSEPERATS4ETM2 = (((xQuadSEPERATS4ETM2 * ySEPERATS4ETM2) - (xSEPERATS4ETM2 * xySEPERATS4ETM2)) / ((minPifVAL * xQuadSEPERATS4ETM2) - (xSEPERATS4ETM2^2)));
            aSEPERATS4ETM3 = (((xQuadSEPERATS4ETM3 * ySEPERATS4ETM3) - (xSEPERATS4ETM3 * xySEPERATS4ETM3)) / ((minPifVAL * xQuadSEPERATS4ETM3) - (xSEPERATS4ETM3^2)));
            aSEPERATS4ETM4 = (((xQuadSEPERATS4ETM4 * ySEPERATS4ETM4) - (xSEPERATS4ETM4 * xySEPERATS4ETM4)) / ((minPifVAL * xQuadSEPERATS4ETM4) - (xSEPERATS4ETM4^2)));
            aSEPERATS4ETM5 = (((xQuadSEPERATS4ETM5 * ySEPERATS4ETM5) - (xSEPERATS4ETM5 * xySEPERATS4ETM5)) / ((minPifVAL * xQuadSEPERATS4ETM5) - (xSEPERATS4ETM5^2)));
            aSEPERATS4ETM7 = (((xQuadSEPERATS4ETM7 * ySEPERATS4ETM7) - (xSEPERATS4ETM7 * xySEPERATS4ETM7)) / ((minPifVAL * xQuadSEPERATS4ETM7) - (xSEPERATS4ETM7^2)));
            
            bSEPERATS4ETM1 = qXYSEPERATS4ETM1 / xxAritQuadSEPERATS4ETM1;
            bSEPERATS4ETM2 = qXYSEPERATS4ETM2 / xxAritQuadSEPERATS4ETM2;
            bSEPERATS4ETM3 = qXYSEPERATS4ETM3 / xxAritQuadSEPERATS4ETM3;
            bSEPERATS4ETM4 = qXYSEPERATS4ETM4 / xxAritQuadSEPERATS4ETM4;
            bSEPERATS4ETM5 = qXYSEPERATS4ETM5 / xxAritQuadSEPERATS4ETM5;
            bSEPERATS4ETM7 = qXYSEPERATS4ETM7 / xxAritQuadSEPERATS4ETM7;
    
            rSEPERATS4ETM1 = (qXYSEPERATS4ETM1 / ((xxAritQuadSEPERATS4ETM1 * yyAritQuadSEPERATS4ETM1)^0.5));
            rSEPERATS4ETM2 = (qXYSEPERATS4ETM2 / ((xxAritQuadSEPERATS4ETM2 * yyAritQuadSEPERATS4ETM2)^0.5));
            rSEPERATS4ETM3 = (qXYSEPERATS4ETM3 / ((xxAritQuadSEPERATS4ETM3 * yyAritQuadSEPERATS4ETM3)^0.5));
            rSEPERATS4ETM4 = (qXYSEPERATS4ETM4 / ((xxAritQuadSEPERATS4ETM4 * yyAritQuadSEPERATS4ETM4)^0.5));
            rSEPERATS4ETM5 = (qXYSEPERATS4ETM5 / ((xxAritQuadSEPERATS4ETM5 * yyAritQuadSEPERATS4ETM5)^0.5));
            rSEPERATS4ETM7 = (qXYSEPERATS4ETM7 / ((xxAritQuadSEPERATS4ETM7 * yyAritQuadSEPERATS4ETM7)^0.5));
    
            rQuadSEPERATS4ETM1 = ((rSEPERATS4ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4ETM2 = ((rSEPERATS4ETM2^2) * 100);
            rQuadSEPERATS4ETM3 = ((rSEPERATS4ETM3^2) * 100);
            rQuadSEPERATS4ETM4 = ((rSEPERATS4ETM4^2) * 100);
            rQuadSEPERATS4ETM5 = ((rSEPERATS4ETM5^2) * 100);
            rQuadSEPERATS4ETM7 = ((rSEPERATS4ETM7^2) * 100);
        
            syxSEPERATS4ETM1 = (((yyAritQuadSEPERATS4ETM1 - ((qXYSEPERATS4ETM1^2) / xxAritQuadSEPERATS4ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM2 = (((yyAritQuadSEPERATS4ETM2 - ((qXYSEPERATS4ETM2^2) / xxAritQuadSEPERATS4ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM3 = (((yyAritQuadSEPERATS4ETM3 - ((qXYSEPERATS4ETM3^2) / xxAritQuadSEPERATS4ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM4 = (((yyAritQuadSEPERATS4ETM4 - ((qXYSEPERATS4ETM4^2) / xxAritQuadSEPERATS4ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM5 = (((yyAritQuadSEPERATS4ETM5 - ((qXYSEPERATS4ETM5^2) / xxAritQuadSEPERATS4ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM7 = (((yyAritQuadSEPERATS4ETM7 - ((qXYSEPERATS4ETM7^2) / xxAritQuadSEPERATS4ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4ETM1 = (((syxSEPERATS4ETM1^2) / xxAritQuadSEPERATS4ETM1)^0.5);
            bStandSEPERATS4ETM2 = (((syxSEPERATS4ETM2^2) / xxAritQuadSEPERATS4ETM2)^0.5);
            bStandSEPERATS4ETM3 = (((syxSEPERATS4ETM3^2) / xxAritQuadSEPERATS4ETM3)^0.5);
            bStandSEPERATS4ETM4 = (((syxSEPERATS4ETM4^2) / xxAritQuadSEPERATS4ETM4)^0.5);
            bStandSEPERATS4ETM5 = (((syxSEPERATS4ETM5^2) / xxAritQuadSEPERATS4ETM5)^0.5);
            bStandSEPERATS4ETM7 = (((syxSEPERATS4ETM7^2) / xxAritQuadSEPERATS4ETM7)^0.5);
    
            aStandSEPERATS4ETM1 = (bStandSEPERATS4ETM1 * ((xQuadSEPERATS4ETM1 / minPifVAL)^0.5));
            aStandSEPERATS4ETM2 = (bStandSEPERATS4ETM2 * ((xQuadSEPERATS4ETM2 / minPifVAL)^0.5));
            aStandSEPERATS4ETM3 = (bStandSEPERATS4ETM3 * ((xQuadSEPERATS4ETM3 / minPifVAL)^0.5));
            aStandSEPERATS4ETM4 = (bStandSEPERATS4ETM4 * ((xQuadSEPERATS4ETM4 / minPifVAL)^0.5));
            aStandSEPERATS4ETM5 = (bStandSEPERATS4ETM5 * ((xQuadSEPERATS4ETM5 / minPifVAL)^0.5));
            aStandSEPERATS4ETM7 = (bStandSEPERATS4ETM7 * ((xQuadSEPERATS4ETM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM1, bSEPERATS4ETM1, rSEPERATS4ETM1, rQuadSEPERATS4ETM1, aStandSEPERATS4ETM1, bStandSEPERATS4ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM2, bSEPERATS4ETM2, rSEPERATS4ETM2, rQuadSEPERATS4ETM2, aStandSEPERATS4ETM2, bStandSEPERATS4ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM3, bSEPERATS4ETM3, rSEPERATS4ETM3, rQuadSEPERATS4ETM3, aStandSEPERATS4ETM3, bStandSEPERATS4ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM4, bSEPERATS4ETM4, rSEPERATS4ETM4, rQuadSEPERATS4ETM4, aStandSEPERATS4ETM4, bStandSEPERATS4ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM5, bSEPERATS4ETM5, rSEPERATS4ETM5, rQuadSEPERATS4ETM5, aStandSEPERATS4ETM5, bStandSEPERATS4ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS4ETM7, bSEPERATS4ETM7, rSEPERATS4ETM7, rQuadSEPERATS4ETM7, aStandSEPERATS4ETM7, bStandSEPERATS4ETM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS4slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS4slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS4slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS4slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS4slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS4slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS4slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT4ETM1[i,j] = (aSEPERATS4ETM1 + (bSEPERATS4ETM1 * REFS4ETM1[i,j]));
                    OUT4ETM2[i,j] = (aSEPERATS4ETM2 + (bSEPERATS4ETM2 * REFS4ETM2[i,j]));
                    OUT4ETM3[i,j] = (aSEPERATS4ETM3 + (bSEPERATS4ETM3 * REFS4ETM3[i,j]));
                    OUT4ETM4[i,j] = (aSEPERATS4ETM4 + (bSEPERATS4ETM4 * REFS4ETM4[i,j]));
                    OUT4ETM5[i,j] = (aSEPERATS4ETM5 + (bSEPERATS4ETM5 * REFS4ETM5[i,j]));
                    OUT4ETM7[i,j] = (aSEPERATS4ETM7 + (bSEPERATS4ETM7 * REFS4ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4ETM1);
        	CreatePyramid(OUT4ETM2);
        	CreatePyramid(OUT4ETM3);
        	CreatePyramid(OUT4ETM4);
        	CreatePyramid(OUT4ETM5);
        	CreatePyramid(OUT4ETM7);
        
        	CreateHistogram(OUT4ETM1);
        	CreateHistogram(OUT4ETM2);
        	CreateHistogram(OUT4ETM3);
        	CreateHistogram(OUT4ETM4);
        	CreateHistogram(OUT4ETM5);
        	CreateHistogram(OUT4ETM7);
            CloseRaster(REFS4ETM1);
            CloseRaster(REFS4ETM2);
            CloseRaster(REFS4ETM3);
            CloseRaster(REFS4ETM4);
            CloseRaster(REFS4ETM5);
            CloseRaster(REFS4ETM7);
    
            CloseRaster(OUT4ETM1);
            CloseRaster(OUT4ETM2);
            CloseRaster(OUT4ETM3);
            CloseRaster(OUT4ETM4);
            CloseRaster(OUT4ETM5);
            CloseRaster(OUT4ETM7);
        
        	printf("Scene 4 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors4 == 6 )
            {
            numeric xAritSEPERATS4TM1, xAritSEPERATS4TM2, xAritSEPERATS4TM3, xAritSEPERATS4TM4, xAritSEPERATS4TM5, xAritSEPERATS4TM7;
            numeric yAritSEPERATS4TM1, yAritSEPERATS4TM2, yAritSEPERATS4TM3, yAritSEPERATS4TM4, yAritSEPERATS4TM5, yAritSEPERATS4TM7;
    
            numeric aSEPERATS4TM1, aSEPERATS4TM2, aSEPERATS4TM3, aSEPERATS4TM4, aSEPERATS4TM5, aSEPERATS4TM7;
            numeric bSEPERATS4TM1, bSEPERATS4TM2, bSEPERATS4TM3, bSEPERATS4TM4, bSEPERATS4TM5, bSEPERATS4TM7;
            numeric rSEPERATS4TM1, rSEPERATS4TM2, rSEPERATS4TM3, rSEPERATS4TM4, rSEPERATS4TM5, rSEPERATS4TM7;
            numeric rQuadSEPERATS4TM1, rQuadSEPERATS4TM2, rQuadSEPERATS4TM3, rQuadSEPERATS4TM4, rQuadSEPERATS4TM5, rQuadSEPERATS4TM7;
            numeric syxSEPERATS4TM1, syxSEPERATS4TM2, syxSEPERATS4TM3, syxSEPERATS4TM4, syxSEPERATS4TM5, syxSEPERATS4TM7;
            numeric bStandSEPERATS4TM1, bStandSEPERATS4TM2, bStandSEPERATS4TM3, bStandSEPERATS4TM4, bStandSEPERATS4TM5, bStandSEPERATS4TM7;
            numeric aStandSEPERATS4TM1, aStandSEPERATS4TM2, aStandSEPERATS4TM3, aStandSEPERATS4TM4, aStandSEPERATS4TM5, aStandSEPERATS4TM7;
    
            numeric xSEPERATS4TM1 = 0;
            numeric xSEPERATS4TM2 = 0;
            numeric xSEPERATS4TM3 = 0;
            numeric xSEPERATS4TM4 = 0;
            numeric xSEPERATS4TM5 = 0;
            numeric xSEPERATS4TM7 = 0;
    
            numeric xQuadSEPERATS4TM1 = 0;
            numeric xQuadSEPERATS4TM2 = 0;
            numeric xQuadSEPERATS4TM3 = 0;
            numeric xQuadSEPERATS4TM4 = 0;
            numeric xQuadSEPERATS4TM5 = 0;
            numeric xQuadSEPERATS4TM7 = 0;
    
            numeric ySEPERATS4TM1 = 0;
            numeric ySEPERATS4TM2 = 0;
            numeric ySEPERATS4TM3 = 0;
            numeric ySEPERATS4TM4 = 0;
            numeric ySEPERATS4TM5 = 0;
            numeric ySEPERATS4TM7 = 0;
    
            numeric yQuadSEPERATS4TM1 = 0;
            numeric yQuadSEPERATS4TM2 = 0;
            numeric yQuadSEPERATS4TM3 = 0;
            numeric yQuadSEPERATS4TM4 = 0;
            numeric yQuadSEPERATS4TM5 = 0;
            numeric yQuadSEPERATS4TM7 = 0;
    
            numeric xySEPERATS4TM1 = 0;
            numeric xySEPERATS4TM2 = 0;
            numeric xySEPERATS4TM3 = 0;
            numeric xySEPERATS4TM4 = 0;
            numeric xySEPERATS4TM5 = 0;
            numeric xySEPERATS4TM7 = 0;
    
            numeric xxAritQuadSEPERATS4TM1 = 0;
            numeric xxAritQuadSEPERATS4TM2 = 0;
            numeric xxAritQuadSEPERATS4TM3 = 0;
            numeric xxAritQuadSEPERATS4TM4 = 0;
            numeric xxAritQuadSEPERATS4TM5 = 0;
            numeric xxAritQuadSEPERATS4TM7 = 0;
    
            numeric yyAritQuadSEPERATS4TM1 = 0;
            numeric yyAritQuadSEPERATS4TM2 = 0;
            numeric yyAritQuadSEPERATS4TM3 = 0;
            numeric yyAritQuadSEPERATS4TM4 = 0;
            numeric yyAritQuadSEPERATS4TM5 = 0;
            numeric yyAritQuadSEPERATS4TM7 = 0;
    
            numeric qXYSEPERATS4TM1 = 0;
            numeric qXYSEPERATS4TM2 = 0;
            numeric qXYSEPERATS4TM3 = 0;
            numeric qXYSEPERATS4TM4 = 0;
            numeric qXYSEPERATS4TM5 = 0;
            numeric qXYSEPERATS4TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS4TM1 = xSEPERATS4TM1 + pifSEPERATS2S4TM1arrayRAND[m];
                xSEPERATS4TM2 = xSEPERATS4TM2 + pifSEPERATS2S4TM2arrayRAND[m];
                xSEPERATS4TM3 = xSEPERATS4TM3 + pifSEPERATS2S4TM3arrayRAND[m];
                xSEPERATS4TM4 = xSEPERATS4TM4 + pifSEPERATS2S4TM4arrayRAND[m];
                xSEPERATS4TM5 = xSEPERATS4TM5 + pifSEPERATS2S4TM5arrayRAND[m];
                xSEPERATS4TM7 = xSEPERATS4TM7 + pifSEPERATS2S4TM7arrayRAND[m];
    
                xQuadSEPERATS4TM1 = (xQuadSEPERATS4TM1 + (pifSEPERATS2S4TM1arrayRAND[m]^2));
                xQuadSEPERATS4TM2 = (xQuadSEPERATS4TM2 + (pifSEPERATS2S4TM2arrayRAND[m]^2));
                xQuadSEPERATS4TM3 = (xQuadSEPERATS4TM3 + (pifSEPERATS2S4TM3arrayRAND[m]^2));
                xQuadSEPERATS4TM4 = (xQuadSEPERATS4TM4 + (pifSEPERATS2S4TM4arrayRAND[m]^2));
                xQuadSEPERATS4TM5 = (xQuadSEPERATS4TM5 + (pifSEPERATS2S4TM5arrayRAND[m]^2));
                xQuadSEPERATS4TM7 = (xQuadSEPERATS4TM7 + (pifSEPERATS2S4TM7arrayRAND[m]^2));
    
                ySEPERATS4TM1 = ySEPERATS4TM1 + pifSEPERATS4slaveTM1arrayRAND[m];
                ySEPERATS4TM2 = ySEPERATS4TM2 + pifSEPERATS4slaveTM2arrayRAND[m];
                ySEPERATS4TM3 = ySEPERATS4TM3 + pifSEPERATS4slaveTM3arrayRAND[m];
                ySEPERATS4TM4 = ySEPERATS4TM4 + pifSEPERATS4slaveTM4arrayRAND[m];
                ySEPERATS4TM5 = ySEPERATS4TM5 + pifSEPERATS4slaveTM5arrayRAND[m];
                ySEPERATS4TM7 = ySEPERATS4TM7 + pifSEPERATS4slaveTM7arrayRAND[m];
                
                yQuadSEPERATS4TM1 = (yQuadSEPERATS4TM1 + (pifSEPERATS4slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS4TM2 = (yQuadSEPERATS4TM2 + (pifSEPERATS4slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS4TM3 = (yQuadSEPERATS4TM3 + (pifSEPERATS4slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS4TM4 = (yQuadSEPERATS4TM4 + (pifSEPERATS4slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS4TM5 = (yQuadSEPERATS4TM5 + (pifSEPERATS4slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS4TM7 = (yQuadSEPERATS4TM7 + (pifSEPERATS4slaveTM7arrayRAND[m]^2));
    
                xySEPERATS4TM1 = (xySEPERATS4TM1 + (pifSEPERATS2S4TM1arrayRAND[m] * pifSEPERATS4slaveTM1arrayRAND[m]));
                xySEPERATS4TM2 = (xySEPERATS4TM2 + (pifSEPERATS2S4TM2arrayRAND[m] * pifSEPERATS4slaveTM2arrayRAND[m]));
                xySEPERATS4TM3 = (xySEPERATS4TM3 + (pifSEPERATS2S4TM3arrayRAND[m] * pifSEPERATS4slaveTM3arrayRAND[m]));
                xySEPERATS4TM4 = (xySEPERATS4TM4 + (pifSEPERATS2S4TM4arrayRAND[m] * pifSEPERATS4slaveTM4arrayRAND[m]));
                xySEPERATS4TM5 = (xySEPERATS4TM5 + (pifSEPERATS2S4TM5arrayRAND[m] * pifSEPERATS4slaveTM5arrayRAND[m]));
                xySEPERATS4TM7 = (xySEPERATS4TM7 + (pifSEPERATS2S4TM7arrayRAND[m] * pifSEPERATS4slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS4TM1 = xSEPERATS4TM1 / minPifVAL;
            xAritSEPERATS4TM2 = xSEPERATS4TM2 / minPifVAL;
            xAritSEPERATS4TM3 = xSEPERATS4TM3 / minPifVAL;
            xAritSEPERATS4TM4 = xSEPERATS4TM4 / minPifVAL;
            xAritSEPERATS4TM5 = xSEPERATS4TM5 / minPifVAL;
            xAritSEPERATS4TM7 = xSEPERATS4TM7 / minPifVAL;
    
            yAritSEPERATS4TM1 = ySEPERATS4TM1 / minPifVAL;
            yAritSEPERATS4TM2 = ySEPERATS4TM2 / minPifVAL;
            yAritSEPERATS4TM3 = ySEPERATS4TM3 / minPifVAL;
            yAritSEPERATS4TM4 = ySEPERATS4TM4 / minPifVAL;
            yAritSEPERATS4TM5 = ySEPERATS4TM5 / minPifVAL;
            yAritSEPERATS4TM7 = ySEPERATS4TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4TM1 = (xxAritQuadSEPERATS4TM1 + ((pifSEPERATS2S4TM1arrayRAND[n] - xAritSEPERATS4TM1)^2));
                xxAritQuadSEPERATS4TM2 = (xxAritQuadSEPERATS4TM2 + ((pifSEPERATS2S4TM2arrayRAND[n] - xAritSEPERATS4TM2)^2));
                xxAritQuadSEPERATS4TM3 = (xxAritQuadSEPERATS4TM3 + ((pifSEPERATS2S4TM3arrayRAND[n] - xAritSEPERATS4TM3)^2));
                xxAritQuadSEPERATS4TM4 = (xxAritQuadSEPERATS4TM4 + ((pifSEPERATS2S4TM4arrayRAND[n] - xAritSEPERATS4TM4)^2));
                xxAritQuadSEPERATS4TM5 = (xxAritQuadSEPERATS4TM5 + ((pifSEPERATS2S4TM5arrayRAND[n] - xAritSEPERATS4TM5)^2));
                xxAritQuadSEPERATS4TM7 = (xxAritQuadSEPERATS4TM7 + ((pifSEPERATS2S4TM7arrayRAND[n] - xAritSEPERATS4TM7)^2));
    
                yyAritQuadSEPERATS4TM1 = (yyAritQuadSEPERATS4TM1 + ((pifSEPERATS4slaveTM1arrayRAND[n] - yAritSEPERATS4TM1)^2));
                yyAritQuadSEPERATS4TM2 = (yyAritQuadSEPERATS4TM2 + ((pifSEPERATS4slaveTM2arrayRAND[n] - yAritSEPERATS4TM2)^2));
                yyAritQuadSEPERATS4TM3 = (yyAritQuadSEPERATS4TM3 + ((pifSEPERATS4slaveTM3arrayRAND[n] - yAritSEPERATS4TM3)^2));
                yyAritQuadSEPERATS4TM4 = (yyAritQuadSEPERATS4TM4 + ((pifSEPERATS4slaveTM4arrayRAND[n] - yAritSEPERATS4TM4)^2));
                yyAritQuadSEPERATS4TM5 = (yyAritQuadSEPERATS4TM5 + ((pifSEPERATS4slaveTM5arrayRAND[n] - yAritSEPERATS4TM5)^2));
                yyAritQuadSEPERATS4TM7 = (yyAritQuadSEPERATS4TM7 + ((pifSEPERATS4slaveTM7arrayRAND[n] - yAritSEPERATS4TM7)^2));
    
                qXYSEPERATS4TM1 = (qXYSEPERATS4TM1 + ((pifSEPERATS2S4TM1arrayRAND[n] - xAritSEPERATS4TM1) * (pifSEPERATS4slaveTM1arrayRAND[n] - yAritSEPERATS4TM1)));
                qXYSEPERATS4TM2 = (qXYSEPERATS4TM2 + ((pifSEPERATS2S4TM2arrayRAND[n] - xAritSEPERATS4TM2) * (pifSEPERATS4slaveTM2arrayRAND[n] - yAritSEPERATS4TM2)));
                qXYSEPERATS4TM3 = (qXYSEPERATS4TM3 + ((pifSEPERATS2S4TM3arrayRAND[n] - xAritSEPERATS4TM3) * (pifSEPERATS4slaveTM3arrayRAND[n] - yAritSEPERATS4TM3)));
                qXYSEPERATS4TM4 = (qXYSEPERATS4TM4 + ((pifSEPERATS2S4TM4arrayRAND[n] - xAritSEPERATS4TM4) * (pifSEPERATS4slaveTM4arrayRAND[n] - yAritSEPERATS4TM4)));
                qXYSEPERATS4TM5 = (qXYSEPERATS4TM5 + ((pifSEPERATS2S4TM5arrayRAND[n] - xAritSEPERATS4TM5) * (pifSEPERATS4slaveTM5arrayRAND[n] - yAritSEPERATS4TM5)));
                qXYSEPERATS4TM7 = (qXYSEPERATS4TM7 + ((pifSEPERATS2S4TM7arrayRAND[n] - xAritSEPERATS4TM7) * (pifSEPERATS4slaveTM7arrayRAND[n] - yAritSEPERATS4TM7)));
            }
        
            aSEPERATS4TM1 = (((xQuadSEPERATS4TM1 * ySEPERATS4TM1) - (xSEPERATS4TM1 * xySEPERATS4TM1)) / ((minPifVAL * xQuadSEPERATS4TM1) - (xSEPERATS4TM1^2)));
            aSEPERATS4TM2 = (((xQuadSEPERATS4TM2 * ySEPERATS4TM2) - (xSEPERATS4TM2 * xySEPERATS4TM2)) / ((minPifVAL * xQuadSEPERATS4TM2) - (xSEPERATS4TM2^2)));
            aSEPERATS4TM3 = (((xQuadSEPERATS4TM3 * ySEPERATS4TM3) - (xSEPERATS4TM3 * xySEPERATS4TM3)) / ((minPifVAL * xQuadSEPERATS4TM3) - (xSEPERATS4TM3^2)));
            aSEPERATS4TM4 = (((xQuadSEPERATS4TM4 * ySEPERATS4TM4) - (xSEPERATS4TM4 * xySEPERATS4TM4)) / ((minPifVAL * xQuadSEPERATS4TM4) - (xSEPERATS4TM4^2)));
            aSEPERATS4TM5 = (((xQuadSEPERATS4TM5 * ySEPERATS4TM5) - (xSEPERATS4TM5 * xySEPERATS4TM5)) / ((minPifVAL * xQuadSEPERATS4TM5) - (xSEPERATS4TM5^2)));
            aSEPERATS4TM7 = (((xQuadSEPERATS4TM7 * ySEPERATS4TM7) - (xSEPERATS4TM7 * xySEPERATS4TM7)) / ((minPifVAL * xQuadSEPERATS4TM7) - (xSEPERATS4TM7^2)));
            
            bSEPERATS4TM1 = qXYSEPERATS4TM1 / xxAritQuadSEPERATS4TM1;
            bSEPERATS4TM2 = qXYSEPERATS4TM2 / xxAritQuadSEPERATS4TM2;
            bSEPERATS4TM3 = qXYSEPERATS4TM3 / xxAritQuadSEPERATS4TM3;
            bSEPERATS4TM4 = qXYSEPERATS4TM4 / xxAritQuadSEPERATS4TM4;
            bSEPERATS4TM5 = qXYSEPERATS4TM5 / xxAritQuadSEPERATS4TM5;
            bSEPERATS4TM7 = qXYSEPERATS4TM7 / xxAritQuadSEPERATS4TM7;
    
            rSEPERATS4TM1 = (qXYSEPERATS4TM1 / ((xxAritQuadSEPERATS4TM1 * yyAritQuadSEPERATS4TM1)^0.5));
            rSEPERATS4TM2 = (qXYSEPERATS4TM2 / ((xxAritQuadSEPERATS4TM2 * yyAritQuadSEPERATS4TM2)^0.5));
            rSEPERATS4TM3 = (qXYSEPERATS4TM3 / ((xxAritQuadSEPERATS4TM3 * yyAritQuadSEPERATS4TM3)^0.5));
            rSEPERATS4TM4 = (qXYSEPERATS4TM4 / ((xxAritQuadSEPERATS4TM4 * yyAritQuadSEPERATS4TM4)^0.5));
            rSEPERATS4TM5 = (qXYSEPERATS4TM5 / ((xxAritQuadSEPERATS4TM5 * yyAritQuadSEPERATS4TM5)^0.5));
            rSEPERATS4TM7 = (qXYSEPERATS4TM7 / ((xxAritQuadSEPERATS4TM7 * yyAritQuadSEPERATS4TM7)^0.5));
    
            rQuadSEPERATS4TM1 = ((rSEPERATS4TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4TM2 = ((rSEPERATS4TM2^2) * 100);
            rQuadSEPERATS4TM3 = ((rSEPERATS4TM3^2) * 100);
            rQuadSEPERATS4TM4 = ((rSEPERATS4TM4^2) * 100);
            rQuadSEPERATS4TM5 = ((rSEPERATS4TM5^2) * 100);
            rQuadSEPERATS4TM7 = ((rSEPERATS4TM7^2) * 100);
        
            syxSEPERATS4TM1 = (((yyAritQuadSEPERATS4TM1 - ((qXYSEPERATS4TM1^2) / xxAritQuadSEPERATS4TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM2 = (((yyAritQuadSEPERATS4TM2 - ((qXYSEPERATS4TM2^2) / xxAritQuadSEPERATS4TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM3 = (((yyAritQuadSEPERATS4TM3 - ((qXYSEPERATS4TM3^2) / xxAritQuadSEPERATS4TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM4 = (((yyAritQuadSEPERATS4TM4 - ((qXYSEPERATS4TM4^2) / xxAritQuadSEPERATS4TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM5 = (((yyAritQuadSEPERATS4TM5 - ((qXYSEPERATS4TM5^2) / xxAritQuadSEPERATS4TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM7 = (((yyAritQuadSEPERATS4TM7 - ((qXYSEPERATS4TM7^2) / xxAritQuadSEPERATS4TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4TM1 = (((syxSEPERATS4TM1^2) / xxAritQuadSEPERATS4TM1)^0.5);
            bStandSEPERATS4TM2 = (((syxSEPERATS4TM2^2) / xxAritQuadSEPERATS4TM2)^0.5);
            bStandSEPERATS4TM3 = (((syxSEPERATS4TM3^2) / xxAritQuadSEPERATS4TM3)^0.5);
            bStandSEPERATS4TM4 = (((syxSEPERATS4TM4^2) / xxAritQuadSEPERATS4TM4)^0.5);
            bStandSEPERATS4TM5 = (((syxSEPERATS4TM5^2) / xxAritQuadSEPERATS4TM5)^0.5);
            bStandSEPERATS4TM7 = (((syxSEPERATS4TM7^2) / xxAritQuadSEPERATS4TM7)^0.5);
    
            aStandSEPERATS4TM1 = (bStandSEPERATS4TM1 * ((xQuadSEPERATS4TM1 / minPifVAL)^0.5));
            aStandSEPERATS4TM2 = (bStandSEPERATS4TM2 * ((xQuadSEPERATS4TM2 / minPifVAL)^0.5));
            aStandSEPERATS4TM3 = (bStandSEPERATS4TM3 * ((xQuadSEPERATS4TM3 / minPifVAL)^0.5));
            aStandSEPERATS4TM4 = (bStandSEPERATS4TM4 * ((xQuadSEPERATS4TM4 / minPifVAL)^0.5));
            aStandSEPERATS4TM5 = (bStandSEPERATS4TM5 * ((xQuadSEPERATS4TM5 / minPifVAL)^0.5));
            aStandSEPERATS4TM7 = (bStandSEPERATS4TM7 * ((xQuadSEPERATS4TM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM1, bSEPERATS4TM1, rSEPERATS4TM1, rQuadSEPERATS4TM1, aStandSEPERATS4TM1, bStandSEPERATS4TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM2, bSEPERATS4TM2, rSEPERATS4TM2, rQuadSEPERATS4TM2, aStandSEPERATS4TM2, bStandSEPERATS4TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM3, bSEPERATS4TM3, rSEPERATS4TM3, rQuadSEPERATS4TM3, aStandSEPERATS4TM3, bStandSEPERATS4TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM4, bSEPERATS4TM4, rSEPERATS4TM4, rQuadSEPERATS4TM4, aStandSEPERATS4TM4, bStandSEPERATS4TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM5, bSEPERATS4TM5, rSEPERATS4TM5, rQuadSEPERATS4TM5, aStandSEPERATS4TM5, bStandSEPERATS4TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS4TM7, bSEPERATS4TM7, rSEPERATS4TM7, rQuadSEPERATS4TM7, aStandSEPERATS4TM7, bStandSEPERATS4TM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS4slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS4slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS4slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS4slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS4slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS4slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS4slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT4TM1[i,j] = (aSEPERATS4TM1 + (bSEPERATS4TM1 * REFS4TM1[i,j]));
                    OUT4TM2[i,j] = (aSEPERATS4TM2 + (bSEPERATS4TM2 * REFS4TM2[i,j]));
                    OUT4TM3[i,j] = (aSEPERATS4TM3 + (bSEPERATS4TM3 * REFS4TM3[i,j]));
                    OUT4TM4[i,j] = (aSEPERATS4TM4 + (bSEPERATS4TM4 * REFS4TM4[i,j]));
                    OUT4TM5[i,j] = (aSEPERATS4TM5 + (bSEPERATS4TM5 * REFS4TM5[i,j]));
                    OUT4TM7[i,j] = (aSEPERATS4TM7 + (bSEPERATS4TM7 * REFS4TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4TM1);
        	CreatePyramid(OUT4TM2);
        	CreatePyramid(OUT4TM3);
        	CreatePyramid(OUT4TM4);
        	CreatePyramid(OUT4TM5);
        	CreatePyramid(OUT4TM7);
        
        	CreateHistogram(OUT4TM1);
        	CreateHistogram(OUT4TM2);
        	CreateHistogram(OUT4TM3);
        	CreateHistogram(OUT4TM4);
        	CreateHistogram(OUT4TM5);
        	CreateHistogram(OUT4TM7);
            CloseRaster(REFS4TM1);
            CloseRaster(REFS4TM2);
            CloseRaster(REFS4TM3);
            CloseRaster(REFS4TM4);
            CloseRaster(REFS4TM5);
            CloseRaster(REFS4TM7);
    
            CloseRaster(OUT4TM1);
            CloseRaster(OUT4TM2);
            CloseRaster(OUT4TM3);
            CloseRaster(OUT4TM4);
            CloseRaster(OUT4TM5);
            CloseRaster(OUT4TM7);
        
        	printf("Scene 4 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS4MSS1, xAritSEPERATS4MSS2, xAritSEPERATS4MSS4;
            numeric yAritSEPERATS4MSS1, yAritSEPERATS4MSS2, yAritSEPERATS4MSS4;
    
            numeric aSEPERATS4MSS1, aSEPERATS4MSS2, aSEPERATS4MSS4;
            numeric bSEPERATS4MSS1, bSEPERATS4MSS2, bSEPERATS4MSS4;
            numeric rSEPERATS4MSS1, rSEPERATS4MSS2, rSEPERATS4MSS4;
            numeric rQuadSEPERATS4MSS1, rQuadSEPERATS4MSS2, rQuadSEPERATS4MSS4;
            numeric syxSEPERATS4MSS1, syxSEPERATS4MSS2, syxSEPERATS4MSS4;
            numeric bStandSEPERATS4MSS1, bStandSEPERATS4MSS2, bStandSEPERATS4MSS4;
            numeric aStandSEPERATS4MSS1, aStandSEPERATS4MSS2, aStandSEPERATS4MSS4;
    
            numeric xSEPERATS4MSS1 = 0;
            numeric xSEPERATS4MSS2 = 0;
            numeric xSEPERATS4MSS4 = 0;
    
            numeric xQuadSEPERATS4MSS1 = 0;
            numeric xQuadSEPERATS4MSS2 = 0;
            numeric xQuadSEPERATS4MSS4 = 0;
    
            numeric ySEPERATS4MSS1 = 0;
            numeric ySEPERATS4MSS2 = 0;
            numeric ySEPERATS4MSS4 = 0;
    
            numeric yQuadSEPERATS4MSS1 = 0;
            numeric yQuadSEPERATS4MSS2 = 0;
            numeric yQuadSEPERATS4MSS4 = 0;
    
            numeric xySEPERATS4MSS1 = 0;
            numeric xySEPERATS4MSS2 = 0;
            numeric xySEPERATS4MSS4 = 0;
    
            numeric xxAritQuadSEPERATS4MSS1 = 0;
            numeric xxAritQuadSEPERATS4MSS2 = 0;
            numeric xxAritQuadSEPERATS4MSS4 = 0;
    
            numeric yyAritQuadSEPERATS4MSS1 = 0;
            numeric yyAritQuadSEPERATS4MSS2 = 0;
            numeric yyAritQuadSEPERATS4MSS4 = 0;
    
            numeric qXYSEPERATS4MSS1 = 0;
            numeric qXYSEPERATS4MSS2 = 0;
            numeric qXYSEPERATS4MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS4MSS1 = xSEPERATS4MSS1 + pifSEPERATS2S4TM2arrayRAND[m];
                xSEPERATS4MSS2 = xSEPERATS4MSS2 + pifSEPERATS2S4TM3arrayRAND[m];
                xSEPERATS4MSS4 = xSEPERATS4MSS4 + pifSEPERATS2S4TM4arrayRAND[m];
    
                xQuadSEPERATS4MSS1 = (xQuadSEPERATS4MSS1 + (pifSEPERATS2S4TM2arrayRAND[m]^2));
                xQuadSEPERATS4MSS2 = (xQuadSEPERATS4MSS2 + (pifSEPERATS2S4TM3arrayRAND[m]^2));
                xQuadSEPERATS4MSS4 = (xQuadSEPERATS4MSS4 + (pifSEPERATS2S4TM4arrayRAND[m]^2));
    
                ySEPERATS4MSS1 = ySEPERATS4MSS1 + pifSEPERATS4slaveMSS1arrayRAND[m];
                ySEPERATS4MSS2 = ySEPERATS4MSS2 + pifSEPERATS4slaveMSS2arrayRAND[m];
                ySEPERATS4MSS4 = ySEPERATS4MSS4 + pifSEPERATS4slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS4MSS1 = (yQuadSEPERATS4MSS1 + (pifSEPERATS4slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS4MSS2 = (yQuadSEPERATS4MSS2 + (pifSEPERATS4slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS4MSS4 = (yQuadSEPERATS4MSS4 + (pifSEPERATS4slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS4MSS1 = (xySEPERATS4MSS1 + (pifSEPERATS2S4TM2arrayRAND[m] * pifSEPERATS4slaveMSS1arrayRAND[m]));
                xySEPERATS4MSS2 = (xySEPERATS4MSS2 + (pifSEPERATS2S4TM3arrayRAND[m] * pifSEPERATS4slaveMSS2arrayRAND[m]));
                xySEPERATS4MSS4 = (xySEPERATS4MSS4 + (pifSEPERATS2S4TM4arrayRAND[m] * pifSEPERATS4slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS4MSS1 = xSEPERATS4MSS1 / minPifVAL;
            xAritSEPERATS4MSS2 = xSEPERATS4MSS2 / minPifVAL;
            xAritSEPERATS4MSS4 = xSEPERATS4MSS4 / minPifVAL;
    
            yAritSEPERATS4MSS1 = ySEPERATS4MSS1 / minPifVAL;
            yAritSEPERATS4MSS2 = ySEPERATS4MSS2 / minPifVAL;
            yAritSEPERATS4MSS4 = ySEPERATS4MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4MSS1 = (xxAritQuadSEPERATS4MSS1 + ((pifSEPERATS2S4TM2arrayRAND[n] - xAritSEPERATS4MSS1)^2));
                xxAritQuadSEPERATS4MSS2 = (xxAritQuadSEPERATS4MSS2 + ((pifSEPERATS2S4TM3arrayRAND[n] - xAritSEPERATS4MSS2)^2));
                xxAritQuadSEPERATS4MSS4 = (xxAritQuadSEPERATS4MSS4 + ((pifSEPERATS2S4TM4arrayRAND[n] - xAritSEPERATS4MSS4)^2));
    
                yyAritQuadSEPERATS4MSS1 = (yyAritQuadSEPERATS4MSS1 + ((pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)^2));
                yyAritQuadSEPERATS4MSS2 = (yyAritQuadSEPERATS4MSS2 + ((pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)^2));
                yyAritQuadSEPERATS4MSS4 = (yyAritQuadSEPERATS4MSS4 + ((pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)^2));
    
                qXYSEPERATS4MSS1 = (qXYSEPERATS4MSS1 + ((pifSEPERATS2S4TM2arrayRAND[n] - xAritSEPERATS4MSS1) * (pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)));
                qXYSEPERATS4MSS2 = (qXYSEPERATS4MSS2 + ((pifSEPERATS2S4TM3arrayRAND[n] - xAritSEPERATS4MSS2) * (pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)));
                qXYSEPERATS4MSS4 = (qXYSEPERATS4MSS4 + ((pifSEPERATS2S4TM4arrayRAND[n] - xAritSEPERATS4MSS4) * (pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)));
            }
        
            aSEPERATS4MSS1 = (((xQuadSEPERATS4MSS1 * ySEPERATS4MSS1) - (xSEPERATS4MSS1 * xySEPERATS4MSS1)) / ((minPifVAL * xQuadSEPERATS4MSS1) - (xSEPERATS4MSS1^2)));
            aSEPERATS4MSS2 = (((xQuadSEPERATS4MSS2 * ySEPERATS4MSS2) - (xSEPERATS4MSS2 * xySEPERATS4MSS2)) / ((minPifVAL * xQuadSEPERATS4MSS2) - (xSEPERATS4MSS2^2)));
            aSEPERATS4MSS4 = (((xQuadSEPERATS4MSS4 * ySEPERATS4MSS4) - (xSEPERATS4MSS4 * xySEPERATS4MSS4)) / ((minPifVAL * xQuadSEPERATS4MSS4) - (xSEPERATS4MSS4^2)));
            
            bSEPERATS4MSS1 = qXYSEPERATS4MSS1 / xxAritQuadSEPERATS4MSS1;
            bSEPERATS4MSS2 = qXYSEPERATS4MSS2 / xxAritQuadSEPERATS4MSS2;
            bSEPERATS4MSS4 = qXYSEPERATS4MSS4 / xxAritQuadSEPERATS4MSS4;
    
            rSEPERATS4MSS1 = (qXYSEPERATS4MSS1 / ((xxAritQuadSEPERATS4MSS1 * yyAritQuadSEPERATS4MSS1)^0.5));
            rSEPERATS4MSS2 = (qXYSEPERATS4MSS2 / ((xxAritQuadSEPERATS4MSS2 * yyAritQuadSEPERATS4MSS2)^0.5));
            rSEPERATS4MSS4 = (qXYSEPERATS4MSS4 / ((xxAritQuadSEPERATS4MSS4 * yyAritQuadSEPERATS4MSS4)^0.5));
    
            rQuadSEPERATS4MSS1 = ((rSEPERATS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4MSS2 = ((rSEPERATS4MSS2^2) * 100);
            rQuadSEPERATS4MSS4 = ((rSEPERATS4MSS4^2) * 100);
        
            syxSEPERATS4MSS1 = (((yyAritQuadSEPERATS4MSS1 - ((qXYSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS2 = (((yyAritQuadSEPERATS4MSS2 - ((qXYSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS4 = (((yyAritQuadSEPERATS4MSS4 - ((qXYSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4MSS1 = (((syxSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)^0.5);
            bStandSEPERATS4MSS2 = (((syxSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)^0.5);
            bStandSEPERATS4MSS4 = (((syxSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)^0.5);
    
            aStandSEPERATS4MSS1 = (bStandSEPERATS4MSS1 * ((xQuadSEPERATS4MSS1 / minPifVAL)^0.5));
            aStandSEPERATS4MSS2 = (bStandSEPERATS4MSS2 * ((xQuadSEPERATS4MSS2 / minPifVAL)^0.5));
            aStandSEPERATS4MSS4 = (bStandSEPERATS4MSS4 * ((xQuadSEPERATS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS1, bSEPERATS4MSS1, rSEPERATS4MSS1, rQuadSEPERATS4MSS1, aStandSEPERATS4MSS1, bStandSEPERATS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS2, bSEPERATS4MSS2, rSEPERATS4MSS2, rQuadSEPERATS4MSS2, aStandSEPERATS4MSS2, bStandSEPERATS4MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS4, bSEPERATS4MSS4, rSEPERATS4MSS4, rQuadSEPERATS4MSS4, aStandSEPERATS4MSS4, bStandSEPERATS4MSS4);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS4slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS4slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS4slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aSEPERATS4MSS1 + (bSEPERATS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aSEPERATS4MSS2 + (bSEPERATS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = REFS4MSS3[i,j];
                    OUT4MSS4[i,j] = (aSEPERATS4MSS4 + (bSEPERATS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT4MSS1);
            CreatePyramid(OUT4MSS2);
            CreatePyramid(OUT4MSS3);
            CreatePyramid(OUT4MSS4);
        
            CreateHistogram(OUT4MSS1);
            CreateHistogram(OUT4MSS2);
            CreateHistogram(OUT4MSS3);
            CreateHistogram(OUT4MSS4);
            
            CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
        }
    
        else
        {
        printf("Scene 2 - Master Scene (MSS):\n");
        printf("Scene 2 array values used for regression computation:\n");
	    printf("For Scene 2 (Master) and Slave (Scene 1):");
        printf("MSS1: %12f ", pifSEPERATS2S1MSS1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S1MSS1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S1MSS1arrayRAND[minPifVAL]);
    
        printf("MSS2: %12f ", pifSEPERATS2S1MSS2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S1MSS2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S1MSS2arrayRAND[minPifVAL]);
    
        printf("MSS3: %12f ", pifSEPERATS2S1MSS3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S1MSS3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S1MSS3arrayRAND[minPifVAL]);
    
        printf("MSS4: %12f ", pifSEPERATS2S1MSS4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S1MSS4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S1MSS4arrayRAND[minPifVAL]);
    
        
	    printf("For Scene 2 (Master) and Slave (Scene 3):");
        printf("MSS1: %12f ", pifSEPERATS2S3MSS1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S3MSS1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S3MSS1arrayRAND[minPifVAL]);
    
        printf("MSS2: %12f ", pifSEPERATS2S3MSS2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S3MSS2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S3MSS2arrayRAND[minPifVAL]);
    
        printf("MSS3: %12f ", pifSEPERATS2S3MSS3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S3MSS3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S3MSS3arrayRAND[minPifVAL]);
    
        printf("MSS4: %12f ", pifSEPERATS2S3MSS4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S3MSS4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S3MSS4arrayRAND[minPifVAL]);
	    printf("For Scene 2 (Master) and Slave (Scene 4):");
        printf("MSS1: %12f ", pifSEPERATS2S4MSS1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S4MSS1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S4MSS1arrayRAND[minPifVAL]);
    
        printf("MSS2: %12f ", pifSEPERATS2S4MSS2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S4MSS2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S4MSS2arrayRAND[minPifVAL]);
    
        printf("MSS3: %12f ", pifSEPERATS2S4MSS3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S4MSS3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S4MSS3arrayRAND[minPifVAL]);
    
        printf("MSS4: %12f ", pifSEPERATS2S4MSS4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS2S4MSS4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS2S4MSS4arrayRAND[minPifVAL]);
                for i = 1 to MSSlins
                {
                    for j = 1 to MSScols
                    {
                    OUT2MSS1[i,j] = REFS2MSS1[i,j];
                    OUT2MSS2[i,j] = REFS2MSS2[i,j];
                    OUT2MSS3[i,j] = REFS2MSS3[i,j];
                    OUT2MSS4[i,j] = REFS2MSS4[i,j];
                    }
                }
            
        CreatePyramid(OUT2MSS1);
        CreatePyramid(OUT2MSS2);
        CreatePyramid(OUT2MSS3);
        CreatePyramid(OUT2MSS4);
      
        CreateHistogram(OUT2MSS1);
        CreateHistogram(OUT2MSS2);
        CreateHistogram(OUT2MSS3);
        CreateHistogram(OUT2MSS4);
        
        CloseRaster(REFS2MSS1);
        CloseRaster(REFS2MSS2);
        CloseRaster(REFS2MSS3);
        CloseRaster(REFS2MSS4);
        
        CloseRaster(OUT2MSS1);
        CloseRaster(OUT2MSS2);
        CloseRaster(OUT2MSS3);
        CloseRaster(OUT2MSS4);
            
        printf("Scene 2 (Master) output was written, histogram created and pyramid written...\n\n\n");     
                   
            if ( sensors1 == 7 )
            {
        		printf("Master: Scene 2 (MSS), Slave: Scene 1 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors1 == 6 )
            {
         		printf("Master: Scene 2 (MSS), Slave: Scene 1 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS1MSS1, xAritSEPERATS1MSS2, xAritSEPERATS1MSS3, xAritSEPERATS1MSS4;
            numeric yAritSEPERATS1MSS1, yAritSEPERATS1MSS2, yAritSEPERATS1MSS3, yAritSEPERATS1MSS4;
    
            numeric aSEPERATS1MSS1, aSEPERATS1MSS2, aSEPERATS1MSS3, aSEPERATS1MSS4;
            numeric bSEPERATS1MSS1, bSEPERATS1MSS2, bSEPERATS1MSS3, bSEPERATS1MSS4;
            numeric rSEPERATS1MSS1, rSEPERATS1MSS2, rSEPERATS1MSS3, rSEPERATS1MSS4;
            numeric rQuadSEPERATS1MSS1, rQuadSEPERATS1MSS2, rQuadSEPERATS1MSS3, rQuadSEPERATS1MSS4;
            numeric syxSEPERATS1MSS1, syxSEPERATS1MSS2, syxSEPERATS1MSS3, syxSEPERATS1MSS4;
            numeric bStandSEPERATS1MSS1, bStandSEPERATS1MSS2, bStandSEPERATS1MSS3, bStandSEPERATS1MSS4;
            numeric aStandSEPERATS1MSS1, aStandSEPERATS1MSS2, aStandSEPERATS1MSS3, aStandSEPERATS1MSS4;
    
            numeric xSEPERATS1MSS1 = 0;
            numeric xSEPERATS1MSS2 = 0;
            numeric xSEPERATS1MSS3 = 0;
            numeric xSEPERATS1MSS4 = 0;
    
            numeric xQuadSEPERATS1MSS1 = 0;
            numeric xQuadSEPERATS1MSS2 = 0;
            numeric xQuadSEPERATS1MSS3 = 0;
            numeric xQuadSEPERATS1MSS4 = 0;
    
            numeric ySEPERATS1MSS1 = 0;
            numeric ySEPERATS1MSS2 = 0;
            numeric ySEPERATS1MSS3 = 0;
            numeric ySEPERATS1MSS4 = 0;
    
            numeric yQuadSEPERATS1MSS1 = 0;
            numeric yQuadSEPERATS1MSS2 = 0;
            numeric yQuadSEPERATS1MSS3 = 0;
            numeric yQuadSEPERATS1MSS4 = 0;
    
            numeric xySEPERATS1MSS1 = 0;
            numeric xySEPERATS1MSS2 = 0;
            numeric xySEPERATS1MSS3 = 0;
            numeric xySEPERATS1MSS4 = 0;
    
            numeric xxAritQuadSEPERATS1MSS1 = 0;
            numeric xxAritQuadSEPERATS1MSS2 = 0;
            numeric xxAritQuadSEPERATS1MSS3 = 0;
            numeric xxAritQuadSEPERATS1MSS4 = 0;
    
            numeric yyAritQuadSEPERATS1MSS1 = 0;
            numeric yyAritQuadSEPERATS1MSS2 = 0;
            numeric yyAritQuadSEPERATS1MSS3 = 0;
            numeric yyAritQuadSEPERATS1MSS4 = 0;
    
            numeric qXYSEPERATS1MSS1 = 0;
            numeric qXYSEPERATS1MSS2 = 0;
            numeric qXYSEPERATS1MSS3 = 0;
            numeric qXYSEPERATS1MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1MSS1 = xSEPERATS1MSS1 + pifSEPERATS2S1MSS1arrayRAND[m];
                xSEPERATS1MSS2 = xSEPERATS1MSS2 + pifSEPERATS2S1MSS2arrayRAND[m];
                xSEPERATS1MSS3 = xSEPERATS1MSS3 + pifSEPERATS2S1MSS3arrayRAND[m];
                xSEPERATS1MSS4 = xSEPERATS1MSS4 + pifSEPERATS2S1MSS4arrayRAND[m];
    
                xQuadSEPERATS1MSS1 = (xQuadSEPERATS1MSS1 + (pifSEPERATS2S1MSS1arrayRAND[m]^2));
                xQuadSEPERATS1MSS2 = (xQuadSEPERATS1MSS2 + (pifSEPERATS2S1MSS2arrayRAND[m]^2));
                xQuadSEPERATS1MSS3 = (xQuadSEPERATS1MSS3 + (pifSEPERATS2S1MSS3arrayRAND[m]^2));
                xQuadSEPERATS1MSS4 = (xQuadSEPERATS1MSS4 + (pifSEPERATS2S1MSS4arrayRAND[m]^2));
    
                ySEPERATS1MSS1 = ySEPERATS1MSS1 + pifSEPERATS1slaveMSS1arrayRAND[m];
                ySEPERATS1MSS2 = ySEPERATS1MSS2 + pifSEPERATS1slaveMSS2arrayRAND[m];
                ySEPERATS1MSS3 = ySEPERATS1MSS3 + pifSEPERATS1slaveMSS3arrayRAND[m];
                ySEPERATS1MSS4 = ySEPERATS1MSS4 + pifSEPERATS1slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS1MSS1 = (yQuadSEPERATS1MSS1 + (pifSEPERATS1slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS1MSS2 = (yQuadSEPERATS1MSS2 + (pifSEPERATS1slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS1MSS3 = (yQuadSEPERATS1MSS3 + (pifSEPERATS1slaveMSS3arrayRAND[m]^2));
                yQuadSEPERATS1MSS4 = (yQuadSEPERATS1MSS4 + (pifSEPERATS1slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS1MSS1 = (xySEPERATS1MSS1 + (pifSEPERATS2S1MSS1arrayRAND[m] * pifSEPERATS1slaveMSS1arrayRAND[m]));
                xySEPERATS1MSS2 = (xySEPERATS1MSS2 + (pifSEPERATS2S1MSS2arrayRAND[m] * pifSEPERATS1slaveMSS2arrayRAND[m]));
                xySEPERATS1MSS3 = (xySEPERATS1MSS3 + (pifSEPERATS2S1MSS3arrayRAND[m] * pifSEPERATS1slaveMSS3arrayRAND[m]));
                xySEPERATS1MSS4 = (xySEPERATS1MSS4 + (pifSEPERATS2S1MSS4arrayRAND[m] * pifSEPERATS1slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS1MSS1 = xSEPERATS1MSS1 / minPifVAL;
            xAritSEPERATS1MSS2 = xSEPERATS1MSS2 / minPifVAL;
            xAritSEPERATS1MSS3 = xSEPERATS1MSS3 / minPifVAL;
            xAritSEPERATS1MSS4 = xSEPERATS1MSS4 / minPifVAL;
    
            yAritSEPERATS1MSS1 = ySEPERATS1MSS1 / minPifVAL;
            yAritSEPERATS1MSS2 = ySEPERATS1MSS2 / minPifVAL;
            yAritSEPERATS1MSS3 = ySEPERATS1MSS3 / minPifVAL;
            yAritSEPERATS1MSS4 = ySEPERATS1MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1MSS1 = (xxAritQuadSEPERATS1MSS1 + ((pifSEPERATS2S1MSS1arrayRAND[n] - xAritSEPERATS1MSS1)^2));
                xxAritQuadSEPERATS1MSS2 = (xxAritQuadSEPERATS1MSS2 + ((pifSEPERATS2S1MSS2arrayRAND[n] - xAritSEPERATS1MSS2)^2));
                xxAritQuadSEPERATS1MSS3 = (xxAritQuadSEPERATS1MSS3 + ((pifSEPERATS2S1MSS3arrayRAND[n] - xAritSEPERATS1MSS3)^2));
                xxAritQuadSEPERATS1MSS4 = (xxAritQuadSEPERATS1MSS4 + ((pifSEPERATS2S1MSS4arrayRAND[n] - xAritSEPERATS1MSS4)^2));
    
                yyAritQuadSEPERATS1MSS1 = (yyAritQuadSEPERATS1MSS1 + ((pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)^2));
                yyAritQuadSEPERATS1MSS2 = (yyAritQuadSEPERATS1MSS2 + ((pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)^2));
                yyAritQuadSEPERATS1MSS3 = (yyAritQuadSEPERATS1MSS3 + ((pifSEPERATS1slaveMSS3arrayRAND[n] - yAritSEPERATS1MSS3)^2));
                yyAritQuadSEPERATS1MSS4 = (yyAritQuadSEPERATS1MSS4 + ((pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)^2));
    
                qXYSEPERATS1MSS1 = (qXYSEPERATS1MSS1 + ((pifSEPERATS2S1MSS1arrayRAND[n] - xAritSEPERATS1MSS1) * (pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)));
                qXYSEPERATS1MSS2 = (qXYSEPERATS1MSS2 + ((pifSEPERATS2S1MSS2arrayRAND[n] - xAritSEPERATS1MSS2) * (pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)));
                qXYSEPERATS1MSS3 = (qXYSEPERATS1MSS3 + ((pifSEPERATS2S1MSS3arrayRAND[n] - xAritSEPERATS1MSS3) * (pifSEPERATS1slaveMSS3arrayRAND[n] - yAritSEPERATS1MSS3)));
                qXYSEPERATS1MSS4 = (qXYSEPERATS1MSS4 + ((pifSEPERATS2S1MSS4arrayRAND[n] - xAritSEPERATS1MSS4) * (pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)));
            }
        
            aSEPERATS1MSS1 = (((xQuadSEPERATS1MSS1 * ySEPERATS1MSS1) - (xSEPERATS1MSS1 * xySEPERATS1MSS1)) / ((minPifVAL * xQuadSEPERATS1MSS1) - (xSEPERATS1MSS1^2)));
            aSEPERATS1MSS2 = (((xQuadSEPERATS1MSS2 * ySEPERATS1MSS2) - (xSEPERATS1MSS2 * xySEPERATS1MSS2)) / ((minPifVAL * xQuadSEPERATS1MSS2) - (xSEPERATS1MSS2^2)));
            aSEPERATS1MSS3 = (((xQuadSEPERATS1MSS3 * ySEPERATS1MSS3) - (xSEPERATS1MSS3 * xySEPERATS1MSS3)) / ((minPifVAL * xQuadSEPERATS1MSS3) - (xSEPERATS1MSS3^2)));
            aSEPERATS1MSS4 = (((xQuadSEPERATS1MSS4 * ySEPERATS1MSS4) - (xSEPERATS1MSS4 * xySEPERATS1MSS4)) / ((minPifVAL * xQuadSEPERATS1MSS4) - (xSEPERATS1MSS4^2)));
            
            bSEPERATS1MSS1 = qXYSEPERATS1MSS1 / xxAritQuadSEPERATS1MSS1;
            bSEPERATS1MSS2 = qXYSEPERATS1MSS2 / xxAritQuadSEPERATS1MSS2;
            bSEPERATS1MSS3 = qXYSEPERATS1MSS3 / xxAritQuadSEPERATS1MSS3;
            bSEPERATS1MSS4 = qXYSEPERATS1MSS4 / xxAritQuadSEPERATS1MSS4;
    
            rSEPERATS1MSS1 = (qXYSEPERATS1MSS1 / ((xxAritQuadSEPERATS1MSS1 * yyAritQuadSEPERATS1MSS1)^0.5));
            rSEPERATS1MSS2 = (qXYSEPERATS1MSS2 / ((xxAritQuadSEPERATS1MSS2 * yyAritQuadSEPERATS1MSS2)^0.5));
            rSEPERATS1MSS3 = (qXYSEPERATS1MSS3 / ((xxAritQuadSEPERATS1MSS3 * yyAritQuadSEPERATS1MSS3)^0.5));
            rSEPERATS1MSS4 = (qXYSEPERATS1MSS4 / ((xxAritQuadSEPERATS1MSS4 * yyAritQuadSEPERATS1MSS4)^0.5));
    
            rQuadSEPERATS1MSS1 = ((rSEPERATS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1MSS2 = ((rSEPERATS1MSS2^2) * 100);
            rQuadSEPERATS1MSS3 = ((rSEPERATS1MSS3^2) * 100);
            rQuadSEPERATS1MSS4 = ((rSEPERATS1MSS4^2) * 100);
        
            syxSEPERATS1MSS1 = (((yyAritQuadSEPERATS1MSS1 - ((qXYSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS2 = (((yyAritQuadSEPERATS1MSS2 - ((qXYSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS3 = (((yyAritQuadSEPERATS1MSS3 - ((qXYSEPERATS1MSS3^2) / xxAritQuadSEPERATS1MSS3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS4 = (((yyAritQuadSEPERATS1MSS4 - ((qXYSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1MSS1 = (((syxSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)^0.5);
            bStandSEPERATS1MSS2 = (((syxSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)^0.5);
            bStandSEPERATS1MSS3 = (((syxSEPERATS1MSS3^2) / xxAritQuadSEPERATS1MSS3)^0.5);
            bStandSEPERATS1MSS4 = (((syxSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)^0.5);
    
            aStandSEPERATS1MSS1 = (bStandSEPERATS1MSS1 * ((xQuadSEPERATS1MSS1 / minPifVAL)^0.5));
            aStandSEPERATS1MSS2 = (bStandSEPERATS1MSS2 * ((xQuadSEPERATS1MSS2 / minPifVAL)^0.5));
            aStandSEPERATS1MSS3 = (bStandSEPERATS1MSS3 * ((xQuadSEPERATS1MSS3 / minPifVAL)^0.5));
            aStandSEPERATS1MSS4 = (bStandSEPERATS1MSS4 * ((xQuadSEPERATS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS1, bSEPERATS1MSS1, rSEPERATS1MSS1, rQuadSEPERATS1MSS1, aStandSEPERATS1MSS1, bStandSEPERATS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS2, bSEPERATS1MSS2, rSEPERATS1MSS2, rQuadSEPERATS1MSS2, aStandSEPERATS1MSS2, bStandSEPERATS1MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS3, bSEPERATS1MSS3, rSEPERATS1MSS3, rQuadSEPERATS1MSS3, aStandSEPERATS1MSS3, bStandSEPERATS1MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS4, bSEPERATS1MSS4, rSEPERATS1MSS4, rQuadSEPERATS1MSS4, aStandSEPERATS1MSS4, bStandSEPERATS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS1slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS1slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifSEPERATS1slaveMSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS1slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aSEPERATS1MSS1 + (bSEPERATS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aSEPERATS1MSS2 + (bSEPERATS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = (aSEPERATS1MSS3 + (bSEPERATS1MSS3 * REFS1MSS3[i,j]));
                    OUT1MSS4[i,j] = (aSEPERATS1MSS4 + (bSEPERATS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT1MSS1);
            CreatePyramid(OUT1MSS2);
            CreatePyramid(OUT1MSS3);
            CreatePyramid(OUT1MSS4);
        
            CreateHistogram(OUT1MSS1);
            CreateHistogram(OUT1MSS2);
            CreateHistogram(OUT1MSS3);
            CreateHistogram(OUT1MSS4);
            
            CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors3 == 7 )
            {
         		printf("Master: Scene 2 (MSS), Slave: Scene 3 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors3 == 6 )
            {
        		printf("Master: Scene 2 (MSS), Slave: Scene 3 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS3MSS1, xAritSEPERATS3MSS2, xAritSEPERATS3MSS3, xAritSEPERATS3MSS4;
            numeric yAritSEPERATS3MSS1, yAritSEPERATS3MSS2, yAritSEPERATS3MSS3, yAritSEPERATS3MSS4;
    
            numeric aSEPERATS3MSS1, aSEPERATS3MSS2, aSEPERATS3MSS3, aSEPERATS3MSS4;
            numeric bSEPERATS3MSS1, bSEPERATS3MSS2, bSEPERATS3MSS3, bSEPERATS3MSS4;
            numeric rSEPERATS3MSS1, rSEPERATS3MSS2, rSEPERATS3MSS3, rSEPERATS3MSS4;
            numeric rQuadSEPERATS3MSS1, rQuadSEPERATS3MSS2, rQuadSEPERATS3MSS3, rQuadSEPERATS3MSS4;
            numeric syxSEPERATS3MSS1, syxSEPERATS3MSS2, syxSEPERATS3MSS3, syxSEPERATS3MSS4;
            numeric bStandSEPERATS3MSS1, bStandSEPERATS3MSS2, bStandSEPERATS3MSS3, bStandSEPERATS3MSS4;
            numeric aStandSEPERATS3MSS1, aStandSEPERATS3MSS2, aStandSEPERATS3MSS3, aStandSEPERATS3MSS4;
    
            numeric xSEPERATS3MSS1 = 0;
            numeric xSEPERATS3MSS2 = 0;
            numeric xSEPERATS3MSS3 = 0;
            numeric xSEPERATS3MSS4 = 0;
    
            numeric xQuadSEPERATS3MSS1 = 0;
            numeric xQuadSEPERATS3MSS2 = 0;
            numeric xQuadSEPERATS3MSS3 = 0;
            numeric xQuadSEPERATS3MSS4 = 0;
    
            numeric ySEPERATS3MSS1 = 0;
            numeric ySEPERATS3MSS2 = 0;
            numeric ySEPERATS3MSS3 = 0;
            numeric ySEPERATS3MSS4 = 0;
    
            numeric yQuadSEPERATS3MSS1 = 0;
            numeric yQuadSEPERATS3MSS2 = 0;
            numeric yQuadSEPERATS3MSS3 = 0;
            numeric yQuadSEPERATS3MSS4 = 0;
    
            numeric xySEPERATS3MSS1 = 0;
            numeric xySEPERATS3MSS2 = 0;
            numeric xySEPERATS3MSS3 = 0;
            numeric xySEPERATS3MSS4 = 0;
    
            numeric xxAritQuadSEPERATS3MSS1 = 0;
            numeric xxAritQuadSEPERATS3MSS2 = 0;
            numeric xxAritQuadSEPERATS3MSS3 = 0;
            numeric xxAritQuadSEPERATS3MSS4 = 0;
    
            numeric yyAritQuadSEPERATS3MSS1 = 0;
            numeric yyAritQuadSEPERATS3MSS2 = 0;
            numeric yyAritQuadSEPERATS3MSS3 = 0;
            numeric yyAritQuadSEPERATS3MSS4 = 0;
    
            numeric qXYSEPERATS3MSS1 = 0;
            numeric qXYSEPERATS3MSS2 = 0;
            numeric qXYSEPERATS3MSS3 = 0;
            numeric qXYSEPERATS3MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS3MSS1 = xSEPERATS3MSS1 + pifSEPERATS2S3MSS1arrayRAND[m];
                xSEPERATS3MSS2 = xSEPERATS3MSS2 + pifSEPERATS2S3MSS2arrayRAND[m];
                xSEPERATS3MSS3 = xSEPERATS3MSS3 + pifSEPERATS2S3MSS3arrayRAND[m];
                xSEPERATS3MSS4 = xSEPERATS3MSS4 + pifSEPERATS2S3MSS4arrayRAND[m];
    
                xQuadSEPERATS3MSS1 = (xQuadSEPERATS3MSS1 + (pifSEPERATS2S3MSS1arrayRAND[m]^2));
                xQuadSEPERATS3MSS2 = (xQuadSEPERATS3MSS2 + (pifSEPERATS2S3MSS2arrayRAND[m]^2));
                xQuadSEPERATS3MSS3 = (xQuadSEPERATS3MSS3 + (pifSEPERATS2S3MSS3arrayRAND[m]^2));
                xQuadSEPERATS3MSS4 = (xQuadSEPERATS3MSS4 + (pifSEPERATS2S3MSS4arrayRAND[m]^2));
    
                ySEPERATS3MSS1 = ySEPERATS3MSS1 + pifSEPERATS3slaveMSS1arrayRAND[m];
                ySEPERATS3MSS2 = ySEPERATS3MSS2 + pifSEPERATS3slaveMSS2arrayRAND[m];
                ySEPERATS3MSS3 = ySEPERATS3MSS3 + pifSEPERATS3slaveMSS3arrayRAND[m];
                ySEPERATS3MSS4 = ySEPERATS3MSS4 + pifSEPERATS3slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS3MSS1 = (yQuadSEPERATS3MSS1 + (pifSEPERATS3slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS3MSS2 = (yQuadSEPERATS3MSS2 + (pifSEPERATS3slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS3MSS3 = (yQuadSEPERATS3MSS3 + (pifSEPERATS3slaveMSS3arrayRAND[m]^2));
                yQuadSEPERATS3MSS4 = (yQuadSEPERATS3MSS4 + (pifSEPERATS3slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS3MSS1 = (xySEPERATS3MSS1 + (pifSEPERATS2S3MSS1arrayRAND[m] * pifSEPERATS3slaveMSS1arrayRAND[m]));
                xySEPERATS3MSS2 = (xySEPERATS3MSS2 + (pifSEPERATS2S3MSS2arrayRAND[m] * pifSEPERATS3slaveMSS2arrayRAND[m]));
                xySEPERATS3MSS3 = (xySEPERATS3MSS3 + (pifSEPERATS2S3MSS3arrayRAND[m] * pifSEPERATS3slaveMSS3arrayRAND[m]));
                xySEPERATS3MSS4 = (xySEPERATS3MSS4 + (pifSEPERATS2S3MSS4arrayRAND[m] * pifSEPERATS3slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS3MSS1 = xSEPERATS3MSS1 / minPifVAL;
            xAritSEPERATS3MSS2 = xSEPERATS3MSS2 / minPifVAL;
            xAritSEPERATS3MSS3 = xSEPERATS3MSS3 / minPifVAL;
            xAritSEPERATS3MSS4 = xSEPERATS3MSS4 / minPifVAL;
    
            yAritSEPERATS3MSS1 = ySEPERATS3MSS1 / minPifVAL;
            yAritSEPERATS3MSS2 = ySEPERATS3MSS2 / minPifVAL;
            yAritSEPERATS3MSS3 = ySEPERATS3MSS3 / minPifVAL;
            yAritSEPERATS3MSS4 = ySEPERATS3MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3MSS1 = (xxAritQuadSEPERATS3MSS1 + ((pifSEPERATS2S3MSS1arrayRAND[n] - xAritSEPERATS3MSS1)^2));
                xxAritQuadSEPERATS3MSS2 = (xxAritQuadSEPERATS3MSS2 + ((pifSEPERATS2S3MSS2arrayRAND[n] - xAritSEPERATS3MSS2)^2));
                xxAritQuadSEPERATS3MSS3 = (xxAritQuadSEPERATS3MSS3 + ((pifSEPERATS2S3MSS3arrayRAND[n] - xAritSEPERATS3MSS3)^2));
                xxAritQuadSEPERATS3MSS4 = (xxAritQuadSEPERATS3MSS4 + ((pifSEPERATS2S3MSS4arrayRAND[n] - xAritSEPERATS3MSS4)^2));
    
                yyAritQuadSEPERATS3MSS1 = (yyAritQuadSEPERATS3MSS1 + ((pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)^2));
                yyAritQuadSEPERATS3MSS2 = (yyAritQuadSEPERATS3MSS2 + ((pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)^2));
                yyAritQuadSEPERATS3MSS3 = (yyAritQuadSEPERATS3MSS3 + ((pifSEPERATS3slaveMSS3arrayRAND[n] - yAritSEPERATS3MSS3)^2));
                yyAritQuadSEPERATS3MSS4 = (yyAritQuadSEPERATS3MSS4 + ((pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)^2));
    
                qXYSEPERATS3MSS1 = (qXYSEPERATS3MSS1 + ((pifSEPERATS2S3MSS1arrayRAND[n] - xAritSEPERATS3MSS1) * (pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)));
                qXYSEPERATS3MSS2 = (qXYSEPERATS3MSS2 + ((pifSEPERATS2S3MSS2arrayRAND[n] - xAritSEPERATS3MSS2) * (pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)));
                qXYSEPERATS3MSS3 = (qXYSEPERATS3MSS3 + ((pifSEPERATS2S3MSS3arrayRAND[n] - xAritSEPERATS3MSS3) * (pifSEPERATS3slaveMSS3arrayRAND[n] - yAritSEPERATS3MSS3)));
                qXYSEPERATS3MSS4 = (qXYSEPERATS3MSS4 + ((pifSEPERATS2S3MSS4arrayRAND[n] - xAritSEPERATS3MSS4) * (pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)));
            }
        
            aSEPERATS3MSS1 = (((xQuadSEPERATS3MSS1 * ySEPERATS3MSS1) - (xSEPERATS3MSS1 * xySEPERATS3MSS1)) / ((minPifVAL * xQuadSEPERATS3MSS1) - (xSEPERATS3MSS1^2)));
            aSEPERATS3MSS2 = (((xQuadSEPERATS3MSS2 * ySEPERATS3MSS2) - (xSEPERATS3MSS2 * xySEPERATS3MSS2)) / ((minPifVAL * xQuadSEPERATS3MSS2) - (xSEPERATS3MSS2^2)));
            aSEPERATS3MSS3 = (((xQuadSEPERATS3MSS3 * ySEPERATS3MSS3) - (xSEPERATS3MSS3 * xySEPERATS3MSS3)) / ((minPifVAL * xQuadSEPERATS3MSS3) - (xSEPERATS3MSS3^2)));
            aSEPERATS3MSS4 = (((xQuadSEPERATS3MSS4 * ySEPERATS3MSS4) - (xSEPERATS3MSS4 * xySEPERATS3MSS4)) / ((minPifVAL * xQuadSEPERATS3MSS4) - (xSEPERATS3MSS4^2)));
            
            bSEPERATS3MSS1 = qXYSEPERATS3MSS1 / xxAritQuadSEPERATS3MSS1;
            bSEPERATS3MSS2 = qXYSEPERATS3MSS2 / xxAritQuadSEPERATS3MSS2;
            bSEPERATS3MSS3 = qXYSEPERATS3MSS3 / xxAritQuadSEPERATS3MSS3;
            bSEPERATS3MSS4 = qXYSEPERATS3MSS4 / xxAritQuadSEPERATS3MSS4;
    
            rSEPERATS3MSS1 = (qXYSEPERATS3MSS1 / ((xxAritQuadSEPERATS3MSS1 * yyAritQuadSEPERATS3MSS1)^0.5));
            rSEPERATS3MSS2 = (qXYSEPERATS3MSS2 / ((xxAritQuadSEPERATS3MSS2 * yyAritQuadSEPERATS3MSS2)^0.5));
            rSEPERATS3MSS3 = (qXYSEPERATS3MSS3 / ((xxAritQuadSEPERATS3MSS3 * yyAritQuadSEPERATS3MSS3)^0.5));
            rSEPERATS3MSS4 = (qXYSEPERATS3MSS4 / ((xxAritQuadSEPERATS3MSS4 * yyAritQuadSEPERATS3MSS4)^0.5));
    
            rQuadSEPERATS3MSS1 = ((rSEPERATS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3MSS2 = ((rSEPERATS3MSS2^2) * 100);
            rQuadSEPERATS3MSS3 = ((rSEPERATS3MSS3^2) * 100);
            rQuadSEPERATS3MSS4 = ((rSEPERATS3MSS4^2) * 100);
        
            syxSEPERATS3MSS1 = (((yyAritQuadSEPERATS3MSS1 - ((qXYSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS2 = (((yyAritQuadSEPERATS3MSS2 - ((qXYSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS3 = (((yyAritQuadSEPERATS3MSS3 - ((qXYSEPERATS3MSS3^2) / xxAritQuadSEPERATS3MSS3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS4 = (((yyAritQuadSEPERATS3MSS4 - ((qXYSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3MSS1 = (((syxSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)^0.5);
            bStandSEPERATS3MSS2 = (((syxSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)^0.5);
            bStandSEPERATS3MSS3 = (((syxSEPERATS3MSS3^2) / xxAritQuadSEPERATS3MSS3)^0.5);
            bStandSEPERATS3MSS4 = (((syxSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)^0.5);
    
            aStandSEPERATS3MSS1 = (bStandSEPERATS3MSS1 * ((xQuadSEPERATS3MSS1 / minPifVAL)^0.5));
            aStandSEPERATS3MSS2 = (bStandSEPERATS3MSS2 * ((xQuadSEPERATS3MSS2 / minPifVAL)^0.5));
            aStandSEPERATS3MSS3 = (bStandSEPERATS3MSS3 * ((xQuadSEPERATS3MSS3 / minPifVAL)^0.5));
            aStandSEPERATS3MSS4 = (bStandSEPERATS3MSS4 * ((xQuadSEPERATS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS1, bSEPERATS3MSS1, rSEPERATS3MSS1, rQuadSEPERATS3MSS1, aStandSEPERATS3MSS1, bStandSEPERATS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS2, bSEPERATS3MSS2, rSEPERATS3MSS2, rQuadSEPERATS3MSS2, aStandSEPERATS3MSS2, bStandSEPERATS3MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS3, bSEPERATS3MSS3, rSEPERATS3MSS3, rQuadSEPERATS3MSS3, aStandSEPERATS3MSS3, bStandSEPERATS3MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS4, bSEPERATS3MSS4, rSEPERATS3MSS4, rQuadSEPERATS3MSS4, aStandSEPERATS3MSS4, bStandSEPERATS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS3slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS3slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifSEPERATS3slaveMSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS3slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aSEPERATS3MSS1 + (bSEPERATS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aSEPERATS3MSS2 + (bSEPERATS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = (aSEPERATS3MSS3 + (bSEPERATS3MSS3 * REFS3MSS3[i,j]));
                    OUT3MSS4[i,j] = (aSEPERATS3MSS4 + (bSEPERATS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT3MSS1);
            CreatePyramid(OUT3MSS2);
            CreatePyramid(OUT3MSS3);
            CreatePyramid(OUT3MSS4);
        
            CreateHistogram(OUT3MSS1);
            CreateHistogram(OUT3MSS2);
            CreateHistogram(OUT3MSS3);
            CreateHistogram(OUT3MSS4);
            
            CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors4 == 7 )
            {
        		printf("Master: Scene 2 (MSS), Slave: Scene 4 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors4 == 6 )
            {
         		printf("Master: Scene 2 (MSS), Slave: Scene 4 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS4MSS1, xAritSEPERATS4MSS2, xAritSEPERATS4MSS3, xAritSEPERATS4MSS4;
            numeric yAritSEPERATS4MSS1, yAritSEPERATS4MSS2, yAritSEPERATS4MSS3, yAritSEPERATS4MSS4;
    
            numeric aSEPERATS4MSS1, aSEPERATS4MSS2, aSEPERATS4MSS3, aSEPERATS4MSS4;
            numeric bSEPERATS4MSS1, bSEPERATS4MSS2, bSEPERATS4MSS3, bSEPERATS4MSS4;
            numeric rSEPERATS4MSS1, rSEPERATS4MSS2, rSEPERATS4MSS3, rSEPERATS4MSS4;
            numeric rQuadSEPERATS4MSS1, rQuadSEPERATS4MSS2, rQuadSEPERATS4MSS3, rQuadSEPERATS4MSS4;
            numeric syxSEPERATS4MSS1, syxSEPERATS4MSS2, syxSEPERATS4MSS3, syxSEPERATS4MSS4;
            numeric bStandSEPERATS4MSS1, bStandSEPERATS4MSS2, bStandSEPERATS4MSS3, bStandSEPERATS4MSS4;
            numeric aStandSEPERATS4MSS1, aStandSEPERATS4MSS2, aStandSEPERATS4MSS3, aStandSEPERATS4MSS4;
    
            numeric xSEPERATS4MSS1 = 0;
            numeric xSEPERATS4MSS2 = 0;
            numeric xSEPERATS4MSS3 = 0;
            numeric xSEPERATS4MSS4 = 0;
    
            numeric xQuadSEPERATS4MSS1 = 0;
            numeric xQuadSEPERATS4MSS2 = 0;
            numeric xQuadSEPERATS4MSS3 = 0;
            numeric xQuadSEPERATS4MSS4 = 0;
    
            numeric ySEPERATS4MSS1 = 0;
            numeric ySEPERATS4MSS2 = 0;
            numeric ySEPERATS4MSS3 = 0;
            numeric ySEPERATS4MSS4 = 0;
    
            numeric yQuadSEPERATS4MSS1 = 0;
            numeric yQuadSEPERATS4MSS2 = 0;
            numeric yQuadSEPERATS4MSS3 = 0;
            numeric yQuadSEPERATS4MSS4 = 0;
    
            numeric xySEPERATS4MSS1 = 0;
            numeric xySEPERATS4MSS2 = 0;
            numeric xySEPERATS4MSS3 = 0;
            numeric xySEPERATS4MSS4 = 0;
    
            numeric xxAritQuadSEPERATS4MSS1 = 0;
            numeric xxAritQuadSEPERATS4MSS2 = 0;
            numeric xxAritQuadSEPERATS4MSS3 = 0;
            numeric xxAritQuadSEPERATS4MSS4 = 0;
    
            numeric yyAritQuadSEPERATS4MSS1 = 0;
            numeric yyAritQuadSEPERATS4MSS2 = 0;
            numeric yyAritQuadSEPERATS4MSS3 = 0;
            numeric yyAritQuadSEPERATS4MSS4 = 0;
    
            numeric qXYSEPERATS4MSS1 = 0;
            numeric qXYSEPERATS4MSS2 = 0;
            numeric qXYSEPERATS4MSS3 = 0;
            numeric qXYSEPERATS4MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS4MSS1 = xSEPERATS4MSS1 + pifSEPERATS2S4MSS1arrayRAND[m];
                xSEPERATS4MSS2 = xSEPERATS4MSS2 + pifSEPERATS2S4MSS2arrayRAND[m];
                xSEPERATS4MSS3 = xSEPERATS4MSS3 + pifSEPERATS2S4MSS3arrayRAND[m];
                xSEPERATS4MSS4 = xSEPERATS4MSS4 + pifSEPERATS2S4MSS4arrayRAND[m];
    
                xQuadSEPERATS4MSS1 = (xQuadSEPERATS4MSS1 + (pifSEPERATS2S4MSS1arrayRAND[m]^2));
                xQuadSEPERATS4MSS2 = (xQuadSEPERATS4MSS2 + (pifSEPERATS2S4MSS2arrayRAND[m]^2));
                xQuadSEPERATS4MSS3 = (xQuadSEPERATS4MSS3 + (pifSEPERATS2S4MSS3arrayRAND[m]^2));
                xQuadSEPERATS4MSS4 = (xQuadSEPERATS4MSS4 + (pifSEPERATS2S4MSS4arrayRAND[m]^2));
    
                ySEPERATS4MSS1 = ySEPERATS4MSS1 + pifSEPERATS4slaveMSS1arrayRAND[m];
                ySEPERATS4MSS2 = ySEPERATS4MSS2 + pifSEPERATS4slaveMSS2arrayRAND[m];
                ySEPERATS4MSS3 = ySEPERATS4MSS3 + pifSEPERATS4slaveMSS3arrayRAND[m];
                ySEPERATS4MSS4 = ySEPERATS4MSS4 + pifSEPERATS4slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS4MSS1 = (yQuadSEPERATS4MSS1 + (pifSEPERATS4slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS4MSS2 = (yQuadSEPERATS4MSS2 + (pifSEPERATS4slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS4MSS3 = (yQuadSEPERATS4MSS3 + (pifSEPERATS4slaveMSS3arrayRAND[m]^2));
                yQuadSEPERATS4MSS4 = (yQuadSEPERATS4MSS4 + (pifSEPERATS4slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS4MSS1 = (xySEPERATS4MSS1 + (pifSEPERATS2S4MSS1arrayRAND[m] * pifSEPERATS4slaveMSS1arrayRAND[m]));
                xySEPERATS4MSS2 = (xySEPERATS4MSS2 + (pifSEPERATS2S4MSS2arrayRAND[m] * pifSEPERATS4slaveMSS2arrayRAND[m]));
                xySEPERATS4MSS3 = (xySEPERATS4MSS3 + (pifSEPERATS2S4MSS3arrayRAND[m] * pifSEPERATS4slaveMSS3arrayRAND[m]));
                xySEPERATS4MSS4 = (xySEPERATS4MSS4 + (pifSEPERATS2S4MSS4arrayRAND[m] * pifSEPERATS4slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS4MSS1 = xSEPERATS4MSS1 / minPifVAL;
            xAritSEPERATS4MSS2 = xSEPERATS4MSS2 / minPifVAL;
            xAritSEPERATS4MSS3 = xSEPERATS4MSS3 / minPifVAL;
            xAritSEPERATS4MSS4 = xSEPERATS4MSS4 / minPifVAL;
    
            yAritSEPERATS4MSS1 = ySEPERATS4MSS1 / minPifVAL;
            yAritSEPERATS4MSS2 = ySEPERATS4MSS2 / minPifVAL;
            yAritSEPERATS4MSS3 = ySEPERATS4MSS3 / minPifVAL;
            yAritSEPERATS4MSS4 = ySEPERATS4MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4MSS1 = (xxAritQuadSEPERATS4MSS1 + ((pifSEPERATS2S4MSS1arrayRAND[n] - xAritSEPERATS4MSS1)^2));
                xxAritQuadSEPERATS4MSS2 = (xxAritQuadSEPERATS4MSS2 + ((pifSEPERATS2S4MSS2arrayRAND[n] - xAritSEPERATS4MSS2)^2));
                xxAritQuadSEPERATS4MSS3 = (xxAritQuadSEPERATS4MSS3 + ((pifSEPERATS2S4MSS3arrayRAND[n] - xAritSEPERATS4MSS3)^2));
                xxAritQuadSEPERATS4MSS4 = (xxAritQuadSEPERATS4MSS4 + ((pifSEPERATS2S4MSS4arrayRAND[n] - xAritSEPERATS4MSS4)^2));
    
                yyAritQuadSEPERATS4MSS1 = (yyAritQuadSEPERATS4MSS1 + ((pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)^2));
                yyAritQuadSEPERATS4MSS2 = (yyAritQuadSEPERATS4MSS2 + ((pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)^2));
                yyAritQuadSEPERATS4MSS3 = (yyAritQuadSEPERATS4MSS3 + ((pifSEPERATS4slaveMSS3arrayRAND[n] - yAritSEPERATS4MSS3)^2));
                yyAritQuadSEPERATS4MSS4 = (yyAritQuadSEPERATS4MSS4 + ((pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)^2));
    
                qXYSEPERATS4MSS1 = (qXYSEPERATS4MSS1 + ((pifSEPERATS2S4MSS1arrayRAND[n] - xAritSEPERATS4MSS1) * (pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)));
                qXYSEPERATS4MSS2 = (qXYSEPERATS4MSS2 + ((pifSEPERATS2S4MSS2arrayRAND[n] - xAritSEPERATS4MSS2) * (pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)));
                qXYSEPERATS4MSS3 = (qXYSEPERATS4MSS3 + ((pifSEPERATS2S4MSS3arrayRAND[n] - xAritSEPERATS4MSS3) * (pifSEPERATS4slaveMSS3arrayRAND[n] - yAritSEPERATS4MSS3)));
                qXYSEPERATS4MSS4 = (qXYSEPERATS4MSS4 + ((pifSEPERATS2S4MSS4arrayRAND[n] - xAritSEPERATS4MSS4) * (pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)));
            }
        
            aSEPERATS4MSS1 = (((xQuadSEPERATS4MSS1 * ySEPERATS4MSS1) - (xSEPERATS4MSS1 * xySEPERATS4MSS1)) / ((minPifVAL * xQuadSEPERATS4MSS1) - (xSEPERATS4MSS1^2)));
            aSEPERATS4MSS2 = (((xQuadSEPERATS4MSS2 * ySEPERATS4MSS2) - (xSEPERATS4MSS2 * xySEPERATS4MSS2)) / ((minPifVAL * xQuadSEPERATS4MSS2) - (xSEPERATS4MSS2^2)));
            aSEPERATS4MSS3 = (((xQuadSEPERATS4MSS3 * ySEPERATS4MSS3) - (xSEPERATS4MSS3 * xySEPERATS4MSS3)) / ((minPifVAL * xQuadSEPERATS4MSS3) - (xSEPERATS4MSS3^2)));
            aSEPERATS4MSS4 = (((xQuadSEPERATS4MSS4 * ySEPERATS4MSS4) - (xSEPERATS4MSS4 * xySEPERATS4MSS4)) / ((minPifVAL * xQuadSEPERATS4MSS4) - (xSEPERATS4MSS4^2)));
            
            bSEPERATS4MSS1 = qXYSEPERATS4MSS1 / xxAritQuadSEPERATS4MSS1;
            bSEPERATS4MSS2 = qXYSEPERATS4MSS2 / xxAritQuadSEPERATS4MSS2;
            bSEPERATS4MSS3 = qXYSEPERATS4MSS3 / xxAritQuadSEPERATS4MSS3;
            bSEPERATS4MSS4 = qXYSEPERATS4MSS4 / xxAritQuadSEPERATS4MSS4;
    
            rSEPERATS4MSS1 = (qXYSEPERATS4MSS1 / ((xxAritQuadSEPERATS4MSS1 * yyAritQuadSEPERATS4MSS1)^0.5));
            rSEPERATS4MSS2 = (qXYSEPERATS4MSS2 / ((xxAritQuadSEPERATS4MSS2 * yyAritQuadSEPERATS4MSS2)^0.5));
            rSEPERATS4MSS3 = (qXYSEPERATS4MSS3 / ((xxAritQuadSEPERATS4MSS3 * yyAritQuadSEPERATS4MSS3)^0.5));
            rSEPERATS4MSS4 = (qXYSEPERATS4MSS4 / ((xxAritQuadSEPERATS4MSS4 * yyAritQuadSEPERATS4MSS4)^0.5));
    
            rQuadSEPERATS4MSS1 = ((rSEPERATS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4MSS2 = ((rSEPERATS4MSS2^2) * 100);
            rQuadSEPERATS4MSS3 = ((rSEPERATS4MSS3^2) * 100);
            rQuadSEPERATS4MSS4 = ((rSEPERATS4MSS4^2) * 100);
        
            syxSEPERATS4MSS1 = (((yyAritQuadSEPERATS4MSS1 - ((qXYSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS2 = (((yyAritQuadSEPERATS4MSS2 - ((qXYSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS3 = (((yyAritQuadSEPERATS4MSS3 - ((qXYSEPERATS4MSS3^2) / xxAritQuadSEPERATS4MSS3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS4 = (((yyAritQuadSEPERATS4MSS4 - ((qXYSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4MSS1 = (((syxSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)^0.5);
            bStandSEPERATS4MSS2 = (((syxSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)^0.5);
            bStandSEPERATS4MSS3 = (((syxSEPERATS4MSS3^2) / xxAritQuadSEPERATS4MSS3)^0.5);
            bStandSEPERATS4MSS4 = (((syxSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)^0.5);
    
            aStandSEPERATS4MSS1 = (bStandSEPERATS4MSS1 * ((xQuadSEPERATS4MSS1 / minPifVAL)^0.5));
            aStandSEPERATS4MSS2 = (bStandSEPERATS4MSS2 * ((xQuadSEPERATS4MSS2 / minPifVAL)^0.5));
            aStandSEPERATS4MSS3 = (bStandSEPERATS4MSS3 * ((xQuadSEPERATS4MSS3 / minPifVAL)^0.5));
            aStandSEPERATS4MSS4 = (bStandSEPERATS4MSS4 * ((xQuadSEPERATS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS1, bSEPERATS4MSS1, rSEPERATS4MSS1, rQuadSEPERATS4MSS1, aStandSEPERATS4MSS1, bStandSEPERATS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS2, bSEPERATS4MSS2, rSEPERATS4MSS2, rQuadSEPERATS4MSS2, aStandSEPERATS4MSS2, bStandSEPERATS4MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS3, bSEPERATS4MSS3, rSEPERATS4MSS3, rQuadSEPERATS4MSS3, aStandSEPERATS4MSS3, bStandSEPERATS4MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS4, bSEPERATS4MSS4, rSEPERATS4MSS4, rQuadSEPERATS4MSS4, aStandSEPERATS4MSS4, bStandSEPERATS4MSS4);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS4slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS4slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifSEPERATS4slaveMSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS4slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aSEPERATS4MSS1 + (bSEPERATS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aSEPERATS4MSS2 + (bSEPERATS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = (aSEPERATS4MSS3 + (bSEPERATS4MSS3 * REFS4MSS3[i,j]));
                    OUT4MSS4[i,j] = (aSEPERATS4MSS4 + (bSEPERATS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT4MSS1);
            CreatePyramid(OUT4MSS2);
            CreatePyramid(OUT4MSS3);
            CreatePyramid(OUT4MSS4);
        
            CreateHistogram(OUT4MSS1);
            CreateHistogram(OUT4MSS2);
            CreateHistogram(OUT4MSS3);
            CreateHistogram(OUT4MSS4);
            
            CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
        }
    }
	else if ( slaveMaster == 3 )
	{
        if ( sensors3 == 7 )
        {
        printf("Scene 3 - Master Scene (ETM):\n");
        printf("Scene 3 array values used for regression computation:\n");
	    printf("For Scene 3 (Master) and Slave (Scene 1):");
        printf("ETM1: %12f ", pifSEPERATS3S1ETM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S1ETM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S1ETM1arrayRAND[minPifVAL]);
    
        printf("ETM2: %12f ", pifSEPERATS3S1ETM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S1ETM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S1ETM2arrayRAND[minPifVAL]);
    
        printf("ETM3: %12f ", pifSEPERATS3S1ETM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S1ETM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S1ETM3arrayRAND[minPifVAL]);
    
        printf("ETM4: %12f ", pifSEPERATS3S1ETM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S1ETM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S1ETM4arrayRAND[minPifVAL]);
    
        printf("ETM5: %12f ", pifSEPERATS3S1ETM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S1ETM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S1ETM5arrayRAND[minPifVAL]);
    
        printf("ETM7: %12f ", pifSEPERATS3S1ETM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S1ETM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS3S1ETM7arrayRAND[minPifVAL]);
	    printf("For Scene 3 (Master) and Slave (Scene 2):");
        printf("ETM1: %12f ", pifSEPERATS3S2ETM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S2ETM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S2ETM1arrayRAND[minPifVAL]);
    
        printf("ETM2: %12f ", pifSEPERATS3S2ETM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S2ETM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S2ETM2arrayRAND[minPifVAL]);
    
        printf("ETM3: %12f ", pifSEPERATS3S2ETM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S2ETM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S2ETM3arrayRAND[minPifVAL]);
    
        printf("ETM4: %12f ", pifSEPERATS3S2ETM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S2ETM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S2ETM4arrayRAND[minPifVAL]);
    
        printf("ETM5: %12f ", pifSEPERATS3S2ETM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S2ETM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S2ETM5arrayRAND[minPifVAL]);
    
        printf("ETM7: %12f ", pifSEPERATS3S2ETM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S2ETM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS3S2ETM7arrayRAND[minPifVAL]);
	    printf("For Scene 3 (Master) and Slave (Scene 4):");
        printf("ETM1: %12f ", pifSEPERATS3S4ETM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S4ETM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S4ETM1arrayRAND[minPifVAL]);
    
        printf("ETM2: %12f ", pifSEPERATS3S4ETM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S4ETM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S4ETM2arrayRAND[minPifVAL]);
    
        printf("ETM3: %12f ", pifSEPERATS3S4ETM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S4ETM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S4ETM3arrayRAND[minPifVAL]);
    
        printf("ETM4: %12f ", pifSEPERATS3S4ETM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S4ETM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S4ETM4arrayRAND[minPifVAL]);
    
        printf("ETM5: %12f ", pifSEPERATS3S4ETM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S4ETM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S4ETM5arrayRAND[minPifVAL]);
    
        printf("ETM7: %12f ", pifSEPERATS3S4ETM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S4ETM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS3S4ETM7arrayRAND[minPifVAL]);
                for i = 1 to ETMlins
                {
                    for j = 1 to ETMcols
                    {
                    OUT3ETM1[i,j] = REFS3ETM1[i,j];
                    OUT3ETM2[i,j] = REFS3ETM2[i,j];
                    OUT3ETM3[i,j] = REFS3ETM3[i,j];
                    OUT3ETM4[i,j] = REFS3ETM4[i,j];
                    OUT3ETM5[i,j] = REFS3ETM5[i,j];
                    OUT3ETM7[i,j] = REFS3ETM7[i,j];
                    }
                }
            
        CreatePyramid(OUT3ETM1);
        CreatePyramid(OUT3ETM2);
        CreatePyramid(OUT3ETM3);
        CreatePyramid(OUT3ETM4);
        CreatePyramid(OUT3ETM5);
        CreatePyramid(OUT3ETM7);
        
        CreateHistogram(OUT3ETM1);
        CreateHistogram(OUT3ETM2);
        CreateHistogram(OUT3ETM3);
        CreateHistogram(OUT3ETM4);
        CreateHistogram(OUT3ETM5);
        CreateHistogram(OUT3ETM7);
        
        CloseRaster(REFS3ETM1);
        CloseRaster(REFS3ETM2);
        CloseRaster(REFS3ETM3);
        CloseRaster(REFS3ETM4);
        CloseRaster(REFS3ETM5);
        CloseRaster(REFS3ETM7);
        
        CloseRaster(OUT3ETM1);
        CloseRaster(OUT3ETM2);
        CloseRaster(OUT3ETM3);
        CloseRaster(OUT3ETM4);
        CloseRaster(OUT3ETM5);
        CloseRaster(OUT3ETM7);
            
        printf("Scene 3 (Master) output was written, histogram created and pyramid written...\n\n\n");
        
            if ( sensors1 == 7 )
            {
            numeric xAritSEPERATS1ETM1, xAritSEPERATS1ETM2, xAritSEPERATS1ETM3, xAritSEPERATS1ETM4, xAritSEPERATS1ETM5, xAritSEPERATS1ETM7;
            numeric yAritSEPERATS1ETM1, yAritSEPERATS1ETM2, yAritSEPERATS1ETM3, yAritSEPERATS1ETM4, yAritSEPERATS1ETM5, yAritSEPERATS1ETM7;
    
            numeric aSEPERATS1ETM1, aSEPERATS1ETM2, aSEPERATS1ETM3, aSEPERATS1ETM4, aSEPERATS1ETM5, aSEPERATS1ETM7;
            numeric bSEPERATS1ETM1, bSEPERATS1ETM2, bSEPERATS1ETM3, bSEPERATS1ETM4, bSEPERATS1ETM5, bSEPERATS1ETM7;
            numeric rSEPERATS1ETM1, rSEPERATS1ETM2, rSEPERATS1ETM3, rSEPERATS1ETM4, rSEPERATS1ETM5, rSEPERATS1ETM7;
            numeric rQuadSEPERATS1ETM1, rQuadSEPERATS1ETM2, rQuadSEPERATS1ETM3, rQuadSEPERATS1ETM4, rQuadSEPERATS1ETM5, rQuadSEPERATS1ETM7;
            numeric syxSEPERATS1ETM1, syxSEPERATS1ETM2, syxSEPERATS1ETM3, syxSEPERATS1ETM4, syxSEPERATS1ETM5, syxSEPERATS1ETM7;
            numeric bStandSEPERATS1ETM1, bStandSEPERATS1ETM2, bStandSEPERATS1ETM3, bStandSEPERATS1ETM4, bStandSEPERATS1ETM5, bStandSEPERATS1ETM7;
            numeric aStandSEPERATS1ETM1, aStandSEPERATS1ETM2, aStandSEPERATS1ETM3, aStandSEPERATS1ETM4, aStandSEPERATS1ETM5, aStandSEPERATS1ETM7;
    
            numeric xSEPERATS1ETM1 = 0;
            numeric xSEPERATS1ETM2 = 0;
            numeric xSEPERATS1ETM3 = 0;
            numeric xSEPERATS1ETM4 = 0;
            numeric xSEPERATS1ETM5 = 0;
            numeric xSEPERATS1ETM7 = 0;
    
            numeric xQuadSEPERATS1ETM1 = 0;
            numeric xQuadSEPERATS1ETM2 = 0;
            numeric xQuadSEPERATS1ETM3 = 0;
            numeric xQuadSEPERATS1ETM4 = 0;
            numeric xQuadSEPERATS1ETM5 = 0;
            numeric xQuadSEPERATS1ETM7 = 0;
    
            numeric ySEPERATS1ETM1 = 0;
            numeric ySEPERATS1ETM2 = 0;
            numeric ySEPERATS1ETM3 = 0;
            numeric ySEPERATS1ETM4 = 0;
            numeric ySEPERATS1ETM5 = 0;
            numeric ySEPERATS1ETM7 = 0;
    
            numeric yQuadSEPERATS1ETM1 = 0;
            numeric yQuadSEPERATS1ETM2 = 0;
            numeric yQuadSEPERATS1ETM3 = 0;
            numeric yQuadSEPERATS1ETM4 = 0;
            numeric yQuadSEPERATS1ETM5 = 0;
            numeric yQuadSEPERATS1ETM7 = 0;
    
            numeric xySEPERATS1ETM1 = 0;
            numeric xySEPERATS1ETM2 = 0;
            numeric xySEPERATS1ETM3 = 0;
            numeric xySEPERATS1ETM4 = 0;
            numeric xySEPERATS1ETM5 = 0;
            numeric xySEPERATS1ETM7 = 0;
    
            numeric xxAritQuadSEPERATS1ETM1 = 0;
            numeric xxAritQuadSEPERATS1ETM2 = 0;
            numeric xxAritQuadSEPERATS1ETM3 = 0;
            numeric xxAritQuadSEPERATS1ETM4 = 0;
            numeric xxAritQuadSEPERATS1ETM5 = 0;
            numeric xxAritQuadSEPERATS1ETM7 = 0;
    
            numeric yyAritQuadSEPERATS1ETM1 = 0;
            numeric yyAritQuadSEPERATS1ETM2 = 0;
            numeric yyAritQuadSEPERATS1ETM3 = 0;
            numeric yyAritQuadSEPERATS1ETM4 = 0;
            numeric yyAritQuadSEPERATS1ETM5 = 0;
            numeric yyAritQuadSEPERATS1ETM7 = 0;
    
            numeric qXYSEPERATS1ETM1 = 0;
            numeric qXYSEPERATS1ETM2 = 0;
            numeric qXYSEPERATS1ETM3 = 0;
            numeric qXYSEPERATS1ETM4 = 0;
            numeric qXYSEPERATS1ETM5 = 0;
            numeric qXYSEPERATS1ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1ETM1 = xSEPERATS1ETM1 + pifSEPERATS3S1ETM1arrayRAND[m];
                xSEPERATS1ETM2 = xSEPERATS1ETM2 + pifSEPERATS3S1ETM2arrayRAND[m];
                xSEPERATS1ETM3 = xSEPERATS1ETM3 + pifSEPERATS3S1ETM3arrayRAND[m];
                xSEPERATS1ETM4 = xSEPERATS1ETM4 + pifSEPERATS3S1ETM4arrayRAND[m];
                xSEPERATS1ETM5 = xSEPERATS1ETM5 + pifSEPERATS3S1ETM5arrayRAND[m];
                xSEPERATS1ETM7 = xSEPERATS1ETM7 + pifSEPERATS3S1ETM7arrayRAND[m];
    
                xQuadSEPERATS1ETM1 = (xQuadSEPERATS1ETM1 + (pifSEPERATS3S1ETM1arrayRAND[m]^2));
                xQuadSEPERATS1ETM2 = (xQuadSEPERATS1ETM2 + (pifSEPERATS3S1ETM2arrayRAND[m]^2));
                xQuadSEPERATS1ETM3 = (xQuadSEPERATS1ETM3 + (pifSEPERATS3S1ETM3arrayRAND[m]^2));
                xQuadSEPERATS1ETM4 = (xQuadSEPERATS1ETM4 + (pifSEPERATS3S1ETM4arrayRAND[m]^2));
                xQuadSEPERATS1ETM5 = (xQuadSEPERATS1ETM5 + (pifSEPERATS3S1ETM5arrayRAND[m]^2));
                xQuadSEPERATS1ETM7 = (xQuadSEPERATS1ETM7 + (pifSEPERATS3S1ETM7arrayRAND[m]^2));
    
                ySEPERATS1ETM1 = ySEPERATS1ETM1 + pifSEPERATS1slaveETM1arrayRAND[m];
                ySEPERATS1ETM2 = ySEPERATS1ETM2 + pifSEPERATS1slaveETM2arrayRAND[m];
                ySEPERATS1ETM3 = ySEPERATS1ETM3 + pifSEPERATS1slaveETM3arrayRAND[m];
                ySEPERATS1ETM4 = ySEPERATS1ETM4 + pifSEPERATS1slaveETM4arrayRAND[m];
                ySEPERATS1ETM5 = ySEPERATS1ETM5 + pifSEPERATS1slaveETM5arrayRAND[m];
                ySEPERATS1ETM7 = ySEPERATS1ETM7 + pifSEPERATS1slaveETM7arrayRAND[m];
                
                yQuadSEPERATS1ETM1 = (yQuadSEPERATS1ETM1 + (pifSEPERATS1slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS1ETM2 = (yQuadSEPERATS1ETM2 + (pifSEPERATS1slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS1ETM3 = (yQuadSEPERATS1ETM3 + (pifSEPERATS1slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS1ETM4 = (yQuadSEPERATS1ETM4 + (pifSEPERATS1slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS1ETM5 = (yQuadSEPERATS1ETM5 + (pifSEPERATS1slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS1ETM7 = (yQuadSEPERATS1ETM7 + (pifSEPERATS1slaveETM7arrayRAND[m]^2));
    
                xySEPERATS1ETM1 = (xySEPERATS1ETM1 + (pifSEPERATS3S1ETM1arrayRAND[m] * pifSEPERATS1slaveETM1arrayRAND[m]));
                xySEPERATS1ETM2 = (xySEPERATS1ETM2 + (pifSEPERATS3S1ETM2arrayRAND[m] * pifSEPERATS1slaveETM2arrayRAND[m]));
                xySEPERATS1ETM3 = (xySEPERATS1ETM3 + (pifSEPERATS3S1ETM3arrayRAND[m] * pifSEPERATS1slaveETM3arrayRAND[m]));
                xySEPERATS1ETM4 = (xySEPERATS1ETM4 + (pifSEPERATS3S1ETM4arrayRAND[m] * pifSEPERATS1slaveETM4arrayRAND[m]));
                xySEPERATS1ETM5 = (xySEPERATS1ETM5 + (pifSEPERATS3S1ETM5arrayRAND[m] * pifSEPERATS1slaveETM5arrayRAND[m]));
                xySEPERATS1ETM7 = (xySEPERATS1ETM7 + (pifSEPERATS3S1ETM7arrayRAND[m] * pifSEPERATS1slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS1ETM1 = xSEPERATS1ETM1 / minPifVAL;
            xAritSEPERATS1ETM2 = xSEPERATS1ETM2 / minPifVAL;
            xAritSEPERATS1ETM3 = xSEPERATS1ETM3 / minPifVAL;
            xAritSEPERATS1ETM4 = xSEPERATS1ETM4 / minPifVAL;
            xAritSEPERATS1ETM5 = xSEPERATS1ETM5 / minPifVAL;
            xAritSEPERATS1ETM7 = xSEPERATS1ETM7 / minPifVAL;
    
            yAritSEPERATS1ETM1 = ySEPERATS1ETM1 / minPifVAL;
            yAritSEPERATS1ETM2 = ySEPERATS1ETM2 / minPifVAL;
            yAritSEPERATS1ETM3 = ySEPERATS1ETM3 / minPifVAL;
            yAritSEPERATS1ETM4 = ySEPERATS1ETM4 / minPifVAL;
            yAritSEPERATS1ETM5 = ySEPERATS1ETM5 / minPifVAL;
            yAritSEPERATS1ETM7 = ySEPERATS1ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1ETM1 = (xxAritQuadSEPERATS1ETM1 + ((pifSEPERATS3S1ETM1arrayRAND[n] - xAritSEPERATS1ETM1)^2));
                xxAritQuadSEPERATS1ETM2 = (xxAritQuadSEPERATS1ETM2 + ((pifSEPERATS3S1ETM2arrayRAND[n] - xAritSEPERATS1ETM2)^2));
                xxAritQuadSEPERATS1ETM3 = (xxAritQuadSEPERATS1ETM3 + ((pifSEPERATS3S1ETM3arrayRAND[n] - xAritSEPERATS1ETM3)^2));
                xxAritQuadSEPERATS1ETM4 = (xxAritQuadSEPERATS1ETM4 + ((pifSEPERATS3S1ETM4arrayRAND[n] - xAritSEPERATS1ETM4)^2));
                xxAritQuadSEPERATS1ETM5 = (xxAritQuadSEPERATS1ETM5 + ((pifSEPERATS3S1ETM5arrayRAND[n] - xAritSEPERATS1ETM5)^2));
                xxAritQuadSEPERATS1ETM7 = (xxAritQuadSEPERATS1ETM7 + ((pifSEPERATS3S1ETM7arrayRAND[n] - xAritSEPERATS1ETM7)^2));
    
                yyAritQuadSEPERATS1ETM1 = (yyAritQuadSEPERATS1ETM1 + ((pifSEPERATS1slaveETM1arrayRAND[n] - yAritSEPERATS1ETM1)^2));
                yyAritQuadSEPERATS1ETM2 = (yyAritQuadSEPERATS1ETM2 + ((pifSEPERATS1slaveETM2arrayRAND[n] - yAritSEPERATS1ETM2)^2));
                yyAritQuadSEPERATS1ETM3 = (yyAritQuadSEPERATS1ETM3 + ((pifSEPERATS1slaveETM3arrayRAND[n] - yAritSEPERATS1ETM3)^2));
                yyAritQuadSEPERATS1ETM4 = (yyAritQuadSEPERATS1ETM4 + ((pifSEPERATS1slaveETM4arrayRAND[n] - yAritSEPERATS1ETM4)^2));
                yyAritQuadSEPERATS1ETM5 = (yyAritQuadSEPERATS1ETM5 + ((pifSEPERATS1slaveETM5arrayRAND[n] - yAritSEPERATS1ETM5)^2));
                yyAritQuadSEPERATS1ETM7 = (yyAritQuadSEPERATS1ETM7 + ((pifSEPERATS1slaveETM7arrayRAND[n] - yAritSEPERATS1ETM7)^2));
    
                qXYSEPERATS1ETM1 = (qXYSEPERATS1ETM1 + ((pifSEPERATS3S1ETM1arrayRAND[n] - xAritSEPERATS1ETM1) * (pifSEPERATS1slaveETM1arrayRAND[n] - yAritSEPERATS1ETM1)));
                qXYSEPERATS1ETM2 = (qXYSEPERATS1ETM2 + ((pifSEPERATS3S1ETM2arrayRAND[n] - xAritSEPERATS1ETM2) * (pifSEPERATS1slaveETM2arrayRAND[n] - yAritSEPERATS1ETM2)));
                qXYSEPERATS1ETM3 = (qXYSEPERATS1ETM3 + ((pifSEPERATS3S1ETM3arrayRAND[n] - xAritSEPERATS1ETM3) * (pifSEPERATS1slaveETM3arrayRAND[n] - yAritSEPERATS1ETM3)));
                qXYSEPERATS1ETM4 = (qXYSEPERATS1ETM4 + ((pifSEPERATS3S1ETM4arrayRAND[n] - xAritSEPERATS1ETM4) * (pifSEPERATS1slaveETM4arrayRAND[n] - yAritSEPERATS1ETM4)));
                qXYSEPERATS1ETM5 = (qXYSEPERATS1ETM5 + ((pifSEPERATS3S1ETM5arrayRAND[n] - xAritSEPERATS1ETM5) * (pifSEPERATS1slaveETM5arrayRAND[n] - yAritSEPERATS1ETM5)));
                qXYSEPERATS1ETM7 = (qXYSEPERATS1ETM7 + ((pifSEPERATS3S1ETM7arrayRAND[n] - xAritSEPERATS1ETM7) * (pifSEPERATS1slaveETM7arrayRAND[n] - yAritSEPERATS1ETM7)));
            }
        
            aSEPERATS1ETM1 = (((xQuadSEPERATS1ETM1 * ySEPERATS1ETM1) - (xSEPERATS1ETM1 * xySEPERATS1ETM1)) / ((minPifVAL * xQuadSEPERATS1ETM1) - (xSEPERATS1ETM1^2)));
            aSEPERATS1ETM2 = (((xQuadSEPERATS1ETM2 * ySEPERATS1ETM2) - (xSEPERATS1ETM2 * xySEPERATS1ETM2)) / ((minPifVAL * xQuadSEPERATS1ETM2) - (xSEPERATS1ETM2^2)));
            aSEPERATS1ETM3 = (((xQuadSEPERATS1ETM3 * ySEPERATS1ETM3) - (xSEPERATS1ETM3 * xySEPERATS1ETM3)) / ((minPifVAL * xQuadSEPERATS1ETM3) - (xSEPERATS1ETM3^2)));
            aSEPERATS1ETM4 = (((xQuadSEPERATS1ETM4 * ySEPERATS1ETM4) - (xSEPERATS1ETM4 * xySEPERATS1ETM4)) / ((minPifVAL * xQuadSEPERATS1ETM4) - (xSEPERATS1ETM4^2)));
            aSEPERATS1ETM5 = (((xQuadSEPERATS1ETM5 * ySEPERATS1ETM5) - (xSEPERATS1ETM5 * xySEPERATS1ETM5)) / ((minPifVAL * xQuadSEPERATS1ETM5) - (xSEPERATS1ETM5^2)));
            aSEPERATS1ETM7 = (((xQuadSEPERATS1ETM7 * ySEPERATS1ETM7) - (xSEPERATS1ETM7 * xySEPERATS1ETM7)) / ((minPifVAL * xQuadSEPERATS1ETM7) - (xSEPERATS1ETM7^2)));
            
            bSEPERATS1ETM1 = qXYSEPERATS1ETM1 / xxAritQuadSEPERATS1ETM1;
            bSEPERATS1ETM2 = qXYSEPERATS1ETM2 / xxAritQuadSEPERATS1ETM2;
            bSEPERATS1ETM3 = qXYSEPERATS1ETM3 / xxAritQuadSEPERATS1ETM3;
            bSEPERATS1ETM4 = qXYSEPERATS1ETM4 / xxAritQuadSEPERATS1ETM4;
            bSEPERATS1ETM5 = qXYSEPERATS1ETM5 / xxAritQuadSEPERATS1ETM5;
            bSEPERATS1ETM7 = qXYSEPERATS1ETM7 / xxAritQuadSEPERATS1ETM7;
    
            rSEPERATS1ETM1 = (qXYSEPERATS1ETM1 / ((xxAritQuadSEPERATS1ETM1 * yyAritQuadSEPERATS1ETM1)^0.5));
            rSEPERATS1ETM2 = (qXYSEPERATS1ETM2 / ((xxAritQuadSEPERATS1ETM2 * yyAritQuadSEPERATS1ETM2)^0.5));
            rSEPERATS1ETM3 = (qXYSEPERATS1ETM3 / ((xxAritQuadSEPERATS1ETM3 * yyAritQuadSEPERATS1ETM3)^0.5));
            rSEPERATS1ETM4 = (qXYSEPERATS1ETM4 / ((xxAritQuadSEPERATS1ETM4 * yyAritQuadSEPERATS1ETM4)^0.5));
            rSEPERATS1ETM5 = (qXYSEPERATS1ETM5 / ((xxAritQuadSEPERATS1ETM5 * yyAritQuadSEPERATS1ETM5)^0.5));
            rSEPERATS1ETM7 = (qXYSEPERATS1ETM7 / ((xxAritQuadSEPERATS1ETM7 * yyAritQuadSEPERATS1ETM7)^0.5));
    
            rQuadSEPERATS1ETM1 = ((rSEPERATS1ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1ETM2 = ((rSEPERATS1ETM2^2) * 100);
            rQuadSEPERATS1ETM3 = ((rSEPERATS1ETM3^2) * 100);
            rQuadSEPERATS1ETM4 = ((rSEPERATS1ETM4^2) * 100);
            rQuadSEPERATS1ETM5 = ((rSEPERATS1ETM5^2) * 100);
            rQuadSEPERATS1ETM7 = ((rSEPERATS1ETM7^2) * 100);
        
            syxSEPERATS1ETM1 = (((yyAritQuadSEPERATS1ETM1 - ((qXYSEPERATS1ETM1^2) / xxAritQuadSEPERATS1ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM2 = (((yyAritQuadSEPERATS1ETM2 - ((qXYSEPERATS1ETM2^2) / xxAritQuadSEPERATS1ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM3 = (((yyAritQuadSEPERATS1ETM3 - ((qXYSEPERATS1ETM3^2) / xxAritQuadSEPERATS1ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM4 = (((yyAritQuadSEPERATS1ETM4 - ((qXYSEPERATS1ETM4^2) / xxAritQuadSEPERATS1ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM5 = (((yyAritQuadSEPERATS1ETM5 - ((qXYSEPERATS1ETM5^2) / xxAritQuadSEPERATS1ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM7 = (((yyAritQuadSEPERATS1ETM7 - ((qXYSEPERATS1ETM7^2) / xxAritQuadSEPERATS1ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1ETM1 = (((syxSEPERATS1ETM1^2) / xxAritQuadSEPERATS1ETM1)^0.5);
            bStandSEPERATS1ETM2 = (((syxSEPERATS1ETM2^2) / xxAritQuadSEPERATS1ETM2)^0.5);
            bStandSEPERATS1ETM3 = (((syxSEPERATS1ETM3^2) / xxAritQuadSEPERATS1ETM3)^0.5);
            bStandSEPERATS1ETM4 = (((syxSEPERATS1ETM4^2) / xxAritQuadSEPERATS1ETM4)^0.5);
            bStandSEPERATS1ETM5 = (((syxSEPERATS1ETM5^2) / xxAritQuadSEPERATS1ETM5)^0.5);
            bStandSEPERATS1ETM7 = (((syxSEPERATS1ETM7^2) / xxAritQuadSEPERATS1ETM7)^0.5);
    
            aStandSEPERATS1ETM1 = (bStandSEPERATS1ETM1 * ((xQuadSEPERATS1ETM1 / minPifVAL)^0.5));
            aStandSEPERATS1ETM2 = (bStandSEPERATS1ETM2 * ((xQuadSEPERATS1ETM2 / minPifVAL)^0.5));
            aStandSEPERATS1ETM3 = (bStandSEPERATS1ETM3 * ((xQuadSEPERATS1ETM3 / minPifVAL)^0.5));
            aStandSEPERATS1ETM4 = (bStandSEPERATS1ETM4 * ((xQuadSEPERATS1ETM4 / minPifVAL)^0.5));
            aStandSEPERATS1ETM5 = (bStandSEPERATS1ETM5 * ((xQuadSEPERATS1ETM5 / minPifVAL)^0.5));
            aStandSEPERATS1ETM7 = (bStandSEPERATS1ETM7 * ((xQuadSEPERATS1ETM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM1, bSEPERATS1ETM1, rSEPERATS1ETM1, rQuadSEPERATS1ETM1, aStandSEPERATS1ETM1, bStandSEPERATS1ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM2, bSEPERATS1ETM2, rSEPERATS1ETM2, rQuadSEPERATS1ETM2, aStandSEPERATS1ETM2, bStandSEPERATS1ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM3, bSEPERATS1ETM3, rSEPERATS1ETM3, rQuadSEPERATS1ETM3, aStandSEPERATS1ETM3, bStandSEPERATS1ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM4, bSEPERATS1ETM4, rSEPERATS1ETM4, rQuadSEPERATS1ETM4, aStandSEPERATS1ETM4, bStandSEPERATS1ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM5, bSEPERATS1ETM5, rSEPERATS1ETM5, rQuadSEPERATS1ETM5, aStandSEPERATS1ETM5, bStandSEPERATS1ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS1ETM7, bSEPERATS1ETM7, rSEPERATS1ETM7, rQuadSEPERATS1ETM7, aStandSEPERATS1ETM7, bStandSEPERATS1ETM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS1slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS1slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS1slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS1slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS1slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS1slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS1slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT1ETM1[i,j] = (aSEPERATS1ETM1 + (bSEPERATS1ETM1 * REFS1ETM1[i,j]));
                    OUT1ETM2[i,j] = (aSEPERATS1ETM2 + (bSEPERATS1ETM2 * REFS1ETM2[i,j]));
                    OUT1ETM3[i,j] = (aSEPERATS1ETM3 + (bSEPERATS1ETM3 * REFS1ETM3[i,j]));
                    OUT1ETM4[i,j] = (aSEPERATS1ETM4 + (bSEPERATS1ETM4 * REFS1ETM4[i,j]));
                    OUT1ETM5[i,j] = (aSEPERATS1ETM5 + (bSEPERATS1ETM5 * REFS1ETM5[i,j]));
                    OUT1ETM7[i,j] = (aSEPERATS1ETM7 + (bSEPERATS1ETM7 * REFS1ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1ETM1);
        	CreatePyramid(OUT1ETM2);
        	CreatePyramid(OUT1ETM3);
        	CreatePyramid(OUT1ETM4);
        	CreatePyramid(OUT1ETM5);
        	CreatePyramid(OUT1ETM7);
        
        	CreateHistogram(OUT1ETM1);
        	CreateHistogram(OUT1ETM2);
        	CreateHistogram(OUT1ETM3);
        	CreateHistogram(OUT1ETM4);
        	CreateHistogram(OUT1ETM5);
        	CreateHistogram(OUT1ETM7);
            CloseRaster(REFS1ETM1);
            CloseRaster(REFS1ETM2);
            CloseRaster(REFS1ETM3);
            CloseRaster(REFS1ETM4);
            CloseRaster(REFS1ETM5);
            CloseRaster(REFS1ETM7);
    
            CloseRaster(OUT1ETM1);
            CloseRaster(OUT1ETM2);
            CloseRaster(OUT1ETM3);
            CloseRaster(OUT1ETM4);
            CloseRaster(OUT1ETM5);
            CloseRaster(OUT1ETM7);
            
        	printf("Scene 1 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors1 == 6 )
            {
            numeric xAritSEPERATS1TM1, xAritSEPERATS1TM2, xAritSEPERATS1TM3, xAritSEPERATS1TM4, xAritSEPERATS1TM5, xAritSEPERATS1TM7;
            numeric yAritSEPERATS1TM1, yAritSEPERATS1TM2, yAritSEPERATS1TM3, yAritSEPERATS1TM4, yAritSEPERATS1TM5, yAritSEPERATS1TM7;
    
            numeric aSEPERATS1TM1, aSEPERATS1TM2, aSEPERATS1TM3, aSEPERATS1TM4, aSEPERATS1TM5, aSEPERATS1TM7;
            numeric bSEPERATS1TM1, bSEPERATS1TM2, bSEPERATS1TM3, bSEPERATS1TM4, bSEPERATS1TM5, bSEPERATS1TM7;
            numeric rSEPERATS1TM1, rSEPERATS1TM2, rSEPERATS1TM3, rSEPERATS1TM4, rSEPERATS1TM5, rSEPERATS1TM7;
            numeric rQuadSEPERATS1TM1, rQuadSEPERATS1TM2, rQuadSEPERATS1TM3, rQuadSEPERATS1TM4, rQuadSEPERATS1TM5, rQuadSEPERATS1TM7;
            numeric syxSEPERATS1TM1, syxSEPERATS1TM2, syxSEPERATS1TM3, syxSEPERATS1TM4, syxSEPERATS1TM5, syxSEPERATS1TM7;
            numeric bStandSEPERATS1TM1, bStandSEPERATS1TM2, bStandSEPERATS1TM3, bStandSEPERATS1TM4, bStandSEPERATS1TM5, bStandSEPERATS1TM7;
            numeric aStandSEPERATS1TM1, aStandSEPERATS1TM2, aStandSEPERATS1TM3, aStandSEPERATS1TM4, aStandSEPERATS1TM5, aStandSEPERATS1TM7;
    
            numeric xSEPERATS1TM1 = 0;
            numeric xSEPERATS1TM2 = 0;
            numeric xSEPERATS1TM3 = 0;
            numeric xSEPERATS1TM4 = 0;
            numeric xSEPERATS1TM5 = 0;
            numeric xSEPERATS1TM7 = 0;
    
            numeric xQuadSEPERATS1TM1 = 0;
            numeric xQuadSEPERATS1TM2 = 0;
            numeric xQuadSEPERATS1TM3 = 0;
            numeric xQuadSEPERATS1TM4 = 0;
            numeric xQuadSEPERATS1TM5 = 0;
            numeric xQuadSEPERATS1TM7 = 0;
    
            numeric ySEPERATS1TM1 = 0;
            numeric ySEPERATS1TM2 = 0;
            numeric ySEPERATS1TM3 = 0;
            numeric ySEPERATS1TM4 = 0;
            numeric ySEPERATS1TM5 = 0;
            numeric ySEPERATS1TM7 = 0;
    
            numeric yQuadSEPERATS1TM1 = 0;
            numeric yQuadSEPERATS1TM2 = 0;
            numeric yQuadSEPERATS1TM3 = 0;
            numeric yQuadSEPERATS1TM4 = 0;
            numeric yQuadSEPERATS1TM5 = 0;
            numeric yQuadSEPERATS1TM7 = 0;
    
            numeric xySEPERATS1TM1 = 0;
            numeric xySEPERATS1TM2 = 0;
            numeric xySEPERATS1TM3 = 0;
            numeric xySEPERATS1TM4 = 0;
            numeric xySEPERATS1TM5 = 0;
            numeric xySEPERATS1TM7 = 0;
    
            numeric xxAritQuadSEPERATS1TM1 = 0;
            numeric xxAritQuadSEPERATS1TM2 = 0;
            numeric xxAritQuadSEPERATS1TM3 = 0;
            numeric xxAritQuadSEPERATS1TM4 = 0;
            numeric xxAritQuadSEPERATS1TM5 = 0;
            numeric xxAritQuadSEPERATS1TM7 = 0;
    
            numeric yyAritQuadSEPERATS1TM1 = 0;
            numeric yyAritQuadSEPERATS1TM2 = 0;
            numeric yyAritQuadSEPERATS1TM3 = 0;
            numeric yyAritQuadSEPERATS1TM4 = 0;
            numeric yyAritQuadSEPERATS1TM5 = 0;
            numeric yyAritQuadSEPERATS1TM7 = 0;
    
            numeric qXYSEPERATS1TM1 = 0;
            numeric qXYSEPERATS1TM2 = 0;
            numeric qXYSEPERATS1TM3 = 0;
            numeric qXYSEPERATS1TM4 = 0;
            numeric qXYSEPERATS1TM5 = 0;
            numeric qXYSEPERATS1TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1TM1 = xSEPERATS1TM1 + pifSEPERATS3S1ETM1arrayRAND[m];
                xSEPERATS1TM2 = xSEPERATS1TM2 + pifSEPERATS3S1ETM2arrayRAND[m];
                xSEPERATS1TM3 = xSEPERATS1TM3 + pifSEPERATS3S1ETM3arrayRAND[m];
                xSEPERATS1TM4 = xSEPERATS1TM4 + pifSEPERATS3S1ETM4arrayRAND[m];
                xSEPERATS1TM5 = xSEPERATS1TM5 + pifSEPERATS3S1ETM5arrayRAND[m];
                xSEPERATS1TM7 = xSEPERATS1TM7 + pifSEPERATS3S1ETM7arrayRAND[m];
    
                xQuadSEPERATS1TM1 = (xQuadSEPERATS1TM1 + (pifSEPERATS3S1ETM1arrayRAND[m]^2));
                xQuadSEPERATS1TM2 = (xQuadSEPERATS1TM2 + (pifSEPERATS3S1ETM2arrayRAND[m]^2));
                xQuadSEPERATS1TM3 = (xQuadSEPERATS1TM3 + (pifSEPERATS3S1ETM3arrayRAND[m]^2));
                xQuadSEPERATS1TM4 = (xQuadSEPERATS1TM4 + (pifSEPERATS3S1ETM4arrayRAND[m]^2));
                xQuadSEPERATS1TM5 = (xQuadSEPERATS1TM5 + (pifSEPERATS3S1ETM5arrayRAND[m]^2));
                xQuadSEPERATS1TM7 = (xQuadSEPERATS1TM7 + (pifSEPERATS3S1ETM7arrayRAND[m]^2));
    
                ySEPERATS1TM1 = ySEPERATS1TM1 + pifSEPERATS1slaveTM1arrayRAND[m];
                ySEPERATS1TM2 = ySEPERATS1TM2 + pifSEPERATS1slaveTM2arrayRAND[m];
                ySEPERATS1TM3 = ySEPERATS1TM3 + pifSEPERATS1slaveTM3arrayRAND[m];
                ySEPERATS1TM4 = ySEPERATS1TM4 + pifSEPERATS1slaveTM4arrayRAND[m];
                ySEPERATS1TM5 = ySEPERATS1TM5 + pifSEPERATS1slaveTM5arrayRAND[m];
                ySEPERATS1TM7 = ySEPERATS1TM7 + pifSEPERATS1slaveTM7arrayRAND[m];
                
                yQuadSEPERATS1TM1 = (yQuadSEPERATS1TM1 + (pifSEPERATS1slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS1TM2 = (yQuadSEPERATS1TM2 + (pifSEPERATS1slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS1TM3 = (yQuadSEPERATS1TM3 + (pifSEPERATS1slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS1TM4 = (yQuadSEPERATS1TM4 + (pifSEPERATS1slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS1TM5 = (yQuadSEPERATS1TM5 + (pifSEPERATS1slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS1TM7 = (yQuadSEPERATS1TM7 + (pifSEPERATS1slaveTM7arrayRAND[m]^2));
    
                xySEPERATS1TM1 = (xySEPERATS1TM1 + (pifSEPERATS3S1ETM1arrayRAND[m] * pifSEPERATS1slaveTM1arrayRAND[m]));
                xySEPERATS1TM2 = (xySEPERATS1TM2 + (pifSEPERATS3S1ETM2arrayRAND[m] * pifSEPERATS1slaveTM2arrayRAND[m]));
                xySEPERATS1TM3 = (xySEPERATS1TM3 + (pifSEPERATS3S1ETM3arrayRAND[m] * pifSEPERATS1slaveTM3arrayRAND[m]));
                xySEPERATS1TM4 = (xySEPERATS1TM4 + (pifSEPERATS3S1ETM4arrayRAND[m] * pifSEPERATS1slaveTM4arrayRAND[m]));
                xySEPERATS1TM5 = (xySEPERATS1TM5 + (pifSEPERATS3S1ETM5arrayRAND[m] * pifSEPERATS1slaveTM5arrayRAND[m]));
                xySEPERATS1TM7 = (xySEPERATS1TM7 + (pifSEPERATS3S1ETM7arrayRAND[m] * pifSEPERATS1slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS1TM1 = xSEPERATS1TM1 / minPifVAL;
            xAritSEPERATS1TM2 = xSEPERATS1TM2 / minPifVAL;
            xAritSEPERATS1TM3 = xSEPERATS1TM3 / minPifVAL;
            xAritSEPERATS1TM4 = xSEPERATS1TM4 / minPifVAL;
            xAritSEPERATS1TM5 = xSEPERATS1TM5 / minPifVAL;
            xAritSEPERATS1TM7 = xSEPERATS1TM7 / minPifVAL;
    
            yAritSEPERATS1TM1 = ySEPERATS1TM1 / minPifVAL;
            yAritSEPERATS1TM2 = ySEPERATS1TM2 / minPifVAL;
            yAritSEPERATS1TM3 = ySEPERATS1TM3 / minPifVAL;
            yAritSEPERATS1TM4 = ySEPERATS1TM4 / minPifVAL;
            yAritSEPERATS1TM5 = ySEPERATS1TM5 / minPifVAL;
            yAritSEPERATS1TM7 = ySEPERATS1TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1TM1 = (xxAritQuadSEPERATS1TM1 + ((pifSEPERATS3S1ETM1arrayRAND[n] - xAritSEPERATS1TM1)^2));
                xxAritQuadSEPERATS1TM2 = (xxAritQuadSEPERATS1TM2 + ((pifSEPERATS3S1ETM2arrayRAND[n] - xAritSEPERATS1TM2)^2));
                xxAritQuadSEPERATS1TM3 = (xxAritQuadSEPERATS1TM3 + ((pifSEPERATS3S1ETM3arrayRAND[n] - xAritSEPERATS1TM3)^2));
                xxAritQuadSEPERATS1TM4 = (xxAritQuadSEPERATS1TM4 + ((pifSEPERATS3S1ETM4arrayRAND[n] - xAritSEPERATS1TM4)^2));
                xxAritQuadSEPERATS1TM5 = (xxAritQuadSEPERATS1TM5 + ((pifSEPERATS3S1ETM5arrayRAND[n] - xAritSEPERATS1TM5)^2));
                xxAritQuadSEPERATS1TM7 = (xxAritQuadSEPERATS1TM7 + ((pifSEPERATS3S1ETM7arrayRAND[n] - xAritSEPERATS1TM7)^2));
    
                yyAritQuadSEPERATS1TM1 = (yyAritQuadSEPERATS1TM1 + ((pifSEPERATS1slaveTM1arrayRAND[n] - yAritSEPERATS1TM1)^2));
                yyAritQuadSEPERATS1TM2 = (yyAritQuadSEPERATS1TM2 + ((pifSEPERATS1slaveTM2arrayRAND[n] - yAritSEPERATS1TM2)^2));
                yyAritQuadSEPERATS1TM3 = (yyAritQuadSEPERATS1TM3 + ((pifSEPERATS1slaveTM3arrayRAND[n] - yAritSEPERATS1TM3)^2));
                yyAritQuadSEPERATS1TM4 = (yyAritQuadSEPERATS1TM4 + ((pifSEPERATS1slaveTM4arrayRAND[n] - yAritSEPERATS1TM4)^2));
                yyAritQuadSEPERATS1TM5 = (yyAritQuadSEPERATS1TM5 + ((pifSEPERATS1slaveTM5arrayRAND[n] - yAritSEPERATS1TM5)^2));
                yyAritQuadSEPERATS1TM7 = (yyAritQuadSEPERATS1TM7 + ((pifSEPERATS1slaveTM7arrayRAND[n] - yAritSEPERATS1TM7)^2));
    
                qXYSEPERATS1TM1 = (qXYSEPERATS1TM1 + ((pifSEPERATS3S1ETM1arrayRAND[n] - xAritSEPERATS1TM1) * (pifSEPERATS1slaveTM1arrayRAND[n] - yAritSEPERATS1TM1)));
                qXYSEPERATS1TM2 = (qXYSEPERATS1TM2 + ((pifSEPERATS3S1ETM2arrayRAND[n] - xAritSEPERATS1TM2) * (pifSEPERATS1slaveTM2arrayRAND[n] - yAritSEPERATS1TM2)));
                qXYSEPERATS1TM3 = (qXYSEPERATS1TM3 + ((pifSEPERATS3S1ETM3arrayRAND[n] - xAritSEPERATS1TM3) * (pifSEPERATS1slaveTM3arrayRAND[n] - yAritSEPERATS1TM3)));
                qXYSEPERATS1TM4 = (qXYSEPERATS1TM4 + ((pifSEPERATS3S1ETM4arrayRAND[n] - xAritSEPERATS1TM4) * (pifSEPERATS1slaveTM4arrayRAND[n] - yAritSEPERATS1TM4)));
                qXYSEPERATS1TM5 = (qXYSEPERATS1TM5 + ((pifSEPERATS3S1ETM5arrayRAND[n] - xAritSEPERATS1TM5) * (pifSEPERATS1slaveTM5arrayRAND[n] - yAritSEPERATS1TM5)));
                qXYSEPERATS1TM7 = (qXYSEPERATS1TM7 + ((pifSEPERATS3S1ETM7arrayRAND[n] - xAritSEPERATS1TM7) * (pifSEPERATS1slaveTM7arrayRAND[n] - yAritSEPERATS1TM7)));
            }
        
            aSEPERATS1TM1 = (((xQuadSEPERATS1TM1 * ySEPERATS1TM1) - (xSEPERATS1TM1 * xySEPERATS1TM1)) / ((minPifVAL * xQuadSEPERATS1TM1) - (xSEPERATS1TM1^2)));
            aSEPERATS1TM2 = (((xQuadSEPERATS1TM2 * ySEPERATS1TM2) - (xSEPERATS1TM2 * xySEPERATS1TM2)) / ((minPifVAL * xQuadSEPERATS1TM2) - (xSEPERATS1TM2^2)));
            aSEPERATS1TM3 = (((xQuadSEPERATS1TM3 * ySEPERATS1TM3) - (xSEPERATS1TM3 * xySEPERATS1TM3)) / ((minPifVAL * xQuadSEPERATS1TM3) - (xSEPERATS1TM3^2)));
            aSEPERATS1TM4 = (((xQuadSEPERATS1TM4 * ySEPERATS1TM4) - (xSEPERATS1TM4 * xySEPERATS1TM4)) / ((minPifVAL * xQuadSEPERATS1TM4) - (xSEPERATS1TM4^2)));
            aSEPERATS1TM5 = (((xQuadSEPERATS1TM5 * ySEPERATS1TM5) - (xSEPERATS1TM5 * xySEPERATS1TM5)) / ((minPifVAL * xQuadSEPERATS1TM5) - (xSEPERATS1TM5^2)));
            aSEPERATS1TM7 = (((xQuadSEPERATS1TM7 * ySEPERATS1TM7) - (xSEPERATS1TM7 * xySEPERATS1TM7)) / ((minPifVAL * xQuadSEPERATS1TM7) - (xSEPERATS1TM7^2)));
            
            bSEPERATS1TM1 = qXYSEPERATS1TM1 / xxAritQuadSEPERATS1TM1;
            bSEPERATS1TM2 = qXYSEPERATS1TM2 / xxAritQuadSEPERATS1TM2;
            bSEPERATS1TM3 = qXYSEPERATS1TM3 / xxAritQuadSEPERATS1TM3;
            bSEPERATS1TM4 = qXYSEPERATS1TM4 / xxAritQuadSEPERATS1TM4;
            bSEPERATS1TM5 = qXYSEPERATS1TM5 / xxAritQuadSEPERATS1TM5;
            bSEPERATS1TM7 = qXYSEPERATS1TM7 / xxAritQuadSEPERATS1TM7;
    
            rSEPERATS1TM1 = (qXYSEPERATS1TM1 / ((xxAritQuadSEPERATS1TM1 * yyAritQuadSEPERATS1TM1)^0.5));
            rSEPERATS1TM2 = (qXYSEPERATS1TM2 / ((xxAritQuadSEPERATS1TM2 * yyAritQuadSEPERATS1TM2)^0.5));
            rSEPERATS1TM3 = (qXYSEPERATS1TM3 / ((xxAritQuadSEPERATS1TM3 * yyAritQuadSEPERATS1TM3)^0.5));
            rSEPERATS1TM4 = (qXYSEPERATS1TM4 / ((xxAritQuadSEPERATS1TM4 * yyAritQuadSEPERATS1TM4)^0.5));
            rSEPERATS1TM5 = (qXYSEPERATS1TM5 / ((xxAritQuadSEPERATS1TM5 * yyAritQuadSEPERATS1TM5)^0.5));
            rSEPERATS1TM7 = (qXYSEPERATS1TM7 / ((xxAritQuadSEPERATS1TM7 * yyAritQuadSEPERATS1TM7)^0.5));
    
            rQuadSEPERATS1TM1 = ((rSEPERATS1TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1TM2 = ((rSEPERATS1TM2^2) * 100);
            rQuadSEPERATS1TM3 = ((rSEPERATS1TM3^2) * 100);
            rQuadSEPERATS1TM4 = ((rSEPERATS1TM4^2) * 100);
            rQuadSEPERATS1TM5 = ((rSEPERATS1TM5^2) * 100);
            rQuadSEPERATS1TM7 = ((rSEPERATS1TM7^2) * 100);
        
            syxSEPERATS1TM1 = (((yyAritQuadSEPERATS1TM1 - ((qXYSEPERATS1TM1^2) / xxAritQuadSEPERATS1TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM2 = (((yyAritQuadSEPERATS1TM2 - ((qXYSEPERATS1TM2^2) / xxAritQuadSEPERATS1TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM3 = (((yyAritQuadSEPERATS1TM3 - ((qXYSEPERATS1TM3^2) / xxAritQuadSEPERATS1TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM4 = (((yyAritQuadSEPERATS1TM4 - ((qXYSEPERATS1TM4^2) / xxAritQuadSEPERATS1TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM5 = (((yyAritQuadSEPERATS1TM5 - ((qXYSEPERATS1TM5^2) / xxAritQuadSEPERATS1TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM7 = (((yyAritQuadSEPERATS1TM7 - ((qXYSEPERATS1TM7^2) / xxAritQuadSEPERATS1TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1TM1 = (((syxSEPERATS1TM1^2) / xxAritQuadSEPERATS1TM1)^0.5);
            bStandSEPERATS1TM2 = (((syxSEPERATS1TM2^2) / xxAritQuadSEPERATS1TM2)^0.5);
            bStandSEPERATS1TM3 = (((syxSEPERATS1TM3^2) / xxAritQuadSEPERATS1TM3)^0.5);
            bStandSEPERATS1TM4 = (((syxSEPERATS1TM4^2) / xxAritQuadSEPERATS1TM4)^0.5);
            bStandSEPERATS1TM5 = (((syxSEPERATS1TM5^2) / xxAritQuadSEPERATS1TM5)^0.5);
            bStandSEPERATS1TM7 = (((syxSEPERATS1TM7^2) / xxAritQuadSEPERATS1TM7)^0.5);
    
            aStandSEPERATS1TM1 = (bStandSEPERATS1TM1 * ((xQuadSEPERATS1TM1 / minPifVAL)^0.5));
            aStandSEPERATS1TM2 = (bStandSEPERATS1TM2 * ((xQuadSEPERATS1TM2 / minPifVAL)^0.5));
            aStandSEPERATS1TM3 = (bStandSEPERATS1TM3 * ((xQuadSEPERATS1TM3 / minPifVAL)^0.5));
            aStandSEPERATS1TM4 = (bStandSEPERATS1TM4 * ((xQuadSEPERATS1TM4 / minPifVAL)^0.5));
            aStandSEPERATS1TM5 = (bStandSEPERATS1TM5 * ((xQuadSEPERATS1TM5 / minPifVAL)^0.5));
            aStandSEPERATS1TM7 = (bStandSEPERATS1TM7 * ((xQuadSEPERATS1TM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM1, bSEPERATS1TM1, rSEPERATS1TM1, rQuadSEPERATS1TM1, aStandSEPERATS1TM1, bStandSEPERATS1TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM2, bSEPERATS1TM2, rSEPERATS1TM2, rQuadSEPERATS1TM2, aStandSEPERATS1TM2, bStandSEPERATS1TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM3, bSEPERATS1TM3, rSEPERATS1TM3, rQuadSEPERATS1TM3, aStandSEPERATS1TM3, bStandSEPERATS1TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM4, bSEPERATS1TM4, rSEPERATS1TM4, rQuadSEPERATS1TM4, aStandSEPERATS1TM4, bStandSEPERATS1TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM5, bSEPERATS1TM5, rSEPERATS1TM5, rQuadSEPERATS1TM5, aStandSEPERATS1TM5, bStandSEPERATS1TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS1TM7, bSEPERATS1TM7, rSEPERATS1TM7, rQuadSEPERATS1TM7, aStandSEPERATS1TM7, bStandSEPERATS1TM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS1slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS1slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS1slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS1slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS1slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS1slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS1slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT1TM1[i,j] = (aSEPERATS1TM1 + (bSEPERATS1TM1 * REFS1TM1[i,j]));
                    OUT1TM2[i,j] = (aSEPERATS1TM2 + (bSEPERATS1TM2 * REFS1TM2[i,j]));
                    OUT1TM3[i,j] = (aSEPERATS1TM3 + (bSEPERATS1TM3 * REFS1TM3[i,j]));
                    OUT1TM4[i,j] = (aSEPERATS1TM4 + (bSEPERATS1TM4 * REFS1TM4[i,j]));
                    OUT1TM5[i,j] = (aSEPERATS1TM5 + (bSEPERATS1TM5 * REFS1TM5[i,j]));
                    OUT1TM7[i,j] = (aSEPERATS1TM7 + (bSEPERATS1TM7 * REFS1TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1TM1);
        	CreatePyramid(OUT1TM2);
        	CreatePyramid(OUT1TM3);
        	CreatePyramid(OUT1TM4);
        	CreatePyramid(OUT1TM5);
        	CreatePyramid(OUT1TM7);
        
        	CreateHistogram(OUT1TM1);
        	CreateHistogram(OUT1TM2);
        	CreateHistogram(OUT1TM3);
        	CreateHistogram(OUT1TM4);
        	CreateHistogram(OUT1TM5);
        	CreateHistogram(OUT1TM7);
            CloseRaster(REFS1TM1);
            CloseRaster(REFS1TM2);
            CloseRaster(REFS1TM3);
            CloseRaster(REFS1TM4);
            CloseRaster(REFS1TM5);
            CloseRaster(REFS1TM7);
    
            CloseRaster(OUT1TM1);
            CloseRaster(OUT1TM2);
            CloseRaster(OUT1TM3);
            CloseRaster(OUT1TM4);
            CloseRaster(OUT1TM5);
            CloseRaster(OUT1TM7);
        
        	printf("Scene 1 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS1MSS1, xAritSEPERATS1MSS2, xAritSEPERATS1MSS4;
            numeric yAritSEPERATS1MSS1, yAritSEPERATS1MSS2, yAritSEPERATS1MSS4;
    
            numeric aSEPERATS1MSS1, aSEPERATS1MSS2, aSEPERATS1MSS4;
            numeric bSEPERATS1MSS1, bSEPERATS1MSS2, bSEPERATS1MSS4;
            numeric rSEPERATS1MSS1, rSEPERATS1MSS2, rSEPERATS1MSS4;
            numeric rQuadSEPERATS1MSS1, rQuadSEPERATS1MSS2, rQuadSEPERATS1MSS4;
            numeric syxSEPERATS1MSS1, syxSEPERATS1MSS2, syxSEPERATS1MSS4;
            numeric bStandSEPERATS1MSS1, bStandSEPERATS1MSS2, bStandSEPERATS1MSS4;
            numeric aStandSEPERATS1MSS1, aStandSEPERATS1MSS2, aStandSEPERATS1MSS4;
    
            numeric xSEPERATS1MSS1 = 0;
            numeric xSEPERATS1MSS2 = 0;
            numeric xSEPERATS1MSS4 = 0;
    
            numeric xQuadSEPERATS1MSS1 = 0;
            numeric xQuadSEPERATS1MSS2 = 0;
            numeric xQuadSEPERATS1MSS4 = 0;
    
            numeric ySEPERATS1MSS1 = 0;
            numeric ySEPERATS1MSS2 = 0;
            numeric ySEPERATS1MSS4 = 0;
    
            numeric yQuadSEPERATS1MSS1 = 0;
            numeric yQuadSEPERATS1MSS2 = 0;
            numeric yQuadSEPERATS1MSS4 = 0;
    
            numeric xySEPERATS1MSS1 = 0;
            numeric xySEPERATS1MSS2 = 0;
            numeric xySEPERATS1MSS4 = 0;
    
            numeric xxAritQuadSEPERATS1MSS1 = 0;
            numeric xxAritQuadSEPERATS1MSS2 = 0;
            numeric xxAritQuadSEPERATS1MSS4 = 0;
    
            numeric yyAritQuadSEPERATS1MSS1 = 0;
            numeric yyAritQuadSEPERATS1MSS2 = 0;
            numeric yyAritQuadSEPERATS1MSS4 = 0;
    
            numeric qXYSEPERATS1MSS1 = 0;
            numeric qXYSEPERATS1MSS2 = 0;
            numeric qXYSEPERATS1MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1MSS1 = xSEPERATS1MSS1 + pifSEPERATS3S1ETM2arrayRAND[m];
                xSEPERATS1MSS2 = xSEPERATS1MSS2 + pifSEPERATS3S1ETM3arrayRAND[m];
                xSEPERATS1MSS4 = xSEPERATS1MSS4 + pifSEPERATS3S1ETM4arrayRAND[m];
    
                xQuadSEPERATS1MSS1 = (xQuadSEPERATS1MSS1 + (pifSEPERATS3S1ETM2arrayRAND[m]^2));
                xQuadSEPERATS1MSS2 = (xQuadSEPERATS1MSS2 + (pifSEPERATS3S1ETM3arrayRAND[m]^2));
                xQuadSEPERATS1MSS4 = (xQuadSEPERATS1MSS4 + (pifSEPERATS3S1ETM4arrayRAND[m]^2));
    
                ySEPERATS1MSS1 = ySEPERATS1MSS1 + pifSEPERATS1slaveMSS1arrayRAND[m];
                ySEPERATS1MSS2 = ySEPERATS1MSS2 + pifSEPERATS1slaveMSS2arrayRAND[m];
                ySEPERATS1MSS4 = ySEPERATS1MSS4 + pifSEPERATS1slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS1MSS1 = (yQuadSEPERATS1MSS1 + (pifSEPERATS1slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS1MSS2 = (yQuadSEPERATS1MSS2 + (pifSEPERATS1slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS1MSS4 = (yQuadSEPERATS1MSS4 + (pifSEPERATS1slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS1MSS1 = (xySEPERATS1MSS1 + (pifSEPERATS3S1ETM2arrayRAND[m] * pifSEPERATS1slaveMSS1arrayRAND[m]));
                xySEPERATS1MSS2 = (xySEPERATS1MSS2 + (pifSEPERATS3S1ETM3arrayRAND[m] * pifSEPERATS1slaveMSS2arrayRAND[m]));
                xySEPERATS1MSS4 = (xySEPERATS1MSS4 + (pifSEPERATS3S1ETM4arrayRAND[m] * pifSEPERATS1slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS1MSS1 = xSEPERATS1MSS1 / minPifVAL;
            xAritSEPERATS1MSS2 = xSEPERATS1MSS2 / minPifVAL;
            xAritSEPERATS1MSS4 = xSEPERATS1MSS4 / minPifVAL;
    
            yAritSEPERATS1MSS1 = ySEPERATS1MSS1 / minPifVAL;
            yAritSEPERATS1MSS2 = ySEPERATS1MSS2 / minPifVAL;
            yAritSEPERATS1MSS4 = ySEPERATS1MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1MSS1 = (xxAritQuadSEPERATS1MSS1 + ((pifSEPERATS3S1ETM2arrayRAND[n] - xAritSEPERATS1MSS1)^2));
                xxAritQuadSEPERATS1MSS2 = (xxAritQuadSEPERATS1MSS2 + ((pifSEPERATS3S1ETM3arrayRAND[n] - xAritSEPERATS1MSS2)^2));
                xxAritQuadSEPERATS1MSS4 = (xxAritQuadSEPERATS1MSS4 + ((pifSEPERATS3S1ETM4arrayRAND[n] - xAritSEPERATS1MSS4)^2));
    
                yyAritQuadSEPERATS1MSS1 = (yyAritQuadSEPERATS1MSS1 + ((pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)^2));
                yyAritQuadSEPERATS1MSS2 = (yyAritQuadSEPERATS1MSS2 + ((pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)^2));
                yyAritQuadSEPERATS1MSS4 = (yyAritQuadSEPERATS1MSS4 + ((pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)^2));
    
                qXYSEPERATS1MSS1 = (qXYSEPERATS1MSS1 + ((pifSEPERATS3S1ETM2arrayRAND[n] - xAritSEPERATS1MSS1) * (pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)));
                qXYSEPERATS1MSS2 = (qXYSEPERATS1MSS2 + ((pifSEPERATS3S1ETM3arrayRAND[n] - xAritSEPERATS1MSS2) * (pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)));
                qXYSEPERATS1MSS4 = (qXYSEPERATS1MSS4 + ((pifSEPERATS3S1ETM4arrayRAND[n] - xAritSEPERATS1MSS4) * (pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)));
            }
        
            aSEPERATS1MSS1 = (((xQuadSEPERATS1MSS1 * ySEPERATS1MSS1) - (xSEPERATS1MSS1 * xySEPERATS1MSS1)) / ((minPifVAL * xQuadSEPERATS1MSS1) - (xSEPERATS1MSS1^2)));
            aSEPERATS1MSS2 = (((xQuadSEPERATS1MSS2 * ySEPERATS1MSS2) - (xSEPERATS1MSS2 * xySEPERATS1MSS2)) / ((minPifVAL * xQuadSEPERATS1MSS2) - (xSEPERATS1MSS2^2)));
            aSEPERATS1MSS4 = (((xQuadSEPERATS1MSS4 * ySEPERATS1MSS4) - (xSEPERATS1MSS4 * xySEPERATS1MSS4)) / ((minPifVAL * xQuadSEPERATS1MSS4) - (xSEPERATS1MSS4^2)));
            
            bSEPERATS1MSS1 = qXYSEPERATS1MSS1 / xxAritQuadSEPERATS1MSS1;
            bSEPERATS1MSS2 = qXYSEPERATS1MSS2 / xxAritQuadSEPERATS1MSS2;
            bSEPERATS1MSS4 = qXYSEPERATS1MSS4 / xxAritQuadSEPERATS1MSS4;
    
            rSEPERATS1MSS1 = (qXYSEPERATS1MSS1 / ((xxAritQuadSEPERATS1MSS1 * yyAritQuadSEPERATS1MSS1)^0.5));
            rSEPERATS1MSS2 = (qXYSEPERATS1MSS2 / ((xxAritQuadSEPERATS1MSS2 * yyAritQuadSEPERATS1MSS2)^0.5));
            rSEPERATS1MSS4 = (qXYSEPERATS1MSS4 / ((xxAritQuadSEPERATS1MSS4 * yyAritQuadSEPERATS1MSS4)^0.5));
    
            rQuadSEPERATS1MSS1 = ((rSEPERATS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1MSS2 = ((rSEPERATS1MSS2^2) * 100);
            rQuadSEPERATS1MSS4 = ((rSEPERATS1MSS4^2) * 100);
        
            syxSEPERATS1MSS1 = (((yyAritQuadSEPERATS1MSS1 - ((qXYSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS2 = (((yyAritQuadSEPERATS1MSS2 - ((qXYSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS4 = (((yyAritQuadSEPERATS1MSS4 - ((qXYSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1MSS1 = (((syxSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)^0.5);
            bStandSEPERATS1MSS2 = (((syxSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)^0.5);
            bStandSEPERATS1MSS4 = (((syxSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)^0.5);
    
            aStandSEPERATS1MSS1 = (bStandSEPERATS1MSS1 * ((xQuadSEPERATS1MSS1 / minPifVAL)^0.5));
            aStandSEPERATS1MSS2 = (bStandSEPERATS1MSS2 * ((xQuadSEPERATS1MSS2 / minPifVAL)^0.5));
            aStandSEPERATS1MSS4 = (bStandSEPERATS1MSS4 * ((xQuadSEPERATS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS1, bSEPERATS1MSS1, rSEPERATS1MSS1, rQuadSEPERATS1MSS1, aStandSEPERATS1MSS1, bStandSEPERATS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS2, bSEPERATS1MSS2, rSEPERATS1MSS2, rQuadSEPERATS1MSS2, aStandSEPERATS1MSS2, bStandSEPERATS1MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS4, bSEPERATS1MSS4, rSEPERATS1MSS4, rQuadSEPERATS1MSS4, aStandSEPERATS1MSS4, bStandSEPERATS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS1slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS1slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS1slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aSEPERATS1MSS1 + (bSEPERATS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aSEPERATS1MSS2 + (bSEPERATS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = REFS1MSS3[i,j];
                    OUT1MSS4[i,j] = (aSEPERATS1MSS4 + (bSEPERATS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT1MSS1);
            CreatePyramid(OUT1MSS2);
            CreatePyramid(OUT1MSS3);
            CreatePyramid(OUT1MSS4);
        
            CreateHistogram(OUT1MSS1);
            CreateHistogram(OUT1MSS2);
            CreateHistogram(OUT1MSS3);
            CreateHistogram(OUT1MSS4);
            
            CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors2 == 7 )
            {
            numeric xAritSEPERATS2ETM1, xAritSEPERATS2ETM2, xAritSEPERATS2ETM3, xAritSEPERATS2ETM4, xAritSEPERATS2ETM5, xAritSEPERATS2ETM7;
            numeric yAritSEPERATS2ETM1, yAritSEPERATS2ETM2, yAritSEPERATS2ETM3, yAritSEPERATS2ETM4, yAritSEPERATS2ETM5, yAritSEPERATS2ETM7;
    
            numeric aSEPERATS2ETM1, aSEPERATS2ETM2, aSEPERATS2ETM3, aSEPERATS2ETM4, aSEPERATS2ETM5, aSEPERATS2ETM7;
            numeric bSEPERATS2ETM1, bSEPERATS2ETM2, bSEPERATS2ETM3, bSEPERATS2ETM4, bSEPERATS2ETM5, bSEPERATS2ETM7;
            numeric rSEPERATS2ETM1, rSEPERATS2ETM2, rSEPERATS2ETM3, rSEPERATS2ETM4, rSEPERATS2ETM5, rSEPERATS2ETM7;
            numeric rQuadSEPERATS2ETM1, rQuadSEPERATS2ETM2, rQuadSEPERATS2ETM3, rQuadSEPERATS2ETM4, rQuadSEPERATS2ETM5, rQuadSEPERATS2ETM7;
            numeric syxSEPERATS2ETM1, syxSEPERATS2ETM2, syxSEPERATS2ETM3, syxSEPERATS2ETM4, syxSEPERATS2ETM5, syxSEPERATS2ETM7;
            numeric bStandSEPERATS2ETM1, bStandSEPERATS2ETM2, bStandSEPERATS2ETM3, bStandSEPERATS2ETM4, bStandSEPERATS2ETM5, bStandSEPERATS2ETM7;
            numeric aStandSEPERATS2ETM1, aStandSEPERATS2ETM2, aStandSEPERATS2ETM3, aStandSEPERATS2ETM4, aStandSEPERATS2ETM5, aStandSEPERATS2ETM7;
    
            numeric xSEPERATS2ETM1 = 0;
            numeric xSEPERATS2ETM2 = 0;
            numeric xSEPERATS2ETM3 = 0;
            numeric xSEPERATS2ETM4 = 0;
            numeric xSEPERATS2ETM5 = 0;
            numeric xSEPERATS2ETM7 = 0;
    
            numeric xQuadSEPERATS2ETM1 = 0;
            numeric xQuadSEPERATS2ETM2 = 0;
            numeric xQuadSEPERATS2ETM3 = 0;
            numeric xQuadSEPERATS2ETM4 = 0;
            numeric xQuadSEPERATS2ETM5 = 0;
            numeric xQuadSEPERATS2ETM7 = 0;
    
            numeric ySEPERATS2ETM1 = 0;
            numeric ySEPERATS2ETM2 = 0;
            numeric ySEPERATS2ETM3 = 0;
            numeric ySEPERATS2ETM4 = 0;
            numeric ySEPERATS2ETM5 = 0;
            numeric ySEPERATS2ETM7 = 0;
    
            numeric yQuadSEPERATS2ETM1 = 0;
            numeric yQuadSEPERATS2ETM2 = 0;
            numeric yQuadSEPERATS2ETM3 = 0;
            numeric yQuadSEPERATS2ETM4 = 0;
            numeric yQuadSEPERATS2ETM5 = 0;
            numeric yQuadSEPERATS2ETM7 = 0;
    
            numeric xySEPERATS2ETM1 = 0;
            numeric xySEPERATS2ETM2 = 0;
            numeric xySEPERATS2ETM3 = 0;
            numeric xySEPERATS2ETM4 = 0;
            numeric xySEPERATS2ETM5 = 0;
            numeric xySEPERATS2ETM7 = 0;
    
            numeric xxAritQuadSEPERATS2ETM1 = 0;
            numeric xxAritQuadSEPERATS2ETM2 = 0;
            numeric xxAritQuadSEPERATS2ETM3 = 0;
            numeric xxAritQuadSEPERATS2ETM4 = 0;
            numeric xxAritQuadSEPERATS2ETM5 = 0;
            numeric xxAritQuadSEPERATS2ETM7 = 0;
    
            numeric yyAritQuadSEPERATS2ETM1 = 0;
            numeric yyAritQuadSEPERATS2ETM2 = 0;
            numeric yyAritQuadSEPERATS2ETM3 = 0;
            numeric yyAritQuadSEPERATS2ETM4 = 0;
            numeric yyAritQuadSEPERATS2ETM5 = 0;
            numeric yyAritQuadSEPERATS2ETM7 = 0;
    
            numeric qXYSEPERATS2ETM1 = 0;
            numeric qXYSEPERATS2ETM2 = 0;
            numeric qXYSEPERATS2ETM3 = 0;
            numeric qXYSEPERATS2ETM4 = 0;
            numeric qXYSEPERATS2ETM5 = 0;
            numeric qXYSEPERATS2ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS2ETM1 = xSEPERATS2ETM1 + pifSEPERATS3S2ETM1arrayRAND[m];
                xSEPERATS2ETM2 = xSEPERATS2ETM2 + pifSEPERATS3S2ETM2arrayRAND[m];
                xSEPERATS2ETM3 = xSEPERATS2ETM3 + pifSEPERATS3S2ETM3arrayRAND[m];
                xSEPERATS2ETM4 = xSEPERATS2ETM4 + pifSEPERATS3S2ETM4arrayRAND[m];
                xSEPERATS2ETM5 = xSEPERATS2ETM5 + pifSEPERATS3S2ETM5arrayRAND[m];
                xSEPERATS2ETM7 = xSEPERATS2ETM7 + pifSEPERATS3S2ETM7arrayRAND[m];
    
                xQuadSEPERATS2ETM1 = (xQuadSEPERATS2ETM1 + (pifSEPERATS3S2ETM1arrayRAND[m]^2));
                xQuadSEPERATS2ETM2 = (xQuadSEPERATS2ETM2 + (pifSEPERATS3S2ETM2arrayRAND[m]^2));
                xQuadSEPERATS2ETM3 = (xQuadSEPERATS2ETM3 + (pifSEPERATS3S2ETM3arrayRAND[m]^2));
                xQuadSEPERATS2ETM4 = (xQuadSEPERATS2ETM4 + (pifSEPERATS3S2ETM4arrayRAND[m]^2));
                xQuadSEPERATS2ETM5 = (xQuadSEPERATS2ETM5 + (pifSEPERATS3S2ETM5arrayRAND[m]^2));
                xQuadSEPERATS2ETM7 = (xQuadSEPERATS2ETM7 + (pifSEPERATS3S2ETM7arrayRAND[m]^2));
    
                ySEPERATS2ETM1 = ySEPERATS2ETM1 + pifSEPERATS2slaveETM1arrayRAND[m];
                ySEPERATS2ETM2 = ySEPERATS2ETM2 + pifSEPERATS2slaveETM2arrayRAND[m];
                ySEPERATS2ETM3 = ySEPERATS2ETM3 + pifSEPERATS2slaveETM3arrayRAND[m];
                ySEPERATS2ETM4 = ySEPERATS2ETM4 + pifSEPERATS2slaveETM4arrayRAND[m];
                ySEPERATS2ETM5 = ySEPERATS2ETM5 + pifSEPERATS2slaveETM5arrayRAND[m];
                ySEPERATS2ETM7 = ySEPERATS2ETM7 + pifSEPERATS2slaveETM7arrayRAND[m];
                
                yQuadSEPERATS2ETM1 = (yQuadSEPERATS2ETM1 + (pifSEPERATS2slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS2ETM2 = (yQuadSEPERATS2ETM2 + (pifSEPERATS2slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS2ETM3 = (yQuadSEPERATS2ETM3 + (pifSEPERATS2slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS2ETM4 = (yQuadSEPERATS2ETM4 + (pifSEPERATS2slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS2ETM5 = (yQuadSEPERATS2ETM5 + (pifSEPERATS2slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS2ETM7 = (yQuadSEPERATS2ETM7 + (pifSEPERATS2slaveETM7arrayRAND[m]^2));
    
                xySEPERATS2ETM1 = (xySEPERATS2ETM1 + (pifSEPERATS3S2ETM1arrayRAND[m] * pifSEPERATS2slaveETM1arrayRAND[m]));
                xySEPERATS2ETM2 = (xySEPERATS2ETM2 + (pifSEPERATS3S2ETM2arrayRAND[m] * pifSEPERATS2slaveETM2arrayRAND[m]));
                xySEPERATS2ETM3 = (xySEPERATS2ETM3 + (pifSEPERATS3S2ETM3arrayRAND[m] * pifSEPERATS2slaveETM3arrayRAND[m]));
                xySEPERATS2ETM4 = (xySEPERATS2ETM4 + (pifSEPERATS3S2ETM4arrayRAND[m] * pifSEPERATS2slaveETM4arrayRAND[m]));
                xySEPERATS2ETM5 = (xySEPERATS2ETM5 + (pifSEPERATS3S2ETM5arrayRAND[m] * pifSEPERATS2slaveETM5arrayRAND[m]));
                xySEPERATS2ETM7 = (xySEPERATS2ETM7 + (pifSEPERATS3S2ETM7arrayRAND[m] * pifSEPERATS2slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS2ETM1 = xSEPERATS2ETM1 / minPifVAL;
            xAritSEPERATS2ETM2 = xSEPERATS2ETM2 / minPifVAL;
            xAritSEPERATS2ETM3 = xSEPERATS2ETM3 / minPifVAL;
            xAritSEPERATS2ETM4 = xSEPERATS2ETM4 / minPifVAL;
            xAritSEPERATS2ETM5 = xSEPERATS2ETM5 / minPifVAL;
            xAritSEPERATS2ETM7 = xSEPERATS2ETM7 / minPifVAL;
    
            yAritSEPERATS2ETM1 = ySEPERATS2ETM1 / minPifVAL;
            yAritSEPERATS2ETM2 = ySEPERATS2ETM2 / minPifVAL;
            yAritSEPERATS2ETM3 = ySEPERATS2ETM3 / minPifVAL;
            yAritSEPERATS2ETM4 = ySEPERATS2ETM4 / minPifVAL;
            yAritSEPERATS2ETM5 = ySEPERATS2ETM5 / minPifVAL;
            yAritSEPERATS2ETM7 = ySEPERATS2ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2ETM1 = (xxAritQuadSEPERATS2ETM1 + ((pifSEPERATS3S2ETM1arrayRAND[n] - xAritSEPERATS2ETM1)^2));
                xxAritQuadSEPERATS2ETM2 = (xxAritQuadSEPERATS2ETM2 + ((pifSEPERATS3S2ETM2arrayRAND[n] - xAritSEPERATS2ETM2)^2));
                xxAritQuadSEPERATS2ETM3 = (xxAritQuadSEPERATS2ETM3 + ((pifSEPERATS3S2ETM3arrayRAND[n] - xAritSEPERATS2ETM3)^2));
                xxAritQuadSEPERATS2ETM4 = (xxAritQuadSEPERATS2ETM4 + ((pifSEPERATS3S2ETM4arrayRAND[n] - xAritSEPERATS2ETM4)^2));
                xxAritQuadSEPERATS2ETM5 = (xxAritQuadSEPERATS2ETM5 + ((pifSEPERATS3S2ETM5arrayRAND[n] - xAritSEPERATS2ETM5)^2));
                xxAritQuadSEPERATS2ETM7 = (xxAritQuadSEPERATS2ETM7 + ((pifSEPERATS3S2ETM7arrayRAND[n] - xAritSEPERATS2ETM7)^2));
    
                yyAritQuadSEPERATS2ETM1 = (yyAritQuadSEPERATS2ETM1 + ((pifSEPERATS2slaveETM1arrayRAND[n] - yAritSEPERATS2ETM1)^2));
                yyAritQuadSEPERATS2ETM2 = (yyAritQuadSEPERATS2ETM2 + ((pifSEPERATS2slaveETM2arrayRAND[n] - yAritSEPERATS2ETM2)^2));
                yyAritQuadSEPERATS2ETM3 = (yyAritQuadSEPERATS2ETM3 + ((pifSEPERATS2slaveETM3arrayRAND[n] - yAritSEPERATS2ETM3)^2));
                yyAritQuadSEPERATS2ETM4 = (yyAritQuadSEPERATS2ETM4 + ((pifSEPERATS2slaveETM4arrayRAND[n] - yAritSEPERATS2ETM4)^2));
                yyAritQuadSEPERATS2ETM5 = (yyAritQuadSEPERATS2ETM5 + ((pifSEPERATS2slaveETM5arrayRAND[n] - yAritSEPERATS2ETM5)^2));
                yyAritQuadSEPERATS2ETM7 = (yyAritQuadSEPERATS2ETM7 + ((pifSEPERATS2slaveETM7arrayRAND[n] - yAritSEPERATS2ETM7)^2));
    
                qXYSEPERATS2ETM1 = (qXYSEPERATS2ETM1 + ((pifSEPERATS3S2ETM1arrayRAND[n] - xAritSEPERATS2ETM1) * (pifSEPERATS2slaveETM1arrayRAND[n] - yAritSEPERATS2ETM1)));
                qXYSEPERATS2ETM2 = (qXYSEPERATS2ETM2 + ((pifSEPERATS3S2ETM2arrayRAND[n] - xAritSEPERATS2ETM2) * (pifSEPERATS2slaveETM2arrayRAND[n] - yAritSEPERATS2ETM2)));
                qXYSEPERATS2ETM3 = (qXYSEPERATS2ETM3 + ((pifSEPERATS3S2ETM3arrayRAND[n] - xAritSEPERATS2ETM3) * (pifSEPERATS2slaveETM3arrayRAND[n] - yAritSEPERATS2ETM3)));
                qXYSEPERATS2ETM4 = (qXYSEPERATS2ETM4 + ((pifSEPERATS3S2ETM4arrayRAND[n] - xAritSEPERATS2ETM4) * (pifSEPERATS2slaveETM4arrayRAND[n] - yAritSEPERATS2ETM4)));
                qXYSEPERATS2ETM5 = (qXYSEPERATS2ETM5 + ((pifSEPERATS3S2ETM5arrayRAND[n] - xAritSEPERATS2ETM5) * (pifSEPERATS2slaveETM5arrayRAND[n] - yAritSEPERATS2ETM5)));
                qXYSEPERATS2ETM7 = (qXYSEPERATS2ETM7 + ((pifSEPERATS3S2ETM7arrayRAND[n] - xAritSEPERATS2ETM7) * (pifSEPERATS2slaveETM7arrayRAND[n] - yAritSEPERATS2ETM7)));
            }
        
            aSEPERATS2ETM1 = (((xQuadSEPERATS2ETM1 * ySEPERATS2ETM1) - (xSEPERATS2ETM1 * xySEPERATS2ETM1)) / ((minPifVAL * xQuadSEPERATS2ETM1) - (xSEPERATS2ETM1^2)));
            aSEPERATS2ETM2 = (((xQuadSEPERATS2ETM2 * ySEPERATS2ETM2) - (xSEPERATS2ETM2 * xySEPERATS2ETM2)) / ((minPifVAL * xQuadSEPERATS2ETM2) - (xSEPERATS2ETM2^2)));
            aSEPERATS2ETM3 = (((xQuadSEPERATS2ETM3 * ySEPERATS2ETM3) - (xSEPERATS2ETM3 * xySEPERATS2ETM3)) / ((minPifVAL * xQuadSEPERATS2ETM3) - (xSEPERATS2ETM3^2)));
            aSEPERATS2ETM4 = (((xQuadSEPERATS2ETM4 * ySEPERATS2ETM4) - (xSEPERATS2ETM4 * xySEPERATS2ETM4)) / ((minPifVAL * xQuadSEPERATS2ETM4) - (xSEPERATS2ETM4^2)));
            aSEPERATS2ETM5 = (((xQuadSEPERATS2ETM5 * ySEPERATS2ETM5) - (xSEPERATS2ETM5 * xySEPERATS2ETM5)) / ((minPifVAL * xQuadSEPERATS2ETM5) - (xSEPERATS2ETM5^2)));
            aSEPERATS2ETM7 = (((xQuadSEPERATS2ETM7 * ySEPERATS2ETM7) - (xSEPERATS2ETM7 * xySEPERATS2ETM7)) / ((minPifVAL * xQuadSEPERATS2ETM7) - (xSEPERATS2ETM7^2)));
            
            bSEPERATS2ETM1 = qXYSEPERATS2ETM1 / xxAritQuadSEPERATS2ETM1;
            bSEPERATS2ETM2 = qXYSEPERATS2ETM2 / xxAritQuadSEPERATS2ETM2;
            bSEPERATS2ETM3 = qXYSEPERATS2ETM3 / xxAritQuadSEPERATS2ETM3;
            bSEPERATS2ETM4 = qXYSEPERATS2ETM4 / xxAritQuadSEPERATS2ETM4;
            bSEPERATS2ETM5 = qXYSEPERATS2ETM5 / xxAritQuadSEPERATS2ETM5;
            bSEPERATS2ETM7 = qXYSEPERATS2ETM7 / xxAritQuadSEPERATS2ETM7;
    
            rSEPERATS2ETM1 = (qXYSEPERATS2ETM1 / ((xxAritQuadSEPERATS2ETM1 * yyAritQuadSEPERATS2ETM1)^0.5));
            rSEPERATS2ETM2 = (qXYSEPERATS2ETM2 / ((xxAritQuadSEPERATS2ETM2 * yyAritQuadSEPERATS2ETM2)^0.5));
            rSEPERATS2ETM3 = (qXYSEPERATS2ETM3 / ((xxAritQuadSEPERATS2ETM3 * yyAritQuadSEPERATS2ETM3)^0.5));
            rSEPERATS2ETM4 = (qXYSEPERATS2ETM4 / ((xxAritQuadSEPERATS2ETM4 * yyAritQuadSEPERATS2ETM4)^0.5));
            rSEPERATS2ETM5 = (qXYSEPERATS2ETM5 / ((xxAritQuadSEPERATS2ETM5 * yyAritQuadSEPERATS2ETM5)^0.5));
            rSEPERATS2ETM7 = (qXYSEPERATS2ETM7 / ((xxAritQuadSEPERATS2ETM7 * yyAritQuadSEPERATS2ETM7)^0.5));
    
            rQuadSEPERATS2ETM1 = ((rSEPERATS2ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2ETM2 = ((rSEPERATS2ETM2^2) * 100);
            rQuadSEPERATS2ETM3 = ((rSEPERATS2ETM3^2) * 100);
            rQuadSEPERATS2ETM4 = ((rSEPERATS2ETM4^2) * 100);
            rQuadSEPERATS2ETM5 = ((rSEPERATS2ETM5^2) * 100);
            rQuadSEPERATS2ETM7 = ((rSEPERATS2ETM7^2) * 100);
        
            syxSEPERATS2ETM1 = (((yyAritQuadSEPERATS2ETM1 - ((qXYSEPERATS2ETM1^2) / xxAritQuadSEPERATS2ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM2 = (((yyAritQuadSEPERATS2ETM2 - ((qXYSEPERATS2ETM2^2) / xxAritQuadSEPERATS2ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM3 = (((yyAritQuadSEPERATS2ETM3 - ((qXYSEPERATS2ETM3^2) / xxAritQuadSEPERATS2ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM4 = (((yyAritQuadSEPERATS2ETM4 - ((qXYSEPERATS2ETM4^2) / xxAritQuadSEPERATS2ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM5 = (((yyAritQuadSEPERATS2ETM5 - ((qXYSEPERATS2ETM5^2) / xxAritQuadSEPERATS2ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM7 = (((yyAritQuadSEPERATS2ETM7 - ((qXYSEPERATS2ETM7^2) / xxAritQuadSEPERATS2ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2ETM1 = (((syxSEPERATS2ETM1^2) / xxAritQuadSEPERATS2ETM1)^0.5);
            bStandSEPERATS2ETM2 = (((syxSEPERATS2ETM2^2) / xxAritQuadSEPERATS2ETM2)^0.5);
            bStandSEPERATS2ETM3 = (((syxSEPERATS2ETM3^2) / xxAritQuadSEPERATS2ETM3)^0.5);
            bStandSEPERATS2ETM4 = (((syxSEPERATS2ETM4^2) / xxAritQuadSEPERATS2ETM4)^0.5);
            bStandSEPERATS2ETM5 = (((syxSEPERATS2ETM5^2) / xxAritQuadSEPERATS2ETM5)^0.5);
            bStandSEPERATS2ETM7 = (((syxSEPERATS2ETM7^2) / xxAritQuadSEPERATS2ETM7)^0.5);
    
            aStandSEPERATS2ETM1 = (bStandSEPERATS2ETM1 * ((xQuadSEPERATS2ETM1 / minPifVAL)^0.5));
            aStandSEPERATS2ETM2 = (bStandSEPERATS2ETM2 * ((xQuadSEPERATS2ETM2 / minPifVAL)^0.5));
            aStandSEPERATS2ETM3 = (bStandSEPERATS2ETM3 * ((xQuadSEPERATS2ETM3 / minPifVAL)^0.5));
            aStandSEPERATS2ETM4 = (bStandSEPERATS2ETM4 * ((xQuadSEPERATS2ETM4 / minPifVAL)^0.5));
            aStandSEPERATS2ETM5 = (bStandSEPERATS2ETM5 * ((xQuadSEPERATS2ETM5 / minPifVAL)^0.5));
            aStandSEPERATS2ETM7 = (bStandSEPERATS2ETM7 * ((xQuadSEPERATS2ETM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM1, bSEPERATS2ETM1, rSEPERATS2ETM1, rQuadSEPERATS2ETM1, aStandSEPERATS2ETM1, bStandSEPERATS2ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM2, bSEPERATS2ETM2, rSEPERATS2ETM2, rQuadSEPERATS2ETM2, aStandSEPERATS2ETM2, bStandSEPERATS2ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM3, bSEPERATS2ETM3, rSEPERATS2ETM3, rQuadSEPERATS2ETM3, aStandSEPERATS2ETM3, bStandSEPERATS2ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM4, bSEPERATS2ETM4, rSEPERATS2ETM4, rQuadSEPERATS2ETM4, aStandSEPERATS2ETM4, bStandSEPERATS2ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM5, bSEPERATS2ETM5, rSEPERATS2ETM5, rQuadSEPERATS2ETM5, aStandSEPERATS2ETM5, bStandSEPERATS2ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS2ETM7, bSEPERATS2ETM7, rSEPERATS2ETM7, rQuadSEPERATS2ETM7, aStandSEPERATS2ETM7, bStandSEPERATS2ETM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS2slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS2slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS2slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS2slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS2slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS2slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS2slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT2ETM1[i,j] = (aSEPERATS2ETM1 + (bSEPERATS2ETM1 * REFS2ETM1[i,j]));
                    OUT2ETM2[i,j] = (aSEPERATS2ETM2 + (bSEPERATS2ETM2 * REFS2ETM2[i,j]));
                    OUT2ETM3[i,j] = (aSEPERATS2ETM3 + (bSEPERATS2ETM3 * REFS2ETM3[i,j]));
                    OUT2ETM4[i,j] = (aSEPERATS2ETM4 + (bSEPERATS2ETM4 * REFS2ETM4[i,j]));
                    OUT2ETM5[i,j] = (aSEPERATS2ETM5 + (bSEPERATS2ETM5 * REFS2ETM5[i,j]));
                    OUT2ETM7[i,j] = (aSEPERATS2ETM7 + (bSEPERATS2ETM7 * REFS2ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2ETM1);
        	CreatePyramid(OUT2ETM2);
        	CreatePyramid(OUT2ETM3);
        	CreatePyramid(OUT2ETM4);
        	CreatePyramid(OUT2ETM5);
        	CreatePyramid(OUT2ETM7);
        
        	CreateHistogram(OUT2ETM1);
        	CreateHistogram(OUT2ETM2);
        	CreateHistogram(OUT2ETM3);
        	CreateHistogram(OUT2ETM4);
        	CreateHistogram(OUT2ETM5);
        	CreateHistogram(OUT2ETM7);
            CloseRaster(REFS2ETM1);
            CloseRaster(REFS2ETM2);
            CloseRaster(REFS2ETM3);
            CloseRaster(REFS2ETM4);
            CloseRaster(REFS2ETM5);
            CloseRaster(REFS2ETM7);
    
            CloseRaster(OUT2ETM1);
            CloseRaster(OUT2ETM2);
            CloseRaster(OUT2ETM3);
            CloseRaster(OUT2ETM4);
            CloseRaster(OUT2ETM5);
            CloseRaster(OUT2ETM7);
            
        	printf("Scene 2 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors2 == 6 )
            {
            numeric xAritSEPERATS2TM1, xAritSEPERATS2TM2, xAritSEPERATS2TM3, xAritSEPERATS2TM4, xAritSEPERATS2TM5, xAritSEPERATS2TM7;
            numeric yAritSEPERATS2TM1, yAritSEPERATS2TM2, yAritSEPERATS2TM3, yAritSEPERATS2TM4, yAritSEPERATS2TM5, yAritSEPERATS2TM7;
    
            numeric aSEPERATS2TM1, aSEPERATS2TM2, aSEPERATS2TM3, aSEPERATS2TM4, aSEPERATS2TM5, aSEPERATS2TM7;
            numeric bSEPERATS2TM1, bSEPERATS2TM2, bSEPERATS2TM3, bSEPERATS2TM4, bSEPERATS2TM5, bSEPERATS2TM7;
            numeric rSEPERATS2TM1, rSEPERATS2TM2, rSEPERATS2TM3, rSEPERATS2TM4, rSEPERATS2TM5, rSEPERATS2TM7;
            numeric rQuadSEPERATS2TM1, rQuadSEPERATS2TM2, rQuadSEPERATS2TM3, rQuadSEPERATS2TM4, rQuadSEPERATS2TM5, rQuadSEPERATS2TM7;
            numeric syxSEPERATS2TM1, syxSEPERATS2TM2, syxSEPERATS2TM3, syxSEPERATS2TM4, syxSEPERATS2TM5, syxSEPERATS2TM7;
            numeric bStandSEPERATS2TM1, bStandSEPERATS2TM2, bStandSEPERATS2TM3, bStandSEPERATS2TM4, bStandSEPERATS2TM5, bStandSEPERATS2TM7;
            numeric aStandSEPERATS2TM1, aStandSEPERATS2TM2, aStandSEPERATS2TM3, aStandSEPERATS2TM4, aStandSEPERATS2TM5, aStandSEPERATS2TM7;
    
            numeric xSEPERATS2TM1 = 0;
            numeric xSEPERATS2TM2 = 0;
            numeric xSEPERATS2TM3 = 0;
            numeric xSEPERATS2TM4 = 0;
            numeric xSEPERATS2TM5 = 0;
            numeric xSEPERATS2TM7 = 0;
    
            numeric xQuadSEPERATS2TM1 = 0;
            numeric xQuadSEPERATS2TM2 = 0;
            numeric xQuadSEPERATS2TM3 = 0;
            numeric xQuadSEPERATS2TM4 = 0;
            numeric xQuadSEPERATS2TM5 = 0;
            numeric xQuadSEPERATS2TM7 = 0;
    
            numeric ySEPERATS2TM1 = 0;
            numeric ySEPERATS2TM2 = 0;
            numeric ySEPERATS2TM3 = 0;
            numeric ySEPERATS2TM4 = 0;
            numeric ySEPERATS2TM5 = 0;
            numeric ySEPERATS2TM7 = 0;
    
            numeric yQuadSEPERATS2TM1 = 0;
            numeric yQuadSEPERATS2TM2 = 0;
            numeric yQuadSEPERATS2TM3 = 0;
            numeric yQuadSEPERATS2TM4 = 0;
            numeric yQuadSEPERATS2TM5 = 0;
            numeric yQuadSEPERATS2TM7 = 0;
    
            numeric xySEPERATS2TM1 = 0;
            numeric xySEPERATS2TM2 = 0;
            numeric xySEPERATS2TM3 = 0;
            numeric xySEPERATS2TM4 = 0;
            numeric xySEPERATS2TM5 = 0;
            numeric xySEPERATS2TM7 = 0;
    
            numeric xxAritQuadSEPERATS2TM1 = 0;
            numeric xxAritQuadSEPERATS2TM2 = 0;
            numeric xxAritQuadSEPERATS2TM3 = 0;
            numeric xxAritQuadSEPERATS2TM4 = 0;
            numeric xxAritQuadSEPERATS2TM5 = 0;
            numeric xxAritQuadSEPERATS2TM7 = 0;
    
            numeric yyAritQuadSEPERATS2TM1 = 0;
            numeric yyAritQuadSEPERATS2TM2 = 0;
            numeric yyAritQuadSEPERATS2TM3 = 0;
            numeric yyAritQuadSEPERATS2TM4 = 0;
            numeric yyAritQuadSEPERATS2TM5 = 0;
            numeric yyAritQuadSEPERATS2TM7 = 0;
    
            numeric qXYSEPERATS2TM1 = 0;
            numeric qXYSEPERATS2TM2 = 0;
            numeric qXYSEPERATS2TM3 = 0;
            numeric qXYSEPERATS2TM4 = 0;
            numeric qXYSEPERATS2TM5 = 0;
            numeric qXYSEPERATS2TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS2TM1 = xSEPERATS2TM1 + pifSEPERATS3S2ETM1arrayRAND[m];
                xSEPERATS2TM2 = xSEPERATS2TM2 + pifSEPERATS3S2ETM2arrayRAND[m];
                xSEPERATS2TM3 = xSEPERATS2TM3 + pifSEPERATS3S2ETM3arrayRAND[m];
                xSEPERATS2TM4 = xSEPERATS2TM4 + pifSEPERATS3S2ETM4arrayRAND[m];
                xSEPERATS2TM5 = xSEPERATS2TM5 + pifSEPERATS3S2ETM5arrayRAND[m];
                xSEPERATS2TM7 = xSEPERATS2TM7 + pifSEPERATS3S2ETM7arrayRAND[m];
    
                xQuadSEPERATS2TM1 = (xQuadSEPERATS2TM1 + (pifSEPERATS3S2ETM1arrayRAND[m]^2));
                xQuadSEPERATS2TM2 = (xQuadSEPERATS2TM2 + (pifSEPERATS3S2ETM2arrayRAND[m]^2));
                xQuadSEPERATS2TM3 = (xQuadSEPERATS2TM3 + (pifSEPERATS3S2ETM3arrayRAND[m]^2));
                xQuadSEPERATS2TM4 = (xQuadSEPERATS2TM4 + (pifSEPERATS3S2ETM4arrayRAND[m]^2));
                xQuadSEPERATS2TM5 = (xQuadSEPERATS2TM5 + (pifSEPERATS3S2ETM5arrayRAND[m]^2));
                xQuadSEPERATS2TM7 = (xQuadSEPERATS2TM7 + (pifSEPERATS3S2ETM7arrayRAND[m]^2));
    
                ySEPERATS2TM1 = ySEPERATS2TM1 + pifSEPERATS2slaveTM1arrayRAND[m];
                ySEPERATS2TM2 = ySEPERATS2TM2 + pifSEPERATS2slaveTM2arrayRAND[m];
                ySEPERATS2TM3 = ySEPERATS2TM3 + pifSEPERATS2slaveTM3arrayRAND[m];
                ySEPERATS2TM4 = ySEPERATS2TM4 + pifSEPERATS2slaveTM4arrayRAND[m];
                ySEPERATS2TM5 = ySEPERATS2TM5 + pifSEPERATS2slaveTM5arrayRAND[m];
                ySEPERATS2TM7 = ySEPERATS2TM7 + pifSEPERATS2slaveTM7arrayRAND[m];
                
                yQuadSEPERATS2TM1 = (yQuadSEPERATS2TM1 + (pifSEPERATS2slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS2TM2 = (yQuadSEPERATS2TM2 + (pifSEPERATS2slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS2TM3 = (yQuadSEPERATS2TM3 + (pifSEPERATS2slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS2TM4 = (yQuadSEPERATS2TM4 + (pifSEPERATS2slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS2TM5 = (yQuadSEPERATS2TM5 + (pifSEPERATS2slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS2TM7 = (yQuadSEPERATS2TM7 + (pifSEPERATS2slaveTM7arrayRAND[m]^2));
    
                xySEPERATS2TM1 = (xySEPERATS2TM1 + (pifSEPERATS3S2ETM1arrayRAND[m] * pifSEPERATS2slaveTM1arrayRAND[m]));
                xySEPERATS2TM2 = (xySEPERATS2TM2 + (pifSEPERATS3S2ETM2arrayRAND[m] * pifSEPERATS2slaveTM2arrayRAND[m]));
                xySEPERATS2TM3 = (xySEPERATS2TM3 + (pifSEPERATS3S2ETM3arrayRAND[m] * pifSEPERATS2slaveTM3arrayRAND[m]));
                xySEPERATS2TM4 = (xySEPERATS2TM4 + (pifSEPERATS3S2ETM4arrayRAND[m] * pifSEPERATS2slaveTM4arrayRAND[m]));
                xySEPERATS2TM5 = (xySEPERATS2TM5 + (pifSEPERATS3S2ETM5arrayRAND[m] * pifSEPERATS2slaveTM5arrayRAND[m]));
                xySEPERATS2TM7 = (xySEPERATS2TM7 + (pifSEPERATS3S2ETM7arrayRAND[m] * pifSEPERATS2slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS2TM1 = xSEPERATS2TM1 / minPifVAL;
            xAritSEPERATS2TM2 = xSEPERATS2TM2 / minPifVAL;
            xAritSEPERATS2TM3 = xSEPERATS2TM3 / minPifVAL;
            xAritSEPERATS2TM4 = xSEPERATS2TM4 / minPifVAL;
            xAritSEPERATS2TM5 = xSEPERATS2TM5 / minPifVAL;
            xAritSEPERATS2TM7 = xSEPERATS2TM7 / minPifVAL;
    
            yAritSEPERATS2TM1 = ySEPERATS2TM1 / minPifVAL;
            yAritSEPERATS2TM2 = ySEPERATS2TM2 / minPifVAL;
            yAritSEPERATS2TM3 = ySEPERATS2TM3 / minPifVAL;
            yAritSEPERATS2TM4 = ySEPERATS2TM4 / minPifVAL;
            yAritSEPERATS2TM5 = ySEPERATS2TM5 / minPifVAL;
            yAritSEPERATS2TM7 = ySEPERATS2TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2TM1 = (xxAritQuadSEPERATS2TM1 + ((pifSEPERATS3S2ETM1arrayRAND[n] - xAritSEPERATS2TM1)^2));
                xxAritQuadSEPERATS2TM2 = (xxAritQuadSEPERATS2TM2 + ((pifSEPERATS3S2ETM2arrayRAND[n] - xAritSEPERATS2TM2)^2));
                xxAritQuadSEPERATS2TM3 = (xxAritQuadSEPERATS2TM3 + ((pifSEPERATS3S2ETM3arrayRAND[n] - xAritSEPERATS2TM3)^2));
                xxAritQuadSEPERATS2TM4 = (xxAritQuadSEPERATS2TM4 + ((pifSEPERATS3S2ETM4arrayRAND[n] - xAritSEPERATS2TM4)^2));
                xxAritQuadSEPERATS2TM5 = (xxAritQuadSEPERATS2TM5 + ((pifSEPERATS3S2ETM5arrayRAND[n] - xAritSEPERATS2TM5)^2));
                xxAritQuadSEPERATS2TM7 = (xxAritQuadSEPERATS2TM7 + ((pifSEPERATS3S2ETM7arrayRAND[n] - xAritSEPERATS2TM7)^2));
    
                yyAritQuadSEPERATS2TM1 = (yyAritQuadSEPERATS2TM1 + ((pifSEPERATS2slaveTM1arrayRAND[n] - yAritSEPERATS2TM1)^2));
                yyAritQuadSEPERATS2TM2 = (yyAritQuadSEPERATS2TM2 + ((pifSEPERATS2slaveTM2arrayRAND[n] - yAritSEPERATS2TM2)^2));
                yyAritQuadSEPERATS2TM3 = (yyAritQuadSEPERATS2TM3 + ((pifSEPERATS2slaveTM3arrayRAND[n] - yAritSEPERATS2TM3)^2));
                yyAritQuadSEPERATS2TM4 = (yyAritQuadSEPERATS2TM4 + ((pifSEPERATS2slaveTM4arrayRAND[n] - yAritSEPERATS2TM4)^2));
                yyAritQuadSEPERATS2TM5 = (yyAritQuadSEPERATS2TM5 + ((pifSEPERATS2slaveTM5arrayRAND[n] - yAritSEPERATS2TM5)^2));
                yyAritQuadSEPERATS2TM7 = (yyAritQuadSEPERATS2TM7 + ((pifSEPERATS2slaveTM7arrayRAND[n] - yAritSEPERATS2TM7)^2));
    
                qXYSEPERATS2TM1 = (qXYSEPERATS2TM1 + ((pifSEPERATS3S2ETM1arrayRAND[n] - xAritSEPERATS2TM1) * (pifSEPERATS2slaveTM1arrayRAND[n] - yAritSEPERATS2TM1)));
                qXYSEPERATS2TM2 = (qXYSEPERATS2TM2 + ((pifSEPERATS3S2ETM2arrayRAND[n] - xAritSEPERATS2TM2) * (pifSEPERATS2slaveTM2arrayRAND[n] - yAritSEPERATS2TM2)));
                qXYSEPERATS2TM3 = (qXYSEPERATS2TM3 + ((pifSEPERATS3S2ETM3arrayRAND[n] - xAritSEPERATS2TM3) * (pifSEPERATS2slaveTM3arrayRAND[n] - yAritSEPERATS2TM3)));
                qXYSEPERATS2TM4 = (qXYSEPERATS2TM4 + ((pifSEPERATS3S2ETM4arrayRAND[n] - xAritSEPERATS2TM4) * (pifSEPERATS2slaveTM4arrayRAND[n] - yAritSEPERATS2TM4)));
                qXYSEPERATS2TM5 = (qXYSEPERATS2TM5 + ((pifSEPERATS3S2ETM5arrayRAND[n] - xAritSEPERATS2TM5) * (pifSEPERATS2slaveTM5arrayRAND[n] - yAritSEPERATS2TM5)));
                qXYSEPERATS2TM7 = (qXYSEPERATS2TM7 + ((pifSEPERATS3S2ETM7arrayRAND[n] - xAritSEPERATS2TM7) * (pifSEPERATS2slaveTM7arrayRAND[n] - yAritSEPERATS2TM7)));
            }
        
            aSEPERATS2TM1 = (((xQuadSEPERATS2TM1 * ySEPERATS2TM1) - (xSEPERATS2TM1 * xySEPERATS2TM1)) / ((minPifVAL * xQuadSEPERATS2TM1) - (xSEPERATS2TM1^2)));
            aSEPERATS2TM2 = (((xQuadSEPERATS2TM2 * ySEPERATS2TM2) - (xSEPERATS2TM2 * xySEPERATS2TM2)) / ((minPifVAL * xQuadSEPERATS2TM2) - (xSEPERATS2TM2^2)));
            aSEPERATS2TM3 = (((xQuadSEPERATS2TM3 * ySEPERATS2TM3) - (xSEPERATS2TM3 * xySEPERATS2TM3)) / ((minPifVAL * xQuadSEPERATS2TM3) - (xSEPERATS2TM3^2)));
            aSEPERATS2TM4 = (((xQuadSEPERATS2TM4 * ySEPERATS2TM4) - (xSEPERATS2TM4 * xySEPERATS2TM4)) / ((minPifVAL * xQuadSEPERATS2TM4) - (xSEPERATS2TM4^2)));
            aSEPERATS2TM5 = (((xQuadSEPERATS2TM5 * ySEPERATS2TM5) - (xSEPERATS2TM5 * xySEPERATS2TM5)) / ((minPifVAL * xQuadSEPERATS2TM5) - (xSEPERATS2TM5^2)));
            aSEPERATS2TM7 = (((xQuadSEPERATS2TM7 * ySEPERATS2TM7) - (xSEPERATS2TM7 * xySEPERATS2TM7)) / ((minPifVAL * xQuadSEPERATS2TM7) - (xSEPERATS2TM7^2)));
            
            bSEPERATS2TM1 = qXYSEPERATS2TM1 / xxAritQuadSEPERATS2TM1;
            bSEPERATS2TM2 = qXYSEPERATS2TM2 / xxAritQuadSEPERATS2TM2;
            bSEPERATS2TM3 = qXYSEPERATS2TM3 / xxAritQuadSEPERATS2TM3;
            bSEPERATS2TM4 = qXYSEPERATS2TM4 / xxAritQuadSEPERATS2TM4;
            bSEPERATS2TM5 = qXYSEPERATS2TM5 / xxAritQuadSEPERATS2TM5;
            bSEPERATS2TM7 = qXYSEPERATS2TM7 / xxAritQuadSEPERATS2TM7;
    
            rSEPERATS2TM1 = (qXYSEPERATS2TM1 / ((xxAritQuadSEPERATS2TM1 * yyAritQuadSEPERATS2TM1)^0.5));
            rSEPERATS2TM2 = (qXYSEPERATS2TM2 / ((xxAritQuadSEPERATS2TM2 * yyAritQuadSEPERATS2TM2)^0.5));
            rSEPERATS2TM3 = (qXYSEPERATS2TM3 / ((xxAritQuadSEPERATS2TM3 * yyAritQuadSEPERATS2TM3)^0.5));
            rSEPERATS2TM4 = (qXYSEPERATS2TM4 / ((xxAritQuadSEPERATS2TM4 * yyAritQuadSEPERATS2TM4)^0.5));
            rSEPERATS2TM5 = (qXYSEPERATS2TM5 / ((xxAritQuadSEPERATS2TM5 * yyAritQuadSEPERATS2TM5)^0.5));
            rSEPERATS2TM7 = (qXYSEPERATS2TM7 / ((xxAritQuadSEPERATS2TM7 * yyAritQuadSEPERATS2TM7)^0.5));
    
            rQuadSEPERATS2TM1 = ((rSEPERATS2TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2TM2 = ((rSEPERATS2TM2^2) * 100);
            rQuadSEPERATS2TM3 = ((rSEPERATS2TM3^2) * 100);
            rQuadSEPERATS2TM4 = ((rSEPERATS2TM4^2) * 100);
            rQuadSEPERATS2TM5 = ((rSEPERATS2TM5^2) * 100);
            rQuadSEPERATS2TM7 = ((rSEPERATS2TM7^2) * 100);
        
            syxSEPERATS2TM1 = (((yyAritQuadSEPERATS2TM1 - ((qXYSEPERATS2TM1^2) / xxAritQuadSEPERATS2TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM2 = (((yyAritQuadSEPERATS2TM2 - ((qXYSEPERATS2TM2^2) / xxAritQuadSEPERATS2TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM3 = (((yyAritQuadSEPERATS2TM3 - ((qXYSEPERATS2TM3^2) / xxAritQuadSEPERATS2TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM4 = (((yyAritQuadSEPERATS2TM4 - ((qXYSEPERATS2TM4^2) / xxAritQuadSEPERATS2TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM5 = (((yyAritQuadSEPERATS2TM5 - ((qXYSEPERATS2TM5^2) / xxAritQuadSEPERATS2TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM7 = (((yyAritQuadSEPERATS2TM7 - ((qXYSEPERATS2TM7^2) / xxAritQuadSEPERATS2TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2TM1 = (((syxSEPERATS2TM1^2) / xxAritQuadSEPERATS2TM1)^0.5);
            bStandSEPERATS2TM2 = (((syxSEPERATS2TM2^2) / xxAritQuadSEPERATS2TM2)^0.5);
            bStandSEPERATS2TM3 = (((syxSEPERATS2TM3^2) / xxAritQuadSEPERATS2TM3)^0.5);
            bStandSEPERATS2TM4 = (((syxSEPERATS2TM4^2) / xxAritQuadSEPERATS2TM4)^0.5);
            bStandSEPERATS2TM5 = (((syxSEPERATS2TM5^2) / xxAritQuadSEPERATS2TM5)^0.5);
            bStandSEPERATS2TM7 = (((syxSEPERATS2TM7^2) / xxAritQuadSEPERATS2TM7)^0.5);
    
            aStandSEPERATS2TM1 = (bStandSEPERATS2TM1 * ((xQuadSEPERATS2TM1 / minPifVAL)^0.5));
            aStandSEPERATS2TM2 = (bStandSEPERATS2TM2 * ((xQuadSEPERATS2TM2 / minPifVAL)^0.5));
            aStandSEPERATS2TM3 = (bStandSEPERATS2TM3 * ((xQuadSEPERATS2TM3 / minPifVAL)^0.5));
            aStandSEPERATS2TM4 = (bStandSEPERATS2TM4 * ((xQuadSEPERATS2TM4 / minPifVAL)^0.5));
            aStandSEPERATS2TM5 = (bStandSEPERATS2TM5 * ((xQuadSEPERATS2TM5 / minPifVAL)^0.5));
            aStandSEPERATS2TM7 = (bStandSEPERATS2TM7 * ((xQuadSEPERATS2TM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM1, bSEPERATS2TM1, rSEPERATS2TM1, rQuadSEPERATS2TM1, aStandSEPERATS2TM1, bStandSEPERATS2TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM2, bSEPERATS2TM2, rSEPERATS2TM2, rQuadSEPERATS2TM2, aStandSEPERATS2TM2, bStandSEPERATS2TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM3, bSEPERATS2TM3, rSEPERATS2TM3, rQuadSEPERATS2TM3, aStandSEPERATS2TM3, bStandSEPERATS2TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM4, bSEPERATS2TM4, rSEPERATS2TM4, rQuadSEPERATS2TM4, aStandSEPERATS2TM4, bStandSEPERATS2TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM5, bSEPERATS2TM5, rSEPERATS2TM5, rQuadSEPERATS2TM5, aStandSEPERATS2TM5, bStandSEPERATS2TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS2TM7, bSEPERATS2TM7, rSEPERATS2TM7, rQuadSEPERATS2TM7, aStandSEPERATS2TM7, bStandSEPERATS2TM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS2slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS2slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS2slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS2slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS2slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS2slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS2slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT2TM1[i,j] = (aSEPERATS2TM1 + (bSEPERATS2TM1 * REFS2TM1[i,j]));
                    OUT2TM2[i,j] = (aSEPERATS2TM2 + (bSEPERATS2TM2 * REFS2TM2[i,j]));
                    OUT2TM3[i,j] = (aSEPERATS2TM3 + (bSEPERATS2TM3 * REFS2TM3[i,j]));
                    OUT2TM4[i,j] = (aSEPERATS2TM4 + (bSEPERATS2TM4 * REFS2TM4[i,j]));
                    OUT2TM5[i,j] = (aSEPERATS2TM5 + (bSEPERATS2TM5 * REFS2TM5[i,j]));
                    OUT2TM7[i,j] = (aSEPERATS2TM7 + (bSEPERATS2TM7 * REFS2TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2TM1);
        	CreatePyramid(OUT2TM2);
        	CreatePyramid(OUT2TM3);
        	CreatePyramid(OUT2TM4);
        	CreatePyramid(OUT2TM5);
        	CreatePyramid(OUT2TM7);
        
        	CreateHistogram(OUT2TM1);
        	CreateHistogram(OUT2TM2);
        	CreateHistogram(OUT2TM3);
        	CreateHistogram(OUT2TM4);
        	CreateHistogram(OUT2TM5);
        	CreateHistogram(OUT2TM7);
            CloseRaster(REFS2TM1);
            CloseRaster(REFS2TM2);
            CloseRaster(REFS2TM3);
            CloseRaster(REFS2TM4);
            CloseRaster(REFS2TM5);
            CloseRaster(REFS2TM7);
    
            CloseRaster(OUT2TM1);
            CloseRaster(OUT2TM2);
            CloseRaster(OUT2TM3);
            CloseRaster(OUT2TM4);
            CloseRaster(OUT2TM5);
            CloseRaster(OUT2TM7);
        
        	printf("Scene 2 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS2MSS1, xAritSEPERATS2MSS2, xAritSEPERATS2MSS4;
            numeric yAritSEPERATS2MSS1, yAritSEPERATS2MSS2, yAritSEPERATS2MSS4;
    
            numeric aSEPERATS2MSS1, aSEPERATS2MSS2, aSEPERATS2MSS4;
            numeric bSEPERATS2MSS1, bSEPERATS2MSS2, bSEPERATS2MSS4;
            numeric rSEPERATS2MSS1, rSEPERATS2MSS2, rSEPERATS2MSS4;
            numeric rQuadSEPERATS2MSS1, rQuadSEPERATS2MSS2, rQuadSEPERATS2MSS4;
            numeric syxSEPERATS2MSS1, syxSEPERATS2MSS2, syxSEPERATS2MSS4;
            numeric bStandSEPERATS2MSS1, bStandSEPERATS2MSS2, bStandSEPERATS2MSS4;
            numeric aStandSEPERATS2MSS1, aStandSEPERATS2MSS2, aStandSEPERATS2MSS4;
    
            numeric xSEPERATS2MSS1 = 0;
            numeric xSEPERATS2MSS2 = 0;
            numeric xSEPERATS2MSS4 = 0;
    
            numeric xQuadSEPERATS2MSS1 = 0;
            numeric xQuadSEPERATS2MSS2 = 0;
            numeric xQuadSEPERATS2MSS4 = 0;
    
            numeric ySEPERATS2MSS1 = 0;
            numeric ySEPERATS2MSS2 = 0;
            numeric ySEPERATS2MSS4 = 0;
    
            numeric yQuadSEPERATS2MSS1 = 0;
            numeric yQuadSEPERATS2MSS2 = 0;
            numeric yQuadSEPERATS2MSS4 = 0;
    
            numeric xySEPERATS2MSS1 = 0;
            numeric xySEPERATS2MSS2 = 0;
            numeric xySEPERATS2MSS4 = 0;
    
            numeric xxAritQuadSEPERATS2MSS1 = 0;
            numeric xxAritQuadSEPERATS2MSS2 = 0;
            numeric xxAritQuadSEPERATS2MSS4 = 0;
    
            numeric yyAritQuadSEPERATS2MSS1 = 0;
            numeric yyAritQuadSEPERATS2MSS2 = 0;
            numeric yyAritQuadSEPERATS2MSS4 = 0;
    
            numeric qXYSEPERATS2MSS1 = 0;
            numeric qXYSEPERATS2MSS2 = 0;
            numeric qXYSEPERATS2MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS2MSS1 = xSEPERATS2MSS1 + pifSEPERATS3S2ETM2arrayRAND[m];
                xSEPERATS2MSS2 = xSEPERATS2MSS2 + pifSEPERATS3S2ETM3arrayRAND[m];
                xSEPERATS2MSS4 = xSEPERATS2MSS4 + pifSEPERATS3S2ETM4arrayRAND[m];
    
                xQuadSEPERATS2MSS1 = (xQuadSEPERATS2MSS1 + (pifSEPERATS3S2ETM2arrayRAND[m]^2));
                xQuadSEPERATS2MSS2 = (xQuadSEPERATS2MSS2 + (pifSEPERATS3S2ETM3arrayRAND[m]^2));
                xQuadSEPERATS2MSS4 = (xQuadSEPERATS2MSS4 + (pifSEPERATS3S2ETM4arrayRAND[m]^2));
    
                ySEPERATS2MSS1 = ySEPERATS2MSS1 + pifSEPERATS2slaveMSS1arrayRAND[m];
                ySEPERATS2MSS2 = ySEPERATS2MSS2 + pifSEPERATS2slaveMSS2arrayRAND[m];
                ySEPERATS2MSS4 = ySEPERATS2MSS4 + pifSEPERATS2slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS2MSS1 = (yQuadSEPERATS2MSS1 + (pifSEPERATS2slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS2MSS2 = (yQuadSEPERATS2MSS2 + (pifSEPERATS2slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS2MSS4 = (yQuadSEPERATS2MSS4 + (pifSEPERATS2slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS2MSS1 = (xySEPERATS2MSS1 + (pifSEPERATS3S2ETM2arrayRAND[m] * pifSEPERATS2slaveMSS1arrayRAND[m]));
                xySEPERATS2MSS2 = (xySEPERATS2MSS2 + (pifSEPERATS3S2ETM3arrayRAND[m] * pifSEPERATS2slaveMSS2arrayRAND[m]));
                xySEPERATS2MSS4 = (xySEPERATS2MSS4 + (pifSEPERATS3S2ETM4arrayRAND[m] * pifSEPERATS2slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS2MSS1 = xSEPERATS2MSS1 / minPifVAL;
            xAritSEPERATS2MSS2 = xSEPERATS2MSS2 / minPifVAL;
            xAritSEPERATS2MSS4 = xSEPERATS2MSS4 / minPifVAL;
    
            yAritSEPERATS2MSS1 = ySEPERATS2MSS1 / minPifVAL;
            yAritSEPERATS2MSS2 = ySEPERATS2MSS2 / minPifVAL;
            yAritSEPERATS2MSS4 = ySEPERATS2MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2MSS1 = (xxAritQuadSEPERATS2MSS1 + ((pifSEPERATS3S2ETM2arrayRAND[n] - xAritSEPERATS2MSS1)^2));
                xxAritQuadSEPERATS2MSS2 = (xxAritQuadSEPERATS2MSS2 + ((pifSEPERATS3S2ETM3arrayRAND[n] - xAritSEPERATS2MSS2)^2));
                xxAritQuadSEPERATS2MSS4 = (xxAritQuadSEPERATS2MSS4 + ((pifSEPERATS3S2ETM4arrayRAND[n] - xAritSEPERATS2MSS4)^2));
    
                yyAritQuadSEPERATS2MSS1 = (yyAritQuadSEPERATS2MSS1 + ((pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)^2));
                yyAritQuadSEPERATS2MSS2 = (yyAritQuadSEPERATS2MSS2 + ((pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)^2));
                yyAritQuadSEPERATS2MSS4 = (yyAritQuadSEPERATS2MSS4 + ((pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)^2));
    
                qXYSEPERATS2MSS1 = (qXYSEPERATS2MSS1 + ((pifSEPERATS3S2ETM2arrayRAND[n] - xAritSEPERATS2MSS1) * (pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)));
                qXYSEPERATS2MSS2 = (qXYSEPERATS2MSS2 + ((pifSEPERATS3S2ETM3arrayRAND[n] - xAritSEPERATS2MSS2) * (pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)));
                qXYSEPERATS2MSS4 = (qXYSEPERATS2MSS4 + ((pifSEPERATS3S2ETM4arrayRAND[n] - xAritSEPERATS2MSS4) * (pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)));
            }
        
            aSEPERATS2MSS1 = (((xQuadSEPERATS2MSS1 * ySEPERATS2MSS1) - (xSEPERATS2MSS1 * xySEPERATS2MSS1)) / ((minPifVAL * xQuadSEPERATS2MSS1) - (xSEPERATS2MSS1^2)));
            aSEPERATS2MSS2 = (((xQuadSEPERATS2MSS2 * ySEPERATS2MSS2) - (xSEPERATS2MSS2 * xySEPERATS2MSS2)) / ((minPifVAL * xQuadSEPERATS2MSS2) - (xSEPERATS2MSS2^2)));
            aSEPERATS2MSS4 = (((xQuadSEPERATS2MSS4 * ySEPERATS2MSS4) - (xSEPERATS2MSS4 * xySEPERATS2MSS4)) / ((minPifVAL * xQuadSEPERATS2MSS4) - (xSEPERATS2MSS4^2)));
            
            bSEPERATS2MSS1 = qXYSEPERATS2MSS1 / xxAritQuadSEPERATS2MSS1;
            bSEPERATS2MSS2 = qXYSEPERATS2MSS2 / xxAritQuadSEPERATS2MSS2;
            bSEPERATS2MSS4 = qXYSEPERATS2MSS4 / xxAritQuadSEPERATS2MSS4;
    
            rSEPERATS2MSS1 = (qXYSEPERATS2MSS1 / ((xxAritQuadSEPERATS2MSS1 * yyAritQuadSEPERATS2MSS1)^0.5));
            rSEPERATS2MSS2 = (qXYSEPERATS2MSS2 / ((xxAritQuadSEPERATS2MSS2 * yyAritQuadSEPERATS2MSS2)^0.5));
            rSEPERATS2MSS4 = (qXYSEPERATS2MSS4 / ((xxAritQuadSEPERATS2MSS4 * yyAritQuadSEPERATS2MSS4)^0.5));
    
            rQuadSEPERATS2MSS1 = ((rSEPERATS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2MSS2 = ((rSEPERATS2MSS2^2) * 100);
            rQuadSEPERATS2MSS4 = ((rSEPERATS2MSS4^2) * 100);
        
            syxSEPERATS2MSS1 = (((yyAritQuadSEPERATS2MSS1 - ((qXYSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS2 = (((yyAritQuadSEPERATS2MSS2 - ((qXYSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS4 = (((yyAritQuadSEPERATS2MSS4 - ((qXYSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2MSS1 = (((syxSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)^0.5);
            bStandSEPERATS2MSS2 = (((syxSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)^0.5);
            bStandSEPERATS2MSS4 = (((syxSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)^0.5);
    
            aStandSEPERATS2MSS1 = (bStandSEPERATS2MSS1 * ((xQuadSEPERATS2MSS1 / minPifVAL)^0.5));
            aStandSEPERATS2MSS2 = (bStandSEPERATS2MSS2 * ((xQuadSEPERATS2MSS2 / minPifVAL)^0.5));
            aStandSEPERATS2MSS4 = (bStandSEPERATS2MSS4 * ((xQuadSEPERATS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS1, bSEPERATS2MSS1, rSEPERATS2MSS1, rQuadSEPERATS2MSS1, aStandSEPERATS2MSS1, bStandSEPERATS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS2, bSEPERATS2MSS2, rSEPERATS2MSS2, rQuadSEPERATS2MSS2, aStandSEPERATS2MSS2, bStandSEPERATS2MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS4, bSEPERATS2MSS4, rSEPERATS2MSS4, rQuadSEPERATS2MSS4, aStandSEPERATS2MSS4, bStandSEPERATS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS2slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS2slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS2slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aSEPERATS2MSS1 + (bSEPERATS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aSEPERATS2MSS2 + (bSEPERATS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = REFS2MSS3[i,j];
                    OUT2MSS4[i,j] = (aSEPERATS2MSS4 + (bSEPERATS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT2MSS1);
            CreatePyramid(OUT2MSS2);
            CreatePyramid(OUT2MSS3);
            CreatePyramid(OUT2MSS4);
        
            CreateHistogram(OUT2MSS1);
            CreateHistogram(OUT2MSS2);
            CreateHistogram(OUT2MSS3);
            CreateHistogram(OUT2MSS4);
            
            CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors4 == 7 )
            {
            numeric xAritSEPERATS4ETM1, xAritSEPERATS4ETM2, xAritSEPERATS4ETM3, xAritSEPERATS4ETM4, xAritSEPERATS4ETM5, xAritSEPERATS4ETM7;
            numeric yAritSEPERATS4ETM1, yAritSEPERATS4ETM2, yAritSEPERATS4ETM3, yAritSEPERATS4ETM4, yAritSEPERATS4ETM5, yAritSEPERATS4ETM7;
    
            numeric aSEPERATS4ETM1, aSEPERATS4ETM2, aSEPERATS4ETM3, aSEPERATS4ETM4, aSEPERATS4ETM5, aSEPERATS4ETM7;
            numeric bSEPERATS4ETM1, bSEPERATS4ETM2, bSEPERATS4ETM3, bSEPERATS4ETM4, bSEPERATS4ETM5, bSEPERATS4ETM7;
            numeric rSEPERATS4ETM1, rSEPERATS4ETM2, rSEPERATS4ETM3, rSEPERATS4ETM4, rSEPERATS4ETM5, rSEPERATS4ETM7;
            numeric rQuadSEPERATS4ETM1, rQuadSEPERATS4ETM2, rQuadSEPERATS4ETM3, rQuadSEPERATS4ETM4, rQuadSEPERATS4ETM5, rQuadSEPERATS4ETM7;
            numeric syxSEPERATS4ETM1, syxSEPERATS4ETM2, syxSEPERATS4ETM3, syxSEPERATS4ETM4, syxSEPERATS4ETM5, syxSEPERATS4ETM7;
            numeric bStandSEPERATS4ETM1, bStandSEPERATS4ETM2, bStandSEPERATS4ETM3, bStandSEPERATS4ETM4, bStandSEPERATS4ETM5, bStandSEPERATS4ETM7;
            numeric aStandSEPERATS4ETM1, aStandSEPERATS4ETM2, aStandSEPERATS4ETM3, aStandSEPERATS4ETM4, aStandSEPERATS4ETM5, aStandSEPERATS4ETM7;
    
            numeric xSEPERATS4ETM1 = 0;
            numeric xSEPERATS4ETM2 = 0;
            numeric xSEPERATS4ETM3 = 0;
            numeric xSEPERATS4ETM4 = 0;
            numeric xSEPERATS4ETM5 = 0;
            numeric xSEPERATS4ETM7 = 0;
    
            numeric xQuadSEPERATS4ETM1 = 0;
            numeric xQuadSEPERATS4ETM2 = 0;
            numeric xQuadSEPERATS4ETM3 = 0;
            numeric xQuadSEPERATS4ETM4 = 0;
            numeric xQuadSEPERATS4ETM5 = 0;
            numeric xQuadSEPERATS4ETM7 = 0;
    
            numeric ySEPERATS4ETM1 = 0;
            numeric ySEPERATS4ETM2 = 0;
            numeric ySEPERATS4ETM3 = 0;
            numeric ySEPERATS4ETM4 = 0;
            numeric ySEPERATS4ETM5 = 0;
            numeric ySEPERATS4ETM7 = 0;
    
            numeric yQuadSEPERATS4ETM1 = 0;
            numeric yQuadSEPERATS4ETM2 = 0;
            numeric yQuadSEPERATS4ETM3 = 0;
            numeric yQuadSEPERATS4ETM4 = 0;
            numeric yQuadSEPERATS4ETM5 = 0;
            numeric yQuadSEPERATS4ETM7 = 0;
    
            numeric xySEPERATS4ETM1 = 0;
            numeric xySEPERATS4ETM2 = 0;
            numeric xySEPERATS4ETM3 = 0;
            numeric xySEPERATS4ETM4 = 0;
            numeric xySEPERATS4ETM5 = 0;
            numeric xySEPERATS4ETM7 = 0;
    
            numeric xxAritQuadSEPERATS4ETM1 = 0;
            numeric xxAritQuadSEPERATS4ETM2 = 0;
            numeric xxAritQuadSEPERATS4ETM3 = 0;
            numeric xxAritQuadSEPERATS4ETM4 = 0;
            numeric xxAritQuadSEPERATS4ETM5 = 0;
            numeric xxAritQuadSEPERATS4ETM7 = 0;
    
            numeric yyAritQuadSEPERATS4ETM1 = 0;
            numeric yyAritQuadSEPERATS4ETM2 = 0;
            numeric yyAritQuadSEPERATS4ETM3 = 0;
            numeric yyAritQuadSEPERATS4ETM4 = 0;
            numeric yyAritQuadSEPERATS4ETM5 = 0;
            numeric yyAritQuadSEPERATS4ETM7 = 0;
    
            numeric qXYSEPERATS4ETM1 = 0;
            numeric qXYSEPERATS4ETM2 = 0;
            numeric qXYSEPERATS4ETM3 = 0;
            numeric qXYSEPERATS4ETM4 = 0;
            numeric qXYSEPERATS4ETM5 = 0;
            numeric qXYSEPERATS4ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS4ETM1 = xSEPERATS4ETM1 + pifSEPERATS3S4ETM1arrayRAND[m];
                xSEPERATS4ETM2 = xSEPERATS4ETM2 + pifSEPERATS3S4ETM2arrayRAND[m];
                xSEPERATS4ETM3 = xSEPERATS4ETM3 + pifSEPERATS3S4ETM3arrayRAND[m];
                xSEPERATS4ETM4 = xSEPERATS4ETM4 + pifSEPERATS3S4ETM4arrayRAND[m];
                xSEPERATS4ETM5 = xSEPERATS4ETM5 + pifSEPERATS3S4ETM5arrayRAND[m];
                xSEPERATS4ETM7 = xSEPERATS4ETM7 + pifSEPERATS3S4ETM7arrayRAND[m];
    
                xQuadSEPERATS4ETM1 = (xQuadSEPERATS4ETM1 + (pifSEPERATS3S4ETM1arrayRAND[m]^2));
                xQuadSEPERATS4ETM2 = (xQuadSEPERATS4ETM2 + (pifSEPERATS3S4ETM2arrayRAND[m]^2));
                xQuadSEPERATS4ETM3 = (xQuadSEPERATS4ETM3 + (pifSEPERATS3S4ETM3arrayRAND[m]^2));
                xQuadSEPERATS4ETM4 = (xQuadSEPERATS4ETM4 + (pifSEPERATS3S4ETM4arrayRAND[m]^2));
                xQuadSEPERATS4ETM5 = (xQuadSEPERATS4ETM5 + (pifSEPERATS3S4ETM5arrayRAND[m]^2));
                xQuadSEPERATS4ETM7 = (xQuadSEPERATS4ETM7 + (pifSEPERATS3S4ETM7arrayRAND[m]^2));
    
                ySEPERATS4ETM1 = ySEPERATS4ETM1 + pifSEPERATS4slaveETM1arrayRAND[m];
                ySEPERATS4ETM2 = ySEPERATS4ETM2 + pifSEPERATS4slaveETM2arrayRAND[m];
                ySEPERATS4ETM3 = ySEPERATS4ETM3 + pifSEPERATS4slaveETM3arrayRAND[m];
                ySEPERATS4ETM4 = ySEPERATS4ETM4 + pifSEPERATS4slaveETM4arrayRAND[m];
                ySEPERATS4ETM5 = ySEPERATS4ETM5 + pifSEPERATS4slaveETM5arrayRAND[m];
                ySEPERATS4ETM7 = ySEPERATS4ETM7 + pifSEPERATS4slaveETM7arrayRAND[m];
                
                yQuadSEPERATS4ETM1 = (yQuadSEPERATS4ETM1 + (pifSEPERATS4slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS4ETM2 = (yQuadSEPERATS4ETM2 + (pifSEPERATS4slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS4ETM3 = (yQuadSEPERATS4ETM3 + (pifSEPERATS4slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS4ETM4 = (yQuadSEPERATS4ETM4 + (pifSEPERATS4slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS4ETM5 = (yQuadSEPERATS4ETM5 + (pifSEPERATS4slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS4ETM7 = (yQuadSEPERATS4ETM7 + (pifSEPERATS4slaveETM7arrayRAND[m]^2));
    
                xySEPERATS4ETM1 = (xySEPERATS4ETM1 + (pifSEPERATS3S4ETM1arrayRAND[m] * pifSEPERATS4slaveETM1arrayRAND[m]));
                xySEPERATS4ETM2 = (xySEPERATS4ETM2 + (pifSEPERATS3S4ETM2arrayRAND[m] * pifSEPERATS4slaveETM2arrayRAND[m]));
                xySEPERATS4ETM3 = (xySEPERATS4ETM3 + (pifSEPERATS3S4ETM3arrayRAND[m] * pifSEPERATS4slaveETM3arrayRAND[m]));
                xySEPERATS4ETM4 = (xySEPERATS4ETM4 + (pifSEPERATS3S4ETM4arrayRAND[m] * pifSEPERATS4slaveETM4arrayRAND[m]));
                xySEPERATS4ETM5 = (xySEPERATS4ETM5 + (pifSEPERATS3S4ETM5arrayRAND[m] * pifSEPERATS4slaveETM5arrayRAND[m]));
                xySEPERATS4ETM7 = (xySEPERATS4ETM7 + (pifSEPERATS3S4ETM7arrayRAND[m] * pifSEPERATS4slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS4ETM1 = xSEPERATS4ETM1 / minPifVAL;
            xAritSEPERATS4ETM2 = xSEPERATS4ETM2 / minPifVAL;
            xAritSEPERATS4ETM3 = xSEPERATS4ETM3 / minPifVAL;
            xAritSEPERATS4ETM4 = xSEPERATS4ETM4 / minPifVAL;
            xAritSEPERATS4ETM5 = xSEPERATS4ETM5 / minPifVAL;
            xAritSEPERATS4ETM7 = xSEPERATS4ETM7 / minPifVAL;
    
            yAritSEPERATS4ETM1 = ySEPERATS4ETM1 / minPifVAL;
            yAritSEPERATS4ETM2 = ySEPERATS4ETM2 / minPifVAL;
            yAritSEPERATS4ETM3 = ySEPERATS4ETM3 / minPifVAL;
            yAritSEPERATS4ETM4 = ySEPERATS4ETM4 / minPifVAL;
            yAritSEPERATS4ETM5 = ySEPERATS4ETM5 / minPifVAL;
            yAritSEPERATS4ETM7 = ySEPERATS4ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4ETM1 = (xxAritQuadSEPERATS4ETM1 + ((pifSEPERATS3S4ETM1arrayRAND[n] - xAritSEPERATS4ETM1)^2));
                xxAritQuadSEPERATS4ETM2 = (xxAritQuadSEPERATS4ETM2 + ((pifSEPERATS3S4ETM2arrayRAND[n] - xAritSEPERATS4ETM2)^2));
                xxAritQuadSEPERATS4ETM3 = (xxAritQuadSEPERATS4ETM3 + ((pifSEPERATS3S4ETM3arrayRAND[n] - xAritSEPERATS4ETM3)^2));
                xxAritQuadSEPERATS4ETM4 = (xxAritQuadSEPERATS4ETM4 + ((pifSEPERATS3S4ETM4arrayRAND[n] - xAritSEPERATS4ETM4)^2));
                xxAritQuadSEPERATS4ETM5 = (xxAritQuadSEPERATS4ETM5 + ((pifSEPERATS3S4ETM5arrayRAND[n] - xAritSEPERATS4ETM5)^2));
                xxAritQuadSEPERATS4ETM7 = (xxAritQuadSEPERATS4ETM7 + ((pifSEPERATS3S4ETM7arrayRAND[n] - xAritSEPERATS4ETM7)^2));
    
                yyAritQuadSEPERATS4ETM1 = (yyAritQuadSEPERATS4ETM1 + ((pifSEPERATS4slaveETM1arrayRAND[n] - yAritSEPERATS4ETM1)^2));
                yyAritQuadSEPERATS4ETM2 = (yyAritQuadSEPERATS4ETM2 + ((pifSEPERATS4slaveETM2arrayRAND[n] - yAritSEPERATS4ETM2)^2));
                yyAritQuadSEPERATS4ETM3 = (yyAritQuadSEPERATS4ETM3 + ((pifSEPERATS4slaveETM3arrayRAND[n] - yAritSEPERATS4ETM3)^2));
                yyAritQuadSEPERATS4ETM4 = (yyAritQuadSEPERATS4ETM4 + ((pifSEPERATS4slaveETM4arrayRAND[n] - yAritSEPERATS4ETM4)^2));
                yyAritQuadSEPERATS4ETM5 = (yyAritQuadSEPERATS4ETM5 + ((pifSEPERATS4slaveETM5arrayRAND[n] - yAritSEPERATS4ETM5)^2));
                yyAritQuadSEPERATS4ETM7 = (yyAritQuadSEPERATS4ETM7 + ((pifSEPERATS4slaveETM7arrayRAND[n] - yAritSEPERATS4ETM7)^2));
    
                qXYSEPERATS4ETM1 = (qXYSEPERATS4ETM1 + ((pifSEPERATS3S4ETM1arrayRAND[n] - xAritSEPERATS4ETM1) * (pifSEPERATS4slaveETM1arrayRAND[n] - yAritSEPERATS4ETM1)));
                qXYSEPERATS4ETM2 = (qXYSEPERATS4ETM2 + ((pifSEPERATS3S4ETM2arrayRAND[n] - xAritSEPERATS4ETM2) * (pifSEPERATS4slaveETM2arrayRAND[n] - yAritSEPERATS4ETM2)));
                qXYSEPERATS4ETM3 = (qXYSEPERATS4ETM3 + ((pifSEPERATS3S4ETM3arrayRAND[n] - xAritSEPERATS4ETM3) * (pifSEPERATS4slaveETM3arrayRAND[n] - yAritSEPERATS4ETM3)));
                qXYSEPERATS4ETM4 = (qXYSEPERATS4ETM4 + ((pifSEPERATS3S4ETM4arrayRAND[n] - xAritSEPERATS4ETM4) * (pifSEPERATS4slaveETM4arrayRAND[n] - yAritSEPERATS4ETM4)));
                qXYSEPERATS4ETM5 = (qXYSEPERATS4ETM5 + ((pifSEPERATS3S4ETM5arrayRAND[n] - xAritSEPERATS4ETM5) * (pifSEPERATS4slaveETM5arrayRAND[n] - yAritSEPERATS4ETM5)));
                qXYSEPERATS4ETM7 = (qXYSEPERATS4ETM7 + ((pifSEPERATS3S4ETM7arrayRAND[n] - xAritSEPERATS4ETM7) * (pifSEPERATS4slaveETM7arrayRAND[n] - yAritSEPERATS4ETM7)));
            }
        
            aSEPERATS4ETM1 = (((xQuadSEPERATS4ETM1 * ySEPERATS4ETM1) - (xSEPERATS4ETM1 * xySEPERATS4ETM1)) / ((minPifVAL * xQuadSEPERATS4ETM1) - (xSEPERATS4ETM1^2)));
            aSEPERATS4ETM2 = (((xQuadSEPERATS4ETM2 * ySEPERATS4ETM2) - (xSEPERATS4ETM2 * xySEPERATS4ETM2)) / ((minPifVAL * xQuadSEPERATS4ETM2) - (xSEPERATS4ETM2^2)));
            aSEPERATS4ETM3 = (((xQuadSEPERATS4ETM3 * ySEPERATS4ETM3) - (xSEPERATS4ETM3 * xySEPERATS4ETM3)) / ((minPifVAL * xQuadSEPERATS4ETM3) - (xSEPERATS4ETM3^2)));
            aSEPERATS4ETM4 = (((xQuadSEPERATS4ETM4 * ySEPERATS4ETM4) - (xSEPERATS4ETM4 * xySEPERATS4ETM4)) / ((minPifVAL * xQuadSEPERATS4ETM4) - (xSEPERATS4ETM4^2)));
            aSEPERATS4ETM5 = (((xQuadSEPERATS4ETM5 * ySEPERATS4ETM5) - (xSEPERATS4ETM5 * xySEPERATS4ETM5)) / ((minPifVAL * xQuadSEPERATS4ETM5) - (xSEPERATS4ETM5^2)));
            aSEPERATS4ETM7 = (((xQuadSEPERATS4ETM7 * ySEPERATS4ETM7) - (xSEPERATS4ETM7 * xySEPERATS4ETM7)) / ((minPifVAL * xQuadSEPERATS4ETM7) - (xSEPERATS4ETM7^2)));
            
            bSEPERATS4ETM1 = qXYSEPERATS4ETM1 / xxAritQuadSEPERATS4ETM1;
            bSEPERATS4ETM2 = qXYSEPERATS4ETM2 / xxAritQuadSEPERATS4ETM2;
            bSEPERATS4ETM3 = qXYSEPERATS4ETM3 / xxAritQuadSEPERATS4ETM3;
            bSEPERATS4ETM4 = qXYSEPERATS4ETM4 / xxAritQuadSEPERATS4ETM4;
            bSEPERATS4ETM5 = qXYSEPERATS4ETM5 / xxAritQuadSEPERATS4ETM5;
            bSEPERATS4ETM7 = qXYSEPERATS4ETM7 / xxAritQuadSEPERATS4ETM7;
    
            rSEPERATS4ETM1 = (qXYSEPERATS4ETM1 / ((xxAritQuadSEPERATS4ETM1 * yyAritQuadSEPERATS4ETM1)^0.5));
            rSEPERATS4ETM2 = (qXYSEPERATS4ETM2 / ((xxAritQuadSEPERATS4ETM2 * yyAritQuadSEPERATS4ETM2)^0.5));
            rSEPERATS4ETM3 = (qXYSEPERATS4ETM3 / ((xxAritQuadSEPERATS4ETM3 * yyAritQuadSEPERATS4ETM3)^0.5));
            rSEPERATS4ETM4 = (qXYSEPERATS4ETM4 / ((xxAritQuadSEPERATS4ETM4 * yyAritQuadSEPERATS4ETM4)^0.5));
            rSEPERATS4ETM5 = (qXYSEPERATS4ETM5 / ((xxAritQuadSEPERATS4ETM5 * yyAritQuadSEPERATS4ETM5)^0.5));
            rSEPERATS4ETM7 = (qXYSEPERATS4ETM7 / ((xxAritQuadSEPERATS4ETM7 * yyAritQuadSEPERATS4ETM7)^0.5));
    
            rQuadSEPERATS4ETM1 = ((rSEPERATS4ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4ETM2 = ((rSEPERATS4ETM2^2) * 100);
            rQuadSEPERATS4ETM3 = ((rSEPERATS4ETM3^2) * 100);
            rQuadSEPERATS4ETM4 = ((rSEPERATS4ETM4^2) * 100);
            rQuadSEPERATS4ETM5 = ((rSEPERATS4ETM5^2) * 100);
            rQuadSEPERATS4ETM7 = ((rSEPERATS4ETM7^2) * 100);
        
            syxSEPERATS4ETM1 = (((yyAritQuadSEPERATS4ETM1 - ((qXYSEPERATS4ETM1^2) / xxAritQuadSEPERATS4ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM2 = (((yyAritQuadSEPERATS4ETM2 - ((qXYSEPERATS4ETM2^2) / xxAritQuadSEPERATS4ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM3 = (((yyAritQuadSEPERATS4ETM3 - ((qXYSEPERATS4ETM3^2) / xxAritQuadSEPERATS4ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM4 = (((yyAritQuadSEPERATS4ETM4 - ((qXYSEPERATS4ETM4^2) / xxAritQuadSEPERATS4ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM5 = (((yyAritQuadSEPERATS4ETM5 - ((qXYSEPERATS4ETM5^2) / xxAritQuadSEPERATS4ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM7 = (((yyAritQuadSEPERATS4ETM7 - ((qXYSEPERATS4ETM7^2) / xxAritQuadSEPERATS4ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4ETM1 = (((syxSEPERATS4ETM1^2) / xxAritQuadSEPERATS4ETM1)^0.5);
            bStandSEPERATS4ETM2 = (((syxSEPERATS4ETM2^2) / xxAritQuadSEPERATS4ETM2)^0.5);
            bStandSEPERATS4ETM3 = (((syxSEPERATS4ETM3^2) / xxAritQuadSEPERATS4ETM3)^0.5);
            bStandSEPERATS4ETM4 = (((syxSEPERATS4ETM4^2) / xxAritQuadSEPERATS4ETM4)^0.5);
            bStandSEPERATS4ETM5 = (((syxSEPERATS4ETM5^2) / xxAritQuadSEPERATS4ETM5)^0.5);
            bStandSEPERATS4ETM7 = (((syxSEPERATS4ETM7^2) / xxAritQuadSEPERATS4ETM7)^0.5);
    
            aStandSEPERATS4ETM1 = (bStandSEPERATS4ETM1 * ((xQuadSEPERATS4ETM1 / minPifVAL)^0.5));
            aStandSEPERATS4ETM2 = (bStandSEPERATS4ETM2 * ((xQuadSEPERATS4ETM2 / minPifVAL)^0.5));
            aStandSEPERATS4ETM3 = (bStandSEPERATS4ETM3 * ((xQuadSEPERATS4ETM3 / minPifVAL)^0.5));
            aStandSEPERATS4ETM4 = (bStandSEPERATS4ETM4 * ((xQuadSEPERATS4ETM4 / minPifVAL)^0.5));
            aStandSEPERATS4ETM5 = (bStandSEPERATS4ETM5 * ((xQuadSEPERATS4ETM5 / minPifVAL)^0.5));
            aStandSEPERATS4ETM7 = (bStandSEPERATS4ETM7 * ((xQuadSEPERATS4ETM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM1, bSEPERATS4ETM1, rSEPERATS4ETM1, rQuadSEPERATS4ETM1, aStandSEPERATS4ETM1, bStandSEPERATS4ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM2, bSEPERATS4ETM2, rSEPERATS4ETM2, rQuadSEPERATS4ETM2, aStandSEPERATS4ETM2, bStandSEPERATS4ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM3, bSEPERATS4ETM3, rSEPERATS4ETM3, rQuadSEPERATS4ETM3, aStandSEPERATS4ETM3, bStandSEPERATS4ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM4, bSEPERATS4ETM4, rSEPERATS4ETM4, rQuadSEPERATS4ETM4, aStandSEPERATS4ETM4, bStandSEPERATS4ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM5, bSEPERATS4ETM5, rSEPERATS4ETM5, rQuadSEPERATS4ETM5, aStandSEPERATS4ETM5, bStandSEPERATS4ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS4ETM7, bSEPERATS4ETM7, rSEPERATS4ETM7, rQuadSEPERATS4ETM7, aStandSEPERATS4ETM7, bStandSEPERATS4ETM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS4slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS4slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS4slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS4slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS4slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS4slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS4slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT4ETM1[i,j] = (aSEPERATS4ETM1 + (bSEPERATS4ETM1 * REFS4ETM1[i,j]));
                    OUT4ETM2[i,j] = (aSEPERATS4ETM2 + (bSEPERATS4ETM2 * REFS4ETM2[i,j]));
                    OUT4ETM3[i,j] = (aSEPERATS4ETM3 + (bSEPERATS4ETM3 * REFS4ETM3[i,j]));
                    OUT4ETM4[i,j] = (aSEPERATS4ETM4 + (bSEPERATS4ETM4 * REFS4ETM4[i,j]));
                    OUT4ETM5[i,j] = (aSEPERATS4ETM5 + (bSEPERATS4ETM5 * REFS4ETM5[i,j]));
                    OUT4ETM7[i,j] = (aSEPERATS4ETM7 + (bSEPERATS4ETM7 * REFS4ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4ETM1);
        	CreatePyramid(OUT4ETM2);
        	CreatePyramid(OUT4ETM3);
        	CreatePyramid(OUT4ETM4);
        	CreatePyramid(OUT4ETM5);
        	CreatePyramid(OUT4ETM7);
        
        	CreateHistogram(OUT4ETM1);
        	CreateHistogram(OUT4ETM2);
        	CreateHistogram(OUT4ETM3);
        	CreateHistogram(OUT4ETM4);
        	CreateHistogram(OUT4ETM5);
        	CreateHistogram(OUT4ETM7);
            CloseRaster(REFS4ETM1);
            CloseRaster(REFS4ETM2);
            CloseRaster(REFS4ETM3);
            CloseRaster(REFS4ETM4);
            CloseRaster(REFS4ETM5);
            CloseRaster(REFS4ETM7);
    
            CloseRaster(OUT4ETM1);
            CloseRaster(OUT4ETM2);
            CloseRaster(OUT4ETM3);
            CloseRaster(OUT4ETM4);
            CloseRaster(OUT4ETM5);
            CloseRaster(OUT4ETM7);
            
        	printf("Scene 4 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors4 == 6 )
            {
            numeric xAritSEPERATS4TM1, xAritSEPERATS4TM2, xAritSEPERATS4TM3, xAritSEPERATS4TM4, xAritSEPERATS4TM5, xAritSEPERATS4TM7;
            numeric yAritSEPERATS4TM1, yAritSEPERATS4TM2, yAritSEPERATS4TM3, yAritSEPERATS4TM4, yAritSEPERATS4TM5, yAritSEPERATS4TM7;
    
            numeric aSEPERATS4TM1, aSEPERATS4TM2, aSEPERATS4TM3, aSEPERATS4TM4, aSEPERATS4TM5, aSEPERATS4TM7;
            numeric bSEPERATS4TM1, bSEPERATS4TM2, bSEPERATS4TM3, bSEPERATS4TM4, bSEPERATS4TM5, bSEPERATS4TM7;
            numeric rSEPERATS4TM1, rSEPERATS4TM2, rSEPERATS4TM3, rSEPERATS4TM4, rSEPERATS4TM5, rSEPERATS4TM7;
            numeric rQuadSEPERATS4TM1, rQuadSEPERATS4TM2, rQuadSEPERATS4TM3, rQuadSEPERATS4TM4, rQuadSEPERATS4TM5, rQuadSEPERATS4TM7;
            numeric syxSEPERATS4TM1, syxSEPERATS4TM2, syxSEPERATS4TM3, syxSEPERATS4TM4, syxSEPERATS4TM5, syxSEPERATS4TM7;
            numeric bStandSEPERATS4TM1, bStandSEPERATS4TM2, bStandSEPERATS4TM3, bStandSEPERATS4TM4, bStandSEPERATS4TM5, bStandSEPERATS4TM7;
            numeric aStandSEPERATS4TM1, aStandSEPERATS4TM2, aStandSEPERATS4TM3, aStandSEPERATS4TM4, aStandSEPERATS4TM5, aStandSEPERATS4TM7;
    
            numeric xSEPERATS4TM1 = 0;
            numeric xSEPERATS4TM2 = 0;
            numeric xSEPERATS4TM3 = 0;
            numeric xSEPERATS4TM4 = 0;
            numeric xSEPERATS4TM5 = 0;
            numeric xSEPERATS4TM7 = 0;
    
            numeric xQuadSEPERATS4TM1 = 0;
            numeric xQuadSEPERATS4TM2 = 0;
            numeric xQuadSEPERATS4TM3 = 0;
            numeric xQuadSEPERATS4TM4 = 0;
            numeric xQuadSEPERATS4TM5 = 0;
            numeric xQuadSEPERATS4TM7 = 0;
    
            numeric ySEPERATS4TM1 = 0;
            numeric ySEPERATS4TM2 = 0;
            numeric ySEPERATS4TM3 = 0;
            numeric ySEPERATS4TM4 = 0;
            numeric ySEPERATS4TM5 = 0;
            numeric ySEPERATS4TM7 = 0;
    
            numeric yQuadSEPERATS4TM1 = 0;
            numeric yQuadSEPERATS4TM2 = 0;
            numeric yQuadSEPERATS4TM3 = 0;
            numeric yQuadSEPERATS4TM4 = 0;
            numeric yQuadSEPERATS4TM5 = 0;
            numeric yQuadSEPERATS4TM7 = 0;
    
            numeric xySEPERATS4TM1 = 0;
            numeric xySEPERATS4TM2 = 0;
            numeric xySEPERATS4TM3 = 0;
            numeric xySEPERATS4TM4 = 0;
            numeric xySEPERATS4TM5 = 0;
            numeric xySEPERATS4TM7 = 0;
    
            numeric xxAritQuadSEPERATS4TM1 = 0;
            numeric xxAritQuadSEPERATS4TM2 = 0;
            numeric xxAritQuadSEPERATS4TM3 = 0;
            numeric xxAritQuadSEPERATS4TM4 = 0;
            numeric xxAritQuadSEPERATS4TM5 = 0;
            numeric xxAritQuadSEPERATS4TM7 = 0;
    
            numeric yyAritQuadSEPERATS4TM1 = 0;
            numeric yyAritQuadSEPERATS4TM2 = 0;
            numeric yyAritQuadSEPERATS4TM3 = 0;
            numeric yyAritQuadSEPERATS4TM4 = 0;
            numeric yyAritQuadSEPERATS4TM5 = 0;
            numeric yyAritQuadSEPERATS4TM7 = 0;
    
            numeric qXYSEPERATS4TM1 = 0;
            numeric qXYSEPERATS4TM2 = 0;
            numeric qXYSEPERATS4TM3 = 0;
            numeric qXYSEPERATS4TM4 = 0;
            numeric qXYSEPERATS4TM5 = 0;
            numeric qXYSEPERATS4TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS4TM1 = xSEPERATS4TM1 + pifSEPERATS3S4ETM1arrayRAND[m];
                xSEPERATS4TM2 = xSEPERATS4TM2 + pifSEPERATS3S4ETM2arrayRAND[m];
                xSEPERATS4TM3 = xSEPERATS4TM3 + pifSEPERATS3S4ETM3arrayRAND[m];
                xSEPERATS4TM4 = xSEPERATS4TM4 + pifSEPERATS3S4ETM4arrayRAND[m];
                xSEPERATS4TM5 = xSEPERATS4TM5 + pifSEPERATS3S4ETM5arrayRAND[m];
                xSEPERATS4TM7 = xSEPERATS4TM7 + pifSEPERATS3S4ETM7arrayRAND[m];
    
                xQuadSEPERATS4TM1 = (xQuadSEPERATS4TM1 + (pifSEPERATS3S4ETM1arrayRAND[m]^2));
                xQuadSEPERATS4TM2 = (xQuadSEPERATS4TM2 + (pifSEPERATS3S4ETM2arrayRAND[m]^2));
                xQuadSEPERATS4TM3 = (xQuadSEPERATS4TM3 + (pifSEPERATS3S4ETM3arrayRAND[m]^2));
                xQuadSEPERATS4TM4 = (xQuadSEPERATS4TM4 + (pifSEPERATS3S4ETM4arrayRAND[m]^2));
                xQuadSEPERATS4TM5 = (xQuadSEPERATS4TM5 + (pifSEPERATS3S4ETM5arrayRAND[m]^2));
                xQuadSEPERATS4TM7 = (xQuadSEPERATS4TM7 + (pifSEPERATS3S4ETM7arrayRAND[m]^2));
    
                ySEPERATS4TM1 = ySEPERATS4TM1 + pifSEPERATS4slaveTM1arrayRAND[m];
                ySEPERATS4TM2 = ySEPERATS4TM2 + pifSEPERATS4slaveTM2arrayRAND[m];
                ySEPERATS4TM3 = ySEPERATS4TM3 + pifSEPERATS4slaveTM3arrayRAND[m];
                ySEPERATS4TM4 = ySEPERATS4TM4 + pifSEPERATS4slaveTM4arrayRAND[m];
                ySEPERATS4TM5 = ySEPERATS4TM5 + pifSEPERATS4slaveTM5arrayRAND[m];
                ySEPERATS4TM7 = ySEPERATS4TM7 + pifSEPERATS4slaveTM7arrayRAND[m];
                
                yQuadSEPERATS4TM1 = (yQuadSEPERATS4TM1 + (pifSEPERATS4slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS4TM2 = (yQuadSEPERATS4TM2 + (pifSEPERATS4slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS4TM3 = (yQuadSEPERATS4TM3 + (pifSEPERATS4slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS4TM4 = (yQuadSEPERATS4TM4 + (pifSEPERATS4slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS4TM5 = (yQuadSEPERATS4TM5 + (pifSEPERATS4slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS4TM7 = (yQuadSEPERATS4TM7 + (pifSEPERATS4slaveTM7arrayRAND[m]^2));
    
                xySEPERATS4TM1 = (xySEPERATS4TM1 + (pifSEPERATS3S4ETM1arrayRAND[m] * pifSEPERATS4slaveTM1arrayRAND[m]));
                xySEPERATS4TM2 = (xySEPERATS4TM2 + (pifSEPERATS3S4ETM2arrayRAND[m] * pifSEPERATS4slaveTM2arrayRAND[m]));
                xySEPERATS4TM3 = (xySEPERATS4TM3 + (pifSEPERATS3S4ETM3arrayRAND[m] * pifSEPERATS4slaveTM3arrayRAND[m]));
                xySEPERATS4TM4 = (xySEPERATS4TM4 + (pifSEPERATS3S4ETM4arrayRAND[m] * pifSEPERATS4slaveTM4arrayRAND[m]));
                xySEPERATS4TM5 = (xySEPERATS4TM5 + (pifSEPERATS3S4ETM5arrayRAND[m] * pifSEPERATS4slaveTM5arrayRAND[m]));
                xySEPERATS4TM7 = (xySEPERATS4TM7 + (pifSEPERATS3S4ETM7arrayRAND[m] * pifSEPERATS4slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS4TM1 = xSEPERATS4TM1 / minPifVAL;
            xAritSEPERATS4TM2 = xSEPERATS4TM2 / minPifVAL;
            xAritSEPERATS4TM3 = xSEPERATS4TM3 / minPifVAL;
            xAritSEPERATS4TM4 = xSEPERATS4TM4 / minPifVAL;
            xAritSEPERATS4TM5 = xSEPERATS4TM5 / minPifVAL;
            xAritSEPERATS4TM7 = xSEPERATS4TM7 / minPifVAL;
    
            yAritSEPERATS4TM1 = ySEPERATS4TM1 / minPifVAL;
            yAritSEPERATS4TM2 = ySEPERATS4TM2 / minPifVAL;
            yAritSEPERATS4TM3 = ySEPERATS4TM3 / minPifVAL;
            yAritSEPERATS4TM4 = ySEPERATS4TM4 / minPifVAL;
            yAritSEPERATS4TM5 = ySEPERATS4TM5 / minPifVAL;
            yAritSEPERATS4TM7 = ySEPERATS4TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4TM1 = (xxAritQuadSEPERATS4TM1 + ((pifSEPERATS3S4ETM1arrayRAND[n] - xAritSEPERATS4TM1)^2));
                xxAritQuadSEPERATS4TM2 = (xxAritQuadSEPERATS4TM2 + ((pifSEPERATS3S4ETM2arrayRAND[n] - xAritSEPERATS4TM2)^2));
                xxAritQuadSEPERATS4TM3 = (xxAritQuadSEPERATS4TM3 + ((pifSEPERATS3S4ETM3arrayRAND[n] - xAritSEPERATS4TM3)^2));
                xxAritQuadSEPERATS4TM4 = (xxAritQuadSEPERATS4TM4 + ((pifSEPERATS3S4ETM4arrayRAND[n] - xAritSEPERATS4TM4)^2));
                xxAritQuadSEPERATS4TM5 = (xxAritQuadSEPERATS4TM5 + ((pifSEPERATS3S4ETM5arrayRAND[n] - xAritSEPERATS4TM5)^2));
                xxAritQuadSEPERATS4TM7 = (xxAritQuadSEPERATS4TM7 + ((pifSEPERATS3S4ETM7arrayRAND[n] - xAritSEPERATS4TM7)^2));
    
                yyAritQuadSEPERATS4TM1 = (yyAritQuadSEPERATS4TM1 + ((pifSEPERATS4slaveTM1arrayRAND[n] - yAritSEPERATS4TM1)^2));
                yyAritQuadSEPERATS4TM2 = (yyAritQuadSEPERATS4TM2 + ((pifSEPERATS4slaveTM2arrayRAND[n] - yAritSEPERATS4TM2)^2));
                yyAritQuadSEPERATS4TM3 = (yyAritQuadSEPERATS4TM3 + ((pifSEPERATS4slaveTM3arrayRAND[n] - yAritSEPERATS4TM3)^2));
                yyAritQuadSEPERATS4TM4 = (yyAritQuadSEPERATS4TM4 + ((pifSEPERATS4slaveTM4arrayRAND[n] - yAritSEPERATS4TM4)^2));
                yyAritQuadSEPERATS4TM5 = (yyAritQuadSEPERATS4TM5 + ((pifSEPERATS4slaveTM5arrayRAND[n] - yAritSEPERATS4TM5)^2));
                yyAritQuadSEPERATS4TM7 = (yyAritQuadSEPERATS4TM7 + ((pifSEPERATS4slaveTM7arrayRAND[n] - yAritSEPERATS4TM7)^2));
    
                qXYSEPERATS4TM1 = (qXYSEPERATS4TM1 + ((pifSEPERATS3S4ETM1arrayRAND[n] - xAritSEPERATS4TM1) * (pifSEPERATS4slaveTM1arrayRAND[n] - yAritSEPERATS4TM1)));
                qXYSEPERATS4TM2 = (qXYSEPERATS4TM2 + ((pifSEPERATS3S4ETM2arrayRAND[n] - xAritSEPERATS4TM2) * (pifSEPERATS4slaveTM2arrayRAND[n] - yAritSEPERATS4TM2)));
                qXYSEPERATS4TM3 = (qXYSEPERATS4TM3 + ((pifSEPERATS3S4ETM3arrayRAND[n] - xAritSEPERATS4TM3) * (pifSEPERATS4slaveTM3arrayRAND[n] - yAritSEPERATS4TM3)));
                qXYSEPERATS4TM4 = (qXYSEPERATS4TM4 + ((pifSEPERATS3S4ETM4arrayRAND[n] - xAritSEPERATS4TM4) * (pifSEPERATS4slaveTM4arrayRAND[n] - yAritSEPERATS4TM4)));
                qXYSEPERATS4TM5 = (qXYSEPERATS4TM5 + ((pifSEPERATS3S4ETM5arrayRAND[n] - xAritSEPERATS4TM5) * (pifSEPERATS4slaveTM5arrayRAND[n] - yAritSEPERATS4TM5)));
                qXYSEPERATS4TM7 = (qXYSEPERATS4TM7 + ((pifSEPERATS3S4ETM7arrayRAND[n] - xAritSEPERATS4TM7) * (pifSEPERATS4slaveTM7arrayRAND[n] - yAritSEPERATS4TM7)));
            }
        
            aSEPERATS4TM1 = (((xQuadSEPERATS4TM1 * ySEPERATS4TM1) - (xSEPERATS4TM1 * xySEPERATS4TM1)) / ((minPifVAL * xQuadSEPERATS4TM1) - (xSEPERATS4TM1^2)));
            aSEPERATS4TM2 = (((xQuadSEPERATS4TM2 * ySEPERATS4TM2) - (xSEPERATS4TM2 * xySEPERATS4TM2)) / ((minPifVAL * xQuadSEPERATS4TM2) - (xSEPERATS4TM2^2)));
            aSEPERATS4TM3 = (((xQuadSEPERATS4TM3 * ySEPERATS4TM3) - (xSEPERATS4TM3 * xySEPERATS4TM3)) / ((minPifVAL * xQuadSEPERATS4TM3) - (xSEPERATS4TM3^2)));
            aSEPERATS4TM4 = (((xQuadSEPERATS4TM4 * ySEPERATS4TM4) - (xSEPERATS4TM4 * xySEPERATS4TM4)) / ((minPifVAL * xQuadSEPERATS4TM4) - (xSEPERATS4TM4^2)));
            aSEPERATS4TM5 = (((xQuadSEPERATS4TM5 * ySEPERATS4TM5) - (xSEPERATS4TM5 * xySEPERATS4TM5)) / ((minPifVAL * xQuadSEPERATS4TM5) - (xSEPERATS4TM5^2)));
            aSEPERATS4TM7 = (((xQuadSEPERATS4TM7 * ySEPERATS4TM7) - (xSEPERATS4TM7 * xySEPERATS4TM7)) / ((minPifVAL * xQuadSEPERATS4TM7) - (xSEPERATS4TM7^2)));
            
            bSEPERATS4TM1 = qXYSEPERATS4TM1 / xxAritQuadSEPERATS4TM1;
            bSEPERATS4TM2 = qXYSEPERATS4TM2 / xxAritQuadSEPERATS4TM2;
            bSEPERATS4TM3 = qXYSEPERATS4TM3 / xxAritQuadSEPERATS4TM3;
            bSEPERATS4TM4 = qXYSEPERATS4TM4 / xxAritQuadSEPERATS4TM4;
            bSEPERATS4TM5 = qXYSEPERATS4TM5 / xxAritQuadSEPERATS4TM5;
            bSEPERATS4TM7 = qXYSEPERATS4TM7 / xxAritQuadSEPERATS4TM7;
    
            rSEPERATS4TM1 = (qXYSEPERATS4TM1 / ((xxAritQuadSEPERATS4TM1 * yyAritQuadSEPERATS4TM1)^0.5));
            rSEPERATS4TM2 = (qXYSEPERATS4TM2 / ((xxAritQuadSEPERATS4TM2 * yyAritQuadSEPERATS4TM2)^0.5));
            rSEPERATS4TM3 = (qXYSEPERATS4TM3 / ((xxAritQuadSEPERATS4TM3 * yyAritQuadSEPERATS4TM3)^0.5));
            rSEPERATS4TM4 = (qXYSEPERATS4TM4 / ((xxAritQuadSEPERATS4TM4 * yyAritQuadSEPERATS4TM4)^0.5));
            rSEPERATS4TM5 = (qXYSEPERATS4TM5 / ((xxAritQuadSEPERATS4TM5 * yyAritQuadSEPERATS4TM5)^0.5));
            rSEPERATS4TM7 = (qXYSEPERATS4TM7 / ((xxAritQuadSEPERATS4TM7 * yyAritQuadSEPERATS4TM7)^0.5));
    
            rQuadSEPERATS4TM1 = ((rSEPERATS4TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4TM2 = ((rSEPERATS4TM2^2) * 100);
            rQuadSEPERATS4TM3 = ((rSEPERATS4TM3^2) * 100);
            rQuadSEPERATS4TM4 = ((rSEPERATS4TM4^2) * 100);
            rQuadSEPERATS4TM5 = ((rSEPERATS4TM5^2) * 100);
            rQuadSEPERATS4TM7 = ((rSEPERATS4TM7^2) * 100);
        
            syxSEPERATS4TM1 = (((yyAritQuadSEPERATS4TM1 - ((qXYSEPERATS4TM1^2) / xxAritQuadSEPERATS4TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM2 = (((yyAritQuadSEPERATS4TM2 - ((qXYSEPERATS4TM2^2) / xxAritQuadSEPERATS4TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM3 = (((yyAritQuadSEPERATS4TM3 - ((qXYSEPERATS4TM3^2) / xxAritQuadSEPERATS4TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM4 = (((yyAritQuadSEPERATS4TM4 - ((qXYSEPERATS4TM4^2) / xxAritQuadSEPERATS4TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM5 = (((yyAritQuadSEPERATS4TM5 - ((qXYSEPERATS4TM5^2) / xxAritQuadSEPERATS4TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM7 = (((yyAritQuadSEPERATS4TM7 - ((qXYSEPERATS4TM7^2) / xxAritQuadSEPERATS4TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4TM1 = (((syxSEPERATS4TM1^2) / xxAritQuadSEPERATS4TM1)^0.5);
            bStandSEPERATS4TM2 = (((syxSEPERATS4TM2^2) / xxAritQuadSEPERATS4TM2)^0.5);
            bStandSEPERATS4TM3 = (((syxSEPERATS4TM3^2) / xxAritQuadSEPERATS4TM3)^0.5);
            bStandSEPERATS4TM4 = (((syxSEPERATS4TM4^2) / xxAritQuadSEPERATS4TM4)^0.5);
            bStandSEPERATS4TM5 = (((syxSEPERATS4TM5^2) / xxAritQuadSEPERATS4TM5)^0.5);
            bStandSEPERATS4TM7 = (((syxSEPERATS4TM7^2) / xxAritQuadSEPERATS4TM7)^0.5);
    
            aStandSEPERATS4TM1 = (bStandSEPERATS4TM1 * ((xQuadSEPERATS4TM1 / minPifVAL)^0.5));
            aStandSEPERATS4TM2 = (bStandSEPERATS4TM2 * ((xQuadSEPERATS4TM2 / minPifVAL)^0.5));
            aStandSEPERATS4TM3 = (bStandSEPERATS4TM3 * ((xQuadSEPERATS4TM3 / minPifVAL)^0.5));
            aStandSEPERATS4TM4 = (bStandSEPERATS4TM4 * ((xQuadSEPERATS4TM4 / minPifVAL)^0.5));
            aStandSEPERATS4TM5 = (bStandSEPERATS4TM5 * ((xQuadSEPERATS4TM5 / minPifVAL)^0.5));
            aStandSEPERATS4TM7 = (bStandSEPERATS4TM7 * ((xQuadSEPERATS4TM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM1, bSEPERATS4TM1, rSEPERATS4TM1, rQuadSEPERATS4TM1, aStandSEPERATS4TM1, bStandSEPERATS4TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM2, bSEPERATS4TM2, rSEPERATS4TM2, rQuadSEPERATS4TM2, aStandSEPERATS4TM2, bStandSEPERATS4TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM3, bSEPERATS4TM3, rSEPERATS4TM3, rQuadSEPERATS4TM3, aStandSEPERATS4TM3, bStandSEPERATS4TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM4, bSEPERATS4TM4, rSEPERATS4TM4, rQuadSEPERATS4TM4, aStandSEPERATS4TM4, bStandSEPERATS4TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM5, bSEPERATS4TM5, rSEPERATS4TM5, rQuadSEPERATS4TM5, aStandSEPERATS4TM5, bStandSEPERATS4TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS4TM7, bSEPERATS4TM7, rSEPERATS4TM7, rQuadSEPERATS4TM7, aStandSEPERATS4TM7, bStandSEPERATS4TM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS4slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS4slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS4slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS4slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS4slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS4slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS4slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT4TM1[i,j] = (aSEPERATS4TM1 + (bSEPERATS4TM1 * REFS4TM1[i,j]));
                    OUT4TM2[i,j] = (aSEPERATS4TM2 + (bSEPERATS4TM2 * REFS4TM2[i,j]));
                    OUT4TM3[i,j] = (aSEPERATS4TM3 + (bSEPERATS4TM3 * REFS4TM3[i,j]));
                    OUT4TM4[i,j] = (aSEPERATS4TM4 + (bSEPERATS4TM4 * REFS4TM4[i,j]));
                    OUT4TM5[i,j] = (aSEPERATS4TM5 + (bSEPERATS4TM5 * REFS4TM5[i,j]));
                    OUT4TM7[i,j] = (aSEPERATS4TM7 + (bSEPERATS4TM7 * REFS4TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4TM1);
        	CreatePyramid(OUT4TM2);
        	CreatePyramid(OUT4TM3);
        	CreatePyramid(OUT4TM4);
        	CreatePyramid(OUT4TM5);
        	CreatePyramid(OUT4TM7);
        
        	CreateHistogram(OUT4TM1);
        	CreateHistogram(OUT4TM2);
        	CreateHistogram(OUT4TM3);
        	CreateHistogram(OUT4TM4);
        	CreateHistogram(OUT4TM5);
        	CreateHistogram(OUT4TM7);
            CloseRaster(REFS4TM1);
            CloseRaster(REFS4TM2);
            CloseRaster(REFS4TM3);
            CloseRaster(REFS4TM4);
            CloseRaster(REFS4TM5);
            CloseRaster(REFS4TM7);
    
            CloseRaster(OUT4TM1);
            CloseRaster(OUT4TM2);
            CloseRaster(OUT4TM3);
            CloseRaster(OUT4TM4);
            CloseRaster(OUT4TM5);
            CloseRaster(OUT4TM7);
        
        	printf("Scene 4 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS4MSS1, xAritSEPERATS4MSS2, xAritSEPERATS4MSS4;
            numeric yAritSEPERATS4MSS1, yAritSEPERATS4MSS2, yAritSEPERATS4MSS4;
    
            numeric aSEPERATS4MSS1, aSEPERATS4MSS2, aSEPERATS4MSS4;
            numeric bSEPERATS4MSS1, bSEPERATS4MSS2, bSEPERATS4MSS4;
            numeric rSEPERATS4MSS1, rSEPERATS4MSS2, rSEPERATS4MSS4;
            numeric rQuadSEPERATS4MSS1, rQuadSEPERATS4MSS2, rQuadSEPERATS4MSS4;
            numeric syxSEPERATS4MSS1, syxSEPERATS4MSS2, syxSEPERATS4MSS4;
            numeric bStandSEPERATS4MSS1, bStandSEPERATS4MSS2, bStandSEPERATS4MSS4;
            numeric aStandSEPERATS4MSS1, aStandSEPERATS4MSS2, aStandSEPERATS4MSS4;
    
            numeric xSEPERATS4MSS1 = 0;
            numeric xSEPERATS4MSS2 = 0;
            numeric xSEPERATS4MSS4 = 0;
    
            numeric xQuadSEPERATS4MSS1 = 0;
            numeric xQuadSEPERATS4MSS2 = 0;
            numeric xQuadSEPERATS4MSS4 = 0;
    
            numeric ySEPERATS4MSS1 = 0;
            numeric ySEPERATS4MSS2 = 0;
            numeric ySEPERATS4MSS4 = 0;
    
            numeric yQuadSEPERATS4MSS1 = 0;
            numeric yQuadSEPERATS4MSS2 = 0;
            numeric yQuadSEPERATS4MSS4 = 0;
    
            numeric xySEPERATS4MSS1 = 0;
            numeric xySEPERATS4MSS2 = 0;
            numeric xySEPERATS4MSS4 = 0;
    
            numeric xxAritQuadSEPERATS4MSS1 = 0;
            numeric xxAritQuadSEPERATS4MSS2 = 0;
            numeric xxAritQuadSEPERATS4MSS4 = 0;
    
            numeric yyAritQuadSEPERATS4MSS1 = 0;
            numeric yyAritQuadSEPERATS4MSS2 = 0;
            numeric yyAritQuadSEPERATS4MSS4 = 0;
    
            numeric qXYSEPERATS4MSS1 = 0;
            numeric qXYSEPERATS4MSS2 = 0;
            numeric qXYSEPERATS4MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS4MSS1 = xSEPERATS4MSS1 + pifSEPERATS3S4ETM2arrayRAND[m];
                xSEPERATS4MSS2 = xSEPERATS4MSS2 + pifSEPERATS3S4ETM3arrayRAND[m];
                xSEPERATS4MSS4 = xSEPERATS4MSS4 + pifSEPERATS3S4ETM4arrayRAND[m];
    
                xQuadSEPERATS4MSS1 = (xQuadSEPERATS4MSS1 + (pifSEPERATS3S4ETM2arrayRAND[m]^2));
                xQuadSEPERATS4MSS2 = (xQuadSEPERATS4MSS2 + (pifSEPERATS3S4ETM3arrayRAND[m]^2));
                xQuadSEPERATS4MSS4 = (xQuadSEPERATS4MSS4 + (pifSEPERATS3S4ETM4arrayRAND[m]^2));
    
                ySEPERATS4MSS1 = ySEPERATS4MSS1 + pifSEPERATS4slaveMSS1arrayRAND[m];
                ySEPERATS4MSS2 = ySEPERATS4MSS2 + pifSEPERATS4slaveMSS2arrayRAND[m];
                ySEPERATS4MSS4 = ySEPERATS4MSS4 + pifSEPERATS4slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS4MSS1 = (yQuadSEPERATS4MSS1 + (pifSEPERATS4slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS4MSS2 = (yQuadSEPERATS4MSS2 + (pifSEPERATS4slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS4MSS4 = (yQuadSEPERATS4MSS4 + (pifSEPERATS4slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS4MSS1 = (xySEPERATS4MSS1 + (pifSEPERATS3S4ETM2arrayRAND[m] * pifSEPERATS4slaveMSS1arrayRAND[m]));
                xySEPERATS4MSS2 = (xySEPERATS4MSS2 + (pifSEPERATS3S4ETM3arrayRAND[m] * pifSEPERATS4slaveMSS2arrayRAND[m]));
                xySEPERATS4MSS4 = (xySEPERATS4MSS4 + (pifSEPERATS3S4ETM4arrayRAND[m] * pifSEPERATS4slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS4MSS1 = xSEPERATS4MSS1 / minPifVAL;
            xAritSEPERATS4MSS2 = xSEPERATS4MSS2 / minPifVAL;
            xAritSEPERATS4MSS4 = xSEPERATS4MSS4 / minPifVAL;
    
            yAritSEPERATS4MSS1 = ySEPERATS4MSS1 / minPifVAL;
            yAritSEPERATS4MSS2 = ySEPERATS4MSS2 / minPifVAL;
            yAritSEPERATS4MSS4 = ySEPERATS4MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4MSS1 = (xxAritQuadSEPERATS4MSS1 + ((pifSEPERATS3S4ETM2arrayRAND[n] - xAritSEPERATS4MSS1)^2));
                xxAritQuadSEPERATS4MSS2 = (xxAritQuadSEPERATS4MSS2 + ((pifSEPERATS3S4ETM3arrayRAND[n] - xAritSEPERATS4MSS2)^2));
                xxAritQuadSEPERATS4MSS4 = (xxAritQuadSEPERATS4MSS4 + ((pifSEPERATS3S4ETM4arrayRAND[n] - xAritSEPERATS4MSS4)^2));
    
                yyAritQuadSEPERATS4MSS1 = (yyAritQuadSEPERATS4MSS1 + ((pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)^2));
                yyAritQuadSEPERATS4MSS2 = (yyAritQuadSEPERATS4MSS2 + ((pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)^2));
                yyAritQuadSEPERATS4MSS4 = (yyAritQuadSEPERATS4MSS4 + ((pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)^2));
    
                qXYSEPERATS4MSS1 = (qXYSEPERATS4MSS1 + ((pifSEPERATS3S4ETM2arrayRAND[n] - xAritSEPERATS4MSS1) * (pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)));
                qXYSEPERATS4MSS2 = (qXYSEPERATS4MSS2 + ((pifSEPERATS3S4ETM3arrayRAND[n] - xAritSEPERATS4MSS2) * (pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)));
                qXYSEPERATS4MSS4 = (qXYSEPERATS4MSS4 + ((pifSEPERATS3S4ETM4arrayRAND[n] - xAritSEPERATS4MSS4) * (pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)));
            }
        
            aSEPERATS4MSS1 = (((xQuadSEPERATS4MSS1 * ySEPERATS4MSS1) - (xSEPERATS4MSS1 * xySEPERATS4MSS1)) / ((minPifVAL * xQuadSEPERATS4MSS1) - (xSEPERATS4MSS1^2)));
            aSEPERATS4MSS2 = (((xQuadSEPERATS4MSS2 * ySEPERATS4MSS2) - (xSEPERATS4MSS2 * xySEPERATS4MSS2)) / ((minPifVAL * xQuadSEPERATS4MSS2) - (xSEPERATS4MSS2^2)));
            aSEPERATS4MSS4 = (((xQuadSEPERATS4MSS4 * ySEPERATS4MSS4) - (xSEPERATS4MSS4 * xySEPERATS4MSS4)) / ((minPifVAL * xQuadSEPERATS4MSS4) - (xSEPERATS4MSS4^2)));
            
            bSEPERATS4MSS1 = qXYSEPERATS4MSS1 / xxAritQuadSEPERATS4MSS1;
            bSEPERATS4MSS2 = qXYSEPERATS4MSS2 / xxAritQuadSEPERATS4MSS2;
            bSEPERATS4MSS4 = qXYSEPERATS4MSS4 / xxAritQuadSEPERATS4MSS4;
    
            rSEPERATS4MSS1 = (qXYSEPERATS4MSS1 / ((xxAritQuadSEPERATS4MSS1 * yyAritQuadSEPERATS4MSS1)^0.5));
            rSEPERATS4MSS2 = (qXYSEPERATS4MSS2 / ((xxAritQuadSEPERATS4MSS2 * yyAritQuadSEPERATS4MSS2)^0.5));
            rSEPERATS4MSS4 = (qXYSEPERATS4MSS4 / ((xxAritQuadSEPERATS4MSS4 * yyAritQuadSEPERATS4MSS4)^0.5));
    
            rQuadSEPERATS4MSS1 = ((rSEPERATS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4MSS2 = ((rSEPERATS4MSS2^2) * 100);
            rQuadSEPERATS4MSS4 = ((rSEPERATS4MSS4^2) * 100);
        
            syxSEPERATS4MSS1 = (((yyAritQuadSEPERATS4MSS1 - ((qXYSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS2 = (((yyAritQuadSEPERATS4MSS2 - ((qXYSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS4 = (((yyAritQuadSEPERATS4MSS4 - ((qXYSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4MSS1 = (((syxSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)^0.5);
            bStandSEPERATS4MSS2 = (((syxSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)^0.5);
            bStandSEPERATS4MSS4 = (((syxSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)^0.5);
    
            aStandSEPERATS4MSS1 = (bStandSEPERATS4MSS1 * ((xQuadSEPERATS4MSS1 / minPifVAL)^0.5));
            aStandSEPERATS4MSS2 = (bStandSEPERATS4MSS2 * ((xQuadSEPERATS4MSS2 / minPifVAL)^0.5));
            aStandSEPERATS4MSS4 = (bStandSEPERATS4MSS4 * ((xQuadSEPERATS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS1, bSEPERATS4MSS1, rSEPERATS4MSS1, rQuadSEPERATS4MSS1, aStandSEPERATS4MSS1, bStandSEPERATS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS2, bSEPERATS4MSS2, rSEPERATS4MSS2, rQuadSEPERATS4MSS2, aStandSEPERATS4MSS2, bStandSEPERATS4MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS4, bSEPERATS4MSS4, rSEPERATS4MSS4, rQuadSEPERATS4MSS4, aStandSEPERATS4MSS4, bStandSEPERATS4MSS4);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS4slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS4slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS4slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aSEPERATS4MSS1 + (bSEPERATS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aSEPERATS4MSS2 + (bSEPERATS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = REFS4MSS3[i,j];
                    OUT4MSS4[i,j] = (aSEPERATS4MSS4 + (bSEPERATS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT4MSS1);
            CreatePyramid(OUT4MSS2);
            CreatePyramid(OUT4MSS3);
            CreatePyramid(OUT4MSS4);
        
            CreateHistogram(OUT4MSS1);
            CreateHistogram(OUT4MSS2);
            CreateHistogram(OUT4MSS3);
            CreateHistogram(OUT4MSS4);
            
            CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
        }
        
        else if ( sensors3 == 6 )
        {
        printf("Scene 3 - Master Scene (TM):\n");
        printf("Scene 3 array values used for regression computation:\n");
	    printf("For Scene 3 (Master) and Slave (Scene 1):");
        printf("TM1: %12f ", pifSEPERATS3S1TM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S1TM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S1TM1arrayRAND[minPifVAL]);
    
        printf("TM2: %12f ", pifSEPERATS3S1TM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S1TM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S1TM2arrayRAND[minPifVAL]);
    
        printf("TM3: %12f ", pifSEPERATS3S1TM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S1TM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S1TM3arrayRAND[minPifVAL]);
    
        printf("TM4: %12f ", pifSEPERATS3S1TM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S1TM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S1TM4arrayRAND[minPifVAL]);
    
        printf("TM5: %12f ", pifSEPERATS3S1TM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S1TM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S1TM5arrayRAND[minPifVAL]);
    
        printf("TM7: %12f ", pifSEPERATS3S1TM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S1TM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS3S1TM7arrayRAND[minPifVAL]);
	    printf("For Scene 3 (Master) and Slave (Scene 2):");
        printf("TM1: %12f ", pifSEPERATS3S2TM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S2TM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S2TM1arrayRAND[minPifVAL]);
    
        printf("TM2: %12f ", pifSEPERATS3S2TM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S2TM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S2TM2arrayRAND[minPifVAL]);
    
        printf("TM3: %12f ", pifSEPERATS3S2TM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S2TM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S2TM3arrayRAND[minPifVAL]);
    
        printf("TM4: %12f ", pifSEPERATS3S2TM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S2TM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S2TM4arrayRAND[minPifVAL]);
    
        printf("TM5: %12f ", pifSEPERATS3S2TM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S2TM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S2TM5arrayRAND[minPifVAL]);
    
        printf("TM7: %12f ", pifSEPERATS3S2TM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S2TM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS3S2TM7arrayRAND[minPifVAL]);
	    printf("For Scene 3 (Master) and Slave (Scene 4):");
        printf("TM1: %12f ", pifSEPERATS3S4TM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S4TM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S4TM1arrayRAND[minPifVAL]);
    
        printf("TM2: %12f ", pifSEPERATS3S4TM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S4TM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S4TM2arrayRAND[minPifVAL]);
    
        printf("TM3: %12f ", pifSEPERATS3S4TM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S4TM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S4TM3arrayRAND[minPifVAL]);
    
        printf("TM4: %12f ", pifSEPERATS3S4TM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S4TM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S4TM4arrayRAND[minPifVAL]);
    
        printf("TM5: %12f ", pifSEPERATS3S4TM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S4TM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S4TM5arrayRAND[minPifVAL]);
    
        printf("TM7: %12f ", pifSEPERATS3S4TM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S4TM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS3S4TM7arrayRAND[minPifVAL]);
                for i = 1 to TMlins
                {
                    for j = 1 to TMcols
                    {
                    OUT3TM1[i,j] = REFS3TM1[i,j];
                    OUT3TM2[i,j] = REFS3TM2[i,j];
                    OUT3TM3[i,j] = REFS3TM3[i,j];
                    OUT3TM4[i,j] = REFS3TM4[i,j];
                    OUT3TM5[i,j] = REFS3TM5[i,j];
                    OUT3TM7[i,j] = REFS3TM7[i,j];
                    }
                }
            
        CreatePyramid(OUT3TM1);
        CreatePyramid(OUT3TM2);
        CreatePyramid(OUT3TM3);
        CreatePyramid(OUT3TM4);
        CreatePyramid(OUT3TM5);
        CreatePyramid(OUT3TM7);
        
        CreateHistogram(OUT3TM1);
        CreateHistogram(OUT3TM2);
        CreateHistogram(OUT3TM3);
        CreateHistogram(OUT3TM4);
        CreateHistogram(OUT3TM5);
        CreateHistogram(OUT3TM7);
        
        CloseRaster(REFS3TM1);
        CloseRaster(REFS3TM2);
        CloseRaster(REFS3TM3);
        CloseRaster(REFS3TM4);
        CloseRaster(REFS3TM5);
        CloseRaster(REFS3TM7);
        
        CloseRaster(OUT3TM1);
        CloseRaster(OUT3TM2);
        CloseRaster(OUT3TM3);
        CloseRaster(OUT3TM4);
        CloseRaster(OUT3TM5);
        CloseRaster(OUT3TM7);
            
        printf("Scene 3 (Master) output was written, histogram created and pyramid written...\n\n\n");
        
            if ( sensors1 == 7 )
            {
            numeric xAritSEPERATS1ETM1, xAritSEPERATS1ETM2, xAritSEPERATS1ETM3, xAritSEPERATS1ETM4, xAritSEPERATS1ETM5, xAritSEPERATS1ETM7;
            numeric yAritSEPERATS1ETM1, yAritSEPERATS1ETM2, yAritSEPERATS1ETM3, yAritSEPERATS1ETM4, yAritSEPERATS1ETM5, yAritSEPERATS1ETM7;
    
            numeric aSEPERATS1ETM1, aSEPERATS1ETM2, aSEPERATS1ETM3, aSEPERATS1ETM4, aSEPERATS1ETM5, aSEPERATS1ETM7;
            numeric bSEPERATS1ETM1, bSEPERATS1ETM2, bSEPERATS1ETM3, bSEPERATS1ETM4, bSEPERATS1ETM5, bSEPERATS1ETM7;
            numeric rSEPERATS1ETM1, rSEPERATS1ETM2, rSEPERATS1ETM3, rSEPERATS1ETM4, rSEPERATS1ETM5, rSEPERATS1ETM7;
            numeric rQuadSEPERATS1ETM1, rQuadSEPERATS1ETM2, rQuadSEPERATS1ETM3, rQuadSEPERATS1ETM4, rQuadSEPERATS1ETM5, rQuadSEPERATS1ETM7;
            numeric syxSEPERATS1ETM1, syxSEPERATS1ETM2, syxSEPERATS1ETM3, syxSEPERATS1ETM4, syxSEPERATS1ETM5, syxSEPERATS1ETM7;
            numeric bStandSEPERATS1ETM1, bStandSEPERATS1ETM2, bStandSEPERATS1ETM3, bStandSEPERATS1ETM4, bStandSEPERATS1ETM5, bStandSEPERATS1ETM7;
            numeric aStandSEPERATS1ETM1, aStandSEPERATS1ETM2, aStandSEPERATS1ETM3, aStandSEPERATS1ETM4, aStandSEPERATS1ETM5, aStandSEPERATS1ETM7;
    
            numeric xSEPERATS1ETM1 = 0;
            numeric xSEPERATS1ETM2 = 0;
            numeric xSEPERATS1ETM3 = 0;
            numeric xSEPERATS1ETM4 = 0;
            numeric xSEPERATS1ETM5 = 0;
            numeric xSEPERATS1ETM7 = 0;
    
            numeric xQuadSEPERATS1ETM1 = 0;
            numeric xQuadSEPERATS1ETM2 = 0;
            numeric xQuadSEPERATS1ETM3 = 0;
            numeric xQuadSEPERATS1ETM4 = 0;
            numeric xQuadSEPERATS1ETM5 = 0;
            numeric xQuadSEPERATS1ETM7 = 0;
    
            numeric ySEPERATS1ETM1 = 0;
            numeric ySEPERATS1ETM2 = 0;
            numeric ySEPERATS1ETM3 = 0;
            numeric ySEPERATS1ETM4 = 0;
            numeric ySEPERATS1ETM5 = 0;
            numeric ySEPERATS1ETM7 = 0;
    
            numeric yQuadSEPERATS1ETM1 = 0;
            numeric yQuadSEPERATS1ETM2 = 0;
            numeric yQuadSEPERATS1ETM3 = 0;
            numeric yQuadSEPERATS1ETM4 = 0;
            numeric yQuadSEPERATS1ETM5 = 0;
            numeric yQuadSEPERATS1ETM7 = 0;
    
            numeric xySEPERATS1ETM1 = 0;
            numeric xySEPERATS1ETM2 = 0;
            numeric xySEPERATS1ETM3 = 0;
            numeric xySEPERATS1ETM4 = 0;
            numeric xySEPERATS1ETM5 = 0;
            numeric xySEPERATS1ETM7 = 0;
    
            numeric xxAritQuadSEPERATS1ETM1 = 0;
            numeric xxAritQuadSEPERATS1ETM2 = 0;
            numeric xxAritQuadSEPERATS1ETM3 = 0;
            numeric xxAritQuadSEPERATS1ETM4 = 0;
            numeric xxAritQuadSEPERATS1ETM5 = 0;
            numeric xxAritQuadSEPERATS1ETM7 = 0;
    
            numeric yyAritQuadSEPERATS1ETM1 = 0;
            numeric yyAritQuadSEPERATS1ETM2 = 0;
            numeric yyAritQuadSEPERATS1ETM3 = 0;
            numeric yyAritQuadSEPERATS1ETM4 = 0;
            numeric yyAritQuadSEPERATS1ETM5 = 0;
            numeric yyAritQuadSEPERATS1ETM7 = 0;
    
            numeric qXYSEPERATS1ETM1 = 0;
            numeric qXYSEPERATS1ETM2 = 0;
            numeric qXYSEPERATS1ETM3 = 0;
            numeric qXYSEPERATS1ETM4 = 0;
            numeric qXYSEPERATS1ETM5 = 0;
            numeric qXYSEPERATS1ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1ETM1 = xSEPERATS1ETM1 + pifSEPERATS3S1TM1arrayRAND[m];
                xSEPERATS1ETM2 = xSEPERATS1ETM2 + pifSEPERATS3S1TM2arrayRAND[m];
                xSEPERATS1ETM3 = xSEPERATS1ETM3 + pifSEPERATS3S1TM3arrayRAND[m];
                xSEPERATS1ETM4 = xSEPERATS1ETM4 + pifSEPERATS3S1TM4arrayRAND[m];
                xSEPERATS1ETM5 = xSEPERATS1ETM5 + pifSEPERATS3S1TM5arrayRAND[m];
                xSEPERATS1ETM7 = xSEPERATS1ETM7 + pifSEPERATS3S1TM7arrayRAND[m];
    
                xQuadSEPERATS1ETM1 = (xQuadSEPERATS1ETM1 + (pifSEPERATS3S1TM1arrayRAND[m]^2));
                xQuadSEPERATS1ETM2 = (xQuadSEPERATS1ETM2 + (pifSEPERATS3S1TM2arrayRAND[m]^2));
                xQuadSEPERATS1ETM3 = (xQuadSEPERATS1ETM3 + (pifSEPERATS3S1TM3arrayRAND[m]^2));
                xQuadSEPERATS1ETM4 = (xQuadSEPERATS1ETM4 + (pifSEPERATS3S1TM4arrayRAND[m]^2));
                xQuadSEPERATS1ETM5 = (xQuadSEPERATS1ETM5 + (pifSEPERATS3S1TM5arrayRAND[m]^2));
                xQuadSEPERATS1ETM7 = (xQuadSEPERATS1ETM7 + (pifSEPERATS3S1TM7arrayRAND[m]^2));
    
                ySEPERATS1ETM1 = ySEPERATS1ETM1 + pifSEPERATS1slaveETM1arrayRAND[m];
                ySEPERATS1ETM2 = ySEPERATS1ETM2 + pifSEPERATS1slaveETM2arrayRAND[m];
                ySEPERATS1ETM3 = ySEPERATS1ETM3 + pifSEPERATS1slaveETM3arrayRAND[m];
                ySEPERATS1ETM4 = ySEPERATS1ETM4 + pifSEPERATS1slaveETM4arrayRAND[m];
                ySEPERATS1ETM5 = ySEPERATS1ETM5 + pifSEPERATS1slaveETM5arrayRAND[m];
                ySEPERATS1ETM7 = ySEPERATS1ETM7 + pifSEPERATS1slaveETM7arrayRAND[m];
                
                yQuadSEPERATS1ETM1 = (yQuadSEPERATS1ETM1 + (pifSEPERATS1slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS1ETM2 = (yQuadSEPERATS1ETM2 + (pifSEPERATS1slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS1ETM3 = (yQuadSEPERATS1ETM3 + (pifSEPERATS1slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS1ETM4 = (yQuadSEPERATS1ETM4 + (pifSEPERATS1slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS1ETM5 = (yQuadSEPERATS1ETM5 + (pifSEPERATS1slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS1ETM7 = (yQuadSEPERATS1ETM7 + (pifSEPERATS1slaveETM7arrayRAND[m]^2));
    
                xySEPERATS1ETM1 = (xySEPERATS1ETM1 + (pifSEPERATS3S1TM1arrayRAND[m] * pifSEPERATS1slaveETM1arrayRAND[m]));
                xySEPERATS1ETM2 = (xySEPERATS1ETM2 + (pifSEPERATS3S1TM2arrayRAND[m] * pifSEPERATS1slaveETM2arrayRAND[m]));
                xySEPERATS1ETM3 = (xySEPERATS1ETM3 + (pifSEPERATS3S1TM3arrayRAND[m] * pifSEPERATS1slaveETM3arrayRAND[m]));
                xySEPERATS1ETM4 = (xySEPERATS1ETM4 + (pifSEPERATS3S1TM4arrayRAND[m] * pifSEPERATS1slaveETM4arrayRAND[m]));
                xySEPERATS1ETM5 = (xySEPERATS1ETM5 + (pifSEPERATS3S1TM5arrayRAND[m] * pifSEPERATS1slaveETM5arrayRAND[m]));
                xySEPERATS1ETM7 = (xySEPERATS1ETM7 + (pifSEPERATS3S1TM7arrayRAND[m] * pifSEPERATS1slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS1ETM1 = xSEPERATS1ETM1 / minPifVAL;
            xAritSEPERATS1ETM2 = xSEPERATS1ETM2 / minPifVAL;
            xAritSEPERATS1ETM3 = xSEPERATS1ETM3 / minPifVAL;
            xAritSEPERATS1ETM4 = xSEPERATS1ETM4 / minPifVAL;
            xAritSEPERATS1ETM5 = xSEPERATS1ETM5 / minPifVAL;
            xAritSEPERATS1ETM7 = xSEPERATS1ETM7 / minPifVAL;
    
            yAritSEPERATS1ETM1 = ySEPERATS1ETM1 / minPifVAL;
            yAritSEPERATS1ETM2 = ySEPERATS1ETM2 / minPifVAL;
            yAritSEPERATS1ETM3 = ySEPERATS1ETM3 / minPifVAL;
            yAritSEPERATS1ETM4 = ySEPERATS1ETM4 / minPifVAL;
            yAritSEPERATS1ETM5 = ySEPERATS1ETM5 / minPifVAL;
            yAritSEPERATS1ETM7 = ySEPERATS1ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1ETM1 = (xxAritQuadSEPERATS1ETM1 + ((pifSEPERATS3S1TM1arrayRAND[n] - xAritSEPERATS1ETM1)^2));
                xxAritQuadSEPERATS1ETM2 = (xxAritQuadSEPERATS1ETM2 + ((pifSEPERATS3S1TM2arrayRAND[n] - xAritSEPERATS1ETM2)^2));
                xxAritQuadSEPERATS1ETM3 = (xxAritQuadSEPERATS1ETM3 + ((pifSEPERATS3S1TM3arrayRAND[n] - xAritSEPERATS1ETM3)^2));
                xxAritQuadSEPERATS1ETM4 = (xxAritQuadSEPERATS1ETM4 + ((pifSEPERATS3S1TM4arrayRAND[n] - xAritSEPERATS1ETM4)^2));
                xxAritQuadSEPERATS1ETM5 = (xxAritQuadSEPERATS1ETM5 + ((pifSEPERATS3S1TM5arrayRAND[n] - xAritSEPERATS1ETM5)^2));
                xxAritQuadSEPERATS1ETM7 = (xxAritQuadSEPERATS1ETM7 + ((pifSEPERATS3S1TM7arrayRAND[n] - xAritSEPERATS1ETM7)^2));
    
                yyAritQuadSEPERATS1ETM1 = (yyAritQuadSEPERATS1ETM1 + ((pifSEPERATS1slaveETM1arrayRAND[n] - yAritSEPERATS1ETM1)^2));
                yyAritQuadSEPERATS1ETM2 = (yyAritQuadSEPERATS1ETM2 + ((pifSEPERATS1slaveETM2arrayRAND[n] - yAritSEPERATS1ETM2)^2));
                yyAritQuadSEPERATS1ETM3 = (yyAritQuadSEPERATS1ETM3 + ((pifSEPERATS1slaveETM3arrayRAND[n] - yAritSEPERATS1ETM3)^2));
                yyAritQuadSEPERATS1ETM4 = (yyAritQuadSEPERATS1ETM4 + ((pifSEPERATS1slaveETM4arrayRAND[n] - yAritSEPERATS1ETM4)^2));
                yyAritQuadSEPERATS1ETM5 = (yyAritQuadSEPERATS1ETM5 + ((pifSEPERATS1slaveETM5arrayRAND[n] - yAritSEPERATS1ETM5)^2));
                yyAritQuadSEPERATS1ETM7 = (yyAritQuadSEPERATS1ETM7 + ((pifSEPERATS1slaveETM7arrayRAND[n] - yAritSEPERATS1ETM7)^2));
    
                qXYSEPERATS1ETM1 = (qXYSEPERATS1ETM1 + ((pifSEPERATS3S1TM1arrayRAND[n] - xAritSEPERATS1ETM1) * (pifSEPERATS1slaveETM1arrayRAND[n] - yAritSEPERATS1ETM1)));
                qXYSEPERATS1ETM2 = (qXYSEPERATS1ETM2 + ((pifSEPERATS3S1TM2arrayRAND[n] - xAritSEPERATS1ETM2) * (pifSEPERATS1slaveETM2arrayRAND[n] - yAritSEPERATS1ETM2)));
                qXYSEPERATS1ETM3 = (qXYSEPERATS1ETM3 + ((pifSEPERATS3S1TM3arrayRAND[n] - xAritSEPERATS1ETM3) * (pifSEPERATS1slaveETM3arrayRAND[n] - yAritSEPERATS1ETM3)));
                qXYSEPERATS1ETM4 = (qXYSEPERATS1ETM4 + ((pifSEPERATS3S1TM4arrayRAND[n] - xAritSEPERATS1ETM4) * (pifSEPERATS1slaveETM4arrayRAND[n] - yAritSEPERATS1ETM4)));
                qXYSEPERATS1ETM5 = (qXYSEPERATS1ETM5 + ((pifSEPERATS3S1TM5arrayRAND[n] - xAritSEPERATS1ETM5) * (pifSEPERATS1slaveETM5arrayRAND[n] - yAritSEPERATS1ETM5)));
                qXYSEPERATS1ETM7 = (qXYSEPERATS1ETM7 + ((pifSEPERATS3S1TM7arrayRAND[n] - xAritSEPERATS1ETM7) * (pifSEPERATS1slaveETM7arrayRAND[n] - yAritSEPERATS1ETM7)));
            }
        
            aSEPERATS1ETM1 = (((xQuadSEPERATS1ETM1 * ySEPERATS1ETM1) - (xSEPERATS1ETM1 * xySEPERATS1ETM1)) / ((minPifVAL * xQuadSEPERATS1ETM1) - (xSEPERATS1ETM1^2)));
            aSEPERATS1ETM2 = (((xQuadSEPERATS1ETM2 * ySEPERATS1ETM2) - (xSEPERATS1ETM2 * xySEPERATS1ETM2)) / ((minPifVAL * xQuadSEPERATS1ETM2) - (xSEPERATS1ETM2^2)));
            aSEPERATS1ETM3 = (((xQuadSEPERATS1ETM3 * ySEPERATS1ETM3) - (xSEPERATS1ETM3 * xySEPERATS1ETM3)) / ((minPifVAL * xQuadSEPERATS1ETM3) - (xSEPERATS1ETM3^2)));
            aSEPERATS1ETM4 = (((xQuadSEPERATS1ETM4 * ySEPERATS1ETM4) - (xSEPERATS1ETM4 * xySEPERATS1ETM4)) / ((minPifVAL * xQuadSEPERATS1ETM4) - (xSEPERATS1ETM4^2)));
            aSEPERATS1ETM5 = (((xQuadSEPERATS1ETM5 * ySEPERATS1ETM5) - (xSEPERATS1ETM5 * xySEPERATS1ETM5)) / ((minPifVAL * xQuadSEPERATS1ETM5) - (xSEPERATS1ETM5^2)));
            aSEPERATS1ETM7 = (((xQuadSEPERATS1ETM7 * ySEPERATS1ETM7) - (xSEPERATS1ETM7 * xySEPERATS1ETM7)) / ((minPifVAL * xQuadSEPERATS1ETM7) - (xSEPERATS1ETM7^2)));
            
            bSEPERATS1ETM1 = qXYSEPERATS1ETM1 / xxAritQuadSEPERATS1ETM1;
            bSEPERATS1ETM2 = qXYSEPERATS1ETM2 / xxAritQuadSEPERATS1ETM2;
            bSEPERATS1ETM3 = qXYSEPERATS1ETM3 / xxAritQuadSEPERATS1ETM3;
            bSEPERATS1ETM4 = qXYSEPERATS1ETM4 / xxAritQuadSEPERATS1ETM4;
            bSEPERATS1ETM5 = qXYSEPERATS1ETM5 / xxAritQuadSEPERATS1ETM5;
            bSEPERATS1ETM7 = qXYSEPERATS1ETM7 / xxAritQuadSEPERATS1ETM7;
    
            rSEPERATS1ETM1 = (qXYSEPERATS1ETM1 / ((xxAritQuadSEPERATS1ETM1 * yyAritQuadSEPERATS1ETM1)^0.5));
            rSEPERATS1ETM2 = (qXYSEPERATS1ETM2 / ((xxAritQuadSEPERATS1ETM2 * yyAritQuadSEPERATS1ETM2)^0.5));
            rSEPERATS1ETM3 = (qXYSEPERATS1ETM3 / ((xxAritQuadSEPERATS1ETM3 * yyAritQuadSEPERATS1ETM3)^0.5));
            rSEPERATS1ETM4 = (qXYSEPERATS1ETM4 / ((xxAritQuadSEPERATS1ETM4 * yyAritQuadSEPERATS1ETM4)^0.5));
            rSEPERATS1ETM5 = (qXYSEPERATS1ETM5 / ((xxAritQuadSEPERATS1ETM5 * yyAritQuadSEPERATS1ETM5)^0.5));
            rSEPERATS1ETM7 = (qXYSEPERATS1ETM7 / ((xxAritQuadSEPERATS1ETM7 * yyAritQuadSEPERATS1ETM7)^0.5));
    
            rQuadSEPERATS1ETM1 = ((rSEPERATS1ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1ETM2 = ((rSEPERATS1ETM2^2) * 100);
            rQuadSEPERATS1ETM3 = ((rSEPERATS1ETM3^2) * 100);
            rQuadSEPERATS1ETM4 = ((rSEPERATS1ETM4^2) * 100);
            rQuadSEPERATS1ETM5 = ((rSEPERATS1ETM5^2) * 100);
            rQuadSEPERATS1ETM7 = ((rSEPERATS1ETM7^2) * 100);
        
            syxSEPERATS1ETM1 = (((yyAritQuadSEPERATS1ETM1 - ((qXYSEPERATS1ETM1^2) / xxAritQuadSEPERATS1ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM2 = (((yyAritQuadSEPERATS1ETM2 - ((qXYSEPERATS1ETM2^2) / xxAritQuadSEPERATS1ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM3 = (((yyAritQuadSEPERATS1ETM3 - ((qXYSEPERATS1ETM3^2) / xxAritQuadSEPERATS1ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM4 = (((yyAritQuadSEPERATS1ETM4 - ((qXYSEPERATS1ETM4^2) / xxAritQuadSEPERATS1ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM5 = (((yyAritQuadSEPERATS1ETM5 - ((qXYSEPERATS1ETM5^2) / xxAritQuadSEPERATS1ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM7 = (((yyAritQuadSEPERATS1ETM7 - ((qXYSEPERATS1ETM7^2) / xxAritQuadSEPERATS1ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1ETM1 = (((syxSEPERATS1ETM1^2) / xxAritQuadSEPERATS1ETM1)^0.5);
            bStandSEPERATS1ETM2 = (((syxSEPERATS1ETM2^2) / xxAritQuadSEPERATS1ETM2)^0.5);
            bStandSEPERATS1ETM3 = (((syxSEPERATS1ETM3^2) / xxAritQuadSEPERATS1ETM3)^0.5);
            bStandSEPERATS1ETM4 = (((syxSEPERATS1ETM4^2) / xxAritQuadSEPERATS1ETM4)^0.5);
            bStandSEPERATS1ETM5 = (((syxSEPERATS1ETM5^2) / xxAritQuadSEPERATS1ETM5)^0.5);
            bStandSEPERATS1ETM7 = (((syxSEPERATS1ETM7^2) / xxAritQuadSEPERATS1ETM7)^0.5);
    
            aStandSEPERATS1ETM1 = (bStandSEPERATS1ETM1 * ((xQuadSEPERATS1ETM1 / minPifVAL)^0.5));
            aStandSEPERATS1ETM2 = (bStandSEPERATS1ETM2 * ((xQuadSEPERATS1ETM2 / minPifVAL)^0.5));
            aStandSEPERATS1ETM3 = (bStandSEPERATS1ETM3 * ((xQuadSEPERATS1ETM3 / minPifVAL)^0.5));
            aStandSEPERATS1ETM4 = (bStandSEPERATS1ETM4 * ((xQuadSEPERATS1ETM4 / minPifVAL)^0.5));
            aStandSEPERATS1ETM5 = (bStandSEPERATS1ETM5 * ((xQuadSEPERATS1ETM5 / minPifVAL)^0.5));
            aStandSEPERATS1ETM7 = (bStandSEPERATS1ETM7 * ((xQuadSEPERATS1ETM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM1, bSEPERATS1ETM1, rSEPERATS1ETM1, rQuadSEPERATS1ETM1, aStandSEPERATS1ETM1, bStandSEPERATS1ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM2, bSEPERATS1ETM2, rSEPERATS1ETM2, rQuadSEPERATS1ETM2, aStandSEPERATS1ETM2, bStandSEPERATS1ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM3, bSEPERATS1ETM3, rSEPERATS1ETM3, rQuadSEPERATS1ETM3, aStandSEPERATS1ETM3, bStandSEPERATS1ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM4, bSEPERATS1ETM4, rSEPERATS1ETM4, rQuadSEPERATS1ETM4, aStandSEPERATS1ETM4, bStandSEPERATS1ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM5, bSEPERATS1ETM5, rSEPERATS1ETM5, rQuadSEPERATS1ETM5, aStandSEPERATS1ETM5, bStandSEPERATS1ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS1ETM7, bSEPERATS1ETM7, rSEPERATS1ETM7, rQuadSEPERATS1ETM7, aStandSEPERATS1ETM7, bStandSEPERATS1ETM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS1slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS1slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS1slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS1slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS1slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS1slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS1slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT1ETM1[i,j] = (aSEPERATS1ETM1 + (bSEPERATS1ETM1 * REFS1ETM1[i,j]));
                    OUT1ETM2[i,j] = (aSEPERATS1ETM2 + (bSEPERATS1ETM2 * REFS1ETM2[i,j]));
                    OUT1ETM3[i,j] = (aSEPERATS1ETM3 + (bSEPERATS1ETM3 * REFS1ETM3[i,j]));
                    OUT1ETM4[i,j] = (aSEPERATS1ETM4 + (bSEPERATS1ETM4 * REFS1ETM4[i,j]));
                    OUT1ETM5[i,j] = (aSEPERATS1ETM5 + (bSEPERATS1ETM5 * REFS1ETM5[i,j]));
                    OUT1ETM7[i,j] = (aSEPERATS1ETM7 + (bSEPERATS1ETM7 * REFS1ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1ETM1);
        	CreatePyramid(OUT1ETM2);
        	CreatePyramid(OUT1ETM3);
        	CreatePyramid(OUT1ETM4);
        	CreatePyramid(OUT1ETM5);
        	CreatePyramid(OUT1ETM7);
        
        	CreateHistogram(OUT1ETM1);
        	CreateHistogram(OUT1ETM2);
        	CreateHistogram(OUT1ETM3);
        	CreateHistogram(OUT1ETM4);
        	CreateHistogram(OUT1ETM5);
        	CreateHistogram(OUT1ETM7);
            CloseRaster(REFS1ETM1);
            CloseRaster(REFS1ETM2);
            CloseRaster(REFS1ETM3);
            CloseRaster(REFS1ETM4);
            CloseRaster(REFS1ETM5);
            CloseRaster(REFS1ETM7);
    
            CloseRaster(OUT1ETM1);
            CloseRaster(OUT1ETM2);
            CloseRaster(OUT1ETM3);
            CloseRaster(OUT1ETM4);
            CloseRaster(OUT1ETM5);
            CloseRaster(OUT1ETM7);
            
        	printf("Scene 1 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors1 == 6 )
            {
            numeric xAritSEPERATS1TM1, xAritSEPERATS1TM2, xAritSEPERATS1TM3, xAritSEPERATS1TM4, xAritSEPERATS1TM5, xAritSEPERATS1TM7;
            numeric yAritSEPERATS1TM1, yAritSEPERATS1TM2, yAritSEPERATS1TM3, yAritSEPERATS1TM4, yAritSEPERATS1TM5, yAritSEPERATS1TM7;
    
            numeric aSEPERATS1TM1, aSEPERATS1TM2, aSEPERATS1TM3, aSEPERATS1TM4, aSEPERATS1TM5, aSEPERATS1TM7;
            numeric bSEPERATS1TM1, bSEPERATS1TM2, bSEPERATS1TM3, bSEPERATS1TM4, bSEPERATS1TM5, bSEPERATS1TM7;
            numeric rSEPERATS1TM1, rSEPERATS1TM2, rSEPERATS1TM3, rSEPERATS1TM4, rSEPERATS1TM5, rSEPERATS1TM7;
            numeric rQuadSEPERATS1TM1, rQuadSEPERATS1TM2, rQuadSEPERATS1TM3, rQuadSEPERATS1TM4, rQuadSEPERATS1TM5, rQuadSEPERATS1TM7;
            numeric syxSEPERATS1TM1, syxSEPERATS1TM2, syxSEPERATS1TM3, syxSEPERATS1TM4, syxSEPERATS1TM5, syxSEPERATS1TM7;
            numeric bStandSEPERATS1TM1, bStandSEPERATS1TM2, bStandSEPERATS1TM3, bStandSEPERATS1TM4, bStandSEPERATS1TM5, bStandSEPERATS1TM7;
            numeric aStandSEPERATS1TM1, aStandSEPERATS1TM2, aStandSEPERATS1TM3, aStandSEPERATS1TM4, aStandSEPERATS1TM5, aStandSEPERATS1TM7;
    
            numeric xSEPERATS1TM1 = 0;
            numeric xSEPERATS1TM2 = 0;
            numeric xSEPERATS1TM3 = 0;
            numeric xSEPERATS1TM4 = 0;
            numeric xSEPERATS1TM5 = 0;
            numeric xSEPERATS1TM7 = 0;
    
            numeric xQuadSEPERATS1TM1 = 0;
            numeric xQuadSEPERATS1TM2 = 0;
            numeric xQuadSEPERATS1TM3 = 0;
            numeric xQuadSEPERATS1TM4 = 0;
            numeric xQuadSEPERATS1TM5 = 0;
            numeric xQuadSEPERATS1TM7 = 0;
    
            numeric ySEPERATS1TM1 = 0;
            numeric ySEPERATS1TM2 = 0;
            numeric ySEPERATS1TM3 = 0;
            numeric ySEPERATS1TM4 = 0;
            numeric ySEPERATS1TM5 = 0;
            numeric ySEPERATS1TM7 = 0;
    
            numeric yQuadSEPERATS1TM1 = 0;
            numeric yQuadSEPERATS1TM2 = 0;
            numeric yQuadSEPERATS1TM3 = 0;
            numeric yQuadSEPERATS1TM4 = 0;
            numeric yQuadSEPERATS1TM5 = 0;
            numeric yQuadSEPERATS1TM7 = 0;
    
            numeric xySEPERATS1TM1 = 0;
            numeric xySEPERATS1TM2 = 0;
            numeric xySEPERATS1TM3 = 0;
            numeric xySEPERATS1TM4 = 0;
            numeric xySEPERATS1TM5 = 0;
            numeric xySEPERATS1TM7 = 0;
    
            numeric xxAritQuadSEPERATS1TM1 = 0;
            numeric xxAritQuadSEPERATS1TM2 = 0;
            numeric xxAritQuadSEPERATS1TM3 = 0;
            numeric xxAritQuadSEPERATS1TM4 = 0;
            numeric xxAritQuadSEPERATS1TM5 = 0;
            numeric xxAritQuadSEPERATS1TM7 = 0;
    
            numeric yyAritQuadSEPERATS1TM1 = 0;
            numeric yyAritQuadSEPERATS1TM2 = 0;
            numeric yyAritQuadSEPERATS1TM3 = 0;
            numeric yyAritQuadSEPERATS1TM4 = 0;
            numeric yyAritQuadSEPERATS1TM5 = 0;
            numeric yyAritQuadSEPERATS1TM7 = 0;
    
            numeric qXYSEPERATS1TM1 = 0;
            numeric qXYSEPERATS1TM2 = 0;
            numeric qXYSEPERATS1TM3 = 0;
            numeric qXYSEPERATS1TM4 = 0;
            numeric qXYSEPERATS1TM5 = 0;
            numeric qXYSEPERATS1TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1TM1 = xSEPERATS1TM1 + pifSEPERATS3S1TM1arrayRAND[m];
                xSEPERATS1TM2 = xSEPERATS1TM2 + pifSEPERATS3S1TM2arrayRAND[m];
                xSEPERATS1TM3 = xSEPERATS1TM3 + pifSEPERATS3S1TM3arrayRAND[m];
                xSEPERATS1TM4 = xSEPERATS1TM4 + pifSEPERATS3S1TM4arrayRAND[m];
                xSEPERATS1TM5 = xSEPERATS1TM5 + pifSEPERATS3S1TM5arrayRAND[m];
                xSEPERATS1TM7 = xSEPERATS1TM7 + pifSEPERATS3S1TM7arrayRAND[m];
    
                xQuadSEPERATS1TM1 = (xQuadSEPERATS1TM1 + (pifSEPERATS3S1TM1arrayRAND[m]^2));
                xQuadSEPERATS1TM2 = (xQuadSEPERATS1TM2 + (pifSEPERATS3S1TM2arrayRAND[m]^2));
                xQuadSEPERATS1TM3 = (xQuadSEPERATS1TM3 + (pifSEPERATS3S1TM3arrayRAND[m]^2));
                xQuadSEPERATS1TM4 = (xQuadSEPERATS1TM4 + (pifSEPERATS3S1TM4arrayRAND[m]^2));
                xQuadSEPERATS1TM5 = (xQuadSEPERATS1TM5 + (pifSEPERATS3S1TM5arrayRAND[m]^2));
                xQuadSEPERATS1TM7 = (xQuadSEPERATS1TM7 + (pifSEPERATS3S1TM7arrayRAND[m]^2));
    
                ySEPERATS1TM1 = ySEPERATS1TM1 + pifSEPERATS1slaveTM1arrayRAND[m];
                ySEPERATS1TM2 = ySEPERATS1TM2 + pifSEPERATS1slaveTM2arrayRAND[m];
                ySEPERATS1TM3 = ySEPERATS1TM3 + pifSEPERATS1slaveTM3arrayRAND[m];
                ySEPERATS1TM4 = ySEPERATS1TM4 + pifSEPERATS1slaveTM4arrayRAND[m];
                ySEPERATS1TM5 = ySEPERATS1TM5 + pifSEPERATS1slaveTM5arrayRAND[m];
                ySEPERATS1TM7 = ySEPERATS1TM7 + pifSEPERATS1slaveTM7arrayRAND[m];
                
                yQuadSEPERATS1TM1 = (yQuadSEPERATS1TM1 + (pifSEPERATS1slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS1TM2 = (yQuadSEPERATS1TM2 + (pifSEPERATS1slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS1TM3 = (yQuadSEPERATS1TM3 + (pifSEPERATS1slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS1TM4 = (yQuadSEPERATS1TM4 + (pifSEPERATS1slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS1TM5 = (yQuadSEPERATS1TM5 + (pifSEPERATS1slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS1TM7 = (yQuadSEPERATS1TM7 + (pifSEPERATS1slaveTM7arrayRAND[m]^2));
    
                xySEPERATS1TM1 = (xySEPERATS1TM1 + (pifSEPERATS3S1TM1arrayRAND[m] * pifSEPERATS1slaveTM1arrayRAND[m]));
                xySEPERATS1TM2 = (xySEPERATS1TM2 + (pifSEPERATS3S1TM2arrayRAND[m] * pifSEPERATS1slaveTM2arrayRAND[m]));
                xySEPERATS1TM3 = (xySEPERATS1TM3 + (pifSEPERATS3S1TM3arrayRAND[m] * pifSEPERATS1slaveTM3arrayRAND[m]));
                xySEPERATS1TM4 = (xySEPERATS1TM4 + (pifSEPERATS3S1TM4arrayRAND[m] * pifSEPERATS1slaveTM4arrayRAND[m]));
                xySEPERATS1TM5 = (xySEPERATS1TM5 + (pifSEPERATS3S1TM5arrayRAND[m] * pifSEPERATS1slaveTM5arrayRAND[m]));
                xySEPERATS1TM7 = (xySEPERATS1TM7 + (pifSEPERATS3S1TM7arrayRAND[m] * pifSEPERATS1slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS1TM1 = xSEPERATS1TM1 / minPifVAL;
            xAritSEPERATS1TM2 = xSEPERATS1TM2 / minPifVAL;
            xAritSEPERATS1TM3 = xSEPERATS1TM3 / minPifVAL;
            xAritSEPERATS1TM4 = xSEPERATS1TM4 / minPifVAL;
            xAritSEPERATS1TM5 = xSEPERATS1TM5 / minPifVAL;
            xAritSEPERATS1TM7 = xSEPERATS1TM7 / minPifVAL;
    
            yAritSEPERATS1TM1 = ySEPERATS1TM1 / minPifVAL;
            yAritSEPERATS1TM2 = ySEPERATS1TM2 / minPifVAL;
            yAritSEPERATS1TM3 = ySEPERATS1TM3 / minPifVAL;
            yAritSEPERATS1TM4 = ySEPERATS1TM4 / minPifVAL;
            yAritSEPERATS1TM5 = ySEPERATS1TM5 / minPifVAL;
            yAritSEPERATS1TM7 = ySEPERATS1TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1TM1 = (xxAritQuadSEPERATS1TM1 + ((pifSEPERATS3S1TM1arrayRAND[n] - xAritSEPERATS1TM1)^2));
                xxAritQuadSEPERATS1TM2 = (xxAritQuadSEPERATS1TM2 + ((pifSEPERATS3S1TM2arrayRAND[n] - xAritSEPERATS1TM2)^2));
                xxAritQuadSEPERATS1TM3 = (xxAritQuadSEPERATS1TM3 + ((pifSEPERATS3S1TM3arrayRAND[n] - xAritSEPERATS1TM3)^2));
                xxAritQuadSEPERATS1TM4 = (xxAritQuadSEPERATS1TM4 + ((pifSEPERATS3S1TM4arrayRAND[n] - xAritSEPERATS1TM4)^2));
                xxAritQuadSEPERATS1TM5 = (xxAritQuadSEPERATS1TM5 + ((pifSEPERATS3S1TM5arrayRAND[n] - xAritSEPERATS1TM5)^2));
                xxAritQuadSEPERATS1TM7 = (xxAritQuadSEPERATS1TM7 + ((pifSEPERATS3S1TM7arrayRAND[n] - xAritSEPERATS1TM7)^2));
    
                yyAritQuadSEPERATS1TM1 = (yyAritQuadSEPERATS1TM1 + ((pifSEPERATS1slaveTM1arrayRAND[n] - yAritSEPERATS1TM1)^2));
                yyAritQuadSEPERATS1TM2 = (yyAritQuadSEPERATS1TM2 + ((pifSEPERATS1slaveTM2arrayRAND[n] - yAritSEPERATS1TM2)^2));
                yyAritQuadSEPERATS1TM3 = (yyAritQuadSEPERATS1TM3 + ((pifSEPERATS1slaveTM3arrayRAND[n] - yAritSEPERATS1TM3)^2));
                yyAritQuadSEPERATS1TM4 = (yyAritQuadSEPERATS1TM4 + ((pifSEPERATS1slaveTM4arrayRAND[n] - yAritSEPERATS1TM4)^2));
                yyAritQuadSEPERATS1TM5 = (yyAritQuadSEPERATS1TM5 + ((pifSEPERATS1slaveTM5arrayRAND[n] - yAritSEPERATS1TM5)^2));
                yyAritQuadSEPERATS1TM7 = (yyAritQuadSEPERATS1TM7 + ((pifSEPERATS1slaveTM7arrayRAND[n] - yAritSEPERATS1TM7)^2));
    
                qXYSEPERATS1TM1 = (qXYSEPERATS1TM1 + ((pifSEPERATS3S1TM1arrayRAND[n] - xAritSEPERATS1TM1) * (pifSEPERATS1slaveTM1arrayRAND[n] - yAritSEPERATS1TM1)));
                qXYSEPERATS1TM2 = (qXYSEPERATS1TM2 + ((pifSEPERATS3S1TM2arrayRAND[n] - xAritSEPERATS1TM2) * (pifSEPERATS1slaveTM2arrayRAND[n] - yAritSEPERATS1TM2)));
                qXYSEPERATS1TM3 = (qXYSEPERATS1TM3 + ((pifSEPERATS3S1TM3arrayRAND[n] - xAritSEPERATS1TM3) * (pifSEPERATS1slaveTM3arrayRAND[n] - yAritSEPERATS1TM3)));
                qXYSEPERATS1TM4 = (qXYSEPERATS1TM4 + ((pifSEPERATS3S1TM4arrayRAND[n] - xAritSEPERATS1TM4) * (pifSEPERATS1slaveTM4arrayRAND[n] - yAritSEPERATS1TM4)));
                qXYSEPERATS1TM5 = (qXYSEPERATS1TM5 + ((pifSEPERATS3S1TM5arrayRAND[n] - xAritSEPERATS1TM5) * (pifSEPERATS1slaveTM5arrayRAND[n] - yAritSEPERATS1TM5)));
                qXYSEPERATS1TM7 = (qXYSEPERATS1TM7 + ((pifSEPERATS3S1TM7arrayRAND[n] - xAritSEPERATS1TM7) * (pifSEPERATS1slaveTM7arrayRAND[n] - yAritSEPERATS1TM7)));
            }
        
            aSEPERATS1TM1 = (((xQuadSEPERATS1TM1 * ySEPERATS1TM1) - (xSEPERATS1TM1 * xySEPERATS1TM1)) / ((minPifVAL * xQuadSEPERATS1TM1) - (xSEPERATS1TM1^2)));
            aSEPERATS1TM2 = (((xQuadSEPERATS1TM2 * ySEPERATS1TM2) - (xSEPERATS1TM2 * xySEPERATS1TM2)) / ((minPifVAL * xQuadSEPERATS1TM2) - (xSEPERATS1TM2^2)));
            aSEPERATS1TM3 = (((xQuadSEPERATS1TM3 * ySEPERATS1TM3) - (xSEPERATS1TM3 * xySEPERATS1TM3)) / ((minPifVAL * xQuadSEPERATS1TM3) - (xSEPERATS1TM3^2)));
            aSEPERATS1TM4 = (((xQuadSEPERATS1TM4 * ySEPERATS1TM4) - (xSEPERATS1TM4 * xySEPERATS1TM4)) / ((minPifVAL * xQuadSEPERATS1TM4) - (xSEPERATS1TM4^2)));
            aSEPERATS1TM5 = (((xQuadSEPERATS1TM5 * ySEPERATS1TM5) - (xSEPERATS1TM5 * xySEPERATS1TM5)) / ((minPifVAL * xQuadSEPERATS1TM5) - (xSEPERATS1TM5^2)));
            aSEPERATS1TM7 = (((xQuadSEPERATS1TM7 * ySEPERATS1TM7) - (xSEPERATS1TM7 * xySEPERATS1TM7)) / ((minPifVAL * xQuadSEPERATS1TM7) - (xSEPERATS1TM7^2)));
            
            bSEPERATS1TM1 = qXYSEPERATS1TM1 / xxAritQuadSEPERATS1TM1;
            bSEPERATS1TM2 = qXYSEPERATS1TM2 / xxAritQuadSEPERATS1TM2;
            bSEPERATS1TM3 = qXYSEPERATS1TM3 / xxAritQuadSEPERATS1TM3;
            bSEPERATS1TM4 = qXYSEPERATS1TM4 / xxAritQuadSEPERATS1TM4;
            bSEPERATS1TM5 = qXYSEPERATS1TM5 / xxAritQuadSEPERATS1TM5;
            bSEPERATS1TM7 = qXYSEPERATS1TM7 / xxAritQuadSEPERATS1TM7;
    
            rSEPERATS1TM1 = (qXYSEPERATS1TM1 / ((xxAritQuadSEPERATS1TM1 * yyAritQuadSEPERATS1TM1)^0.5));
            rSEPERATS1TM2 = (qXYSEPERATS1TM2 / ((xxAritQuadSEPERATS1TM2 * yyAritQuadSEPERATS1TM2)^0.5));
            rSEPERATS1TM3 = (qXYSEPERATS1TM3 / ((xxAritQuadSEPERATS1TM3 * yyAritQuadSEPERATS1TM3)^0.5));
            rSEPERATS1TM4 = (qXYSEPERATS1TM4 / ((xxAritQuadSEPERATS1TM4 * yyAritQuadSEPERATS1TM4)^0.5));
            rSEPERATS1TM5 = (qXYSEPERATS1TM5 / ((xxAritQuadSEPERATS1TM5 * yyAritQuadSEPERATS1TM5)^0.5));
            rSEPERATS1TM7 = (qXYSEPERATS1TM7 / ((xxAritQuadSEPERATS1TM7 * yyAritQuadSEPERATS1TM7)^0.5));
    
            rQuadSEPERATS1TM1 = ((rSEPERATS1TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1TM2 = ((rSEPERATS1TM2^2) * 100);
            rQuadSEPERATS1TM3 = ((rSEPERATS1TM3^2) * 100);
            rQuadSEPERATS1TM4 = ((rSEPERATS1TM4^2) * 100);
            rQuadSEPERATS1TM5 = ((rSEPERATS1TM5^2) * 100);
            rQuadSEPERATS1TM7 = ((rSEPERATS1TM7^2) * 100);
        
            syxSEPERATS1TM1 = (((yyAritQuadSEPERATS1TM1 - ((qXYSEPERATS1TM1^2) / xxAritQuadSEPERATS1TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM2 = (((yyAritQuadSEPERATS1TM2 - ((qXYSEPERATS1TM2^2) / xxAritQuadSEPERATS1TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM3 = (((yyAritQuadSEPERATS1TM3 - ((qXYSEPERATS1TM3^2) / xxAritQuadSEPERATS1TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM4 = (((yyAritQuadSEPERATS1TM4 - ((qXYSEPERATS1TM4^2) / xxAritQuadSEPERATS1TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM5 = (((yyAritQuadSEPERATS1TM5 - ((qXYSEPERATS1TM5^2) / xxAritQuadSEPERATS1TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM7 = (((yyAritQuadSEPERATS1TM7 - ((qXYSEPERATS1TM7^2) / xxAritQuadSEPERATS1TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1TM1 = (((syxSEPERATS1TM1^2) / xxAritQuadSEPERATS1TM1)^0.5);
            bStandSEPERATS1TM2 = (((syxSEPERATS1TM2^2) / xxAritQuadSEPERATS1TM2)^0.5);
            bStandSEPERATS1TM3 = (((syxSEPERATS1TM3^2) / xxAritQuadSEPERATS1TM3)^0.5);
            bStandSEPERATS1TM4 = (((syxSEPERATS1TM4^2) / xxAritQuadSEPERATS1TM4)^0.5);
            bStandSEPERATS1TM5 = (((syxSEPERATS1TM5^2) / xxAritQuadSEPERATS1TM5)^0.5);
            bStandSEPERATS1TM7 = (((syxSEPERATS1TM7^2) / xxAritQuadSEPERATS1TM7)^0.5);
    
            aStandSEPERATS1TM1 = (bStandSEPERATS1TM1 * ((xQuadSEPERATS1TM1 / minPifVAL)^0.5));
            aStandSEPERATS1TM2 = (bStandSEPERATS1TM2 * ((xQuadSEPERATS1TM2 / minPifVAL)^0.5));
            aStandSEPERATS1TM3 = (bStandSEPERATS1TM3 * ((xQuadSEPERATS1TM3 / minPifVAL)^0.5));
            aStandSEPERATS1TM4 = (bStandSEPERATS1TM4 * ((xQuadSEPERATS1TM4 / minPifVAL)^0.5));
            aStandSEPERATS1TM5 = (bStandSEPERATS1TM5 * ((xQuadSEPERATS1TM5 / minPifVAL)^0.5));
            aStandSEPERATS1TM7 = (bStandSEPERATS1TM7 * ((xQuadSEPERATS1TM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM1, bSEPERATS1TM1, rSEPERATS1TM1, rQuadSEPERATS1TM1, aStandSEPERATS1TM1, bStandSEPERATS1TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM2, bSEPERATS1TM2, rSEPERATS1TM2, rQuadSEPERATS1TM2, aStandSEPERATS1TM2, bStandSEPERATS1TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM3, bSEPERATS1TM3, rSEPERATS1TM3, rQuadSEPERATS1TM3, aStandSEPERATS1TM3, bStandSEPERATS1TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM4, bSEPERATS1TM4, rSEPERATS1TM4, rQuadSEPERATS1TM4, aStandSEPERATS1TM4, bStandSEPERATS1TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM5, bSEPERATS1TM5, rSEPERATS1TM5, rQuadSEPERATS1TM5, aStandSEPERATS1TM5, bStandSEPERATS1TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS1TM7, bSEPERATS1TM7, rSEPERATS1TM7, rQuadSEPERATS1TM7, aStandSEPERATS1TM7, bStandSEPERATS1TM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS1slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS1slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS1slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS1slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS1slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS1slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS1slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT1TM1[i,j] = (aSEPERATS1TM1 + (bSEPERATS1TM1 * REFS1TM1[i,j]));
                    OUT1TM2[i,j] = (aSEPERATS1TM2 + (bSEPERATS1TM2 * REFS1TM2[i,j]));
                    OUT1TM3[i,j] = (aSEPERATS1TM3 + (bSEPERATS1TM3 * REFS1TM3[i,j]));
                    OUT1TM4[i,j] = (aSEPERATS1TM4 + (bSEPERATS1TM4 * REFS1TM4[i,j]));
                    OUT1TM5[i,j] = (aSEPERATS1TM5 + (bSEPERATS1TM5 * REFS1TM5[i,j]));
                    OUT1TM7[i,j] = (aSEPERATS1TM7 + (bSEPERATS1TM7 * REFS1TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1TM1);
        	CreatePyramid(OUT1TM2);
        	CreatePyramid(OUT1TM3);
        	CreatePyramid(OUT1TM4);
        	CreatePyramid(OUT1TM5);
        	CreatePyramid(OUT1TM7);
        
        	CreateHistogram(OUT1TM1);
        	CreateHistogram(OUT1TM2);
        	CreateHistogram(OUT1TM3);
        	CreateHistogram(OUT1TM4);
        	CreateHistogram(OUT1TM5);
        	CreateHistogram(OUT1TM7);
            CloseRaster(REFS1TM1);
            CloseRaster(REFS1TM2);
            CloseRaster(REFS1TM3);
            CloseRaster(REFS1TM4);
            CloseRaster(REFS1TM5);
            CloseRaster(REFS1TM7);
    
            CloseRaster(OUT1TM1);
            CloseRaster(OUT1TM2);
            CloseRaster(OUT1TM3);
            CloseRaster(OUT1TM4);
            CloseRaster(OUT1TM5);
            CloseRaster(OUT1TM7);
        
        	printf("Scene 1 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS1MSS1, xAritSEPERATS1MSS2, xAritSEPERATS1MSS4;
            numeric yAritSEPERATS1MSS1, yAritSEPERATS1MSS2, yAritSEPERATS1MSS4;
    
            numeric aSEPERATS1MSS1, aSEPERATS1MSS2, aSEPERATS1MSS4;
            numeric bSEPERATS1MSS1, bSEPERATS1MSS2, bSEPERATS1MSS4;
            numeric rSEPERATS1MSS1, rSEPERATS1MSS2, rSEPERATS1MSS4;
            numeric rQuadSEPERATS1MSS1, rQuadSEPERATS1MSS2, rQuadSEPERATS1MSS4;
            numeric syxSEPERATS1MSS1, syxSEPERATS1MSS2, syxSEPERATS1MSS4;
            numeric bStandSEPERATS1MSS1, bStandSEPERATS1MSS2, bStandSEPERATS1MSS4;
            numeric aStandSEPERATS1MSS1, aStandSEPERATS1MSS2, aStandSEPERATS1MSS4;
    
            numeric xSEPERATS1MSS1 = 0;
            numeric xSEPERATS1MSS2 = 0;
            numeric xSEPERATS1MSS4 = 0;
    
            numeric xQuadSEPERATS1MSS1 = 0;
            numeric xQuadSEPERATS1MSS2 = 0;
            numeric xQuadSEPERATS1MSS4 = 0;
    
            numeric ySEPERATS1MSS1 = 0;
            numeric ySEPERATS1MSS2 = 0;
            numeric ySEPERATS1MSS4 = 0;
    
            numeric yQuadSEPERATS1MSS1 = 0;
            numeric yQuadSEPERATS1MSS2 = 0;
            numeric yQuadSEPERATS1MSS4 = 0;
    
            numeric xySEPERATS1MSS1 = 0;
            numeric xySEPERATS1MSS2 = 0;
            numeric xySEPERATS1MSS4 = 0;
    
            numeric xxAritQuadSEPERATS1MSS1 = 0;
            numeric xxAritQuadSEPERATS1MSS2 = 0;
            numeric xxAritQuadSEPERATS1MSS4 = 0;
    
            numeric yyAritQuadSEPERATS1MSS1 = 0;
            numeric yyAritQuadSEPERATS1MSS2 = 0;
            numeric yyAritQuadSEPERATS1MSS4 = 0;
    
            numeric qXYSEPERATS1MSS1 = 0;
            numeric qXYSEPERATS1MSS2 = 0;
            numeric qXYSEPERATS1MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1MSS1 = xSEPERATS1MSS1 + pifSEPERATS3S1TM2arrayRAND[m];
                xSEPERATS1MSS2 = xSEPERATS1MSS2 + pifSEPERATS3S1TM3arrayRAND[m];
                xSEPERATS1MSS4 = xSEPERATS1MSS4 + pifSEPERATS3S1TM4arrayRAND[m];
    
                xQuadSEPERATS1MSS1 = (xQuadSEPERATS1MSS1 + (pifSEPERATS3S1TM2arrayRAND[m]^2));
                xQuadSEPERATS1MSS2 = (xQuadSEPERATS1MSS2 + (pifSEPERATS3S1TM3arrayRAND[m]^2));
                xQuadSEPERATS1MSS4 = (xQuadSEPERATS1MSS4 + (pifSEPERATS3S1TM4arrayRAND[m]^2));
    
                ySEPERATS1MSS1 = ySEPERATS1MSS1 + pifSEPERATS1slaveMSS1arrayRAND[m];
                ySEPERATS1MSS2 = ySEPERATS1MSS2 + pifSEPERATS1slaveMSS2arrayRAND[m];
                ySEPERATS1MSS4 = ySEPERATS1MSS4 + pifSEPERATS1slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS1MSS1 = (yQuadSEPERATS1MSS1 + (pifSEPERATS1slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS1MSS2 = (yQuadSEPERATS1MSS2 + (pifSEPERATS1slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS1MSS4 = (yQuadSEPERATS1MSS4 + (pifSEPERATS1slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS1MSS1 = (xySEPERATS1MSS1 + (pifSEPERATS3S1TM2arrayRAND[m] * pifSEPERATS1slaveMSS1arrayRAND[m]));
                xySEPERATS1MSS2 = (xySEPERATS1MSS2 + (pifSEPERATS3S1TM3arrayRAND[m] * pifSEPERATS1slaveMSS2arrayRAND[m]));
                xySEPERATS1MSS4 = (xySEPERATS1MSS4 + (pifSEPERATS3S1TM4arrayRAND[m] * pifSEPERATS1slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS1MSS1 = xSEPERATS1MSS1 / minPifVAL;
            xAritSEPERATS1MSS2 = xSEPERATS1MSS2 / minPifVAL;
            xAritSEPERATS1MSS4 = xSEPERATS1MSS4 / minPifVAL;
    
            yAritSEPERATS1MSS1 = ySEPERATS1MSS1 / minPifVAL;
            yAritSEPERATS1MSS2 = ySEPERATS1MSS2 / minPifVAL;
            yAritSEPERATS1MSS4 = ySEPERATS1MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1MSS1 = (xxAritQuadSEPERATS1MSS1 + ((pifSEPERATS3S1TM2arrayRAND[n] - xAritSEPERATS1MSS1)^2));
                xxAritQuadSEPERATS1MSS2 = (xxAritQuadSEPERATS1MSS2 + ((pifSEPERATS3S1TM3arrayRAND[n] - xAritSEPERATS1MSS2)^2));
                xxAritQuadSEPERATS1MSS4 = (xxAritQuadSEPERATS1MSS4 + ((pifSEPERATS3S1TM4arrayRAND[n] - xAritSEPERATS1MSS4)^2));
    
                yyAritQuadSEPERATS1MSS1 = (yyAritQuadSEPERATS1MSS1 + ((pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)^2));
                yyAritQuadSEPERATS1MSS2 = (yyAritQuadSEPERATS1MSS2 + ((pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)^2));
                yyAritQuadSEPERATS1MSS4 = (yyAritQuadSEPERATS1MSS4 + ((pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)^2));
    
                qXYSEPERATS1MSS1 = (qXYSEPERATS1MSS1 + ((pifSEPERATS3S1TM2arrayRAND[n] - xAritSEPERATS1MSS1) * (pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)));
                qXYSEPERATS1MSS2 = (qXYSEPERATS1MSS2 + ((pifSEPERATS3S1TM3arrayRAND[n] - xAritSEPERATS1MSS2) * (pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)));
                qXYSEPERATS1MSS4 = (qXYSEPERATS1MSS4 + ((pifSEPERATS3S1TM4arrayRAND[n] - xAritSEPERATS1MSS4) * (pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)));
            }
        
            aSEPERATS1MSS1 = (((xQuadSEPERATS1MSS1 * ySEPERATS1MSS1) - (xSEPERATS1MSS1 * xySEPERATS1MSS1)) / ((minPifVAL * xQuadSEPERATS1MSS1) - (xSEPERATS1MSS1^2)));
            aSEPERATS1MSS2 = (((xQuadSEPERATS1MSS2 * ySEPERATS1MSS2) - (xSEPERATS1MSS2 * xySEPERATS1MSS2)) / ((minPifVAL * xQuadSEPERATS1MSS2) - (xSEPERATS1MSS2^2)));
            aSEPERATS1MSS4 = (((xQuadSEPERATS1MSS4 * ySEPERATS1MSS4) - (xSEPERATS1MSS4 * xySEPERATS1MSS4)) / ((minPifVAL * xQuadSEPERATS1MSS4) - (xSEPERATS1MSS4^2)));
            
            bSEPERATS1MSS1 = qXYSEPERATS1MSS1 / xxAritQuadSEPERATS1MSS1;
            bSEPERATS1MSS2 = qXYSEPERATS1MSS2 / xxAritQuadSEPERATS1MSS2;
            bSEPERATS1MSS4 = qXYSEPERATS1MSS4 / xxAritQuadSEPERATS1MSS4;
    
            rSEPERATS1MSS1 = (qXYSEPERATS1MSS1 / ((xxAritQuadSEPERATS1MSS1 * yyAritQuadSEPERATS1MSS1)^0.5));
            rSEPERATS1MSS2 = (qXYSEPERATS1MSS2 / ((xxAritQuadSEPERATS1MSS2 * yyAritQuadSEPERATS1MSS2)^0.5));
            rSEPERATS1MSS4 = (qXYSEPERATS1MSS4 / ((xxAritQuadSEPERATS1MSS4 * yyAritQuadSEPERATS1MSS4)^0.5));
    
            rQuadSEPERATS1MSS1 = ((rSEPERATS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1MSS2 = ((rSEPERATS1MSS2^2) * 100);
            rQuadSEPERATS1MSS4 = ((rSEPERATS1MSS4^2) * 100);
        
            syxSEPERATS1MSS1 = (((yyAritQuadSEPERATS1MSS1 - ((qXYSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS2 = (((yyAritQuadSEPERATS1MSS2 - ((qXYSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS4 = (((yyAritQuadSEPERATS1MSS4 - ((qXYSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1MSS1 = (((syxSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)^0.5);
            bStandSEPERATS1MSS2 = (((syxSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)^0.5);
            bStandSEPERATS1MSS4 = (((syxSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)^0.5);
    
            aStandSEPERATS1MSS1 = (bStandSEPERATS1MSS1 * ((xQuadSEPERATS1MSS1 / minPifVAL)^0.5));
            aStandSEPERATS1MSS2 = (bStandSEPERATS1MSS2 * ((xQuadSEPERATS1MSS2 / minPifVAL)^0.5));
            aStandSEPERATS1MSS4 = (bStandSEPERATS1MSS4 * ((xQuadSEPERATS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS1, bSEPERATS1MSS1, rSEPERATS1MSS1, rQuadSEPERATS1MSS1, aStandSEPERATS1MSS1, bStandSEPERATS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS2, bSEPERATS1MSS2, rSEPERATS1MSS2, rQuadSEPERATS1MSS2,aStandSEPERATS1MSS2, bStandSEPERATS1MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS4, bSEPERATS1MSS4, rSEPERATS1MSS4, rQuadSEPERATS1MSS4, aStandSEPERATS1MSS4, bStandSEPERATS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS1slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS1slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS1slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aSEPERATS1MSS1 + (bSEPERATS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aSEPERATS1MSS2 + (bSEPERATS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = REFS1MSS3[i,j];
                    OUT1MSS4[i,j] = (aSEPERATS1MSS4 + (bSEPERATS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT1MSS1);
            CreatePyramid(OUT1MSS2);
            CreatePyramid(OUT1MSS3);
            CreatePyramid(OUT1MSS4);
        
            CreateHistogram(OUT1MSS1);
            CreateHistogram(OUT1MSS2);
            CreateHistogram(OUT1MSS3);
            CreateHistogram(OUT1MSS4);
            
            CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors2 == 7 )
            {
            numeric xAritSEPERATS2ETM1, xAritSEPERATS2ETM2, xAritSEPERATS2ETM3, xAritSEPERATS2ETM4, xAritSEPERATS2ETM5, xAritSEPERATS2ETM7;
            numeric yAritSEPERATS2ETM1, yAritSEPERATS2ETM2, yAritSEPERATS2ETM3, yAritSEPERATS2ETM4, yAritSEPERATS2ETM5, yAritSEPERATS2ETM7;
    
            numeric aSEPERATS2ETM1, aSEPERATS2ETM2, aSEPERATS2ETM3, aSEPERATS2ETM4, aSEPERATS2ETM5, aSEPERATS2ETM7;
            numeric bSEPERATS2ETM1, bSEPERATS2ETM2, bSEPERATS2ETM3, bSEPERATS2ETM4, bSEPERATS2ETM5, bSEPERATS2ETM7;
            numeric rSEPERATS2ETM1, rSEPERATS2ETM2, rSEPERATS2ETM3, rSEPERATS2ETM4, rSEPERATS2ETM5, rSEPERATS2ETM7;
            numeric rQuadSEPERATS2ETM1, rQuadSEPERATS2ETM2, rQuadSEPERATS2ETM3, rQuadSEPERATS2ETM4, rQuadSEPERATS2ETM5, rQuadSEPERATS2ETM7;
            numeric syxSEPERATS2ETM1, syxSEPERATS2ETM2, syxSEPERATS2ETM3, syxSEPERATS2ETM4, syxSEPERATS2ETM5, syxSEPERATS2ETM7;
            numeric bStandSEPERATS2ETM1, bStandSEPERATS2ETM2, bStandSEPERATS2ETM3, bStandSEPERATS2ETM4, bStandSEPERATS2ETM5, bStandSEPERATS2ETM7;
            numeric aStandSEPERATS2ETM1, aStandSEPERATS2ETM2, aStandSEPERATS2ETM3, aStandSEPERATS2ETM4, aStandSEPERATS2ETM5, aStandSEPERATS2ETM7;
    
            numeric xSEPERATS2ETM1 = 0;
            numeric xSEPERATS2ETM2 = 0;
            numeric xSEPERATS2ETM3 = 0;
            numeric xSEPERATS2ETM4 = 0;
            numeric xSEPERATS2ETM5 = 0;
            numeric xSEPERATS2ETM7 = 0;
    
            numeric xQuadSEPERATS2ETM1 = 0;
            numeric xQuadSEPERATS2ETM2 = 0;
            numeric xQuadSEPERATS2ETM3 = 0;
            numeric xQuadSEPERATS2ETM4 = 0;
            numeric xQuadSEPERATS2ETM5 = 0;
            numeric xQuadSEPERATS2ETM7 = 0;
    
            numeric ySEPERATS2ETM1 = 0;
            numeric ySEPERATS2ETM2 = 0;
            numeric ySEPERATS2ETM3 = 0;
            numeric ySEPERATS2ETM4 = 0;
            numeric ySEPERATS2ETM5 = 0;
            numeric ySEPERATS2ETM7 = 0;
    
            numeric yQuadSEPERATS2ETM1 = 0;
            numeric yQuadSEPERATS2ETM2 = 0;
            numeric yQuadSEPERATS2ETM3 = 0;
            numeric yQuadSEPERATS2ETM4 = 0;
            numeric yQuadSEPERATS2ETM5 = 0;
            numeric yQuadSEPERATS2ETM7 = 0;
    
            numeric xySEPERATS2ETM1 = 0;
            numeric xySEPERATS2ETM2 = 0;
            numeric xySEPERATS2ETM3 = 0;
            numeric xySEPERATS2ETM4 = 0;
            numeric xySEPERATS2ETM5 = 0;
            numeric xySEPERATS2ETM7 = 0;
    
            numeric xxAritQuadSEPERATS2ETM1 = 0;
            numeric xxAritQuadSEPERATS2ETM2 = 0;
            numeric xxAritQuadSEPERATS2ETM3 = 0;
            numeric xxAritQuadSEPERATS2ETM4 = 0;
            numeric xxAritQuadSEPERATS2ETM5 = 0;
            numeric xxAritQuadSEPERATS2ETM7 = 0;
    
            numeric yyAritQuadSEPERATS2ETM1 = 0;
            numeric yyAritQuadSEPERATS2ETM2 = 0;
            numeric yyAritQuadSEPERATS2ETM3 = 0;
            numeric yyAritQuadSEPERATS2ETM4 = 0;
            numeric yyAritQuadSEPERATS2ETM5 = 0;
            numeric yyAritQuadSEPERATS2ETM7 = 0;
    
            numeric qXYSEPERATS2ETM1 = 0;
            numeric qXYSEPERATS2ETM2 = 0;
            numeric qXYSEPERATS2ETM3 = 0;
            numeric qXYSEPERATS2ETM4 = 0;
            numeric qXYSEPERATS2ETM5 = 0;
            numeric qXYSEPERATS2ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS2ETM1 = xSEPERATS2ETM1 + pifSEPERATS3S2TM1arrayRAND[m];
                xSEPERATS2ETM2 = xSEPERATS2ETM2 + pifSEPERATS3S2TM2arrayRAND[m];
                xSEPERATS2ETM3 = xSEPERATS2ETM3 + pifSEPERATS3S2TM3arrayRAND[m];
                xSEPERATS2ETM4 = xSEPERATS2ETM4 + pifSEPERATS3S2TM4arrayRAND[m];
                xSEPERATS2ETM5 = xSEPERATS2ETM5 + pifSEPERATS3S2TM5arrayRAND[m];
                xSEPERATS2ETM7 = xSEPERATS2ETM7 + pifSEPERATS3S2TM7arrayRAND[m];
    
                xQuadSEPERATS2ETM1 = (xQuadSEPERATS2ETM1 + (pifSEPERATS3S2TM1arrayRAND[m]^2));
                xQuadSEPERATS2ETM2 = (xQuadSEPERATS2ETM2 + (pifSEPERATS3S2TM2arrayRAND[m]^2));
                xQuadSEPERATS2ETM3 = (xQuadSEPERATS2ETM3 + (pifSEPERATS3S2TM3arrayRAND[m]^2));
                xQuadSEPERATS2ETM4 = (xQuadSEPERATS2ETM4 + (pifSEPERATS3S2TM4arrayRAND[m]^2));
                xQuadSEPERATS2ETM5 = (xQuadSEPERATS2ETM5 + (pifSEPERATS3S2TM5arrayRAND[m]^2));
                xQuadSEPERATS2ETM7 = (xQuadSEPERATS2ETM7 + (pifSEPERATS3S2TM7arrayRAND[m]^2));
    
                ySEPERATS2ETM1 = ySEPERATS2ETM1 + pifSEPERATS2slaveETM1arrayRAND[m];
                ySEPERATS2ETM2 = ySEPERATS2ETM2 + pifSEPERATS2slaveETM2arrayRAND[m];
                ySEPERATS2ETM3 = ySEPERATS2ETM3 + pifSEPERATS2slaveETM3arrayRAND[m];
                ySEPERATS2ETM4 = ySEPERATS2ETM4 + pifSEPERATS2slaveETM4arrayRAND[m];
                ySEPERATS2ETM5 = ySEPERATS2ETM5 + pifSEPERATS2slaveETM5arrayRAND[m];
                ySEPERATS2ETM7 = ySEPERATS2ETM7 + pifSEPERATS2slaveETM7arrayRAND[m];
                
                yQuadSEPERATS2ETM1 = (yQuadSEPERATS2ETM1 + (pifSEPERATS2slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS2ETM2 = (yQuadSEPERATS2ETM2 + (pifSEPERATS2slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS2ETM3 = (yQuadSEPERATS2ETM3 + (pifSEPERATS2slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS2ETM4 = (yQuadSEPERATS2ETM4 + (pifSEPERATS2slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS2ETM5 = (yQuadSEPERATS2ETM5 + (pifSEPERATS2slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS2ETM7 = (yQuadSEPERATS2ETM7 + (pifSEPERATS2slaveETM7arrayRAND[m]^2));
    
                xySEPERATS2ETM1 = (xySEPERATS2ETM1 + (pifSEPERATS3S2TM1arrayRAND[m] * pifSEPERATS2slaveETM1arrayRAND[m]));
                xySEPERATS2ETM2 = (xySEPERATS2ETM2 + (pifSEPERATS3S2TM2arrayRAND[m] * pifSEPERATS2slaveETM2arrayRAND[m]));
                xySEPERATS2ETM3 = (xySEPERATS2ETM3 + (pifSEPERATS3S2TM3arrayRAND[m] * pifSEPERATS2slaveETM3arrayRAND[m]));
                xySEPERATS2ETM4 = (xySEPERATS2ETM4 + (pifSEPERATS3S2TM4arrayRAND[m] * pifSEPERATS2slaveETM4arrayRAND[m]));
                xySEPERATS2ETM5 = (xySEPERATS2ETM5 + (pifSEPERATS3S2TM5arrayRAND[m] * pifSEPERATS2slaveETM5arrayRAND[m]));
                xySEPERATS2ETM7 = (xySEPERATS2ETM7 + (pifSEPERATS3S2TM7arrayRAND[m] * pifSEPERATS2slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS2ETM1 = xSEPERATS2ETM1 / minPifVAL;
            xAritSEPERATS2ETM2 = xSEPERATS2ETM2 / minPifVAL;
            xAritSEPERATS2ETM3 = xSEPERATS2ETM3 / minPifVAL;
            xAritSEPERATS2ETM4 = xSEPERATS2ETM4 / minPifVAL;
            xAritSEPERATS2ETM5 = xSEPERATS2ETM5 / minPifVAL;
            xAritSEPERATS2ETM7 = xSEPERATS2ETM7 / minPifVAL;
    
            yAritSEPERATS2ETM1 = ySEPERATS2ETM1 / minPifVAL;
            yAritSEPERATS2ETM2 = ySEPERATS2ETM2 / minPifVAL;
            yAritSEPERATS2ETM3 = ySEPERATS2ETM3 / minPifVAL;
            yAritSEPERATS2ETM4 = ySEPERATS2ETM4 / minPifVAL;
            yAritSEPERATS2ETM5 = ySEPERATS2ETM5 / minPifVAL;
            yAritSEPERATS2ETM7 = ySEPERATS2ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2ETM1 = (xxAritQuadSEPERATS2ETM1 + ((pifSEPERATS3S2TM1arrayRAND[n] - xAritSEPERATS2ETM1)^2));
                xxAritQuadSEPERATS2ETM2 = (xxAritQuadSEPERATS2ETM2 + ((pifSEPERATS3S2TM2arrayRAND[n] - xAritSEPERATS2ETM2)^2));
                xxAritQuadSEPERATS2ETM3 = (xxAritQuadSEPERATS2ETM3 + ((pifSEPERATS3S2TM3arrayRAND[n] - xAritSEPERATS2ETM3)^2));
                xxAritQuadSEPERATS2ETM4 = (xxAritQuadSEPERATS2ETM4 + ((pifSEPERATS3S2TM4arrayRAND[n] - xAritSEPERATS2ETM4)^2));
                xxAritQuadSEPERATS2ETM5 = (xxAritQuadSEPERATS2ETM5 + ((pifSEPERATS3S2TM5arrayRAND[n] - xAritSEPERATS2ETM5)^2));
                xxAritQuadSEPERATS2ETM7 = (xxAritQuadSEPERATS2ETM7 + ((pifSEPERATS3S2TM7arrayRAND[n] - xAritSEPERATS2ETM7)^2));
    
                yyAritQuadSEPERATS2ETM1 = (yyAritQuadSEPERATS2ETM1 + ((pifSEPERATS2slaveETM1arrayRAND[n] - yAritSEPERATS2ETM1)^2));
                yyAritQuadSEPERATS2ETM2 = (yyAritQuadSEPERATS2ETM2 + ((pifSEPERATS2slaveETM2arrayRAND[n] - yAritSEPERATS2ETM2)^2));
                yyAritQuadSEPERATS2ETM3 = (yyAritQuadSEPERATS2ETM3 + ((pifSEPERATS2slaveETM3arrayRAND[n] - yAritSEPERATS2ETM3)^2));
                yyAritQuadSEPERATS2ETM4 = (yyAritQuadSEPERATS2ETM4 + ((pifSEPERATS2slaveETM4arrayRAND[n] - yAritSEPERATS2ETM4)^2));
                yyAritQuadSEPERATS2ETM5 = (yyAritQuadSEPERATS2ETM5 + ((pifSEPERATS2slaveETM5arrayRAND[n] - yAritSEPERATS2ETM5)^2));
                yyAritQuadSEPERATS2ETM7 = (yyAritQuadSEPERATS2ETM7 + ((pifSEPERATS2slaveETM7arrayRAND[n] - yAritSEPERATS2ETM7)^2));
    
                qXYSEPERATS2ETM1 = (qXYSEPERATS2ETM1 + ((pifSEPERATS3S2TM1arrayRAND[n] - xAritSEPERATS2ETM1) * (pifSEPERATS2slaveETM1arrayRAND[n] - yAritSEPERATS2ETM1)));
                qXYSEPERATS2ETM2 = (qXYSEPERATS2ETM2 + ((pifSEPERATS3S2TM2arrayRAND[n] - xAritSEPERATS2ETM2) * (pifSEPERATS2slaveETM2arrayRAND[n] - yAritSEPERATS2ETM2)));
                qXYSEPERATS2ETM3 = (qXYSEPERATS2ETM3 + ((pifSEPERATS3S2TM3arrayRAND[n] - xAritSEPERATS2ETM3) * (pifSEPERATS2slaveETM3arrayRAND[n] - yAritSEPERATS2ETM3)));
                qXYSEPERATS2ETM4 = (qXYSEPERATS2ETM4 + ((pifSEPERATS3S2TM4arrayRAND[n] - xAritSEPERATS2ETM4) * (pifSEPERATS2slaveETM4arrayRAND[n] - yAritSEPERATS2ETM4)));
                qXYSEPERATS2ETM5 = (qXYSEPERATS2ETM5 + ((pifSEPERATS3S2TM5arrayRAND[n] - xAritSEPERATS2ETM5) * (pifSEPERATS2slaveETM5arrayRAND[n] - yAritSEPERATS2ETM5)));
                qXYSEPERATS2ETM7 = (qXYSEPERATS2ETM7 + ((pifSEPERATS3S2TM7arrayRAND[n] - xAritSEPERATS2ETM7) * (pifSEPERATS2slaveETM7arrayRAND[n] - yAritSEPERATS2ETM7)));
            }
        
            aSEPERATS2ETM1 = (((xQuadSEPERATS2ETM1 * ySEPERATS2ETM1) - (xSEPERATS2ETM1 * xySEPERATS2ETM1)) / ((minPifVAL * xQuadSEPERATS2ETM1) - (xSEPERATS2ETM1^2)));
            aSEPERATS2ETM2 = (((xQuadSEPERATS2ETM2 * ySEPERATS2ETM2) - (xSEPERATS2ETM2 * xySEPERATS2ETM2)) / ((minPifVAL * xQuadSEPERATS2ETM2) - (xSEPERATS2ETM2^2)));
            aSEPERATS2ETM3 = (((xQuadSEPERATS2ETM3 * ySEPERATS2ETM3) - (xSEPERATS2ETM3 * xySEPERATS2ETM3)) / ((minPifVAL * xQuadSEPERATS2ETM3) - (xSEPERATS2ETM3^2)));
            aSEPERATS2ETM4 = (((xQuadSEPERATS2ETM4 * ySEPERATS2ETM4) - (xSEPERATS2ETM4 * xySEPERATS2ETM4)) / ((minPifVAL * xQuadSEPERATS2ETM4) - (xSEPERATS2ETM4^2)));
            aSEPERATS2ETM5 = (((xQuadSEPERATS2ETM5 * ySEPERATS2ETM5) - (xSEPERATS2ETM5 * xySEPERATS2ETM5)) / ((minPifVAL * xQuadSEPERATS2ETM5) - (xSEPERATS2ETM5^2)));
            aSEPERATS2ETM7 = (((xQuadSEPERATS2ETM7 * ySEPERATS2ETM7) - (xSEPERATS2ETM7 * xySEPERATS2ETM7)) / ((minPifVAL * xQuadSEPERATS2ETM7) - (xSEPERATS2ETM7^2)));
            
            bSEPERATS2ETM1 = qXYSEPERATS2ETM1 / xxAritQuadSEPERATS2ETM1;
            bSEPERATS2ETM2 = qXYSEPERATS2ETM2 / xxAritQuadSEPERATS2ETM2;
            bSEPERATS2ETM3 = qXYSEPERATS2ETM3 / xxAritQuadSEPERATS2ETM3;
            bSEPERATS2ETM4 = qXYSEPERATS2ETM4 / xxAritQuadSEPERATS2ETM4;
            bSEPERATS2ETM5 = qXYSEPERATS2ETM5 / xxAritQuadSEPERATS2ETM5;
            bSEPERATS2ETM7 = qXYSEPERATS2ETM7 / xxAritQuadSEPERATS2ETM7;
    
            rSEPERATS2ETM1 = (qXYSEPERATS2ETM1 / ((xxAritQuadSEPERATS2ETM1 * yyAritQuadSEPERATS2ETM1)^0.5));
            rSEPERATS2ETM2 = (qXYSEPERATS2ETM2 / ((xxAritQuadSEPERATS2ETM2 * yyAritQuadSEPERATS2ETM2)^0.5));
            rSEPERATS2ETM3 = (qXYSEPERATS2ETM3 / ((xxAritQuadSEPERATS2ETM3 * yyAritQuadSEPERATS2ETM3)^0.5));
            rSEPERATS2ETM4 = (qXYSEPERATS2ETM4 / ((xxAritQuadSEPERATS2ETM4 * yyAritQuadSEPERATS2ETM4)^0.5));
            rSEPERATS2ETM5 = (qXYSEPERATS2ETM5 / ((xxAritQuadSEPERATS2ETM5 * yyAritQuadSEPERATS2ETM5)^0.5));
            rSEPERATS2ETM7 = (qXYSEPERATS2ETM7 / ((xxAritQuadSEPERATS2ETM7 * yyAritQuadSEPERATS2ETM7)^0.5));
    
            rQuadSEPERATS2ETM1 = ((rSEPERATS2ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2ETM2 = ((rSEPERATS2ETM2^2) * 100);
            rQuadSEPERATS2ETM3 = ((rSEPERATS2ETM3^2) * 100);
            rQuadSEPERATS2ETM4 = ((rSEPERATS2ETM4^2) * 100);
            rQuadSEPERATS2ETM5 = ((rSEPERATS2ETM5^2) * 100);
            rQuadSEPERATS2ETM7 = ((rSEPERATS2ETM7^2) * 100);
        
            syxSEPERATS2ETM1 = (((yyAritQuadSEPERATS2ETM1 - ((qXYSEPERATS2ETM1^2) / xxAritQuadSEPERATS2ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM2 = (((yyAritQuadSEPERATS2ETM2 - ((qXYSEPERATS2ETM2^2) / xxAritQuadSEPERATS2ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM3 = (((yyAritQuadSEPERATS2ETM3 - ((qXYSEPERATS2ETM3^2) / xxAritQuadSEPERATS2ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM4 = (((yyAritQuadSEPERATS2ETM4 - ((qXYSEPERATS2ETM4^2) / xxAritQuadSEPERATS2ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM5 = (((yyAritQuadSEPERATS2ETM5 - ((qXYSEPERATS2ETM5^2) / xxAritQuadSEPERATS2ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM7 = (((yyAritQuadSEPERATS2ETM7 - ((qXYSEPERATS2ETM7^2) / xxAritQuadSEPERATS2ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2ETM1 = (((syxSEPERATS2ETM1^2) / xxAritQuadSEPERATS2ETM1)^0.5);
            bStandSEPERATS2ETM2 = (((syxSEPERATS2ETM2^2) / xxAritQuadSEPERATS2ETM2)^0.5);
            bStandSEPERATS2ETM3 = (((syxSEPERATS2ETM3^2) / xxAritQuadSEPERATS2ETM3)^0.5);
            bStandSEPERATS2ETM4 = (((syxSEPERATS2ETM4^2) / xxAritQuadSEPERATS2ETM4)^0.5);
            bStandSEPERATS2ETM5 = (((syxSEPERATS2ETM5^2) / xxAritQuadSEPERATS2ETM5)^0.5);
            bStandSEPERATS2ETM7 = (((syxSEPERATS2ETM7^2) / xxAritQuadSEPERATS2ETM7)^0.5);
    
            aStandSEPERATS2ETM1 = (bStandSEPERATS2ETM1 * ((xQuadSEPERATS2ETM1 / minPifVAL)^0.5));
            aStandSEPERATS2ETM2 = (bStandSEPERATS2ETM2 * ((xQuadSEPERATS2ETM2 / minPifVAL)^0.5));
            aStandSEPERATS2ETM3 = (bStandSEPERATS2ETM3 * ((xQuadSEPERATS2ETM3 / minPifVAL)^0.5));
            aStandSEPERATS2ETM4 = (bStandSEPERATS2ETM4 * ((xQuadSEPERATS2ETM4 / minPifVAL)^0.5));
            aStandSEPERATS2ETM5 = (bStandSEPERATS2ETM5 * ((xQuadSEPERATS2ETM5 / minPifVAL)^0.5));
            aStandSEPERATS2ETM7 = (bStandSEPERATS2ETM7 * ((xQuadSEPERATS2ETM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM1, bSEPERATS2ETM1, rSEPERATS2ETM1, rQuadSEPERATS2ETM1, aStandSEPERATS2ETM1, bStandSEPERATS2ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM2, bSEPERATS2ETM2, rSEPERATS2ETM2, rQuadSEPERATS2ETM2, aStandSEPERATS2ETM2, bStandSEPERATS2ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM3, bSEPERATS2ETM3, rSEPERATS2ETM3, rQuadSEPERATS2ETM3, aStandSEPERATS2ETM3, bStandSEPERATS2ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM4, bSEPERATS2ETM4, rSEPERATS2ETM4, rQuadSEPERATS2ETM4, aStandSEPERATS2ETM4, bStandSEPERATS2ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM5, bSEPERATS2ETM5, rSEPERATS2ETM5, rQuadSEPERATS2ETM5, aStandSEPERATS2ETM5, bStandSEPERATS2ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS2ETM7, bSEPERATS2ETM7, rSEPERATS2ETM7, rQuadSEPERATS2ETM7, aStandSEPERATS2ETM7, bStandSEPERATS2ETM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS2slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS2slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS2slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS2slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS2slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS2slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS2slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT2ETM1[i,j] = (aSEPERATS2ETM1 + (bSEPERATS2ETM1 * REFS2ETM1[i,j]));
                    OUT2ETM2[i,j] = (aSEPERATS2ETM2 + (bSEPERATS2ETM2 * REFS2ETM2[i,j]));
                    OUT2ETM3[i,j] = (aSEPERATS2ETM3 + (bSEPERATS2ETM3 * REFS2ETM3[i,j]));
                    OUT2ETM4[i,j] = (aSEPERATS2ETM4 + (bSEPERATS2ETM4 * REFS2ETM4[i,j]));
                    OUT2ETM5[i,j] = (aSEPERATS2ETM5 + (bSEPERATS2ETM5 * REFS2ETM5[i,j]));
                    OUT2ETM7[i,j] = (aSEPERATS2ETM7 + (bSEPERATS2ETM7 * REFS2ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2ETM1);
        	CreatePyramid(OUT2ETM2);
        	CreatePyramid(OUT2ETM3);
        	CreatePyramid(OUT2ETM4);
        	CreatePyramid(OUT2ETM5);
        	CreatePyramid(OUT2ETM7);
        
        	CreateHistogram(OUT2ETM1);
        	CreateHistogram(OUT2ETM2);
        	CreateHistogram(OUT2ETM3);
        	CreateHistogram(OUT2ETM4);
        	CreateHistogram(OUT2ETM5);
        	CreateHistogram(OUT2ETM7);
            CloseRaster(REFS2ETM1);
            CloseRaster(REFS2ETM2);
            CloseRaster(REFS2ETM3);
            CloseRaster(REFS2ETM4);
            CloseRaster(REFS2ETM5);
            CloseRaster(REFS2ETM7);
    
            CloseRaster(OUT2ETM1);
            CloseRaster(OUT2ETM2);
            CloseRaster(OUT2ETM3);
            CloseRaster(OUT2ETM4);
            CloseRaster(OUT2ETM5);
            CloseRaster(OUT2ETM7);
            
        	printf("Scene 2 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors2 == 6 )
            {
            numeric xAritSEPERATS2TM1, xAritSEPERATS2TM2, xAritSEPERATS2TM3, xAritSEPERATS2TM4, xAritSEPERATS2TM5, xAritSEPERATS2TM7;
            numeric yAritSEPERATS2TM1, yAritSEPERATS2TM2, yAritSEPERATS2TM3, yAritSEPERATS2TM4, yAritSEPERATS2TM5, yAritSEPERATS2TM7;
    
            numeric aSEPERATS2TM1, aSEPERATS2TM2, aSEPERATS2TM3, aSEPERATS2TM4, aSEPERATS2TM5, aSEPERATS2TM7;
            numeric bSEPERATS2TM1, bSEPERATS2TM2, bSEPERATS2TM3, bSEPERATS2TM4, bSEPERATS2TM5, bSEPERATS2TM7;
            numeric rSEPERATS2TM1, rSEPERATS2TM2, rSEPERATS2TM3, rSEPERATS2TM4, rSEPERATS2TM5, rSEPERATS2TM7;
            numeric rQuadSEPERATS2TM1, rQuadSEPERATS2TM2, rQuadSEPERATS2TM3, rQuadSEPERATS2TM4, rQuadSEPERATS2TM5, rQuadSEPERATS2TM7;
            numeric syxSEPERATS2TM1, syxSEPERATS2TM2, syxSEPERATS2TM3, syxSEPERATS2TM4, syxSEPERATS2TM5, syxSEPERATS2TM7;
            numeric bStandSEPERATS2TM1, bStandSEPERATS2TM2, bStandSEPERATS2TM3, bStandSEPERATS2TM4, bStandSEPERATS2TM5, bStandSEPERATS2TM7;
            numeric aStandSEPERATS2TM1, aStandSEPERATS2TM2, aStandSEPERATS2TM3, aStandSEPERATS2TM4, aStandSEPERATS2TM5, aStandSEPERATS2TM7;
    
            numeric xSEPERATS2TM1 = 0;
            numeric xSEPERATS2TM2 = 0;
            numeric xSEPERATS2TM3 = 0;
            numeric xSEPERATS2TM4 = 0;
            numeric xSEPERATS2TM5 = 0;
            numeric xSEPERATS2TM7 = 0;
    
            numeric xQuadSEPERATS2TM1 = 0;
            numeric xQuadSEPERATS2TM2 = 0;
            numeric xQuadSEPERATS2TM3 = 0;
            numeric xQuadSEPERATS2TM4 = 0;
            numeric xQuadSEPERATS2TM5 = 0;
            numeric xQuadSEPERATS2TM7 = 0;
    
            numeric ySEPERATS2TM1 = 0;
            numeric ySEPERATS2TM2 = 0;
            numeric ySEPERATS2TM3 = 0;
            numeric ySEPERATS2TM4 = 0;
            numeric ySEPERATS2TM5 = 0;
            numeric ySEPERATS2TM7 = 0;
    
            numeric yQuadSEPERATS2TM1 = 0;
            numeric yQuadSEPERATS2TM2 = 0;
            numeric yQuadSEPERATS2TM3 = 0;
            numeric yQuadSEPERATS2TM4 = 0;
            numeric yQuadSEPERATS2TM5 = 0;
            numeric yQuadSEPERATS2TM7 = 0;
    
            numeric xySEPERATS2TM1 = 0;
            numeric xySEPERATS2TM2 = 0;
            numeric xySEPERATS2TM3 = 0;
            numeric xySEPERATS2TM4 = 0;
            numeric xySEPERATS2TM5 = 0;
            numeric xySEPERATS2TM7 = 0;
    
            numeric xxAritQuadSEPERATS2TM1 = 0;
            numeric xxAritQuadSEPERATS2TM2 = 0;
            numeric xxAritQuadSEPERATS2TM3 = 0;
            numeric xxAritQuadSEPERATS2TM4 = 0;
            numeric xxAritQuadSEPERATS2TM5 = 0;
            numeric xxAritQuadSEPERATS2TM7 = 0;
    
            numeric yyAritQuadSEPERATS2TM1 = 0;
            numeric yyAritQuadSEPERATS2TM2 = 0;
            numeric yyAritQuadSEPERATS2TM3 = 0;
            numeric yyAritQuadSEPERATS2TM4 = 0;
            numeric yyAritQuadSEPERATS2TM5 = 0;
            numeric yyAritQuadSEPERATS2TM7 = 0;
    
            numeric qXYSEPERATS2TM1 = 0;
            numeric qXYSEPERATS2TM2 = 0;
            numeric qXYSEPERATS2TM3 = 0;
     numeric qXYSEPERATS2TM4 = 0;
            numeric qXYSEPERATS2TM5 = 0;
            numeric qXYSEPERATS2TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS2TM1 = xSEPERATS2TM1 + pifSEPERATS3S2TM1arrayRAND[m];
                xSEPERATS2TM2 = xSEPERATS2TM2 + pifSEPERATS3S2TM2arrayRAND[m];
                xSEPERATS2TM3 = xSEPERATS2TM3 + pifSEPERATS3S2TM3arrayRAND[m];
                xSEPERATS2TM4 = xSEPERATS2TM4 + pifSEPERATS3S2TM4arrayRAND[m];
                xSEPERATS2TM5 = xSEPERATS2TM5 + pifSEPERATS3S2TM5arrayRAND[m];
                xSEPERATS2TM7 = xSEPERATS2TM7 + pifSEPERATS3S2TM7arrayRAND[m];
    
                xQuadSEPERATS2TM1 = (xQuadSEPERATS2TM1 + (pifSEPERATS3S2TM1arrayRAND[m]^2));
                xQuadSEPERATS2TM2 = (xQuadSEPERATS2TM2 + (pifSEPERATS3S2TM2arrayRAND[m]^2));
                xQuadSEPERATS2TM3 = (xQuadSEPERATS2TM3 + (pifSEPERATS3S2TM3arrayRAND[m]^2));
                xQuadSEPERATS2TM4 = (xQuadSEPERATS2TM4 + (pifSEPERATS3S2TM4arrayRAND[m]^2));
                xQuadSEPERATS2TM5 = (xQuadSEPERATS2TM5 + (pifSEPERATS3S2TM5arrayRAND[m]^2));
                xQuadSEPERATS2TM7 = (xQuadSEPERATS2TM7 + (pifSEPERATS3S2TM7arrayRAND[m]^2));
    
                ySEPERATS2TM1 = ySEPERATS2TM1 + pifSEPERATS2slaveTM1arrayRAND[m];
                ySEPERATS2TM2 = ySEPERATS2TM2 + pifSEPERATS2slaveTM2arrayRAND[m];
                ySEPERATS2TM3 = ySEPERATS2TM3 + pifSEPERATS2slaveTM3arrayRAND[m];
                ySEPERATS2TM4 = ySEPERATS2TM4 + pifSEPERATS2slaveTM4arrayRAND[m];
                ySEPERATS2TM5 = ySEPERATS2TM5 + pifSEPERATS2slaveTM5arrayRAND[m];
                ySEPERATS2TM7 = ySEPERATS2TM7 + pifSEPERATS2slaveTM7arrayRAND[m];
                
                yQuadSEPERATS2TM1 = (yQuadSEPERATS2TM1 + (pifSEPERATS2slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS2TM2 = (yQuadSEPERATS2TM2 + (pifSEPERATS2slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS2TM3 = (yQuadSEPERATS2TM3 + (pifSEPERATS2slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS2TM4 = (yQuadSEPERATS2TM4 + (pifSEPERATS2slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS2TM5 = (yQuadSEPERATS2TM5 + (pifSEPERATS2slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS2TM7 = (yQuadSEPERATS2TM7 + (pifSEPERATS2slaveTM7arrayRAND[m]^2));
    
                xySEPERATS2TM1 = (xySEPERATS2TM1 + (pifSEPERATS3S2TM1arrayRAND[m] * pifSEPERATS2slaveTM1arrayRAND[m]));
                xySEPERATS2TM2 = (xySEPERATS2TM2 + (pifSEPERATS3S2TM2arrayRAND[m] * pifSEPERATS2slaveTM2arrayRAND[m]));
                xySEPERATS2TM3 = (xySEPERATS2TM3 + (pifSEPERATS3S2TM3arrayRAND[m] * pifSEPERATS2slaveTM3arrayRAND[m]));
                xySEPERATS2TM4 = (xySEPERATS2TM4 + (pifSEPERATS3S2TM4arrayRAND[m] * pifSEPERATS2slaveTM4arrayRAND[m]));
                xySEPERATS2TM5 = (xySEPERATS2TM5 + (pifSEPERATS3S2TM5arrayRAND[m] * pifSEPERATS2slaveTM5arrayRAND[m]));
                xySEPERATS2TM7 = (xySEPERATS2TM7 + (pifSEPERATS3S2TM7arrayRAND[m] * pifSEPERATS2slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS2TM1 = xSEPERATS2TM1 / minPifVAL;
            xAritSEPERATS2TM2 = xSEPERATS2TM2 / minPifVAL;
            xAritSEPERATS2TM3 = xSEPERATS2TM3 / minPifVAL;
            xAritSEPERATS2TM4 = xSEPERATS2TM4 / minPifVAL;
            xAritSEPERATS2TM5 = xSEPERATS2TM5 / minPifVAL;
            xAritSEPERATS2TM7 = xSEPERATS2TM7 / minPifVAL;
    
            yAritSEPERATS2TM1 = ySEPERATS2TM1 / minPifVAL;
            yAritSEPERATS2TM2 = ySEPERATS2TM2 / minPifVAL;
            yAritSEPERATS2TM3 = ySEPERATS2TM3 / minPifVAL;
            yAritSEPERATS2TM4 = ySEPERATS2TM4 / minPifVAL;
            yAritSEPERATS2TM5 = ySEPERATS2TM5 / minPifVAL;
            yAritSEPERATS2TM7 = ySEPERATS2TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2TM1 = (xxAritQuadSEPERATS2TM1 + ((pifSEPERATS3S2TM1arrayRAND[n] - xAritSEPERATS2TM1)^2));
                xxAritQuadSEPERATS2TM2 = (xxAritQuadSEPERATS2TM2 + ((pifSEPERATS3S2TM2arrayRAND[n] - xAritSEPERATS2TM2)^2));
                xxAritQuadSEPERATS2TM3 = (xxAritQuadSEPERATS2TM3 + ((pifSEPERATS3S2TM3arrayRAND[n] - xAritSEPERATS2TM3)^2));
                xxAritQuadSEPERATS2TM4 = (xxAritQuadSEPERATS2TM4 + ((pifSEPERATS3S2TM4arrayRAND[n] - xAritSEPERATS2TM4)^2));
                xxAritQuadSEPERATS2TM5 = (xxAritQuadSEPERATS2TM5 + ((pifSEPERATS3S2TM5arrayRAND[n] - xAritSEPERATS2TM5)^2));
                xxAritQuadSEPERATS2TM7 = (xxAritQuadSEPERATS2TM7 + ((pifSEPERATS3S2TM7arrayRAND[n] - xAritSEPERATS2TM7)^2));
    
                yyAritQuadSEPERATS2TM1 = (yyAritQuadSEPERATS2TM1 + ((pifSEPERATS2slaveTM1arrayRAND[n] - yAritSEPERATS2TM1)^2));
                yyAritQuadSEPERATS2TM2 = (yyAritQuadSEPERATS2TM2 + ((pifSEPERATS2slaveTM2arrayRAND[n] - yAritSEPERATS2TM2)^2));
                yyAritQuadSEPERATS2TM3 = (yyAritQuadSEPERATS2TM3 + ((pifSEPERATS2slaveTM3arrayRAND[n] - yAritSEPERATS2TM3)^2));
                yyAritQuadSEPERATS2TM4 = (yyAritQuadSEPERATS2TM4 + ((pifSEPERATS2slaveTM4arrayRAND[n] - yAritSEPERATS2TM4)^2));
                yyAritQuadSEPERATS2TM5 = (yyAritQuadSEPERATS2TM5 + ((pifSEPERATS2slaveTM5arrayRAND[n] - yAritSEPERATS2TM5)^2));
                yyAritQuadSEPERATS2TM7 = (yyAritQuadSEPERATS2TM7 + ((pifSEPERATS2slaveTM7arrayRAND[n] - yAritSEPERATS2TM7)^2));
    
                qXYSEPERATS2TM1 = (qXYSEPERATS2TM1 + ((pifSEPERATS3S2TM1arrayRAND[n] - xAritSEPERATS2TM1) * (pifSEPERATS2slaveTM1arrayRAND[n] - yAritSEPERATS2TM1)));
                qXYSEPERATS2TM2 = (qXYSEPERATS2TM2 + ((pifSEPERATS3S2TM2arrayRAND[n] - xAritSEPERATS2TM2) * (pifSEPERATS2slaveTM2arrayRAND[n] - yAritSEPERATS2TM2)));
                qXYSEPERATS2TM3 = (qXYSEPERATS2TM3 + ((pifSEPERATS3S2TM3arrayRAND[n] - xAritSEPERATS2TM3) * (pifSEPERATS2slaveTM3arrayRAND[n] - yAritSEPERATS2TM3)));
                qXYSEPERATS2TM4 = (qXYSEPERATS2TM4 + ((pifSEPERATS3S2TM4arrayRAND[n] - xAritSEPERATS2TM4) * (pifSEPERATS2slaveTM4arrayRAND[n] - yAritSEPERATS2TM4)));
                qXYSEPERATS2TM5 = (qXYSEPERATS2TM5 + ((pifSEPERATS3S2TM5arrayRAND[n] - xAritSEPERATS2TM5) * (pifSEPERATS2slaveTM5arrayRAND[n] - yAritSEPERATS2TM5)));
                qXYSEPERATS2TM7 = (qXYSEPERATS2TM7 + ((pifSEPERATS3S2TM7arrayRAND[n] - xAritSEPERATS2TM7) * (pifSEPERATS2slaveTM7arrayRAND[n] - yAritSEPERATS2TM7)));
            }
        
            aSEPERATS2TM1 = (((xQuadSEPERATS2TM1 * ySEPERATS2TM1) - (xSEPERATS2TM1 * xySEPERATS2TM1)) / ((minPifVAL * xQuadSEPERATS2TM1) - (xSEPERATS2TM1^2)));
            aSEPERATS2TM2 = (((xQuadSEPERATS2TM2 * ySEPERATS2TM2) - (xSEPERATS2TM2 * xySEPERATS2TM2)) / ((minPifVAL * xQuadSEPERATS2TM2) - (xSEPERATS2TM2^2)));
            aSEPERATS2TM3 = (((xQuadSEPERATS2TM3 * ySEPERATS2TM3) - (xSEPERATS2TM3 * xySEPERATS2TM3)) / ((minPifVAL * xQuadSEPERATS2TM3) - (xSEPERATS2TM3^2)));
            aSEPERATS2TM4 = (((xQuadSEPERATS2TM4 * ySEPERATS2TM4) - (xSEPERATS2TM4 * xySEPERATS2TM4)) / ((minPifVAL * xQuadSEPERATS2TM4) - (xSEPERATS2TM4^2)));
            aSEPERATS2TM5 = (((xQuadSEPERATS2TM5 * ySEPERATS2TM5) - (xSEPERATS2TM5 * xySEPERATS2TM5)) / ((minPifVAL * xQuadSEPERATS2TM5) - (xSEPERATS2TM5^2)));
            aSEPERATS2TM7 = (((xQuadSEPERATS2TM7 * ySEPERATS2TM7) - (xSEPERATS2TM7 * xySEPERATS2TM7)) / ((minPifVAL * xQuadSEPERATS2TM7) - (xSEPERATS2TM7^2)));
            
            bSEPERATS2TM1 = qXYSEPERATS2TM1 / xxAritQuadSEPERATS2TM1;
            bSEPERATS2TM2 = qXYSEPERATS2TM2 / xxAritQuadSEPERATS2TM2;
            bSEPERATS2TM3 = qXYSEPERATS2TM3 / xxAritQuadSEPERATS2TM3;
            bSEPERATS2TM4 = qXYSEPERATS2TM4 / xxAritQuadSEPERATS2TM4;
            bSEPERATS2TM5 = qXYSEPERATS2TM5 / xxAritQuadSEPERATS2TM5;
            bSEPERATS2TM7 = qXYSEPERATS2TM7 / xxAritQuadSEPERATS2TM7;
    
            rSEPERATS2TM1 = (qXYSEPERATS2TM1 / ((xxAritQuadSEPERATS2TM1 * yyAritQuadSEPERATS2TM1)^0.5));
            rSEPERATS2TM2 = (qXYSEPERATS2TM2 / ((xxAritQuadSEPERATS2TM2 * yyAritQuadSEPERATS2TM2)^0.5));
            rSEPERATS2TM3 = (qXYSEPERATS2TM3 / ((xxAritQuadSEPERATS2TM3 * yyAritQuadSEPERATS2TM3)^0.5));
            rSEPERATS2TM4 = (qXYSEPERATS2TM4 / ((xxAritQuadSEPERATS2TM4 * yyAritQuadSEPERATS2TM4)^0.5));
            rSEPERATS2TM5 = (qXYSEPERATS2TM5 / ((xxAritQuadSEPERATS2TM5 * yyAritQuadSEPERATS2TM5)^0.5));
            rSEPERATS2TM7 = (qXYSEPERATS2TM7 / ((xxAritQuadSEPERATS2TM7 * yyAritQuadSEPERATS2TM7)^0.5));
    
            rQuadSEPERATS2TM1 = ((rSEPERATS2TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2TM2 = ((rSEPERATS2TM2^2) * 100);
            rQuadSEPERATS2TM3 = ((rSEPERATS2TM3^2) * 100);
            rQuadSEPERATS2TM4 = ((rSEPERATS2TM4^2) * 100);
            rQuadSEPERATS2TM5 = ((rSEPERATS2TM5^2) * 100);
            rQuadSEPERATS2TM7 = ((rSEPERATS2TM7^2) * 100);
        
            syxSEPERATS2TM1 = (((yyAritQuadSEPERATS2TM1 - ((qXYSEPERATS2TM1^2) / xxAritQuadSEPERATS2TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM2 = (((yyAritQuadSEPERATS2TM2 - ((qXYSEPERATS2TM2^2) / xxAritQuadSEPERATS2TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM3 = (((yyAritQuadSEPERATS2TM3 - ((qXYSEPERATS2TM3^2) / xxAritQuadSEPERATS2TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM4 = (((yyAritQuadSEPERATS2TM4 - ((qXYSEPERATS2TM4^2) / xxAritQuadSEPERATS2TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM5 = (((yyAritQuadSEPERATS2TM5 - ((qXYSEPERATS2TM5^2) / xxAritQuadSEPERATS2TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM7 = (((yyAritQuadSEPERATS2TM7 - ((qXYSEPERATS2TM7^2) / xxAritQuadSEPERATS2TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2TM1 = (((syxSEPERATS2TM1^2) / xxAritQuadSEPERATS2TM1)^0.5);
            bStandSEPERATS2TM2 = (((syxSEPERATS2TM2^2) / xxAritQuadSEPERATS2TM2)^0.5);
            bStandSEPERATS2TM3 = (((syxSEPERATS2TM3^2) / xxAritQuadSEPERATS2TM3)^0.5);
            bStandSEPERATS2TM4 = (((syxSEPERATS2TM4^2) / xxAritQuadSEPERATS2TM4)^0.5);
            bStandSEPERATS2TM5 = (((syxSEPERATS2TM5^2) / xxAritQuadSEPERATS2TM5)^0.5);
            bStandSEPERATS2TM7 = (((syxSEPERATS2TM7^2) / xxAritQuadSEPERATS2TM7)^0.5);
    
            aStandSEPERATS2TM1 = (bStandSEPERATS2TM1 * ((xQuadSEPERATS2TM1 / minPifVAL)^0.5));
            aStandSEPERATS2TM2 = (bStandSEPERATS2TM2 * ((xQuadSEPERATS2TM2 / minPifVAL)^0.5));
            aStandSEPERATS2TM3 = (bStandSEPERATS2TM3 * ((xQuadSEPERATS2TM3 / minPifVAL)^0.5));
            aStandSEPERATS2TM4 = (bStandSEPERATS2TM4 * ((xQuadSEPERATS2TM4 / minPifVAL)^0.5));
            aStandSEPERATS2TM5 = (bStandSEPERATS2TM5 * ((xQuadSEPERATS2TM5 / minPifVAL)^0.5));
            aStandSEPERATS2TM7 = (bStandSEPERATS2TM7 * ((xQuadSEPERATS2TM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM1, bSEPERATS2TM1, rSEPERATS2TM1, rQuadSEPERATS2TM1, aStandSEPERATS2TM1, bStandSEPERATS2TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM2, bSEPERATS2TM2, rSEPERATS2TM2, rQuadSEPERATS2TM2, aStandSEPERATS2TM2, bStandSEPERATS2TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM3, bSEPERATS2TM3, rSEPERATS2TM3, rQuadSEPERATS2TM3, aStandSEPERATS2TM3, bStandSEPERATS2TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM4, bSEPERATS2TM4, rSEPERATS2TM4, rQuadSEPERATS2TM4, aStandSEPERATS2TM4, bStandSEPERATS2TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM5, bSEPERATS2TM5, rSEPERATS2TM5, rQuadSEPERATS2TM5, aStandSEPERATS2TM5, bStandSEPERATS2TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS2TM7, bSEPERATS2TM7, rSEPERATS2TM7, rQuadSEPERATS2TM7, aStandSEPERATS2TM7, bStandSEPERATS2TM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS2slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS2slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS2slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS2slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS2slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS2slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS2slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT2TM1[i,j] = (aSEPERATS2TM1 + (bSEPERATS2TM1 * REFS2TM1[i,j]));
                    OUT2TM2[i,j] = (aSEPERATS2TM2 + (bSEPERATS2TM2 * REFS2TM2[i,j]));
                    OUT2TM3[i,j] = (aSEPERATS2TM3 + (bSEPERATS2TM3 * REFS2TM3[i,j]));
                    OUT2TM4[i,j] = (aSEPERATS2TM4 + (bSEPERATS2TM4 * REFS2TM4[i,j]));
                    OUT2TM5[i,j] = (aSEPERATS2TM5 + (bSEPERATS2TM5 * REFS2TM5[i,j]));
                    OUT2TM7[i,j] = (aSEPERATS2TM7 + (bSEPERATS2TM7 * REFS2TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2TM1);
        	CreatePyramid(OUT2TM2);
        	CreatePyramid(OUT2TM3);
        	CreatePyramid(OUT2TM4);
        	CreatePyramid(OUT2TM5);
        	CreatePyramid(OUT2TM7);
        
        	CreateHistogram(OUT2TM1);
        	CreateHistogram(OUT2TM2);
        	CreateHistogram(OUT2TM3);
        	CreateHistogram(OUT2TM4);
        	CreateHistogram(OUT2TM5);
        	CreateHistogram(OUT2TM7);
            CloseRaster(REFS2TM1);
            CloseRaster(REFS2TM2);
            CloseRaster(REFS2TM3);
            CloseRaster(REFS2TM4);
            CloseRaster(REFS2TM5);
            CloseRaster(REFS2TM7);
    
            CloseRaster(OUT2TM1);
            CloseRaster(OUT2TM2);
            CloseRaster(OUT2TM3);
            CloseRaster(OUT2TM4);
            CloseRaster(OUT2TM5);
            CloseRaster(OUT2TM7);
        
        	printf("Scene 2 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS2MSS1, xAritSEPERATS2MSS2, xAritSEPERATS2MSS4;
            numeric yAritSEPERATS2MSS1, yAritSEPERATS2MSS2, yAritSEPERATS2MSS4;
    
            numeric aSEPERATS2MSS1, aSEPERATS2MSS2, aSEPERATS2MSS4;
            numeric bSEPERATS2MSS1, bSEPERATS2MSS2, bSEPERATS2MSS4;
            numeric rSEPERATS2MSS1, rSEPERATS2MSS2, rSEPERATS2MSS4;
            numeric rQuadSEPERATS2MSS1, rQuadSEPERATS2MSS2, rQuadSEPERATS2MSS4;
            numeric syxSEPERATS2MSS1, syxSEPERATS2MSS2, syxSEPERATS2MSS4;
            numeric bStandSEPERATS2MSS1, bStandSEPERATS2MSS2, bStandSEPERATS2MSS4;
            numeric aStandSEPERATS2MSS1, aStandSEPERATS2MSS2, aStandSEPERATS2MSS4;
    
            numeric xSEPERATS2MSS1 = 0;
            numeric xSEPERATS2MSS2 = 0;
            numeric xSEPERATS2MSS4 = 0;
    
            numeric xQuadSEPERATS2MSS1 = 0;
            numeric xQuadSEPERATS2MSS2 = 0;
            numeric xQuadSEPERATS2MSS4 = 0;
    
            numeric ySEPERATS2MSS1 = 0;
            numeric ySEPERATS2MSS2 = 0;
            numeric ySEPERATS2MSS4 = 0;
    
            numeric yQuadSEPERATS2MSS1 = 0;
            numeric yQuadSEPERATS2MSS2 = 0;
            numeric yQuadSEPERATS2MSS4 = 0;
    
            numeric xySEPERATS2MSS1 = 0;
            numeric xySEPERATS2MSS2 = 0;
            numeric xySEPERATS2MSS4 = 0;
    
            numeric xxAritQuadSEPERATS2MSS1 = 0;
            numeric xxAritQuadSEPERATS2MSS2 = 0;
            numeric xxAritQuadSEPERATS2MSS4 = 0;
    
            numeric yyAritQuadSEPERATS2MSS1 = 0;
            numeric yyAritQuadSEPERATS2MSS2 = 0;
            numeric yyAritQuadSEPERATS2MSS4 = 0;
    
            numeric qXYSEPERATS2MSS1 = 0;
            numeric qXYSEPERATS2MSS2 = 0;
            numeric qXYSEPERATS2MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS2MSS1 = xSEPERATS2MSS1 + pifSEPERATS3S2TM2arrayRAND[m];
                xSEPERATS2MSS2 = xSEPERATS2MSS2 + pifSEPERATS3S2TM3arrayRAND[m];
                xSEPERATS2MSS4 = xSEPERATS2MSS4 + pifSEPERATS3S2TM4arrayRAND[m];
    
                xQuadSEPERATS2MSS1 = (xQuadSEPERATS2MSS1 + (pifSEPERATS3S2TM2arrayRAND[m]^2));
                xQuadSEPERATS2MSS2 = (xQuadSEPERATS2MSS2 + (pifSEPERATS3S2TM3arrayRAND[m]^2));
                xQuadSEPERATS2MSS4 = (xQuadSEPERATS2MSS4 + (pifSEPERATS3S2TM4arrayRAND[m]^2));
    
                ySEPERATS2MSS1 = ySEPERATS2MSS1 + pifSEPERATS2slaveMSS1arrayRAND[m];
                ySEPERATS2MSS2 = ySEPERATS2MSS2 + pifSEPERATS2slaveMSS2arrayRAND[m];
                ySEPERATS2MSS4 = ySEPERATS2MSS4 + pifSEPERATS2slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS2MSS1 = (yQuadSEPERATS2MSS1 + (pifSEPERATS2slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS2MSS2 = (yQuadSEPERATS2MSS2 + (pifSEPERATS2slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS2MSS4 = (yQuadSEPERATS2MSS4 + (pifSEPERATS2slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS2MSS1 = (xySEPERATS2MSS1 + (pifSEPERATS3S2TM2arrayRAND[m] * pifSEPERATS2slaveMSS1arrayRAND[m]));
                xySEPERATS2MSS2 = (xySEPERATS2MSS2 + (pifSEPERATS3S2TM3arrayRAND[m] * pifSEPERATS2slaveMSS2arrayRAND[m]));
                xySEPERATS2MSS4 = (xySEPERATS2MSS4 + (pifSEPERATS3S2TM4arrayRAND[m] * pifSEPERATS2slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS2MSS1 = xSEPERATS2MSS1 / minPifVAL;
            xAritSEPERATS2MSS2 = xSEPERATS2MSS2 / minPifVAL;
            xAritSEPERATS2MSS4 = xSEPERATS2MSS4 / minPifVAL;
    
            yAritSEPERATS2MSS1 = ySEPERATS2MSS1 / minPifVAL;
            yAritSEPERATS2MSS2 = ySEPERATS2MSS2 / minPifVAL;
            yAritSEPERATS2MSS4 = ySEPERATS2MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2MSS1 = (xxAritQuadSEPERATS2MSS1 + ((pifSEPERATS3S2TM2arrayRAND[n] - xAritSEPERATS2MSS1)^2));
                xxAritQuadSEPERATS2MSS2 = (xxAritQuadSEPERATS2MSS2 + ((pifSEPERATS3S2TM3arrayRAND[n] - xAritSEPERATS2MSS2)^2));
                xxAritQuadSEPERATS2MSS4 = (xxAritQuadSEPERATS2MSS4 + ((pifSEPERATS3S2TM4arrayRAND[n] - xAritSEPERATS2MSS4)^2));
    
                yyAritQuadSEPERATS2MSS1 = (yyAritQuadSEPERATS2MSS1 + ((pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)^2));
                yyAritQuadSEPERATS2MSS2 = (yyAritQuadSEPERATS2MSS2 + ((pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)^2));
                yyAritQuadSEPERATS2MSS4 = (yyAritQuadSEPERATS2MSS4 + ((pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)^2));
    
                qXYSEPERATS2MSS1 = (qXYSEPERATS2MSS1 + ((pifSEPERATS3S2TM2arrayRAND[n] - xAritSEPERATS2MSS1) * (pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)));
                qXYSEPERATS2MSS2 = (qXYSEPERATS2MSS2 + ((pifSEPERATS3S2TM3arrayRAND[n] - xAritSEPERATS2MSS2) * (pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)));
                qXYSEPERATS2MSS4 = (qXYSEPERATS2MSS4 + ((pifSEPERATS3S2TM5arrayRAND[n] - xAritSEPERATS2MSS4) * (pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)));
            }
        
            aSEPERATS2MSS1 = (((xQuadSEPERATS2MSS1 * ySEPERATS2MSS1) - (xSEPERATS2MSS1 * xySEPERATS2MSS1)) / ((minPifVAL * xQuadSEPERATS2MSS1) - (xSEPERATS2MSS1^2)));
            aSEPERATS2MSS2 = (((xQuadSEPERATS2MSS2 * ySEPERATS2MSS2) - (xSEPERATS2MSS2 * xySEPERATS2MSS2)) / ((minPifVAL * xQuadSEPERATS2MSS2) - (xSEPERATS2MSS2^2)));
            aSEPERATS2MSS4 = (((xQuadSEPERATS2MSS4 * ySEPERATS2MSS4) - (xSEPERATS2MSS4 * xySEPERATS2MSS4)) / ((minPifVAL * xQuadSEPERATS2MSS4) - (xSEPERATS2MSS4^2)));
            
            bSEPERATS2MSS1 = qXYSEPERATS2MSS1 / xxAritQuadSEPERATS2MSS1;
            bSEPERATS2MSS2 = qXYSEPERATS2MSS2 / xxAritQuadSEPERATS2MSS2;
            bSEPERATS2MSS4 = qXYSEPERATS2MSS4 / xxAritQuadSEPERATS2MSS4;
    
            rSEPERATS2MSS1 = (qXYSEPERATS2MSS1 / ((xxAritQuadSEPERATS2MSS1 * yyAritQuadSEPERATS2MSS1)^0.5));
            rSEPERATS2MSS2 = (qXYSEPERATS2MSS2 / ((xxAritQuadSEPERATS2MSS2 * yyAritQuadSEPERATS2MSS2)^0.5));
            rSEPERATS2MSS4 = (qXYSEPERATS2MSS4 / ((xxAritQuadSEPERATS2MSS4 * yyAritQuadSEPERATS2MSS4)^0.5));
    
            rQuadSEPERATS2MSS1 = ((rSEPERATS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2MSS2 = ((rSEPERATS2MSS2^2) * 100);
            rQuadSEPERATS2MSS4 = ((rSEPERATS2MSS4^2) * 100);
        
            syxSEPERATS2MSS1 = (((yyAritQuadSEPERATS2MSS1 - ((qXYSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS2 = (((yyAritQuadSEPERATS2MSS2 - ((qXYSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS4 = (((yyAritQuadSEPERATS2MSS4 - ((qXYSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2MSS1 = (((syxSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)^0.5);
            bStandSEPERATS2MSS2 = (((syxSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)^0.5);
            bStandSEPERATS2MSS4 = (((syxSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)^0.5);
    
            aStandSEPERATS2MSS1 = (bStandSEPERATS2MSS1 * ((xQuadSEPERATS2MSS1 / minPifVAL)^0.5));
            aStandSEPERATS2MSS2 = (bStandSEPERATS2MSS2 * ((xQuadSEPERATS2MSS2 / minPifVAL)^0.5));
            aStandSEPERATS2MSS4 = (bStandSEPERATS2MSS4 * ((xQuadSEPERATS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS1, bSEPERATS2MSS1, rSEPERATS2MSS1, rQuadSEPERATS2MSS1, aStandSEPERATS2MSS1, bStandSEPERATS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS2, bSEPERATS2MSS2, rSEPERATS2MSS2, rQuadSEPERATS2MSS2, aStandSEPERATS2MSS2, bStandSEPERATS2MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS4, bSEPERATS2MSS4, rSEPERATS2MSS4, rQuadSEPERATS2MSS4, aStandSEPERATS2MSS4, bStandSEPERATS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS2slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS2slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS2slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aSEPERATS2MSS1 + (bSEPERATS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aSEPERATS2MSS2 + (bSEPERATS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = REFS2MSS3[i,j];
                    OUT2MSS4[i,j] = (aSEPERATS2MSS4 + (bSEPERATS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT2MSS1);
            CreatePyramid(OUT2MSS2);
            CreatePyramid(OUT2MSS3);
            CreatePyramid(OUT2MSS4);
        
            CreateHistogram(OUT2MSS1);
            CreateHistogram(OUT2MSS2);
            CreateHistogram(OUT2MSS3);
            CreateHistogram(OUT2MSS4);
            
            CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors4 == 7 )
            {
            numeric xAritSEPERATS4ETM1, xAritSEPERATS4ETM2, xAritSEPERATS4ETM3, xAritSEPERATS4ETM4, xAritSEPERATS4ETM5, xAritSEPERATS4ETM7;
            numeric yAritSEPERATS4ETM1, yAritSEPERATS4ETM2, yAritSEPERATS4ETM3, yAritSEPERATS4ETM4, yAritSEPERATS4ETM5, yAritSEPERATS4ETM7;
    
            numeric aSEPERATS4ETM1, aSEPERATS4ETM2, aSEPERATS4ETM3, aSEPERATS4ETM4, aSEPERATS4ETM5, aSEPERATS4ETM7;
            numeric bSEPERATS4ETM1, bSEPERATS4ETM2, bSEPERATS4ETM3, bSEPERATS4ETM4, bSEPERATS4ETM5, bSEPERATS4ETM7;
            numeric rSEPERATS4ETM1, rSEPERATS4ETM2, rSEPERATS4ETM3, rSEPERATS4ETM4, rSEPERATS4ETM5, rSEPERATS4ETM7;
            numeric rQuadSEPERATS4ETM1, rQuadSEPERATS4ETM2, rQuadSEPERATS4ETM3, rQuadSEPERATS4ETM4, rQuadSEPERATS4ETM5, rQuadSEPERATS4ETM7;
            numeric syxSEPERATS4ETM1, syxSEPERATS4ETM2, syxSEPERATS4ETM3, syxSEPERATS4ETM4, syxSEPERATS4ETM5, syxSEPERATS4ETM7;
            numeric bStandSEPERATS4ETM1, bStandSEPERATS4ETM2, bStandSEPERATS4ETM3, bStandSEPERATS4ETM4, bStandSEPERATS4ETM5, bStandSEPERATS4ETM7;
            numeric aStandSEPERATS4ETM1, aStandSEPERATS4ETM2, aStandSEPERATS4ETM3, aStandSEPERATS4ETM4, aStandSEPERATS4ETM5, aStandSEPERATS4ETM7;
    
            numeric xSEPERATS4ETM1 = 0;
            numeric xSEPERATS4ETM2 = 0;
            numeric xSEPERATS4ETM3 = 0;
            numeric xSEPERATS4ETM4 = 0;
            numeric xSEPERATS4ETM5 = 0;
            numeric xSEPERATS4ETM7 = 0;
    
            numeric xQuadSEPERATS4ETM1 = 0;
            numeric xQuadSEPERATS4ETM2 = 0;
            numeric xQuadSEPERATS4ETM3 = 0;
            numeric xQuadSEPERATS4ETM4 = 0;
            numeric xQuadSEPERATS4ETM5 = 0;
            numeric xQuadSEPERATS4ETM7 = 0;
    
            numeric ySEPERATS4ETM1 = 0;
            numeric ySEPERATS4ETM2 = 0;
            numeric ySEPERATS4ETM3 = 0;
            numeric ySEPERATS4ETM4 = 0;
            numeric ySEPERATS4ETM5 = 0;
            numeric ySEPERATS4ETM7 = 0;
    
            numeric yQuadSEPERATS4ETM1 = 0;
            numeric yQuadSEPERATS4ETM2 = 0;
            numeric yQuadSEPERATS4ETM3 = 0;
            numeric yQuadSEPERATS4ETM4 = 0;
            numeric yQuadSEPERATS4ETM5 = 0;
            numeric yQuadSEPERATS4ETM7 = 0;
    
            numeric xySEPERATS4ETM1 = 0;
            numeric xySEPERATS4ETM2 = 0;
            numeric xySEPERATS4ETM3 = 0;
            numeric xySEPERATS4ETM4 = 0;
            numeric xySEPERATS4ETM5 = 0;
            numeric xySEPERATS4ETM7 = 0;
    
            numeric xxAritQuadSEPERATS4ETM1 = 0;
            numeric xxAritQuadSEPERATS4ETM2 = 0;
            numeric xxAritQuadSEPERATS4ETM3 = 0;
            numeric xxAritQuadSEPERATS4ETM4 = 0;
            numeric xxAritQuadSEPERATS4ETM5 = 0;
            numeric xxAritQuadSEPERATS4ETM7 = 0;
    
            numeric yyAritQuadSEPERATS4ETM1 = 0;
            numeric yyAritQuadSEPERATS4ETM2 = 0;
            numeric yyAritQuadSEPERATS4ETM3 = 0;
            numeric yyAritQuadSEPERATS4ETM4 = 0;
            numeric yyAritQuadSEPERATS4ETM5 = 0;
            numeric yyAritQuadSEPERATS4ETM7 = 0;
    
            numeric qXYSEPERATS4ETM1 = 0;
            numeric qXYSEPERATS4ETM2 = 0;
            numeric qXYSEPERATS4ETM3 = 0;
            numeric qXYSEPERATS4ETM4 = 0;
            numeric qXYSEPERATS4ETM5 = 0;
            numeric qXYSEPERATS4ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS4ETM1 = xSEPERATS4ETM1 + pifSEPERATS3S4TM1arrayRAND[m];
                xSEPERATS4ETM2 = xSEPERATS4ETM2 + pifSEPERATS3S4TM2arrayRAND[m];
                xSEPERATS4ETM3 = xSEPERATS4ETM3 + pifSEPERATS3S4TM3arrayRAND[m];
                xSEPERATS4ETM4 = xSEPERATS4ETM4 + pifSEPERATS3S4TM4arrayRAND[m];
                xSEPERATS4ETM5 = xSEPERATS4ETM5 + pifSEPERATS3S4TM5arrayRAND[m];
                xSEPERATS4ETM7 = xSEPERATS4ETM7 + pifSEPERATS3S4TM7arrayRAND[m];
    
                xQuadSEPERATS4ETM1 = (xQuadSEPERATS4ETM1 + (pifSEPERATS3S4TM1arrayRAND[m]^2));
                xQuadSEPERATS4ETM2 = (xQuadSEPERATS4ETM2 + (pifSEPERATS3S4TM2arrayRAND[m]^2));
                xQuadSEPERATS4ETM3 = (xQuadSEPERATS4ETM3 + (pifSEPERATS3S4TM3arrayRAND[m]^2));
                xQuadSEPERATS4ETM4 = (xQuadSEPERATS4ETM4 + (pifSEPERATS3S4TM4arrayRAND[m]^2));
                xQuadSEPERATS4ETM5 = (xQuadSEPERATS4ETM5 + (pifSEPERATS3S4TM5arrayRAND[m]^2));
                xQuadSEPERATS4ETM7 = (xQuadSEPERATS4ETM7 + (pifSEPERATS3S4TM7arrayRAND[m]^2));
    
                ySEPERATS4ETM1 = ySEPERATS4ETM1 + pifSEPERATS4slaveETM1arrayRAND[m];
                ySEPERATS4ETM2 = ySEPERATS4ETM2 + pifSEPERATS4slaveETM2arrayRAND[m];
                ySEPERATS4ETM3 = ySEPERATS4ETM3 + pifSEPERATS4slaveETM3arrayRAND[m];
                ySEPERATS4ETM4 = ySEPERATS4ETM4 + pifSEPERATS4slaveETM4arrayRAND[m];
                ySEPERATS4ETM5 = ySEPERATS4ETM5 + pifSEPERATS4slaveETM5arrayRAND[m];
                ySEPERATS4ETM7 = ySEPERATS4ETM7 + pifSEPERATS4slaveETM7arrayRAND[m];
                
                yQuadSEPERATS4ETM1 = (yQuadSEPERATS4ETM1 + (pifSEPERATS4slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS4ETM2 = (yQuadSEPERATS4ETM2 + (pifSEPERATS4slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS4ETM3 = (yQuadSEPERATS4ETM3 + (pifSEPERATS4slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS4ETM4 = (yQuadSEPERATS4ETM4 + (pifSEPERATS4slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS4ETM5 = (yQuadSEPERATS4ETM5 + (pifSEPERATS4slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS4ETM7 = (yQuadSEPERATS4ETM7 + (pifSEPERATS4slaveETM7arrayRAND[m]^2));
    
                xySEPERATS4ETM1 = (xySEPERATS4ETM1 + (pifSEPERATS3S4TM1arrayRAND[m] * pifSEPERATS4slaveETM1arrayRAND[m]));
                xySEPERATS4ETM2 = (xySEPERATS4ETM2 + (pifSEPERATS3S4TM2arrayRAND[m] * pifSEPERATS4slaveETM2arrayRAND[m]));
                xySEPERATS4ETM3 = (xySEPERATS4ETM3 + (pifSEPERATS3S4TM3arrayRAND[m] * pifSEPERATS4slaveETM3arrayRAND[m]));
                xySEPERATS4ETM4 = (xySEPERATS4ETM4 + (pifSEPERATS3S4TM4arrayRAND[m] * pifSEPERATS4slaveETM4arrayRAND[m]));
                xySEPERATS4ETM5 = (xySEPERATS4ETM5 + (pifSEPERATS3S4TM5arrayRAND[m] * pifSEPERATS4slaveETM5arrayRAND[m]));
                xySEPERATS4ETM7 = (xySEPERATS4ETM7 + (pifSEPERATS3S4TM7arrayRAND[m] * pifSEPERATS4slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS4ETM1 = xSEPERATS4ETM1 / minPifVAL;
            xAritSEPERATS4ETM2 = xSEPERATS4ETM2 / minPifVAL;
            xAritSEPERATS4ETM3 = xSEPERATS4ETM3 / minPifVAL;
            xAritSEPERATS4ETM4 = xSEPERATS4ETM4 / minPifVAL;
            xAritSEPERATS4ETM5 = xSEPERATS4ETM5 / minPifVAL;
            xAritSEPERATS4ETM7 = xSEPERATS4ETM7 / minPifVAL;
    
            yAritSEPERATS4ETM1 = ySEPERATS4ETM1 / minPifVAL;
            yAritSEPERATS4ETM2 = ySEPERATS4ETM2 / minPifVAL;
            yAritSEPERATS4ETM3 = ySEPERATS4ETM3 / minPifVAL;
            yAritSEPERATS4ETM4 = ySEPERATS4ETM4 / minPifVAL;
            yAritSEPERATS4ETM5 = ySEPERATS4ETM5 / minPifVAL;
            yAritSEPERATS4ETM7 = ySEPERATS4ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4ETM1 = (xxAritQuadSEPERATS4ETM1 + ((pifSEPERATS3S4TM1arrayRAND[n] - xAritSEPERATS4ETM1)^2));
                xxAritQuadSEPERATS4ETM2 = (xxAritQuadSEPERATS4ETM2 + ((pifSEPERATS3S4TM2arrayRAND[n] - xAritSEPERATS4ETM2)^2));
                xxAritQuadSEPERATS4ETM3 = (xxAritQuadSEPERATS4ETM3 + ((pifSEPERATS3S4TM3arrayRAND[n] - xAritSEPERATS4ETM3)^2));
                xxAritQuadSEPERATS4ETM4 = (xxAritQuadSEPERATS4ETM4 + ((pifSEPERATS3S4TM4arrayRAND[n] - xAritSEPERATS4ETM4)^2));
                xxAritQuadSEPERATS4ETM5 = (xxAritQuadSEPERATS4ETM5 + ((pifSEPERATS3S4TM5arrayRAND[n] - xAritSEPERATS4ETM5)^2));
                xxAritQuadSEPERATS4ETM7 = (xxAritQuadSEPERATS4ETM7 + ((pifSEPERATS3S4TM7arrayRAND[n] - xAritSEPERATS4ETM7)^2));
    
                yyAritQuadSEPERATS4ETM1 = (yyAritQuadSEPERATS4ETM1 + ((pifSEPERATS4slaveETM1arrayRAND[n] - yAritSEPERATS4ETM1)^2));
                yyAritQuadSEPERATS4ETM2 = (yyAritQuadSEPERATS4ETM2 + ((pifSEPERATS4slaveETM2arrayRAND[n] - yAritSEPERATS4ETM2)^2));
                yyAritQuadSEPERATS4ETM3 = (yyAritQuadSEPERATS4ETM3 + ((pifSEPERATS4slaveETM3arrayRAND[n] - yAritSEPERATS4ETM3)^2));
                yyAritQuadSEPERATS4ETM4 = (yyAritQuadSEPERATS4ETM4 + ((pifSEPERATS4slaveETM4arrayRAND[n] - yAritSEPERATS4ETM4)^2));
                yyAritQuadSEPERATS4ETM5 = (yyAritQuadSEPERATS4ETM5 + ((pifSEPERATS4slaveETM5arrayRAND[n] - yAritSEPERATS4ETM5)^2));
                yyAritQuadSEPERATS4ETM7 = (yyAritQuadSEPERATS4ETM7 + ((pifSEPERATS4slaveETM7arrayRAND[n] - yAritSEPERATS4ETM7)^2));
    
                qXYSEPERATS4ETM1 = (qXYSEPERATS4ETM1 + ((pifSEPERATS3S4TM1arrayRAND[n] - xAritSEPERATS4ETM1) * (pifSEPERATS4slaveETM1arrayRAND[n] - yAritSEPERATS4ETM1)));
                qXYSEPERATS4ETM2 = (qXYSEPERATS4ETM2 + ((pifSEPERATS3S4TM2arrayRAND[n] - xAritSEPERATS4ETM2) * (pifSEPERATS4slaveETM2arrayRAND[n] - yAritSEPERATS4ETM2)));
                qXYSEPERATS4ETM3 = (qXYSEPERATS4ETM3 + ((pifSEPERATS3S4TM3arrayRAND[n] - xAritSEPERATS4ETM3) * (pifSEPERATS4slaveETM3arrayRAND[n] - yAritSEPERATS4ETM3)));
                qXYSEPERATS4ETM4 = (qXYSEPERATS4ETM4 + ((pifSEPERATS3S4TM4arrayRAND[n] - xAritSEPERATS4ETM4) * (pifSEPERATS4slaveETM4arrayRAND[n] - yAritSEPERATS4ETM4)));
                qXYSEPERATS4ETM5 = (qXYSEPERATS4ETM5 + ((pifSEPERATS3S4TM5arrayRAND[n] - xAritSEPERATS4ETM5) * (pifSEPERATS4slaveETM5arrayRAND[n] - yAritSEPERATS4ETM5)));
                qXYSEPERATS4ETM7 = (qXYSEPERATS4ETM7 + ((pifSEPERATS3S4TM7arrayRAND[n] - xAritSEPERATS4ETM7) * (pifSEPERATS4slaveETM7arrayRAND[n] - yAritSEPERATS4ETM7)));
            }
        
            aSEPERATS4ETM1 = (((xQuadSEPERATS4ETM1 * ySEPERATS4ETM1) - (xSEPERATS4ETM1 * xySEPERATS4ETM1)) / ((minPifVAL * xQuadSEPERATS4ETM1) - (xSEPERATS4ETM1^2)));
            aSEPERATS4ETM2 = (((xQuadSEPERATS4ETM2 * ySEPERATS4ETM2) - (xSEPERATS4ETM2 * xySEPERATS4ETM2)) / ((minPifVAL * xQuadSEPERATS4ETM2) - (xSEPERATS4ETM2^2)));
            aSEPERATS4ETM3 = (((xQuadSEPERATS4ETM3 * ySEPERATS4ETM3) - (xSEPERATS4ETM3 * xySEPERATS4ETM3)) / ((minPifVAL * xQuadSEPERATS4ETM3) - (xSEPERATS4ETM3^2)));
            aSEPERATS4ETM4 = (((xQuadSEPERATS4ETM4 * ySEPERATS4ETM4) - (xSEPERATS4ETM4 * xySEPERATS4ETM4)) / ((minPifVAL * xQuadSEPERATS4ETM4) - (xSEPERATS4ETM4^2)));
            aSEPERATS4ETM5 = (((xQuadSEPERATS4ETM5 * ySEPERATS4ETM5) - (xSEPERATS4ETM5 * xySEPERATS4ETM5)) / ((minPifVAL * xQuadSEPERATS4ETM5) - (xSEPERATS4ETM5^2)));
            aSEPERATS4ETM7 = (((xQuadSEPERATS4ETM7 * ySEPERATS4ETM7) - (xSEPERATS4ETM7 * xySEPERATS4ETM7)) / ((minPifVAL * xQuadSEPERATS4ETM7) - (xSEPERATS4ETM7^2)));
            
            bSEPERATS4ETM1 = qXYSEPERATS4ETM1 / xxAritQuadSEPERATS4ETM1;
            bSEPERATS4ETM2 = qXYSEPERATS4ETM2 / xxAritQuadSEPERATS4ETM2;
            bSEPERATS4ETM3 = qXYSEPERATS4ETM3 / xxAritQuadSEPERATS4ETM3;
            bSEPERATS4ETM4 = qXYSEPERATS4ETM4 / xxAritQuadSEPERATS4ETM4;
            bSEPERATS4ETM5 = qXYSEPERATS4ETM5 / xxAritQuadSEPERATS4ETM5;
            bSEPERATS4ETM7 = qXYSEPERATS4ETM7 / xxAritQuadSEPERATS4ETM7;
    
            rSEPERATS4ETM1 = (qXYSEPERATS4ETM1 / ((xxAritQuadSEPERATS4ETM1 * yyAritQuadSEPERATS4ETM1)^0.5));
            rSEPERATS4ETM2 = (qXYSEPERATS4ETM2 / ((xxAritQuadSEPERATS4ETM2 * yyAritQuadSEPERATS4ETM2)^0.5));
            rSEPERATS4ETM3 = (qXYSEPERATS4ETM3 / ((xxAritQuadSEPERATS4ETM3 * yyAritQuadSEPERATS4ETM3)^0.5));
            rSEPERATS4ETM4 = (qXYSEPERATS4ETM4 / ((xxAritQuadSEPERATS4ETM4 * yyAritQuadSEPERATS4ETM4)^0.5));
            rSEPERATS4ETM5 = (qXYSEPERATS4ETM5 / ((xxAritQuadSEPERATS4ETM5 * yyAritQuadSEPERATS4ETM5)^0.5));
            rSEPERATS4ETM7 = (qXYSEPERATS4ETM7 / ((xxAritQuadSEPERATS4ETM7 * yyAritQuadSEPERATS4ETM7)^0.5));
    
            rQuadSEPERATS4ETM1 = ((rSEPERATS4ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4ETM2 = ((rSEPERATS4ETM2^2) * 100);
            rQuadSEPERATS4ETM3 = ((rSEPERATS4ETM3^2) * 100);
            rQuadSEPERATS4ETM4 = ((rSEPERATS4ETM4^2) * 100);
            rQuadSEPERATS4ETM5 = ((rSEPERATS4ETM5^2) * 100);
            rQuadSEPERATS4ETM7 = ((rSEPERATS4ETM7^2) * 100);
        
            syxSEPERATS4ETM1 = (((yyAritQuadSEPERATS4ETM1 - ((qXYSEPERATS4ETM1^2) / xxAritQuadSEPERATS4ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM2 = (((yyAritQuadSEPERATS4ETM2 - ((qXYSEPERATS4ETM2^2) / xxAritQuadSEPERATS4ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM3 = (((yyAritQuadSEPERATS4ETM3 - ((qXYSEPERATS4ETM3^2) / xxAritQuadSEPERATS4ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM4 = (((yyAritQuadSEPERATS4ETM4 - ((qXYSEPERATS4ETM4^2) / xxAritQuadSEPERATS4ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM5 = (((yyAritQuadSEPERATS4ETM5 - ((qXYSEPERATS4ETM5^2) / xxAritQuadSEPERATS4ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4ETM7 = (((yyAritQuadSEPERATS4ETM7 - ((qXYSEPERATS4ETM7^2) / xxAritQuadSEPERATS4ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4ETM1 = (((syxSEPERATS4ETM1^2) / xxAritQuadSEPERATS4ETM1)^0.5);
            bStandSEPERATS4ETM2 = (((syxSEPERATS4ETM2^2) / xxAritQuadSEPERATS4ETM2)^0.5);
            bStandSEPERATS4ETM3 = (((syxSEPERATS4ETM3^2) / xxAritQuadSEPERATS4ETM3)^0.5);
            bStandSEPERATS4ETM4 = (((syxSEPERATS4ETM4^2) / xxAritQuadSEPERATS4ETM4)^0.5);
            bStandSEPERATS4ETM5 = (((syxSEPERATS4ETM5^2) / xxAritQuadSEPERATS4ETM5)^0.5);
            bStandSEPERATS4ETM7 = (((syxSEPERATS4ETM7^2) / xxAritQuadSEPERATS4ETM7)^0.5);
    
            aStandSEPERATS4ETM1 = (bStandSEPERATS4ETM1 * ((xQuadSEPERATS4ETM1 / minPifVAL)^0.5));
            aStandSEPERATS4ETM2 = (bStandSEPERATS4ETM2 * ((xQuadSEPERATS4ETM2 / minPifVAL)^0.5));
            aStandSEPERATS4ETM3 = (bStandSEPERATS4ETM3 * ((xQuadSEPERATS4ETM3 / minPifVAL)^0.5));
            aStandSEPERATS4ETM4 = (bStandSEPERATS4ETM4 * ((xQuadSEPERATS4ETM4 / minPifVAL)^0.5));
            aStandSEPERATS4ETM5 = (bStandSEPERATS4ETM5 * ((xQuadSEPERATS4ETM5 / minPifVAL)^0.5));
            aStandSEPERATS4ETM7 = (bStandSEPERATS4ETM7 * ((xQuadSEPERATS4ETM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM1, bSEPERATS4ETM1, rSEPERATS4ETM1, rQuadSEPERATS4ETM1, aStandSEPERATS4ETM1, bStandSEPERATS4ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM2, bSEPERATS4ETM2, rSEPERATS4ETM2, rQuadSEPERATS4ETM2, aStandSEPERATS4ETM2, bStandSEPERATS4ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM3, bSEPERATS4ETM3, rSEPERATS4ETM3, rQuadSEPERATS4ETM3, aStandSEPERATS4ETM3, bStandSEPERATS4ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM4, bSEPERATS4ETM4, rSEPERATS4ETM4, rQuadSEPERATS4ETM4, aStandSEPERATS4ETM4, bStandSEPERATS4ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4ETM5, bSEPERATS4ETM5, rSEPERATS4ETM5, rQuadSEPERATS4ETM5, aStandSEPERATS4ETM5, bStandSEPERATS4ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS4ETM7, bSEPERATS4ETM7, rSEPERATS4ETM7, rQuadSEPERATS4ETM7, aStandSEPERATS4ETM7, bStandSEPERATS4ETM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS4slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS4slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS4slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS4slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS4slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS4slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS4slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT4ETM1[i,j] = (aSEPERATS4ETM1 + (bSEPERATS4ETM1 * REFS4ETM1[i,j]));
                    OUT4ETM2[i,j] = (aSEPERATS4ETM2 + (bSEPERATS4ETM2 * REFS4ETM2[i,j]));
                    OUT4ETM3[i,j] = (aSEPERATS4ETM3 + (bSEPERATS4ETM3 * REFS4ETM3[i,j]));
                    OUT4ETM4[i,j] = (aSEPERATS4ETM4 + (bSEPERATS4ETM4 * REFS4ETM4[i,j]));
                    OUT4ETM5[i,j] = (aSEPERATS4ETM5 + (bSEPERATS4ETM5 * REFS4ETM5[i,j]));
                    OUT4ETM7[i,j] = (aSEPERATS4ETM7 + (bSEPERATS4ETM7 * REFS4ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4ETM1);
        	CreatePyramid(OUT4ETM2);
        	CreatePyramid(OUT4ETM3);
        	CreatePyramid(OUT4ETM4);
        	CreatePyramid(OUT4ETM5);
        	CreatePyramid(OUT4ETM7);
        
        	CreateHistogram(OUT4ETM1);
        	CreateHistogram(OUT4ETM2);
        	CreateHistogram(OUT4ETM3);
        	CreateHistogram(OUT4ETM4);
        	CreateHistogram(OUT4ETM5);
        	CreateHistogram(OUT4ETM7);
            CloseRaster(REFS4ETM1);
            CloseRaster(REFS4ETM2);
            CloseRaster(REFS4ETM3);
            CloseRaster(REFS4ETM4);
            CloseRaster(REFS4ETM5);
            CloseRaster(REFS4ETM7);
    
            CloseRaster(OUT4ETM1);
            CloseRaster(OUT4ETM2);
            CloseRaster(OUT4ETM3);
            CloseRaster(OUT4ETM4);
            CloseRaster(OUT4ETM5);
            CloseRaster(OUT4ETM7);
            
        	printf("Scene 4 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors4 == 6 )
            {
            numeric xAritSEPERATS4TM1, xAritSEPERATS4TM2, xAritSEPERATS4TM3, xAritSEPERATS4TM4, xAritSEPERATS4TM5, xAritSEPERATS4TM7;
            numeric yAritSEPERATS4TM1, yAritSEPERATS4TM2, yAritSEPERATS4TM3, yAritSEPERATS4TM4, yAritSEPERATS4TM5, yAritSEPERATS4TM7;
    
            numeric aSEPERATS4TM1, aSEPERATS4TM2, aSEPERATS4TM3, aSEPERATS4TM4, aSEPERATS4TM5, aSEPERATS4TM7;
            numeric bSEPERATS4TM1, bSEPERATS4TM2, bSEPERATS4TM3, bSEPERATS4TM4, bSEPERATS4TM5, bSEPERATS4TM7;
            numeric rSEPERATS4TM1, rSEPERATS4TM2, rSEPERATS4TM3, rSEPERATS4TM4, rSEPERATS4TM5, rSEPERATS4TM7;
            numeric rQuadSEPERATS4TM1, rQuadSEPERATS4TM2, rQuadSEPERATS4TM3, rQuadSEPERATS4TM4, rQuadSEPERATS4TM5, rQuadSEPERATS4TM7;
            numeric syxSEPERATS4TM1, syxSEPERATS4TM2, syxSEPERATS4TM3, syxSEPERATS4TM4, syxSEPERATS4TM5, syxSEPERATS4TM7;
            numeric bStandSEPERATS4TM1, bStandSEPERATS4TM2, bStandSEPERATS4TM3, bStandSEPERATS4TM4, bStandSEPERATS4TM5, bStandSEPERATS4TM7;
            numeric aStandSEPERATS4TM1, aStandSEPERATS4TM2, aStandSEPERATS4TM3, aStandSEPERATS4TM4, aStandSEPERATS4TM5, aStandSEPERATS4TM7;
    
            numeric xSEPERATS4TM1 = 0;
            numeric xSEPERATS4TM2 = 0;
            numeric xSEPERATS4TM3 = 0;
            numeric xSEPERATS4TM4 = 0;
            numeric xSEPERATS4TM5 = 0;
            numeric xSEPERATS4TM7 = 0;
    
            numeric xQuadSEPERATS4TM1 = 0;
            numeric xQuadSEPERATS4TM2 = 0;
            numeric xQuadSEPERATS4TM3 = 0;
            numeric xQuadSEPERATS4TM4 = 0;
            numeric xQuadSEPERATS4TM5 = 0;
            numeric xQuadSEPERATS4TM7 = 0;
    
            numeric ySEPERATS4TM1 = 0;
            numeric ySEPERATS4TM2 = 0;
            numeric ySEPERATS4TM3 = 0;
            numeric ySEPERATS4TM4 = 0;
            numeric ySEPERATS4TM5 = 0;
            numeric ySEPERATS4TM7 = 0;
    
            numeric yQuadSEPERATS4TM1 = 0;
            numeric yQuadSEPERATS4TM2 = 0;
            numeric yQuadSEPERATS4TM3 = 0;
            numeric yQuadSEPERATS4TM4 = 0;
            numeric yQuadSEPERATS4TM5 = 0;
            numeric yQuadSEPERATS4TM7 = 0;
    
            numeric xySEPERATS4TM1 = 0;
            numeric xySEPERATS4TM2 = 0;
            numeric xySEPERATS4TM3 = 0;
            numeric xySEPERATS4TM4 = 0;
            numeric xySEPERATS4TM5 = 0;
            numeric xySEPERATS4TM7 = 0;
    
            numeric xxAritQuadSEPERATS4TM1 = 0;
            numeric xxAritQuadSEPERATS4TM2 = 0;
            numeric xxAritQuadSEPERATS4TM3 = 0;
            numeric xxAritQuadSEPERATS4TM4 = 0;
            numeric xxAritQuadSEPERATS4TM5 = 0;
            numeric xxAritQuadSEPERATS4TM7 = 0;
    
            numeric yyAritQuadSEPERATS4TM1 = 0;
            numeric yyAritQuadSEPERATS4TM2 = 0;
            numeric yyAritQuadSEPERATS4TM3 = 0;
            numeric yyAritQuadSEPERATS4TM4 = 0;
            numeric yyAritQuadSEPERATS4TM5 = 0;
            numeric yyAritQuadSEPERATS4TM7 = 0;
    
            numeric qXYSEPERATS4TM1 = 0;
            numeric qXYSEPERATS4TM2 = 0;
            numeric qXYSEPERATS4TM3 = 0;
            numeric qXYSEPERATS4TM4 = 0;
            numeric qXYSEPERATS4TM5 = 0;
            numeric qXYSEPERATS4TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS4TM1 = xSEPERATS4TM1 + pifSEPERATS3S4TM1arrayRAND[m];
                xSEPERATS4TM2 = xSEPERATS4TM2 + pifSEPERATS3S4TM2arrayRAND[m];
                xSEPERATS4TM3 = xSEPERATS4TM3 + pifSEPERATS3S4TM3arrayRAND[m];
                xSEPERATS4TM4 = xSEPERATS4TM4 + pifSEPERATS3S4TM4arrayRAND[m];
                xSEPERATS4TM5 = xSEPERATS4TM5 + pifSEPERATS3S4TM5arrayRAND[m];
                xSEPERATS4TM7 = xSEPERATS4TM7 + pifSEPERATS3S4TM7arrayRAND[m];
    
                xQuadSEPERATS4TM1 = (xQuadSEPERATS4TM1 + (pifSEPERATS3S4TM1arrayRAND[m]^2));
                xQuadSEPERATS4TM2 = (xQuadSEPERATS4TM2 + (pifSEPERATS3S4TM2arrayRAND[m]^2));
                xQuadSEPERATS4TM3 = (xQuadSEPERATS4TM3 + (pifSEPERATS3S4TM3arrayRAND[m]^2));
                xQuadSEPERATS4TM4 = (xQuadSEPERATS4TM4 + (pifSEPERATS3S4TM4arrayRAND[m]^2));
                xQuadSEPERATS4TM5 = (xQuadSEPERATS4TM5 + (pifSEPERATS3S4TM5arrayRAND[m]^2));
                xQuadSEPERATS4TM7 = (xQuadSEPERATS4TM7 + (pifSEPERATS3S4TM7arrayRAND[m]^2));
    
                ySEPERATS4TM1 = ySEPERATS4TM1 + pifSEPERATS4slaveTM1arrayRAND[m];
                ySEPERATS4TM2 = ySEPERATS4TM2 + pifSEPERATS4slaveTM2arrayRAND[m];
                ySEPERATS4TM3 = ySEPERATS4TM3 + pifSEPERATS4slaveTM3arrayRAND[m];
                ySEPERATS4TM4 = ySEPERATS4TM4 + pifSEPERATS4slaveTM4arrayRAND[m];
                ySEPERATS4TM5 = ySEPERATS4TM5 + pifSEPERATS4slaveTM5arrayRAND[m];
                ySEPERATS4TM7 = ySEPERATS4TM7 + pifSEPERATS4slaveTM7arrayRAND[m];
                
                yQuadSEPERATS4TM1 = (yQuadSEPERATS4TM1 + (pifSEPERATS4slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS4TM2 = (yQuadSEPERATS4TM2 + (pifSEPERATS4slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS4TM3 = (yQuadSEPERATS4TM3 + (pifSEPERATS4slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS4TM4 = (yQuadSEPERATS4TM4 + (pifSEPERATS4slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS4TM5 = (yQuadSEPERATS4TM5 + (pifSEPERATS4slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS4TM7 = (yQuadSEPERATS4TM7 + (pifSEPERATS4slaveTM7arrayRAND[m]^2));
    
                xySEPERATS4TM1 = (xySEPERATS4TM1 + (pifSEPERATS3S4TM1arrayRAND[m] * pifSEPERATS4slaveTM1arrayRAND[m]));
                xySEPERATS4TM2 = (xySEPERATS4TM2 + (pifSEPERATS3S4TM2arrayRAND[m] * pifSEPERATS4slaveTM2arrayRAND[m]));
                xySEPERATS4TM3 = (xySEPERATS4TM3 + (pifSEPERATS3S4TM3arrayRAND[m] * pifSEPERATS4slaveTM3arrayRAND[m]));
                xySEPERATS4TM4 = (xySEPERATS4TM4 + (pifSEPERATS3S4TM4arrayRAND[m] * pifSEPERATS4slaveTM4arrayRAND[m]));
                xySEPERATS4TM5 = (xySEPERATS4TM5 + (pifSEPERATS3S4TM5arrayRAND[m] * pifSEPERATS4slaveTM5arrayRAND[m]));
                xySEPERATS4TM7 = (xySEPERATS4TM7 + (pifSEPERATS3S4TM7arrayRAND[m] * pifSEPERATS4slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS4TM1 = xSEPERATS4TM1 / minPifVAL;
            xAritSEPERATS4TM2 = xSEPERATS4TM2 / minPifVAL;
            xAritSEPERATS4TM3 = xSEPERATS4TM3 / minPifVAL;
            xAritSEPERATS4TM4 = xSEPERATS4TM4 / minPifVAL;
            xAritSEPERATS4TM5 = xSEPERATS4TM5 / minPifVAL;
            xAritSEPERATS4TM7 = xSEPERATS4TM7 / minPifVAL;
    
            yAritSEPERATS4TM1 = ySEPERATS4TM1 / minPifVAL;
            yAritSEPERATS4TM2 = ySEPERATS4TM2 / minPifVAL;
            yAritSEPERATS4TM3 = ySEPERATS4TM3 / minPifVAL;
            yAritSEPERATS4TM4 = ySEPERATS4TM4 / minPifVAL;
            yAritSEPERATS4TM5 = ySEPERATS4TM5 / minPifVAL;
            yAritSEPERATS4TM7 = ySEPERATS4TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4TM1 = (xxAritQuadSEPERATS4TM1 + ((pifSEPERATS3S4TM1arrayRAND[n] - xAritSEPERATS4TM1)^2));
                xxAritQuadSEPERATS4TM2 = (xxAritQuadSEPERATS4TM2 + ((pifSEPERATS3S4TM2arrayRAND[n] - xAritSEPERATS4TM2)^2));
                xxAritQuadSEPERATS4TM3 = (xxAritQuadSEPERATS4TM3 + ((pifSEPERATS3S4TM3arrayRAND[n] - xAritSEPERATS4TM3)^2));
                xxAritQuadSEPERATS4TM4 = (xxAritQuadSEPERATS4TM4 + ((pifSEPERATS3S4TM4arrayRAND[n] - xAritSEPERATS4TM4)^2));
                xxAritQuadSEPERATS4TM5 = (xxAritQuadSEPERATS4TM5 + ((pifSEPERATS3S4TM5arrayRAND[n] - xAritSEPERATS4TM5)^2));
                xxAritQuadSEPERATS4TM7 = (xxAritQuadSEPERATS4TM7 + ((pifSEPERATS3S4TM7arrayRAND[n] - xAritSEPERATS4TM7)^2));
    
                yyAritQuadSEPERATS4TM1 = (yyAritQuadSEPERATS4TM1 + ((pifSEPERATS4slaveTM1arrayRAND[n] - yAritSEPERATS4TM1)^2));
                yyAritQuadSEPERATS4TM2 = (yyAritQuadSEPERATS4TM2 + ((pifSEPERATS4slaveTM2arrayRAND[n] - yAritSEPERATS4TM2)^2));
                yyAritQuadSEPERATS4TM3 = (yyAritQuadSEPERATS4TM3 + ((pifSEPERATS4slaveTM3arrayRAND[n] - yAritSEPERATS4TM3)^2));
                yyAritQuadSEPERATS4TM4 = (yyAritQuadSEPERATS4TM4 + ((pifSEPERATS4slaveTM4arrayRAND[n] - yAritSEPERATS4TM4)^2));
                yyAritQuadSEPERATS4TM5 = (yyAritQuadSEPERATS4TM5 + ((pifSEPERATS4slaveTM5arrayRAND[n] - yAritSEPERATS4TM5)^2));
                yyAritQuadSEPERATS4TM7 = (yyAritQuadSEPERATS4TM7 + ((pifSEPERATS4slaveTM7arrayRAND[n] - yAritSEPERATS4TM7)^2));
    
                qXYSEPERATS4TM1 = (qXYSEPERATS4TM1 + ((pifSEPERATS3S4TM1arrayRAND[n] - xAritSEPERATS4TM1) * (pifSEPERATS4slaveTM1arrayRAND[n] - yAritSEPERATS4TM1)));
                qXYSEPERATS4TM2 = (qXYSEPERATS4TM2 + ((pifSEPERATS3S4TM2arrayRAND[n] - xAritSEPERATS4TM2) * (pifSEPERATS4slaveTM2arrayRAND[n] - yAritSEPERATS4TM2)));
                qXYSEPERATS4TM3 = (qXYSEPERATS4TM3 + ((pifSEPERATS3S4TM3arrayRAND[n] - xAritSEPERATS4TM3) * (pifSEPERATS4slaveTM3arrayRAND[n] - yAritSEPERATS4TM3)));
                qXYSEPERATS4TM4 = (qXYSEPERATS4TM4 + ((pifSEPERATS3S4TM4arrayRAND[n] - xAritSEPERATS4TM4) * (pifSEPERATS4slaveTM4arrayRAND[n] - yAritSEPERATS4TM4)));
                qXYSEPERATS4TM5 = (qXYSEPERATS4TM5 + ((pifSEPERATS3S4TM5arrayRAND[n] - xAritSEPERATS4TM5) * (pifSEPERATS4slaveTM5arrayRAND[n] - yAritSEPERATS4TM5)));
                qXYSEPERATS4TM7 = (qXYSEPERATS4TM7 + ((pifSEPERATS3S4TM7arrayRAND[n] - xAritSEPERATS4TM7) * (pifSEPERATS4slaveTM7arrayRAND[n] - yAritSEPERATS4TM7)));
            }
        
            aSEPERATS4TM1 = (((xQuadSEPERATS4TM1 * ySEPERATS4TM1) - (xSEPERATS4TM1 * xySEPERATS4TM1)) / ((minPifVAL * xQuadSEPERATS4TM1) - (xSEPERATS4TM1^2)));
            aSEPERATS4TM2 = (((xQuadSEPERATS4TM2 * ySEPERATS4TM2) - (xSEPERATS4TM2 * xySEPERATS4TM2)) / ((minPifVAL * xQuadSEPERATS4TM2) - (xSEPERATS4TM2^2)));
            aSEPERATS4TM3 = (((xQuadSEPERATS4TM3 * ySEPERATS4TM3) - (xSEPERATS4TM3 * xySEPERATS4TM3)) / ((minPifVAL * xQuadSEPERATS4TM3) - (xSEPERATS4TM3^2)));
            aSEPERATS4TM4 = (((xQuadSEPERATS4TM4 * ySEPERATS4TM4) - (xSEPERATS4TM4 * xySEPERATS4TM4)) / ((minPifVAL * xQuadSEPERATS4TM4) - (xSEPERATS4TM4^2)));
            aSEPERATS4TM5 = (((xQuadSEPERATS4TM5 * ySEPERATS4TM5) - (xSEPERATS4TM5 * xySEPERATS4TM5)) / ((minPifVAL * xQuadSEPERATS4TM5) - (xSEPERATS4TM5^2)));
            aSEPERATS4TM7 = (((xQuadSEPERATS4TM7 * ySEPERATS4TM7) - (xSEPERATS4TM7 * xySEPERATS4TM7)) / ((minPifVAL * xQuadSEPERATS4TM7) - (xSEPERATS4TM7^2)));
            
            bSEPERATS4TM1 = qXYSEPERATS4TM1 / xxAritQuadSEPERATS4TM1;
            bSEPERATS4TM2 = qXYSEPERATS4TM2 / xxAritQuadSEPERATS4TM2;
            bSEPERATS4TM3 = qXYSEPERATS4TM3 / xxAritQuadSEPERATS4TM3;
            bSEPERATS4TM4 = qXYSEPERATS4TM4 / xxAritQuadSEPERATS4TM4;
            bSEPERATS4TM5 = qXYSEPERATS4TM5 / xxAritQuadSEPERATS4TM5;
            bSEPERATS4TM7 = qXYSEPERATS4TM7 / xxAritQuadSEPERATS4TM7;
    
            rSEPERATS4TM1 = (qXYSEPERATS4TM1 / ((xxAritQuadSEPERATS4TM1 * yyAritQuadSEPERATS4TM1)^0.5));
            rSEPERATS4TM2 = (qXYSEPERATS4TM2 / ((xxAritQuadSEPERATS4TM2 * yyAritQuadSEPERATS4TM2)^0.5));
            rSEPERATS4TM3 = (qXYSEPERATS4TM3 / ((xxAritQuadSEPERATS4TM3 * yyAritQuadSEPERATS4TM3)^0.5));
            rSEPERATS4TM4 = (qXYSEPERATS4TM4 / ((xxAritQuadSEPERATS4TM4 * yyAritQuadSEPERATS4TM4)^0.5));
            rSEPERATS4TM5 = (qXYSEPERATS4TM5 / ((xxAritQuadSEPERATS4TM5 * yyAritQuadSEPERATS4TM5)^0.5));
            rSEPERATS4TM7 = (qXYSEPERATS4TM7 / ((xxAritQuadSEPERATS4TM7 * yyAritQuadSEPERATS4TM7)^0.5));
    
            rQuadSEPERATS4TM1 = ((rSEPERATS4TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4TM2 = ((rSEPERATS4TM2^2) * 100);
            rQuadSEPERATS4TM3 = ((rSEPERATS4TM3^2) * 100);
            rQuadSEPERATS4TM4 = ((rSEPERATS4TM4^2) * 100);
            rQuadSEPERATS4TM5 = ((rSEPERATS4TM5^2) * 100);
            rQuadSEPERATS4TM7 = ((rSEPERATS4TM7^2) * 100);
        
            syxSEPERATS4TM1 = (((yyAritQuadSEPERATS4TM1 - ((qXYSEPERATS4TM1^2) / xxAritQuadSEPERATS4TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM2 = (((yyAritQuadSEPERATS4TM2 - ((qXYSEPERATS4TM2^2) / xxAritQuadSEPERATS4TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM3 = (((yyAritQuadSEPERATS4TM3 - ((qXYSEPERATS4TM3^2) / xxAritQuadSEPERATS4TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM4 = (((yyAritQuadSEPERATS4TM4 - ((qXYSEPERATS4TM4^2) / xxAritQuadSEPERATS4TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM5 = (((yyAritQuadSEPERATS4TM5 - ((qXYSEPERATS4TM5^2) / xxAritQuadSEPERATS4TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4TM7 = (((yyAritQuadSEPERATS4TM7 - ((qXYSEPERATS4TM7^2) / xxAritQuadSEPERATS4TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4TM1 = (((syxSEPERATS4TM1^2) / xxAritQuadSEPERATS4TM1)^0.5);
            bStandSEPERATS4TM2 = (((syxSEPERATS4TM2^2) / xxAritQuadSEPERATS4TM2)^0.5);
            bStandSEPERATS4TM3 = (((syxSEPERATS4TM3^2) / xxAritQuadSEPERATS4TM3)^0.5);
            bStandSEPERATS4TM4 = (((syxSEPERATS4TM4^2) / xxAritQuadSEPERATS4TM4)^0.5);
            bStandSEPERATS4TM5 = (((syxSEPERATS4TM5^2) / xxAritQuadSEPERATS4TM5)^0.5);
            bStandSEPERATS4TM7 = (((syxSEPERATS4TM7^2) / xxAritQuadSEPERATS4TM7)^0.5);
    
            aStandSEPERATS4TM1 = (bStandSEPERATS4TM1 * ((xQuadSEPERATS4TM1 / minPifVAL)^0.5));
            aStandSEPERATS4TM2 = (bStandSEPERATS4TM2 * ((xQuadSEPERATS4TM2 / minPifVAL)^0.5));
            aStandSEPERATS4TM3 = (bStandSEPERATS4TM3 * ((xQuadSEPERATS4TM3 / minPifVAL)^0.5));
            aStandSEPERATS4TM4 = (bStandSEPERATS4TM4 * ((xQuadSEPERATS4TM4 / minPifVAL)^0.5));
            aStandSEPERATS4TM5 = (bStandSEPERATS4TM5 * ((xQuadSEPERATS4TM5 / minPifVAL)^0.5));
            aStandSEPERATS4TM7 = (bStandSEPERATS4TM7 * ((xQuadSEPERATS4TM7 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM1, bSEPERATS4TM1, rSEPERATS4TM1, rQuadSEPERATS4TM1, aStandSEPERATS4TM1, bStandSEPERATS4TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM2, bSEPERATS4TM2, rSEPERATS4TM2, rQuadSEPERATS4TM2, aStandSEPERATS4TM2, bStandSEPERATS4TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM3, bSEPERATS4TM3, rSEPERATS4TM3, rQuadSEPERATS4TM3, aStandSEPERATS4TM3, bStandSEPERATS4TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM4, bSEPERATS4TM4, rSEPERATS4TM4, rQuadSEPERATS4TM4, aStandSEPERATS4TM4, bStandSEPERATS4TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4TM5, bSEPERATS4TM5, rSEPERATS4TM5, rQuadSEPERATS4TM5, aStandSEPERATS4TM5, bStandSEPERATS4TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS4TM7, bSEPERATS4TM7, rSEPERATS4TM7, rQuadSEPERATS4TM7, aStandSEPERATS4TM7, bStandSEPERATS4TM7);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS4slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS4slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS4slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS4slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS4slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS4slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS4slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT4TM1[i,j] = (aSEPERATS4TM1 + (bSEPERATS4TM1 * REFS4TM1[i,j]));
                    OUT4TM2[i,j] = (aSEPERATS4TM2 + (bSEPERATS4TM2 * REFS4TM2[i,j]));
                    OUT4TM3[i,j] = (aSEPERATS4TM3 + (bSEPERATS4TM3 * REFS4TM3[i,j]));
                    OUT4TM4[i,j] = (aSEPERATS4TM4 + (bSEPERATS4TM4 * REFS4TM4[i,j]));
                    OUT4TM5[i,j] = (aSEPERATS4TM5 + (bSEPERATS4TM5 * REFS4TM5[i,j]));
                    OUT4TM7[i,j] = (aSEPERATS4TM7 + (bSEPERATS4TM7 * REFS4TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT4TM1);
        	CreatePyramid(OUT4TM2);
        	CreatePyramid(OUT4TM3);
        	CreatePyramid(OUT4TM4);
        	CreatePyramid(OUT4TM5);
        	CreatePyramid(OUT4TM7);
        
        	CreateHistogram(OUT4TM1);
        	CreateHistogram(OUT4TM2);
        	CreateHistogram(OUT4TM3);
        	CreateHistogram(OUT4TM4);
        	CreateHistogram(OUT4TM5);
        	CreateHistogram(OUT4TM7);
            CloseRaster(REFS4TM1);
            CloseRaster(REFS4TM2);
            CloseRaster(REFS4TM3);
            CloseRaster(REFS4TM4);
            CloseRaster(REFS4TM5);
            CloseRaster(REFS4TM7);
    
            CloseRaster(OUT4TM1);
            CloseRaster(OUT4TM2);
            CloseRaster(OUT4TM3);
            CloseRaster(OUT4TM4);
            CloseRaster(OUT4TM5);
            CloseRaster(OUT4TM7);
        
        	printf("Scene 4 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS4MSS1, xAritSEPERATS4MSS2, xAritSEPERATS4MSS4;
            numeric yAritSEPERATS4MSS1, yAritSEPERATS4MSS2, yAritSEPERATS4MSS4;
    
            numeric aSEPERATS4MSS1, aSEPERATS4MSS2, aSEPERATS4MSS4;
            numeric bSEPERATS4MSS1, bSEPERATS4MSS2, bSEPERATS4MSS4;
            numeric rSEPERATS4MSS1, rSEPERATS4MSS2, rSEPERATS4MSS4;
            numeric rQuadSEPERATS4MSS1, rQuadSEPERATS4MSS2, rQuadSEPERATS4MSS4;
            numeric syxSEPERATS4MSS1, syxSEPERATS4MSS2, syxSEPERATS4MSS4;
            numeric bStandSEPERATS4MSS1, bStandSEPERATS4MSS2, bStandSEPERATS4MSS4;
            numeric aStandSEPERATS4MSS1, aStandSEPERATS4MSS2, aStandSEPERATS4MSS4;
    
            numeric xSEPERATS4MSS1 = 0;
            numeric xSEPERATS4MSS2 = 0;
            numeric xSEPERATS4MSS4 = 0;
    
            numeric xQuadSEPERATS4MSS1 = 0;
            numeric xQuadSEPERATS4MSS2 = 0;
            numeric xQuadSEPERATS4MSS4 = 0;
    
            numeric ySEPERATS4MSS1 = 0;
            numeric ySEPERATS4MSS2 = 0;
            numeric ySEPERATS4MSS4 = 0;
    
            numeric yQuadSEPERATS4MSS1 = 0;
            numeric yQuadSEPERATS4MSS2 = 0;
            numeric yQuadSEPERATS4MSS4 = 0;
    
            numeric xySEPERATS4MSS1 = 0;
            numeric xySEPERATS4MSS2 = 0;
            numeric xySEPERATS4MSS4 = 0;
    
            numeric xxAritQuadSEPERATS4MSS1 = 0;
            numeric xxAritQuadSEPERATS4MSS2 = 0;
            numeric xxAritQuadSEPERATS4MSS4 = 0;
    
            numeric yyAritQuadSEPERATS4MSS1 = 0;
            numeric yyAritQuadSEPERATS4MSS2 = 0;
            numeric yyAritQuadSEPERATS4MSS4 = 0;
    
            numeric qXYSEPERATS4MSS1 = 0;
            numeric qXYSEPERATS4MSS2 = 0;
            numeric qXYSEPERATS4MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS4MSS1 = xSEPERATS4MSS1 + pifSEPERATS3S4TM2arrayRAND[m];
                xSEPERATS4MSS2 = xSEPERATS4MSS2 + pifSEPERATS3S4TM3arrayRAND[m];
                xSEPERATS4MSS4 = xSEPERATS4MSS4 + pifSEPERATS3S4TM4arrayRAND[m];
    
                xQuadSEPERATS4MSS1 = (xQuadSEPERATS4MSS1 + (pifSEPERATS3S4TM2arrayRAND[m]^2));
                xQuadSEPERATS4MSS2 = (xQuadSEPERATS4MSS2 + (pifSEPERATS3S4TM3arrayRAND[m]^2));
                xQuadSEPERATS4MSS4 = (xQuadSEPERATS4MSS4 + (pifSEPERATS3S4TM4arrayRAND[m]^2));
    
                ySEPERATS4MSS1 = ySEPERATS4MSS1 + pifSEPERATS4slaveMSS1arrayRAND[m];
                ySEPERATS4MSS2 = ySEPERATS4MSS2 + pifSEPERATS4slaveMSS2arrayRAND[m];
                ySEPERATS4MSS4 = ySEPERATS4MSS4 + pifSEPERATS4slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS4MSS1 = (yQuadSEPERATS4MSS1 + (pifSEPERATS4slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS4MSS2 = (yQuadSEPERATS4MSS2 + (pifSEPERATS4slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS4MSS4 = (yQuadSEPERATS4MSS4 + (pifSEPERATS4slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS4MSS1 = (xySEPERATS4MSS1 + (pifSEPERATS3S4TM2arrayRAND[m] * pifSEPERATS4slaveMSS1arrayRAND[m]));
                xySEPERATS4MSS2 = (xySEPERATS4MSS2 + (pifSEPERATS3S4TM3arrayRAND[m] * pifSEPERATS4slaveMSS2arrayRAND[m]));
                xySEPERATS4MSS4 = (xySEPERATS4MSS4 + (pifSEPERATS3S4TM4arrayRAND[m] * pifSEPERATS4slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS4MSS1 = xSEPERATS4MSS1 / minPifVAL;
            xAritSEPERATS4MSS2 = xSEPERATS4MSS2 / minPifVAL;
            xAritSEPERATS4MSS4 = xSEPERATS4MSS4 / minPifVAL;
    
            yAritSEPERATS4MSS1 = ySEPERATS4MSS1 / minPifVAL;
            yAritSEPERATS4MSS2 = ySEPERATS4MSS2 / minPifVAL;
            yAritSEPERATS4MSS4 = ySEPERATS4MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4MSS1 = (xxAritQuadSEPERATS4MSS1 + ((pifSEPERATS3S4TM2arrayRAND[n] - xAritSEPERATS4MSS1)^2));
                xxAritQuadSEPERATS4MSS2 = (xxAritQuadSEPERATS4MSS2 + ((pifSEPERATS3S4TM3arrayRAND[n] - xAritSEPERATS4MSS2)^2));
                xxAritQuadSEPERATS4MSS4 = (xxAritQuadSEPERATS4MSS4 + ((pifSEPERATS3S4TM4arrayRAND[n] - xAritSEPERATS4MSS4)^2));
    
                yyAritQuadSEPERATS4MSS1 = (yyAritQuadSEPERATS4MSS1 + ((pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)^2));
                yyAritQuadSEPERATS4MSS2 = (yyAritQuadSEPERATS4MSS2 + ((pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)^2));
                yyAritQuadSEPERATS4MSS4 = (yyAritQuadSEPERATS4MSS4 + ((pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)^2));
    
                qXYSEPERATS4MSS1 = (qXYSEPERATS4MSS1 + ((pifSEPERATS3S4TM2arrayRAND[n] - xAritSEPERATS4MSS1) * (pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)));
                qXYSEPERATS4MSS2 = (qXYSEPERATS4MSS2 + ((pifSEPERATS3S4TM3arrayRAND[n] - xAritSEPERATS4MSS2) * (pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)));
                qXYSEPERATS4MSS4 = (qXYSEPERATS4MSS4 + ((pifSEPERATS3S4TM4arrayRAND[n] - xAritSEPERATS4MSS4) * (pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)));
            }
        
            aSEPERATS4MSS1 = (((xQuadSEPERATS4MSS1 * ySEPERATS4MSS1) - (xSEPERATS4MSS1 * xySEPERATS4MSS1)) / ((minPifVAL * xQuadSEPERATS4MSS1) - (xSEPERATS4MSS1^2)));
            aSEPERATS4MSS2 = (((xQuadSEPERATS4MSS2 * ySEPERATS4MSS2) - (xSEPERATS4MSS2 * xySEPERATS4MSS2)) / ((minPifVAL * xQuadSEPERATS4MSS2) - (xSEPERATS4MSS2^2)));
            aSEPERATS4MSS4 = (((xQuadSEPERATS4MSS4 * ySEPERATS4MSS4) - (xSEPERATS4MSS4 * xySEPERATS4MSS4)) / ((minPifVAL * xQuadSEPERATS4MSS4) - (xSEPERATS4MSS4^2)));
            
            bSEPERATS4MSS1 = qXYSEPERATS4MSS1 / xxAritQuadSEPERATS4MSS1;
            bSEPERATS4MSS2 = qXYSEPERATS4MSS2 / xxAritQuadSEPERATS4MSS2;
            bSEPERATS4MSS4 = qXYSEPERATS4MSS4 / xxAritQuadSEPERATS4MSS4;
    
            rSEPERATS4MSS1 = (qXYSEPERATS4MSS1 / ((xxAritQuadSEPERATS4MSS1 * yyAritQuadSEPERATS4MSS1)^0.5));
            rSEPERATS4MSS2 = (qXYSEPERATS4MSS2 / ((xxAritQuadSEPERATS4MSS2 * yyAritQuadSEPERATS4MSS2)^0.5));
            rSEPERATS4MSS4 = (qXYSEPERATS4MSS4 / ((xxAritQuadSEPERATS4MSS4 * yyAritQuadSEPERATS4MSS4)^0.5));
    
            rQuadSEPERATS4MSS1 = ((rSEPERATS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4MSS2 = ((rSEPERATS4MSS2^2) * 100);
            rQuadSEPERATS4MSS4 = ((rSEPERATS4MSS4^2) * 100);
        
            syxSEPERATS4MSS1 = (((yyAritQuadSEPERATS4MSS1 - ((qXYSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS2 = (((yyAritQuadSEPERATS4MSS2 - ((qXYSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS4 = (((yyAritQuadSEPERATS4MSS4 - ((qXYSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4MSS1 = (((syxSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)^0.5);
            bStandSEPERATS4MSS2 = (((syxSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)^0.5);
            bStandSEPERATS4MSS4 = (((syxSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)^0.5);
    
            aStandSEPERATS4MSS1 = (bStandSEPERATS4MSS1 * ((xQuadSEPERATS4MSS1 / minPifVAL)^0.5));
            aStandSEPERATS4MSS2 = (bStandSEPERATS4MSS2 * ((xQuadSEPERATS4MSS2 / minPifVAL)^0.5));
            aStandSEPERATS4MSS4 = (bStandSEPERATS4MSS4 * ((xQuadSEPERATS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS1, bSEPERATS4MSS1, rSEPERATS4MSS1, rQuadSEPERATS4MSS1, aStandSEPERATS4MSS1, bStandSEPERATS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS2, bSEPERATS4MSS2, rSEPERATS4MSS2, rQuadSEPERATS4MSS2, aStandSEPERATS4MSS2, bStandSEPERATS4MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS4, bSEPERATS4MSS4, rSEPERATS4MSS4, rQuadSEPERATS4MSS4, aStandSEPERATS4MSS4, bStandSEPERATS4MSS4);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS4slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS4slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS4slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aSEPERATS4MSS1 + (bSEPERATS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aSEPERATS4MSS2 + (bSEPERATS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = REFS4MSS3[i,j];
                    OUT4MSS4[i,j] = (aSEPERATS4MSS4 + (bSEPERATS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT4MSS1);
            CreatePyramid(OUT4MSS2);
            CreatePyramid(OUT4MSS3);
            CreatePyramid(OUT4MSS4);
        
            CreateHistogram(OUT4MSS1);
            CreateHistogram(OUT4MSS2);
            CreateHistogram(OUT4MSS3);
            CreateHistogram(OUT4MSS4);
            
            CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
        }
        
        else
        {
        printf("Scene 3 - Master Scene (MSS):\n");
        printf("Scene 3 array values used for regression computation:\n");
	    printf("For Scene 3 (Master) and Slave (Scene 1):");
        printf("MSS1: %12f ", pifSEPERATS3S1MSS1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S1MSS1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S1MSS1arrayRAND[minPifVAL]);
    
        printf("MSS2: %12f ", pifSEPERATS3S1MSS2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S1MSS2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S1MSS2arrayRAND[minPifVAL]);
    
        printf("MSS3: %12f ", pifSEPERATS3S1MSS3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S1MSS3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S1MSS3arrayRAND[minPifVAL]);
    
        printf("MSS4: %12f ", pifSEPERATS3S1MSS4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S1MSS4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S1MSS4arrayRAND[minPifVAL]);
    
        
	    printf("For Scene 3 (Master) and Slave (Scene 2):");
        printf("MSS1: %12f ", pifSEPERATS3S2MSS1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S2MSS1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S2MSS1arrayRAND[minPifVAL]);
    
        printf("MSS2: %12f ", pifSEPERATS3S2MSS2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S2MSS2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S2MSS2arrayRAND[minPifVAL]);
    
        printf("MSS3: %12f ", pifSEPERATS3S2MSS3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S2MSS3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S2MSS3arrayRAND[minPifVAL]);
    
        printf("MSS4: %12f ", pifSEPERATS3S2MSS4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S2MSS4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S2MSS4arrayRAND[minPifVAL]);
	    printf("For Scene 3 (Master) and Slave (Scene 4):");
        printf("MSS1: %12f ", pifSEPERATS3S4MSS1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S4MSS1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S4MSS1arrayRAND[minPifVAL]);
    
        printf("MSS2: %12f ", pifSEPERATS3S4MSS2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S4MSS2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S4MSS2arrayRAND[minPifVAL]);
    
        printf("MSS3: %12f ", pifSEPERATS3S4MSS3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S4MSS3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S4MSS3arrayRAND[minPifVAL]);
    
        printf("MSS4: %12f ", pifSEPERATS3S4MSS4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS3S4MSS4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS3S4MSS4arrayRAND[minPifVAL]);
                for i = 1 to MSSlins
                {
                    for j = 1 to MSScols
                    {
                    OUT3MSS1[i,j] = REFS3MSS1[i,j];
                    OUT3MSS2[i,j] = REFS3MSS2[i,j];
                    OUT3MSS3[i,j] = REFS3MSS3[i,j];
                    OUT3MSS4[i,j] = REFS3MSS4[i,j];
                    }
                }
            
        CreatePyramid(OUT3MSS1);
        CreatePyramid(OUT3MSS2);
        CreatePyramid(OUT3MSS3);
        CreatePyramid(OUT3MSS4);
        
        CreateHistogram(OUT3MSS1);
        CreateHistogram(OUT3MSS2);
        CreateHistogram(OUT3MSS3);
        CreateHistogram(OUT3MSS4);
        
        CloseRaster(REFS3MSS1);
        CloseRaster(REFS3MSS2);
        CloseRaster(REFS3MSS3);
        CloseRaster(REFS3MSS4);
        
        CloseRaster(OUT3MSS1);
        CloseRaster(OUT3MSS2);
        CloseRaster(OUT3MSS3);
        CloseRaster(OUT3MSS4);
            
        printf("Scene 3 (Master) output was written, histogram created and pyramid written...\n\n\n");
                
            if ( sensors1 == 7 )
            {
        		printf("Master: Scene 3 (MSS), Slave: Scene 1 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors1 == 6 )
            {
         		printf("Master: Scene 3 (MSS), Slave: Scene 1 (TM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS1MSS1, xAritSEPERATS1MSS2, xAritSEPERATS1MSS3, xAritSEPERATS1MSS4;
            numeric yAritSEPERATS1MSS1, yAritSEPERATS1MSS2, yAritSEPERATS1MSS3, yAritSEPERATS1MSS4;
    
            numeric aSEPERATS1MSS1, aSEPERATS1MSS2, aSEPERATS1MSS3, aSEPERATS1MSS4;
            numeric bSEPERATS1MSS1, bSEPERATS1MSS2, bSEPERATS1MSS3, bSEPERATS1MSS4;
            numeric rSEPERATS1MSS1, rSEPERATS1MSS2, rSEPERATS1MSS3, rSEPERATS1MSS4;
            numeric rQuadSEPERATS1MSS1, rQuadSEPERATS1MSS2, rQuadSEPERATS1MSS3, rQuadSEPERATS1MSS4;
            numeric syxSEPERATS1MSS1, syxSEPERATS1MSS2, syxSEPERATS1MSS3, syxSEPERATS1MSS4;
            numeric bStandSEPERATS1MSS1, bStandSEPERATS1MSS2, bStandSEPERATS1MSS3, bStandSEPERATS1MSS4;
            numeric aStandSEPERATS1MSS1, aStandSEPERATS1MSS2, aStandSEPERATS1MSS3, aStandSEPERATS1MSS4;
    
            numeric xSEPERATS1MSS1 = 0;
            numeric xSEPERATS1MSS2 = 0;
            numeric xSEPERATS1MSS3 = 0;
            numeric xSEPERATS1MSS4 = 0;
    
            numeric xQuadSEPERATS1MSS1 = 0;
            numeric xQuadSEPERATS1MSS2 = 0;
            numeric xQuadSEPERATS1MSS3 = 0;
            numeric xQuadSEPERATS1MSS4 = 0;
    
            numeric ySEPERATS1MSS1 = 0;
            numeric ySEPERATS1MSS2 = 0;
            numeric ySEPERATS1MSS3 = 0;
            numeric ySEPERATS1MSS4 = 0;
    
            numeric yQuadSEPERATS1MSS1 = 0;
            numeric yQuadSEPERATS1MSS2 = 0;
            numeric yQuadSEPERATS1MSS3 = 0;
            numeric yQuadSEPERATS1MSS4 = 0;
    
            numeric xySEPERATS1MSS1 = 0;
            numeric xySEPERATS1MSS2 = 0;
            numeric xySEPERATS1MSS3 = 0;
            numeric xySEPERATS1MSS4 = 0;
    
            numeric xxAritQuadSEPERATS1MSS1 = 0;
            numeric xxAritQuadSEPERATS1MSS2 = 0;
            numeric xxAritQuadSEPERATS1MSS3 = 0;
            numeric xxAritQuadSEPERATS1MSS4 = 0;
    
            numeric yyAritQuadSEPERATS1MSS1 = 0;
            numeric yyAritQuadSEPERATS1MSS2 = 0;
            numeric yyAritQuadSEPERATS1MSS3 = 0;
            numeric yyAritQuadSEPERATS1MSS4 = 0;
    
            numeric qXYSEPERATS1MSS1 = 0;
            numeric qXYSEPERATS1MSS2 = 0;
            numeric qXYSEPERATS1MSS3 = 0;
            numeric qXYSEPERATS1MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1MSS1 = xSEPERATS1MSS1 + pifSEPERATS3S1MSS1arrayRAND[m];
                xSEPERATS1MSS2 = xSEPERATS1MSS2 + pifSEPERATS3S1MSS2arrayRAND[m];
                xSEPERATS1MSS3 = xSEPERATS1MSS3 + pifSEPERATS3S1MSS3arrayRAND[m];
                xSEPERATS1MSS4 = xSEPERATS1MSS4 + pifSEPERATS3S1MSS4arrayRAND[m];
    
                xQuadSEPERATS1MSS1 = (xQuadSEPERATS1MSS1 + (pifSEPERATS3S1MSS1arrayRAND[m]^2));
                xQuadSEPERATS1MSS2 = (xQuadSEPERATS1MSS2 + (pifSEPERATS3S1MSS2arrayRAND[m]^2));
                xQuadSEPERATS1MSS3 = (xQuadSEPERATS1MSS3 + (pifSEPERATS3S1MSS3arrayRAND[m]^2));
                xQuadSEPERATS1MSS4 = (xQuadSEPERATS1MSS4 + (pifSEPERATS3S1MSS4arrayRAND[m]^2));
    
                ySEPERATS1MSS1 = ySEPERATS1MSS1 + pifSEPERATS1slaveMSS1arrayRAND[m];
                ySEPERATS1MSS2 = ySEPERATS1MSS2 + pifSEPERATS1slaveMSS2arrayRAND[m];
                ySEPERATS1MSS3 = ySEPERATS1MSS3 + pifSEPERATS1slaveMSS3arrayRAND[m];
                ySEPERATS1MSS4 = ySEPERATS1MSS4 + pifSEPERATS1slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS1MSS1 = (yQuadSEPERATS1MSS1 + (pifSEPERATS1slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS1MSS2 = (yQuadSEPERATS1MSS2 + (pifSEPERATS1slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS1MSS3 = (yQuadSEPERATS1MSS3 + (pifSEPERATS1slaveMSS3arrayRAND[m]^2));
                yQuadSEPERATS1MSS4 = (yQuadSEPERATS1MSS4 + (pifSEPERATS1slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS1MSS1 = (xySEPERATS1MSS1 + (pifSEPERATS3S1MSS1arrayRAND[m] * pifSEPERATS1slaveMSS1arrayRAND[m]));
                xySEPERATS1MSS2 = (xySEPERATS1MSS2 + (pifSEPERATS3S1MSS2arrayRAND[m] * pifSEPERATS1slaveMSS2arrayRAND[m]));
                xySEPERATS1MSS3 = (xySEPERATS1MSS3 + (pifSEPERATS3S1MSS3arrayRAND[m] * pifSEPERATS1slaveMSS3arrayRAND[m]));
                xySEPERATS1MSS4 = (xySEPERATS1MSS4 + (pifSEPERATS3S1MSS4arrayRAND[m] * pifSEPERATS1slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS1MSS1 = xSEPERATS1MSS1 / minPifVAL;
            xAritSEPERATS1MSS2 = xSEPERATS1MSS2 / minPifVAL;
            xAritSEPERATS1MSS3 = xSEPERATS1MSS3 / minPifVAL;
            xAritSEPERATS1MSS4 = xSEPERATS1MSS4 / minPifVAL;
    
            yAritSEPERATS1MSS1 = ySEPERATS1MSS1 / minPifVAL;
            yAritSEPERATS1MSS2 = ySEPERATS1MSS2 / minPifVAL;
            yAritSEPERATS1MSS3 = ySEPERATS1MSS3 / minPifVAL;
            yAritSEPERATS1MSS4 = ySEPERATS1MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1MSS1 = (xxAritQuadSEPERATS1MSS1 + ((pifSEPERATS3S1MSS1arrayRAND[n] - xAritSEPERATS1MSS1)^2));
                xxAritQuadSEPERATS1MSS2 = (xxAritQuadSEPERATS1MSS2 + ((pifSEPERATS3S1MSS2arrayRAND[n] - xAritSEPERATS1MSS2)^2));
                xxAritQuadSEPERATS1MSS3 = (xxAritQuadSEPERATS1MSS3 + ((pifSEPERATS3S1MSS3arrayRAND[n] - xAritSEPERATS1MSS3)^2));
                xxAritQuadSEPERATS1MSS4 = (xxAritQuadSEPERATS1MSS4 + ((pifSEPERATS3S1MSS4arrayRAND[n] - xAritSEPERATS1MSS4)^2));
    
                yyAritQuadSEPERATS1MSS1 = (yyAritQuadSEPERATS1MSS1 + ((pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)^2));
                yyAritQuadSEPERATS1MSS2 = (yyAritQuadSEPERATS1MSS2 + ((pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)^2));
                yyAritQuadSEPERATS1MSS3 = (yyAritQuadSEPERATS1MSS3 + ((pifSEPERATS1slaveMSS3arrayRAND[n] - yAritSEPERATS1MSS3)^2));
                yyAritQuadSEPERATS1MSS4 = (yyAritQuadSEPERATS1MSS4 + ((pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)^2));
    
                qXYSEPERATS1MSS1 = (qXYSEPERATS1MSS1 + ((pifSEPERATS3S1MSS1arrayRAND[n] - xAritSEPERATS1MSS1) * (pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)));
                qXYSEPERATS1MSS2 = (qXYSEPERATS1MSS2 + ((pifSEPERATS3S1MSS2arrayRAND[n] - xAritSEPERATS1MSS2) * (pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)));
                qXYSEPERATS1MSS3 = (qXYSEPERATS1MSS3 + ((pifSEPERATS3S1MSS3arrayRAND[n] - xAritSEPERATS1MSS3) * (pifSEPERATS1slaveMSS3arrayRAND[n] - yAritSEPERATS1MSS3)));
                qXYSEPERATS1MSS4 = (qXYSEPERATS1MSS4 + ((pifSEPERATS3S1MSS4arrayRAND[n] - xAritSEPERATS1MSS4) * (pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)));
            }
        
            aSEPERATS1MSS1 = (((xQuadSEPERATS1MSS1 * ySEPERATS1MSS1) - (xSEPERATS1MSS1 * xySEPERATS1MSS1)) / ((minPifVAL * xQuadSEPERATS1MSS1) - (xSEPERATS1MSS1^2)));
            aSEPERATS1MSS2 = (((xQuadSEPERATS1MSS2 * ySEPERATS1MSS2) - (xSEPERATS1MSS2 * xySEPERATS1MSS2)) / ((minPifVAL * xQuadSEPERATS1MSS2) - (xSEPERATS1MSS2^2)));
            aSEPERATS1MSS3 = (((xQuadSEPERATS1MSS3 * ySEPERATS1MSS3) - (xSEPERATS1MSS3 * xySEPERATS1MSS3)) / ((minPifVAL * xQuadSEPERATS1MSS3) - (xSEPERATS1MSS3^2)));
            aSEPERATS1MSS4 = (((xQuadSEPERATS1MSS4 * ySEPERATS1MSS4) - (xSEPERATS1MSS4 * xySEPERATS1MSS4)) / ((minPifVAL * xQuadSEPERATS1MSS4) - (xSEPERATS1MSS4^2)));
            
            bSEPERATS1MSS1 = qXYSEPERATS1MSS1 / xxAritQuadSEPERATS1MSS1;
            bSEPERATS1MSS2 = qXYSEPERATS1MSS2 / xxAritQuadSEPERATS1MSS2;
            bSEPERATS1MSS3 = qXYSEPERATS1MSS3 / xxAritQuadSEPERATS1MSS3;
            bSEPERATS1MSS4 = qXYSEPERATS1MSS4 / xxAritQuadSEPERATS1MSS4;
    
            rSEPERATS1MSS1 = (qXYSEPERATS1MSS1 / ((xxAritQuadSEPERATS1MSS1 * yyAritQuadSEPERATS1MSS1)^0.5));
            rSEPERATS1MSS2 = (qXYSEPERATS1MSS2 / ((xxAritQuadSEPERATS1MSS2 * yyAritQuadSEPERATS1MSS2)^0.5));
            rSEPERATS1MSS3 = (qXYSEPERATS1MSS3 / ((xxAritQuadSEPERATS1MSS3 * yyAritQuadSEPERATS1MSS3)^0.5));
            rSEPERATS1MSS4 = (qXYSEPERATS1MSS4 / ((xxAritQuadSEPERATS1MSS4 * yyAritQuadSEPERATS1MSS4)^0.5));
    
            rQuadSEPERATS1MSS1 = ((rSEPERATS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1MSS2 = ((rSEPERATS1MSS2^2) * 100);
            rQuadSEPERATS1MSS3 = ((rSEPERATS1MSS3^2) * 100);
            rQuadSEPERATS1MSS4 = ((rSEPERATS1MSS4^2) * 100);
        
            syxSEPERATS1MSS1 = (((yyAritQuadSEPERATS1MSS1 - ((qXYSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS2 = (((yyAritQuadSEPERATS1MSS2 - ((qXYSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS3 = (((yyAritQuadSEPERATS1MSS3 - ((qXYSEPERATS1MSS3^2) / xxAritQuadSEPERATS1MSS3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS4 = (((yyAritQuadSEPERATS1MSS4 - ((qXYSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1MSS1 = (((syxSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)^0.5);
            bStandSEPERATS1MSS2 = (((syxSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)^0.5);
            bStandSEPERATS1MSS3 = (((syxSEPERATS1MSS3^2) / xxAritQuadSEPERATS1MSS3)^0.5);
            bStandSEPERATS1MSS4 = (((syxSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)^0.5);
    
            aStandSEPERATS1MSS1 = (bStandSEPERATS1MSS1 * ((xQuadSEPERATS1MSS1 / minPifVAL)^0.5));
            aStandSEPERATS1MSS2 = (bStandSEPERATS1MSS2 * ((xQuadSEPERATS1MSS2 / minPifVAL)^0.5));
            aStandSEPERATS1MSS3 = (bStandSEPERATS1MSS3 * ((xQuadSEPERATS1MSS3 / minPifVAL)^0.5));
            aStandSEPERATS1MSS4 = (bStandSEPERATS1MSS4 * ((xQuadSEPERATS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS1, bSEPERATS1MSS1, rSEPERATS1MSS1, rQuadSEPERATS1MSS1, aStandSEPERATS1MSS1, bStandSEPERATS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS2, bSEPERATS1MSS2, rSEPERATS1MSS2, rQuadSEPERATS1MSS2, aStandSEPERATS1MSS2, bStandSEPERATS1MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS3, bSEPERATS1MSS3, rSEPERATS1MSS3, rQuadSEPERATS1MSS3, aStandSEPERATS1MSS3, bStandSEPERATS1MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS4, bSEPERATS1MSS4, rSEPERATS1MSS4, rQuadSEPERATS1MSS4, aStandSEPERATS1MSS4, bStandSEPERATS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS1slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS1slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifSEPERATS1slaveMSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS1slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aSEPERATS1MSS1 + (bSEPERATS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aSEPERATS1MSS2 + (bSEPERATS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = (aSEPERATS1MSS3 + (bSEPERATS1MSS3 * REFS1MSS3[i,j]));
                    OUT1MSS4[i,j] = (aSEPERATS1MSS4 + (bSEPERATS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT1MSS1);
            CreatePyramid(OUT1MSS2);
            CreatePyramid(OUT1MSS3);
            CreatePyramid(OUT1MSS4);
        
            CreateHistogram(OUT1MSS1);
            CreateHistogram(OUT1MSS2);
            CreateHistogram(OUT1MSS3);
            CreateHistogram(OUT1MSS4);
            
            CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors2 == 7 )
            {
        		printf("Master: Scene 3 (MSS), Slave: Scene 2 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors2 == 6 )
            {
         		printf("Master: Scene 3 (MSS), Slave: Scene 2 (TM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS2MSS1, xAritSEPERATS2MSS2, xAritSEPERATS2MSS3, xAritSEPERATS2MSS4;
            numeric yAritSEPERATS2MSS1, yAritSEPERATS2MSS2, yAritSEPERATS2MSS3, yAritSEPERATS2MSS4;
    
            numeric aSEPERATS2MSS1, aSEPERATS2MSS2, aSEPERATS2MSS3, aSEPERATS2MSS4;
            numeric bSEPERATS2MSS1, bSEPERATS2MSS2, bSEPERATS2MSS3, bSEPERATS2MSS4;
            numeric rSEPERATS2MSS1, rSEPERATS2MSS2, rSEPERATS2MSS3, rSEPERATS2MSS4;
            numeric rQuadSEPERATS2MSS1, rQuadSEPERATS2MSS2, rQuadSEPERATS2MSS3, rQuadSEPERATS2MSS4;
            numeric syxSEPERATS2MSS1, syxSEPERATS2MSS2, syxSEPERATS2MSS3, syxSEPERATS2MSS4;
            numeric bStandSEPERATS2MSS1, bStandSEPERATS2MSS2, bStandSEPERATS2MSS3, bStandSEPERATS2MSS4;
            numeric aStandSEPERATS2MSS1, aStandSEPERATS2MSS2, aStandSEPERATS2MSS3, aStandSEPERATS2MSS4;
    
            numeric xSEPERATS2MSS1 = 0;
            numeric xSEPERATS2MSS2 = 0;
            numeric xSEPERATS2MSS3 = 0;
            numeric xSEPERATS2MSS4 = 0;
    
            numeric xQuadSEPERATS2MSS1 = 0;
            numeric xQuadSEPERATS2MSS2 = 0;
            numeric xQuadSEPERATS2MSS3 = 0;
            numeric xQuadSEPERATS2MSS4 = 0;
    
            numeric ySEPERATS2MSS1 = 0;
            numeric ySEPERATS2MSS2 = 0;
            numeric ySEPERATS2MSS3 = 0;
            numeric ySEPERATS2MSS4 = 0;
    
            numeric yQuadSEPERATS2MSS1 = 0;
            numeric yQuadSEPERATS2MSS2 = 0;
            numeric yQuadSEPERATS2MSS3 = 0;
            numeric yQuadSEPERATS2MSS4 = 0;
    
            numeric xySEPERATS2MSS1 = 0;
            numeric xySEPERATS2MSS2 = 0;
            numeric xySEPERATS2MSS3 = 0;
            numeric xySEPERATS2MSS4 = 0;
    
            numeric xxAritQuadSEPERATS2MSS1 = 0;
            numeric xxAritQuadSEPERATS2MSS2 = 0;
            numeric xxAritQuadSEPERATS2MSS3 = 0;
            numeric xxAritQuadSEPERATS2MSS4 = 0;
    
            numeric yyAritQuadSEPERATS2MSS1 = 0;
            numeric yyAritQuadSEPERATS2MSS2 = 0;
            numeric yyAritQuadSEPERATS2MSS3 = 0;
            numeric yyAritQuadSEPERATS2MSS4 = 0;
    
            numeric qXYSEPERATS2MSS1 = 0;
            numeric qXYSEPERATS2MSS2 = 0;
            numeric qXYSEPERATS2MSS3 = 0;
            numeric qXYSEPERATS2MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS2MSS1 = xSEPERATS2MSS1 + pifSEPERATS3S2MSS1arrayRAND[m];
                xSEPERATS2MSS2 = xSEPERATS2MSS2 + pifSEPERATS3S2MSS2arrayRAND[m];
                xSEPERATS2MSS3 = xSEPERATS2MSS3 + pifSEPERATS3S2MSS3arrayRAND[m];
                xSEPERATS2MSS4 = xSEPERATS2MSS4 + pifSEPERATS3S2MSS4arrayRAND[m];
    
                xQuadSEPERATS2MSS1 = (xQuadSEPERATS2MSS1 + (pifSEPERATS3S2MSS1arrayRAND[m]^2));
                xQuadSEPERATS2MSS2 = (xQuadSEPERATS2MSS2 + (pifSEPERATS3S2MSS2arrayRAND[m]^2));
                xQuadSEPERATS2MSS3 = (xQuadSEPERATS2MSS3 + (pifSEPERATS3S2MSS3arrayRAND[m]^2));
                xQuadSEPERATS2MSS4 = (xQuadSEPERATS2MSS4 + (pifSEPERATS3S2MSS4arrayRAND[m]^2));
    
                ySEPERATS2MSS1 = ySEPERATS2MSS1 + pifSEPERATS2slaveMSS1arrayRAND[m];
                ySEPERATS2MSS2 = ySEPERATS2MSS2 + pifSEPERATS2slaveMSS2arrayRAND[m];
                ySEPERATS2MSS3 = ySEPERATS2MSS3 + pifSEPERATS2slaveMSS3arrayRAND[m];
                ySEPERATS2MSS4 = ySEPERATS2MSS4 + pifSEPERATS2slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS2MSS1 = (yQuadSEPERATS2MSS1 + (pifSEPERATS2slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS2MSS2 = (yQuadSEPERATS2MSS2 + (pifSEPERATS2slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS2MSS3 = (yQuadSEPERATS2MSS3 + (pifSEPERATS2slaveMSS3arrayRAND[m]^2));
                yQuadSEPERATS2MSS4 = (yQuadSEPERATS2MSS4 + (pifSEPERATS2slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS2MSS1 = (xySEPERATS2MSS1 + (pifSEPERATS3S2MSS1arrayRAND[m] * pifSEPERATS2slaveMSS1arrayRAND[m]));
                xySEPERATS2MSS2 = (xySEPERATS2MSS2 + (pifSEPERATS3S2MSS2arrayRAND[m] * pifSEPERATS2slaveMSS2arrayRAND[m]));
                xySEPERATS2MSS3 = (xySEPERATS2MSS3 + (pifSEPERATS3S2MSS3arrayRAND[m] * pifSEPERATS2slaveMSS3arrayRAND[m]));
                xySEPERATS2MSS4 = (xySEPERATS2MSS4 + (pifSEPERATS3S2MSS4arrayRAND[m] * pifSEPERATS2slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS2MSS1 = xSEPERATS2MSS1 / minPifVAL;
            xAritSEPERATS2MSS2 = xSEPERATS2MSS2 / minPifVAL;
            xAritSEPERATS2MSS3 = xSEPERATS2MSS3 / minPifVAL;
            xAritSEPERATS2MSS4 = xSEPERATS2MSS4 / minPifVAL;
    
            yAritSEPERATS2MSS1 = ySEPERATS2MSS1 / minPifVAL;
            yAritSEPERATS2MSS2 = ySEPERATS2MSS2 / minPifVAL;
            yAritSEPERATS2MSS3 = ySEPERATS2MSS3 / minPifVAL;
            yAritSEPERATS2MSS4 = ySEPERATS2MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2MSS1 = (xxAritQuadSEPERATS2MSS1 + ((pifSEPERATS3S2MSS1arrayRAND[n] - xAritSEPERATS2MSS1)^2));
                xxAritQuadSEPERATS2MSS2 = (xxAritQuadSEPERATS2MSS2 + ((pifSEPERATS3S2MSS2arrayRAND[n] - xAritSEPERATS2MSS2)^2));
                xxAritQuadSEPERATS2MSS3 = (xxAritQuadSEPERATS2MSS3 + ((pifSEPERATS3S2MSS3arrayRAND[n] - xAritSEPERATS2MSS3)^2));
                xxAritQuadSEPERATS2MSS4 = (xxAritQuadSEPERATS2MSS4 + ((pifSEPERATS3S2MSS4arrayRAND[n] - xAritSEPERATS2MSS4)^2));
    
                yyAritQuadSEPERATS2MSS1 = (yyAritQuadSEPERATS2MSS1 + ((pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)^2));
                yyAritQuadSEPERATS2MSS2 = (yyAritQuadSEPERATS2MSS2 + ((pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)^2));
                yyAritQuadSEPERATS2MSS3 = (yyAritQuadSEPERATS2MSS3 + ((pifSEPERATS2slaveMSS3arrayRAND[n] - yAritSEPERATS2MSS3)^2));
                yyAritQuadSEPERATS2MSS4 = (yyAritQuadSEPERATS2MSS4 + ((pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)^2));
    
                qXYSEPERATS2MSS1 = (qXYSEPERATS2MSS1 + ((pifSEPERATS3S2MSS1arrayRAND[n] - xAritSEPERATS2MSS1) * (pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)));
                qXYSEPERATS2MSS2 = (qXYSEPERATS2MSS2 + ((pifSEPERATS3S2MSS2arrayRAND[n] - xAritSEPERATS2MSS2) * (pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)));
                qXYSEPERATS2MSS3 = (qXYSEPERATS2MSS3 + ((pifSEPERATS3S2MSS3arrayRAND[n] - xAritSEPERATS2MSS3) * (pifSEPERATS2slaveMSS3arrayRAND[n] - yAritSEPERATS2MSS3)));
                qXYSEPERATS2MSS4 = (qXYSEPERATS2MSS4 + ((pifSEPERATS3S2MSS4arrayRAND[n] - xAritSEPERATS2MSS4) * (pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)));
            }
        
            aSEPERATS2MSS1 = (((xQuadSEPERATS2MSS1 * ySEPERATS2MSS1) - (xSEPERATS2MSS1 * xySEPERATS2MSS1)) / ((minPifVAL * xQuadSEPERATS2MSS1) - (xSEPERATS2MSS1^2)));
            aSEPERATS2MSS2 = (((xQuadSEPERATS2MSS2 * ySEPERATS2MSS2) - (xSEPERATS2MSS2 * xySEPERATS2MSS2)) / ((minPifVAL * xQuadSEPERATS2MSS2) - (xSEPERATS2MSS2^2)));
            aSEPERATS2MSS3 = (((xQuadSEPERATS2MSS3 * ySEPERATS2MSS3) - (xSEPERATS2MSS3 * xySEPERATS2MSS3)) / ((minPifVAL * xQuadSEPERATS2MSS3) - (xSEPERATS2MSS3^2)));
            aSEPERATS2MSS4 = (((xQuadSEPERATS2MSS4 * ySEPERATS2MSS4) - (xSEPERATS2MSS4 * xySEPERATS2MSS4)) / ((minPifVAL * xQuadSEPERATS2MSS4) - (xSEPERATS2MSS4^2)));
            
            bSEPERATS2MSS1 = qXYSEPERATS2MSS1 / xxAritQuadSEPERATS2MSS1;
            bSEPERATS2MSS2 = qXYSEPERATS2MSS2 / xxAritQuadSEPERATS2MSS2;
            bSEPERATS2MSS3 = qXYSEPERATS2MSS3 / xxAritQuadSEPERATS2MSS3;
            bSEPERATS2MSS4 = qXYSEPERATS2MSS4 / xxAritQuadSEPERATS2MSS4;
    
            rSEPERATS2MSS1 = (qXYSEPERATS2MSS1 / ((xxAritQuadSEPERATS2MSS1 * yyAritQuadSEPERATS2MSS1)^0.5));
            rSEPERATS2MSS2 = (qXYSEPERATS2MSS2 / ((xxAritQuadSEPERATS2MSS2 * yyAritQuadSEPERATS2MSS2)^0.5));
            rSEPERATS2MSS3 = (qXYSEPERATS2MSS3 / ((xxAritQuadSEPERATS2MSS3 * yyAritQuadSEPERATS2MSS3)^0.5));
            rSEPERATS2MSS4 = (qXYSEPERATS2MSS4 / ((xxAritQuadSEPERATS2MSS4 * yyAritQuadSEPERATS2MSS4)^0.5));
    
            rQuadSEPERATS2MSS1 = ((rSEPERATS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2MSS2 = ((rSEPERATS2MSS2^2) * 100);
            rQuadSEPERATS2MSS3 = ((rSEPERATS2MSS3^2) * 100);
            rQuadSEPERATS2MSS4 = ((rSEPERATS2MSS4^2) * 100);
        
            syxSEPERATS2MSS1 = (((yyAritQuadSEPERATS2MSS1 - ((qXYSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS2 = (((yyAritQuadSEPERATS2MSS2 - ((qXYSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS3 = (((yyAritQuadSEPERATS2MSS3 - ((qXYSEPERATS2MSS3^2) / xxAritQuadSEPERATS2MSS3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS4 = (((yyAritQuadSEPERATS2MSS4 - ((qXYSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2MSS1 = (((syxSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)^0.5);
            bStandSEPERATS2MSS2 = (((syxSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)^0.5);
            bStandSEPERATS2MSS3 = (((syxSEPERATS2MSS3^2) / xxAritQuadSEPERATS2MSS3)^0.5);
            bStandSEPERATS2MSS4 = (((syxSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)^0.5);
    
            aStandSEPERATS2MSS1 = (bStandSEPERATS2MSS1 * ((xQuadSEPERATS2MSS1 / minPifVAL)^0.5));
            aStandSEPERATS2MSS2 = (bStandSEPERATS2MSS2 * ((xQuadSEPERATS2MSS2 / minPifVAL)^0.5));
            aStandSEPERATS2MSS3 = (bStandSEPERATS2MSS3 * ((xQuadSEPERATS2MSS3 / minPifVAL)^0.5));
            aStandSEPERATS2MSS4 = (bStandSEPERATS2MSS4 * ((xQuadSEPERATS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS1, bSEPERATS2MSS1, rSEPERATS2MSS1, rQuadSEPERATS2MSS1, aStandSEPERATS2MSS1, bStandSEPERATS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS2, bSEPERATS2MSS2, rSEPERATS2MSS2, rQuadSEPERATS2MSS2, aStandSEPERATS2MSS2, bStandSEPERATS2MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS3, bSEPERATS2MSS3, rSEPERATS2MSS3, rQuadSEPERATS2MSS3, aStandSEPERATS2MSS3, bStandSEPERATS2MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS4, bSEPERATS2MSS4, rSEPERATS2MSS4, rQuadSEPERATS2MSS4, aStandSEPERATS2MSS4, bStandSEPERATS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS2slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS2slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifSEPERATS2slaveMSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS2slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aSEPERATS2MSS1 + (bSEPERATS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aSEPERATS2MSS2 + (bSEPERATS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = (aSEPERATS2MSS3 + (bSEPERATS2MSS3 * REFS2MSS3[i,j]));
                    OUT2MSS4[i,j] = (aSEPERATS2MSS4 + (bSEPERATS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT2MSS1);
            CreatePyramid(OUT2MSS2);
            CreatePyramid(OUT2MSS3);
            CreatePyramid(OUT2MSS4);
        
            CreateHistogram(OUT2MSS1);
            CreateHistogram(OUT2MSS2);
            CreateHistogram(OUT2MSS3);
            CreateHistogram(OUT2MSS4);
            
            CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors4 == 7 )
            {
        		printf("Master: Scene 3 (MSS), Slave: Scene 4 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors4 == 6 )
            {
        		printf("Master: Scene 3 (MSS), Slave: Scene 4 (TM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS4MSS1, xAritSEPERATS4MSS2, xAritSEPERATS4MSS3, xAritSEPERATS4MSS4;
            numeric yAritSEPERATS4MSS1, yAritSEPERATS4MSS2, yAritSEPERATS4MSS3, yAritSEPERATS4MSS4;
    
            numeric aSEPERATS4MSS1, aSEPERATS4MSS2, aSEPERATS4MSS3, aSEPERATS4MSS4;
            numeric bSEPERATS4MSS1, bSEPERATS4MSS2, bSEPERATS4MSS3, bSEPERATS4MSS4;
            numeric rSEPERATS4MSS1, rSEPERATS4MSS2, rSEPERATS4MSS3, rSEPERATS4MSS4;
            numeric rQuadSEPERATS4MSS1, rQuadSEPERATS4MSS2, rQuadSEPERATS4MSS3, rQuadSEPERATS4MSS4;
            numeric syxSEPERATS4MSS1, syxSEPERATS4MSS2, syxSEPERATS4MSS3, syxSEPERATS4MSS4;
            numeric bStandSEPERATS4MSS1, bStandSEPERATS4MSS2, bStandSEPERATS4MSS3, bStandSEPERATS4MSS4;
            numeric aStandSEPERATS4MSS1, aStandSEPERATS4MSS2, aStandSEPERATS4MSS3, aStandSEPERATS4MSS4;
    
            numeric xSEPERATS4MSS1 = 0;
            numeric xSEPERATS4MSS2 = 0;
            numeric xSEPERATS4MSS3 = 0;
            numeric xSEPERATS4MSS4 = 0;
    
            numeric xQuadSEPERATS4MSS1 = 0;
            numeric xQuadSEPERATS4MSS2 = 0;
            numeric xQuadSEPERATS4MSS3 = 0;
            numeric xQuadSEPERATS4MSS4 = 0;
    
            numeric ySEPERATS4MSS1 = 0;
            numeric ySEPERATS4MSS2 = 0;
            numeric ySEPERATS4MSS3 = 0;
            numeric ySEPERATS4MSS4 = 0;
    
            numeric yQuadSEPERATS4MSS1 = 0;
            numeric yQuadSEPERATS4MSS2 = 0;
            numeric yQuadSEPERATS4MSS3 = 0;
            numeric yQuadSEPERATS4MSS4 = 0;
    
            numeric xySEPERATS4MSS1 = 0;
            numeric xySEPERATS4MSS2 = 0;
            numeric xySEPERATS4MSS3 = 0;
            numeric xySEPERATS4MSS4 = 0;
    
            numeric xxAritQuadSEPERATS4MSS1 = 0;
            numeric xxAritQuadSEPERATS4MSS2 = 0;
            numeric xxAritQuadSEPERATS4MSS3 = 0;
            numeric xxAritQuadSEPERATS4MSS4 = 0;
    
            numeric yyAritQuadSEPERATS4MSS1 = 0;
            numeric yyAritQuadSEPERATS4MSS2 = 0;
            numeric yyAritQuadSEPERATS4MSS3 = 0;
            numeric yyAritQuadSEPERATS4MSS4 = 0;
    
            numeric qXYSEPERATS4MSS1 = 0;
            numeric qXYSEPERATS4MSS2 = 0;
            numeric qXYSEPERATS4MSS3 = 0;
            numeric qXYSEPERATS4MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS4MSS1 = xSEPERATS4MSS1 + pifSEPERATS3S4MSS1arrayRAND[m];
                xSEPERATS4MSS2 = xSEPERATS4MSS2 + pifSEPERATS3S4MSS2arrayRAND[m];
                xSEPERATS4MSS3 = xSEPERATS4MSS3 + pifSEPERATS3S4MSS3arrayRAND[m];
                xSEPERATS4MSS4 = xSEPERATS4MSS4 + pifSEPERATS3S4MSS4arrayRAND[m];
    
                xQuadSEPERATS4MSS1 = (xQuadSEPERATS4MSS1 + (pifSEPERATS3S4MSS1arrayRAND[m]^2));
                xQuadSEPERATS4MSS2 = (xQuadSEPERATS4MSS2 + (pifSEPERATS3S4MSS2arrayRAND[m]^2));
                xQuadSEPERATS4MSS3 = (xQuadSEPERATS4MSS3 + (pifSEPERATS3S4MSS3arrayRAND[m]^2));
                xQuadSEPERATS4MSS4 = (xQuadSEPERATS4MSS4 + (pifSEPERATS3S4MSS4arrayRAND[m]^2));
    
                ySEPERATS4MSS1 = ySEPERATS4MSS1 + pifSEPERATS4slaveMSS1arrayRAND[m];
                ySEPERATS4MSS2 = ySEPERATS4MSS2 + pifSEPERATS4slaveMSS2arrayRAND[m];
                ySEPERATS4MSS3 = ySEPERATS4MSS3 + pifSEPERATS4slaveMSS3arrayRAND[m];
                ySEPERATS4MSS4 = ySEPERATS4MSS4 + pifSEPERATS4slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS4MSS1 = (yQuadSEPERATS4MSS1 + (pifSEPERATS4slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS4MSS2 = (yQuadSEPERATS4MSS2 + (pifSEPERATS4slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS4MSS3 = (yQuadSEPERATS4MSS3 + (pifSEPERATS4slaveMSS3arrayRAND[m]^2));
                yQuadSEPERATS4MSS4 = (yQuadSEPERATS4MSS4 + (pifSEPERATS4slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS4MSS1 = (xySEPERATS4MSS1 + (pifSEPERATS3S4MSS1arrayRAND[m] * pifSEPERATS4slaveMSS1arrayRAND[m]));
                xySEPERATS4MSS2 = (xySEPERATS4MSS2 + (pifSEPERATS3S4MSS2arrayRAND[m] * pifSEPERATS4slaveMSS2arrayRAND[m]));
                xySEPERATS4MSS3 = (xySEPERATS4MSS3 + (pifSEPERATS3S4MSS3arrayRAND[m] * pifSEPERATS4slaveMSS3arrayRAND[m]));
                xySEPERATS4MSS4 = (xySEPERATS4MSS4 + (pifSEPERATS3S4MSS4arrayRAND[m] * pifSEPERATS4slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS4MSS1 = xSEPERATS4MSS1 / minPifVAL;
            xAritSEPERATS4MSS2 = xSEPERATS4MSS2 / minPifVAL;
            xAritSEPERATS4MSS3 = xSEPERATS4MSS3 / minPifVAL;
            xAritSEPERATS4MSS4 = xSEPERATS4MSS4 / minPifVAL;
    
            yAritSEPERATS4MSS1 = ySEPERATS4MSS1 / minPifVAL;
            yAritSEPERATS4MSS2 = ySEPERATS4MSS2 / minPifVAL;
            yAritSEPERATS4MSS3 = ySEPERATS4MSS3 / minPifVAL;
            yAritSEPERATS4MSS4 = ySEPERATS4MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS4MSS1 = (xxAritQuadSEPERATS4MSS1 + ((pifSEPERATS3S4MSS1arrayRAND[n] - xAritSEPERATS4MSS1)^2));
                xxAritQuadSEPERATS4MSS2 = (xxAritQuadSEPERATS4MSS2 + ((pifSEPERATS3S4MSS2arrayRAND[n] - xAritSEPERATS4MSS2)^2));
                xxAritQuadSEPERATS4MSS3 = (xxAritQuadSEPERATS4MSS3 + ((pifSEPERATS3S4MSS3arrayRAND[n] - xAritSEPERATS4MSS3)^2));
                xxAritQuadSEPERATS4MSS4 = (xxAritQuadSEPERATS4MSS4 + ((pifSEPERATS3S4MSS4arrayRAND[n] - xAritSEPERATS4MSS4)^2));
    
                yyAritQuadSEPERATS4MSS1 = (yyAritQuadSEPERATS4MSS1 + ((pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)^2));
                yyAritQuadSEPERATS4MSS2 = (yyAritQuadSEPERATS4MSS2 + ((pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)^2));
                yyAritQuadSEPERATS4MSS3 = (yyAritQuadSEPERATS4MSS3 + ((pifSEPERATS4slaveMSS3arrayRAND[n] - yAritSEPERATS4MSS3)^2));
                yyAritQuadSEPERATS4MSS4 = (yyAritQuadSEPERATS4MSS4 + ((pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)^2));
    
                qXYSEPERATS4MSS1 = (qXYSEPERATS4MSS1 + ((pifSEPERATS3S4MSS1arrayRAND[n] - xAritSEPERATS4MSS1) * (pifSEPERATS4slaveMSS1arrayRAND[n] - yAritSEPERATS4MSS1)));
                qXYSEPERATS4MSS2 = (qXYSEPERATS4MSS2 + ((pifSEPERATS3S4MSS2arrayRAND[n] - xAritSEPERATS4MSS2) * (pifSEPERATS4slaveMSS2arrayRAND[n] - yAritSEPERATS4MSS2)));
                qXYSEPERATS4MSS3 = (qXYSEPERATS4MSS3 + ((pifSEPERATS3S4MSS3arrayRAND[n] - xAritSEPERATS4MSS3) * (pifSEPERATS4slaveMSS3arrayRAND[n] - yAritSEPERATS4MSS3)));
                qXYSEPERATS4MSS4 = (qXYSEPERATS4MSS4 + ((pifSEPERATS3S4MSS4arrayRAND[n] - xAritSEPERATS4MSS4) * (pifSEPERATS4slaveMSS4arrayRAND[n] - yAritSEPERATS4MSS4)));
            }
        
            aSEPERATS4MSS1 = (((xQuadSEPERATS4MSS1 * ySEPERATS4MSS1) - (xSEPERATS4MSS1 * xySEPERATS4MSS1)) / ((minPifVAL * xQuadSEPERATS4MSS1) - (xSEPERATS4MSS1^2)));
            aSEPERATS4MSS2 = (((xQuadSEPERATS4MSS2 * ySEPERATS4MSS2) - (xSEPERATS4MSS2 * xySEPERATS4MSS2)) / ((minPifVAL * xQuadSEPERATS4MSS2) - (xSEPERATS4MSS2^2)));
            aSEPERATS4MSS3 = (((xQuadSEPERATS4MSS3 * ySEPERATS4MSS3) - (xSEPERATS4MSS3 * xySEPERATS4MSS3)) / ((minPifVAL * xQuadSEPERATS4MSS3) - (xSEPERATS4MSS3^2)));
            aSEPERATS4MSS4 = (((xQuadSEPERATS4MSS4 * ySEPERATS4MSS4) - (xSEPERATS4MSS4 * xySEPERATS4MSS4)) / ((minPifVAL * xQuadSEPERATS4MSS4) - (xSEPERATS4MSS4^2)));
            
            bSEPERATS4MSS1 = qXYSEPERATS4MSS1 / xxAritQuadSEPERATS4MSS1;
            bSEPERATS4MSS2 = qXYSEPERATS4MSS2 / xxAritQuadSEPERATS4MSS2;
            bSEPERATS4MSS3 = qXYSEPERATS4MSS3 / xxAritQuadSEPERATS4MSS3;
            bSEPERATS4MSS4 = qXYSEPERATS4MSS4 / xxAritQuadSEPERATS4MSS4;
    
            rSEPERATS4MSS1 = (qXYSEPERATS4MSS1 / ((xxAritQuadSEPERATS4MSS1 * yyAritQuadSEPERATS4MSS1)^0.5));
            rSEPERATS4MSS2 = (qXYSEPERATS4MSS2 / ((xxAritQuadSEPERATS4MSS2 * yyAritQuadSEPERATS4MSS2)^0.5));
            rSEPERATS4MSS3 = (qXYSEPERATS4MSS3 / ((xxAritQuadSEPERATS4MSS3 * yyAritQuadSEPERATS4MSS3)^0.5));
            rSEPERATS4MSS4 = (qXYSEPERATS4MSS4 / ((xxAritQuadSEPERATS4MSS4 * yyAritQuadSEPERATS4MSS4)^0.5));
    
            rQuadSEPERATS4MSS1 = ((rSEPERATS4MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS4MSS2 = ((rSEPERATS4MSS2^2) * 100);
            rQuadSEPERATS4MSS3 = ((rSEPERATS4MSS3^2) * 100);
            rQuadSEPERATS4MSS4 = ((rSEPERATS4MSS4^2) * 100);
        
            syxSEPERATS4MSS1 = (((yyAritQuadSEPERATS4MSS1 - ((qXYSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS2 = (((yyAritQuadSEPERATS4MSS2 - ((qXYSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS3 = (((yyAritQuadSEPERATS4MSS3 - ((qXYSEPERATS4MSS3^2) / xxAritQuadSEPERATS4MSS3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS4MSS4 = (((yyAritQuadSEPERATS4MSS4 - ((qXYSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS4MSS1 = (((syxSEPERATS4MSS1^2) / xxAritQuadSEPERATS4MSS1)^0.5);
            bStandSEPERATS4MSS2 = (((syxSEPERATS4MSS2^2) / xxAritQuadSEPERATS4MSS2)^0.5);
            bStandSEPERATS4MSS3 = (((syxSEPERATS4MSS3^2) / xxAritQuadSEPERATS4MSS3)^0.5);
            bStandSEPERATS4MSS4 = (((syxSEPERATS4MSS4^2) / xxAritQuadSEPERATS4MSS4)^0.5);
    
            aStandSEPERATS4MSS1 = (bStandSEPERATS4MSS1 * ((xQuadSEPERATS4MSS1 / minPifVAL)^0.5));
            aStandSEPERATS4MSS2 = (bStandSEPERATS4MSS2 * ((xQuadSEPERATS4MSS2 / minPifVAL)^0.5));
            aStandSEPERATS4MSS3 = (bStandSEPERATS4MSS3 * ((xQuadSEPERATS4MSS3 / minPifVAL)^0.5));
            aStandSEPERATS4MSS4 = (bStandSEPERATS4MSS4 * ((xQuadSEPERATS4MSS4 / minPifVAL)^0.5));
    
            printf("Scene 4 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS1, bSEPERATS4MSS1, rSEPERATS4MSS1, rQuadSEPERATS4MSS1, aStandSEPERATS4MSS1, bStandSEPERATS4MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS2, bSEPERATS4MSS2, rSEPERATS4MSS2, rQuadSEPERATS4MSS2, aStandSEPERATS4MSS2, bStandSEPERATS4MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS3, bSEPERATS4MSS3, rSEPERATS4MSS3, rQuadSEPERATS4MSS3, aStandSEPERATS4MSS3, bStandSEPERATS4MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS4MSS4, bSEPERATS4MSS4, rSEPERATS4MSS4, rQuadSEPERATS4MSS4, aStandSEPERATS4MSS4, bStandSEPERATS4MSS4);
            printf("Slave Scene 4 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS4slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS4slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifSEPERATS4slaveMSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS4slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS4slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS4slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT4MSS1[i,j] = (aSEPERATS4MSS1 + (bSEPERATS4MSS1 * REFS4MSS1[i,j]));
                    OUT4MSS2[i,j] = (aSEPERATS4MSS2 + (bSEPERATS4MSS2 * REFS4MSS2[i,j]));
                    OUT4MSS3[i,j] = (aSEPERATS4MSS3 + (bSEPERATS4MSS3 * REFS4MSS3[i,j]));
                    OUT4MSS4[i,j] = (aSEPERATS4MSS4 + (bSEPERATS4MSS4 * REFS4MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT4MSS1);
            CreatePyramid(OUT4MSS2);
            CreatePyramid(OUT4MSS3);
            CreatePyramid(OUT4MSS4);
        
            CreateHistogram(OUT4MSS1);
            CreateHistogram(OUT4MSS2);
            CreateHistogram(OUT4MSS3);
            CreateHistogram(OUT4MSS4);
            
            CloseRaster(REFS4MSS1);
            CloseRaster(REFS4MSS2);
            CloseRaster(REFS4MSS3);
            CloseRaster(REFS4MSS4);
    
            CloseRaster(OUT4MSS1);
            CloseRaster(OUT4MSS2);
            CloseRaster(OUT4MSS3);
            CloseRaster(OUT4MSS4);
        	printf("Scene 4 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
        }
    }
	else if ( slaveMaster == 4 )
	{
        if ( sensors4 == 7 )
        {
        printf("Scene 4 - Master Scene (ETM):\n");
        printf("Scene 4 array values used for regression computation:\n");
	    printf("For Scene 4 (Master) and Slave (Scene 1):");
        printf("ETM1: %12f ", pifSEPERATS4S1ETM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S1ETM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S1ETM1arrayRAND[minPifVAL]);
    
        printf("ETM2: %12f ", pifSEPERATS4S1ETM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S1ETM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S1ETM2arrayRAND[minPifVAL]);
    
        printf("ETM3: %12f ", pifSEPERATS4S1ETM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S1ETM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S1ETM3arrayRAND[minPifVAL]);
    
        printf("ETM4: %12f ", pifSEPERATS4S1ETM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S1ETM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S1ETM4arrayRAND[minPifVAL]);
    
        printf("ETM5: %12f ", pifSEPERATS4S1ETM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S1ETM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S1ETM5arrayRAND[minPifVAL]);
    
        printf("ETM7: %12f ", pifSEPERATS4S1ETM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S1ETM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS4S1ETM7arrayRAND[minPifVAL]);
	    printf("For Scene 4 (Master) and Slave (Scene 2):");
        printf("ETM1: %12f ", pifSEPERATS4S2ETM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S2ETM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S2ETM1arrayRAND[minPifVAL]);
    
        printf("ETM2: %12f ", pifSEPERATS4S2ETM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S2ETM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S2ETM2arrayRAND[minPifVAL]);
    
        printf("ETM3: %12f ", pifSEPERATS4S2ETM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S2ETM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S2ETM3arrayRAND[minPifVAL]);
    
        printf("ETM4: %12f ", pifSEPERATS4S2ETM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S2ETM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S2ETM4arrayRAND[minPifVAL]);
    
        printf("ETM5: %12f ", pifSEPERATS4S2ETM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S2ETM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S2ETM5arrayRAND[minPifVAL]);
    
        printf("ETM7: %12f ", pifSEPERATS4S2ETM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S2ETM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS4S2ETM7arrayRAND[minPifVAL]);
	    printf("For Scene 4 (Master) and Slave (Scene 3):");
        printf("ETM1: %12f ", pifSEPERATS4S3ETM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S3ETM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S3ETM1arrayRAND[minPifVAL]);
    
        printf("ETM2: %12f ", pifSEPERATS4S3ETM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S3ETM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S3ETM2arrayRAND[minPifVAL]);
    
        printf("ETM3: %12f ", pifSEPERATS4S3ETM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S3ETM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S3ETM3arrayRAND[minPifVAL]);
    
        printf("ETM4: %12f ", pifSEPERATS4S3ETM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S3ETM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S3ETM4arrayRAND[minPifVAL]);
    
        printf("ETM5: %12f ", pifSEPERATS4S3ETM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S3ETM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S3ETM5arrayRAND[minPifVAL]);
    
        printf("ETM7: %12f ", pifSEPERATS4S3ETM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S3ETM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS4S3ETM7arrayRAND[minPifVAL]);
                for i = 1 to ETMlins
                {
                    for j = 1 to ETMcols
                    {
                    OUT4ETM1[i,j] = REFS4ETM1[i,j];
                    OUT4ETM2[i,j] = REFS4ETM2[i,j];
                    OUT4ETM3[i,j] = REFS4ETM3[i,j];
                    OUT4ETM4[i,j] = REFS4ETM4[i,j];
                    OUT4ETM5[i,j] = REFS4ETM5[i,j];
                    OUT4ETM7[i,j] = REFS4ETM7[i,j];
                    }
                }
            
        CreatePyramid(OUT4ETM1);
        CreatePyramid(OUT4ETM2);
        CreatePyramid(OUT4ETM3);
        CreatePyramid(OUT4ETM4);
        CreatePyramid(OUT4ETM5);
        CreatePyramid(OUT4ETM7);
        
        CreateHistogram(OUT4ETM1);
        CreateHistogram(OUT4ETM2);
        CreateHistogram(OUT4ETM3);
        CreateHistogram(OUT4ETM4);
        CreateHistogram(OUT4ETM5);
        CreateHistogram(OUT4ETM7);
        
        CloseRaster(REFS4ETM1);
        CloseRaster(REFS4ETM2);
        CloseRaster(REFS4ETM3);
        CloseRaster(REFS4ETM4);
        CloseRaster(REFS4ETM5);
        CloseRaster(REFS4ETM7);
        
        CloseRaster(OUT4ETM1);
        CloseRaster(OUT4ETM2);
        CloseRaster(OUT4ETM3);
        CloseRaster(OUT4ETM4);
        CloseRaster(OUT4ETM5);
        CloseRaster(OUT4ETM7);
            
        printf("Scene 4 (Master) output was written, histogram created and pyramid written...\n\n\n");
        
            if ( sensors1 == 7 )
            {
            numeric xAritSEPERATS1ETM1, xAritSEPERATS1ETM2, xAritSEPERATS1ETM3, xAritSEPERATS1ETM4, xAritSEPERATS1ETM5, xAritSEPERATS1ETM7;
            numeric yAritSEPERATS1ETM1, yAritSEPERATS1ETM2, yAritSEPERATS1ETM3, yAritSEPERATS1ETM4, yAritSEPERATS1ETM5, yAritSEPERATS1ETM7;
    
            numeric aSEPERATS1ETM1, aSEPERATS1ETM2, aSEPERATS1ETM3, aSEPERATS1ETM4, aSEPERATS1ETM5, aSEPERATS1ETM7;
            numeric bSEPERATS1ETM1, bSEPERATS1ETM2, bSEPERATS1ETM3, bSEPERATS1ETM4, bSEPERATS1ETM5, bSEPERATS1ETM7;
            numeric rSEPERATS1ETM1, rSEPERATS1ETM2, rSEPERATS1ETM3, rSEPERATS1ETM4, rSEPERATS1ETM5, rSEPERATS1ETM7;
            numeric rQuadSEPERATS1ETM1, rQuadSEPERATS1ETM2, rQuadSEPERATS1ETM3, rQuadSEPERATS1ETM4, rQuadSEPERATS1ETM5, rQuadSEPERATS1ETM7;
            numeric syxSEPERATS1ETM1, syxSEPERATS1ETM2, syxSEPERATS1ETM3, syxSEPERATS1ETM4, syxSEPERATS1ETM5, syxSEPERATS1ETM7;
            numeric bStandSEPERATS1ETM1, bStandSEPERATS1ETM2, bStandSEPERATS1ETM3, bStandSEPERATS1ETM4, bStandSEPERATS1ETM5, bStandSEPERATS1ETM7;
            numeric aStandSEPERATS1ETM1, aStandSEPERATS1ETM2, aStandSEPERATS1ETM3, aStandSEPERATS1ETM4, aStandSEPERATS1ETM5, aStandSEPERATS1ETM7;
    
            numeric xSEPERATS1ETM1 = 0;
            numeric xSEPERATS1ETM2 = 0;
            numeric xSEPERATS1ETM3 = 0;
            numeric xSEPERATS1ETM4 = 0;
            numeric xSEPERATS1ETM5 = 0;
            numeric xSEPERATS1ETM7 = 0;
    
            numeric xQuadSEPERATS1ETM1 = 0;
            numeric xQuadSEPERATS1ETM2 = 0;
            numeric xQuadSEPERATS1ETM3 = 0;
            numeric xQuadSEPERATS1ETM4 = 0;
            numeric xQuadSEPERATS1ETM5 = 0;
            numeric xQuadSEPERATS1ETM7 = 0;
    
            numeric ySEPERATS1ETM1 = 0;
            numeric ySEPERATS1ETM2 = 0;
            numeric ySEPERATS1ETM3 = 0;
            numeric ySEPERATS1ETM4 = 0;
            numeric ySEPERATS1ETM5 = 0;
            numeric ySEPERATS1ETM7 = 0;
    
            numeric yQuadSEPERATS1ETM1 = 0;
            numeric yQuadSEPERATS1ETM2 = 0;
            numeric yQuadSEPERATS1ETM3 = 0;
            numeric yQuadSEPERATS1ETM4 = 0;
            numeric yQuadSEPERATS1ETM5 = 0;
            numeric yQuadSEPERATS1ETM7 = 0;
    
            numeric xySEPERATS1ETM1 = 0;
            numeric xySEPERATS1ETM2 = 0;
            numeric xySEPERATS1ETM3 = 0;
            numeric xySEPERATS1ETM4 = 0;
            numeric xySEPERATS1ETM5 = 0;
            numeric xySEPERATS1ETM7 = 0;
    
            numeric xxAritQuadSEPERATS1ETM1 = 0;
            numeric xxAritQuadSEPERATS1ETM2 = 0;
            numeric xxAritQuadSEPERATS1ETM3 = 0;
            numeric xxAritQuadSEPERATS1ETM4 = 0;
            numeric xxAritQuadSEPERATS1ETM5 = 0;
            numeric xxAritQuadSEPERATS1ETM7 = 0;
    
            numeric yyAritQuadSEPERATS1ETM1 = 0;
            numeric yyAritQuadSEPERATS1ETM2 = 0;
            numeric yyAritQuadSEPERATS1ETM3 = 0;
            numeric yyAritQuadSEPERATS1ETM4 = 0;
            numeric yyAritQuadSEPERATS1ETM5 = 0;
            numeric yyAritQuadSEPERATS1ETM7 = 0;
    
            numeric qXYSEPERATS1ETM1 = 0;
            numeric qXYSEPERATS1ETM2 = 0;
            numeric qXYSEPERATS1ETM3 = 0;
            numeric qXYSEPERATS1ETM4 = 0;
            numeric qXYSEPERATS1ETM5 = 0;
            numeric qXYSEPERATS1ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1ETM1 = xSEPERATS1ETM1 + pifSEPERATS4S1ETM1arrayRAND[m];
                xSEPERATS1ETM2 = xSEPERATS1ETM2 + pifSEPERATS4S1ETM2arrayRAND[m];
                xSEPERATS1ETM3 = xSEPERATS1ETM3 + pifSEPERATS4S1ETM3arrayRAND[m];
                xSEPERATS1ETM4 = xSEPERATS1ETM4 + pifSEPERATS4S1ETM4arrayRAND[m];
                xSEPERATS1ETM5 = xSEPERATS1ETM5 + pifSEPERATS4S1ETM5arrayRAND[m];
                xSEPERATS1ETM7 = xSEPERATS1ETM7 + pifSEPERATS4S1ETM7arrayRAND[m];
    
                xQuadSEPERATS1ETM1 = (xQuadSEPERATS1ETM1 + (pifSEPERATS4S1ETM1arrayRAND[m]^2));
                xQuadSEPERATS1ETM2 = (xQuadSEPERATS1ETM2 + (pifSEPERATS4S1ETM2arrayRAND[m]^2));
                xQuadSEPERATS1ETM3 = (xQuadSEPERATS1ETM3 + (pifSEPERATS4S1ETM3arrayRAND[m]^2));
                xQuadSEPERATS1ETM4 = (xQuadSEPERATS1ETM4 + (pifSEPERATS4S1ETM4arrayRAND[m]^2));
                xQuadSEPERATS1ETM5 = (xQuadSEPERATS1ETM5 + (pifSEPERATS4S1ETM5arrayRAND[m]^2));
                xQuadSEPERATS1ETM7 = (xQuadSEPERATS1ETM7 + (pifSEPERATS4S1ETM7arrayRAND[m]^2));
    
                ySEPERATS1ETM1 = ySEPERATS1ETM1 + pifSEPERATS1slaveETM1arrayRAND[m];
                ySEPERATS1ETM2 = ySEPERATS1ETM2 + pifSEPERATS1slaveETM2arrayRAND[m];
                ySEPERATS1ETM3 = ySEPERATS1ETM3 + pifSEPERATS1slaveETM3arrayRAND[m];
                ySEPERATS1ETM4 = ySEPERATS1ETM4 + pifSEPERATS1slaveETM4arrayRAND[m];
                ySEPERATS1ETM5 = ySEPERATS1ETM5 + pifSEPERATS1slaveETM5arrayRAND[m];
                ySEPERATS1ETM7 = ySEPERATS1ETM7 + pifSEPERATS1slaveETM7arrayRAND[m];
                
                yQuadSEPERATS1ETM1 = (yQuadSEPERATS1ETM1 + (pifSEPERATS1slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS1ETM2 = (yQuadSEPERATS1ETM2 + (pifSEPERATS1slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS1ETM3 = (yQuadSEPERATS1ETM3 + (pifSEPERATS1slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS1ETM4 = (yQuadSEPERATS1ETM4 + (pifSEPERATS1slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS1ETM5 = (yQuadSEPERATS1ETM5 + (pifSEPERATS1slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS1ETM7 = (yQuadSEPERATS1ETM7 + (pifSEPERATS1slaveETM7arrayRAND[m]^2));
    
                xySEPERATS1ETM1 = (xySEPERATS1ETM1 + (pifSEPERATS4S1ETM1arrayRAND[m] * pifSEPERATS1slaveETM1arrayRAND[m]));
                xySEPERATS1ETM2 = (xySEPERATS1ETM2 + (pifSEPERATS4S1ETM2arrayRAND[m] * pifSEPERATS1slaveETM2arrayRAND[m]));
                xySEPERATS1ETM3 = (xySEPERATS1ETM3 + (pifSEPERATS4S1ETM3arrayRAND[m] * pifSEPERATS1slaveETM3arrayRAND[m]));
                xySEPERATS1ETM4 = (xySEPERATS1ETM4 + (pifSEPERATS4S1ETM4arrayRAND[m] * pifSEPERATS1slaveETM4arrayRAND[m]));
                xySEPERATS1ETM5 = (xySEPERATS1ETM5 + (pifSEPERATS4S1ETM5arrayRAND[m] * pifSEPERATS1slaveETM5arrayRAND[m]));
                xySEPERATS1ETM7 = (xySEPERATS1ETM7 + (pifSEPERATS4S1ETM7arrayRAND[m] * pifSEPERATS1slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS1ETM1 = xSEPERATS1ETM1 / minPifVAL;
            xAritSEPERATS1ETM2 = xSEPERATS1ETM2 / minPifVAL;
            xAritSEPERATS1ETM3 = xSEPERATS1ETM3 / minPifVAL;
            xAritSEPERATS1ETM4 = xSEPERATS1ETM4 / minPifVAL;
            xAritSEPERATS1ETM5 = xSEPERATS1ETM5 / minPifVAL;
            xAritSEPERATS1ETM7 = xSEPERATS1ETM7 / minPifVAL;
    
            yAritSEPERATS1ETM1 = ySEPERATS1ETM1 / minPifVAL;
            yAritSEPERATS1ETM2 = ySEPERATS1ETM2 / minPifVAL;
            yAritSEPERATS1ETM3 = ySEPERATS1ETM3 / minPifVAL;
            yAritSEPERATS1ETM4 = ySEPERATS1ETM4 / minPifVAL;
            yAritSEPERATS1ETM5 = ySEPERATS1ETM5 / minPifVAL;
            yAritSEPERATS1ETM7 = ySEPERATS1ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1ETM1 = (xxAritQuadSEPERATS1ETM1 + ((pifSEPERATS4S1ETM1arrayRAND[n] - xAritSEPERATS1ETM1)^2));
                xxAritQuadSEPERATS1ETM2 = (xxAritQuadSEPERATS1ETM2 + ((pifSEPERATS4S1ETM2arrayRAND[n] - xAritSEPERATS1ETM2)^2));
                xxAritQuadSEPERATS1ETM3 = (xxAritQuadSEPERATS1ETM3 + ((pifSEPERATS4S1ETM3arrayRAND[n] - xAritSEPERATS1ETM3)^2));
                xxAritQuadSEPERATS1ETM4 = (xxAritQuadSEPERATS1ETM4 + ((pifSEPERATS4S1ETM4arrayRAND[n] - xAritSEPERATS1ETM4)^2));
                xxAritQuadSEPERATS1ETM5 = (xxAritQuadSEPERATS1ETM5 + ((pifSEPERATS4S1ETM5arrayRAND[n] - xAritSEPERATS1ETM5)^2));
                xxAritQuadSEPERATS1ETM7 = (xxAritQuadSEPERATS1ETM7 + ((pifSEPERATS4S1ETM7arrayRAND[n] - xAritSEPERATS1ETM7)^2));
    
                yyAritQuadSEPERATS1ETM1 = (yyAritQuadSEPERATS1ETM1 + ((pifSEPERATS1slaveETM1arrayRAND[n] - yAritSEPERATS1ETM1)^2));
                yyAritQuadSEPERATS1ETM2 = (yyAritQuadSEPERATS1ETM2 + ((pifSEPERATS1slaveETM2arrayRAND[n] - yAritSEPERATS1ETM2)^2));
                yyAritQuadSEPERATS1ETM3 = (yyAritQuadSEPERATS1ETM3 + ((pifSEPERATS1slaveETM3arrayRAND[n] - yAritSEPERATS1ETM3)^2));
                yyAritQuadSEPERATS1ETM4 = (yyAritQuadSEPERATS1ETM4 + ((pifSEPERATS1slaveETM4arrayRAND[n] - yAritSEPERATS1ETM4)^2));
                yyAritQuadSEPERATS1ETM5 = (yyAritQuadSEPERATS1ETM5 + ((pifSEPERATS1slaveETM5arrayRAND[n] - yAritSEPERATS1ETM5)^2));
                yyAritQuadSEPERATS1ETM7 = (yyAritQuadSEPERATS1ETM7 + ((pifSEPERATS1slaveETM7arrayRAND[n] - yAritSEPERATS1ETM7)^2));
    
                qXYSEPERATS1ETM1 = (qXYSEPERATS1ETM1 + ((pifSEPERATS4S1ETM1arrayRAND[n] - xAritSEPERATS1ETM1) * (pifSEPERATS1slaveETM1arrayRAND[n] - yAritSEPERATS1ETM1)));
                qXYSEPERATS1ETM2 = (qXYSEPERATS1ETM2 + ((pifSEPERATS4S1ETM2arrayRAND[n] - xAritSEPERATS1ETM2) * (pifSEPERATS1slaveETM2arrayRAND[n] - yAritSEPERATS1ETM2)));
                qXYSEPERATS1ETM3 = (qXYSEPERATS1ETM3 + ((pifSEPERATS4S1ETM3arrayRAND[n] - xAritSEPERATS1ETM3) * (pifSEPERATS1slaveETM3arrayRAND[n] - yAritSEPERATS1ETM3)));
                qXYSEPERATS1ETM4 = (qXYSEPERATS1ETM4 + ((pifSEPERATS4S1ETM4arrayRAND[n] - xAritSEPERATS1ETM4) * (pifSEPERATS1slaveETM4arrayRAND[n] - yAritSEPERATS1ETM4)));
                qXYSEPERATS1ETM5 = (qXYSEPERATS1ETM5 + ((pifSEPERATS4S1ETM5arrayRAND[n] - xAritSEPERATS1ETM5) * (pifSEPERATS1slaveETM5arrayRAND[n] - yAritSEPERATS1ETM5)));
                qXYSEPERATS1ETM7 = (qXYSEPERATS1ETM7 + ((pifSEPERATS4S1ETM7arrayRAND[n] - xAritSEPERATS1ETM7) * (pifSEPERATS1slaveETM7arrayRAND[n] - yAritSEPERATS1ETM7)));
            }
        
            aSEPERATS1ETM1 = (((xQuadSEPERATS1ETM1 * ySEPERATS1ETM1) - (xSEPERATS1ETM1 * xySEPERATS1ETM1)) / ((minPifVAL * xQuadSEPERATS1ETM1) - (xSEPERATS1ETM1^2)));
            aSEPERATS1ETM2 = (((xQuadSEPERATS1ETM2 * ySEPERATS1ETM2) - (xSEPERATS1ETM2 * xySEPERATS1ETM2)) / ((minPifVAL * xQuadSEPERATS1ETM2) - (xSEPERATS1ETM2^2)));
            aSEPERATS1ETM3 = (((xQuadSEPERATS1ETM3 * ySEPERATS1ETM3) - (xSEPERATS1ETM3 * xySEPERATS1ETM3)) / ((minPifVAL * xQuadSEPERATS1ETM3) - (xSEPERATS1ETM3^2)));
            aSEPERATS1ETM4 = (((xQuadSEPERATS1ETM4 * ySEPERATS1ETM4) - (xSEPERATS1ETM4 * xySEPERATS1ETM4)) / ((minPifVAL * xQuadSEPERATS1ETM4) - (xSEPERATS1ETM4^2)));
            aSEPERATS1ETM5 = (((xQuadSEPERATS1ETM5 * ySEPERATS1ETM5) - (xSEPERATS1ETM5 * xySEPERATS1ETM5)) / ((minPifVAL * xQuadSEPERATS1ETM5) - (xSEPERATS1ETM5^2)));
            aSEPERATS1ETM7 = (((xQuadSEPERATS1ETM7 * ySEPERATS1ETM7) - (xSEPERATS1ETM7 * xySEPERATS1ETM7)) / ((minPifVAL * xQuadSEPERATS1ETM7) - (xSEPERATS1ETM7^2)));
            
            bSEPERATS1ETM1 = qXYSEPERATS1ETM1 / xxAritQuadSEPERATS1ETM1;
            bSEPERATS1ETM2 = qXYSEPERATS1ETM2 / xxAritQuadSEPERATS1ETM2;
            bSEPERATS1ETM3 = qXYSEPERATS1ETM3 / xxAritQuadSEPERATS1ETM3;
            bSEPERATS1ETM4 = qXYSEPERATS1ETM4 / xxAritQuadSEPERATS1ETM4;
            bSEPERATS1ETM5 = qXYSEPERATS1ETM5 / xxAritQuadSEPERATS1ETM5;
            bSEPERATS1ETM7 = qXYSEPERATS1ETM7 / xxAritQuadSEPERATS1ETM7;
    
            rSEPERATS1ETM1 = (qXYSEPERATS1ETM1 / ((xxAritQuadSEPERATS1ETM1 * yyAritQuadSEPERATS1ETM1)^0.5));
            rSEPERATS1ETM2 = (qXYSEPERATS1ETM2 / ((xxAritQuadSEPERATS1ETM2 * yyAritQuadSEPERATS1ETM2)^0.5));
            rSEPERATS1ETM3 = (qXYSEPERATS1ETM3 / ((xxAritQuadSEPERATS1ETM3 * yyAritQuadSEPERATS1ETM3)^0.5));
            rSEPERATS1ETM4 = (qXYSEPERATS1ETM4 / ((xxAritQuadSEPERATS1ETM4 * yyAritQuadSEPERATS1ETM4)^0.5));
            rSEPERATS1ETM5 = (qXYSEPERATS1ETM5 / ((xxAritQuadSEPERATS1ETM5 * yyAritQuadSEPERATS1ETM5)^0.5));
            rSEPERATS1ETM7 = (qXYSEPERATS1ETM7 / ((xxAritQuadSEPERATS1ETM7 * yyAritQuadSEPERATS1ETM7)^0.5));
    
            rQuadSEPERATS1ETM1 = ((rSEPERATS1ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1ETM2 = ((rSEPERATS1ETM2^2) * 100);
            rQuadSEPERATS1ETM3 = ((rSEPERATS1ETM3^2) * 100);
            rQuadSEPERATS1ETM4 = ((rSEPERATS1ETM4^2) * 100);
            rQuadSEPERATS1ETM5 = ((rSEPERATS1ETM5^2) * 100);
            rQuadSEPERATS1ETM7 = ((rSEPERATS1ETM7^2) * 100);
        
            syxSEPERATS1ETM1 = (((yyAritQuadSEPERATS1ETM1 - ((qXYSEPERATS1ETM1^2) / xxAritQuadSEPERATS1ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM2 = (((yyAritQuadSEPERATS1ETM2 - ((qXYSEPERATS1ETM2^2) / xxAritQuadSEPERATS1ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM3 = (((yyAritQuadSEPERATS1ETM3 - ((qXYSEPERATS1ETM3^2) / xxAritQuadSEPERATS1ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM4 = (((yyAritQuadSEPERATS1ETM4 - ((qXYSEPERATS1ETM4^2) / xxAritQuadSEPERATS1ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM5 = (((yyAritQuadSEPERATS1ETM5 - ((qXYSEPERATS1ETM5^2) / xxAritQuadSEPERATS1ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM7 = (((yyAritQuadSEPERATS1ETM7 - ((qXYSEPERATS1ETM7^2) / xxAritQuadSEPERATS1ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1ETM1 = (((syxSEPERATS1ETM1^2) / xxAritQuadSEPERATS1ETM1)^0.5);
            bStandSEPERATS1ETM2 = (((syxSEPERATS1ETM2^2) / xxAritQuadSEPERATS1ETM2)^0.5);
            bStandSEPERATS1ETM3 = (((syxSEPERATS1ETM3^2) / xxAritQuadSEPERATS1ETM3)^0.5);
            bStandSEPERATS1ETM4 = (((syxSEPERATS1ETM4^2) / xxAritQuadSEPERATS1ETM4)^0.5);
            bStandSEPERATS1ETM5 = (((syxSEPERATS1ETM5^2) / xxAritQuadSEPERATS1ETM5)^0.5);
            bStandSEPERATS1ETM7 = (((syxSEPERATS1ETM7^2) / xxAritQuadSEPERATS1ETM7)^0.5);
    
            aStandSEPERATS1ETM1 = (bStandSEPERATS1ETM1 * ((xQuadSEPERATS1ETM1 / minPifVAL)^0.5));
            aStandSEPERATS1ETM2 = (bStandSEPERATS1ETM2 * ((xQuadSEPERATS1ETM2 / minPifVAL)^0.5));
            aStandSEPERATS1ETM3 = (bStandSEPERATS1ETM3 * ((xQuadSEPERATS1ETM3 / minPifVAL)^0.5));
            aStandSEPERATS1ETM4 = (bStandSEPERATS1ETM4 * ((xQuadSEPERATS1ETM4 / minPifVAL)^0.5));
            aStandSEPERATS1ETM5 = (bStandSEPERATS1ETM5 * ((xQuadSEPERATS1ETM5 / minPifVAL)^0.5));
            aStandSEPERATS1ETM7 = (bStandSEPERATS1ETM7 * ((xQuadSEPERATS1ETM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM1, bSEPERATS1ETM1, rSEPERATS1ETM1, rQuadSEPERATS1ETM1, aStandSEPERATS1ETM1, bStandSEPERATS1ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM2, bSEPERATS1ETM2, rSEPERATS1ETM2, rQuadSEPERATS1ETM2, aStandSEPERATS1ETM2, bStandSEPERATS1ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM3, bSEPERATS1ETM3, rSEPERATS1ETM3, rQuadSEPERATS1ETM3, aStandSEPERATS1ETM3, bStandSEPERATS1ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM4, bSEPERATS1ETM4, rSEPERATS1ETM4, rQuadSEPERATS1ETM4, aStandSEPERATS1ETM4, bStandSEPERATS1ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM5, bSEPERATS1ETM5, rSEPERATS1ETM5, rQuadSEPERATS1ETM5, aStandSEPERATS1ETM5, bStandSEPERATS1ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS1ETM7, bSEPERATS1ETM7, rSEPERATS1ETM7, rQuadSEPERATS1ETM7, aStandSEPERATS1ETM7, bStandSEPERATS1ETM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS1slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS1slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS1slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS1slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS1slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS1slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS1slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT1ETM1[i,j] = (aSEPERATS1ETM1 + (bSEPERATS1ETM1 * REFS1ETM1[i,j]));
                    OUT1ETM2[i,j] = (aSEPERATS1ETM2 + (bSEPERATS1ETM2 * REFS1ETM2[i,j]));
                    OUT1ETM3[i,j] = (aSEPERATS1ETM3 + (bSEPERATS1ETM3 * REFS1ETM3[i,j]));
                    OUT1ETM4[i,j] = (aSEPERATS1ETM4 + (bSEPERATS1ETM4 * REFS1ETM4[i,j]));
                    OUT1ETM5[i,j] = (aSEPERATS1ETM5 + (bSEPERATS1ETM5 * REFS1ETM5[i,j]));
                    OUT1ETM7[i,j] = (aSEPERATS1ETM7 + (bSEPERATS1ETM7 * REFS1ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1ETM1);
        	CreatePyramid(OUT1ETM2);
        	CreatePyramid(OUT1ETM3);
        	CreatePyramid(OUT1ETM4);
        	CreatePyramid(OUT1ETM5);
        	CreatePyramid(OUT1ETM7);
        
        	CreateHistogram(OUT1ETM1);
        	CreateHistogram(OUT1ETM2);
        	CreateHistogram(OUT1ETM3);
        	CreateHistogram(OUT1ETM4);
        	CreateHistogram(OUT1ETM5);
        	CreateHistogram(OUT1ETM7);
            CloseRaster(REFS1ETM1);
            CloseRaster(REFS1ETM2);
            CloseRaster(REFS1ETM3);
            CloseRaster(REFS1ETM4);
            CloseRaster(REFS1ETM5);
            CloseRaster(REFS1ETM7);
    
            CloseRaster(OUT1ETM1);
            CloseRaster(OUT1ETM2);
            CloseRaster(OUT1ETM3);
            CloseRaster(OUT1ETM4);
            CloseRaster(OUT1ETM5);
            CloseRaster(OUT1ETM7);
            
        	printf("Scene 1 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors1 == 6 )
            {
            numeric xAritSEPERATS1TM1, xAritSEPERATS1TM2, xAritSEPERATS1TM3, xAritSEPERATS1TM4, xAritSEPERATS1TM5, xAritSEPERATS1TM7;
            numeric yAritSEPERATS1TM1, yAritSEPERATS1TM2, yAritSEPERATS1TM3, yAritSEPERATS1TM4, yAritSEPERATS1TM5, yAritSEPERATS1TM7;
    
            numeric aSEPERATS1TM1, aSEPERATS1TM2, aSEPERATS1TM3, aSEPERATS1TM4, aSEPERATS1TM5, aSEPERATS1TM7;
            numeric bSEPERATS1TM1, bSEPERATS1TM2, bSEPERATS1TM3, bSEPERATS1TM4, bSEPERATS1TM5, bSEPERATS1TM7;
            numeric rSEPERATS1TM1, rSEPERATS1TM2, rSEPERATS1TM3, rSEPERATS1TM4, rSEPERATS1TM5, rSEPERATS1TM7;
            numeric rQuadSEPERATS1TM1, rQuadSEPERATS1TM2, rQuadSEPERATS1TM3, rQuadSEPERATS1TM4, rQuadSEPERATS1TM5, rQuadSEPERATS1TM7;
            numeric syxSEPERATS1TM1, syxSEPERATS1TM2, syxSEPERATS1TM3, syxSEPERATS1TM4, syxSEPERATS1TM5, syxSEPERATS1TM7;
            numeric bStandSEPERATS1TM1, bStandSEPERATS1TM2, bStandSEPERATS1TM3, bStandSEPERATS1TM4, bStandSEPERATS1TM5, bStandSEPERATS1TM7;
            numeric aStandSEPERATS1TM1, aStandSEPERATS1TM2, aStandSEPERATS1TM3, aStandSEPERATS1TM4, aStandSEPERATS1TM5, aStandSEPERATS1TM7;
    
            numeric xSEPERATS1TM1 = 0;
            numeric xSEPERATS1TM2 = 0;
            numeric xSEPERATS1TM3 = 0;
            numeric xSEPERATS1TM4 = 0;
            numeric xSEPERATS1TM5 = 0;
            numeric xSEPERATS1TM7 = 0;
    
            numeric xQuadSEPERATS1TM1 = 0;
            numeric xQuadSEPERATS1TM2 = 0;
            numeric xQuadSEPERATS1TM3 = 0;
            numeric xQuadSEPERATS1TM4 = 0;
            numeric xQuadSEPERATS1TM5 = 0;
            numeric xQuadSEPERATS1TM7 = 0;
    
            numeric ySEPERATS1TM1 = 0;
            numeric ySEPERATS1TM2 = 0;
            numeric ySEPERATS1TM3 = 0;
            numeric ySEPERATS1TM4 = 0;
            numeric ySEPERATS1TM5 = 0;
            numeric ySEPERATS1TM7 = 0;
    
            numeric yQuadSEPERATS1TM1 = 0;
            numeric yQuadSEPERATS1TM2 = 0;
            numeric yQuadSEPERATS1TM3 = 0;
            numeric yQuadSEPERATS1TM4 = 0;
            numeric yQuadSEPERATS1TM5 = 0;
            numeric yQuadSEPERATS1TM7 = 0;
    
            numeric xySEPERATS1TM1 = 0;
            numeric xySEPERATS1TM2 = 0;
            numeric xySEPERATS1TM3 = 0;
            numeric xySEPERATS1TM4 = 0;
            numeric xySEPERATS1TM5 = 0;
            numeric xySEPERATS1TM7 = 0;
    
            numeric xxAritQuadSEPERATS1TM1 = 0;
            numeric xxAritQuadSEPERATS1TM2 = 0;
            numeric xxAritQuadSEPERATS1TM3 = 0;
            numeric xxAritQuadSEPERATS1TM4 = 0;
            numeric xxAritQuadSEPERATS1TM5 = 0;
            numeric xxAritQuadSEPERATS1TM7 = 0;
    
            numeric yyAritQuadSEPERATS1TM1 = 0;
            numeric yyAritQuadSEPERATS1TM2 = 0;
            numeric yyAritQuadSEPERATS1TM3 = 0;
            numeric yyAritQuadSEPERATS1TM4 = 0;
            numeric yyAritQuadSEPERATS1TM5 = 0;
            numeric yyAritQuadSEPERATS1TM7 = 0;
    
            numeric qXYSEPERATS1TM1 = 0;
            numeric qXYSEPERATS1TM2 = 0;
            numeric qXYSEPERATS1TM3 = 0;
            numeric qXYSEPERATS1TM4 = 0;
            numeric qXYSEPERATS1TM5 = 0;
            numeric qXYSEPERATS1TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1TM1 = xSEPERATS1TM1 + pifSEPERATS4S1ETM1arrayRAND[m];
                xSEPERATS1TM2 = xSEPERATS1TM2 + pifSEPERATS4S1ETM2arrayRAND[m];
                xSEPERATS1TM3 = xSEPERATS1TM3 + pifSEPERATS4S1ETM3arrayRAND[m];
                xSEPERATS1TM4 = xSEPERATS1TM4 + pifSEPERATS4S1ETM4arrayRAND[m];
                xSEPERATS1TM5 = xSEPERATS1TM5 + pifSEPERATS4S1ETM5arrayRAND[m];
                xSEPERATS1TM7 = xSEPERATS1TM7 + pifSEPERATS4S1ETM7arrayRAND[m];
    
                xQuadSEPERATS1TM1 = (xQuadSEPERATS1TM1 + (pifSEPERATS4S1ETM1arrayRAND[m]^2));
                xQuadSEPERATS1TM2 = (xQuadSEPERATS1TM2 + (pifSEPERATS4S1ETM2arrayRAND[m]^2));
                xQuadSEPERATS1TM3 = (xQuadSEPERATS1TM3 + (pifSEPERATS4S1ETM3arrayRAND[m]^2));
                xQuadSEPERATS1TM4 = (xQuadSEPERATS1TM4 + (pifSEPERATS4S1ETM4arrayRAND[m]^2));
                xQuadSEPERATS1TM5 = (xQuadSEPERATS1TM5 + (pifSEPERATS4S1ETM5arrayRAND[m]^2));
                xQuadSEPERATS1TM7 = (xQuadSEPERATS1TM7 + (pifSEPERATS4S1ETM7arrayRAND[m]^2));
    
                ySEPERATS1TM1 = ySEPERATS1TM1 + pifSEPERATS1slaveTM1arrayRAND[m];
                ySEPERATS1TM2 = ySEPERATS1TM2 + pifSEPERATS1slaveTM2arrayRAND[m];
                ySEPERATS1TM3 = ySEPERATS1TM3 + pifSEPERATS1slaveTM3arrayRAND[m];
                ySEPERATS1TM4 = ySEPERATS1TM4 + pifSEPERATS1slaveTM4arrayRAND[m];
                ySEPERATS1TM5 = ySEPERATS1TM5 + pifSEPERATS1slaveTM5arrayRAND[m];
                ySEPERATS1TM7 = ySEPERATS1TM7 + pifSEPERATS1slaveTM7arrayRAND[m];
                
                yQuadSEPERATS1TM1 = (yQuadSEPERATS1TM1 + (pifSEPERATS1slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS1TM2 = (yQuadSEPERATS1TM2 + (pifSEPERATS1slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS1TM3 = (yQuadSEPERATS1TM3 + (pifSEPERATS1slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS1TM4 = (yQuadSEPERATS1TM4 + (pifSEPERATS1slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS1TM5 = (yQuadSEPERATS1TM5 + (pifSEPERATS1slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS1TM7 = (yQuadSEPERATS1TM7 + (pifSEPERATS1slaveTM7arrayRAND[m]^2));
    
                xySEPERATS1TM1 = (xySEPERATS1TM1 + (pifSEPERATS4S1ETM1arrayRAND[m] * pifSEPERATS1slaveTM1arrayRAND[m]));
                xySEPERATS1TM2 = (xySEPERATS1TM2 + (pifSEPERATS4S1ETM2arrayRAND[m] * pifSEPERATS1slaveTM2arrayRAND[m]));
                xySEPERATS1TM3 = (xySEPERATS1TM3 + (pifSEPERATS4S1ETM3arrayRAND[m] * pifSEPERATS1slaveTM3arrayRAND[m]));
                xySEPERATS1TM4 = (xySEPERATS1TM4 + (pifSEPERATS4S1ETM4arrayRAND[m] * pifSEPERATS1slaveTM4arrayRAND[m]));
                xySEPERATS1TM5 = (xySEPERATS1TM5 + (pifSEPERATS4S1ETM5arrayRAND[m] * pifSEPERATS1slaveTM5arrayRAND[m]));
                xySEPERATS1TM7 = (xySEPERATS1TM7 + (pifSEPERATS4S1ETM7arrayRAND[m] * pifSEPERATS1slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS1TM1 = xSEPERATS1TM1 / minPifVAL;
            xAritSEPERATS1TM2 = xSEPERATS1TM2 / minPifVAL;
            xAritSEPERATS1TM3 = xSEPERATS1TM3 / minPifVAL;
            xAritSEPERATS1TM4 = xSEPERATS1TM4 / minPifVAL;
            xAritSEPERATS1TM5 = xSEPERATS1TM5 / minPifVAL;
            xAritSEPERATS1TM7 = xSEPERATS1TM7 / minPifVAL;
    
            yAritSEPERATS1TM1 = ySEPERATS1TM1 / minPifVAL;
            yAritSEPERATS1TM2 = ySEPERATS1TM2 / minPifVAL;
            yAritSEPERATS1TM3 = ySEPERATS1TM3 / minPifVAL;
            yAritSEPERATS1TM4 = ySEPERATS1TM4 / minPifVAL;
            yAritSEPERATS1TM5 = ySEPERATS1TM5 / minPifVAL;
            yAritSEPERATS1TM7 = ySEPERATS1TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1TM1 = (xxAritQuadSEPERATS1TM1 + ((pifSEPERATS4S1ETM1arrayRAND[n] - xAritSEPERATS1TM1)^2));
                xxAritQuadSEPERATS1TM2 = (xxAritQuadSEPERATS1TM2 + ((pifSEPERATS4S1ETM2arrayRAND[n] - xAritSEPERATS1TM2)^2));
                xxAritQuadSEPERATS1TM3 = (xxAritQuadSEPERATS1TM3 + ((pifSEPERATS4S1ETM3arrayRAND[n] - xAritSEPERATS1TM3)^2));
                xxAritQuadSEPERATS1TM4 = (xxAritQuadSEPERATS1TM4 + ((pifSEPERATS4S1ETM4arrayRAND[n] - xAritSEPERATS1TM4)^2));
                xxAritQuadSEPERATS1TM5 = (xxAritQuadSEPERATS1TM5 + ((pifSEPERATS4S1ETM5arrayRAND[n] - xAritSEPERATS1TM5)^2));
                xxAritQuadSEPERATS1TM7 = (xxAritQuadSEPERATS1TM7 + ((pifSEPERATS4S1ETM7arrayRAND[n] - xAritSEPERATS1TM7)^2));
    
                yyAritQuadSEPERATS1TM1 = (yyAritQuadSEPERATS1TM1 + ((pifSEPERATS1slaveTM1arrayRAND[n] - yAritSEPERATS1TM1)^2));
                yyAritQuadSEPERATS1TM2 = (yyAritQuadSEPERATS1TM2 + ((pifSEPERATS1slaveTM2arrayRAND[n] - yAritSEPERATS1TM2)^2));
                yyAritQuadSEPERATS1TM3 = (yyAritQuadSEPERATS1TM3 + ((pifSEPERATS1slaveTM3arrayRAND[n] - yAritSEPERATS1TM3)^2));
                yyAritQuadSEPERATS1TM4 = (yyAritQuadSEPERATS1TM4 + ((pifSEPERATS1slaveTM4arrayRAND[n] - yAritSEPERATS1TM4)^2));
                yyAritQuadSEPERATS1TM5 = (yyAritQuadSEPERATS1TM5 + ((pifSEPERATS1slaveTM5arrayRAND[n] - yAritSEPERATS1TM5)^2));
                yyAritQuadSEPERATS1TM7 = (yyAritQuadSEPERATS1TM7 + ((pifSEPERATS1slaveTM7arrayRAND[n] - yAritSEPERATS1TM7)^2));
    
                qXYSEPERATS1TM1 = (qXYSEPERATS1TM1 + ((pifSEPERATS4S1ETM1arrayRAND[n] - xAritSEPERATS1TM1) * (pifSEPERATS1slaveTM1arrayRAND[n] - yAritSEPERATS1TM1)));
                qXYSEPERATS1TM2 = (qXYSEPERATS1TM2 + ((pifSEPERATS4S1ETM2arrayRAND[n] - xAritSEPERATS1TM2) * (pifSEPERATS1slaveTM2arrayRAND[n] - yAritSEPERATS1TM2)));
                qXYSEPERATS1TM3 = (qXYSEPERATS1TM3 + ((pifSEPERATS4S1ETM3arrayRAND[n] - xAritSEPERATS1TM3) * (pifSEPERATS1slaveTM3arrayRAND[n] - yAritSEPERATS1TM3)));
                qXYSEPERATS1TM4 = (qXYSEPERATS1TM4 + ((pifSEPERATS4S1ETM4arrayRAND[n] - xAritSEPERATS1TM4) * (pifSEPERATS1slaveTM4arrayRAND[n] - yAritSEPERATS1TM4)));
                qXYSEPERATS1TM5 = (qXYSEPERATS1TM5 + ((pifSEPERATS4S1ETM5arrayRAND[n] - xAritSEPERATS1TM5) * (pifSEPERATS1slaveTM5arrayRAND[n] - yAritSEPERATS1TM5)));
                qXYSEPERATS1TM7 = (qXYSEPERATS1TM7 + ((pifSEPERATS4S1ETM7arrayRAND[n] - xAritSEPERATS1TM7) * (pifSEPERATS1slaveTM7arrayRAND[n] - yAritSEPERATS1TM7)));
            }
        
            aSEPERATS1TM1 = (((xQuadSEPERATS1TM1 * ySEPERATS1TM1) - (xSEPERATS1TM1 * xySEPERATS1TM1)) / ((minPifVAL * xQuadSEPERATS1TM1) - (xSEPERATS1TM1^2)));
            aSEPERATS1TM2 = (((xQuadSEPERATS1TM2 * ySEPERATS1TM2) - (xSEPERATS1TM2 * xySEPERATS1TM2)) / ((minPifVAL * xQuadSEPERATS1TM2) - (xSEPERATS1TM2^2)));
            aSEPERATS1TM3 = (((xQuadSEPERATS1TM3 * ySEPERATS1TM3) - (xSEPERATS1TM3 * xySEPERATS1TM3)) / ((minPifVAL * xQuadSEPERATS1TM3) - (xSEPERATS1TM3^2)));
            aSEPERATS1TM4 = (((xQuadSEPERATS1TM4 * ySEPERATS1TM4) - (xSEPERATS1TM4 * xySEPERATS1TM4)) / ((minPifVAL * xQuadSEPERATS1TM4) - (xSEPERATS1TM4^2)));
            aSEPERATS1TM5 = (((xQuadSEPERATS1TM5 * ySEPERATS1TM5) - (xSEPERATS1TM5 * xySEPERATS1TM5)) / ((minPifVAL * xQuadSEPERATS1TM5) - (xSEPERATS1TM5^2)));
            aSEPERATS1TM7 = (((xQuadSEPERATS1TM7 * ySEPERATS1TM7) - (xSEPERATS1TM7 * xySEPERATS1TM7)) / ((minPifVAL * xQuadSEPERATS1TM7) - (xSEPERATS1TM7^2)));
            
            bSEPERATS1TM1 = qXYSEPERATS1TM1 / xxAritQuadSEPERATS1TM1;
            bSEPERATS1TM2 = qXYSEPERATS1TM2 / xxAritQuadSEPERATS1TM2;
            bSEPERATS1TM3 = qXYSEPERATS1TM3 / xxAritQuadSEPERATS1TM3;
            bSEPERATS1TM4 = qXYSEPERATS1TM4 / xxAritQuadSEPERATS1TM4;
            bSEPERATS1TM5 = qXYSEPERATS1TM5 / xxAritQuadSEPERATS1TM5;
            bSEPERATS1TM7 = qXYSEPERATS1TM7 / xxAritQuadSEPERATS1TM7;
    
            rSEPERATS1TM1 = (qXYSEPERATS1TM1 / ((xxAritQuadSEPERATS1TM1 * yyAritQuadSEPERATS1TM1)^0.5));
            rSEPERATS1TM2 = (qXYSEPERATS1TM2 / ((xxAritQuadSEPERATS1TM2 * yyAritQuadSEPERATS1TM2)^0.5));
            rSEPERATS1TM3 = (qXYSEPERATS1TM3 / ((xxAritQuadSEPERATS1TM3 * yyAritQuadSEPERATS1TM3)^0.5));
            rSEPERATS1TM4 = (qXYSEPERATS1TM4 / ((xxAritQuadSEPERATS1TM4 * yyAritQuadSEPERATS1TM4)^0.5));
            rSEPERATS1TM5 = (qXYSEPERATS1TM5 / ((xxAritQuadSEPERATS1TM5 * yyAritQuadSEPERATS1TM5)^0.5));
            rSEPERATS1TM7 = (qXYSEPERATS1TM7 / ((xxAritQuadSEPERATS1TM7 * yyAritQuadSEPERATS1TM7)^0.5));
    
            rQuadSEPERATS1TM1 = ((rSEPERATS1TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1TM2 = ((rSEPERATS1TM2^2) * 100);
            rQuadSEPERATS1TM3 = ((rSEPERATS1TM3^2) * 100);
            rQuadSEPERATS1TM4 = ((rSEPERATS1TM4^2) * 100);
            rQuadSEPERATS1TM5 = ((rSEPERATS1TM5^2) * 100);
            rQuadSEPERATS1TM7 = ((rSEPERATS1TM7^2) * 100);
        
            syxSEPERATS1TM1 = (((yyAritQuadSEPERATS1TM1 - ((qXYSEPERATS1TM1^2) / xxAritQuadSEPERATS1TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM2 = (((yyAritQuadSEPERATS1TM2 - ((qXYSEPERATS1TM2^2) / xxAritQuadSEPERATS1TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM3 = (((yyAritQuadSEPERATS1TM3 - ((qXYSEPERATS1TM3^2) / xxAritQuadSEPERATS1TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM4 = (((yyAritQuadSEPERATS1TM4 - ((qXYSEPERATS1TM4^2) / xxAritQuadSEPERATS1TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM5 = (((yyAritQuadSEPERATS1TM5 - ((qXYSEPERATS1TM5^2) / xxAritQuadSEPERATS1TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM7 = (((yyAritQuadSEPERATS1TM7 - ((qXYSEPERATS1TM7^2) / xxAritQuadSEPERATS1TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1TM1 = (((syxSEPERATS1TM1^2) / xxAritQuadSEPERATS1TM1)^0.5);
            bStandSEPERATS1TM2 = (((syxSEPERATS1TM2^2) / xxAritQuadSEPERATS1TM2)^0.5);
            bStandSEPERATS1TM3 = (((syxSEPERATS1TM3^2) / xxAritQuadSEPERATS1TM3)^0.5);
            bStandSEPERATS1TM4 = (((syxSEPERATS1TM4^2) / xxAritQuadSEPERATS1TM4)^0.5);
            bStandSEPERATS1TM5 = (((syxSEPERATS1TM5^2) / xxAritQuadSEPERATS1TM5)^0.5);
            bStandSEPERATS1TM7 = (((syxSEPERATS1TM7^2) / xxAritQuadSEPERATS1TM7)^0.5);
    
            aStandSEPERATS1TM1 = (bStandSEPERATS1TM1 * ((xQuadSEPERATS1TM1 / minPifVAL)^0.5));
            aStandSEPERATS1TM2 = (bStandSEPERATS1TM2 * ((xQuadSEPERATS1TM2 / minPifVAL)^0.5));
            aStandSEPERATS1TM3 = (bStandSEPERATS1TM3 * ((xQuadSEPERATS1TM3 / minPifVAL)^0.5));
            aStandSEPERATS1TM4 = (bStandSEPERATS1TM4 * ((xQuadSEPERATS1TM4 / minPifVAL)^0.5));
            aStandSEPERATS1TM5 = (bStandSEPERATS1TM5 * ((xQuadSEPERATS1TM5 / minPifVAL)^0.5));
            aStandSEPERATS1TM7 = (bStandSEPERATS1TM7 * ((xQuadSEPERATS1TM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM1, bSEPERATS1TM1, rSEPERATS1TM1, rQuadSEPERATS1TM1, aStandSEPERATS1TM1, bStandSEPERATS1TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM2, bSEPERATS1TM2, rSEPERATS1TM2, rQuadSEPERATS1TM2, aStandSEPERATS1TM2, bStandSEPERATS1TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM3, bSEPERATS1TM3, rSEPERATS1TM3, rQuadSEPERATS1TM3, aStandSEPERATS1TM3, bStandSEPERATS1TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM4, bSEPERATS1TM4, rSEPERATS1TM4, rQuadSEPERATS1TM4, aStandSEPERATS1TM4, bStandSEPERATS1TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM5, bSEPERATS1TM5, rSEPERATS1TM5, rQuadSEPERATS1TM5, aStandSEPERATS1TM5, bStandSEPERATS1TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS1TM7, bSEPERATS1TM7, rSEPERATS1TM7, rQuadSEPERATS1TM7, aStandSEPERATS1TM7, bStandSEPERATS1TM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS1slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS1slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS1slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS1slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS1slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS1slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS1slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT1TM1[i,j] = (aSEPERATS1TM1 + (bSEPERATS1TM1 * REFS1TM1[i,j]));
                    OUT1TM2[i,j] = (aSEPERATS1TM2 + (bSEPERATS1TM2 * REFS1TM2[i,j]));
                    OUT1TM3[i,j] = (aSEPERATS1TM3 + (bSEPERATS1TM3 * REFS1TM3[i,j]));
                    OUT1TM4[i,j] = (aSEPERATS1TM4 + (bSEPERATS1TM4 * REFS1TM4[i,j]));
                    OUT1TM5[i,j] = (aSEPERATS1TM5 + (bSEPERATS1TM5 * REFS1TM5[i,j]));
                    OUT1TM7[i,j] = (aSEPERATS1TM7 + (bSEPERATS1TM7 * REFS1TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1TM1);
        	CreatePyramid(OUT1TM2);
        	CreatePyramid(OUT1TM3);
        	CreatePyramid(OUT1TM4);
        	CreatePyramid(OUT1TM5);
        	CreatePyramid(OUT1TM7);
        
        	CreateHistogram(OUT1TM1);
        	CreateHistogram(OUT1TM2);
        	CreateHistogram(OUT1TM3);
        	CreateHistogram(OUT1TM4);
        	CreateHistogram(OUT1TM5);
        	CreateHistogram(OUT1TM7);
            CloseRaster(REFS1TM1);
            CloseRaster(REFS1TM2);
            CloseRaster(REFS1TM3);
            CloseRaster(REFS1TM4);
            CloseRaster(REFS1TM5);
            CloseRaster(REFS1TM7);
    
            CloseRaster(OUT1TM1);
            CloseRaster(OUT1TM2);
            CloseRaster(OUT1TM3);
            CloseRaster(OUT1TM4);
            CloseRaster(OUT1TM5);
            CloseRaster(OUT1TM7);
        
        	printf("Scene 1 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS1MSS1, xAritSEPERATS1MSS2, xAritSEPERATS1MSS4;
            numeric yAritSEPERATS1MSS1, yAritSEPERATS1MSS2, yAritSEPERATS1MSS4;
    
            numeric aSEPERATS1MSS1, aSEPERATS1MSS2, aSEPERATS1MSS4;
            numeric bSEPERATS1MSS1, bSEPERATS1MSS2, bSEPERATS1MSS4;
            numeric rSEPERATS1MSS1, rSEPERATS1MSS2, rSEPERATS1MSS4;
            numeric rQuadSEPERATS1MSS1, rQuadSEPERATS1MSS2, rQuadSEPERATS1MSS4;
            numeric syxSEPERATS1MSS1, syxSEPERATS1MSS2, syxSEPERATS1MSS4;
            numeric bStandSEPERATS1MSS1, bStandSEPERATS1MSS2, bStandSEPERATS1MSS4;
            numeric aStandSEPERATS1MSS1, aStandSEPERATS1MSS2, aStandSEPERATS1MSS4;
    
            numeric xSEPERATS1MSS1 = 0;
            numeric xSEPERATS1MSS2 = 0;
            numeric xSEPERATS1MSS4 = 0;
    
            numeric xQuadSEPERATS1MSS1 = 0;
            numeric xQuadSEPERATS1MSS2 = 0;
            numeric xQuadSEPERATS1MSS4 = 0;
    
            numeric ySEPERATS1MSS1 = 0;
            numeric ySEPERATS1MSS2 = 0;
            numeric ySEPERATS1MSS4 = 0;
    
            numeric yQuadSEPERATS1MSS1 = 0;
            numeric yQuadSEPERATS1MSS2 = 0;
            numeric yQuadSEPERATS1MSS4 = 0;
    
            numeric xySEPERATS1MSS1 = 0;
            numeric xySEPERATS1MSS2 = 0;
            numeric xySEPERATS1MSS4 = 0;
    
            numeric xxAritQuadSEPERATS1MSS1 = 0;
            numeric xxAritQuadSEPERATS1MSS2 = 0;
            numeric xxAritQuadSEPERATS1MSS4 = 0;
    
            numeric yyAritQuadSEPERATS1MSS1 = 0;
            numeric yyAritQuadSEPERATS1MSS2 = 0;
            numeric yyAritQuadSEPERATS1MSS4 = 0;
    
            numeric qXYSEPERATS1MSS1 = 0;
            numeric qXYSEPERATS1MSS2 = 0;
            numeric qXYSEPERATS1MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1MSS1 = xSEPERATS1MSS1 + pifSEPERATS4S1ETM2arrayRAND[m];
                xSEPERATS1MSS2 = xSEPERATS1MSS2 + pifSEPERATS4S1ETM3arrayRAND[m];
                xSEPERATS1MSS4 = xSEPERATS1MSS4 + pifSEPERATS4S1ETM4arrayRAND[m];
    
                xQuadSEPERATS1MSS1 = (xQuadSEPERATS1MSS1 + (pifSEPERATS4S1ETM2arrayRAND[m]^2));
                xQuadSEPERATS1MSS2 = (xQuadSEPERATS1MSS2 + (pifSEPERATS4S1ETM3arrayRAND[m]^2));
                xQuadSEPERATS1MSS4 = (xQuadSEPERATS1MSS4 + (pifSEPERATS4S1ETM4arrayRAND[m]^2));
    
                ySEPERATS1MSS1 = ySEPERATS1MSS1 + pifSEPERATS1slaveMSS1arrayRAND[m];
                ySEPERATS1MSS2 = ySEPERATS1MSS2 + pifSEPERATS1slaveMSS2arrayRAND[m];
                ySEPERATS1MSS4 = ySEPERATS1MSS4 + pifSEPERATS1slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS1MSS1 = (yQuadSEPERATS1MSS1 + (pifSEPERATS1slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS1MSS2 = (yQuadSEPERATS1MSS2 + (pifSEPERATS1slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS1MSS4 = (yQuadSEPERATS1MSS4 + (pifSEPERATS1slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS1MSS1 = (xySEPERATS1MSS1 + (pifSEPERATS4S1ETM2arrayRAND[m] * pifSEPERATS1slaveMSS1arrayRAND[m]));
                xySEPERATS1MSS2 = (xySEPERATS1MSS2 + (pifSEPERATS4S1ETM3arrayRAND[m] * pifSEPERATS1slaveMSS2arrayRAND[m]));
                xySEPERATS1MSS4 = (xySEPERATS1MSS4 + (pifSEPERATS4S1ETM4arrayRAND[m] * pifSEPERATS1slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS1MSS1 = xSEPERATS1MSS1 / minPifVAL;
            xAritSEPERATS1MSS2 = xSEPERATS1MSS2 / minPifVAL;
            xAritSEPERATS1MSS4 = xSEPERATS1MSS4 / minPifVAL;
    
            yAritSEPERATS1MSS1 = ySEPERATS1MSS1 / minPifVAL;
            yAritSEPERATS1MSS2 = ySEPERATS1MSS2 / minPifVAL;
            yAritSEPERATS1MSS4 = ySEPERATS1MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1MSS1 = (xxAritQuadSEPERATS1MSS1 + ((pifSEPERATS4S1ETM2arrayRAND[n] - xAritSEPERATS1MSS1)^2));
                xxAritQuadSEPERATS1MSS2 = (xxAritQuadSEPERATS1MSS2 + ((pifSEPERATS4S1ETM3arrayRAND[n] - xAritSEPERATS1MSS2)^2));
                xxAritQuadSEPERATS1MSS4 = (xxAritQuadSEPERATS1MSS4 + ((pifSEPERATS4S1ETM4arrayRAND[n] - xAritSEPERATS1MSS4)^2));
    
                yyAritQuadSEPERATS1MSS1 = (yyAritQuadSEPERATS1MSS1 + ((pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)^2));
                yyAritQuadSEPERATS1MSS2 = (yyAritQuadSEPERATS1MSS2 + ((pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)^2));
                yyAritQuadSEPERATS1MSS4 = (yyAritQuadSEPERATS1MSS4 + ((pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)^2));
    
                qXYSEPERATS1MSS1 = (qXYSEPERATS1MSS1 + ((pifSEPERATS4S1ETM2arrayRAND[n] - xAritSEPERATS1MSS1) * (pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)));
                qXYSEPERATS1MSS2 = (qXYSEPERATS1MSS2 + ((pifSEPERATS4S1ETM3arrayRAND[n] - xAritSEPERATS1MSS2) * (pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)));
                qXYSEPERATS1MSS4 = (qXYSEPERATS1MSS4 + ((pifSEPERATS4S1ETM4arrayRAND[n] - xAritSEPERATS1MSS4) * (pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)));
            }
        
            aSEPERATS1MSS1 = (((xQuadSEPERATS1MSS1 * ySEPERATS1MSS1) - (xSEPERATS1MSS1 * xySEPERATS1MSS1)) / ((minPifVAL * xQuadSEPERATS1MSS1) - (xSEPERATS1MSS1^2)));
            aSEPERATS1MSS2 = (((xQuadSEPERATS1MSS2 * ySEPERATS1MSS2) - (xSEPERATS1MSS2 * xySEPERATS1MSS2)) / ((minPifVAL * xQuadSEPERATS1MSS2) - (xSEPERATS1MSS2^2)));
            aSEPERATS1MSS4 = (((xQuadSEPERATS1MSS4 * ySEPERATS1MSS4) - (xSEPERATS1MSS4 * xySEPERATS1MSS4)) / ((minPifVAL * xQuadSEPERATS1MSS4) - (xSEPERATS1MSS4^2)));
            
            bSEPERATS1MSS1 = qXYSEPERATS1MSS1 / xxAritQuadSEPERATS1MSS1;
            bSEPERATS1MSS2 = qXYSEPERATS1MSS2 / xxAritQuadSEPERATS1MSS2;
            bSEPERATS1MSS4 = qXYSEPERATS1MSS4 / xxAritQuadSEPERATS1MSS4;
    
            rSEPERATS1MSS1 = (qXYSEPERATS1MSS1 / ((xxAritQuadSEPERATS1MSS1 * yyAritQuadSEPERATS1MSS1)^0.5));
            rSEPERATS1MSS2 = (qXYSEPERATS1MSS2 / ((xxAritQuadSEPERATS1MSS2 * yyAritQuadSEPERATS1MSS2)^0.5));
            rSEPERATS1MSS4 = (qXYSEPERATS1MSS4 / ((xxAritQuadSEPERATS1MSS4 * yyAritQuadSEPERATS1MSS4)^0.5));
    
            rQuadSEPERATS1MSS1 = ((rSEPERATS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1MSS2 = ((rSEPERATS1MSS2^2) * 100);
            rQuadSEPERATS1MSS4 = ((rSEPERATS1MSS4^2) * 100);
        
            syxSEPERATS1MSS1 = (((yyAritQuadSEPERATS1MSS1 - ((qXYSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS2 = (((yyAritQuadSEPERATS1MSS2 - ((qXYSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS4 = (((yyAritQuadSEPERATS1MSS4 - ((qXYSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1MSS1 = (((syxSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)^0.5);
            bStandSEPERATS1MSS2 = (((syxSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)^0.5);
            bStandSEPERATS1MSS4 = (((syxSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)^0.5);
    
            aStandSEPERATS1MSS1 = (bStandSEPERATS1MSS1 * ((xQuadSEPERATS1MSS1 / minPifVAL)^0.5));
            aStandSEPERATS1MSS2 = (bStandSEPERATS1MSS2 * ((xQuadSEPERATS1MSS2 / minPifVAL)^0.5));
            aStandSEPERATS1MSS4 = (bStandSEPERATS1MSS4 * ((xQuadSEPERATS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS1, bSEPERATS1MSS1, rSEPERATS1MSS1, rQuadSEPERATS1MSS1, aStandSEPERATS1MSS1, bStandSEPERATS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS2, bSEPERATS1MSS2, rSEPERATS1MSS2, rQuadSEPERATS1MSS2, aStandSEPERATS1MSS2, bStandSEPERATS1MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS4, bSEPERATS1MSS4, rSEPERATS1MSS4, rQuadSEPERATS1MSS4, aStandSEPERATS1MSS4, bStandSEPERATS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS1slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS1slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS1slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aSEPERATS1MSS1 + (bSEPERATS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aSEPERATS1MSS2 + (bSEPERATS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = REFS1MSS3[i,j];
                    OUT1MSS4[i,j] = (aSEPERATS1MSS4 + (bSEPERATS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT1MSS1);
            CreatePyramid(OUT1MSS2);
            CreatePyramid(OUT1MSS3);
            CreatePyramid(OUT1MSS4);
        
            CreateHistogram(OUT1MSS1);
            CreateHistogram(OUT1MSS2);
            CreateHistogram(OUT1MSS3);
            CreateHistogram(OUT1MSS4);
            
            CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors2 == 7 )
            {
            numeric xAritSEPERATS2ETM1, xAritSEPERATS2ETM2, xAritSEPERATS2ETM3, xAritSEPERATS2ETM4, xAritSEPERATS2ETM5, xAritSEPERATS2ETM7;
            numeric yAritSEPERATS2ETM1, yAritSEPERATS2ETM2, yAritSEPERATS2ETM3, yAritSEPERATS2ETM4, yAritSEPERATS2ETM5, yAritSEPERATS2ETM7;
    
            numeric aSEPERATS2ETM1, aSEPERATS2ETM2, aSEPERATS2ETM3, aSEPERATS2ETM4, aSEPERATS2ETM5, aSEPERATS2ETM7;
            numeric bSEPERATS2ETM1, bSEPERATS2ETM2, bSEPERATS2ETM3, bSEPERATS2ETM4, bSEPERATS2ETM5, bSEPERATS2ETM7;
            numeric rSEPERATS2ETM1, rSEPERATS2ETM2, rSEPERATS2ETM3, rSEPERATS2ETM4, rSEPERATS2ETM5, rSEPERATS2ETM7;
            numeric rQuadSEPERATS2ETM1, rQuadSEPERATS2ETM2, rQuadSEPERATS2ETM3, rQuadSEPERATS2ETM4, rQuadSEPERATS2ETM5, rQuadSEPERATS2ETM7;
            numeric syxSEPERATS2ETM1, syxSEPERATS2ETM2, syxSEPERATS2ETM3, syxSEPERATS2ETM4, syxSEPERATS2ETM5, syxSEPERATS2ETM7;
            numeric bStandSEPERATS2ETM1, bStandSEPERATS2ETM2, bStandSEPERATS2ETM3, bStandSEPERATS2ETM4, bStandSEPERATS2ETM5, bStandSEPERATS2ETM7;
            numeric aStandSEPERATS2ETM1, aStandSEPERATS2ETM2, aStandSEPERATS2ETM3, aStandSEPERATS2ETM4, aStandSEPERATS2ETM5, aStandSEPERATS2ETM7;
    
            numeric xSEPERATS2ETM1 = 0;
            numeric xSEPERATS2ETM2 = 0;
            numeric xSEPERATS2ETM3 = 0;
            numeric xSEPERATS2ETM4 = 0;
            numeric xSEPERATS2ETM5 = 0;
            numeric xSEPERATS2ETM7 = 0;
    
            numeric xQuadSEPERATS2ETM1 = 0;
            numeric xQuadSEPERATS2ETM2 = 0;
            numeric xQuadSEPERATS2ETM3 = 0;
            numeric xQuadSEPERATS2ETM4 = 0;
            numeric xQuadSEPERATS2ETM5 = 0;
            numeric xQuadSEPERATS2ETM7 = 0;
    
            numeric ySEPERATS2ETM1 = 0;
            numeric ySEPERATS2ETM2 = 0;
            numeric ySEPERATS2ETM3 = 0;
            numeric ySEPERATS2ETM4 = 0;
            numeric ySEPERATS2ETM5 = 0;
            numeric ySEPERATS2ETM7 = 0;
    
            numeric yQuadSEPERATS2ETM1 = 0;
            numeric yQuadSEPERATS2ETM2 = 0;
            numeric yQuadSEPERATS2ETM3 = 0;
            numeric yQuadSEPERATS2ETM4 = 0;
            numeric yQuadSEPERATS2ETM5 = 0;
            numeric yQuadSEPERATS2ETM7 = 0;
    
            numeric xySEPERATS2ETM1 = 0;
            numeric xySEPERATS2ETM2 = 0;
            numeric xySEPERATS2ETM3 = 0;
            numeric xySEPERATS2ETM4 = 0;
            numeric xySEPERATS2ETM5 = 0;
            numeric xySEPERATS2ETM7 = 0;
    
            numeric xxAritQuadSEPERATS2ETM1 = 0;
            numeric xxAritQuadSEPERATS2ETM2 = 0;
            numeric xxAritQuadSEPERATS2ETM3 = 0;
            numeric xxAritQuadSEPERATS2ETM4 = 0;
            numeric xxAritQuadSEPERATS2ETM5 = 0;
            numeric xxAritQuadSEPERATS2ETM7 = 0;
    
            numeric yyAritQuadSEPERATS2ETM1 = 0;
            numeric yyAritQuadSEPERATS2ETM2 = 0;
            numeric yyAritQuadSEPERATS2ETM3 = 0;
            numeric yyAritQuadSEPERATS2ETM4 = 0;
            numeric yyAritQuadSEPERATS2ETM5 = 0;
            numeric yyAritQuadSEPERATS2ETM7 = 0;
    
            numeric qXYSEPERATS2ETM1 = 0;
            numeric qXYSEPERATS2ETM2 = 0;
            numeric qXYSEPERATS2ETM3 = 0;
            numeric qXYSEPERATS2ETM4 = 0;
            numeric qXYSEPERATS2ETM5 = 0;
            numeric qXYSEPERATS2ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS2ETM1 = xSEPERATS2ETM1 + pifSEPERATS4S2ETM1arrayRAND[m];
                xSEPERATS2ETM2 = xSEPERATS2ETM2 + pifSEPERATS4S2ETM2arrayRAND[m];
                xSEPERATS2ETM3 = xSEPERATS2ETM3 + pifSEPERATS4S2ETM3arrayRAND[m];
                xSEPERATS2ETM4 = xSEPERATS2ETM4 + pifSEPERATS4S2ETM4arrayRAND[m];
                xSEPERATS2ETM5 = xSEPERATS2ETM5 + pifSEPERATS4S2ETM5arrayRAND[m];
                xSEPERATS2ETM7 = xSEPERATS2ETM7 + pifSEPERATS4S2ETM7arrayRAND[m];
    
                xQuadSEPERATS2ETM1 = (xQuadSEPERATS2ETM1 + (pifSEPERATS4S2ETM1arrayRAND[m]^2));
                xQuadSEPERATS2ETM2 = (xQuadSEPERATS2ETM2 + (pifSEPERATS4S2ETM2arrayRAND[m]^2));
                xQuadSEPERATS2ETM3 = (xQuadSEPERATS2ETM3 + (pifSEPERATS4S2ETM3arrayRAND[m]^2));
                xQuadSEPERATS2ETM4 = (xQuadSEPERATS2ETM4 + (pifSEPERATS4S2ETM4arrayRAND[m]^2));
                xQuadSEPERATS2ETM5 = (xQuadSEPERATS2ETM5 + (pifSEPERATS4S2ETM5arrayRAND[m]^2));
                xQuadSEPERATS2ETM7 = (xQuadSEPERATS2ETM7 + (pifSEPERATS4S2ETM7arrayRAND[m]^2));
    
                ySEPERATS2ETM1 = ySEPERATS2ETM1 + pifSEPERATS2slaveETM1arrayRAND[m];
                ySEPERATS2ETM2 = ySEPERATS2ETM2 + pifSEPERATS2slaveETM2arrayRAND[m];
                ySEPERATS2ETM3 = ySEPERATS2ETM3 + pifSEPERATS2slaveETM3arrayRAND[m];
                ySEPERATS2ETM4 = ySEPERATS2ETM4 + pifSEPERATS2slaveETM4arrayRAND[m];
                ySEPERATS2ETM5 = ySEPERATS2ETM5 + pifSEPERATS2slaveETM5arrayRAND[m];
                ySEPERATS2ETM7 = ySEPERATS2ETM7 + pifSEPERATS2slaveETM7arrayRAND[m];
                
                yQuadSEPERATS2ETM1 = (yQuadSEPERATS2ETM1 + (pifSEPERATS2slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS2ETM2 = (yQuadSEPERATS2ETM2 + (pifSEPERATS2slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS2ETM3 = (yQuadSEPERATS2ETM3 + (pifSEPERATS2slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS2ETM4 = (yQuadSEPERATS2ETM4 + (pifSEPERATS2slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS2ETM5 = (yQuadSEPERATS2ETM5 + (pifSEPERATS2slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS2ETM7 = (yQuadSEPERATS2ETM7 + (pifSEPERATS2slaveETM7arrayRAND[m]^2));
    
                xySEPERATS2ETM1 = (xySEPERATS2ETM1 + (pifSEPERATS4S2ETM1arrayRAND[m] * pifSEPERATS2slaveETM1arrayRAND[m]));
                xySEPERATS2ETM2 = (xySEPERATS2ETM2 + (pifSEPERATS4S2ETM2arrayRAND[m] * pifSEPERATS2slaveETM2arrayRAND[m]));
                xySEPERATS2ETM3 = (xySEPERATS2ETM3 + (pifSEPERATS4S2ETM3arrayRAND[m] * pifSEPERATS2slaveETM3arrayRAND[m]));
                xySEPERATS2ETM4 = (xySEPERATS2ETM4 + (pifSEPERATS4S2ETM4arrayRAND[m] * pifSEPERATS2slaveETM4arrayRAND[m]));
                xySEPERATS2ETM5 = (xySEPERATS2ETM5 + (pifSEPERATS4S2ETM5arrayRAND[m] * pifSEPERATS2slaveETM5arrayRAND[m]));
                xySEPERATS2ETM7 = (xySEPERATS2ETM7 + (pifSEPERATS4S2ETM7arrayRAND[m] * pifSEPERATS2slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS2ETM1 = xSEPERATS2ETM1 / minPifVAL;
            xAritSEPERATS2ETM2 = xSEPERATS2ETM2 / minPifVAL;
            xAritSEPERATS2ETM3 = xSEPERATS2ETM3 / minPifVAL;
            xAritSEPERATS2ETM4 = xSEPERATS2ETM4 / minPifVAL;
            xAritSEPERATS2ETM5 = xSEPERATS2ETM5 / minPifVAL;
            xAritSEPERATS2ETM7 = xSEPERATS2ETM7 / minPifVAL;
    
            yAritSEPERATS2ETM1 = ySEPERATS2ETM1 / minPifVAL;
            yAritSEPERATS2ETM2 = ySEPERATS2ETM2 / minPifVAL;
            yAritSEPERATS2ETM3 = ySEPERATS2ETM3 / minPifVAL;
            yAritSEPERATS2ETM4 = ySEPERATS2ETM4 / minPifVAL;
            yAritSEPERATS2ETM5 = ySEPERATS2ETM5 / minPifVAL;
            yAritSEPERATS2ETM7 = ySEPERATS2ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2ETM1 = (xxAritQuadSEPERATS2ETM1 + ((pifSEPERATS4S2ETM1arrayRAND[n] - xAritSEPERATS2ETM1)^2));
                xxAritQuadSEPERATS2ETM2 = (xxAritQuadSEPERATS2ETM2 + ((pifSEPERATS4S2ETM2arrayRAND[n] - xAritSEPERATS2ETM2)^2));
                xxAritQuadSEPERATS2ETM3 = (xxAritQuadSEPERATS2ETM3 + ((pifSEPERATS4S2ETM3arrayRAND[n] - xAritSEPERATS2ETM3)^2));
                xxAritQuadSEPERATS2ETM4 = (xxAritQuadSEPERATS2ETM4 + ((pifSEPERATS4S2ETM4arrayRAND[n] - xAritSEPERATS2ETM4)^2));
                xxAritQuadSEPERATS2ETM5 = (xxAritQuadSEPERATS2ETM5 + ((pifSEPERATS4S2ETM5arrayRAND[n] - xAritSEPERATS2ETM5)^2));
                xxAritQuadSEPERATS2ETM7 = (xxAritQuadSEPERATS2ETM7 + ((pifSEPERATS4S2ETM7arrayRAND[n] - xAritSEPERATS2ETM7)^2));
    
                yyAritQuadSEPERATS2ETM1 = (yyAritQuadSEPERATS2ETM1 + ((pifSEPERATS2slaveETM1arrayRAND[n] - yAritSEPERATS2ETM1)^2));
                yyAritQuadSEPERATS2ETM2 = (yyAritQuadSEPERATS2ETM2 + ((pifSEPERATS2slaveETM2arrayRAND[n] - yAritSEPERATS2ETM2)^2));
                yyAritQuadSEPERATS2ETM3 = (yyAritQuadSEPERATS2ETM3 + ((pifSEPERATS2slaveETM3arrayRAND[n] - yAritSEPERATS2ETM3)^2));
                yyAritQuadSEPERATS2ETM4 = (yyAritQuadSEPERATS2ETM4 + ((pifSEPERATS2slaveETM4arrayRAND[n] - yAritSEPERATS2ETM4)^2));
                yyAritQuadSEPERATS2ETM5 = (yyAritQuadSEPERATS2ETM5 + ((pifSEPERATS2slaveETM5arrayRAND[n] - yAritSEPERATS2ETM5)^2));
                yyAritQuadSEPERATS2ETM7 = (yyAritQuadSEPERATS2ETM7 + ((pifSEPERATS2slaveETM7arrayRAND[n] - yAritSEPERATS2ETM7)^2));
    
                qXYSEPERATS2ETM1 = (qXYSEPERATS2ETM1 + ((pifSEPERATS4S2ETM1arrayRAND[n] - xAritSEPERATS2ETM1) * (pifSEPERATS2slaveETM1arrayRAND[n] - yAritSEPERATS2ETM1)));
                qXYSEPERATS2ETM2 = (qXYSEPERATS2ETM2 + ((pifSEPERATS4S2ETM2arrayRAND[n] - xAritSEPERATS2ETM2) * (pifSEPERATS2slaveETM2arrayRAND[n] - yAritSEPERATS2ETM2)));
                qXYSEPERATS2ETM3 = (qXYSEPERATS2ETM3 + ((pifSEPERATS4S2ETM3arrayRAND[n] - xAritSEPERATS2ETM3) * (pifSEPERATS2slaveETM3arrayRAND[n] - yAritSEPERATS2ETM3)));
                qXYSEPERATS2ETM4 = (qXYSEPERATS2ETM4 + ((pifSEPERATS4S2ETM4arrayRAND[n] - xAritSEPERATS2ETM4) * (pifSEPERATS2slaveETM4arrayRAND[n] - yAritSEPERATS2ETM4)));
                qXYSEPERATS2ETM5 = (qXYSEPERATS2ETM5 + ((pifSEPERATS4S2ETM5arrayRAND[n] - xAritSEPERATS2ETM5) * (pifSEPERATS2slaveETM5arrayRAND[n] - yAritSEPERATS2ETM5)));
                qXYSEPERATS2ETM7 = (qXYSEPERATS2ETM7 + ((pifSEPERATS4S2ETM7arrayRAND[n] - xAritSEPERATS2ETM7) * (pifSEPERATS2slaveETM7arrayRAND[n] - yAritSEPERATS2ETM7)));
            }
        
            aSEPERATS2ETM1 = (((xQuadSEPERATS2ETM1 * ySEPERATS2ETM1) - (xSEPERATS2ETM1 * xySEPERATS2ETM1)) / ((minPifVAL * xQuadSEPERATS2ETM1) - (xSEPERATS2ETM1^2)));
            aSEPERATS2ETM2 = (((xQuadSEPERATS2ETM2 * ySEPERATS2ETM2) - (xSEPERATS2ETM2 * xySEPERATS2ETM2)) / ((minPifVAL * xQuadSEPERATS2ETM2) - (xSEPERATS2ETM2^2)));
            aSEPERATS2ETM3 = (((xQuadSEPERATS2ETM3 * ySEPERATS2ETM3) - (xSEPERATS2ETM3 * xySEPERATS2ETM3)) / ((minPifVAL * xQuadSEPERATS2ETM3) - (xSEPERATS2ETM3^2)));
            aSEPERATS2ETM4 = (((xQuadSEPERATS2ETM4 * ySEPERATS2ETM4) - (xSEPERATS2ETM4 * xySEPERATS2ETM4)) / ((minPifVAL * xQuadSEPERATS2ETM4) - (xSEPERATS2ETM4^2)));
            aSEPERATS2ETM5 = (((xQuadSEPERATS2ETM5 * ySEPERATS2ETM5) - (xSEPERATS2ETM5 * xySEPERATS2ETM5)) / ((minPifVAL * xQuadSEPERATS2ETM5) - (xSEPERATS2ETM5^2)));
            aSEPERATS2ETM7 = (((xQuadSEPERATS2ETM7 * ySEPERATS2ETM7) - (xSEPERATS2ETM7 * xySEPERATS2ETM7)) / ((minPifVAL * xQuadSEPERATS2ETM7) - (xSEPERATS2ETM7^2)));
            
            bSEPERATS2ETM1 = qXYSEPERATS2ETM1 / xxAritQuadSEPERATS2ETM1;
            bSEPERATS2ETM2 = qXYSEPERATS2ETM2 / xxAritQuadSEPERATS2ETM2;
            bSEPERATS2ETM3 = qXYSEPERATS2ETM3 / xxAritQuadSEPERATS2ETM3;
            bSEPERATS2ETM4 = qXYSEPERATS2ETM4 / xxAritQuadSEPERATS2ETM4;
            bSEPERATS2ETM5 = qXYSEPERATS2ETM5 / xxAritQuadSEPERATS2ETM5;
            bSEPERATS2ETM7 = qXYSEPERATS2ETM7 / xxAritQuadSEPERATS2ETM7;
    
            rSEPERATS2ETM1 = (qXYSEPERATS2ETM1 / ((xxAritQuadSEPERATS2ETM1 * yyAritQuadSEPERATS2ETM1)^0.5));
            rSEPERATS2ETM2 = (qXYSEPERATS2ETM2 / ((xxAritQuadSEPERATS2ETM2 * yyAritQuadSEPERATS2ETM2)^0.5));
            rSEPERATS2ETM3 = (qXYSEPERATS2ETM3 / ((xxAritQuadSEPERATS2ETM3 * yyAritQuadSEPERATS2ETM3)^0.5));
            rSEPERATS2ETM4 = (qXYSEPERATS2ETM4 / ((xxAritQuadSEPERATS2ETM4 * yyAritQuadSEPERATS2ETM4)^0.5));
            rSEPERATS2ETM5 = (qXYSEPERATS2ETM5 / ((xxAritQuadSEPERATS2ETM5 * yyAritQuadSEPERATS2ETM5)^0.5));
            rSEPERATS2ETM7 = (qXYSEPERATS2ETM7 / ((xxAritQuadSEPERATS2ETM7 * yyAritQuadSEPERATS2ETM7)^0.5));
    
            rQuadSEPERATS2ETM1 = ((rSEPERATS2ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2ETM2 = ((rSEPERATS2ETM2^2) * 100);
            rQuadSEPERATS2ETM3 = ((rSEPERATS2ETM3^2) * 100);
            rQuadSEPERATS2ETM4 = ((rSEPERATS2ETM4^2) * 100);
            rQuadSEPERATS2ETM5 = ((rSEPERATS2ETM5^2) * 100);
            rQuadSEPERATS2ETM7 = ((rSEPERATS2ETM7^2) * 100);
        
            syxSEPERATS2ETM1 = (((yyAritQuadSEPERATS2ETM1 - ((qXYSEPERATS2ETM1^2) / xxAritQuadSEPERATS2ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM2 = (((yyAritQuadSEPERATS2ETM2 - ((qXYSEPERATS2ETM2^2) / xxAritQuadSEPERATS2ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM3 = (((yyAritQuadSEPERATS2ETM3 - ((qXYSEPERATS2ETM3^2) / xxAritQuadSEPERATS2ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM4 = (((yyAritQuadSEPERATS2ETM4 - ((qXYSEPERATS2ETM4^2) / xxAritQuadSEPERATS2ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM5 = (((yyAritQuadSEPERATS2ETM5 - ((qXYSEPERATS2ETM5^2) / xxAritQuadSEPERATS2ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM7 = (((yyAritQuadSEPERATS2ETM7 - ((qXYSEPERATS2ETM7^2) / xxAritQuadSEPERATS2ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2ETM1 = (((syxSEPERATS2ETM1^2) / xxAritQuadSEPERATS2ETM1)^0.5);
            bStandSEPERATS2ETM2 = (((syxSEPERATS2ETM2^2) / xxAritQuadSEPERATS2ETM2)^0.5);
            bStandSEPERATS2ETM3 = (((syxSEPERATS2ETM3^2) / xxAritQuadSEPERATS2ETM3)^0.5);
            bStandSEPERATS2ETM4 = (((syxSEPERATS2ETM4^2) / xxAritQuadSEPERATS2ETM4)^0.5);
            bStandSEPERATS2ETM5 = (((syxSEPERATS2ETM5^2) / xxAritQuadSEPERATS2ETM5)^0.5);
            bStandSEPERATS2ETM7 = (((syxSEPERATS2ETM7^2) / xxAritQuadSEPERATS2ETM7)^0.5);
    
            aStandSEPERATS2ETM1 = (bStandSEPERATS2ETM1 * ((xQuadSEPERATS2ETM1 / minPifVAL)^0.5));
            aStandSEPERATS2ETM2 = (bStandSEPERATS2ETM2 * ((xQuadSEPERATS2ETM2 / minPifVAL)^0.5));
            aStandSEPERATS2ETM3 = (bStandSEPERATS2ETM3 * ((xQuadSEPERATS2ETM3 / minPifVAL)^0.5));
            aStandSEPERATS2ETM4 = (bStandSEPERATS2ETM4 * ((xQuadSEPERATS2ETM4 / minPifVAL)^0.5));
            aStandSEPERATS2ETM5 = (bStandSEPERATS2ETM5 * ((xQuadSEPERATS2ETM5 / minPifVAL)^0.5));
            aStandSEPERATS2ETM7 = (bStandSEPERATS2ETM7 * ((xQuadSEPERATS2ETM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM1, bSEPERATS2ETM1, rSEPERATS2ETM1, rQuadSEPERATS2ETM1, aStandSEPERATS2ETM1, bStandSEPERATS2ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM2, bSEPERATS2ETM2, rSEPERATS2ETM2, rQuadSEPERATS2ETM2, aStandSEPERATS2ETM2, bStandSEPERATS2ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM3, bSEPERATS2ETM3, rSEPERATS2ETM3, rQuadSEPERATS2ETM3, aStandSEPERATS2ETM3, bStandSEPERATS2ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM4, bSEPERATS2ETM4, rSEPERATS2ETM4, rQuadSEPERATS2ETM4, aStandSEPERATS2ETM4, bStandSEPERATS2ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM5, bSEPERATS2ETM5, rSEPERATS2ETM5, rQuadSEPERATS2ETM5, aStandSEPERATS2ETM5, bStandSEPERATS2ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS2ETM7, bSEPERATS2ETM7, rSEPERATS2ETM7, rQuadSEPERATS2ETM7, aStandSEPERATS2ETM7, bStandSEPERATS2ETM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS2slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS2slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS2slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS2slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS2slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS2slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS2slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT2ETM1[i,j] = (aSEPERATS2ETM1 + (bSEPERATS2ETM1 * REFS2ETM1[i,j]));
                    OUT2ETM2[i,j] = (aSEPERATS2ETM2 + (bSEPERATS2ETM2 * REFS2ETM2[i,j]));
                    OUT2ETM3[i,j] = (aSEPERATS2ETM3 + (bSEPERATS2ETM3 * REFS2ETM3[i,j]));
                    OUT2ETM4[i,j] = (aSEPERATS2ETM4 + (bSEPERATS2ETM4 * REFS2ETM4[i,j]));
                    OUT2ETM5[i,j] = (aSEPERATS2ETM5 + (bSEPERATS2ETM5 * REFS2ETM5[i,j]));
                    OUT2ETM7[i,j] = (aSEPERATS2ETM7 + (bSEPERATS2ETM7 * REFS2ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2ETM1);
        	CreatePyramid(OUT2ETM2);
        	CreatePyramid(OUT2ETM3);
        	CreatePyramid(OUT2ETM4);
        	CreatePyramid(OUT2ETM5);
        	CreatePyramid(OUT2ETM7);
        
        	CreateHistogram(OUT2ETM1);
        	CreateHistogram(OUT2ETM2);
        	CreateHistogram(OUT2ETM3);
        	CreateHistogram(OUT2ETM4);
        	CreateHistogram(OUT2ETM5);
        	CreateHistogram(OUT2ETM7);
            CloseRaster(REFS2ETM1);
            CloseRaster(REFS2ETM2);
            CloseRaster(REFS2ETM3);
            CloseRaster(REFS2ETM4);
            CloseRaster(REFS2ETM5);
            CloseRaster(REFS2ETM7);
    
            CloseRaster(OUT2ETM1);
            CloseRaster(OUT2ETM2);
            CloseRaster(OUT2ETM3);
            CloseRaster(OUT2ETM4);
            CloseRaster(OUT2ETM5);
            CloseRaster(OUT2ETM7);
            
        	printf("Scene 2 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors2 == 6 )
            {
            numeric xAritSEPERATS2TM1, xAritSEPERATS2TM2, xAritSEPERATS2TM3, xAritSEPERATS2TM4, xAritSEPERATS2TM5, xAritSEPERATS2TM7;
            numeric yAritSEPERATS2TM1, yAritSEPERATS2TM2, yAritSEPERATS2TM3, yAritSEPERATS2TM4, yAritSEPERATS2TM5, yAritSEPERATS2TM7;
    
            numeric aSEPERATS2TM1, aSEPERATS2TM2, aSEPERATS2TM3, aSEPERATS2TM4, aSEPERATS2TM5, aSEPERATS2TM7;
            numeric bSEPERATS2TM1, bSEPERATS2TM2, bSEPERATS2TM3, bSEPERATS2TM4, bSEPERATS2TM5, bSEPERATS2TM7;
            numeric rSEPERATS2TM1, rSEPERATS2TM2, rSEPERATS2TM3, rSEPERATS2TM4, rSEPERATS2TM5, rSEPERATS2TM7;
            numeric rQuadSEPERATS2TM1, rQuadSEPERATS2TM2, rQuadSEPERATS2TM3, rQuadSEPERATS2TM4, rQuadSEPERATS2TM5, rQuadSEPERATS2TM7;
            numeric syxSEPERATS2TM1, syxSEPERATS2TM2, syxSEPERATS2TM3, syxSEPERATS2TM4, syxSEPERATS2TM5, syxSEPERATS2TM7;
            numeric bStandSEPERATS2TM1, bStandSEPERATS2TM2, bStandSEPERATS2TM3, bStandSEPERATS2TM4, bStandSEPERATS2TM5, bStandSEPERATS2TM7;
            numeric aStandSEPERATS2TM1, aStandSEPERATS2TM2, aStandSEPERATS2TM3, aStandSEPERATS2TM4, aStandSEPERATS2TM5, aStandSEPERATS2TM7;
    
            numeric xSEPERATS2TM1 = 0;
            numeric xSEPERATS2TM2 = 0;
            numeric xSEPERATS2TM3 = 0;
            numeric xSEPERATS2TM4 = 0;
            numeric xSEPERATS2TM5 = 0;
            numeric xSEPERATS2TM7 = 0;
    
            numeric xQuadSEPERATS2TM1 = 0;
            numeric xQuadSEPERATS2TM2 = 0;
            numeric xQuadSEPERATS2TM3 = 0;
            numeric xQuadSEPERATS2TM4 = 0;
            numeric xQuadSEPERATS2TM5 = 0;
            numeric xQuadSEPERATS2TM7 = 0;
    
            numeric ySEPERATS2TM1 = 0;
            numeric ySEPERATS2TM2 = 0;
            numeric ySEPERATS2TM3 = 0;
            numeric ySEPERATS2TM4 = 0;
            numeric ySEPERATS2TM5 = 0;
            numeric ySEPERATS2TM7 = 0;
    
            numeric yQuadSEPERATS2TM1 = 0;
            numeric yQuadSEPERATS2TM2 = 0;
            numeric yQuadSEPERATS2TM3 = 0;
            numeric yQuadSEPERATS2TM4 = 0;
            numeric yQuadSEPERATS2TM5 = 0;
            numeric yQuadSEPERATS2TM7 = 0;
    
            numeric xySEPERATS2TM1 = 0;
            numeric xySEPERATS2TM2 = 0;
            numeric xySEPERATS2TM3 = 0;
            numeric xySEPERATS2TM4 = 0;
            numeric xySEPERATS2TM5 = 0;
            numeric xySEPERATS2TM7 = 0;
    
            numeric xxAritQuadSEPERATS2TM1 = 0;
            numeric xxAritQuadSEPERATS2TM2 = 0;
            numeric xxAritQuadSEPERATS2TM3 = 0;
            numeric xxAritQuadSEPERATS2TM4 = 0;
            numeric xxAritQuadSEPERATS2TM5 = 0;
            numeric xxAritQuadSEPERATS2TM7 = 0;
    
            numeric yyAritQuadSEPERATS2TM1 = 0;
            numeric yyAritQuadSEPERATS2TM2 = 0;
            numeric yyAritQuadSEPERATS2TM3 = 0;
            numeric yyAritQuadSEPERATS2TM4 = 0;
            numeric yyAritQuadSEPERATS2TM5 = 0;
            numeric yyAritQuadSEPERATS2TM7 = 0;
    
            numeric qXYSEPERATS2TM1 = 0;
            numeric qXYSEPERATS2TM2 = 0;
            numeric qXYSEPERATS2TM3 = 0;
            numeric qXYSEPERATS2TM4 = 0;
            numeric qXYSEPERATS2TM5 = 0;
            numeric qXYSEPERATS2TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS2TM1 = xSEPERATS2TM1 + pifSEPERATS4S2ETM1arrayRAND[m];
                xSEPERATS2TM2 = xSEPERATS2TM2 + pifSEPERATS4S2ETM2arrayRAND[m];
                xSEPERATS2TM3 = xSEPERATS2TM3 + pifSEPERATS4S2ETM3arrayRAND[m];
                xSEPERATS2TM4 = xSEPERATS2TM4 + pifSEPERATS4S2ETM4arrayRAND[m];
                xSEPERATS2TM5 = xSEPERATS2TM5 + pifSEPERATS4S2ETM5arrayRAND[m];
                xSEPERATS2TM7 = xSEPERATS2TM7 + pifSEPERATS4S2ETM7arrayRAND[m];
    
                xQuadSEPERATS2TM1 = (xQuadSEPERATS2TM1 + (pifSEPERATS4S2ETM1arrayRAND[m]^2));
                xQuadSEPERATS2TM2 = (xQuadSEPERATS2TM2 + (pifSEPERATS4S2ETM2arrayRAND[m]^2));
                xQuadSEPERATS2TM3 = (xQuadSEPERATS2TM3 + (pifSEPERATS4S2ETM3arrayRAND[m]^2));
                xQuadSEPERATS2TM4 = (xQuadSEPERATS2TM4 + (pifSEPERATS4S2ETM4arrayRAND[m]^2));
                xQuadSEPERATS2TM5 = (xQuadSEPERATS2TM5 + (pifSEPERATS4S2ETM5arrayRAND[m]^2));
                xQuadSEPERATS2TM7 = (xQuadSEPERATS2TM7 + (pifSEPERATS4S2ETM7arrayRAND[m]^2));
    
                ySEPERATS2TM1 = ySEPERATS2TM1 + pifSEPERATS2slaveTM1arrayRAND[m];
                ySEPERATS2TM2 = ySEPERATS2TM2 + pifSEPERATS2slaveTM2arrayRAND[m];
                ySEPERATS2TM3 = ySEPERATS2TM3 + pifSEPERATS2slaveTM3arrayRAND[m];
                ySEPERATS2TM4 = ySEPERATS2TM4 + pifSEPERATS2slaveTM4arrayRAND[m];
                ySEPERATS2TM5 = ySEPERATS2TM5 + pifSEPERATS2slaveTM5arrayRAND[m];
                ySEPERATS2TM7 = ySEPERATS2TM7 + pifSEPERATS2slaveTM7arrayRAND[m];
                
                yQuadSEPERATS2TM1 = (yQuadSEPERATS2TM1 + (pifSEPERATS2slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS2TM2 = (yQuadSEPERATS2TM2 + (pifSEPERATS2slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS2TM3 = (yQuadSEPERATS2TM3 + (pifSEPERATS2slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS2TM4 = (yQuadSEPERATS2TM4 + (pifSEPERATS2slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS2TM5 = (yQuadSEPERATS2TM5 + (pifSEPERATS2slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS2TM7 = (yQuadSEPERATS2TM7 + (pifSEPERATS2slaveTM7arrayRAND[m]^2));
    
                xySEPERATS2TM1 = (xySEPERATS2TM1 + (pifSEPERATS4S2ETM1arrayRAND[m] * pifSEPERATS2slaveTM1arrayRAND[m]));
                xySEPERATS2TM2 = (xySEPERATS2TM2 + (pifSEPERATS4S2ETM2arrayRAND[m] * pifSEPERATS2slaveTM2arrayRAND[m]));
                xySEPERATS2TM3 = (xySEPERATS2TM3 + (pifSEPERATS4S2ETM3arrayRAND[m] * pifSEPERATS2slaveTM3arrayRAND[m]));
                xySEPERATS2TM4 = (xySEPERATS2TM4 + (pifSEPERATS4S2ETM4arrayRAND[m] * pifSEPERATS2slaveTM4arrayRAND[m]));
                xySEPERATS2TM5 = (xySEPERATS2TM5 + (pifSEPERATS4S2ETM5arrayRAND[m] * pifSEPERATS2slaveTM5arrayRAND[m]));
                xySEPERATS2TM7 = (xySEPERATS2TM7 + (pifSEPERATS4S2ETM7arrayRAND[m] * pifSEPERATS2slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS2TM1 = xSEPERATS2TM1 / minPifVAL;
            xAritSEPERATS2TM2 = xSEPERATS2TM2 / minPifVAL;
            xAritSEPERATS2TM3 = xSEPERATS2TM3 / minPifVAL;
            xAritSEPERATS2TM4 = xSEPERATS2TM4 / minPifVAL;
            xAritSEPERATS2TM5 = xSEPERATS2TM5 / minPifVAL;
            xAritSEPERATS2TM7 = xSEPERATS2TM7 / minPifVAL;
    
            yAritSEPERATS2TM1 = ySEPERATS2TM1 / minPifVAL;
            yAritSEPERATS2TM2 = ySEPERATS2TM2 / minPifVAL;
            yAritSEPERATS2TM3 = ySEPERATS2TM3 / minPifVAL;
            yAritSEPERATS2TM4 = ySEPERATS2TM4 / minPifVAL;
            yAritSEPERATS2TM5 = ySEPERATS2TM5 / minPifVAL;
            yAritSEPERATS2TM7 = ySEPERATS2TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2TM1 = (xxAritQuadSEPERATS2TM1 + ((pifSEPERATS4S2ETM1arrayRAND[n] - xAritSEPERATS2TM1)^2));
                xxAritQuadSEPERATS2TM2 = (xxAritQuadSEPERATS2TM2 + ((pifSEPERATS4S2ETM2arrayRAND[n] - xAritSEPERATS2TM2)^2));
                xxAritQuadSEPERATS2TM3 = (xxAritQuadSEPERATS2TM3 + ((pifSEPERATS4S2ETM3arrayRAND[n] - xAritSEPERATS2TM3)^2));
                xxAritQuadSEPERATS2TM4 = (xxAritQuadSEPERATS2TM4 + ((pifSEPERATS4S2ETM4arrayRAND[n] - xAritSEPERATS2TM4)^2));
                xxAritQuadSEPERATS2TM5 = (xxAritQuadSEPERATS2TM5 + ((pifSEPERATS4S2ETM5arrayRAND[n] - xAritSEPERATS2TM5)^2));
                xxAritQuadSEPERATS2TM7 = (xxAritQuadSEPERATS2TM7 + ((pifSEPERATS4S2ETM7arrayRAND[n] - xAritSEPERATS2TM7)^2));
    
                yyAritQuadSEPERATS2TM1 = (yyAritQuadSEPERATS2TM1 + ((pifSEPERATS2slaveTM1arrayRAND[n] - yAritSEPERATS2TM1)^2));
                yyAritQuadSEPERATS2TM2 = (yyAritQuadSEPERATS2TM2 + ((pifSEPERATS2slaveTM2arrayRAND[n] - yAritSEPERATS2TM2)^2));
                yyAritQuadSEPERATS2TM3 = (yyAritQuadSEPERATS2TM3 + ((pifSEPERATS2slaveTM3arrayRAND[n] - yAritSEPERATS2TM3)^2));
                yyAritQuadSEPERATS2TM4 = (yyAritQuadSEPERATS2TM4 + ((pifSEPERATS2slaveTM4arrayRAND[n] - yAritSEPERATS2TM4)^2));
                yyAritQuadSEPERATS2TM5 = (yyAritQuadSEPERATS2TM5 + ((pifSEPERATS2slaveTM5arrayRAND[n] - yAritSEPERATS2TM5)^2));
                yyAritQuadSEPERATS2TM7 = (yyAritQuadSEPERATS2TM7 + ((pifSEPERATS2slaveTM7arrayRAND[n] - yAritSEPERATS2TM7)^2));
    
                qXYSEPERATS2TM1 = (qXYSEPERATS2TM1 + ((pifSEPERATS4S2ETM1arrayRAND[n] - xAritSEPERATS2TM1) * (pifSEPERATS2slaveTM1arrayRAND[n] - yAritSEPERATS2TM1)));
                qXYSEPERATS2TM2 = (qXYSEPERATS2TM2 + ((pifSEPERATS4S2ETM2arrayRAND[n] - xAritSEPERATS2TM2) * (pifSEPERATS2slaveTM2arrayRAND[n] - yAritSEPERATS2TM2)));
                qXYSEPERATS2TM3 = (qXYSEPERATS2TM3 + ((pifSEPERATS4S2ETM3arrayRAND[n] - xAritSEPERATS2TM3) * (pifSEPERATS2slaveTM3arrayRAND[n] - yAritSEPERATS2TM3)));
                qXYSEPERATS2TM4 = (qXYSEPERATS2TM4 + ((pifSEPERATS4S2ETM4arrayRAND[n] - xAritSEPERATS2TM4) * (pifSEPERATS2slaveTM4arrayRAND[n] - yAritSEPERATS2TM4)));
                qXYSEPERATS2TM5 = (qXYSEPERATS2TM5 + ((pifSEPERATS4S2ETM5arrayRAND[n] - xAritSEPERATS2TM5) * (pifSEPERATS2slaveTM5arrayRAND[n] - yAritSEPERATS2TM5)));
                qXYSEPERATS2TM7 = (qXYSEPERATS2TM7 + ((pifSEPERATS4S2ETM7arrayRAND[n] - xAritSEPERATS2TM7) * (pifSEPERATS2slaveTM7arrayRAND[n] - yAritSEPERATS2TM7)));
            }
        
            aSEPERATS2TM1 = (((xQuadSEPERATS2TM1 * ySEPERATS2TM1) - (xSEPERATS2TM1 * xySEPERATS2TM1)) / ((minPifVAL * xQuadSEPERATS2TM1) - (xSEPERATS2TM1^2)));
            aSEPERATS2TM2 = (((xQuadSEPERATS2TM2 * ySEPERATS2TM2) - (xSEPERATS2TM2 * xySEPERATS2TM2)) / ((minPifVAL * xQuadSEPERATS2TM2) - (xSEPERATS2TM2^2)));
            aSEPERATS2TM3 = (((xQuadSEPERATS2TM3 * ySEPERATS2TM3) - (xSEPERATS2TM3 * xySEPERATS2TM3)) / ((minPifVAL * xQuadSEPERATS2TM3) - (xSEPERATS2TM3^2)));
            aSEPERATS2TM4 = (((xQuadSEPERATS2TM4 * ySEPERATS2TM4) - (xSEPERATS2TM4 * xySEPERATS2TM4)) / ((minPifVAL * xQuadSEPERATS2TM4) - (xSEPERATS2TM4^2)));
            aSEPERATS2TM5 = (((xQuadSEPERATS2TM5 * ySEPERATS2TM5) - (xSEPERATS2TM5 * xySEPERATS2TM5)) / ((minPifVAL * xQuadSEPERATS2TM5) - (xSEPERATS2TM5^2)));
            aSEPERATS2TM7 = (((xQuadSEPERATS2TM7 * ySEPERATS2TM7) - (xSEPERATS2TM7 * xySEPERATS2TM7)) / ((minPifVAL * xQuadSEPERATS2TM7) - (xSEPERATS2TM7^2)));
            
            bSEPERATS2TM1 = qXYSEPERATS2TM1 / xxAritQuadSEPERATS2TM1;
            bSEPERATS2TM2 = qXYSEPERATS2TM2 / xxAritQuadSEPERATS2TM2;
            bSEPERATS2TM3 = qXYSEPERATS2TM3 / xxAritQuadSEPERATS2TM3;
            bSEPERATS2TM4 = qXYSEPERATS2TM4 / xxAritQuadSEPERATS2TM4;
            bSEPERATS2TM5 = qXYSEPERATS2TM5 / xxAritQuadSEPERATS2TM5;
            bSEPERATS2TM7 = qXYSEPERATS2TM7 / xxAritQuadSEPERATS2TM7;
    
            rSEPERATS2TM1 = (qXYSEPERATS2TM1 / ((xxAritQuadSEPERATS2TM1 * yyAritQuadSEPERATS2TM1)^0.5));
            rSEPERATS2TM2 = (qXYSEPERATS2TM2 / ((xxAritQuadSEPERATS2TM2 * yyAritQuadSEPERATS2TM2)^0.5));
            rSEPERATS2TM3 = (qXYSEPERATS2TM3 / ((xxAritQuadSEPERATS2TM3 * yyAritQuadSEPERATS2TM3)^0.5));
            rSEPERATS2TM4 = (qXYSEPERATS2TM4 / ((xxAritQuadSEPERATS2TM4 * yyAritQuadSEPERATS2TM4)^0.5));
            rSEPERATS2TM5 = (qXYSEPERATS2TM5 / ((xxAritQuadSEPERATS2TM5 * yyAritQuadSEPERATS2TM5)^0.5));
            rSEPERATS2TM7 = (qXYSEPERATS2TM7 / ((xxAritQuadSEPERATS2TM7 * yyAritQuadSEPERATS2TM7)^0.5));
    
            rQuadSEPERATS2TM1 = ((rSEPERATS2TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2TM2 = ((rSEPERATS2TM2^2) * 100);
            rQuadSEPERATS2TM3 = ((rSEPERATS2TM3^2) * 100);
            rQuadSEPERATS2TM4 = ((rSEPERATS2TM4^2) * 100);
            rQuadSEPERATS2TM5 = ((rSEPERATS2TM5^2) * 100);
            rQuadSEPERATS2TM7 = ((rSEPERATS2TM7^2) * 100);
        
            syxSEPERATS2TM1 = (((yyAritQuadSEPERATS2TM1 - ((qXYSEPERATS2TM1^2) / xxAritQuadSEPERATS2TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM2 = (((yyAritQuadSEPERATS2TM2 - ((qXYSEPERATS2TM2^2) / xxAritQuadSEPERATS2TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM3 = (((yyAritQuadSEPERATS2TM3 - ((qXYSEPERATS2TM3^2) / xxAritQuadSEPERATS2TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM4 = (((yyAritQuadSEPERATS2TM4 - ((qXYSEPERATS2TM4^2) / xxAritQuadSEPERATS2TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM5 = (((yyAritQuadSEPERATS2TM5 - ((qXYSEPERATS2TM5^2) / xxAritQuadSEPERATS2TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM7 = (((yyAritQuadSEPERATS2TM7 - ((qXYSEPERATS2TM7^2) / xxAritQuadSEPERATS2TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2TM1 = (((syxSEPERATS2TM1^2) / xxAritQuadSEPERATS2TM1)^0.5);
            bStandSEPERATS2TM2 = (((syxSEPERATS2TM2^2) / xxAritQuadSEPERATS2TM2)^0.5);
            bStandSEPERATS2TM3 = (((syxSEPERATS2TM3^2) / xxAritQuadSEPERATS2TM3)^0.5);
            bStandSEPERATS2TM4 = (((syxSEPERATS2TM4^2) / xxAritQuadSEPERATS2TM4)^0.5);
            bStandSEPERATS2TM5 = (((syxSEPERATS2TM5^2) / xxAritQuadSEPERATS2TM5)^0.5);
            bStandSEPERATS2TM7 = (((syxSEPERATS2TM7^2) / xxAritQuadSEPERATS2TM7)^0.5);
    
            aStandSEPERATS2TM1 = (bStandSEPERATS2TM1 * ((xQuadSEPERATS2TM1 / minPifVAL)^0.5));
            aStandSEPERATS2TM2 = (bStandSEPERATS2TM2 * ((xQuadSEPERATS2TM2 / minPifVAL)^0.5));
            aStandSEPERATS2TM3 = (bStandSEPERATS2TM3 * ((xQuadSEPERATS2TM3 / minPifVAL)^0.5));
            aStandSEPERATS2TM4 = (bStandSEPERATS2TM4 * ((xQuadSEPERATS2TM4 / minPifVAL)^0.5));
            aStandSEPERATS2TM5 = (bStandSEPERATS2TM5 * ((xQuadSEPERATS2TM5 / minPifVAL)^0.5));
            aStandSEPERATS2TM7 = (bStandSEPERATS2TM7 * ((xQuadSEPERATS2TM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM1, bSEPERATS2TM1, rSEPERATS2TM1, rQuadSEPERATS2TM1, aStandSEPERATS2TM1, bStandSEPERATS2TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM2, bSEPERATS2TM2, rSEPERATS2TM2, rQuadSEPERATS2TM2, aStandSEPERATS2TM2, bStandSEPERATS2TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM3, bSEPERATS2TM3, rSEPERATS2TM3, rQuadSEPERATS2TM3, aStandSEPERATS2TM3, bStandSEPERATS2TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM4, bSEPERATS2TM4, rSEPERATS2TM4, rQuadSEPERATS2TM4, aStandSEPERATS2TM4, bStandSEPERATS2TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM5, bSEPERATS2TM5, rSEPERATS2TM5, rQuadSEPERATS2TM5, aStandSEPERATS2TM5, bStandSEPERATS2TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS2TM7, bSEPERATS2TM7, rSEPERATS2TM7, rQuadSEPERATS2TM7, aStandSEPERATS2TM7, bStandSEPERATS2TM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS2slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS2slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS2slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS2slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS2slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS2slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS2slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT2TM1[i,j] = (aSEPERATS2TM1 + (bSEPERATS2TM1 * REFS2TM1[i,j]));
                    OUT2TM2[i,j] = (aSEPERATS2TM2 + (bSEPERATS2TM2 * REFS2TM2[i,j]));
                    OUT2TM3[i,j] = (aSEPERATS2TM3 + (bSEPERATS2TM3 * REFS2TM3[i,j]));
                    OUT2TM4[i,j] = (aSEPERATS2TM4 + (bSEPERATS2TM4 * REFS2TM4[i,j]));
                    OUT2TM5[i,j] = (aSEPERATS2TM5 + (bSEPERATS2TM5 * REFS2TM5[i,j]));
                    OUT2TM7[i,j] = (aSEPERATS2TM7 + (bSEPERATS2TM7 * REFS2TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2TM1);
        	CreatePyramid(OUT2TM2);
        	CreatePyramid(OUT2TM3);
        	CreatePyramid(OUT2TM4);
        	CreatePyramid(OUT2TM5);
        	CreatePyramid(OUT2TM7);
        
        	CreateHistogram(OUT2TM1);
        	CreateHistogram(OUT2TM2);
        	CreateHistogram(OUT2TM3);
        	CreateHistogram(OUT2TM4);
        	CreateHistogram(OUT2TM5);
        	CreateHistogram(OUT2TM7);
            CloseRaster(REFS2TM1);
            CloseRaster(REFS2TM2);
            CloseRaster(REFS2TM3);
            CloseRaster(REFS2TM4);
            CloseRaster(REFS2TM5);
            CloseRaster(REFS2TM7);
    
            CloseRaster(OUT2TM1);
            CloseRaster(OUT2TM2);
            CloseRaster(OUT2TM3);
            CloseRaster(OUT2TM4);
            CloseRaster(OUT2TM5);
            CloseRaster(OUT2TM7);
        
        	printf("Scene 2 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS2MSS1, xAritSEPERATS2MSS2, xAritSEPERATS2MSS4;
            numeric yAritSEPERATS2MSS1, yAritSEPERATS2MSS2, yAritSEPERATS2MSS4;
    
            numeric aSEPERATS2MSS1, aSEPERATS2MSS2, aSEPERATS2MSS4;
            numeric bSEPERATS2MSS1, bSEPERATS2MSS2, bSEPERATS2MSS4;
            numeric rSEPERATS2MSS1, rSEPERATS2MSS2, rSEPERATS2MSS4;
            numeric rQuadSEPERATS2MSS1, rQuadSEPERATS2MSS2, rQuadSEPERATS2MSS4;
            numeric syxSEPERATS2MSS1, syxSEPERATS2MSS2, syxSEPERATS2MSS4;
            numeric bStandSEPERATS2MSS1, bStandSEPERATS2MSS2, bStandSEPERATS2MSS4;
            numeric aStandSEPERATS2MSS1, aStandSEPERATS2MSS2, aStandSEPERATS2MSS4;
    
            numeric xSEPERATS2MSS1 = 0;
            numeric xSEPERATS2MSS2 = 0;
            numeric xSEPERATS2MSS4 = 0;
    
            numeric xQuadSEPERATS2MSS1 = 0;
            numeric xQuadSEPERATS2MSS2 = 0;
            numeric xQuadSEPERATS2MSS4 = 0;
    
            numeric ySEPERATS2MSS1 = 0;
            numeric ySEPERATS2MSS2 = 0;
            numeric ySEPERATS2MSS4 = 0;
    
            numeric yQuadSEPERATS2MSS1 = 0;
            numeric yQuadSEPERATS2MSS2 = 0;
            numeric yQuadSEPERATS2MSS4 = 0;
    
            numeric xySEPERATS2MSS1 = 0;
            numeric xySEPERATS2MSS2 = 0;
            numeric xySEPERATS2MSS4 = 0;
    
            numeric xxAritQuadSEPERATS2MSS1 = 0;
            numeric xxAritQuadSEPERATS2MSS2 = 0;
            numeric xxAritQuadSEPERATS2MSS4 = 0;
    
            numeric yyAritQuadSEPERATS2MSS1 = 0;
            numeric yyAritQuadSEPERATS2MSS2 = 0;
            numeric yyAritQuadSEPERATS2MSS4 = 0;
    
            numeric qXYSEPERATS2MSS1 = 0;
            numeric qXYSEPERATS2MSS2 = 0;
            numeric qXYSEPERATS2MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS2MSS1 = xSEPERATS2MSS1 + pifSEPERATS4S2ETM2arrayRAND[m];
                xSEPERATS2MSS2 = xSEPERATS2MSS2 + pifSEPERATS4S2ETM3arrayRAND[m];
                xSEPERATS2MSS4 = xSEPERATS2MSS4 + pifSEPERATS4S2ETM4arrayRAND[m];
    
                xQuadSEPERATS2MSS1 = (xQuadSEPERATS2MSS1 + (pifSEPERATS4S2ETM2arrayRAND[m]^2));
                xQuadSEPERATS2MSS2 = (xQuadSEPERATS2MSS2 + (pifSEPERATS4S2ETM3arrayRAND[m]^2));
                xQuadSEPERATS2MSS4 = (xQuadSEPERATS2MSS4 + (pifSEPERATS4S2ETM4arrayRAND[m]^2));
    
                ySEPERATS2MSS1 = ySEPERATS2MSS1 + pifSEPERATS2slaveMSS1arrayRAND[m];
                ySEPERATS2MSS2 = ySEPERATS2MSS2 + pifSEPERATS2slaveMSS2arrayRAND[m];
                ySEPERATS2MSS4 = ySEPERATS2MSS4 + pifSEPERATS2slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS2MSS1 = (yQuadSEPERATS2MSS1 + (pifSEPERATS2slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS2MSS2 = (yQuadSEPERATS2MSS2 + (pifSEPERATS2slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS2MSS4 = (yQuadSEPERATS2MSS4 + (pifSEPERATS2slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS2MSS1 = (xySEPERATS2MSS1 + (pifSEPERATS4S2ETM2arrayRAND[m] * pifSEPERATS2slaveMSS1arrayRAND[m]));
                xySEPERATS2MSS2 = (xySEPERATS2MSS2 + (pifSEPERATS4S2ETM3arrayRAND[m] * pifSEPERATS2slaveMSS2arrayRAND[m]));
                xySEPERATS2MSS4 = (xySEPERATS2MSS4 + (pifSEPERATS4S2ETM4arrayRAND[m] * pifSEPERATS2slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS2MSS1 = xSEPERATS2MSS1 / minPifVAL;
            xAritSEPERATS2MSS2 = xSEPERATS2MSS2 / minPifVAL;
            xAritSEPERATS2MSS4 = xSEPERATS2MSS4 / minPifVAL;
    
            yAritSEPERATS2MSS1 = ySEPERATS2MSS1 / minPifVAL;
            yAritSEPERATS2MSS2 = ySEPERATS2MSS2 / minPifVAL;
            yAritSEPERATS2MSS4 = ySEPERATS2MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2MSS1 = (xxAritQuadSEPERATS2MSS1 + ((pifSEPERATS4S2ETM2arrayRAND[n] - xAritSEPERATS2MSS1)^2));
                xxAritQuadSEPERATS2MSS2 = (xxAritQuadSEPERATS2MSS2 + ((pifSEPERATS4S2ETM3arrayRAND[n] - xAritSEPERATS2MSS2)^2));
                xxAritQuadSEPERATS2MSS4 = (xxAritQuadSEPERATS2MSS4 + ((pifSEPERATS4S2ETM4arrayRAND[n] - xAritSEPERATS2MSS4)^2));
    
                yyAritQuadSEPERATS2MSS1 = (yyAritQuadSEPERATS2MSS1 + ((pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)^2));
                yyAritQuadSEPERATS2MSS2 = (yyAritQuadSEPERATS2MSS2 + ((pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)^2));
                yyAritQuadSEPERATS2MSS4 = (yyAritQuadSEPERATS2MSS4 + ((pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)^2));
    
                qXYSEPERATS2MSS1 = (qXYSEPERATS2MSS1 + ((pifSEPERATS4S2ETM2arrayRAND[n] - xAritSEPERATS2MSS1) * (pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)));
                qXYSEPERATS2MSS2 = (qXYSEPERATS2MSS2 + ((pifSEPERATS4S2ETM3arrayRAND[n] - xAritSEPERATS2MSS2) * (pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)));
                qXYSEPERATS2MSS4 = (qXYSEPERATS2MSS4 + ((pifSEPERATS4S2ETM4arrayRAND[n] - xAritSEPERATS2MSS4) * (pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)));
            }
        
            aSEPERATS2MSS1 = (((xQuadSEPERATS2MSS1 * ySEPERATS2MSS1) - (xSEPERATS2MSS1 * xySEPERATS2MSS1)) / ((minPifVAL * xQuadSEPERATS2MSS1) - (xSEPERATS2MSS1^2)));
            aSEPERATS2MSS2 = (((xQuadSEPERATS2MSS2 * ySEPERATS2MSS2) - (xSEPERATS2MSS2 * xySEPERATS2MSS2)) / ((minPifVAL * xQuadSEPERATS2MSS2) - (xSEPERATS2MSS2^2)));
            aSEPERATS2MSS4 = (((xQuadSEPERATS2MSS4 * ySEPERATS2MSS4) - (xSEPERATS2MSS4 * xySEPERATS2MSS4)) / ((minPifVAL * xQuadSEPERATS2MSS4) - (xSEPERATS2MSS4^2)));
            
            bSEPERATS2MSS1 = qXYSEPERATS2MSS1 / xxAritQuadSEPERATS2MSS1;
            bSEPERATS2MSS2 = qXYSEPERATS2MSS2 / xxAritQuadSEPERATS2MSS2;
            bSEPERATS2MSS4 = qXYSEPERATS2MSS4 / xxAritQuadSEPERATS2MSS4;
    
            rSEPERATS2MSS1 = (qXYSEPERATS2MSS1 / ((xxAritQuadSEPERATS2MSS1 * yyAritQuadSEPERATS2MSS1)^0.5));
            rSEPERATS2MSS2 = (qXYSEPERATS2MSS2 / ((xxAritQuadSEPERATS2MSS2 * yyAritQuadSEPERATS2MSS2)^0.5));
            rSEPERATS2MSS4 = (qXYSEPERATS2MSS4 / ((xxAritQuadSEPERATS2MSS4 * yyAritQuadSEPERATS2MSS4)^0.5));
    
            rQuadSEPERATS2MSS1 = ((rSEPERATS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2MSS2 = ((rSEPERATS2MSS2^2) * 100);
            rQuadSEPERATS2MSS4 = ((rSEPERATS2MSS4^2) * 100);
        
            syxSEPERATS2MSS1 = (((yyAritQuadSEPERATS2MSS1 - ((qXYSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS2 = (((yyAritQuadSEPERATS2MSS2 - ((qXYSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS4 = (((yyAritQuadSEPERATS2MSS4 - ((qXYSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2MSS1 = (((syxSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)^0.5);
            bStandSEPERATS2MSS2 = (((syxSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)^0.5);
            bStandSEPERATS2MSS4 = (((syxSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)^0.5);
    
            aStandSEPERATS2MSS1 = (bStandSEPERATS2MSS1 * ((xQuadSEPERATS2MSS1 / minPifVAL)^0.5));
            aStandSEPERATS2MSS2 = (bStandSEPERATS2MSS2 * ((xQuadSEPERATS2MSS2 / minPifVAL)^0.5));
            aStandSEPERATS2MSS4 = (bStandSEPERATS2MSS4 * ((xQuadSEPERATS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS1, bSEPERATS2MSS1, rSEPERATS2MSS1, rQuadSEPERATS2MSS1, aStandSEPERATS2MSS1, bStandSEPERATS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS2, bSEPERATS2MSS2, rSEPERATS2MSS2, rQuadSEPERATS2MSS2, aStandSEPERATS2MSS2, bStandSEPERATS2MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS4, bSEPERATS2MSS4, rSEPERATS2MSS4, rQuadSEPERATS2MSS4, aStandSEPERATS2MSS4, bStandSEPERATS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS2slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS2slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS2slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aSEPERATS2MSS1 + (bSEPERATS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aSEPERATS2MSS2 + (bSEPERATS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = REFS2MSS3[i,j];
                    OUT2MSS4[i,j] = (aSEPERATS2MSS4 + (bSEPERATS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT2MSS1);
            CreatePyramid(OUT2MSS2);
            CreatePyramid(OUT2MSS3);
            CreatePyramid(OUT2MSS4);
        
            CreateHistogram(OUT2MSS1);
            CreateHistogram(OUT2MSS2);
            CreateHistogram(OUT2MSS3);
            CreateHistogram(OUT2MSS4);
            
            CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors3 == 7 )
            {
            numeric xAritSEPERATS3ETM1, xAritSEPERATS3ETM2, xAritSEPERATS3ETM3, xAritSEPERATS3ETM4, xAritSEPERATS3ETM5, xAritSEPERATS3ETM7;
            numeric yAritSEPERATS3ETM1, yAritSEPERATS3ETM2, yAritSEPERATS3ETM3, yAritSEPERATS3ETM4, yAritSEPERATS3ETM5, yAritSEPERATS3ETM7;
    
            numeric aSEPERATS3ETM1, aSEPERATS3ETM2, aSEPERATS3ETM3, aSEPERATS3ETM4, aSEPERATS3ETM5, aSEPERATS3ETM7;
            numeric bSEPERATS3ETM1, bSEPERATS3ETM2, bSEPERATS3ETM3, bSEPERATS3ETM4, bSEPERATS3ETM5, bSEPERATS3ETM7;
            numeric rSEPERATS3ETM1, rSEPERATS3ETM2, rSEPERATS3ETM3, rSEPERATS3ETM4, rSEPERATS3ETM5, rSEPERATS3ETM7;
            numeric rQuadSEPERATS3ETM1, rQuadSEPERATS3ETM2, rQuadSEPERATS3ETM3, rQuadSEPERATS3ETM4, rQuadSEPERATS3ETM5, rQuadSEPERATS3ETM7;
            numeric syxSEPERATS3ETM1, syxSEPERATS3ETM2, syxSEPERATS3ETM3, syxSEPERATS3ETM4, syxSEPERATS3ETM5, syxSEPERATS3ETM7;
            numeric bStandSEPERATS3ETM1, bStandSEPERATS3ETM2, bStandSEPERATS3ETM3, bStandSEPERATS3ETM4, bStandSEPERATS3ETM5, bStandSEPERATS3ETM7;
            numeric aStandSEPERATS3ETM1, aStandSEPERATS3ETM2, aStandSEPERATS3ETM3, aStandSEPERATS3ETM4, aStandSEPERATS3ETM5, aStandSEPERATS3ETM7;
    
            numeric xSEPERATS3ETM1 = 0;
            numeric xSEPERATS3ETM2 = 0;
            numeric xSEPERATS3ETM3 = 0;
            numeric xSEPERATS3ETM4 = 0;
            numeric xSEPERATS3ETM5 = 0;
            numeric xSEPERATS3ETM7 = 0;
    
            numeric xQuadSEPERATS3ETM1 = 0;
            numeric xQuadSEPERATS3ETM2 = 0;
            numeric xQuadSEPERATS3ETM3 = 0;
            numeric xQuadSEPERATS3ETM4 = 0;
            numeric xQuadSEPERATS3ETM5 = 0;
            numeric xQuadSEPERATS3ETM7 = 0;
    
            numeric ySEPERATS3ETM1 = 0;
            numeric ySEPERATS3ETM2 = 0;
            numeric ySEPERATS3ETM3 = 0;
            numeric ySEPERATS3ETM4 = 0;
            numeric ySEPERATS3ETM5 = 0;
            numeric ySEPERATS3ETM7 = 0;
    
            numeric yQuadSEPERATS3ETM1 = 0;
            numeric yQuadSEPERATS3ETM2 = 0;
            numeric yQuadSEPERATS3ETM3 = 0;
            numeric yQuadSEPERATS3ETM4 = 0;
            numeric yQuadSEPERATS3ETM5 = 0;
            numeric yQuadSEPERATS3ETM7 = 0;
    
            numeric xySEPERATS3ETM1 = 0;
            numeric xySEPERATS3ETM2 = 0;
            numeric xySEPERATS3ETM3 = 0;
            numeric xySEPERATS3ETM4 = 0;
            numeric xySEPERATS3ETM5 = 0;
            numeric xySEPERATS3ETM7 = 0;
    
            numeric xxAritQuadSEPERATS3ETM1 = 0;
            numeric xxAritQuadSEPERATS3ETM2 = 0;
            numeric xxAritQuadSEPERATS3ETM3 = 0;
            numeric xxAritQuadSEPERATS3ETM4 = 0;
            numeric xxAritQuadSEPERATS3ETM5 = 0;
            numeric xxAritQuadSEPERATS3ETM7 = 0;
    
            numeric yyAritQuadSEPERATS3ETM1 = 0;
            numeric yyAritQuadSEPERATS3ETM2 = 0;
            numeric yyAritQuadSEPERATS3ETM3 = 0;
            numeric yyAritQuadSEPERATS3ETM4 = 0;
            numeric yyAritQuadSEPERATS3ETM5 = 0;
            numeric yyAritQuadSEPERATS3ETM7 = 0;
    
            numeric qXYSEPERATS3ETM1 = 0;
            numeric qXYSEPERATS3ETM2 = 0;
            numeric qXYSEPERATS3ETM3 = 0;
            numeric qXYSEPERATS3ETM4 = 0;
            numeric qXYSEPERATS3ETM5 = 0;
            numeric qXYSEPERATS3ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS3ETM1 = xSEPERATS3ETM1 + pifSEPERATS4S3ETM1arrayRAND[m];
                xSEPERATS3ETM2 = xSEPERATS3ETM2 + pifSEPERATS4S3ETM2arrayRAND[m];
                xSEPERATS3ETM3 = xSEPERATS3ETM3 + pifSEPERATS4S3ETM3arrayRAND[m];
                xSEPERATS3ETM4 = xSEPERATS3ETM4 + pifSEPERATS4S3ETM4arrayRAND[m];
                xSEPERATS3ETM5 = xSEPERATS3ETM5 + pifSEPERATS4S3ETM5arrayRAND[m];
                xSEPERATS3ETM7 = xSEPERATS3ETM7 + pifSEPERATS4S3ETM7arrayRAND[m];
    
                xQuadSEPERATS3ETM1 = (xQuadSEPERATS3ETM1 + (pifSEPERATS4S3ETM1arrayRAND[m]^2));
                xQuadSEPERATS3ETM2 = (xQuadSEPERATS3ETM2 + (pifSEPERATS4S3ETM2arrayRAND[m]^2));
                xQuadSEPERATS3ETM3 = (xQuadSEPERATS3ETM3 + (pifSEPERATS4S3ETM3arrayRAND[m]^2));
                xQuadSEPERATS3ETM4 = (xQuadSEPERATS3ETM4 + (pifSEPERATS4S3ETM4arrayRAND[m]^2));
                xQuadSEPERATS3ETM5 = (xQuadSEPERATS3ETM5 + (pifSEPERATS4S3ETM5arrayRAND[m]^2));
                xQuadSEPERATS3ETM7 = (xQuadSEPERATS3ETM7 + (pifSEPERATS4S3ETM7arrayRAND[m]^2));
    
                ySEPERATS3ETM1 = ySEPERATS3ETM1 + pifSEPERATS3slaveETM1arrayRAND[m];
                ySEPERATS3ETM2 = ySEPERATS3ETM2 + pifSEPERATS3slaveETM2arrayRAND[m];
                ySEPERATS3ETM3 = ySEPERATS3ETM3 + pifSEPERATS3slaveETM3arrayRAND[m];
                ySEPERATS3ETM4 = ySEPERATS3ETM4 + pifSEPERATS3slaveETM4arrayRAND[m];
                ySEPERATS3ETM5 = ySEPERATS3ETM5 + pifSEPERATS3slaveETM5arrayRAND[m];
                ySEPERATS3ETM7 = ySEPERATS3ETM7 + pifSEPERATS3slaveETM7arrayRAND[m];
                
                yQuadSEPERATS3ETM1 = (yQuadSEPERATS3ETM1 + (pifSEPERATS3slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS3ETM2 = (yQuadSEPERATS3ETM2 + (pifSEPERATS3slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS3ETM3 = (yQuadSEPERATS3ETM3 + (pifSEPERATS3slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS3ETM4 = (yQuadSEPERATS3ETM4 + (pifSEPERATS3slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS3ETM5 = (yQuadSEPERATS3ETM5 + (pifSEPERATS3slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS3ETM7 = (yQuadSEPERATS3ETM7 + (pifSEPERATS3slaveETM7arrayRAND[m]^2));
    
                xySEPERATS3ETM1 = (xySEPERATS3ETM1 + (pifSEPERATS4S3ETM1arrayRAND[m] * pifSEPERATS3slaveETM1arrayRAND[m]));
                xySEPERATS3ETM2 = (xySEPERATS3ETM2 + (pifSEPERATS4S3ETM2arrayRAND[m] * pifSEPERATS3slaveETM2arrayRAND[m]));
                xySEPERATS3ETM3 = (xySEPERATS3ETM3 + (pifSEPERATS4S3ETM3arrayRAND[m] * pifSEPERATS3slaveETM3arrayRAND[m]));
                xySEPERATS3ETM4 = (xySEPERATS3ETM4 + (pifSEPERATS4S3ETM4arrayRAND[m] * pifSEPERATS3slaveETM4arrayRAND[m]));
                xySEPERATS3ETM5 = (xySEPERATS3ETM5 + (pifSEPERATS4S3ETM5arrayRAND[m] * pifSEPERATS3slaveETM5arrayRAND[m]));
                xySEPERATS3ETM7 = (xySEPERATS3ETM7 + (pifSEPERATS4S3ETM7arrayRAND[m] * pifSEPERATS3slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS3ETM1 = xSEPERATS3ETM1 / minPifVAL;
            xAritSEPERATS3ETM2 = xSEPERATS3ETM2 / minPifVAL;
            xAritSEPERATS3ETM3 = xSEPERATS3ETM3 / minPifVAL;
            xAritSEPERATS3ETM4 = xSEPERATS3ETM4 / minPifVAL;
            xAritSEPERATS3ETM5 = xSEPERATS3ETM5 / minPifVAL;
            xAritSEPERATS3ETM7 = xSEPERATS3ETM7 / minPifVAL;
    
            yAritSEPERATS3ETM1 = ySEPERATS3ETM1 / minPifVAL;
            yAritSEPERATS3ETM2 = ySEPERATS3ETM2 / minPifVAL;
            yAritSEPERATS3ETM3 = ySEPERATS3ETM3 / minPifVAL;
            yAritSEPERATS3ETM4 = ySEPERATS3ETM4 / minPifVAL;
            yAritSEPERATS3ETM5 = ySEPERATS3ETM5 / minPifVAL;
            yAritSEPERATS3ETM7 = ySEPERATS3ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3ETM1 = (xxAritQuadSEPERATS3ETM1 + ((pifSEPERATS4S3ETM1arrayRAND[n] - xAritSEPERATS3ETM1)^2));
                xxAritQuadSEPERATS3ETM2 = (xxAritQuadSEPERATS3ETM2 + ((pifSEPERATS4S3ETM2arrayRAND[n] - xAritSEPERATS3ETM2)^2));
                xxAritQuadSEPERATS3ETM3 = (xxAritQuadSEPERATS3ETM3 + ((pifSEPERATS4S3ETM3arrayRAND[n] - xAritSEPERATS3ETM3)^2));
                xxAritQuadSEPERATS3ETM4 = (xxAritQuadSEPERATS3ETM4 + ((pifSEPERATS4S3ETM4arrayRAND[n] - xAritSEPERATS3ETM4)^2));
                xxAritQuadSEPERATS3ETM5 = (xxAritQuadSEPERATS3ETM5 + ((pifSEPERATS4S3ETM5arrayRAND[n] - xAritSEPERATS3ETM5)^2));
                xxAritQuadSEPERATS3ETM7 = (xxAritQuadSEPERATS3ETM7 + ((pifSEPERATS4S3ETM7arrayRAND[n] - xAritSEPERATS3ETM7)^2));
    
                yyAritQuadSEPERATS3ETM1 = (yyAritQuadSEPERATS3ETM1 + ((pifSEPERATS3slaveETM1arrayRAND[n] - yAritSEPERATS3ETM1)^2));
                yyAritQuadSEPERATS3ETM2 = (yyAritQuadSEPERATS3ETM2 + ((pifSEPERATS3slaveETM2arrayRAND[n] - yAritSEPERATS3ETM2)^2));
                yyAritQuadSEPERATS3ETM3 = (yyAritQuadSEPERATS3ETM3 + ((pifSEPERATS3slaveETM3arrayRAND[n] - yAritSEPERATS3ETM3)^2));
                yyAritQuadSEPERATS3ETM4 = (yyAritQuadSEPERATS3ETM4 + ((pifSEPERATS3slaveETM4arrayRAND[n] - yAritSEPERATS3ETM4)^2));
                yyAritQuadSEPERATS3ETM5 = (yyAritQuadSEPERATS3ETM5 + ((pifSEPERATS3slaveETM5arrayRAND[n] - yAritSEPERATS3ETM5)^2));
                yyAritQuadSEPERATS3ETM7 = (yyAritQuadSEPERATS3ETM7 + ((pifSEPERATS3slaveETM7arrayRAND[n] - yAritSEPERATS3ETM7)^2));
    
                qXYSEPERATS3ETM1 = (qXYSEPERATS3ETM1 + ((pifSEPERATS4S3ETM1arrayRAND[n] - xAritSEPERATS3ETM1) * (pifSEPERATS3slaveETM1arrayRAND[n] - yAritSEPERATS3ETM1)));
                qXYSEPERATS3ETM2 = (qXYSEPERATS3ETM2 + ((pifSEPERATS4S3ETM2arrayRAND[n] - xAritSEPERATS3ETM2) * (pifSEPERATS3slaveETM2arrayRAND[n] - yAritSEPERATS3ETM2)));
                qXYSEPERATS3ETM3 = (qXYSEPERATS3ETM3 + ((pifSEPERATS4S3ETM3arrayRAND[n] - xAritSEPERATS3ETM3) * (pifSEPERATS3slaveETM3arrayRAND[n] - yAritSEPERATS3ETM3)));
                qXYSEPERATS3ETM4 = (qXYSEPERATS3ETM4 + ((pifSEPERATS4S3ETM4arrayRAND[n] - xAritSEPERATS3ETM4) * (pifSEPERATS3slaveETM4arrayRAND[n] - yAritSEPERATS3ETM4)));
                qXYSEPERATS3ETM5 = (qXYSEPERATS3ETM5 + ((pifSEPERATS4S3ETM5arrayRAND[n] - xAritSEPERATS3ETM5) * (pifSEPERATS3slaveETM5arrayRAND[n] - yAritSEPERATS3ETM5)));
                qXYSEPERATS3ETM7 = (qXYSEPERATS3ETM7 + ((pifSEPERATS4S3ETM7arrayRAND[n] - xAritSEPERATS3ETM7) * (pifSEPERATS3slaveETM7arrayRAND[n] - yAritSEPERATS3ETM7)));
            }
        
            aSEPERATS3ETM1 = (((xQuadSEPERATS3ETM1 * ySEPERATS3ETM1) - (xSEPERATS3ETM1 * xySEPERATS3ETM1)) / ((minPifVAL * xQuadSEPERATS3ETM1) - (xSEPERATS3ETM1^2)));
            aSEPERATS3ETM2 = (((xQuadSEPERATS3ETM2 * ySEPERATS3ETM2) - (xSEPERATS3ETM2 * xySEPERATS3ETM2)) / ((minPifVAL * xQuadSEPERATS3ETM2) - (xSEPERATS3ETM2^2)));
            aSEPERATS3ETM3 = (((xQuadSEPERATS3ETM3 * ySEPERATS3ETM3) - (xSEPERATS3ETM3 * xySEPERATS3ETM3)) / ((minPifVAL * xQuadSEPERATS3ETM3) - (xSEPERATS3ETM3^2)));
            aSEPERATS3ETM4 = (((xQuadSEPERATS3ETM4 * ySEPERATS3ETM4) - (xSEPERATS3ETM4 * xySEPERATS3ETM4)) / ((minPifVAL * xQuadSEPERATS3ETM4) - (xSEPERATS3ETM4^2)));
            aSEPERATS3ETM5 = (((xQuadSEPERATS3ETM5 * ySEPERATS3ETM5) - (xSEPERATS3ETM5 * xySEPERATS3ETM5)) / ((minPifVAL * xQuadSEPERATS3ETM5) - (xSEPERATS3ETM5^2)));
            aSEPERATS3ETM7 = (((xQuadSEPERATS3ETM7 * ySEPERATS3ETM7) - (xSEPERATS3ETM7 * xySEPERATS3ETM7)) / ((minPifVAL * xQuadSEPERATS3ETM7) - (xSEPERATS3ETM7^2)));
            
            bSEPERATS3ETM1 = qXYSEPERATS3ETM1 / xxAritQuadSEPERATS3ETM1;
            bSEPERATS3ETM2 = qXYSEPERATS3ETM2 / xxAritQuadSEPERATS3ETM2;
            bSEPERATS3ETM3 = qXYSEPERATS3ETM3 / xxAritQuadSEPERATS3ETM3;
            bSEPERATS3ETM4 = qXYSEPERATS3ETM4 / xxAritQuadSEPERATS3ETM4;
            bSEPERATS3ETM5 = qXYSEPERATS3ETM5 / xxAritQuadSEPERATS3ETM5;
            bSEPERATS3ETM7 = qXYSEPERATS3ETM7 / xxAritQuadSEPERATS3ETM7;
    
            rSEPERATS3ETM1 = (qXYSEPERATS3ETM1 / ((xxAritQuadSEPERATS3ETM1 * yyAritQuadSEPERATS3ETM1)^0.5));
            rSEPERATS3ETM2 = (qXYSEPERATS3ETM2 / ((xxAritQuadSEPERATS3ETM2 * yyAritQuadSEPERATS3ETM2)^0.5));
            rSEPERATS3ETM3 = (qXYSEPERATS3ETM3 / ((xxAritQuadSEPERATS3ETM3 * yyAritQuadSEPERATS3ETM3)^0.5));
            rSEPERATS3ETM4 = (qXYSEPERATS3ETM4 / ((xxAritQuadSEPERATS3ETM4 * yyAritQuadSEPERATS3ETM4)^0.5));
            rSEPERATS3ETM5 = (qXYSEPERATS3ETM5 / ((xxAritQuadSEPERATS3ETM5 * yyAritQuadSEPERATS3ETM5)^0.5));
            rSEPERATS3ETM7 = (qXYSEPERATS3ETM7 / ((xxAritQuadSEPERATS3ETM7 * yyAritQuadSEPERATS3ETM7)^0.5));
    
            rQuadSEPERATS3ETM1 = ((rSEPERATS3ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3ETM2 = ((rSEPERATS3ETM2^2) * 100);
            rQuadSEPERATS3ETM3 = ((rSEPERATS3ETM3^2) * 100);
            rQuadSEPERATS3ETM4 = ((rSEPERATS3ETM4^2) * 100);
            rQuadSEPERATS3ETM5 = ((rSEPERATS3ETM5^2) * 100);
            rQuadSEPERATS3ETM7 = ((rSEPERATS3ETM7^2) * 100);
        
            syxSEPERATS3ETM1 = (((yyAritQuadSEPERATS3ETM1 - ((qXYSEPERATS3ETM1^2) / xxAritQuadSEPERATS3ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM2 = (((yyAritQuadSEPERATS3ETM2 - ((qXYSEPERATS3ETM2^2) / xxAritQuadSEPERATS3ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM3 = (((yyAritQuadSEPERATS3ETM3 - ((qXYSEPERATS3ETM3^2) / xxAritQuadSEPERATS3ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM4 = (((yyAritQuadSEPERATS3ETM4 - ((qXYSEPERATS3ETM4^2) / xxAritQuadSEPERATS3ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM5 = (((yyAritQuadSEPERATS3ETM5 - ((qXYSEPERATS3ETM5^2) / xxAritQuadSEPERATS3ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM7 = (((yyAritQuadSEPERATS3ETM7 - ((qXYSEPERATS3ETM7^2) / xxAritQuadSEPERATS3ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3ETM1 = (((syxSEPERATS3ETM1^2) / xxAritQuadSEPERATS3ETM1)^0.5);
            bStandSEPERATS3ETM2 = (((syxSEPERATS3ETM2^2) / xxAritQuadSEPERATS3ETM2)^0.5);
            bStandSEPERATS3ETM3 = (((syxSEPERATS3ETM3^2) / xxAritQuadSEPERATS3ETM3)^0.5);
            bStandSEPERATS3ETM4 = (((syxSEPERATS3ETM4^2) / xxAritQuadSEPERATS3ETM4)^0.5);
            bStandSEPERATS3ETM5 = (((syxSEPERATS3ETM5^2) / xxAritQuadSEPERATS3ETM5)^0.5);
            bStandSEPERATS3ETM7 = (((syxSEPERATS3ETM7^2) / xxAritQuadSEPERATS3ETM7)^0.5);
    
            aStandSEPERATS3ETM1 = (bStandSEPERATS3ETM1 * ((xQuadSEPERATS3ETM1 / minPifVAL)^0.5));
            aStandSEPERATS3ETM2 = (bStandSEPERATS3ETM2 * ((xQuadSEPERATS3ETM2 / minPifVAL)^0.5));
            aStandSEPERATS3ETM3 = (bStandSEPERATS3ETM3 * ((xQuadSEPERATS3ETM3 / minPifVAL)^0.5));
            aStandSEPERATS3ETM4 = (bStandSEPERATS3ETM4 * ((xQuadSEPERATS3ETM4 / minPifVAL)^0.5));
            aStandSEPERATS3ETM5 = (bStandSEPERATS3ETM5 * ((xQuadSEPERATS3ETM5 / minPifVAL)^0.5));
            aStandSEPERATS3ETM7 = (bStandSEPERATS3ETM7 * ((xQuadSEPERATS3ETM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM1, bSEPERATS3ETM1, rSEPERATS3ETM1, rQuadSEPERATS3ETM1, aStandSEPERATS3ETM1, bStandSEPERATS3ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM2, bSEPERATS3ETM2, rSEPERATS3ETM2, rQuadSEPERATS3ETM2, aStandSEPERATS3ETM2, bStandSEPERATS3ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM3, bSEPERATS3ETM3, rSEPERATS3ETM3, rQuadSEPERATS3ETM3, aStandSEPERATS3ETM3, bStandSEPERATS3ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM4, bSEPERATS3ETM4, rSEPERATS3ETM4, rQuadSEPERATS3ETM4, aStandSEPERATS3ETM4, bStandSEPERATS3ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM5, bSEPERATS3ETM5, rSEPERATS3ETM5, rQuadSEPERATS3ETM5, aStandSEPERATS3ETM5, bStandSEPERATS3ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS3ETM7, bSEPERATS3ETM7, rSEPERATS3ETM7, rQuadSEPERATS3ETM7, aStandSEPERATS3ETM7, bStandSEPERATS3ETM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS3slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS3slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS3slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS3slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS3slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS3slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS3slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT3ETM1[i,j] = (aSEPERATS3ETM1 + (bSEPERATS3ETM1 * REFS3ETM1[i,j]));
                    OUT3ETM2[i,j] = (aSEPERATS3ETM2 + (bSEPERATS3ETM2 * REFS3ETM2[i,j]));
                    OUT3ETM3[i,j] = (aSEPERATS3ETM3 + (bSEPERATS3ETM3 * REFS3ETM3[i,j]));
                    OUT3ETM4[i,j] = (aSEPERATS3ETM4 + (bSEPERATS3ETM4 * REFS3ETM4[i,j]));
                    OUT3ETM5[i,j] = (aSEPERATS3ETM5 + (bSEPERATS3ETM5 * REFS3ETM5[i,j]));
                    OUT3ETM7[i,j] = (aSEPERATS3ETM7 + (bSEPERATS3ETM7 * REFS3ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3ETM1);
        	CreatePyramid(OUT3ETM2);
        	CreatePyramid(OUT3ETM3);
        	CreatePyramid(OUT3ETM4);
        	CreatePyramid(OUT3ETM5);
        	CreatePyramid(OUT3ETM7);
        
        	CreateHistogram(OUT3ETM1);
        	CreateHistogram(OUT3ETM2);
        	CreateHistogram(OUT3ETM3);
        	CreateHistogram(OUT3ETM4);
        	CreateHistogram(OUT3ETM5);
        	CreateHistogram(OUT3ETM7);
            CloseRaster(REFS3ETM1);
            CloseRaster(REFS3ETM2);
            CloseRaster(REFS3ETM3);
            CloseRaster(REFS3ETM4);
            CloseRaster(REFS3ETM5);
            CloseRaster(REFS3ETM7);
    
            CloseRaster(OUT3ETM1);
            CloseRaster(OUT3ETM2);
            CloseRaster(OUT3ETM3);
            CloseRaster(OUT3ETM4);
            CloseRaster(OUT3ETM5);
            CloseRaster(OUT3ETM7);
            
        	printf("Scene 3 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors3 == 6 )
            {
            numeric xAritSEPERATS3TM1, xAritSEPERATS3TM2, xAritSEPERATS3TM3, xAritSEPERATS3TM4, xAritSEPERATS3TM5, xAritSEPERATS3TM7;
            numeric yAritSEPERATS3TM1, yAritSEPERATS3TM2, yAritSEPERATS3TM3, yAritSEPERATS3TM4, yAritSEPERATS3TM5, yAritSEPERATS3TM7;
    
            numeric aSEPERATS3TM1, aSEPERATS3TM2, aSEPERATS3TM3, aSEPERATS3TM4, aSEPERATS3TM5, aSEPERATS3TM7;
            numeric bSEPERATS3TM1, bSEPERATS3TM2, bSEPERATS3TM3, bSEPERATS3TM4, bSEPERATS3TM5, bSEPERATS3TM7;
            numeric rSEPERATS3TM1, rSEPERATS3TM2, rSEPERATS3TM3, rSEPERATS3TM4, rSEPERATS3TM5, rSEPERATS3TM7;
            numeric rQuadSEPERATS3TM1, rQuadSEPERATS3TM2, rQuadSEPERATS3TM3, rQuadSEPERATS3TM4, rQuadSEPERATS3TM5, rQuadSEPERATS3TM7;
            numeric syxSEPERATS3TM1, syxSEPERATS3TM2, syxSEPERATS3TM3, syxSEPERATS3TM4, syxSEPERATS3TM5, syxSEPERATS3TM7;
            numeric bStandSEPERATS3TM1, bStandSEPERATS3TM2, bStandSEPERATS3TM3, bStandSEPERATS3TM4, bStandSEPERATS3TM5, bStandSEPERATS3TM7;
            numeric aStandSEPERATS3TM1, aStandSEPERATS3TM2, aStandSEPERATS3TM3, aStandSEPERATS3TM4, aStandSEPERATS3TM5, aStandSEPERATS3TM7;
    
            numeric xSEPERATS3TM1 = 0;
            numeric xSEPERATS3TM2 = 0;
            numeric xSEPERATS3TM3 = 0;
            numeric xSEPERATS3TM4 = 0;
            numeric xSEPERATS3TM5 = 0;
            numeric xSEPERATS3TM7 = 0;
    
            numeric xQuadSEPERATS3TM1 = 0;
            numeric xQuadSEPERATS3TM2 = 0;
            numeric xQuadSEPERATS3TM3 = 0;
            numeric xQuadSEPERATS3TM4 = 0;
            numeric xQuadSEPERATS3TM5 = 0;
            numeric xQuadSEPERATS3TM7 = 0;
    
            numeric ySEPERATS3TM1 = 0;
            numeric ySEPERATS3TM2 = 0;
            numeric ySEPERATS3TM3 = 0;
            numeric ySEPERATS3TM4 = 0;
            numeric ySEPERATS3TM5 = 0;
            numeric ySEPERATS3TM7 = 0;
    
            numeric yQuadSEPERATS3TM1 = 0;
            numeric yQuadSEPERATS3TM2 = 0;
            numeric yQuadSEPERATS3TM3 = 0;
            numeric yQuadSEPERATS3TM4 = 0;
            numeric yQuadSEPERATS3TM5 = 0;
            numeric yQuadSEPERATS3TM7 = 0;
    
            numeric xySEPERATS3TM1 = 0;
            numeric xySEPERATS3TM2 = 0;
            numeric xySEPERATS3TM3 = 0;
            numeric xySEPERATS3TM4 = 0;
            numeric xySEPERATS3TM5 = 0;
            numeric xySEPERATS3TM7 = 0;
    
            numeric xxAritQuadSEPERATS3TM1 = 0;
            numeric xxAritQuadSEPERATS3TM2 = 0;
            numeric xxAritQuadSEPERATS3TM3 = 0;
            numeric xxAritQuadSEPERATS3TM4 = 0;
            numeric xxAritQuadSEPERATS3TM5 = 0;
            numeric xxAritQuadSEPERATS3TM7 = 0;
    
            numeric yyAritQuadSEPERATS3TM1 = 0;
            numeric yyAritQuadSEPERATS3TM2 = 0;
            numeric yyAritQuadSEPERATS3TM3 = 0;
            numeric yyAritQuadSEPERATS3TM4 = 0;
            numeric yyAritQuadSEPERATS3TM5 = 0;
            numeric yyAritQuadSEPERATS3TM7 = 0;
    
            numeric qXYSEPERATS3TM1 = 0;
            numeric qXYSEPERATS3TM2 = 0;
            numeric qXYSEPERATS3TM3 = 0;
            numeric qXYSEPERATS3TM4 = 0;
            numeric qXYSEPERATS3TM5 = 0;
            numeric qXYSEPERATS3TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS3TM1 = xSEPERATS3TM1 + pifSEPERATS4S3ETM1arrayRAND[m];
                xSEPERATS3TM2 = xSEPERATS3TM2 + pifSEPERATS4S3ETM2arrayRAND[m];
                xSEPERATS3TM3 = xSEPERATS3TM3 + pifSEPERATS4S3ETM3arrayRAND[m];
                xSEPERATS3TM4 = xSEPERATS3TM4 + pifSEPERATS4S3ETM4arrayRAND[m];
                xSEPERATS3TM5 = xSEPERATS3TM5 + pifSEPERATS4S3ETM5arrayRAND[m];
                xSEPERATS3TM7 = xSEPERATS3TM7 + pifSEPERATS4S3ETM7arrayRAND[m];
    
                xQuadSEPERATS3TM1 = (xQuadSEPERATS3TM1 + (pifSEPERATS4S3ETM1arrayRAND[m]^2));
                xQuadSEPERATS3TM2 = (xQuadSEPERATS3TM2 + (pifSEPERATS4S3ETM2arrayRAND[m]^2));
                xQuadSEPERATS3TM3 = (xQuadSEPERATS3TM3 + (pifSEPERATS4S3ETM3arrayRAND[m]^2));
                xQuadSEPERATS3TM4 = (xQuadSEPERATS3TM4 + (pifSEPERATS4S3ETM4arrayRAND[m]^2));
                xQuadSEPERATS3TM5 = (xQuadSEPERATS3TM5 + (pifSEPERATS4S3ETM5arrayRAND[m]^2));
                xQuadSEPERATS3TM7 = (xQuadSEPERATS3TM7 + (pifSEPERATS4S3ETM7arrayRAND[m]^2));
    
                ySEPERATS3TM1 = ySEPERATS3TM1 + pifSEPERATS3slaveTM1arrayRAND[m];
                ySEPERATS3TM2 = ySEPERATS3TM2 + pifSEPERATS3slaveTM2arrayRAND[m];
                ySEPERATS3TM3 = ySEPERATS3TM3 + pifSEPERATS3slaveTM3arrayRAND[m];
                ySEPERATS3TM4 = ySEPERATS3TM4 + pifSEPERATS3slaveTM4arrayRAND[m];
                ySEPERATS3TM5 = ySEPERATS3TM5 + pifSEPERATS3slaveTM5arrayRAND[m];
                ySEPERATS3TM7 = ySEPERATS3TM7 + pifSEPERATS3slaveTM7arrayRAND[m];
                
                yQuadSEPERATS3TM1 = (yQuadSEPERATS3TM1 + (pifSEPERATS3slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS3TM2 = (yQuadSEPERATS3TM2 + (pifSEPERATS3slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS3TM3 = (yQuadSEPERATS3TM3 + (pifSEPERATS3slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS3TM4 = (yQuadSEPERATS3TM4 + (pifSEPERATS3slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS3TM5 = (yQuadSEPERATS3TM5 + (pifSEPERATS3slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS3TM7 = (yQuadSEPERATS3TM7 + (pifSEPERATS3slaveTM7arrayRAND[m]^2));
    
                xySEPERATS3TM1 = (xySEPERATS3TM1 + (pifSEPERATS4S3ETM1arrayRAND[m] * pifSEPERATS3slaveTM1arrayRAND[m]));
                xySEPERATS3TM2 = (xySEPERATS3TM2 + (pifSEPERATS4S3ETM2arrayRAND[m] * pifSEPERATS3slaveTM2arrayRAND[m]));
                xySEPERATS3TM3 = (xySEPERATS3TM3 + (pifSEPERATS4S3ETM3arrayRAND[m] * pifSEPERATS3slaveTM3arrayRAND[m]));
                xySEPERATS3TM4 = (xySEPERATS3TM4 + (pifSEPERATS4S3ETM4arrayRAND[m] * pifSEPERATS3slaveTM4arrayRAND[m]));
                xySEPERATS3TM5 = (xySEPERATS3TM5 + (pifSEPERATS4S3ETM5arrayRAND[m] * pifSEPERATS3slaveTM5arrayRAND[m]));
                xySEPERATS3TM7 = (xySEPERATS3TM7 + (pifSEPERATS4S3ETM7arrayRAND[m] * pifSEPERATS3slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS3TM1 = xSEPERATS3TM1 / minPifVAL;
            xAritSEPERATS3TM2 = xSEPERATS3TM2 / minPifVAL;
            xAritSEPERATS3TM3 = xSEPERATS3TM3 / minPifVAL;
            xAritSEPERATS3TM4 = xSEPERATS3TM4 / minPifVAL;
            xAritSEPERATS3TM5 = xSEPERATS3TM5 / minPifVAL;
            xAritSEPERATS3TM7 = xSEPERATS3TM7 / minPifVAL;
    
            yAritSEPERATS3TM1 = ySEPERATS3TM1 / minPifVAL;
            yAritSEPERATS3TM2 = ySEPERATS3TM2 / minPifVAL;
            yAritSEPERATS3TM3 = ySEPERATS3TM3 / minPifVAL;
            yAritSEPERATS3TM4 = ySEPERATS3TM4 / minPifVAL;
            yAritSEPERATS3TM5 = ySEPERATS3TM5 / minPifVAL;
            yAritSEPERATS3TM7 = ySEPERATS3TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3TM1 = (xxAritQuadSEPERATS3TM1 + ((pifSEPERATS4S3ETM1arrayRAND[n] - xAritSEPERATS3TM1)^2));
                xxAritQuadSEPERATS3TM2 = (xxAritQuadSEPERATS3TM2 + ((pifSEPERATS4S3ETM2arrayRAND[n] - xAritSEPERATS3TM2)^2));
                xxAritQuadSEPERATS3TM3 = (xxAritQuadSEPERATS3TM3 + ((pifSEPERATS4S3ETM3arrayRAND[n] - xAritSEPERATS3TM3)^2));
                xxAritQuadSEPERATS3TM4 = (xxAritQuadSEPERATS3TM4 + ((pifSEPERATS4S3ETM4arrayRAND[n] - xAritSEPERATS3TM4)^2));
                xxAritQuadSEPERATS3TM5 = (xxAritQuadSEPERATS3TM5 + ((pifSEPERATS4S3ETM5arrayRAND[n] - xAritSEPERATS3TM5)^2));
                xxAritQuadSEPERATS3TM7 = (xxAritQuadSEPERATS3TM7 + ((pifSEPERATS4S3ETM7arrayRAND[n] - xAritSEPERATS3TM7)^2));
    
                yyAritQuadSEPERATS3TM1 = (yyAritQuadSEPERATS3TM1 + ((pifSEPERATS3slaveTM1arrayRAND[n] - yAritSEPERATS3TM1)^2));
                yyAritQuadSEPERATS3TM2 = (yyAritQuadSEPERATS3TM2 + ((pifSEPERATS3slaveTM2arrayRAND[n] - yAritSEPERATS3TM2)^2));
                yyAritQuadSEPERATS3TM3 = (yyAritQuadSEPERATS3TM3 + ((pifSEPERATS3slaveTM3arrayRAND[n] - yAritSEPERATS3TM3)^2));
                yyAritQuadSEPERATS3TM4 = (yyAritQuadSEPERATS3TM4 + ((pifSEPERATS3slaveTM4arrayRAND[n] - yAritSEPERATS3TM4)^2));
                yyAritQuadSEPERATS3TM5 = (yyAritQuadSEPERATS3TM5 + ((pifSEPERATS3slaveTM5arrayRAND[n] - yAritSEPERATS3TM5)^2));
                yyAritQuadSEPERATS3TM7 = (yyAritQuadSEPERATS3TM7 + ((pifSEPERATS3slaveTM7arrayRAND[n] - yAritSEPERATS3TM7)^2));
    
                qXYSEPERATS3TM1 = (qXYSEPERATS3TM1 + ((pifSEPERATS4S3ETM1arrayRAND[n] - xAritSEPERATS3TM1) * (pifSEPERATS3slaveTM1arrayRAND[n] - yAritSEPERATS3TM1)));
                qXYSEPERATS3TM2 = (qXYSEPERATS3TM2 + ((pifSEPERATS4S3ETM2arrayRAND[n] - xAritSEPERATS3TM2) * (pifSEPERATS3slaveTM2arrayRAND[n] - yAritSEPERATS3TM2)));
                qXYSEPERATS3TM3 = (qXYSEPERATS3TM3 + ((pifSEPERATS4S3ETM3arrayRAND[n] - xAritSEPERATS3TM3) * (pifSEPERATS3slaveTM3arrayRAND[n] - yAritSEPERATS3TM3)));
                qXYSEPERATS3TM4 = (qXYSEPERATS3TM4 + ((pifSEPERATS4S3ETM4arrayRAND[n] - xAritSEPERATS3TM4) * (pifSEPERATS3slaveTM4arrayRAND[n] - yAritSEPERATS3TM4)));
                qXYSEPERATS3TM5 = (qXYSEPERATS3TM5 + ((pifSEPERATS4S3ETM5arrayRAND[n] - xAritSEPERATS3TM5) * (pifSEPERATS3slaveTM5arrayRAND[n] - yAritSEPERATS3TM5)));
                qXYSEPERATS3TM7 = (qXYSEPERATS3TM7 + ((pifSEPERATS4S3ETM7arrayRAND[n] - xAritSEPERATS3TM7) * (pifSEPERATS3slaveTM7arrayRAND[n] - yAritSEPERATS3TM7)));
            }
        
            aSEPERATS3TM1 = (((xQuadSEPERATS3TM1 * ySEPERATS3TM1) - (xSEPERATS3TM1 * xySEPERATS3TM1)) / ((minPifVAL * xQuadSEPERATS3TM1) - (xSEPERATS3TM1^2)));
            aSEPERATS3TM2 = (((xQuadSEPERATS3TM2 * ySEPERATS3TM2) - (xSEPERATS3TM2 * xySEPERATS3TM2)) / ((minPifVAL * xQuadSEPERATS3TM2) - (xSEPERATS3TM2^2)));
            aSEPERATS3TM3 = (((xQuadSEPERATS3TM3 * ySEPERATS3TM3) - (xSEPERATS3TM3 * xySEPERATS3TM3)) / ((minPifVAL * xQuadSEPERATS3TM3) - (xSEPERATS3TM3^2)));
            aSEPERATS3TM4 = (((xQuadSEPERATS3TM4 * ySEPERATS3TM4) - (xSEPERATS3TM4 * xySEPERATS3TM4)) / ((minPifVAL * xQuadSEPERATS3TM4) - (xSEPERATS3TM4^2)));
            aSEPERATS3TM5 = (((xQuadSEPERATS3TM5 * ySEPERATS3TM5) - (xSEPERATS3TM5 * xySEPERATS3TM5)) / ((minPifVAL * xQuadSEPERATS3TM5) - (xSEPERATS3TM5^2)));
            aSEPERATS3TM7 = (((xQuadSEPERATS3TM7 * ySEPERATS3TM7) - (xSEPERATS3TM7 * xySEPERATS3TM7)) / ((minPifVAL * xQuadSEPERATS3TM7) - (xSEPERATS3TM7^2)));
            
            bSEPERATS3TM1 = qXYSEPERATS3TM1 / xxAritQuadSEPERATS3TM1;
            bSEPERATS3TM2 = qXYSEPERATS3TM2 / xxAritQuadSEPERATS3TM2;
            bSEPERATS3TM3 = qXYSEPERATS3TM3 / xxAritQuadSEPERATS3TM3;
            bSEPERATS3TM4 = qXYSEPERATS3TM4 / xxAritQuadSEPERATS3TM4;
            bSEPERATS3TM5 = qXYSEPERATS3TM5 / xxAritQuadSEPERATS3TM5;
            bSEPERATS3TM7 = qXYSEPERATS3TM7 / xxAritQuadSEPERATS3TM7;
    
            rSEPERATS3TM1 = (qXYSEPERATS3TM1 / ((xxAritQuadSEPERATS3TM1 * yyAritQuadSEPERATS3TM1)^0.5));
            rSEPERATS3TM2 = (qXYSEPERATS3TM2 / ((xxAritQuadSEPERATS3TM2 * yyAritQuadSEPERATS3TM2)^0.5));
            rSEPERATS3TM3 = (qXYSEPERATS3TM3 / ((xxAritQuadSEPERATS3TM3 * yyAritQuadSEPERATS3TM3)^0.5));
            rSEPERATS3TM4 = (qXYSEPERATS3TM4 / ((xxAritQuadSEPERATS3TM4 * yyAritQuadSEPERATS3TM4)^0.5));
            rSEPERATS3TM5 = (qXYSEPERATS3TM5 / ((xxAritQuadSEPERATS3TM5 * yyAritQuadSEPERATS3TM5)^0.5));
            rSEPERATS3TM7 = (qXYSEPERATS3TM7 / ((xxAritQuadSEPERATS3TM7 * yyAritQuadSEPERATS3TM7)^0.5));
    
            rQuadSEPERATS3TM1 = ((rSEPERATS3TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3TM2 = ((rSEPERATS3TM2^2) * 100);
            rQuadSEPERATS3TM3 = ((rSEPERATS3TM3^2) * 100);
            rQuadSEPERATS3TM4 = ((rSEPERATS3TM4^2) * 100);
            rQuadSEPERATS3TM5 = ((rSEPERATS3TM5^2) * 100);
            rQuadSEPERATS3TM7 = ((rSEPERATS3TM7^2) * 100);
        
            syxSEPERATS3TM1 = (((yyAritQuadSEPERATS3TM1 - ((qXYSEPERATS3TM1^2) / xxAritQuadSEPERATS3TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM2 = (((yyAritQuadSEPERATS3TM2 - ((qXYSEPERATS3TM2^2) / xxAritQuadSEPERATS3TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM3 = (((yyAritQuadSEPERATS3TM3 - ((qXYSEPERATS3TM3^2) / xxAritQuadSEPERATS3TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM4 = (((yyAritQuadSEPERATS3TM4 - ((qXYSEPERATS3TM4^2) / xxAritQuadSEPERATS3TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM5 = (((yyAritQuadSEPERATS3TM5 - ((qXYSEPERATS3TM5^2) / xxAritQuadSEPERATS3TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM7 = (((yyAritQuadSEPERATS3TM7 - ((qXYSEPERATS3TM7^2) / xxAritQuadSEPERATS3TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3TM1 = (((syxSEPERATS3TM1^2) / xxAritQuadSEPERATS3TM1)^0.5);
            bStandSEPERATS3TM2 = (((syxSEPERATS3TM2^2) / xxAritQuadSEPERATS3TM2)^0.5);
            bStandSEPERATS3TM3 = (((syxSEPERATS3TM3^2) / xxAritQuadSEPERATS3TM3)^0.5);
            bStandSEPERATS3TM4 = (((syxSEPERATS3TM4^2) / xxAritQuadSEPERATS3TM4)^0.5);
            bStandSEPERATS3TM5 = (((syxSEPERATS3TM5^2) / xxAritQuadSEPERATS3TM5)^0.5);
            bStandSEPERATS3TM7 = (((syxSEPERATS3TM7^2) / xxAritQuadSEPERATS3TM7)^0.5);
    
            aStandSEPERATS3TM1 = (bStandSEPERATS3TM1 * ((xQuadSEPERATS3TM1 / minPifVAL)^0.5));
            aStandSEPERATS3TM2 = (bStandSEPERATS3TM2 * ((xQuadSEPERATS3TM2 / minPifVAL)^0.5));
            aStandSEPERATS3TM3 = (bStandSEPERATS3TM3 * ((xQuadSEPERATS3TM3 / minPifVAL)^0.5));
            aStandSEPERATS3TM4 = (bStandSEPERATS3TM4 * ((xQuadSEPERATS3TM4 / minPifVAL)^0.5));
            aStandSEPERATS3TM5 = (bStandSEPERATS3TM5 * ((xQuadSEPERATS3TM5 / minPifVAL)^0.5));
            aStandSEPERATS3TM7 = (bStandSEPERATS3TM7 * ((xQuadSEPERATS3TM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM1, bSEPERATS3TM1, rSEPERATS3TM1, rQuadSEPERATS3TM1, aStandSEPERATS3TM1, bStandSEPERATS3TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM2, bSEPERATS3TM2, rSEPERATS3TM2, rQuadSEPERATS3TM2, aStandSEPERATS3TM2, bStandSEPERATS3TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM3, bSEPERATS3TM3, rSEPERATS3TM3, rQuadSEPERATS3TM3, aStandSEPERATS3TM3, bStandSEPERATS3TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM4, bSEPERATS3TM4, rSEPERATS3TM4, rQuadSEPERATS3TM4, aStandSEPERATS3TM4, bStandSEPERATS3TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM5, bSEPERATS3TM5, rSEPERATS3TM5, rQuadSEPERATS3TM5, aStandSEPERATS3TM5, bStandSEPERATS3TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS3TM7, bSEPERATS3TM7, rSEPERATS3TM7, rQuadSEPERATS3TM7, aStandSEPERATS3TM7, bStandSEPERATS3TM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS3slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS3slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS3slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS3slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS3slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS3slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS3slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT3TM1[i,j] = (aSEPERATS3TM1 + (bSEPERATS3TM1 * REFS3TM1[i,j]));
                    OUT3TM2[i,j] = (aSEPERATS3TM2 + (bSEPERATS3TM2 * REFS3TM2[i,j]));
                    OUT3TM3[i,j] = (aSEPERATS3TM3 + (bSEPERATS3TM3 * REFS3TM3[i,j]));
                    OUT3TM4[i,j] = (aSEPERATS3TM4 + (bSEPERATS3TM4 * REFS3TM4[i,j]));
                    OUT3TM5[i,j] = (aSEPERATS3TM5 + (bSEPERATS3TM5 * REFS3TM5[i,j]));
                    OUT3TM7[i,j] = (aSEPERATS3TM7 + (bSEPERATS3TM7 * REFS3TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3TM1);
        	CreatePyramid(OUT3TM2);
        	CreatePyramid(OUT3TM3);
        	CreatePyramid(OUT3TM4);
        	CreatePyramid(OUT3TM5);
        	CreatePyramid(OUT3TM7);
        
        	CreateHistogram(OUT3TM1);
        	CreateHistogram(OUT3TM2);
        	CreateHistogram(OUT3TM3);
        	CreateHistogram(OUT3TM4);
        	CreateHistogram(OUT3TM5);
        	CreateHistogram(OUT3TM7);
            CloseRaster(REFS3TM1);
            CloseRaster(REFS3TM2);
            CloseRaster(REFS3TM3);
            CloseRaster(REFS3TM4);
            CloseRaster(REFS3TM5);
            CloseRaster(REFS3TM7);
    
            CloseRaster(OUT3TM1);
            CloseRaster(OUT3TM2);
            CloseRaster(OUT3TM3);
            CloseRaster(OUT3TM4);
            CloseRaster(OUT3TM5);
            CloseRaster(OUT3TM7);
        
        	printf("Scene 3 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS3MSS1, xAritSEPERATS3MSS2, xAritSEPERATS3MSS4;
            numeric yAritSEPERATS3MSS1, yAritSEPERATS3MSS2, yAritSEPERATS3MSS4;
    
            numeric aSEPERATS3MSS1, aSEPERATS3MSS2, aSEPERATS3MSS4;
            numeric bSEPERATS3MSS1, bSEPERATS3MSS2, bSEPERATS3MSS4;
            numeric rSEPERATS3MSS1, rSEPERATS3MSS2, rSEPERATS3MSS4;
            numeric rQuadSEPERATS3MSS1, rQuadSEPERATS3MSS2, rQuadSEPERATS3MSS4;
            numeric syxSEPERATS3MSS1, syxSEPERATS3MSS2, syxSEPERATS3MSS4;
            numeric bStandSEPERATS3MSS1, bStandSEPERATS3MSS2, bStandSEPERATS3MSS4;
            numeric aStandSEPERATS3MSS1, aStandSEPERATS3MSS2, aStandSEPERATS3MSS4;
    
            numeric xSEPERATS3MSS1 = 0;
            numeric xSEPERATS3MSS2 = 0;
            numeric xSEPERATS3MSS4 = 0;
    
            numeric xQuadSEPERATS3MSS1 = 0;
            numeric xQuadSEPERATS3MSS2 = 0;
            numeric xQuadSEPERATS3MSS4 = 0;
    
            numeric ySEPERATS3MSS1 = 0;
            numeric ySEPERATS3MSS2 = 0;
            numeric ySEPERATS3MSS4 = 0;
    
            numeric yQuadSEPERATS3MSS1 = 0;
            numeric yQuadSEPERATS3MSS2 = 0;
            numeric yQuadSEPERATS3MSS4 = 0;
    
            numeric xySEPERATS3MSS1 = 0;
            numeric xySEPERATS3MSS2 = 0;
            numeric xySEPERATS3MSS4 = 0;
    
            numeric xxAritQuadSEPERATS3MSS1 = 0;
            numeric xxAritQuadSEPERATS3MSS2 = 0;
            numeric xxAritQuadSEPERATS3MSS4 = 0;
    
            numeric yyAritQuadSEPERATS3MSS1 = 0;
            numeric yyAritQuadSEPERATS3MSS2 = 0;
            numeric yyAritQuadSEPERATS3MSS4 = 0;
    
            numeric qXYSEPERATS3MSS1 = 0;
            numeric qXYSEPERATS3MSS2 = 0;
            numeric qXYSEPERATS3MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS3MSS1 = xSEPERATS3MSS1 + pifSEPERATS4S3ETM2arrayRAND[m];
                xSEPERATS3MSS2 = xSEPERATS3MSS2 + pifSEPERATS4S3ETM3arrayRAND[m];
                xSEPERATS3MSS4 = xSEPERATS3MSS4 + pifSEPERATS4S3ETM4arrayRAND[m];
    
                xQuadSEPERATS3MSS1 = (xQuadSEPERATS3MSS1 + (pifSEPERATS4S3ETM2arrayRAND[m]^2));
                xQuadSEPERATS3MSS2 = (xQuadSEPERATS3MSS2 + (pifSEPERATS4S3ETM3arrayRAND[m]^2));
                xQuadSEPERATS3MSS4 = (xQuadSEPERATS3MSS4 + (pifSEPERATS4S3ETM4arrayRAND[m]^2));
    
                ySEPERATS3MSS1 = ySEPERATS3MSS1 + pifSEPERATS3slaveMSS1arrayRAND[m];
                ySEPERATS3MSS2 = ySEPERATS3MSS2 + pifSEPERATS3slaveMSS2arrayRAND[m];
                ySEPERATS3MSS4 = ySEPERATS3MSS4 + pifSEPERATS3slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS3MSS1 = (yQuadSEPERATS3MSS1 + (pifSEPERATS3slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS3MSS2 = (yQuadSEPERATS3MSS2 + (pifSEPERATS3slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS3MSS4 = (yQuadSEPERATS3MSS4 + (pifSEPERATS3slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS3MSS1 = (xySEPERATS3MSS1 + (pifSEPERATS4S3ETM2arrayRAND[m] * pifSEPERATS3slaveMSS1arrayRAND[m]));
                xySEPERATS3MSS2 = (xySEPERATS3MSS2 + (pifSEPERATS4S3ETM3arrayRAND[m] * pifSEPERATS3slaveMSS2arrayRAND[m]));
                xySEPERATS3MSS4 = (xySEPERATS3MSS4 + (pifSEPERATS4S3ETM4arrayRAND[m] * pifSEPERATS3slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS3MSS1 = xSEPERATS3MSS1 / minPifVAL;
            xAritSEPERATS3MSS2 = xSEPERATS3MSS2 / minPifVAL;
            xAritSEPERATS3MSS4 = xSEPERATS3MSS4 / minPifVAL;
    
            yAritSEPERATS3MSS1 = ySEPERATS3MSS1 / minPifVAL;
            yAritSEPERATS3MSS2 = ySEPERATS3MSS2 / minPifVAL;
            yAritSEPERATS3MSS4 = ySEPERATS3MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3MSS1 = (xxAritQuadSEPERATS3MSS1 + ((pifSEPERATS4S3ETM2arrayRAND[n] - xAritSEPERATS3MSS1)^2));
                xxAritQuadSEPERATS3MSS2 = (xxAritQuadSEPERATS3MSS2 + ((pifSEPERATS4S3ETM3arrayRAND[n] - xAritSEPERATS3MSS2)^2));
                xxAritQuadSEPERATS3MSS4 = (xxAritQuadSEPERATS3MSS4 + ((pifSEPERATS4S3ETM4arrayRAND[n] - xAritSEPERATS3MSS4)^2));
    
                yyAritQuadSEPERATS3MSS1 = (yyAritQuadSEPERATS3MSS1 + ((pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)^2));
                yyAritQuadSEPERATS3MSS2 = (yyAritQuadSEPERATS3MSS2 + ((pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)^2));
                yyAritQuadSEPERATS3MSS4 = (yyAritQuadSEPERATS3MSS4 + ((pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)^2));
    
                qXYSEPERATS3MSS1 = (qXYSEPERATS3MSS1 + ((pifSEPERATS4S3ETM2arrayRAND[n] - xAritSEPERATS3MSS1) * (pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)));
                qXYSEPERATS3MSS2 = (qXYSEPERATS3MSS2 + ((pifSEPERATS4S3ETM3arrayRAND[n] - xAritSEPERATS3MSS2) * (pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)));
                qXYSEPERATS3MSS4 = (qXYSEPERATS3MSS4 + ((pifSEPERATS4S3ETM4arrayRAND[n] - xAritSEPERATS3MSS4) * (pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)));
            }
        
            aSEPERATS3MSS1 = (((xQuadSEPERATS3MSS1 * ySEPERATS3MSS1) - (xSEPERATS3MSS1 * xySEPERATS3MSS1)) / ((minPifVAL * xQuadSEPERATS3MSS1) - (xSEPERATS3MSS1^2)));
            aSEPERATS3MSS2 = (((xQuadSEPERATS3MSS2 * ySEPERATS3MSS2) - (xSEPERATS3MSS2 * xySEPERATS3MSS2)) / ((minPifVAL * xQuadSEPERATS3MSS2) - (xSEPERATS3MSS2^2)));
            aSEPERATS3MSS4 = (((xQuadSEPERATS3MSS4 * ySEPERATS3MSS4) - (xSEPERATS3MSS4 * xySEPERATS3MSS4)) / ((minPifVAL * xQuadSEPERATS3MSS4) - (xSEPERATS3MSS4^2)));
            
            bSEPERATS3MSS1 = qXYSEPERATS3MSS1 / xxAritQuadSEPERATS3MSS1;
            bSEPERATS3MSS2 = qXYSEPERATS3MSS2 / xxAritQuadSEPERATS3MSS2;
            bSEPERATS3MSS4 = qXYSEPERATS3MSS4 / xxAritQuadSEPERATS3MSS4;
    
            rSEPERATS3MSS1 = (qXYSEPERATS3MSS1 / ((xxAritQuadSEPERATS3MSS1 * yyAritQuadSEPERATS3MSS1)^0.5));
            rSEPERATS3MSS2 = (qXYSEPERATS3MSS2 / ((xxAritQuadSEPERATS3MSS2 * yyAritQuadSEPERATS3MSS2)^0.5));
            rSEPERATS3MSS4 = (qXYSEPERATS3MSS4 / ((xxAritQuadSEPERATS3MSS4 * yyAritQuadSEPERATS3MSS4)^0.5));
    
            rQuadSEPERATS3MSS1 = ((rSEPERATS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3MSS2 = ((rSEPERATS3MSS2^2) * 100);
            rQuadSEPERATS3MSS4 = ((rSEPERATS3MSS4^2) * 100);
        
            syxSEPERATS3MSS1 = (((yyAritQuadSEPERATS3MSS1 - ((qXYSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS2 = (((yyAritQuadSEPERATS3MSS2 - ((qXYSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS4 = (((yyAritQuadSEPERATS3MSS4 - ((qXYSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3MSS1 = (((syxSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)^0.5);
            bStandSEPERATS3MSS2 = (((syxSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)^0.5);
            bStandSEPERATS3MSS4 = (((syxSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)^0.5);
    
            aStandSEPERATS3MSS1 = (bStandSEPERATS3MSS1 * ((xQuadSEPERATS3MSS1 / minPifVAL)^0.5));
            aStandSEPERATS3MSS2 = (bStandSEPERATS3MSS2 * ((xQuadSEPERATS3MSS2 / minPifVAL)^0.5));
            aStandSEPERATS3MSS4 = (bStandSEPERATS3MSS4 * ((xQuadSEPERATS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS1, bSEPERATS3MSS1, rSEPERATS3MSS1, rQuadSEPERATS3MSS1, aStandSEPERATS3MSS1, bStandSEPERATS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS2, bSEPERATS3MSS2, rSEPERATS3MSS2, rQuadSEPERATS3MSS2, aStandSEPERATS3MSS2, bStandSEPERATS3MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS4, bSEPERATS3MSS4, rSEPERATS3MSS4, rQuadSEPERATS3MSS4, aStandSEPERATS3MSS4, bStandSEPERATS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS3slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS3slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS3slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aSEPERATS3MSS1 + (bSEPERATS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aSEPERATS3MSS2 + (bSEPERATS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = REFS3MSS3[i,j];
                    OUT3MSS4[i,j] = (aSEPERATS3MSS4 + (bSEPERATS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT3MSS1);
            CreatePyramid(OUT3MSS2);
            CreatePyramid(OUT3MSS3);
            CreatePyramid(OUT3MSS4);
        
            CreateHistogram(OUT3MSS1);
            CreateHistogram(OUT3MSS2);
            CreateHistogram(OUT3MSS3);
            CreateHistogram(OUT3MSS4);
            
            CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
        }
        
        else if ( sensors4 == 6 )
        {
        printf("Scene 4 - Master Scene (TM):\n");
        printf("Scene 4 array values used for regression computation:\n");
	    printf("For Scene 4 (Master) and Slave (Scene 1):");
        printf("TM1: %12f ", pifSEPERATS4S1TM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S1TM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S1TM1arrayRAND[minPifVAL]);
    
        printf("TM2: %12f ", pifSEPERATS4S1TM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S1TM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S1TM2arrayRAND[minPifVAL]);
    
        printf("TM3: %12f ", pifSEPERATS4S1TM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S1TM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S1TM3arrayRAND[minPifVAL]);
    
        printf("TM4: %12f ", pifSEPERATS4S1TM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S1TM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S1TM4arrayRAND[minPifVAL]);
    
        printf("TM5: %12f ", pifSEPERATS4S1TM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S1TM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S1TM5arrayRAND[minPifVAL]);
    
        printf("TM7: %12f ", pifSEPERATS4S1TM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S1TM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS4S1TM7arrayRAND[minPifVAL]);
	    printf("For Scene 4 (Master) and Slave (Scene 2):");
        printf("TM1: %12f ", pifSEPERATS4S2TM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S2TM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S2TM1arrayRAND[minPifVAL]);
    
        printf("TM2: %12f ", pifSEPERATS4S2TM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S2TM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S2TM2arrayRAND[minPifVAL]);
    
        printf("TM3: %12f ", pifSEPERATS4S2TM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S2TM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S2TM3arrayRAND[minPifVAL]);
    
        printf("TM4: %12f ", pifSEPERATS4S2TM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S2TM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S2TM4arrayRAND[minPifVAL]);
    
        printf("TM5: %12f ", pifSEPERATS4S2TM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S2TM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S2TM5arrayRAND[minPifVAL]);
    
        printf("TM7: %12f ", pifSEPERATS4S2TM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S2TM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS4S2TM7arrayRAND[minPifVAL]);
	    printf("For Scene 4 (Master) and Slave (Scene 3):");
        printf("TM1: %12f ", pifSEPERATS4S3TM1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S3TM1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S3TM1arrayRAND[minPifVAL]);
    
        printf("TM2: %12f ", pifSEPERATS4S3TM2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S3TM2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S3TM2arrayRAND[minPifVAL]);
    
        printf("TM3: %12f ", pifSEPERATS4S3TM3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S3TM3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S3TM3arrayRAND[minPifVAL]);
    
        printf("TM4: %12f ", pifSEPERATS4S3TM4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S3TM4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S3TM4arrayRAND[minPifVAL]);
    
        printf("TM5: %12f ", pifSEPERATS4S3TM5arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S3TM5arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S3TM5arrayRAND[minPifVAL]);
    
        printf("TM7: %12f ", pifSEPERATS4S3TM7arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S3TM7arrayRAND[o]);
        }
        printf("%12f\n\n", pifSEPERATS4S3TM7arrayRAND[minPifVAL]);
                for i = 1 to TMlins
                {
                    for j = 1 to TMcols
                    {
                    OUT4TM1[i,j] = REFS4TM1[i,j];
                    OUT4TM2[i,j] = REFS4TM2[i,j];
                    OUT4TM3[i,j] = REFS4TM3[i,j];
                    OUT4TM4[i,j] = REFS4TM4[i,j];
                    OUT4TM5[i,j] = REFS4TM5[i,j];
                    OUT4TM7[i,j] = REFS4TM7[i,j];
                    }
                }
            
        CreatePyramid(OUT4TM1);
        CreatePyramid(OUT4TM2);
        CreatePyramid(OUT4TM3);
        CreatePyramid(OUT4TM4);
        CreatePyramid(OUT4TM5);
        CreatePyramid(OUT4TM7);
        
        CreateHistogram(OUT4TM1);
        CreateHistogram(OUT4TM2);
        CreateHistogram(OUT4TM3);
        CreateHistogram(OUT4TM4);
        CreateHistogram(OUT4TM5);
        CreateHistogram(OUT4TM7);
        
        CloseRaster(REFS4TM1);
        CloseRaster(REFS4TM2);
        CloseRaster(REFS4TM3);
        CloseRaster(REFS4TM4);
        CloseRaster(REFS4TM5);
        CloseRaster(REFS4TM7);
        
        CloseRaster(OUT4TM1);
        CloseRaster(OUT4TM2);
        CloseRaster(OUT4TM3);
        CloseRaster(OUT4TM4);
        CloseRaster(OUT4TM5);
        CloseRaster(OUT4TM7);
            
        printf("Scene 4 (Master) output was written, histogram created and pyramid written...\n\n\n");
        
            if ( sensors1 == 7 )
            {
            numeric xAritSEPERATS1ETM1, xAritSEPERATS1ETM2, xAritSEPERATS1ETM3, xAritSEPERATS1ETM4, xAritSEPERATS1ETM5, xAritSEPERATS1ETM7;
            numeric yAritSEPERATS1ETM1, yAritSEPERATS1ETM2, yAritSEPERATS1ETM3, yAritSEPERATS1ETM4, yAritSEPERATS1ETM5, yAritSEPERATS1ETM7;
    
            numeric aSEPERATS1ETM1, aSEPERATS1ETM2, aSEPERATS1ETM3, aSEPERATS1ETM4, aSEPERATS1ETM5, aSEPERATS1ETM7;
            numeric bSEPERATS1ETM1, bSEPERATS1ETM2, bSEPERATS1ETM3, bSEPERATS1ETM4, bSEPERATS1ETM5, bSEPERATS1ETM7;
            numeric rSEPERATS1ETM1, rSEPERATS1ETM2, rSEPERATS1ETM3, rSEPERATS1ETM4, rSEPERATS1ETM5, rSEPERATS1ETM7;
            numeric rQuadSEPERATS1ETM1, rQuadSEPERATS1ETM2, rQuadSEPERATS1ETM3, rQuadSEPERATS1ETM4, rQuadSEPERATS1ETM5, rQuadSEPERATS1ETM7;
            numeric syxSEPERATS1ETM1, syxSEPERATS1ETM2, syxSEPERATS1ETM3, syxSEPERATS1ETM4, syxSEPERATS1ETM5, syxSEPERATS1ETM7;
            numeric bStandSEPERATS1ETM1, bStandSEPERATS1ETM2, bStandSEPERATS1ETM3, bStandSEPERATS1ETM4, bStandSEPERATS1ETM5, bStandSEPERATS1ETM7;
            numeric aStandSEPERATS1ETM1, aStandSEPERATS1ETM2, aStandSEPERATS1ETM3, aStandSEPERATS1ETM4, aStandSEPERATS1ETM5, aStandSEPERATS1ETM7;
    
            numeric xSEPERATS1ETM1 = 0;
            numeric xSEPERATS1ETM2 = 0;
            numeric xSEPERATS1ETM3 = 0;
            numeric xSEPERATS1ETM4 = 0;
            numeric xSEPERATS1ETM5 = 0;
            numeric xSEPERATS1ETM7 = 0;
    
            numeric xQuadSEPERATS1ETM1 = 0;
            numeric xQuadSEPERATS1ETM2 = 0;
            numeric xQuadSEPERATS1ETM3 = 0;
            numeric xQuadSEPERATS1ETM4 = 0;
            numeric xQuadSEPERATS1ETM5 = 0;
            numeric xQuadSEPERATS1ETM7 = 0;
    
            numeric ySEPERATS1ETM1 = 0;
            numeric ySEPERATS1ETM2 = 0;
            numeric ySEPERATS1ETM3 = 0;
            numeric ySEPERATS1ETM4 = 0;
            numeric ySEPERATS1ETM5 = 0;
            numeric ySEPERATS1ETM7 = 0;
    
            numeric yQuadSEPERATS1ETM1 = 0;
            numeric yQuadSEPERATS1ETM2 = 0;
            numeric yQuadSEPERATS1ETM3 = 0;
            numeric yQuadSEPERATS1ETM4 = 0;
            numeric yQuadSEPERATS1ETM5 = 0;
            numeric yQuadSEPERATS1ETM7 = 0;
    
            numeric xySEPERATS1ETM1 = 0;
            numeric xySEPERATS1ETM2 = 0;
            numeric xySEPERATS1ETM3 = 0;
            numeric xySEPERATS1ETM4 = 0;
            numeric xySEPERATS1ETM5 = 0;
            numeric xySEPERATS1ETM7 = 0;
    
            numeric xxAritQuadSEPERATS1ETM1 = 0;
            numeric xxAritQuadSEPERATS1ETM2 = 0;
            numeric xxAritQuadSEPERATS1ETM3 = 0;
            numeric xxAritQuadSEPERATS1ETM4 = 0;
            numeric xxAritQuadSEPERATS1ETM5 = 0;
            numeric xxAritQuadSEPERATS1ETM7 = 0;
    
            numeric yyAritQuadSEPERATS1ETM1 = 0;
            numeric yyAritQuadSEPERATS1ETM2 = 0;
            numeric yyAritQuadSEPERATS1ETM3 = 0;
            numeric yyAritQuadSEPERATS1ETM4 = 0;
            numeric yyAritQuadSEPERATS1ETM5 = 0;
            numeric yyAritQuadSEPERATS1ETM7 = 0;
    
            numeric qXYSEPERATS1ETM1 = 0;
            numeric qXYSEPERATS1ETM2 = 0;
            numeric qXYSEPERATS1ETM3 = 0;
            numeric qXYSEPERATS1ETM4 = 0;
            numeric qXYSEPERATS1ETM5 = 0;
            numeric qXYSEPERATS1ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1ETM1 = xSEPERATS1ETM1 + pifSEPERATS4S1TM1arrayRAND[m];
                xSEPERATS1ETM2 = xSEPERATS1ETM2 + pifSEPERATS4S1TM2arrayRAND[m];
                xSEPERATS1ETM3 = xSEPERATS1ETM3 + pifSEPERATS4S1TM3arrayRAND[m];
                xSEPERATS1ETM4 = xSEPERATS1ETM4 + pifSEPERATS4S1TM4arrayRAND[m];
                xSEPERATS1ETM5 = xSEPERATS1ETM5 + pifSEPERATS4S1TM5arrayRAND[m];
                xSEPERATS1ETM7 = xSEPERATS1ETM7 + pifSEPERATS4S1TM7arrayRAND[m];
    
                xQuadSEPERATS1ETM1 = (xQuadSEPERATS1ETM1 + (pifSEPERATS4S1TM1arrayRAND[m]^2));
                xQuadSEPERATS1ETM2 = (xQuadSEPERATS1ETM2 + (pifSEPERATS4S1TM2arrayRAND[m]^2));
                xQuadSEPERATS1ETM3 = (xQuadSEPERATS1ETM3 + (pifSEPERATS4S1TM3arrayRAND[m]^2));
                xQuadSEPERATS1ETM4 = (xQuadSEPERATS1ETM4 + (pifSEPERATS4S1TM4arrayRAND[m]^2));
                xQuadSEPERATS1ETM5 = (xQuadSEPERATS1ETM5 + (pifSEPERATS4S1TM5arrayRAND[m]^2));
                xQuadSEPERATS1ETM7 = (xQuadSEPERATS1ETM7 + (pifSEPERATS4S1TM7arrayRAND[m]^2));
    
                ySEPERATS1ETM1 = ySEPERATS1ETM1 + pifSEPERATS1slaveETM1arrayRAND[m];
                ySEPERATS1ETM2 = ySEPERATS1ETM2 + pifSEPERATS1slaveETM2arrayRAND[m];
                ySEPERATS1ETM3 = ySEPERATS1ETM3 + pifSEPERATS1slaveETM3arrayRAND[m];
                ySEPERATS1ETM4 = ySEPERATS1ETM4 + pifSEPERATS1slaveETM4arrayRAND[m];
                ySEPERATS1ETM5 = ySEPERATS1ETM5 + pifSEPERATS1slaveETM5arrayRAND[m];
                ySEPERATS1ETM7 = ySEPERATS1ETM7 + pifSEPERATS1slaveETM7arrayRAND[m];
                
                yQuadSEPERATS1ETM1 = (yQuadSEPERATS1ETM1 + (pifSEPERATS1slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS1ETM2 = (yQuadSEPERATS1ETM2 + (pifSEPERATS1slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS1ETM3 = (yQuadSEPERATS1ETM3 + (pifSEPERATS1slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS1ETM4 = (yQuadSEPERATS1ETM4 + (pifSEPERATS1slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS1ETM5 = (yQuadSEPERATS1ETM5 + (pifSEPERATS1slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS1ETM7 = (yQuadSEPERATS1ETM7 + (pifSEPERATS1slaveETM7arrayRAND[m]^2));
    
                xySEPERATS1ETM1 = (xySEPERATS1ETM1 + (pifSEPERATS4S1TM1arrayRAND[m] * pifSEPERATS1slaveETM1arrayRAND[m]));
                xySEPERATS1ETM2 = (xySEPERATS1ETM2 + (pifSEPERATS4S1TM2arrayRAND[m] * pifSEPERATS1slaveETM2arrayRAND[m]));
                xySEPERATS1ETM3 = (xySEPERATS1ETM3 + (pifSEPERATS4S1TM3arrayRAND[m] * pifSEPERATS1slaveETM3arrayRAND[m]));
                xySEPERATS1ETM4 = (xySEPERATS1ETM4 + (pifSEPERATS4S1TM4arrayRAND[m] * pifSEPERATS1slaveETM4arrayRAND[m]));
                xySEPERATS1ETM5 = (xySEPERATS1ETM5 + (pifSEPERATS4S1TM5arrayRAND[m] * pifSEPERATS1slaveETM5arrayRAND[m]));
                xySEPERATS1ETM7 = (xySEPERATS1ETM7 + (pifSEPERATS4S1TM7arrayRAND[m] * pifSEPERATS1slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS1ETM1 = xSEPERATS1ETM1 / minPifVAL;
            xAritSEPERATS1ETM2 = xSEPERATS1ETM2 / minPifVAL;
            xAritSEPERATS1ETM3 = xSEPERATS1ETM3 / minPifVAL;
            xAritSEPERATS1ETM4 = xSEPERATS1ETM4 / minPifVAL;
            xAritSEPERATS1ETM5 = xSEPERATS1ETM5 / minPifVAL;
            xAritSEPERATS1ETM7 = xSEPERATS1ETM7 / minPifVAL;
    
            yAritSEPERATS1ETM1 = ySEPERATS1ETM1 / minPifVAL;
            yAritSEPERATS1ETM2 = ySEPERATS1ETM2 / minPifVAL;
            yAritSEPERATS1ETM3 = ySEPERATS1ETM3 / minPifVAL;
            yAritSEPERATS1ETM4 = ySEPERATS1ETM4 / minPifVAL;
            yAritSEPERATS1ETM5 = ySEPERATS1ETM5 / minPifVAL;
            yAritSEPERATS1ETM7 = ySEPERATS1ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1ETM1 = (xxAritQuadSEPERATS1ETM1 + ((pifSEPERATS4S1TM1arrayRAND[n] - xAritSEPERATS1ETM1)^2));
                xxAritQuadSEPERATS1ETM2 = (xxAritQuadSEPERATS1ETM2 + ((pifSEPERATS4S1TM2arrayRAND[n] - xAritSEPERATS1ETM2)^2));
                xxAritQuadSEPERATS1ETM3 = (xxAritQuadSEPERATS1ETM3 + ((pifSEPERATS4S1TM3arrayRAND[n] - xAritSEPERATS1ETM3)^2));
                xxAritQuadSEPERATS1ETM4 = (xxAritQuadSEPERATS1ETM4 + ((pifSEPERATS4S1TM4arrayRAND[n] - xAritSEPERATS1ETM4)^2));
                xxAritQuadSEPERATS1ETM5 = (xxAritQuadSEPERATS1ETM5 + ((pifSEPERATS4S1TM5arrayRAND[n] - xAritSEPERATS1ETM5)^2));
                xxAritQuadSEPERATS1ETM7 = (xxAritQuadSEPERATS1ETM7 + ((pifSEPERATS4S1TM7arrayRAND[n] - xAritSEPERATS1ETM7)^2));
    
                yyAritQuadSEPERATS1ETM1 = (yyAritQuadSEPERATS1ETM1 + ((pifSEPERATS1slaveETM1arrayRAND[n] - yAritSEPERATS1ETM1)^2));
                yyAritQuadSEPERATS1ETM2 = (yyAritQuadSEPERATS1ETM2 + ((pifSEPERATS1slaveETM2arrayRAND[n] - yAritSEPERATS1ETM2)^2));
                yyAritQuadSEPERATS1ETM3 = (yyAritQuadSEPERATS1ETM3 + ((pifSEPERATS1slaveETM3arrayRAND[n] - yAritSEPERATS1ETM3)^2));
                yyAritQuadSEPERATS1ETM4 = (yyAritQuadSEPERATS1ETM4 + ((pifSEPERATS1slaveETM4arrayRAND[n] - yAritSEPERATS1ETM4)^2));
                yyAritQuadSEPERATS1ETM5 = (yyAritQuadSEPERATS1ETM5 + ((pifSEPERATS1slaveETM5arrayRAND[n] - yAritSEPERATS1ETM5)^2));
                yyAritQuadSEPERATS1ETM7 = (yyAritQuadSEPERATS1ETM7 + ((pifSEPERATS1slaveETM7arrayRAND[n] - yAritSEPERATS1ETM7)^2));
    
                qXYSEPERATS1ETM1 = (qXYSEPERATS1ETM1 + ((pifSEPERATS4S1TM1arrayRAND[n] - xAritSEPERATS1ETM1) * (pifSEPERATS1slaveETM1arrayRAND[n] - yAritSEPERATS1ETM1)));
                qXYSEPERATS1ETM2 = (qXYSEPERATS1ETM2 + ((pifSEPERATS4S1TM2arrayRAND[n] - xAritSEPERATS1ETM2) * (pifSEPERATS1slaveETM2arrayRAND[n] - yAritSEPERATS1ETM2)));
                qXYSEPERATS1ETM3 = (qXYSEPERATS1ETM3 + ((pifSEPERATS4S1TM3arrayRAND[n] - xAritSEPERATS1ETM3) * (pifSEPERATS1slaveETM3arrayRAND[n] - yAritSEPERATS1ETM3)));
                qXYSEPERATS1ETM4 = (qXYSEPERATS1ETM4 + ((pifSEPERATS4S1TM4arrayRAND[n] - xAritSEPERATS1ETM4) * (pifSEPERATS1slaveETM4arrayRAND[n] - yAritSEPERATS1ETM4)));
                qXYSEPERATS1ETM5 = (qXYSEPERATS1ETM5 + ((pifSEPERATS4S1TM5arrayRAND[n] - xAritSEPERATS1ETM5) * (pifSEPERATS1slaveETM5arrayRAND[n] - yAritSEPERATS1ETM5)));
                qXYSEPERATS1ETM7 = (qXYSEPERATS1ETM7 + ((pifSEPERATS4S1TM7arrayRAND[n] - xAritSEPERATS1ETM7) * (pifSEPERATS1slaveETM7arrayRAND[n] - yAritSEPERATS1ETM7)));
            }
        
            aSEPERATS1ETM1 = (((xQuadSEPERATS1ETM1 * ySEPERATS1ETM1) - (xSEPERATS1ETM1 * xySEPERATS1ETM1)) / ((minPifVAL * xQuadSEPERATS1ETM1) - (xSEPERATS1ETM1^2)));
            aSEPERATS1ETM2 = (((xQuadSEPERATS1ETM2 * ySEPERATS1ETM2) - (xSEPERATS1ETM2 * xySEPERATS1ETM2)) / ((minPifVAL * xQuadSEPERATS1ETM2) - (xSEPERATS1ETM2^2)));
            aSEPERATS1ETM3 = (((xQuadSEPERATS1ETM3 * ySEPERATS1ETM3) - (xSEPERATS1ETM3 * xySEPERATS1ETM3)) / ((minPifVAL * xQuadSEPERATS1ETM3) - (xSEPERATS1ETM3^2)));
            aSEPERATS1ETM4 = (((xQuadSEPERATS1ETM4 * ySEPERATS1ETM4) - (xSEPERATS1ETM4 * xySEPERATS1ETM4)) / ((minPifVAL * xQuadSEPERATS1ETM4) - (xSEPERATS1ETM4^2)));
            aSEPERATS1ETM5 = (((xQuadSEPERATS1ETM5 * ySEPERATS1ETM5) - (xSEPERATS1ETM5 * xySEPERATS1ETM5)) / ((minPifVAL * xQuadSEPERATS1ETM5) - (xSEPERATS1ETM5^2)));
            aSEPERATS1ETM7 = (((xQuadSEPERATS1ETM7 * ySEPERATS1ETM7) - (xSEPERATS1ETM7 * xySEPERATS1ETM7)) / ((minPifVAL * xQuadSEPERATS1ETM7) - (xSEPERATS1ETM7^2)));
            
            bSEPERATS1ETM1 = qXYSEPERATS1ETM1 / xxAritQuadSEPERATS1ETM1;
            bSEPERATS1ETM2 = qXYSEPERATS1ETM2 / xxAritQuadSEPERATS1ETM2;
            bSEPERATS1ETM3 = qXYSEPERATS1ETM3 / xxAritQuadSEPERATS1ETM3;
            bSEPERATS1ETM4 = qXYSEPERATS1ETM4 / xxAritQuadSEPERATS1ETM4;
            bSEPERATS1ETM5 = qXYSEPERATS1ETM5 / xxAritQuadSEPERATS1ETM5;
            bSEPERATS1ETM7 = qXYSEPERATS1ETM7 / xxAritQuadSEPERATS1ETM7;
    
            rSEPERATS1ETM1 = (qXYSEPERATS1ETM1 / ((xxAritQuadSEPERATS1ETM1 * yyAritQuadSEPERATS1ETM1)^0.5));
            rSEPERATS1ETM2 = (qXYSEPERATS1ETM2 / ((xxAritQuadSEPERATS1ETM2 * yyAritQuadSEPERATS1ETM2)^0.5));
            rSEPERATS1ETM3 = (qXYSEPERATS1ETM3 / ((xxAritQuadSEPERATS1ETM3 * yyAritQuadSEPERATS1ETM3)^0.5));
            rSEPERATS1ETM4 = (qXYSEPERATS1ETM4 / ((xxAritQuadSEPERATS1ETM4 * yyAritQuadSEPERATS1ETM4)^0.5));
            rSEPERATS1ETM5 = (qXYSEPERATS1ETM5 / ((xxAritQuadSEPERATS1ETM5 * yyAritQuadSEPERATS1ETM5)^0.5));
            rSEPERATS1ETM7 = (qXYSEPERATS1ETM7 / ((xxAritQuadSEPERATS1ETM7 * yyAritQuadSEPERATS1ETM7)^0.5));
    
            rQuadSEPERATS1ETM1 = ((rSEPERATS1ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1ETM2 = ((rSEPERATS1ETM2^2) * 100);
            rQuadSEPERATS1ETM3 = ((rSEPERATS1ETM3^2) * 100);
            rQuadSEPERATS1ETM4 = ((rSEPERATS1ETM4^2) * 100);
            rQuadSEPERATS1ETM5 = ((rSEPERATS1ETM5^2) * 100);
            rQuadSEPERATS1ETM7 = ((rSEPERATS1ETM7^2) * 100);
        
            syxSEPERATS1ETM1 = (((yyAritQuadSEPERATS1ETM1 - ((qXYSEPERATS1ETM1^2) / xxAritQuadSEPERATS1ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM2 = (((yyAritQuadSEPERATS1ETM2 - ((qXYSEPERATS1ETM2^2) / xxAritQuadSEPERATS1ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM3 = (((yyAritQuadSEPERATS1ETM3 - ((qXYSEPERATS1ETM3^2) / xxAritQuadSEPERATS1ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM4 = (((yyAritQuadSEPERATS1ETM4 - ((qXYSEPERATS1ETM4^2) / xxAritQuadSEPERATS1ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM5 = (((yyAritQuadSEPERATS1ETM5 - ((qXYSEPERATS1ETM5^2) / xxAritQuadSEPERATS1ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1ETM7 = (((yyAritQuadSEPERATS1ETM7 - ((qXYSEPERATS1ETM7^2) / xxAritQuadSEPERATS1ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1ETM1 = (((syxSEPERATS1ETM1^2) / xxAritQuadSEPERATS1ETM1)^0.5);
            bStandSEPERATS1ETM2 = (((syxSEPERATS1ETM2^2) / xxAritQuadSEPERATS1ETM2)^0.5);
            bStandSEPERATS1ETM3 = (((syxSEPERATS1ETM3^2) / xxAritQuadSEPERATS1ETM3)^0.5);
            bStandSEPERATS1ETM4 = (((syxSEPERATS1ETM4^2) / xxAritQuadSEPERATS1ETM4)^0.5);
            bStandSEPERATS1ETM5 = (((syxSEPERATS1ETM5^2) / xxAritQuadSEPERATS1ETM5)^0.5);
            bStandSEPERATS1ETM7 = (((syxSEPERATS1ETM7^2) / xxAritQuadSEPERATS1ETM7)^0.5);
    
            aStandSEPERATS1ETM1 = (bStandSEPERATS1ETM1 * ((xQuadSEPERATS1ETM1 / minPifVAL)^0.5));
            aStandSEPERATS1ETM2 = (bStandSEPERATS1ETM2 * ((xQuadSEPERATS1ETM2 / minPifVAL)^0.5));
            aStandSEPERATS1ETM3 = (bStandSEPERATS1ETM3 * ((xQuadSEPERATS1ETM3 / minPifVAL)^0.5));
            aStandSEPERATS1ETM4 = (bStandSEPERATS1ETM4 * ((xQuadSEPERATS1ETM4 / minPifVAL)^0.5));
            aStandSEPERATS1ETM5 = (bStandSEPERATS1ETM5 * ((xQuadSEPERATS1ETM5 / minPifVAL)^0.5));
            aStandSEPERATS1ETM7 = (bStandSEPERATS1ETM7 * ((xQuadSEPERATS1ETM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM1, bSEPERATS1ETM1, rSEPERATS1ETM1, rQuadSEPERATS1ETM1, aStandSEPERATS1ETM1, bStandSEPERATS1ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM2, bSEPERATS1ETM2, rSEPERATS1ETM2, rQuadSEPERATS1ETM2, aStandSEPERATS1ETM2, bStandSEPERATS1ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM3, bSEPERATS1ETM3, rSEPERATS1ETM3, rQuadSEPERATS1ETM3, aStandSEPERATS1ETM3, bStandSEPERATS1ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM4, bSEPERATS1ETM4, rSEPERATS1ETM4, rQuadSEPERATS1ETM4, aStandSEPERATS1ETM4, bStandSEPERATS1ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1ETM5, bSEPERATS1ETM5, rSEPERATS1ETM5, rQuadSEPERATS1ETM5, aStandSEPERATS1ETM5, bStandSEPERATS1ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS1ETM7, bSEPERATS1ETM7, rSEPERATS1ETM7, rQuadSEPERATS1ETM7, aStandSEPERATS1ETM7, bStandSEPERATS1ETM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS1slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS1slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS1slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS1slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS1slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS1slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS1slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT1ETM1[i,j] = (aSEPERATS1ETM1 + (bSEPERATS1ETM1 * REFS1ETM1[i,j]));
                    OUT1ETM2[i,j] = (aSEPERATS1ETM2 + (bSEPERATS1ETM2 * REFS1ETM2[i,j]));
                    OUT1ETM3[i,j] = (aSEPERATS1ETM3 + (bSEPERATS1ETM3 * REFS1ETM3[i,j]));
                    OUT1ETM4[i,j] = (aSEPERATS1ETM4 + (bSEPERATS1ETM4 * REFS1ETM4[i,j]));
                    OUT1ETM5[i,j] = (aSEPERATS1ETM5 + (bSEPERATS1ETM5 * REFS1ETM5[i,j]));
                    OUT1ETM7[i,j] = (aSEPERATS1ETM7 + (bSEPERATS1ETM7 * REFS1ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1ETM1);
        	CreatePyramid(OUT1ETM2);
        	CreatePyramid(OUT1ETM3);
        	CreatePyramid(OUT1ETM4);
        	CreatePyramid(OUT1ETM5);
        	CreatePyramid(OUT1ETM7);
        
        	CreateHistogram(OUT1ETM1);
        	CreateHistogram(OUT1ETM2);
        	CreateHistogram(OUT1ETM3);
        	CreateHistogram(OUT1ETM4);
        	CreateHistogram(OUT1ETM5);
        	CreateHistogram(OUT1ETM7);
            CloseRaster(REFS1ETM1);
            CloseRaster(REFS1ETM2);
            CloseRaster(REFS1ETM3);
            CloseRaster(REFS1ETM4);
            CloseRaster(REFS1ETM5);
            CloseRaster(REFS1ETM7);
    
            CloseRaster(OUT1ETM1);
            CloseRaster(OUT1ETM2);
            CloseRaster(OUT1ETM3);
            CloseRaster(OUT1ETM4);
            CloseRaster(OUT1ETM5);
            CloseRaster(OUT1ETM7);
            
        	printf("Scene 1 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors1 == 6 )
            {
            numeric xAritSEPERATS1TM1, xAritSEPERATS1TM2, xAritSEPERATS1TM3, xAritSEPERATS1TM4, xAritSEPERATS1TM5, xAritSEPERATS1TM7;
            numeric yAritSEPERATS1TM1, yAritSEPERATS1TM2, yAritSEPERATS1TM3, yAritSEPERATS1TM4, yAritSEPERATS1TM5, yAritSEPERATS1TM7;
    
            numeric aSEPERATS1TM1, aSEPERATS1TM2, aSEPERATS1TM3, aSEPERATS1TM4, aSEPERATS1TM5, aSEPERATS1TM7;
            numeric bSEPERATS1TM1, bSEPERATS1TM2, bSEPERATS1TM3, bSEPERATS1TM4, bSEPERATS1TM5, bSEPERATS1TM7;
            numeric rSEPERATS1TM1, rSEPERATS1TM2, rSEPERATS1TM3, rSEPERATS1TM4, rSEPERATS1TM5, rSEPERATS1TM7;
            numeric rQuadSEPERATS1TM1, rQuadSEPERATS1TM2, rQuadSEPERATS1TM3, rQuadSEPERATS1TM4, rQuadSEPERATS1TM5, rQuadSEPERATS1TM7;
            numeric syxSEPERATS1TM1, syxSEPERATS1TM2, syxSEPERATS1TM3, syxSEPERATS1TM4, syxSEPERATS1TM5, syxSEPERATS1TM7;
            numeric bStandSEPERATS1TM1, bStandSEPERATS1TM2, bStandSEPERATS1TM3, bStandSEPERATS1TM4, bStandSEPERATS1TM5, bStandSEPERATS1TM7;
            numeric aStandSEPERATS1TM1, aStandSEPERATS1TM2, aStandSEPERATS1TM3, aStandSEPERATS1TM4, aStandSEPERATS1TM5, aStandSEPERATS1TM7;
    
            numeric xSEPERATS1TM1 = 0;
            numeric xSEPERATS1TM2 = 0;
            numeric xSEPERATS1TM3 = 0;
            numeric xSEPERATS1TM4 = 0;
            numeric xSEPERATS1TM5 = 0;
            numeric xSEPERATS1TM7 = 0;
    
            numeric xQuadSEPERATS1TM1 = 0;
            numeric xQuadSEPERATS1TM2 = 0;
            numeric xQuadSEPERATS1TM3 = 0;
            numeric xQuadSEPERATS1TM4 = 0;
            numeric xQuadSEPERATS1TM5 = 0;
            numeric xQuadSEPERATS1TM7 = 0;
    
            numeric ySEPERATS1TM1 = 0;
            numeric ySEPERATS1TM2 = 0;
            numeric ySEPERATS1TM3 = 0;
            numeric ySEPERATS1TM4 = 0;
            numeric ySEPERATS1TM5 = 0;
            numeric ySEPERATS1TM7 = 0;
    
            numeric yQuadSEPERATS1TM1 = 0;
            numeric yQuadSEPERATS1TM2 = 0;
            numeric yQuadSEPERATS1TM3 = 0;
            numeric yQuadSEPERATS1TM4 = 0;
            numeric yQuadSEPERATS1TM5 = 0;
            numeric yQuadSEPERATS1TM7 = 0;
    
            numeric xySEPERATS1TM1 = 0;
            numeric xySEPERATS1TM2 = 0;
            numeric xySEPERATS1TM3 = 0;
            numeric xySEPERATS1TM4 = 0;
            numeric xySEPERATS1TM5 = 0;
            numeric xySEPERATS1TM7 = 0;
    
            numeric xxAritQuadSEPERATS1TM1 = 0;
            numeric xxAritQuadSEPERATS1TM2 = 0;
            numeric xxAritQuadSEPERATS1TM3 = 0;
            numeric xxAritQuadSEPERATS1TM4 = 0;
            numeric xxAritQuadSEPERATS1TM5 = 0;
            numeric xxAritQuadSEPERATS1TM7 = 0;
    
            numeric yyAritQuadSEPERATS1TM1 = 0;
            numeric yyAritQuadSEPERATS1TM2 = 0;
            numeric yyAritQuadSEPERATS1TM3 = 0;
            numeric yyAritQuadSEPERATS1TM4 = 0;
            numeric yyAritQuadSEPERATS1TM5 = 0;
            numeric yyAritQuadSEPERATS1TM7 = 0;
    
            numeric qXYSEPERATS1TM1 = 0;
            numeric qXYSEPERATS1TM2 = 0;
            numeric qXYSEPERATS1TM3 = 0;
            numeric qXYSEPERATS1TM4 = 0;
            numeric qXYSEPERATS1TM5 = 0;
            numeric qXYSEPERATS1TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1TM1 = xSEPERATS1TM1 + pifSEPERATS4S1TM1arrayRAND[m];
                xSEPERATS1TM2 = xSEPERATS1TM2 + pifSEPERATS4S1TM2arrayRAND[m];
                xSEPERATS1TM3 = xSEPERATS1TM3 + pifSEPERATS4S1TM3arrayRAND[m];
                xSEPERATS1TM4 = xSEPERATS1TM4 + pifSEPERATS4S1TM4arrayRAND[m];
                xSEPERATS1TM5 = xSEPERATS1TM5 + pifSEPERATS4S1TM5arrayRAND[m];
                xSEPERATS1TM7 = xSEPERATS1TM7 + pifSEPERATS4S1TM7arrayRAND[m];
    
                xQuadSEPERATS1TM1 = (xQuadSEPERATS1TM1 + (pifSEPERATS4S1TM1arrayRAND[m]^2));
                xQuadSEPERATS1TM2 = (xQuadSEPERATS1TM2 + (pifSEPERATS4S1TM2arrayRAND[m]^2));
                xQuadSEPERATS1TM3 = (xQuadSEPERATS1TM3 + (pifSEPERATS4S1TM3arrayRAND[m]^2));
                xQuadSEPERATS1TM4 = (xQuadSEPERATS1TM4 + (pifSEPERATS4S1TM4arrayRAND[m]^2));
                xQuadSEPERATS1TM5 = (xQuadSEPERATS1TM5 + (pifSEPERATS4S1TM5arrayRAND[m]^2));
                xQuadSEPERATS1TM7 = (xQuadSEPERATS1TM7 + (pifSEPERATS4S1TM7arrayRAND[m]^2));
    
                ySEPERATS1TM1 = ySEPERATS1TM1 + pifSEPERATS1slaveTM1arrayRAND[m];
                ySEPERATS1TM2 = ySEPERATS1TM2 + pifSEPERATS1slaveTM2arrayRAND[m];
                ySEPERATS1TM3 = ySEPERATS1TM3 + pifSEPERATS1slaveTM3arrayRAND[m];
                ySEPERATS1TM4 = ySEPERATS1TM4 + pifSEPERATS1slaveTM4arrayRAND[m];
                ySEPERATS1TM5 = ySEPERATS1TM5 + pifSEPERATS1slaveTM5arrayRAND[m];
                ySEPERATS1TM7 = ySEPERATS1TM7 + pifSEPERATS1slaveTM7arrayRAND[m];
                
                yQuadSEPERATS1TM1 = (yQuadSEPERATS1TM1 + (pifSEPERATS1slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS1TM2 = (yQuadSEPERATS1TM2 + (pifSEPERATS1slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS1TM3 = (yQuadSEPERATS1TM3 + (pifSEPERATS1slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS1TM4 = (yQuadSEPERATS1TM4 + (pifSEPERATS1slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS1TM5 = (yQuadSEPERATS1TM5 + (pifSEPERATS1slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS1TM7 = (yQuadSEPERATS1TM7 + (pifSEPERATS1slaveTM7arrayRAND[m]^2));
    
                xySEPERATS1TM1 = (xySEPERATS1TM1 + (pifSEPERATS4S1TM1arrayRAND[m] * pifSEPERATS1slaveTM1arrayRAND[m]));
                xySEPERATS1TM2 = (xySEPERATS1TM2 + (pifSEPERATS4S1TM2arrayRAND[m] * pifSEPERATS1slaveTM2arrayRAND[m]));
                xySEPERATS1TM3 = (xySEPERATS1TM3 + (pifSEPERATS4S1TM3arrayRAND[m] * pifSEPERATS1slaveTM3arrayRAND[m]));
                xySEPERATS1TM4 = (xySEPERATS1TM4 + (pifSEPERATS4S1TM4arrayRAND[m] * pifSEPERATS1slaveTM4arrayRAND[m]));
                xySEPERATS1TM5 = (xySEPERATS1TM5 + (pifSEPERATS4S1TM5arrayRAND[m] * pifSEPERATS1slaveTM5arrayRAND[m]));
                xySEPERATS1TM7 = (xySEPERATS1TM7 + (pifSEPERATS4S1TM7arrayRAND[m] * pifSEPERATS1slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS1TM1 = xSEPERATS1TM1 / minPifVAL;
            xAritSEPERATS1TM2 = xSEPERATS1TM2 / minPifVAL;
            xAritSEPERATS1TM3 = xSEPERATS1TM3 / minPifVAL;
            xAritSEPERATS1TM4 = xSEPERATS1TM4 / minPifVAL;
            xAritSEPERATS1TM5 = xSEPERATS1TM5 / minPifVAL;
            xAritSEPERATS1TM7 = xSEPERATS1TM7 / minPifVAL;
    
            yAritSEPERATS1TM1 = ySEPERATS1TM1 / minPifVAL;
            yAritSEPERATS1TM2 = ySEPERATS1TM2 / minPifVAL;
            yAritSEPERATS1TM3 = ySEPERATS1TM3 / minPifVAL;
            yAritSEPERATS1TM4 = ySEPERATS1TM4 / minPifVAL;
            yAritSEPERATS1TM5 = ySEPERATS1TM5 / minPifVAL;
            yAritSEPERATS1TM7 = ySEPERATS1TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1TM1 = (xxAritQuadSEPERATS1TM1 + ((pifSEPERATS4S1TM1arrayRAND[n] - xAritSEPERATS1TM1)^2));
                xxAritQuadSEPERATS1TM2 = (xxAritQuadSEPERATS1TM2 + ((pifSEPERATS4S1TM2arrayRAND[n] - xAritSEPERATS1TM2)^2));
                xxAritQuadSEPERATS1TM3 = (xxAritQuadSEPERATS1TM3 + ((pifSEPERATS4S1TM3arrayRAND[n] - xAritSEPERATS1TM3)^2));
                xxAritQuadSEPERATS1TM4 = (xxAritQuadSEPERATS1TM4 + ((pifSEPERATS4S1TM4arrayRAND[n] - xAritSEPERATS1TM4)^2));
                xxAritQuadSEPERATS1TM5 = (xxAritQuadSEPERATS1TM5 + ((pifSEPERATS4S1TM5arrayRAND[n] - xAritSEPERATS1TM5)^2));
                xxAritQuadSEPERATS1TM7 = (xxAritQuadSEPERATS1TM7 + ((pifSEPERATS4S1TM7arrayRAND[n] - xAritSEPERATS1TM7)^2));
    
                yyAritQuadSEPERATS1TM1 = (yyAritQuadSEPERATS1TM1 + ((pifSEPERATS1slaveTM1arrayRAND[n] - yAritSEPERATS1TM1)^2));
                yyAritQuadSEPERATS1TM2 = (yyAritQuadSEPERATS1TM2 + ((pifSEPERATS1slaveTM2arrayRAND[n] - yAritSEPERATS1TM2)^2));
                yyAritQuadSEPERATS1TM3 = (yyAritQuadSEPERATS1TM3 + ((pifSEPERATS1slaveTM3arrayRAND[n] - yAritSEPERATS1TM3)^2));
                yyAritQuadSEPERATS1TM4 = (yyAritQuadSEPERATS1TM4 + ((pifSEPERATS1slaveTM4arrayRAND[n] - yAritSEPERATS1TM4)^2));
                yyAritQuadSEPERATS1TM5 = (yyAritQuadSEPERATS1TM5 + ((pifSEPERATS1slaveTM5arrayRAND[n] - yAritSEPERATS1TM5)^2));
                yyAritQuadSEPERATS1TM7 = (yyAritQuadSEPERATS1TM7 + ((pifSEPERATS1slaveTM7arrayRAND[n] - yAritSEPERATS1TM7)^2));
    
                qXYSEPERATS1TM1 = (qXYSEPERATS1TM1 + ((pifSEPERATS4S1TM1arrayRAND[n] - xAritSEPERATS1TM1) * (pifSEPERATS1slaveTM1arrayRAND[n] - yAritSEPERATS1TM1)));
                qXYSEPERATS1TM2 = (qXYSEPERATS1TM2 + ((pifSEPERATS4S1TM2arrayRAND[n] - xAritSEPERATS1TM2) * (pifSEPERATS1slaveTM2arrayRAND[n] - yAritSEPERATS1TM2)));
                qXYSEPERATS1TM3 = (qXYSEPERATS1TM3 + ((pifSEPERATS4S1TM3arrayRAND[n] - xAritSEPERATS1TM3) * (pifSEPERATS1slaveTM3arrayRAND[n] - yAritSEPERATS1TM3)));
                qXYSEPERATS1TM4 = (qXYSEPERATS1TM4 + ((pifSEPERATS4S1TM4arrayRAND[n] - xAritSEPERATS1TM4) * (pifSEPERATS1slaveTM4arrayRAND[n] - yAritSEPERATS1TM4)));
                qXYSEPERATS1TM5 = (qXYSEPERATS1TM5 + ((pifSEPERATS4S1TM5arrayRAND[n] - xAritSEPERATS1TM5) * (pifSEPERATS1slaveTM5arrayRAND[n] - yAritSEPERATS1TM5)));
                qXYSEPERATS1TM7 = (qXYSEPERATS1TM7 + ((pifSEPERATS4S1TM7arrayRAND[n] - xAritSEPERATS1TM7) * (pifSEPERATS1slaveTM7arrayRAND[n] - yAritSEPERATS1TM7)));
            }
        
            aSEPERATS1TM1 = (((xQuadSEPERATS1TM1 * ySEPERATS1TM1) - (xSEPERATS1TM1 * xySEPERATS1TM1)) / ((minPifVAL * xQuadSEPERATS1TM1) - (xSEPERATS1TM1^2)));
            aSEPERATS1TM2 = (((xQuadSEPERATS1TM2 * ySEPERATS1TM2) - (xSEPERATS1TM2 * xySEPERATS1TM2)) / ((minPifVAL * xQuadSEPERATS1TM2) - (xSEPERATS1TM2^2)));
            aSEPERATS1TM3 = (((xQuadSEPERATS1TM3 * ySEPERATS1TM3) - (xSEPERATS1TM3 * xySEPERATS1TM3)) / ((minPifVAL * xQuadSEPERATS1TM3) - (xSEPERATS1TM3^2)));
            aSEPERATS1TM4 = (((xQuadSEPERATS1TM4 * ySEPERATS1TM4) - (xSEPERATS1TM4 * xySEPERATS1TM4)) / ((minPifVAL * xQuadSEPERATS1TM4) - (xSEPERATS1TM4^2)));
            aSEPERATS1TM5 = (((xQuadSEPERATS1TM5 * ySEPERATS1TM5) - (xSEPERATS1TM5 * xySEPERATS1TM5)) / ((minPifVAL * xQuadSEPERATS1TM5) - (xSEPERATS1TM5^2)));
            aSEPERATS1TM7 = (((xQuadSEPERATS1TM7 * ySEPERATS1TM7) - (xSEPERATS1TM7 * xySEPERATS1TM7)) / ((minPifVAL * xQuadSEPERATS1TM7) - (xSEPERATS1TM7^2)));
            
            bSEPERATS1TM1 = qXYSEPERATS1TM1 / xxAritQuadSEPERATS1TM1;
            bSEPERATS1TM2 = qXYSEPERATS1TM2 / xxAritQuadSEPERATS1TM2;
            bSEPERATS1TM3 = qXYSEPERATS1TM3 / xxAritQuadSEPERATS1TM3;
            bSEPERATS1TM4 = qXYSEPERATS1TM4 / xxAritQuadSEPERATS1TM4;
            bSEPERATS1TM5 = qXYSEPERATS1TM5 / xxAritQuadSEPERATS1TM5;
            bSEPERATS1TM7 = qXYSEPERATS1TM7 / xxAritQuadSEPERATS1TM7;
    
            rSEPERATS1TM1 = (qXYSEPERATS1TM1 / ((xxAritQuadSEPERATS1TM1 * yyAritQuadSEPERATS1TM1)^0.5));
            rSEPERATS1TM2 = (qXYSEPERATS1TM2 / ((xxAritQuadSEPERATS1TM2 * yyAritQuadSEPERATS1TM2)^0.5));
            rSEPERATS1TM3 = (qXYSEPERATS1TM3 / ((xxAritQuadSEPERATS1TM3 * yyAritQuadSEPERATS1TM3)^0.5));
            rSEPERATS1TM4 = (qXYSEPERATS1TM4 / ((xxAritQuadSEPERATS1TM4 * yyAritQuadSEPERATS1TM4)^0.5));
            rSEPERATS1TM5 = (qXYSEPERATS1TM5 / ((xxAritQuadSEPERATS1TM5 * yyAritQuadSEPERATS1TM5)^0.5));
            rSEPERATS1TM7 = (qXYSEPERATS1TM7 / ((xxAritQuadSEPERATS1TM7 * yyAritQuadSEPERATS1TM7)^0.5));
    
            rQuadSEPERATS1TM1 = ((rSEPERATS1TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1TM2 = ((rSEPERATS1TM2^2) * 100);
            rQuadSEPERATS1TM3 = ((rSEPERATS1TM3^2) * 100);
            rQuadSEPERATS1TM4 = ((rSEPERATS1TM4^2) * 100);
            rQuadSEPERATS1TM5 = ((rSEPERATS1TM5^2) * 100);
            rQuadSEPERATS1TM7 = ((rSEPERATS1TM7^2) * 100);
        
            syxSEPERATS1TM1 = (((yyAritQuadSEPERATS1TM1 - ((qXYSEPERATS1TM1^2) / xxAritQuadSEPERATS1TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM2 = (((yyAritQuadSEPERATS1TM2 - ((qXYSEPERATS1TM2^2) / xxAritQuadSEPERATS1TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM3 = (((yyAritQuadSEPERATS1TM3 - ((qXYSEPERATS1TM3^2) / xxAritQuadSEPERATS1TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM4 = (((yyAritQuadSEPERATS1TM4 - ((qXYSEPERATS1TM4^2) / xxAritQuadSEPERATS1TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM5 = (((yyAritQuadSEPERATS1TM5 - ((qXYSEPERATS1TM5^2) / xxAritQuadSEPERATS1TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1TM7 = (((yyAritQuadSEPERATS1TM7 - ((qXYSEPERATS1TM7^2) / xxAritQuadSEPERATS1TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1TM1 = (((syxSEPERATS1TM1^2) / xxAritQuadSEPERATS1TM1)^0.5);
            bStandSEPERATS1TM2 = (((syxSEPERATS1TM2^2) / xxAritQuadSEPERATS1TM2)^0.5);
            bStandSEPERATS1TM3 = (((syxSEPERATS1TM3^2) / xxAritQuadSEPERATS1TM3)^0.5);
            bStandSEPERATS1TM4 = (((syxSEPERATS1TM4^2) / xxAritQuadSEPERATS1TM4)^0.5);
            bStandSEPERATS1TM5 = (((syxSEPERATS1TM5^2) / xxAritQuadSEPERATS1TM5)^0.5);
            bStandSEPERATS1TM7 = (((syxSEPERATS1TM7^2) / xxAritQuadSEPERATS1TM7)^0.5);
    
            aStandSEPERATS1TM1 = (bStandSEPERATS1TM1 * ((xQuadSEPERATS1TM1 / minPifVAL)^0.5));
            aStandSEPERATS1TM2 = (bStandSEPERATS1TM2 * ((xQuadSEPERATS1TM2 / minPifVAL)^0.5));
            aStandSEPERATS1TM3 = (bStandSEPERATS1TM3 * ((xQuadSEPERATS1TM3 / minPifVAL)^0.5));
            aStandSEPERATS1TM4 = (bStandSEPERATS1TM4 * ((xQuadSEPERATS1TM4 / minPifVAL)^0.5));
            aStandSEPERATS1TM5 = (bStandSEPERATS1TM5 * ((xQuadSEPERATS1TM5 / minPifVAL)^0.5));
            aStandSEPERATS1TM7 = (bStandSEPERATS1TM7 * ((xQuadSEPERATS1TM7 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM1, bSEPERATS1TM1, rSEPERATS1TM1, rQuadSEPERATS1TM1, aStandSEPERATS1TM1, bStandSEPERATS1TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM2, bSEPERATS1TM2, rSEPERATS1TM2, rQuadSEPERATS1TM2, aStandSEPERATS1TM2, bStandSEPERATS1TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM3, bSEPERATS1TM3, rSEPERATS1TM3, rQuadSEPERATS1TM3, aStandSEPERATS1TM3, bStandSEPERATS1TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM4, bSEPERATS1TM4, rSEPERATS1TM4, rQuadSEPERATS1TM4, aStandSEPERATS1TM4, bStandSEPERATS1TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1TM5, bSEPERATS1TM5, rSEPERATS1TM5, rQuadSEPERATS1TM5, aStandSEPERATS1TM5, bStandSEPERATS1TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS1TM7, bSEPERATS1TM7, rSEPERATS1TM7, rQuadSEPERATS1TM7, aStandSEPERATS1TM7, bStandSEPERATS1TM7);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS1slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS1slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS1slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS1slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS1slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS1slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS1slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT1TM1[i,j] = (aSEPERATS1TM1 + (bSEPERATS1TM1 * REFS1TM1[i,j]));
                    OUT1TM2[i,j] = (aSEPERATS1TM2 + (bSEPERATS1TM2 * REFS1TM2[i,j]));
                    OUT1TM3[i,j] = (aSEPERATS1TM3 + (bSEPERATS1TM3 * REFS1TM3[i,j]));
                    OUT1TM4[i,j] = (aSEPERATS1TM4 + (bSEPERATS1TM4 * REFS1TM4[i,j]));
                    OUT1TM5[i,j] = (aSEPERATS1TM5 + (bSEPERATS1TM5 * REFS1TM5[i,j]));
                    OUT1TM7[i,j] = (aSEPERATS1TM7 + (bSEPERATS1TM7 * REFS1TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT1TM1);
        	CreatePyramid(OUT1TM2);
        	CreatePyramid(OUT1TM3);
        	CreatePyramid(OUT1TM4);
        	CreatePyramid(OUT1TM5);
        	CreatePyramid(OUT1TM7);
        
        	CreateHistogram(OUT1TM1);
        	CreateHistogram(OUT1TM2);
        	CreateHistogram(OUT1TM3);
        	CreateHistogram(OUT1TM4);
        	CreateHistogram(OUT1TM5);
        	CreateHistogram(OUT1TM7);
            CloseRaster(REFS1TM1);
            CloseRaster(REFS1TM2);
            CloseRaster(REFS1TM3);
            CloseRaster(REFS1TM4);
            CloseRaster(REFS1TM5);
            CloseRaster(REFS1TM7);
    
            CloseRaster(OUT1TM1);
            CloseRaster(OUT1TM2);
            CloseRaster(OUT1TM3);
            CloseRaster(OUT1TM4);
            CloseRaster(OUT1TM5);
            CloseRaster(OUT1TM7);
        
        	printf("Scene 1 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS1MSS1, xAritSEPERATS1MSS2, xAritSEPERATS1MSS4;
            numeric yAritSEPERATS1MSS1, yAritSEPERATS1MSS2, yAritSEPERATS1MSS4;
    
            numeric aSEPERATS1MSS1, aSEPERATS1MSS2, aSEPERATS1MSS4;
            numeric bSEPERATS1MSS1, bSEPERATS1MSS2, bSEPERATS1MSS4;
            numeric rSEPERATS1MSS1, rSEPERATS1MSS2, rSEPERATS1MSS4;
            numeric rQuadSEPERATS1MSS1, rQuadSEPERATS1MSS2, rQuadSEPERATS1MSS4;
            numeric syxSEPERATS1MSS1, syxSEPERATS1MSS2, syxSEPERATS1MSS4;
            numeric bStandSEPERATS1MSS1, bStandSEPERATS1MSS2, bStandSEPERATS1MSS4;
            numeric aStandSEPERATS1MSS1, aStandSEPERATS1MSS2, aStandSEPERATS1MSS4;
    
            numeric xSEPERATS1MSS1 = 0;
            numeric xSEPERATS1MSS2 = 0;
            numeric xSEPERATS1MSS4 = 0;
    
            numeric xQuadSEPERATS1MSS1 = 0;
            numeric xQuadSEPERATS1MSS2 = 0;
            numeric xQuadSEPERATS1MSS4 = 0;
    
            numeric ySEPERATS1MSS1 = 0;
            numeric ySEPERATS1MSS2 = 0;
            numeric ySEPERATS1MSS4 = 0;
    
            numeric yQuadSEPERATS1MSS1 = 0;
            numeric yQuadSEPERATS1MSS2 = 0;
            numeric yQuadSEPERATS1MSS4 = 0;
    
            numeric xySEPERATS1MSS1 = 0;
            numeric xySEPERATS1MSS2 = 0;
            numeric xySEPERATS1MSS4 = 0;
    
            numeric xxAritQuadSEPERATS1MSS1 = 0;
            numeric xxAritQuadSEPERATS1MSS2 = 0;
            numeric xxAritQuadSEPERATS1MSS4 = 0;
    
            numeric yyAritQuadSEPERATS1MSS1 = 0;
            numeric yyAritQuadSEPERATS1MSS2 = 0;
            numeric yyAritQuadSEPERATS1MSS4 = 0;
    
            numeric qXYSEPERATS1MSS1 = 0;
            numeric qXYSEPERATS1MSS2 = 0;
            numeric qXYSEPERATS1MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1MSS1 = xSEPERATS1MSS1 + pifSEPERATS4S1TM2arrayRAND[m];
                xSEPERATS1MSS2 = xSEPERATS1MSS2 + pifSEPERATS4S1TM3arrayRAND[m];
                xSEPERATS1MSS4 = xSEPERATS1MSS4 + pifSEPERATS4S1TM4arrayRAND[m];
    
                xQuadSEPERATS1MSS1 = (xQuadSEPERATS1MSS1 + (pifSEPERATS4S1TM2arrayRAND[m]^2));
                xQuadSEPERATS1MSS2 = (xQuadSEPERATS1MSS2 + (pifSEPERATS4S1TM3arrayRAND[m]^2));
                xQuadSEPERATS1MSS4 = (xQuadSEPERATS1MSS4 + (pifSEPERATS4S1TM4arrayRAND[m]^2));
    
                ySEPERATS1MSS1 = ySEPERATS1MSS1 + pifSEPERATS1slaveMSS1arrayRAND[m];
                ySEPERATS1MSS2 = ySEPERATS1MSS2 + pifSEPERATS1slaveMSS2arrayRAND[m];
                ySEPERATS1MSS4 = ySEPERATS1MSS4 + pifSEPERATS1slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS1MSS1 = (yQuadSEPERATS1MSS1 + (pifSEPERATS1slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS1MSS2 = (yQuadSEPERATS1MSS2 + (pifSEPERATS1slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS1MSS4 = (yQuadSEPERATS1MSS4 + (pifSEPERATS1slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS1MSS1 = (xySEPERATS1MSS1 + (pifSEPERATS4S1TM2arrayRAND[m] * pifSEPERATS1slaveMSS1arrayRAND[m]));
                xySEPERATS1MSS2 = (xySEPERATS1MSS2 + (pifSEPERATS4S1TM3arrayRAND[m] * pifSEPERATS1slaveMSS2arrayRAND[m]));
                xySEPERATS1MSS4 = (xySEPERATS1MSS4 + (pifSEPERATS4S1TM4arrayRAND[m] * pifSEPERATS1slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS1MSS1 = xSEPERATS1MSS1 / minPifVAL;
            xAritSEPERATS1MSS2 = xSEPERATS1MSS2 / minPifVAL;
            xAritSEPERATS1MSS4 = xSEPERATS1MSS4 / minPifVAL;
    
            yAritSEPERATS1MSS1 = ySEPERATS1MSS1 / minPifVAL;
            yAritSEPERATS1MSS2 = ySEPERATS1MSS2 / minPifVAL;
            yAritSEPERATS1MSS4 = ySEPERATS1MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1MSS1 = (xxAritQuadSEPERATS1MSS1 + ((pifSEPERATS4S1TM2arrayRAND[n] - xAritSEPERATS1MSS1)^2));
                xxAritQuadSEPERATS1MSS2 = (xxAritQuadSEPERATS1MSS2 + ((pifSEPERATS4S1TM3arrayRAND[n] - xAritSEPERATS1MSS2)^2));
                xxAritQuadSEPERATS1MSS4 = (xxAritQuadSEPERATS1MSS4 + ((pifSEPERATS4S1TM4arrayRAND[n] - xAritSEPERATS1MSS4)^2));
    
                yyAritQuadSEPERATS1MSS1 = (yyAritQuadSEPERATS1MSS1 + ((pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)^2));
                yyAritQuadSEPERATS1MSS2 = (yyAritQuadSEPERATS1MSS2 + ((pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)^2));
                yyAritQuadSEPERATS1MSS4 = (yyAritQuadSEPERATS1MSS4 + ((pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)^2));
    
                qXYSEPERATS1MSS1 = (qXYSEPERATS1MSS1 + ((pifSEPERATS4S1TM2arrayRAND[n] - xAritSEPERATS1MSS1) * (pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)));
                qXYSEPERATS1MSS2 = (qXYSEPERATS1MSS2 + ((pifSEPERATS4S1TM3arrayRAND[n] - xAritSEPERATS1MSS2) * (pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)));
                qXYSEPERATS1MSS4 = (qXYSEPERATS1MSS4 + ((pifSEPERATS4S1TM4arrayRAND[n] - xAritSEPERATS1MSS4) * (pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)));
            }
        
            aSEPERATS1MSS1 = (((xQuadSEPERATS1MSS1 * ySEPERATS1MSS1) - (xSEPERATS1MSS1 * xySEPERATS1MSS1)) / ((minPifVAL * xQuadSEPERATS1MSS1) - (xSEPERATS1MSS1^2)));
            aSEPERATS1MSS2 = (((xQuadSEPERATS1MSS2 * ySEPERATS1MSS2) - (xSEPERATS1MSS2 * xySEPERATS1MSS2)) / ((minPifVAL * xQuadSEPERATS1MSS2) - (xSEPERATS1MSS2^2)));
            aSEPERATS1MSS4 = (((xQuadSEPERATS1MSS4 * ySEPERATS1MSS4) - (xSEPERATS1MSS4 * xySEPERATS1MSS4)) / ((minPifVAL * xQuadSEPERATS1MSS4) - (xSEPERATS1MSS4^2)));
            
            bSEPERATS1MSS1 = qXYSEPERATS1MSS1 / xxAritQuadSEPERATS1MSS1;
            bSEPERATS1MSS2 = qXYSEPERATS1MSS2 / xxAritQuadSEPERATS1MSS2;
            bSEPERATS1MSS4 = qXYSEPERATS1MSS4 / xxAritQuadSEPERATS1MSS4;
    
            rSEPERATS1MSS1 = (qXYSEPERATS1MSS1 / ((xxAritQuadSEPERATS1MSS1 * yyAritQuadSEPERATS1MSS1)^0.5));
            rSEPERATS1MSS2 = (qXYSEPERATS1MSS2 / ((xxAritQuadSEPERATS1MSS2 * yyAritQuadSEPERATS1MSS2)^0.5));
            rSEPERATS1MSS4 = (qXYSEPERATS1MSS4 / ((xxAritQuadSEPERATS1MSS4 * yyAritQuadSEPERATS1MSS4)^0.5));
    
            rQuadSEPERATS1MSS1 = ((rSEPERATS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1MSS2 = ((rSEPERATS1MSS2^2) * 100);
            rQuadSEPERATS1MSS4 = ((rSEPERATS1MSS4^2) * 100);
        
            syxSEPERATS1MSS1 = (((yyAritQuadSEPERATS1MSS1 - ((qXYSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS2 = (((yyAritQuadSEPERATS1MSS2 - ((qXYSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS4 = (((yyAritQuadSEPERATS1MSS4 - ((qXYSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1MSS1 = (((syxSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)^0.5);
            bStandSEPERATS1MSS2 = (((syxSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)^0.5);
            bStandSEPERATS1MSS4 = (((syxSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)^0.5);
    
            aStandSEPERATS1MSS1 = (bStandSEPERATS1MSS1 * ((xQuadSEPERATS1MSS1 / minPifVAL)^0.5));
            aStandSEPERATS1MSS2 = (bStandSEPERATS1MSS2 * ((xQuadSEPERATS1MSS2 / minPifVAL)^0.5));
            aStandSEPERATS1MSS4 = (bStandSEPERATS1MSS4 * ((xQuadSEPERATS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS1, bSEPERATS1MSS1, rSEPERATS1MSS1, rQuadSEPERATS1MSS1, aStandSEPERATS1MSS1, bStandSEPERATS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS2, bSEPERATS1MSS2, rSEPERATS1MSS2, rQuadSEPERATS1MSS2, aStandSEPERATS1MSS2, bStandSEPERATS1MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS4, bSEPERATS1MSS4, rSEPERATS1MSS4, rQuadSEPERATS1MSS4, aStandSEPERATS1MSS4, bStandSEPERATS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS1slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS1slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS1slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aSEPERATS1MSS1 + (bSEPERATS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aSEPERATS1MSS2 + (bSEPERATS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = REFS1MSS3[i,j];
                    OUT1MSS4[i,j] = (aSEPERATS1MSS4 + (bSEPERATS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT1MSS1);
            CreatePyramid(OUT1MSS2);
            CreatePyramid(OUT1MSS3);
            CreatePyramid(OUT1MSS4);
        
            CreateHistogram(OUT1MSS1);
            CreateHistogram(OUT1MSS2);
            CreateHistogram(OUT1MSS3);
            CreateHistogram(OUT1MSS4);
            
            CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors2 == 7 )
            {
            numeric xAritSEPERATS2ETM1, xAritSEPERATS2ETM2, xAritSEPERATS2ETM3, xAritSEPERATS2ETM4, xAritSEPERATS2ETM5, xAritSEPERATS2ETM7;
            numeric yAritSEPERATS2ETM1, yAritSEPERATS2ETM2, yAritSEPERATS2ETM3, yAritSEPERATS2ETM4, yAritSEPERATS2ETM5, yAritSEPERATS2ETM7;
    
            numeric aSEPERATS2ETM1, aSEPERATS2ETM2, aSEPERATS2ETM3, aSEPERATS2ETM4, aSEPERATS2ETM5, aSEPERATS2ETM7;
            numeric bSEPERATS2ETM1, bSEPERATS2ETM2, bSEPERATS2ETM3, bSEPERATS2ETM4, bSEPERATS2ETM5, bSEPERATS2ETM7;
            numeric rSEPERATS2ETM1, rSEPERATS2ETM2, rSEPERATS2ETM3, rSEPERATS2ETM4, rSEPERATS2ETM5, rSEPERATS2ETM7;
            numeric rQuadSEPERATS2ETM1, rQuadSEPERATS2ETM2, rQuadSEPERATS2ETM3, rQuadSEPERATS2ETM4, rQuadSEPERATS2ETM5, rQuadSEPERATS2ETM7;
            numeric syxSEPERATS2ETM1, syxSEPERATS2ETM2, syxSEPERATS2ETM3, syxSEPERATS2ETM4, syxSEPERATS2ETM5, syxSEPERATS2ETM7;
            numeric bStandSEPERATS2ETM1, bStandSEPERATS2ETM2, bStandSEPERATS2ETM3, bStandSEPERATS2ETM4, bStandSEPERATS2ETM5, bStandSEPERATS2ETM7;
            numeric aStandSEPERATS2ETM1, aStandSEPERATS2ETM2, aStandSEPERATS2ETM3, aStandSEPERATS2ETM4, aStandSEPERATS2ETM5, aStandSEPERATS2ETM7;
    
            numeric xSEPERATS2ETM1 = 0;
            numeric xSEPERATS2ETM2 = 0;
            numeric xSEPERATS2ETM3 = 0;
            numeric xSEPERATS2ETM4 = 0;
            numeric xSEPERATS2ETM5 = 0;
            numeric xSEPERATS2ETM7 = 0;
    
            numeric xQuadSEPERATS2ETM1 = 0;
            numeric xQuadSEPERATS2ETM2 = 0;
            numeric xQuadSEPERATS2ETM3 = 0;
            numeric xQuadSEPERATS2ETM4 = 0;
            numeric xQuadSEPERATS2ETM5 = 0;
            numeric xQuadSEPERATS2ETM7 = 0;
    
            numeric ySEPERATS2ETM1 = 0;
            numeric ySEPERATS2ETM2 = 0;
            numeric ySEPERATS2ETM3 = 0;
            numeric ySEPERATS2ETM4 = 0;
            numeric ySEPERATS2ETM5 = 0;
            numeric ySEPERATS2ETM7 = 0;
    
            numeric yQuadSEPERATS2ETM1 = 0;
            numeric yQuadSEPERATS2ETM2 = 0;
            numeric yQuadSEPERATS2ETM3 = 0;
            numeric yQuadSEPERATS2ETM4 = 0;
            numeric yQuadSEPERATS2ETM5 = 0;
            numeric yQuadSEPERATS2ETM7 = 0;
    
            numeric xySEPERATS2ETM1 = 0;
            numeric xySEPERATS2ETM2 = 0;
            numeric xySEPERATS2ETM3 = 0;
            numeric xySEPERATS2ETM4 = 0;
            numeric xySEPERATS2ETM5 = 0;
            numeric xySEPERATS2ETM7 = 0;
    
            numeric xxAritQuadSEPERATS2ETM1 = 0;
            numeric xxAritQuadSEPERATS2ETM2 = 0;
            numeric xxAritQuadSEPERATS2ETM3 = 0;
            numeric xxAritQuadSEPERATS2ETM4 = 0;
            numeric xxAritQuadSEPERATS2ETM5 = 0;
            numeric xxAritQuadSEPERATS2ETM7 = 0;
    
            numeric yyAritQuadSEPERATS2ETM1 = 0;
            numeric yyAritQuadSEPERATS2ETM2 = 0;
            numeric yyAritQuadSEPERATS2ETM3 = 0;
            numeric yyAritQuadSEPERATS2ETM4 = 0;
            numeric yyAritQuadSEPERATS2ETM5 = 0;
            numeric yyAritQuadSEPERATS2ETM7 = 0;
    
            numeric qXYSEPERATS2ETM1 = 0;
            numeric qXYSEPERATS2ETM2 = 0;
            numeric qXYSEPERATS2ETM3 = 0;
            numeric qXYSEPERATS2ETM4 = 0;
            numeric qXYSEPERATS2ETM5 = 0;
            numeric qXYSEPERATS2ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS2ETM1 = xSEPERATS2ETM1 + pifSEPERATS4S2TM1arrayRAND[m];
                xSEPERATS2ETM2 = xSEPERATS2ETM2 + pifSEPERATS4S2TM2arrayRAND[m];
                xSEPERATS2ETM3 = xSEPERATS2ETM3 + pifSEPERATS4S2TM3arrayRAND[m];
                xSEPERATS2ETM4 = xSEPERATS2ETM4 + pifSEPERATS4S2TM4arrayRAND[m];
                xSEPERATS2ETM5 = xSEPERATS2ETM5 + pifSEPERATS4S2TM5arrayRAND[m];
                xSEPERATS2ETM7 = xSEPERATS2ETM7 + pifSEPERATS4S2TM7arrayRAND[m];
    
                xQuadSEPERATS2ETM1 = (xQuadSEPERATS2ETM1 + (pifSEPERATS4S2TM1arrayRAND[m]^2));
                xQuadSEPERATS2ETM2 = (xQuadSEPERATS2ETM2 + (pifSEPERATS4S2TM2arrayRAND[m]^2));
                xQuadSEPERATS2ETM3 = (xQuadSEPERATS2ETM3 + (pifSEPERATS4S2TM3arrayRAND[m]^2));
                xQuadSEPERATS2ETM4 = (xQuadSEPERATS2ETM4 + (pifSEPERATS4S2TM4arrayRAND[m]^2));
                xQuadSEPERATS2ETM5 = (xQuadSEPERATS2ETM5 + (pifSEPERATS4S2TM5arrayRAND[m]^2));
                xQuadSEPERATS2ETM7 = (xQuadSEPERATS2ETM7 + (pifSEPERATS4S2TM7arrayRAND[m]^2));
    
                ySEPERATS2ETM1 = ySEPERATS2ETM1 + pifSEPERATS2slaveETM1arrayRAND[m];
                ySEPERATS2ETM2 = ySEPERATS2ETM2 + pifSEPERATS2slaveETM2arrayRAND[m];
                ySEPERATS2ETM3 = ySEPERATS2ETM3 + pifSEPERATS2slaveETM3arrayRAND[m];
                ySEPERATS2ETM4 = ySEPERATS2ETM4 + pifSEPERATS2slaveETM4arrayRAND[m];
                ySEPERATS2ETM5 = ySEPERATS2ETM5 + pifSEPERATS2slaveETM5arrayRAND[m];
                ySEPERATS2ETM7 = ySEPERATS2ETM7 + pifSEPERATS2slaveETM7arrayRAND[m];
                
                yQuadSEPERATS2ETM1 = (yQuadSEPERATS2ETM1 + (pifSEPERATS2slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS2ETM2 = (yQuadSEPERATS2ETM2 + (pifSEPERATS2slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS2ETM3 = (yQuadSEPERATS2ETM3 + (pifSEPERATS2slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS2ETM4 = (yQuadSEPERATS2ETM4 + (pifSEPERATS2slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS2ETM5 = (yQuadSEPERATS2ETM5 + (pifSEPERATS2slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS2ETM7 = (yQuadSEPERATS2ETM7 + (pifSEPERATS2slaveETM7arrayRAND[m]^2));
    
                xySEPERATS2ETM1 = (xySEPERATS2ETM1 + (pifSEPERATS4S2TM1arrayRAND[m] * pifSEPERATS2slaveETM1arrayRAND[m]));
                xySEPERATS2ETM2 = (xySEPERATS2ETM2 + (pifSEPERATS4S2TM2arrayRAND[m] * pifSEPERATS2slaveETM2arrayRAND[m]));
                xySEPERATS2ETM3 = (xySEPERATS2ETM3 + (pifSEPERATS4S2TM3arrayRAND[m] * pifSEPERATS2slaveETM3arrayRAND[m]));
                xySEPERATS2ETM4 = (xySEPERATS2ETM4 + (pifSEPERATS4S2TM4arrayRAND[m] * pifSEPERATS2slaveETM4arrayRAND[m]));
                xySEPERATS2ETM5 = (xySEPERATS2ETM5 + (pifSEPERATS4S2TM5arrayRAND[m] * pifSEPERATS2slaveETM5arrayRAND[m]));
                xySEPERATS2ETM7 = (xySEPERATS2ETM7 + (pifSEPERATS4S2TM7arrayRAND[m] * pifSEPERATS2slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS2ETM1 = xSEPERATS2ETM1 / minPifVAL;
            xAritSEPERATS2ETM2 = xSEPERATS2ETM2 / minPifVAL;
            xAritSEPERATS2ETM3 = xSEPERATS2ETM3 / minPifVAL;
            xAritSEPERATS2ETM4 = xSEPERATS2ETM4 / minPifVAL;
            xAritSEPERATS2ETM5 = xSEPERATS2ETM5 / minPifVAL;
            xAritSEPERATS2ETM7 = xSEPERATS2ETM7 / minPifVAL;
    
            yAritSEPERATS2ETM1 = ySEPERATS2ETM1 / minPifVAL;
            yAritSEPERATS2ETM2 = ySEPERATS2ETM2 / minPifVAL;
            yAritSEPERATS2ETM3 = ySEPERATS2ETM3 / minPifVAL;
            yAritSEPERATS2ETM4 = ySEPERATS2ETM4 / minPifVAL;
            yAritSEPERATS2ETM5 = ySEPERATS2ETM5 / minPifVAL;
            yAritSEPERATS2ETM7 = ySEPERATS2ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2ETM1 = (xxAritQuadSEPERATS2ETM1 + ((pifSEPERATS4S2TM1arrayRAND[n] - xAritSEPERATS2ETM1)^2));
                xxAritQuadSEPERATS2ETM2 = (xxAritQuadSEPERATS2ETM2 + ((pifSEPERATS4S2TM2arrayRAND[n] - xAritSEPERATS2ETM2)^2));
                xxAritQuadSEPERATS2ETM3 = (xxAritQuadSEPERATS2ETM3 + ((pifSEPERATS4S2TM3arrayRAND[n] - xAritSEPERATS2ETM3)^2));
                xxAritQuadSEPERATS2ETM4 = (xxAritQuadSEPERATS2ETM4 + ((pifSEPERATS4S2TM4arrayRAND[n] - xAritSEPERATS2ETM4)^2));
                xxAritQuadSEPERATS2ETM5 = (xxAritQuadSEPERATS2ETM5 + ((pifSEPERATS4S2TM5arrayRAND[n] - xAritSEPERATS2ETM5)^2));
                xxAritQuadSEPERATS2ETM7 = (xxAritQuadSEPERATS2ETM7 + ((pifSEPERATS4S2TM7arrayRAND[n] - xAritSEPERATS2ETM7)^2));
    
                yyAritQuadSEPERATS2ETM1 = (yyAritQuadSEPERATS2ETM1 + ((pifSEPERATS2slaveETM1arrayRAND[n] - yAritSEPERATS2ETM1)^2));
                yyAritQuadSEPERATS2ETM2 = (yyAritQuadSEPERATS2ETM2 + ((pifSEPERATS2slaveETM2arrayRAND[n] - yAritSEPERATS2ETM2)^2));
                yyAritQuadSEPERATS2ETM3 = (yyAritQuadSEPERATS2ETM3 + ((pifSEPERATS2slaveETM3arrayRAND[n] - yAritSEPERATS2ETM3)^2));
                yyAritQuadSEPERATS2ETM4 = (yyAritQuadSEPERATS2ETM4 + ((pifSEPERATS2slaveETM4arrayRAND[n] - yAritSEPERATS2ETM4)^2));
                yyAritQuadSEPERATS2ETM5 = (yyAritQuadSEPERATS2ETM5 + ((pifSEPERATS2slaveETM5arrayRAND[n] - yAritSEPERATS2ETM5)^2));
                yyAritQuadSEPERATS2ETM7 = (yyAritQuadSEPERATS2ETM7 + ((pifSEPERATS2slaveETM7arrayRAND[n] - yAritSEPERATS2ETM7)^2));
    
                qXYSEPERATS2ETM1 = (qXYSEPERATS2ETM1 + ((pifSEPERATS4S2TM1arrayRAND[n] - xAritSEPERATS2ETM1) * (pifSEPERATS2slaveETM1arrayRAND[n] - yAritSEPERATS2ETM1)));
                qXYSEPERATS2ETM2 = (qXYSEPERATS2ETM2 + ((pifSEPERATS4S2TM2arrayRAND[n] - xAritSEPERATS2ETM2) * (pifSEPERATS2slaveETM2arrayRAND[n] - yAritSEPERATS2ETM2)));
                qXYSEPERATS2ETM3 = (qXYSEPERATS2ETM3 + ((pifSEPERATS4S2TM3arrayRAND[n] - xAritSEPERATS2ETM3) * (pifSEPERATS2slaveETM3arrayRAND[n] - yAritSEPERATS2ETM3)));
                qXYSEPERATS2ETM4 = (qXYSEPERATS2ETM4 + ((pifSEPERATS4S2TM4arrayRAND[n] - xAritSEPERATS2ETM4) * (pifSEPERATS2slaveETM4arrayRAND[n] - yAritSEPERATS2ETM4)));
                qXYSEPERATS2ETM5 = (qXYSEPERATS2ETM5 + ((pifSEPERATS4S2TM5arrayRAND[n] - xAritSEPERATS2ETM5) * (pifSEPERATS2slaveETM5arrayRAND[n] - yAritSEPERATS2ETM5)));
                qXYSEPERATS2ETM7 = (qXYSEPERATS2ETM7 + ((pifSEPERATS4S2TM7arrayRAND[n] - xAritSEPERATS2ETM7) * (pifSEPERATS2slaveETM7arrayRAND[n] - yAritSEPERATS2ETM7)));
            }
        
            aSEPERATS2ETM1 = (((xQuadSEPERATS2ETM1 * ySEPERATS2ETM1) - (xSEPERATS2ETM1 * xySEPERATS2ETM1)) / ((minPifVAL * xQuadSEPERATS2ETM1) - (xSEPERATS2ETM1^2)));
            aSEPERATS2ETM2 = (((xQuadSEPERATS2ETM2 * ySEPERATS2ETM2) - (xSEPERATS2ETM2 * xySEPERATS2ETM2)) / ((minPifVAL * xQuadSEPERATS2ETM2) - (xSEPERATS2ETM2^2)));
            aSEPERATS2ETM3 = (((xQuadSEPERATS2ETM3 * ySEPERATS2ETM3) - (xSEPERATS2ETM3 * xySEPERATS2ETM3)) / ((minPifVAL * xQuadSEPERATS2ETM3) - (xSEPERATS2ETM3^2)));
            aSEPERATS2ETM4 = (((xQuadSEPERATS2ETM4 * ySEPERATS2ETM4) - (xSEPERATS2ETM4 * xySEPERATS2ETM4)) / ((minPifVAL * xQuadSEPERATS2ETM4) - (xSEPERATS2ETM4^2)));
            aSEPERATS2ETM5 = (((xQuadSEPERATS2ETM5 * ySEPERATS2ETM5) - (xSEPERATS2ETM5 * xySEPERATS2ETM5)) / ((minPifVAL * xQuadSEPERATS2ETM5) - (xSEPERATS2ETM5^2)));
            aSEPERATS2ETM7 = (((xQuadSEPERATS2ETM7 * ySEPERATS2ETM7) - (xSEPERATS2ETM7 * xySEPERATS2ETM7)) / ((minPifVAL * xQuadSEPERATS2ETM7) - (xSEPERATS2ETM7^2)));
            
            bSEPERATS2ETM1 = qXYSEPERATS2ETM1 / xxAritQuadSEPERATS2ETM1;
            bSEPERATS2ETM2 = qXYSEPERATS2ETM2 / xxAritQuadSEPERATS2ETM2;
            bSEPERATS2ETM3 = qXYSEPERATS2ETM3 / xxAritQuadSEPERATS2ETM3;
            bSEPERATS2ETM4 = qXYSEPERATS2ETM4 / xxAritQuadSEPERATS2ETM4;
            bSEPERATS2ETM5 = qXYSEPERATS2ETM5 / xxAritQuadSEPERATS2ETM5;
            bSEPERATS2ETM7 = qXYSEPERATS2ETM7 / xxAritQuadSEPERATS2ETM7;
    
            rSEPERATS2ETM1 = (qXYSEPERATS2ETM1 / ((xxAritQuadSEPERATS2ETM1 * yyAritQuadSEPERATS2ETM1)^0.5));
            rSEPERATS2ETM2 = (qXYSEPERATS2ETM2 / ((xxAritQuadSEPERATS2ETM2 * yyAritQuadSEPERATS2ETM2)^0.5));
            rSEPERATS2ETM3 = (qXYSEPERATS2ETM3 / ((xxAritQuadSEPERATS2ETM3 * yyAritQuadSEPERATS2ETM3)^0.5));
            rSEPERATS2ETM4 = (qXYSEPERATS2ETM4 / ((xxAritQuadSEPERATS2ETM4 * yyAritQuadSEPERATS2ETM4)^0.5));
            rSEPERATS2ETM5 = (qXYSEPERATS2ETM5 / ((xxAritQuadSEPERATS2ETM5 * yyAritQuadSEPERATS2ETM5)^0.5));
            rSEPERATS2ETM7 = (qXYSEPERATS2ETM7 / ((xxAritQuadSEPERATS2ETM7 * yyAritQuadSEPERATS2ETM7)^0.5));
    
            rQuadSEPERATS2ETM1 = ((rSEPERATS2ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2ETM2 = ((rSEPERATS2ETM2^2) * 100);
            rQuadSEPERATS2ETM3 = ((rSEPERATS2ETM3^2) * 100);
            rQuadSEPERATS2ETM4 = ((rSEPERATS2ETM4^2) * 100);
            rQuadSEPERATS2ETM5 = ((rSEPERATS2ETM5^2) * 100);
            rQuadSEPERATS2ETM7 = ((rSEPERATS2ETM7^2) * 100);
        
            syxSEPERATS2ETM1 = (((yyAritQuadSEPERATS2ETM1 - ((qXYSEPERATS2ETM1^2) / xxAritQuadSEPERATS2ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM2 = (((yyAritQuadSEPERATS2ETM2 - ((qXYSEPERATS2ETM2^2) / xxAritQuadSEPERATS2ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM3 = (((yyAritQuadSEPERATS2ETM3 - ((qXYSEPERATS2ETM3^2) / xxAritQuadSEPERATS2ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM4 = (((yyAritQuadSEPERATS2ETM4 - ((qXYSEPERATS2ETM4^2) / xxAritQuadSEPERATS2ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM5 = (((yyAritQuadSEPERATS2ETM5 - ((qXYSEPERATS2ETM5^2) / xxAritQuadSEPERATS2ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2ETM7 = (((yyAritQuadSEPERATS2ETM7 - ((qXYSEPERATS2ETM7^2) / xxAritQuadSEPERATS2ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2ETM1 = (((syxSEPERATS2ETM1^2) / xxAritQuadSEPERATS2ETM1)^0.5);
            bStandSEPERATS2ETM2 = (((syxSEPERATS2ETM2^2) / xxAritQuadSEPERATS2ETM2)^0.5);
            bStandSEPERATS2ETM3 = (((syxSEPERATS2ETM3^2) / xxAritQuadSEPERATS2ETM3)^0.5);
            bStandSEPERATS2ETM4 = (((syxSEPERATS2ETM4^2) / xxAritQuadSEPERATS2ETM4)^0.5);
            bStandSEPERATS2ETM5 = (((syxSEPERATS2ETM5^2) / xxAritQuadSEPERATS2ETM5)^0.5);
            bStandSEPERATS2ETM7 = (((syxSEPERATS2ETM7^2) / xxAritQuadSEPERATS2ETM7)^0.5);
    
            aStandSEPERATS2ETM1 = (bStandSEPERATS2ETM1 * ((xQuadSEPERATS2ETM1 / minPifVAL)^0.5));
            aStandSEPERATS2ETM2 = (bStandSEPERATS2ETM2 * ((xQuadSEPERATS2ETM2 / minPifVAL)^0.5));
            aStandSEPERATS2ETM3 = (bStandSEPERATS2ETM3 * ((xQuadSEPERATS2ETM3 / minPifVAL)^0.5));
            aStandSEPERATS2ETM4 = (bStandSEPERATS2ETM4 * ((xQuadSEPERATS2ETM4 / minPifVAL)^0.5));
            aStandSEPERATS2ETM5 = (bStandSEPERATS2ETM5 * ((xQuadSEPERATS2ETM5 / minPifVAL)^0.5));
            aStandSEPERATS2ETM7 = (bStandSEPERATS2ETM7 * ((xQuadSEPERATS2ETM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM1, bSEPERATS2ETM1, rSEPERATS2ETM1, rQuadSEPERATS2ETM1, aStandSEPERATS2ETM1, bStandSEPERATS2ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM2, bSEPERATS2ETM2, rSEPERATS2ETM2, rQuadSEPERATS2ETM2, aStandSEPERATS2ETM2, bStandSEPERATS2ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM3, bSEPERATS2ETM3, rSEPERATS2ETM3, rQuadSEPERATS2ETM3, aStandSEPERATS2ETM3, bStandSEPERATS2ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM4, bSEPERATS2ETM4, rSEPERATS2ETM4, rQuadSEPERATS2ETM4, aStandSEPERATS2ETM4, bStandSEPERATS2ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2ETM5, bSEPERATS2ETM5, rSEPERATS2ETM5, rQuadSEPERATS2ETM5, aStandSEPERATS2ETM5, bStandSEPERATS2ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS2ETM7, bSEPERATS2ETM7, rSEPERATS2ETM7, rQuadSEPERATS2ETM7, aStandSEPERATS2ETM7, bStandSEPERATS2ETM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS2slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
            printf("%12f ", pifSEPERATS2slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS2slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS2slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS2slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS2slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS2slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS2slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT2ETM1[i,j] = (aSEPERATS2ETM1 + (bSEPERATS2ETM1 * REFS2ETM1[i,j]));
                    OUT2ETM2[i,j] = (aSEPERATS2ETM2 + (bSEPERATS2ETM2 * REFS2ETM2[i,j]));
                    OUT2ETM3[i,j] = (aSEPERATS2ETM3 + (bSEPERATS2ETM3 * REFS2ETM3[i,j]));
                    OUT2ETM4[i,j] = (aSEPERATS2ETM4 + (bSEPERATS2ETM4 * REFS2ETM4[i,j]));
                    OUT2ETM5[i,j] = (aSEPERATS2ETM5 + (bSEPERATS2ETM5 * REFS2ETM5[i,j]));
                    OUT2ETM7[i,j] = (aSEPERATS2ETM7 + (bSEPERATS2ETM7 * REFS2ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2ETM1);
        	CreatePyramid(OUT2ETM2);
        	CreatePyramid(OUT2ETM3);
        	CreatePyramid(OUT2ETM4);
        	CreatePyramid(OUT2ETM5);
        	CreatePyramid(OUT2ETM7);
        
        	CreateHistogram(OUT2ETM1);
        	CreateHistogram(OUT2ETM2);
        	CreateHistogram(OUT2ETM3);
        	CreateHistogram(OUT2ETM4);
        	CreateHistogram(OUT2ETM5);
        	CreateHistogram(OUT2ETM7);
            CloseRaster(REFS2ETM1);
            CloseRaster(REFS2ETM2);
            CloseRaster(REFS2ETM3);
            CloseRaster(REFS2ETM4);
            CloseRaster(REFS2ETM5);
            CloseRaster(REFS2ETM7);
    
            CloseRaster(OUT2ETM1);
            CloseRaster(OUT2ETM2);
            CloseRaster(OUT2ETM3);
            CloseRaster(OUT2ETM4);
            CloseRaster(OUT2ETM5);
            CloseRaster(OUT2ETM7);
            
        	printf("Scene 2 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors2 == 6 )
            {
            numeric xAritSEPERATS2TM1, xAritSEPERATS2TM2, xAritSEPERATS2TM3, xAritSEPERATS2TM4, xAritSEPERATS2TM5, xAritSEPERATS2TM7;
            numeric yAritSEPERATS2TM1, yAritSEPERATS2TM2, yAritSEPERATS2TM3, yAritSEPERATS2TM4, yAritSEPERATS2TM5, yAritSEPERATS2TM7;
    
            numeric aSEPERATS2TM1, aSEPERATS2TM2, aSEPERATS2TM3, aSEPERATS2TM4, aSEPERATS2TM5, aSEPERATS2TM7;
            numeric bSEPERATS2TM1, bSEPERATS2TM2, bSEPERATS2TM3, bSEPERATS2TM4, bSEPERATS2TM5, bSEPERATS2TM7;
            numeric rSEPERATS2TM1, rSEPERATS2TM2, rSEPERATS2TM3, rSEPERATS2TM4, rSEPERATS2TM5, rSEPERATS2TM7;
            numeric rQuadSEPERATS2TM1, rQuadSEPERATS2TM2, rQuadSEPERATS2TM3, rQuadSEPERATS2TM4, rQuadSEPERATS2TM5, rQuadSEPERATS2TM7;
            numeric syxSEPERATS2TM1, syxSEPERATS2TM2, syxSEPERATS2TM3, syxSEPERATS2TM4, syxSEPERATS2TM5, syxSEPERATS2TM7;
            numeric bStandSEPERATS2TM1, bStandSEPERATS2TM2, bStandSEPERATS2TM3, bStandSEPERATS2TM4, bStandSEPERATS2TM5, bStandSEPERATS2TM7;
            numeric aStandSEPERATS2TM1, aStandSEPERATS2TM2, aStandSEPERATS2TM3, aStandSEPERATS2TM4, aStandSEPERATS2TM5, aStandSEPERATS2TM7;
    
            numeric xSEPERATS2TM1 = 0;
            numeric xSEPERATS2TM2 = 0;
            numeric xSEPERATS2TM3 = 0;
            numeric xSEPERATS2TM4 = 0;
            numeric xSEPERATS2TM5 = 0;
            numeric xSEPERATS2TM7 = 0;
    
            numeric xQuadSEPERATS2TM1 = 0;
            numeric xQuadSEPERATS2TM2 = 0;
            numeric xQuadSEPERATS2TM3 = 0;
            numeric xQuadSEPERATS2TM4 = 0;
            numeric xQuadSEPERATS2TM5 = 0;
            numeric xQuadSEPERATS2TM7 = 0;
    
            numeric ySEPERATS2TM1 = 0;
            numeric ySEPERATS2TM2 = 0;
            numeric ySEPERATS2TM3 = 0;
            numeric ySEPERATS2TM4 = 0;
            numeric ySEPERATS2TM5 = 0;
            numeric ySEPERATS2TM7 = 0;
    
            numeric yQuadSEPERATS2TM1 = 0;
            numeric yQuadSEPERATS2TM2 = 0;
            numeric yQuadSEPERATS2TM3 = 0;
            numeric yQuadSEPERATS2TM4 = 0;
            numeric yQuadSEPERATS2TM5 = 0;
            numeric yQuadSEPERATS2TM7 = 0;
    
            numeric xySEPERATS2TM1 = 0;
            numeric xySEPERATS2TM2 = 0;
            numeric xySEPERATS2TM3 = 0;
            numeric xySEPERATS2TM4 = 0;
            numeric xySEPERATS2TM5 = 0;
            numeric xySEPERATS2TM7 = 0;
    
            numeric xxAritQuadSEPERATS2TM1 = 0;
            numeric xxAritQuadSEPERATS2TM2 = 0;
            numeric xxAritQuadSEPERATS2TM3 = 0;
            numeric xxAritQuadSEPERATS2TM4 = 0;
            numeric xxAritQuadSEPERATS2TM5 = 0;
            numeric xxAritQuadSEPERATS2TM7 = 0;
    
            numeric yyAritQuadSEPERATS2TM1 = 0;
            numeric yyAritQuadSEPERATS2TM2 = 0;
            numeric yyAritQuadSEPERATS2TM3 = 0;
            numeric yyAritQuadSEPERATS2TM4 = 0;
            numeric yyAritQuadSEPERATS2TM5 = 0;
            numeric yyAritQuadSEPERATS2TM7 = 0;
    
            numeric qXYSEPERATS2TM1 = 0;
            numeric qXYSEPERATS2TM2 = 0;
            numeric qXYSEPERATS2TM3 = 0;
            numeric qXYSEPERATS2TM4 = 0;
            numeric qXYSEPERATS2TM5 = 0;
            numeric qXYSEPERATS2TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS2TM1 = xSEPERATS2TM1 + pifSEPERATS4S2TM1arrayRAND[m];
                xSEPERATS2TM2 = xSEPERATS2TM2 + pifSEPERATS4S2TM2arrayRAND[m];
                xSEPERATS2TM3 = xSEPERATS2TM3 + pifSEPERATS4S2TM3arrayRAND[m];
                xSEPERATS2TM4 = xSEPERATS2TM4 + pifSEPERATS4S2TM4arrayRAND[m];
                xSEPERATS2TM5 = xSEPERATS2TM5 + pifSEPERATS4S2TM5arrayRAND[m];
                xSEPERATS2TM7 = xSEPERATS2TM7 + pifSEPERATS4S2TM7arrayRAND[m];
    
                xQuadSEPERATS2TM1 = (xQuadSEPERATS2TM1 + (pifSEPERATS4S2TM1arrayRAND[m]^2));
                xQuadSEPERATS2TM2 = (xQuadSEPERATS2TM2 + (pifSEPERATS4S2TM2arrayRAND[m]^2));
                xQuadSEPERATS2TM3 = (xQuadSEPERATS2TM3 + (pifSEPERATS4S2TM3arrayRAND[m]^2));
                xQuadSEPERATS2TM4 = (xQuadSEPERATS2TM4 + (pifSEPERATS4S2TM4arrayRAND[m]^2));
                xQuadSEPERATS2TM5 = (xQuadSEPERATS2TM5 + (pifSEPERATS4S2TM5arrayRAND[m]^2));
                xQuadSEPERATS2TM7 = (xQuadSEPERATS2TM7 + (pifSEPERATS4S2TM7arrayRAND[m]^2));
    
                ySEPERATS2TM1 = ySEPERATS2TM1 + pifSEPERATS2slaveTM1arrayRAND[m];
                ySEPERATS2TM2 = ySEPERATS2TM2 + pifSEPERATS2slaveTM2arrayRAND[m];
                ySEPERATS2TM3 = ySEPERATS2TM3 + pifSEPERATS2slaveTM3arrayRAND[m];
                ySEPERATS2TM4 = ySEPERATS2TM4 + pifSEPERATS2slaveTM4arrayRAND[m];
                ySEPERATS2TM5 = ySEPERATS2TM5 + pifSEPERATS2slaveTM5arrayRAND[m];
                ySEPERATS2TM7 = ySEPERATS2TM7 + pifSEPERATS2slaveTM7arrayRAND[m];
                
                yQuadSEPERATS2TM1 = (yQuadSEPERATS2TM1 + (pifSEPERATS2slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS2TM2 = (yQuadSEPERATS2TM2 + (pifSEPERATS2slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS2TM3 = (yQuadSEPERATS2TM3 + (pifSEPERATS2slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS2TM4 = (yQuadSEPERATS2TM4 + (pifSEPERATS2slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS2TM5 = (yQuadSEPERATS2TM5 + (pifSEPERATS2slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS2TM7 = (yQuadSEPERATS2TM7 + (pifSEPERATS2slaveTM7arrayRAND[m]^2));
    
                xySEPERATS2TM1 = (xySEPERATS2TM1 + (pifSEPERATS4S2TM1arrayRAND[m] * pifSEPERATS2slaveTM1arrayRAND[m]));
                xySEPERATS2TM2 = (xySEPERATS2TM2 + (pifSEPERATS4S2TM2arrayRAND[m] * pifSEPERATS2slaveTM2arrayRAND[m]));
                xySEPERATS2TM3 = (xySEPERATS2TM3 + (pifSEPERATS4S2TM3arrayRAND[m] * pifSEPERATS2slaveTM3arrayRAND[m]));
                xySEPERATS2TM4 = (xySEPERATS2TM4 + (pifSEPERATS4S2TM4arrayRAND[m] * pifSEPERATS2slaveTM4arrayRAND[m]));
                xySEPERATS2TM5 = (xySEPERATS2TM5 + (pifSEPERATS4S2TM5arrayRAND[m] * pifSEPERATS2slaveTM5arrayRAND[m]));
                xySEPERATS2TM7 = (xySEPERATS2TM7 + (pifSEPERATS4S2TM7arrayRAND[m] * pifSEPERATS2slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS2TM1 = xSEPERATS2TM1 / minPifVAL;
            xAritSEPERATS2TM2 = xSEPERATS2TM2 / minPifVAL;
            xAritSEPERATS2TM3 = xSEPERATS2TM3 / minPifVAL;
            xAritSEPERATS2TM4 = xSEPERATS2TM4 / minPifVAL;
            xAritSEPERATS2TM5 = xSEPERATS2TM5 / minPifVAL;
            xAritSEPERATS2TM7 = xSEPERATS2TM7 / minPifVAL;
    
            yAritSEPERATS2TM1 = ySEPERATS2TM1 / minPifVAL;
            yAritSEPERATS2TM2 = ySEPERATS2TM2 / minPifVAL;
            yAritSEPERATS2TM3 = ySEPERATS2TM3 / minPifVAL;
            yAritSEPERATS2TM4 = ySEPERATS2TM4 / minPifVAL;
            yAritSEPERATS2TM5 = ySEPERATS2TM5 / minPifVAL;
            yAritSEPERATS2TM7 = ySEPERATS2TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2TM1 = (xxAritQuadSEPERATS2TM1 + ((pifSEPERATS4S2TM1arrayRAND[n] - xAritSEPERATS2TM1)^2));
                xxAritQuadSEPERATS2TM2 = (xxAritQuadSEPERATS2TM2 + ((pifSEPERATS4S2TM2arrayRAND[n] - xAritSEPERATS2TM2)^2));
                xxAritQuadSEPERATS2TM3 = (xxAritQuadSEPERATS2TM3 + ((pifSEPERATS4S2TM3arrayRAND[n] - xAritSEPERATS2TM3)^2));
                xxAritQuadSEPERATS2TM4 = (xxAritQuadSEPERATS2TM4 + ((pifSEPERATS4S2TM4arrayRAND[n] - xAritSEPERATS2TM4)^2));
                xxAritQuadSEPERATS2TM5 = (xxAritQuadSEPERATS2TM5 + ((pifSEPERATS4S2TM5arrayRAND[n] - xAritSEPERATS2TM5)^2));
                xxAritQuadSEPERATS2TM7 = (xxAritQuadSEPERATS2TM7 + ((pifSEPERATS4S2TM7arrayRAND[n] - xAritSEPERATS2TM7)^2));
    
                yyAritQuadSEPERATS2TM1 = (yyAritQuadSEPERATS2TM1 + ((pifSEPERATS2slaveTM1arrayRAND[n] - yAritSEPERATS2TM1)^2));
                yyAritQuadSEPERATS2TM2 = (yyAritQuadSEPERATS2TM2 + ((pifSEPERATS2slaveTM2arrayRAND[n] - yAritSEPERATS2TM2)^2));
                yyAritQuadSEPERATS2TM3 = (yyAritQuadSEPERATS2TM3 + ((pifSEPERATS2slaveTM3arrayRAND[n] - yAritSEPERATS2TM3)^2));
                yyAritQuadSEPERATS2TM4 = (yyAritQuadSEPERATS2TM4 + ((pifSEPERATS2slaveTM4arrayRAND[n] - yAritSEPERATS2TM4)^2));
                yyAritQuadSEPERATS2TM5 = (yyAritQuadSEPERATS2TM5 + ((pifSEPERATS2slaveTM5arrayRAND[n] - yAritSEPERATS2TM5)^2));
                yyAritQuadSEPERATS2TM7 = (yyAritQuadSEPERATS2TM7 + ((pifSEPERATS2slaveTM7arrayRAND[n] - yAritSEPERATS2TM7)^2));
    
                qXYSEPERATS2TM1 = (qXYSEPERATS2TM1 + ((pifSEPERATS4S2TM1arrayRAND[n] - xAritSEPERATS2TM1) * (pifSEPERATS2slaveTM1arrayRAND[n] - yAritSEPERATS2TM1)));
                qXYSEPERATS2TM2 = (qXYSEPERATS2TM2 + ((pifSEPERATS4S2TM2arrayRAND[n] - xAritSEPERATS2TM2) * (pifSEPERATS2slaveTM2arrayRAND[n] - yAritSEPERATS2TM2)));
                qXYSEPERATS2TM3 = (qXYSEPERATS2TM3 + ((pifSEPERATS4S2TM3arrayRAND[n] - xAritSEPERATS2TM3) * (pifSEPERATS2slaveTM3arrayRAND[n] - yAritSEPERATS2TM3)));
                qXYSEPERATS2TM4 = (qXYSEPERATS2TM4 + ((pifSEPERATS4S2TM4arrayRAND[n] - xAritSEPERATS2TM4) * (pifSEPERATS2slaveTM4arrayRAND[n] - yAritSEPERATS2TM4)));
                qXYSEPERATS2TM5 = (qXYSEPERATS2TM5 + ((pifSEPERATS4S2TM5arrayRAND[n] - xAritSEPERATS2TM5) * (pifSEPERATS2slaveTM5arrayRAND[n] - yAritSEPERATS2TM5)));
                qXYSEPERATS2TM7 = (qXYSEPERATS2TM7 + ((pifSEPERATS4S2TM7arrayRAND[n] - xAritSEPERATS2TM7) * (pifSEPERATS2slaveTM7arrayRAND[n] - yAritSEPERATS2TM7)));
            }
        
            aSEPERATS2TM1 = (((xQuadSEPERATS2TM1 * ySEPERATS2TM1) - (xSEPERATS2TM1 * xySEPERATS2TM1)) / ((minPifVAL * xQuadSEPERATS2TM1) - (xSEPERATS2TM1^2)));
            aSEPERATS2TM2 = (((xQuadSEPERATS2TM2 * ySEPERATS2TM2) - (xSEPERATS2TM2 * xySEPERATS2TM2)) / ((minPifVAL * xQuadSEPERATS2TM2) - (xSEPERATS2TM2^2)));
            aSEPERATS2TM3 = (((xQuadSEPERATS2TM3 * ySEPERATS2TM3) - (xSEPERATS2TM3 * xySEPERATS2TM3)) / ((minPifVAL * xQuadSEPERATS2TM3) - (xSEPERATS2TM3^2)));
            aSEPERATS2TM4 = (((xQuadSEPERATS2TM4 * ySEPERATS2TM4) - (xSEPERATS2TM4 * xySEPERATS2TM4)) / ((minPifVAL * xQuadSEPERATS2TM4) - (xSEPERATS2TM4^2)));
            aSEPERATS2TM5 = (((xQuadSEPERATS2TM5 * ySEPERATS2TM5) - (xSEPERATS2TM5 * xySEPERATS2TM5)) / ((minPifVAL * xQuadSEPERATS2TM5) - (xSEPERATS2TM5^2)));
            aSEPERATS2TM7 = (((xQuadSEPERATS2TM7 * ySEPERATS2TM7) - (xSEPERATS2TM7 * xySEPERATS2TM7)) / ((minPifVAL * xQuadSEPERATS2TM7) - (xSEPERATS2TM7^2)));
            
            bSEPERATS2TM1 = qXYSEPERATS2TM1 / xxAritQuadSEPERATS2TM1;
            bSEPERATS2TM2 = qXYSEPERATS2TM2 / xxAritQuadSEPERATS2TM2;
            bSEPERATS2TM3 = qXYSEPERATS2TM3 / xxAritQuadSEPERATS2TM3;
            bSEPERATS2TM4 = qXYSEPERATS2TM4 / xxAritQuadSEPERATS2TM4;
            bSEPERATS2TM5 = qXYSEPERATS2TM5 / xxAritQuadSEPERATS2TM5;
            bSEPERATS2TM7 = qXYSEPERATS2TM7 / xxAritQuadSEPERATS2TM7;
    
            rSEPERATS2TM1 = (qXYSEPERATS2TM1 / ((xxAritQuadSEPERATS2TM1 * yyAritQuadSEPERATS2TM1)^0.5));
            rSEPERATS2TM2 = (qXYSEPERATS2TM2 / ((xxAritQuadSEPERATS2TM2 * yyAritQuadSEPERATS2TM2)^0.5));
            rSEPERATS2TM3 = (qXYSEPERATS2TM3 / ((xxAritQuadSEPERATS2TM3 * yyAritQuadSEPERATS2TM3)^0.5));
            rSEPERATS2TM4 = (qXYSEPERATS2TM4 / ((xxAritQuadSEPERATS2TM4 * yyAritQuadSEPERATS2TM4)^0.5));
            rSEPERATS2TM5 = (qXYSEPERATS2TM5 / ((xxAritQuadSEPERATS2TM5 * yyAritQuadSEPERATS2TM5)^0.5));
            rSEPERATS2TM7 = (qXYSEPERATS2TM7 / ((xxAritQuadSEPERATS2TM7 * yyAritQuadSEPERATS2TM7)^0.5));
    
            rQuadSEPERATS2TM1 = ((rSEPERATS2TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2TM2 = ((rSEPERATS2TM2^2) * 100);
            rQuadSEPERATS2TM3 = ((rSEPERATS2TM3^2) * 100);
            rQuadSEPERATS2TM4 = ((rSEPERATS2TM4^2) * 100);
            rQuadSEPERATS2TM5 = ((rSEPERATS2TM5^2) * 100);
            rQuadSEPERATS2TM7 = ((rSEPERATS2TM7^2) * 100);
        
            syxSEPERATS2TM1 = (((yyAritQuadSEPERATS2TM1 - ((qXYSEPERATS2TM1^2) / xxAritQuadSEPERATS2TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM2 = (((yyAritQuadSEPERATS2TM2 - ((qXYSEPERATS2TM2^2) / xxAritQuadSEPERATS2TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM3 = (((yyAritQuadSEPERATS2TM3 - ((qXYSEPERATS2TM3^2) / xxAritQuadSEPERATS2TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM4 = (((yyAritQuadSEPERATS2TM4 - ((qXYSEPERATS2TM4^2) / xxAritQuadSEPERATS2TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM5 = (((yyAritQuadSEPERATS2TM5 - ((qXYSEPERATS2TM5^2) / xxAritQuadSEPERATS2TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2TM7 = (((yyAritQuadSEPERATS2TM7 - ((qXYSEPERATS2TM7^2) / xxAritQuadSEPERATS2TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2TM1 = (((syxSEPERATS2TM1^2) / xxAritQuadSEPERATS2TM1)^0.5);
            bStandSEPERATS2TM2 = (((syxSEPERATS2TM2^2) / xxAritQuadSEPERATS2TM2)^0.5);
            bStandSEPERATS2TM3 = (((syxSEPERATS2TM3^2) / xxAritQuadSEPERATS2TM3)^0.5);
            bStandSEPERATS2TM4 = (((syxSEPERATS2TM4^2) / xxAritQuadSEPERATS2TM4)^0.5);
            bStandSEPERATS2TM5 = (((syxSEPERATS2TM5^2) / xxAritQuadSEPERATS2TM5)^0.5);
            bStandSEPERATS2TM7 = (((syxSEPERATS2TM7^2) / xxAritQuadSEPERATS2TM7)^0.5);
    
            aStandSEPERATS2TM1 = (bStandSEPERATS2TM1 * ((xQuadSEPERATS2TM1 / minPifVAL)^0.5));
            aStandSEPERATS2TM2 = (bStandSEPERATS2TM2 * ((xQuadSEPERATS2TM2 / minPifVAL)^0.5));
            aStandSEPERATS2TM3 = (bStandSEPERATS2TM3 * ((xQuadSEPERATS2TM3 / minPifVAL)^0.5));
            aStandSEPERATS2TM4 = (bStandSEPERATS2TM4 * ((xQuadSEPERATS2TM4 / minPifVAL)^0.5));
            aStandSEPERATS2TM5 = (bStandSEPERATS2TM5 * ((xQuadSEPERATS2TM5 / minPifVAL)^0.5));
            aStandSEPERATS2TM7 = (bStandSEPERATS2TM7 * ((xQuadSEPERATS2TM7 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM1, bSEPERATS2TM1, rSEPERATS2TM1, rQuadSEPERATS2TM1, aStandSEPERATS2TM1, bStandSEPERATS2TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM2, bSEPERATS2TM2, rSEPERATS2TM2, rQuadSEPERATS2TM2, aStandSEPERATS2TM2, bStandSEPERATS2TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM3, bSEPERATS2TM3, rSEPERATS2TM3, rQuadSEPERATS2TM3, aStandSEPERATS2TM3, bStandSEPERATS2TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM4, bSEPERATS2TM4, rSEPERATS2TM4, rQuadSEPERATS2TM4, aStandSEPERATS2TM4, bStandSEPERATS2TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2TM5, bSEPERATS2TM5, rSEPERATS2TM5, rQuadSEPERATS2TM5, aStandSEPERATS2TM5, bStandSEPERATS2TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS2TM7, bSEPERATS2TM7, rSEPERATS2TM7, rQuadSEPERATS2TM7, aStandSEPERATS2TM7, bStandSEPERATS2TM7);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS2slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS2slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS2slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS2slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS2slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS2slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS2slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT2TM1[i,j] = (aSEPERATS2TM1 + (bSEPERATS2TM1 * REFS2TM1[i,j]));
                    OUT2TM2[i,j] = (aSEPERATS2TM2 + (bSEPERATS2TM2 * REFS2TM2[i,j]));
                    OUT2TM3[i,j] = (aSEPERATS2TM3 + (bSEPERATS2TM3 * REFS2TM3[i,j]));
                    OUT2TM4[i,j] = (aSEPERATS2TM4 + (bSEPERATS2TM4 * REFS2TM4[i,j]));
                    OUT2TM5[i,j] = (aSEPERATS2TM5 + (bSEPERATS2TM5 * REFS2TM5[i,j]));
                    OUT2TM7[i,j] = (aSEPERATS2TM7 + (bSEPERATS2TM7 * REFS2TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT2TM1);
        	CreatePyramid(OUT2TM2);
        	CreatePyramid(OUT2TM3);
        	CreatePyramid(OUT2TM4);
        	CreatePyramid(OUT2TM5);
        	CreatePyramid(OUT2TM7);
        
        	CreateHistogram(OUT2TM1);
        	CreateHistogram(OUT2TM2);
        	CreateHistogram(OUT2TM3);
        	CreateHistogram(OUT2TM4);
        	CreateHistogram(OUT2TM5);
        	CreateHistogram(OUT2TM7);
            CloseRaster(REFS2TM1);
            CloseRaster(REFS2TM2);
            CloseRaster(REFS2TM3);
            CloseRaster(REFS2TM4);
            CloseRaster(REFS2TM5);
            CloseRaster(REFS2TM7);
    
            CloseRaster(OUT2TM1);
            CloseRaster(OUT2TM2);
            CloseRaster(OUT2TM3);
            CloseRaster(OUT2TM4);
            CloseRaster(OUT2TM5);
            CloseRaster(OUT2TM7);
        
        	printf("Scene 2 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS2MSS1, xAritSEPERATS2MSS2, xAritSEPERATS2MSS4;
            numeric yAritSEPERATS2MSS1, yAritSEPERATS2MSS2, yAritSEPERATS2MSS4;
    
            numeric aSEPERATS2MSS1, aSEPERATS2MSS2, aSEPERATS2MSS4;
            numeric bSEPERATS2MSS1, bSEPERATS2MSS2, bSEPERATS2MSS4;
            numeric rSEPERATS2MSS1, rSEPERATS2MSS2, rSEPERATS2MSS4;
            numeric rQuadSEPERATS2MSS1, rQuadSEPERATS2MSS2, rQuadSEPERATS2MSS4;
            numeric syxSEPERATS2MSS1, syxSEPERATS2MSS2, syxSEPERATS2MSS4;
            numeric bStandSEPERATS2MSS1, bStandSEPERATS2MSS2, bStandSEPERATS2MSS4;
            numeric aStandSEPERATS2MSS1, aStandSEPERATS2MSS2, aStandSEPERATS2MSS4;
    
            numeric xSEPERATS2MSS1 = 0;
            numeric xSEPERATS2MSS2 = 0;
            numeric xSEPERATS2MSS4 = 0;
    
            numeric xQuadSEPERATS2MSS1 = 0;
            numeric xQuadSEPERATS2MSS2 = 0;
            numeric xQuadSEPERATS2MSS4 = 0;
    
            numeric ySEPERATS2MSS1 = 0;
            numeric ySEPERATS2MSS2 = 0;
            numeric ySEPERATS2MSS4 = 0;
    
            numeric yQuadSEPERATS2MSS1 = 0;
            numeric yQuadSEPERATS2MSS2 = 0;
            numeric yQuadSEPERATS2MSS4 = 0;
    
            numeric xySEPERATS2MSS1 = 0;
            numeric xySEPERATS2MSS2 = 0;
            numeric xySEPERATS2MSS4 = 0;
    
            numeric xxAritQuadSEPERATS2MSS1 = 0;
            numeric xxAritQuadSEPERATS2MSS2 = 0;
            numeric xxAritQuadSEPERATS2MSS4 = 0;
    
            numeric yyAritQuadSEPERATS2MSS1 = 0;
            numeric yyAritQuadSEPERATS2MSS2 = 0;
            numeric yyAritQuadSEPERATS2MSS4 = 0;
    
            numeric qXYSEPERATS2MSS1 = 0;
            numeric qXYSEPERATS2MSS2 = 0;
            numeric qXYSEPERATS2MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS2MSS1 = xSEPERATS2MSS1 + pifSEPERATS4S2TM2arrayRAND[m];
                xSEPERATS2MSS2 = xSEPERATS2MSS2 + pifSEPERATS4S2TM3arrayRAND[m];
                xSEPERATS2MSS4 = xSEPERATS2MSS4 + pifSEPERATS4S2TM4arrayRAND[m];
    
                xQuadSEPERATS2MSS1 = (xQuadSEPERATS2MSS1 + (pifSEPERATS4S2TM2arrayRAND[m]^2));
                xQuadSEPERATS2MSS2 = (xQuadSEPERATS2MSS2 + (pifSEPERATS4S2TM3arrayRAND[m]^2));
                xQuadSEPERATS2MSS4 = (xQuadSEPERATS2MSS4 + (pifSEPERATS4S2TM4arrayRAND[m]^2));
    
                ySEPERATS2MSS1 = ySEPERATS2MSS1 + pifSEPERATS2slaveMSS1arrayRAND[m];
                ySEPERATS2MSS2 = ySEPERATS2MSS2 + pifSEPERATS2slaveMSS2arrayRAND[m];
                ySEPERATS2MSS4 = ySEPERATS2MSS4 + pifSEPERATS2slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS2MSS1 = (yQuadSEPERATS2MSS1 + (pifSEPERATS2slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS2MSS2 = (yQuadSEPERATS2MSS2 + (pifSEPERATS2slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS2MSS4 = (yQuadSEPERATS2MSS4 + (pifSEPERATS2slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS2MSS1 = (xySEPERATS2MSS1 + (pifSEPERATS4S2TM2arrayRAND[m] * pifSEPERATS2slaveMSS1arrayRAND[m]));
                xySEPERATS2MSS2 = (xySEPERATS2MSS2 + (pifSEPERATS4S2TM3arrayRAND[m] * pifSEPERATS2slaveMSS2arrayRAND[m]));
                xySEPERATS2MSS4 = (xySEPERATS2MSS4 + (pifSEPERATS4S2TM4arrayRAND[m] * pifSEPERATS2slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS2MSS1 = xSEPERATS2MSS1 / minPifVAL;
            xAritSEPERATS2MSS2 = xSEPERATS2MSS2 / minPifVAL;
            xAritSEPERATS2MSS4 = xSEPERATS2MSS4 / minPifVAL;
    
            yAritSEPERATS2MSS1 = ySEPERATS2MSS1 / minPifVAL;
            yAritSEPERATS2MSS2 = ySEPERATS2MSS2 / minPifVAL;
            yAritSEPERATS2MSS4 = ySEPERATS2MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2MSS1 = (xxAritQuadSEPERATS2MSS1 + ((pifSEPERATS4S2TM2arrayRAND[n] - xAritSEPERATS2MSS1)^2));
                xxAritQuadSEPERATS2MSS2 = (xxAritQuadSEPERATS2MSS2 + ((pifSEPERATS4S2TM3arrayRAND[n] - xAritSEPERATS2MSS2)^2));
                xxAritQuadSEPERATS2MSS4 = (xxAritQuadSEPERATS2MSS4 + ((pifSEPERATS4S2TM4arrayRAND[n] - xAritSEPERATS2MSS4)^2));
    
                yyAritQuadSEPERATS2MSS1 = (yyAritQuadSEPERATS2MSS1 + ((pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)^2));
                yyAritQuadSEPERATS2MSS2 = (yyAritQuadSEPERATS2MSS2 + ((pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)^2));
                yyAritQuadSEPERATS2MSS4 = (yyAritQuadSEPERATS2MSS4 + ((pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)^2));
    
                qXYSEPERATS2MSS1 = (qXYSEPERATS2MSS1 + ((pifSEPERATS4S2TM2arrayRAND[n] - xAritSEPERATS2MSS1) * (pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)));
                qXYSEPERATS2MSS2 = (qXYSEPERATS2MSS2 + ((pifSEPERATS4S2TM3arrayRAND[n] - xAritSEPERATS2MSS2) * (pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)));
                qXYSEPERATS2MSS4 = (qXYSEPERATS2MSS4 + ((pifSEPERATS4S2TM4arrayRAND[n] - xAritSEPERATS2MSS4) * (pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)));
            }
        
            aSEPERATS2MSS1 = (((xQuadSEPERATS2MSS1 * ySEPERATS2MSS1) - (xSEPERATS2MSS1 * xySEPERATS2MSS1)) / ((minPifVAL * xQuadSEPERATS2MSS1) - (xSEPERATS2MSS1^2)));
            aSEPERATS2MSS2 = (((xQuadSEPERATS2MSS2 * ySEPERATS2MSS2) - (xSEPERATS2MSS2 * xySEPERATS2MSS2)) / ((minPifVAL * xQuadSEPERATS2MSS2) - (xSEPERATS2MSS2^2)));
            aSEPERATS2MSS4 = (((xQuadSEPERATS2MSS4 * ySEPERATS2MSS4) - (xSEPERATS2MSS4 * xySEPERATS2MSS4)) / ((minPifVAL * xQuadSEPERATS2MSS4) - (xSEPERATS2MSS4^2)));
            
            bSEPERATS2MSS1 = qXYSEPERATS2MSS1 / xxAritQuadSEPERATS2MSS1;
            bSEPERATS2MSS2 = qXYSEPERATS2MSS2 / xxAritQuadSEPERATS2MSS2;
            bSEPERATS2MSS4 = qXYSEPERATS2MSS4 / xxAritQuadSEPERATS2MSS4;
    
            rSEPERATS2MSS1 = (qXYSEPERATS2MSS1 / ((xxAritQuadSEPERATS2MSS1 * yyAritQuadSEPERATS2MSS1)^0.5));
            rSEPERATS2MSS2 = (qXYSEPERATS2MSS2 / ((xxAritQuadSEPERATS2MSS2 * yyAritQuadSEPERATS2MSS2)^0.5));
            rSEPERATS2MSS4 = (qXYSEPERATS2MSS4 / ((xxAritQuadSEPERATS2MSS4 * yyAritQuadSEPERATS2MSS4)^0.5));
    
            rQuadSEPERATS2MSS1 = ((rSEPERATS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2MSS2 = ((rSEPERATS2MSS2^2) * 100);
            rQuadSEPERATS2MSS4 = ((rSEPERATS2MSS4^2) * 100);
        
            syxSEPERATS2MSS1 = (((yyAritQuadSEPERATS2MSS1 - ((qXYSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS2 = (((yyAritQuadSEPERATS2MSS2 - ((qXYSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS4 = (((yyAritQuadSEPERATS2MSS4 - ((qXYSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2MSS1 = (((syxSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)^0.5);
            bStandSEPERATS2MSS2 = (((syxSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)^0.5);
            bStandSEPERATS2MSS4 = (((syxSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)^0.5);
    
            aStandSEPERATS2MSS1 = (bStandSEPERATS2MSS1 * ((xQuadSEPERATS2MSS1 / minPifVAL)^0.5));
            aStandSEPERATS2MSS2 = (bStandSEPERATS2MSS2 * ((xQuadSEPERATS2MSS2 / minPifVAL)^0.5));
            aStandSEPERATS2MSS4 = (bStandSEPERATS2MSS4 * ((xQuadSEPERATS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS1, bSEPERATS2MSS1, rSEPERATS2MSS1, rQuadSEPERATS2MSS1, aStandSEPERATS2MSS1, bStandSEPERATS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS2, bSEPERATS2MSS2, rSEPERATS2MSS2, rQuadSEPERATS2MSS2, aStandSEPERATS2MSS2, bStandSEPERATS2MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS4, bSEPERATS2MSS4, rSEPERATS2MSS4, rQuadSEPERATS2MSS4, aStandSEPERATS2MSS4, bStandSEPERATS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS2slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS2slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS2slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aSEPERATS2MSS1 + (bSEPERATS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aSEPERATS2MSS2 + (bSEPERATS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = REFS2MSS3[i,j];
                    OUT2MSS4[i,j] = (aSEPERATS2MSS4 + (bSEPERATS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT2MSS1);
            CreatePyramid(OUT2MSS2);
            CreatePyramid(OUT2MSS3);
            CreatePyramid(OUT2MSS4);
        
            CreateHistogram(OUT2MSS1);
            CreateHistogram(OUT2MSS2);
            CreateHistogram(OUT2MSS3);
            CreateHistogram(OUT2MSS4);
            
            CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors3 == 7 )
            {
            numeric xAritSEPERATS3ETM1, xAritSEPERATS3ETM2, xAritSEPERATS3ETM3, xAritSEPERATS3ETM4, xAritSEPERATS3ETM5, xAritSEPERATS3ETM7;
            numeric yAritSEPERATS3ETM1, yAritSEPERATS3ETM2, yAritSEPERATS3ETM3, yAritSEPERATS3ETM4, yAritSEPERATS3ETM5, yAritSEPERATS3ETM7;
    
            numeric aSEPERATS3ETM1, aSEPERATS3ETM2, aSEPERATS3ETM3, aSEPERATS3ETM4, aSEPERATS3ETM5, aSEPERATS3ETM7;
            numeric bSEPERATS3ETM1, bSEPERATS3ETM2, bSEPERATS3ETM3, bSEPERATS3ETM4, bSEPERATS3ETM5, bSEPERATS3ETM7;
            numeric rSEPERATS3ETM1, rSEPERATS3ETM2, rSEPERATS3ETM3, rSEPERATS3ETM4, rSEPERATS3ETM5, rSEPERATS3ETM7;
            numeric rQuadSEPERATS3ETM1, rQuadSEPERATS3ETM2, rQuadSEPERATS3ETM3, rQuadSEPERATS3ETM4, rQuadSEPERATS3ETM5, rQuadSEPERATS3ETM7;
            numeric syxSEPERATS3ETM1, syxSEPERATS3ETM2, syxSEPERATS3ETM3, syxSEPERATS3ETM4, syxSEPERATS3ETM5, syxSEPERATS3ETM7;
            numeric bStandSEPERATS3ETM1, bStandSEPERATS3ETM2, bStandSEPERATS3ETM3, bStandSEPERATS3ETM4, bStandSEPERATS3ETM5, bStandSEPERATS3ETM7;
            numeric aStandSEPERATS3ETM1, aStandSEPERATS3ETM2, aStandSEPERATS3ETM3, aStandSEPERATS3ETM4, aStandSEPERATS3ETM5, aStandSEPERATS3ETM7;
    
            numeric xSEPERATS3ETM1 = 0;
            numeric xSEPERATS3ETM2 = 0;
            numeric xSEPERATS3ETM3 = 0;
            numeric xSEPERATS3ETM4 = 0;
            numeric xSEPERATS3ETM5 = 0;
            numeric xSEPERATS3ETM7 = 0;
    
            numeric xQuadSEPERATS3ETM1 = 0;
            numeric xQuadSEPERATS3ETM2 = 0;
            numeric xQuadSEPERATS3ETM3 = 0;
            numeric xQuadSEPERATS3ETM4 = 0;
            numeric xQuadSEPERATS3ETM5 = 0;
            numeric xQuadSEPERATS3ETM7 = 0;
    
            numeric ySEPERATS3ETM1 = 0;
            numeric ySEPERATS3ETM2 = 0;
            numeric ySEPERATS3ETM3 = 0;
            numeric ySEPERATS3ETM4 = 0;
            numeric ySEPERATS3ETM5 = 0;
            numeric ySEPERATS3ETM7 = 0;
    
            numeric yQuadSEPERATS3ETM1 = 0;
            numeric yQuadSEPERATS3ETM2 = 0;
            numeric yQuadSEPERATS3ETM3 = 0;
            numeric yQuadSEPERATS3ETM4 = 0;
            numeric yQuadSEPERATS3ETM5 = 0;
            numeric yQuadSEPERATS3ETM7 = 0;
    
            numeric xySEPERATS3ETM1 = 0;
            numeric xySEPERATS3ETM2 = 0;
            numeric xySEPERATS3ETM3 = 0;
            numeric xySEPERATS3ETM4 = 0;
            numeric xySEPERATS3ETM5 = 0;
            numeric xySEPERATS3ETM7 = 0;
    
            numeric xxAritQuadSEPERATS3ETM1 = 0;
            numeric xxAritQuadSEPERATS3ETM2 = 0;
            numeric xxAritQuadSEPERATS3ETM3 = 0;
            numeric xxAritQuadSEPERATS3ETM4 = 0;
            numeric xxAritQuadSEPERATS3ETM5 = 0;
            numeric xxAritQuadSEPERATS3ETM7 = 0;
    
            numeric yyAritQuadSEPERATS3ETM1 = 0;
            numeric yyAritQuadSEPERATS3ETM2 = 0;
            numeric yyAritQuadSEPERATS3ETM3 = 0;
            numeric yyAritQuadSEPERATS3ETM4 = 0;
            numeric yyAritQuadSEPERATS3ETM5 = 0;
            numeric yyAritQuadSEPERATS3ETM7 = 0;
    
            numeric qXYSEPERATS3ETM1 = 0;
            numeric qXYSEPERATS3ETM2 = 0;
            numeric qXYSEPERATS3ETM3 = 0;
            numeric qXYSEPERATS3ETM4 = 0;
            numeric qXYSEPERATS3ETM5 = 0;
            numeric qXYSEPERATS3ETM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS3ETM1 = xSEPERATS3ETM1 + pifSEPERATS4S3TM1arrayRAND[m];
                xSEPERATS3ETM2 = xSEPERATS3ETM2 + pifSEPERATS4S3TM2arrayRAND[m];
                xSEPERATS3ETM3 = xSEPERATS3ETM3 + pifSEPERATS4S3TM3arrayRAND[m];
                xSEPERATS3ETM4 = xSEPERATS3ETM4 + pifSEPERATS4S3TM4arrayRAND[m];
                xSEPERATS3ETM5 = xSEPERATS3ETM5 + pifSEPERATS4S3TM5arrayRAND[m];
                xSEPERATS3ETM7 = xSEPERATS3ETM7 + pifSEPERATS4S3TM7arrayRAND[m];
    
                xQuadSEPERATS3ETM1 = (xQuadSEPERATS3ETM1 + (pifSEPERATS4S3TM1arrayRAND[m]^2));
                xQuadSEPERATS3ETM2 = (xQuadSEPERATS3ETM2 + (pifSEPERATS4S3TM2arrayRAND[m]^2));
                xQuadSEPERATS3ETM3 = (xQuadSEPERATS3ETM3 + (pifSEPERATS4S3TM3arrayRAND[m]^2));
                xQuadSEPERATS3ETM4 = (xQuadSEPERATS3ETM4 + (pifSEPERATS4S3TM4arrayRAND[m]^2));
                xQuadSEPERATS3ETM5 = (xQuadSEPERATS3ETM5 + (pifSEPERATS4S3TM5arrayRAND[m]^2));
                xQuadSEPERATS3ETM7 = (xQuadSEPERATS3ETM7 + (pifSEPERATS4S3TM7arrayRAND[m]^2));
    
                ySEPERATS3ETM1 = ySEPERATS3ETM1 + pifSEPERATS3slaveETM1arrayRAND[m];
                ySEPERATS3ETM2 = ySEPERATS3ETM2 + pifSEPERATS3slaveETM2arrayRAND[m];
                ySEPERATS3ETM3 = ySEPERATS3ETM3 + pifSEPERATS3slaveETM3arrayRAND[m];
                ySEPERATS3ETM4 = ySEPERATS3ETM4 + pifSEPERATS3slaveETM4arrayRAND[m];
                ySEPERATS3ETM5 = ySEPERATS3ETM5 + pifSEPERATS3slaveETM5arrayRAND[m];
                ySEPERATS3ETM7 = ySEPERATS3ETM7 + pifSEPERATS3slaveETM7arrayRAND[m];
                
                yQuadSEPERATS3ETM1 = (yQuadSEPERATS3ETM1 + (pifSEPERATS3slaveETM1arrayRAND[m]^2));
                yQuadSEPERATS3ETM2 = (yQuadSEPERATS3ETM2 + (pifSEPERATS3slaveETM2arrayRAND[m]^2));
                yQuadSEPERATS3ETM3 = (yQuadSEPERATS3ETM3 + (pifSEPERATS3slaveETM3arrayRAND[m]^2));
                yQuadSEPERATS3ETM4 = (yQuadSEPERATS3ETM4 + (pifSEPERATS3slaveETM4arrayRAND[m]^2));
                yQuadSEPERATS3ETM5 = (yQuadSEPERATS3ETM5 + (pifSEPERATS3slaveETM5arrayRAND[m]^2));
                yQuadSEPERATS3ETM7 = (yQuadSEPERATS3ETM7 + (pifSEPERATS3slaveETM7arrayRAND[m]^2));
    
                xySEPERATS3ETM1 = (xySEPERATS3ETM1 + (pifSEPERATS4S3TM1arrayRAND[m] * pifSEPERATS3slaveETM1arrayRAND[m]));
                xySEPERATS3ETM2 = (xySEPERATS3ETM2 + (pifSEPERATS4S3TM2arrayRAND[m] * pifSEPERATS3slaveETM2arrayRAND[m]));
                xySEPERATS3ETM3 = (xySEPERATS3ETM3 + (pifSEPERATS4S3TM3arrayRAND[m] * pifSEPERATS3slaveETM3arrayRAND[m]));
                xySEPERATS3ETM4 = (xySEPERATS3ETM4 + (pifSEPERATS4S3TM4arrayRAND[m] * pifSEPERATS3slaveETM4arrayRAND[m]));
                xySEPERATS3ETM5 = (xySEPERATS3ETM5 + (pifSEPERATS4S3TM5arrayRAND[m] * pifSEPERATS3slaveETM5arrayRAND[m]));
                xySEPERATS3ETM7 = (xySEPERATS3ETM7 + (pifSEPERATS4S3TM7arrayRAND[m] * pifSEPERATS3slaveETM7arrayRAND[m]));
            }	
            
            xAritSEPERATS3ETM1 = xSEPERATS3ETM1 / minPifVAL;
            xAritSEPERATS3ETM2 = xSEPERATS3ETM2 / minPifVAL;
            xAritSEPERATS3ETM3 = xSEPERATS3ETM3 / minPifVAL;
            xAritSEPERATS3ETM4 = xSEPERATS3ETM4 / minPifVAL;
            xAritSEPERATS3ETM5 = xSEPERATS3ETM5 / minPifVAL;
            xAritSEPERATS3ETM7 = xSEPERATS3ETM7 / minPifVAL;
    
            yAritSEPERATS3ETM1 = ySEPERATS3ETM1 / minPifVAL;
            yAritSEPERATS3ETM2 = ySEPERATS3ETM2 / minPifVAL;
            yAritSEPERATS3ETM3 = ySEPERATS3ETM3 / minPifVAL;
            yAritSEPERATS3ETM4 = ySEPERATS3ETM4 / minPifVAL;
            yAritSEPERATS3ETM5 = ySEPERATS3ETM5 / minPifVAL;
            yAritSEPERATS3ETM7 = ySEPERATS3ETM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3ETM1 = (xxAritQuadSEPERATS3ETM1 + ((pifSEPERATS4S3TM1arrayRAND[n] - xAritSEPERATS3ETM1)^2));
                xxAritQuadSEPERATS3ETM2 = (xxAritQuadSEPERATS3ETM2 + ((pifSEPERATS4S3TM2arrayRAND[n] - xAritSEPERATS3ETM2)^2));
                xxAritQuadSEPERATS3ETM3 = (xxAritQuadSEPERATS3ETM3 + ((pifSEPERATS4S3TM3arrayRAND[n] - xAritSEPERATS3ETM3)^2));
                xxAritQuadSEPERATS3ETM4 = (xxAritQuadSEPERATS3ETM4 + ((pifSEPERATS4S3TM4arrayRAND[n] - xAritSEPERATS3ETM4)^2));
                xxAritQuadSEPERATS3ETM5 = (xxAritQuadSEPERATS3ETM5 + ((pifSEPERATS4S3TM5arrayRAND[n] - xAritSEPERATS3ETM5)^2));
                xxAritQuadSEPERATS3ETM7 = (xxAritQuadSEPERATS3ETM7 + ((pifSEPERATS4S3TM7arrayRAND[n] - xAritSEPERATS3ETM7)^2));
    
                yyAritQuadSEPERATS3ETM1 = (yyAritQuadSEPERATS3ETM1 + ((pifSEPERATS3slaveETM1arrayRAND[n] - yAritSEPERATS3ETM1)^2));
                yyAritQuadSEPERATS3ETM2 = (yyAritQuadSEPERATS3ETM2 + ((pifSEPERATS3slaveETM2arrayRAND[n] - yAritSEPERATS3ETM2)^2));
                yyAritQuadSEPERATS3ETM3 = (yyAritQuadSEPERATS3ETM3 + ((pifSEPERATS3slaveETM3arrayRAND[n] - yAritSEPERATS3ETM3)^2));
                yyAritQuadSEPERATS3ETM4 = (yyAritQuadSEPERATS3ETM4 + ((pifSEPERATS3slaveETM4arrayRAND[n] - yAritSEPERATS3ETM4)^2));
                yyAritQuadSEPERATS3ETM5 = (yyAritQuadSEPERATS3ETM5 + ((pifSEPERATS3slaveETM5arrayRAND[n] - yAritSEPERATS3ETM5)^2));
                yyAritQuadSEPERATS3ETM7 = (yyAritQuadSEPERATS3ETM7 + ((pifSEPERATS3slaveETM7arrayRAND[n] - yAritSEPERATS3ETM7)^2));
    
                qXYSEPERATS3ETM1 = (qXYSEPERATS3ETM1 + ((pifSEPERATS4S3TM1arrayRAND[n] - xAritSEPERATS3ETM1) * (pifSEPERATS3slaveETM1arrayRAND[n] - yAritSEPERATS3ETM1)));
                qXYSEPERATS3ETM2 = (qXYSEPERATS3ETM2 + ((pifSEPERATS4S3TM2arrayRAND[n] - xAritSEPERATS3ETM2) * (pifSEPERATS3slaveETM2arrayRAND[n] - yAritSEPERATS3ETM2)));
                qXYSEPERATS3ETM3 = (qXYSEPERATS3ETM3 + ((pifSEPERATS4S3TM3arrayRAND[n] - xAritSEPERATS3ETM3) * (pifSEPERATS3slaveETM3arrayRAND[n] - yAritSEPERATS3ETM3)));
                qXYSEPERATS3ETM4 = (qXYSEPERATS3ETM4 + ((pifSEPERATS4S3TM4arrayRAND[n] - xAritSEPERATS3ETM4) * (pifSEPERATS3slaveETM4arrayRAND[n] - yAritSEPERATS3ETM4)));
                qXYSEPERATS3ETM5 = (qXYSEPERATS3ETM5 + ((pifSEPERATS4S3TM5arrayRAND[n] - xAritSEPERATS3ETM5) * (pifSEPERATS3slaveETM5arrayRAND[n] - yAritSEPERATS3ETM5)));
                qXYSEPERATS3ETM7 = (qXYSEPERATS3ETM7 + ((pifSEPERATS4S3TM7arrayRAND[n] - xAritSEPERATS3ETM7) * (pifSEPERATS3slaveETM7arrayRAND[n] - yAritSEPERATS3ETM7)));
            }
        
            aSEPERATS3ETM1 = (((xQuadSEPERATS3ETM1 * ySEPERATS3ETM1) - (xSEPERATS3ETM1 * xySEPERATS3ETM1)) / ((minPifVAL * xQuadSEPERATS3ETM1) - (xSEPERATS3ETM1^2)));
            aSEPERATS3ETM2 = (((xQuadSEPERATS3ETM2 * ySEPERATS3ETM2) - (xSEPERATS3ETM2 * xySEPERATS3ETM2)) / ((minPifVAL * xQuadSEPERATS3ETM2) - (xSEPERATS3ETM2^2)));
            aSEPERATS3ETM3 = (((xQuadSEPERATS3ETM3 * ySEPERATS3ETM3) - (xSEPERATS3ETM3 * xySEPERATS3ETM3)) / ((minPifVAL * xQuadSEPERATS3ETM3) - (xSEPERATS3ETM3^2)));
            aSEPERATS3ETM4 = (((xQuadSEPERATS3ETM4 * ySEPERATS3ETM4) - (xSEPERATS3ETM4 * xySEPERATS3ETM4)) / ((minPifVAL * xQuadSEPERATS3ETM4) - (xSEPERATS3ETM4^2)));
            aSEPERATS3ETM5 = (((xQuadSEPERATS3ETM5 * ySEPERATS3ETM5) - (xSEPERATS3ETM5 * xySEPERATS3ETM5)) / ((minPifVAL * xQuadSEPERATS3ETM5) - (xSEPERATS3ETM5^2)));
            aSEPERATS3ETM7 = (((xQuadSEPERATS3ETM7 * ySEPERATS3ETM7) - (xSEPERATS3ETM7 * xySEPERATS3ETM7)) / ((minPifVAL * xQuadSEPERATS3ETM7) - (xSEPERATS3ETM7^2)));
            
            bSEPERATS3ETM1 = qXYSEPERATS3ETM1 / xxAritQuadSEPERATS3ETM1;
            bSEPERATS3ETM2 = qXYSEPERATS3ETM2 / xxAritQuadSEPERATS3ETM2;
            bSEPERATS3ETM3 = qXYSEPERATS3ETM3 / xxAritQuadSEPERATS3ETM3;
            bSEPERATS3ETM4 = qXYSEPERATS3ETM4 / xxAritQuadSEPERATS3ETM4;
            bSEPERATS3ETM5 = qXYSEPERATS3ETM5 / xxAritQuadSEPERATS3ETM5;
            bSEPERATS3ETM7 = qXYSEPERATS3ETM7 / xxAritQuadSEPERATS3ETM7;
    
            rSEPERATS3ETM1 = (qXYSEPERATS3ETM1 / ((xxAritQuadSEPERATS3ETM1 * yyAritQuadSEPERATS3ETM1)^0.5));
            rSEPERATS3ETM2 = (qXYSEPERATS3ETM2 / ((xxAritQuadSEPERATS3ETM2 * yyAritQuadSEPERATS3ETM2)^0.5));
            rSEPERATS3ETM3 = (qXYSEPERATS3ETM3 / ((xxAritQuadSEPERATS3ETM3 * yyAritQuadSEPERATS3ETM3)^0.5));
            rSEPERATS3ETM4 = (qXYSEPERATS3ETM4 / ((xxAritQuadSEPERATS3ETM4 * yyAritQuadSEPERATS3ETM4)^0.5));
            rSEPERATS3ETM5 = (qXYSEPERATS3ETM5 / ((xxAritQuadSEPERATS3ETM5 * yyAritQuadSEPERATS3ETM5)^0.5));
            rSEPERATS3ETM7 = (qXYSEPERATS3ETM7 / ((xxAritQuadSEPERATS3ETM7 * yyAritQuadSEPERATS3ETM7)^0.5));
    
            rQuadSEPERATS3ETM1 = ((rSEPERATS3ETM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3ETM2 = ((rSEPERATS3ETM2^2) * 100);
            rQuadSEPERATS3ETM3 = ((rSEPERATS3ETM3^2) * 100);
            rQuadSEPERATS3ETM4 = ((rSEPERATS3ETM4^2) * 100);
            rQuadSEPERATS3ETM5 = ((rSEPERATS3ETM5^2) * 100);
            rQuadSEPERATS3ETM7 = ((rSEPERATS3ETM7^2) * 100);
        
            syxSEPERATS3ETM1 = (((yyAritQuadSEPERATS3ETM1 - ((qXYSEPERATS3ETM1^2) / xxAritQuadSEPERATS3ETM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM2 = (((yyAritQuadSEPERATS3ETM2 - ((qXYSEPERATS3ETM2^2) / xxAritQuadSEPERATS3ETM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM3 = (((yyAritQuadSEPERATS3ETM3 - ((qXYSEPERATS3ETM3^2) / xxAritQuadSEPERATS3ETM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM4 = (((yyAritQuadSEPERATS3ETM4 - ((qXYSEPERATS3ETM4^2) / xxAritQuadSEPERATS3ETM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM5 = (((yyAritQuadSEPERATS3ETM5 - ((qXYSEPERATS3ETM5^2) / xxAritQuadSEPERATS3ETM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3ETM7 = (((yyAritQuadSEPERATS3ETM7 - ((qXYSEPERATS3ETM7^2) / xxAritQuadSEPERATS3ETM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3ETM1 = (((syxSEPERATS3ETM1^2) / xxAritQuadSEPERATS3ETM1)^0.5);
            bStandSEPERATS3ETM2 = (((syxSEPERATS3ETM2^2) / xxAritQuadSEPERATS3ETM2)^0.5);
            bStandSEPERATS3ETM3 = (((syxSEPERATS3ETM3^2) / xxAritQuadSEPERATS3ETM3)^0.5);
            bStandSEPERATS3ETM4 = (((syxSEPERATS3ETM4^2) / xxAritQuadSEPERATS3ETM4)^0.5);
            bStandSEPERATS3ETM5 = (((syxSEPERATS3ETM5^2) / xxAritQuadSEPERATS3ETM5)^0.5);
            bStandSEPERATS3ETM7 = (((syxSEPERATS3ETM7^2) / xxAritQuadSEPERATS3ETM7)^0.5);
    
            aStandSEPERATS3ETM1 = (bStandSEPERATS3ETM1 * ((xQuadSEPERATS3ETM1 / minPifVAL)^0.5));
            aStandSEPERATS3ETM2 = (bStandSEPERATS3ETM2 * ((xQuadSEPERATS3ETM2 / minPifVAL)^0.5));
            aStandSEPERATS3ETM3 = (bStandSEPERATS3ETM3 * ((xQuadSEPERATS3ETM3 / minPifVAL)^0.5));
            aStandSEPERATS3ETM4 = (bStandSEPERATS3ETM4 * ((xQuadSEPERATS3ETM4 / minPifVAL)^0.5));
            aStandSEPERATS3ETM5 = (bStandSEPERATS3ETM5 * ((xQuadSEPERATS3ETM5 / minPifVAL)^0.5));
            aStandSEPERATS3ETM7 = (bStandSEPERATS3ETM7 * ((xQuadSEPERATS3ETM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (ETM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("ETM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM1, bSEPERATS3ETM1, rSEPERATS3ETM1, rQuadSEPERATS3ETM1, aStandSEPERATS3ETM1, bStandSEPERATS3ETM1);
            printf("ETM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM2, bSEPERATS3ETM2, rSEPERATS3ETM2, rQuadSEPERATS3ETM2, aStandSEPERATS3ETM2, bStandSEPERATS3ETM2);
            printf("ETM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM3, bSEPERATS3ETM3, rSEPERATS3ETM3, rQuadSEPERATS3ETM3, aStandSEPERATS3ETM3, bStandSEPERATS3ETM3);
            printf("ETM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM4, bSEPERATS3ETM4, rSEPERATS3ETM4, rQuadSEPERATS3ETM4, aStandSEPERATS3ETM4, bStandSEPERATS3ETM4);
            printf("ETM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3ETM5, bSEPERATS3ETM5, rSEPERATS3ETM5, rQuadSEPERATS3ETM5, aStandSEPERATS3ETM5, bStandSEPERATS3ETM5);
            printf("ETM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS3ETM7, bSEPERATS3ETM7, rSEPERATS3ETM7, rQuadSEPERATS3ETM7, aStandSEPERATS3ETM7, bStandSEPERATS3ETM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("ETM1: %12f ", pifSEPERATS3slaveETM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM1arrayRAND[minPifVAL]);
    
            printf("ETM2: %12f ", pifSEPERATS3slaveETM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM2arrayRAND[minPifVAL]);
    
            printf("ETM3: %12f ", pifSEPERATS3slaveETM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM3arrayRAND[minPifVAL]);
    
            printf("ETM4: %12f ", pifSEPERATS3slaveETM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM4arrayRAND[minPifVAL]);
    
            printf("ETM5: %12f ", pifSEPERATS3slaveETM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveETM5arrayRAND[minPifVAL]);
    
            printf("ETM7: %12f ", pifSEPERATS3slaveETM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveETM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS3slaveETM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to ETMlins
            {
                for j = 1 to ETMcols
                {
                    OUT3ETM1[i,j] = (aSEPERATS3ETM1 + (bSEPERATS3ETM1 * REFS3ETM1[i,j]));
                    OUT3ETM2[i,j] = (aSEPERATS3ETM2 + (bSEPERATS3ETM2 * REFS3ETM2[i,j]));
                    OUT3ETM3[i,j] = (aSEPERATS3ETM3 + (bSEPERATS3ETM3 * REFS3ETM3[i,j]));
                    OUT3ETM4[i,j] = (aSEPERATS3ETM4 + (bSEPERATS3ETM4 * REFS3ETM4[i,j]));
                    OUT3ETM5[i,j] = (aSEPERATS3ETM5 + (bSEPERATS3ETM5 * REFS3ETM5[i,j]));
                    OUT3ETM7[i,j] = (aSEPERATS3ETM7 + (bSEPERATS3ETM7 * REFS3ETM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3ETM1);
        	CreatePyramid(OUT3ETM2);
        	CreatePyramid(OUT3ETM3);
        	CreatePyramid(OUT3ETM4);
        	CreatePyramid(OUT3ETM5);
        	CreatePyramid(OUT3ETM7);
        
        	CreateHistogram(OUT3ETM1);
        	CreateHistogram(OUT3ETM2);
        	CreateHistogram(OUT3ETM3);
        	CreateHistogram(OUT3ETM4);
        	CreateHistogram(OUT3ETM5);
        	CreateHistogram(OUT3ETM7);
            CloseRaster(REFS3ETM1);
            CloseRaster(REFS3ETM2);
            CloseRaster(REFS3ETM3);
            CloseRaster(REFS3ETM4);
            CloseRaster(REFS3ETM5);
            CloseRaster(REFS3ETM7);
    
            CloseRaster(OUT3ETM1);
            CloseRaster(OUT3ETM2);
            CloseRaster(OUT3ETM3);
            CloseRaster(OUT3ETM4);
            CloseRaster(OUT3ETM5);
            CloseRaster(OUT3ETM7);
            
        	printf("Scene 3 (ETM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else if ( sensors3 == 6 )
            {
            numeric xAritSEPERATS3TM1, xAritSEPERATS3TM2, xAritSEPERATS3TM3, xAritSEPERATS3TM4, xAritSEPERATS3TM5, xAritSEPERATS3TM7;
            numeric yAritSEPERATS3TM1, yAritSEPERATS3TM2, yAritSEPERATS3TM3, yAritSEPERATS3TM4, yAritSEPERATS3TM5, yAritSEPERATS3TM7;
    
            numeric aSEPERATS3TM1, aSEPERATS3TM2, aSEPERATS3TM3, aSEPERATS3TM4, aSEPERATS3TM5, aSEPERATS3TM7;
            numeric bSEPERATS3TM1, bSEPERATS3TM2, bSEPERATS3TM3, bSEPERATS3TM4, bSEPERATS3TM5, bSEPERATS3TM7;
            numeric rSEPERATS3TM1, rSEPERATS3TM2, rSEPERATS3TM3, rSEPERATS3TM4, rSEPERATS3TM5, rSEPERATS3TM7;
            numeric rQuadSEPERATS3TM1, rQuadSEPERATS3TM2, rQuadSEPERATS3TM3, rQuadSEPERATS3TM4, rQuadSEPERATS3TM5, rQuadSEPERATS3TM7;
            numeric syxSEPERATS3TM1, syxSEPERATS3TM2, syxSEPERATS3TM3, syxSEPERATS3TM4, syxSEPERATS3TM5, syxSEPERATS3TM7;
            numeric bStandSEPERATS3TM1, bStandSEPERATS3TM2, bStandSEPERATS3TM3, bStandSEPERATS3TM4, bStandSEPERATS3TM5, bStandSEPERATS3TM7;
            numeric aStandSEPERATS3TM1, aStandSEPERATS3TM2, aStandSEPERATS3TM3, aStandSEPERATS3TM4, aStandSEPERATS3TM5, aStandSEPERATS3TM7;
    
            numeric xSEPERATS3TM1 = 0;
            numeric xSEPERATS3TM2 = 0;
            numeric xSEPERATS3TM3 = 0;
            numeric xSEPERATS3TM4 = 0;
            numeric xSEPERATS3TM5 = 0;
            numeric xSEPERATS3TM7 = 0;
    
            numeric xQuadSEPERATS3TM1 = 0;
            numeric xQuadSEPERATS3TM2 = 0;
            numeric xQuadSEPERATS3TM3 = 0;
            numeric xQuadSEPERATS3TM4 = 0;
            numeric xQuadSEPERATS3TM5 = 0;
            numeric xQuadSEPERATS3TM7 = 0;
    
            numeric ySEPERATS3TM1 = 0;
            numeric ySEPERATS3TM2 = 0;
            numeric ySEPERATS3TM3 = 0;
            numeric ySEPERATS3TM4 = 0;
            numeric ySEPERATS3TM5 = 0;
            numeric ySEPERATS3TM7 = 0;
    
            numeric yQuadSEPERATS3TM1 = 0;
            numeric yQuadSEPERATS3TM2 = 0;
            numeric yQuadSEPERATS3TM3 = 0;
            numeric yQuadSEPERATS3TM4 = 0;
            numeric yQuadSEPERATS3TM5 = 0;
            numeric yQuadSEPERATS3TM7 = 0;
    
            numeric xySEPERATS3TM1 = 0;
            numeric xySEPERATS3TM2 = 0;
            numeric xySEPERATS3TM3 = 0;
            numeric xySEPERATS3TM4 = 0;
            numeric xySEPERATS3TM5 = 0;
            numeric xySEPERATS3TM7 = 0;
    
            numeric xxAritQuadSEPERATS3TM1 = 0;
            numeric xxAritQuadSEPERATS3TM2 = 0;
            numeric xxAritQuadSEPERATS3TM3 = 0;
            numeric xxAritQuadSEPERATS3TM4 = 0;
            numeric xxAritQuadSEPERATS3TM5 = 0;
            numeric xxAritQuadSEPERATS3TM7 = 0;
    
            numeric yyAritQuadSEPERATS3TM1 = 0;
            numeric yyAritQuadSEPERATS3TM2 = 0;
            numeric yyAritQuadSEPERATS3TM3 = 0;
            numeric yyAritQuadSEPERATS3TM4 = 0;
            numeric yyAritQuadSEPERATS3TM5 = 0;
            numeric yyAritQuadSEPERATS3TM7 = 0;
    
            numeric qXYSEPERATS3TM1 = 0;
            numeric qXYSEPERATS3TM2 = 0;
            numeric qXYSEPERATS3TM3 = 0;
            numeric qXYSEPERATS3TM4 = 0;
            numeric qXYSEPERATS3TM5 = 0;
            numeric qXYSEPERATS3TM7 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS3TM1 = xSEPERATS3TM1 + pifSEPERATS4S3TM1arrayRAND[m];
                xSEPERATS3TM2 = xSEPERATS3TM2 + pifSEPERATS4S3TM2arrayRAND[m];
                xSEPERATS3TM3 = xSEPERATS3TM3 + pifSEPERATS4S3TM3arrayRAND[m];
                xSEPERATS3TM4 = xSEPERATS3TM4 + pifSEPERATS4S3TM4arrayRAND[m];
                xSEPERATS3TM5 = xSEPERATS3TM5 + pifSEPERATS4S3TM5arrayRAND[m];
                xSEPERATS3TM7 = xSEPERATS3TM7 + pifSEPERATS4S3TM7arrayRAND[m];
    
                xQuadSEPERATS3TM1 = (xQuadSEPERATS3TM1 + (pifSEPERATS4S3TM1arrayRAND[m]^2));
                xQuadSEPERATS3TM2 = (xQuadSEPERATS3TM2 + (pifSEPERATS4S3TM2arrayRAND[m]^2));
                xQuadSEPERATS3TM3 = (xQuadSEPERATS3TM3 + (pifSEPERATS4S3TM3arrayRAND[m]^2));
                xQuadSEPERATS3TM4 = (xQuadSEPERATS3TM4 + (pifSEPERATS4S3TM4arrayRAND[m]^2));
                xQuadSEPERATS3TM5 = (xQuadSEPERATS3TM5 + (pifSEPERATS4S3TM5arrayRAND[m]^2));
                xQuadSEPERATS3TM7 = (xQuadSEPERATS3TM7 + (pifSEPERATS4S3TM7arrayRAND[m]^2));
    
                ySEPERATS3TM1 = ySEPERATS3TM1 + pifSEPERATS3slaveTM1arrayRAND[m];
                ySEPERATS3TM2 = ySEPERATS3TM2 + pifSEPERATS3slaveTM2arrayRAND[m];
                ySEPERATS3TM3 = ySEPERATS3TM3 + pifSEPERATS3slaveTM3arrayRAND[m];
                ySEPERATS3TM4 = ySEPERATS3TM4 + pifSEPERATS3slaveTM4arrayRAND[m];
                ySEPERATS3TM5 = ySEPERATS3TM5 + pifSEPERATS3slaveTM5arrayRAND[m];
                ySEPERATS3TM7 = ySEPERATS3TM7 + pifSEPERATS3slaveTM7arrayRAND[m];
                
                yQuadSEPERATS3TM1 = (yQuadSEPERATS3TM1 + (pifSEPERATS3slaveTM1arrayRAND[m]^2));
                yQuadSEPERATS3TM2 = (yQuadSEPERATS3TM2 + (pifSEPERATS3slaveTM2arrayRAND[m]^2));
                yQuadSEPERATS3TM3 = (yQuadSEPERATS3TM3 + (pifSEPERATS3slaveTM3arrayRAND[m]^2));
                yQuadSEPERATS3TM4 = (yQuadSEPERATS3TM4 + (pifSEPERATS3slaveTM4arrayRAND[m]^2));
                yQuadSEPERATS3TM5 = (yQuadSEPERATS3TM5 + (pifSEPERATS3slaveTM5arrayRAND[m]^2));
                yQuadSEPERATS3TM7 = (yQuadSEPERATS3TM7 + (pifSEPERATS3slaveTM7arrayRAND[m]^2));
    
                xySEPERATS3TM1 = (xySEPERATS3TM1 + (pifSEPERATS4S3TM1arrayRAND[m] * pifSEPERATS3slaveTM1arrayRAND[m]));
                xySEPERATS3TM2 = (xySEPERATS3TM2 + (pifSEPERATS4S3TM2arrayRAND[m] * pifSEPERATS3slaveTM2arrayRAND[m]));
                xySEPERATS3TM3 = (xySEPERATS3TM3 + (pifSEPERATS4S3TM3arrayRAND[m] * pifSEPERATS3slaveTM3arrayRAND[m]));
                xySEPERATS3TM4 = (xySEPERATS3TM4 + (pifSEPERATS4S3TM4arrayRAND[m] * pifSEPERATS3slaveTM4arrayRAND[m]));
                xySEPERATS3TM5 = (xySEPERATS3TM5 + (pifSEPERATS4S3TM5arrayRAND[m] * pifSEPERATS3slaveTM5arrayRAND[m]));
                xySEPERATS3TM7 = (xySEPERATS3TM7 + (pifSEPERATS4S3TM7arrayRAND[m] * pifSEPERATS3slaveTM7arrayRAND[m]));
            }	
            
            xAritSEPERATS3TM1 = xSEPERATS3TM1 / minPifVAL;
            xAritSEPERATS3TM2 = xSEPERATS3TM2 / minPifVAL;
            xAritSEPERATS3TM3 = xSEPERATS3TM3 / minPifVAL;
            xAritSEPERATS3TM4 = xSEPERATS3TM4 / minPifVAL;
            xAritSEPERATS3TM5 = xSEPERATS3TM5 / minPifVAL;
            xAritSEPERATS3TM7 = xSEPERATS3TM7 / minPifVAL;
    
            yAritSEPERATS3TM1 = ySEPERATS3TM1 / minPifVAL;
            yAritSEPERATS3TM2 = ySEPERATS3TM2 / minPifVAL;
            yAritSEPERATS3TM3 = ySEPERATS3TM3 / minPifVAL;
            yAritSEPERATS3TM4 = ySEPERATS3TM4 / minPifVAL;
            yAritSEPERATS3TM5 = ySEPERATS3TM5 / minPifVAL;
            yAritSEPERATS3TM7 = ySEPERATS3TM7 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3TM1 = (xxAritQuadSEPERATS3TM1 + ((pifSEPERATS4S3TM1arrayRAND[n] - xAritSEPERATS3TM1)^2));
                xxAritQuadSEPERATS3TM2 = (xxAritQuadSEPERATS3TM2 + ((pifSEPERATS4S3TM2arrayRAND[n] - xAritSEPERATS3TM2)^2));
                xxAritQuadSEPERATS3TM3 = (xxAritQuadSEPERATS3TM3 + ((pifSEPERATS4S3TM3arrayRAND[n] - xAritSEPERATS3TM3)^2));
                xxAritQuadSEPERATS3TM4 = (xxAritQuadSEPERATS3TM4 + ((pifSEPERATS4S3TM4arrayRAND[n] - xAritSEPERATS3TM4)^2));
                xxAritQuadSEPERATS3TM5 = (xxAritQuadSEPERATS3TM5 + ((pifSEPERATS4S3TM5arrayRAND[n] - xAritSEPERATS3TM5)^2));
                xxAritQuadSEPERATS3TM7 = (xxAritQuadSEPERATS3TM7 + ((pifSEPERATS4S3TM7arrayRAND[n] - xAritSEPERATS3TM7)^2));
    
                yyAritQuadSEPERATS3TM1 = (yyAritQuadSEPERATS3TM1 + ((pifSEPERATS3slaveTM1arrayRAND[n] - yAritSEPERATS3TM1)^2));
                yyAritQuadSEPERATS3TM2 = (yyAritQuadSEPERATS3TM2 + ((pifSEPERATS3slaveTM2arrayRAND[n] - yAritSEPERATS3TM2)^2));
                yyAritQuadSEPERATS3TM3 = (yyAritQuadSEPERATS3TM3 + ((pifSEPERATS3slaveTM3arrayRAND[n] - yAritSEPERATS3TM3)^2));
                yyAritQuadSEPERATS3TM4 = (yyAritQuadSEPERATS3TM4 + ((pifSEPERATS3slaveTM4arrayRAND[n] - yAritSEPERATS3TM4)^2));
                yyAritQuadSEPERATS3TM5 = (yyAritQuadSEPERATS3TM5 + ((pifSEPERATS3slaveTM5arrayRAND[n] - yAritSEPERATS3TM5)^2));
                yyAritQuadSEPERATS3TM7 = (yyAritQuadSEPERATS3TM7 + ((pifSEPERATS3slaveTM7arrayRAND[n] - yAritSEPERATS3TM7)^2));
    
                qXYSEPERATS3TM1 = (qXYSEPERATS3TM1 + ((pifSEPERATS4S3TM1arrayRAND[n] - xAritSEPERATS3TM1) * (pifSEPERATS3slaveTM1arrayRAND[n] - yAritSEPERATS3TM1)));
                qXYSEPERATS3TM2 = (qXYSEPERATS3TM2 + ((pifSEPERATS4S3TM2arrayRAND[n] - xAritSEPERATS3TM2) * (pifSEPERATS3slaveTM2arrayRAND[n] - yAritSEPERATS3TM2)));
                qXYSEPERATS3TM3 = (qXYSEPERATS3TM3 + ((pifSEPERATS4S3TM3arrayRAND[n] - xAritSEPERATS3TM3) * (pifSEPERATS3slaveTM3arrayRAND[n] - yAritSEPERATS3TM3)));
                qXYSEPERATS3TM4 = (qXYSEPERATS3TM4 + ((pifSEPERATS4S3TM4arrayRAND[n] - xAritSEPERATS3TM4) * (pifSEPERATS3slaveTM4arrayRAND[n] - yAritSEPERATS3TM4)));
                qXYSEPERATS3TM5 = (qXYSEPERATS3TM5 + ((pifSEPERATS4S3TM5arrayRAND[n] - xAritSEPERATS3TM5) * (pifSEPERATS3slaveTM5arrayRAND[n] - yAritSEPERATS3TM5)));
                qXYSEPERATS3TM7 = (qXYSEPERATS3TM7 + ((pifSEPERATS4S3TM7arrayRAND[n] - xAritSEPERATS3TM7) * (pifSEPERATS3slaveTM7arrayRAND[n] - yAritSEPERATS3TM7)));
            }
        
            aSEPERATS3TM1 = (((xQuadSEPERATS3TM1 * ySEPERATS3TM1) - (xSEPERATS3TM1 * xySEPERATS3TM1)) / ((minPifVAL * xQuadSEPERATS3TM1) - (xSEPERATS3TM1^2)));
            aSEPERATS3TM2 = (((xQuadSEPERATS3TM2 * ySEPERATS3TM2) - (xSEPERATS3TM2 * xySEPERATS3TM2)) / ((minPifVAL * xQuadSEPERATS3TM2) - (xSEPERATS3TM2^2)));
            aSEPERATS3TM3 = (((xQuadSEPERATS3TM3 * ySEPERATS3TM3) - (xSEPERATS3TM3 * xySEPERATS3TM3)) / ((minPifVAL * xQuadSEPERATS3TM3) - (xSEPERATS3TM3^2)));
            aSEPERATS3TM4 = (((xQuadSEPERATS3TM4 * ySEPERATS3TM4) - (xSEPERATS3TM4 * xySEPERATS3TM4)) / ((minPifVAL * xQuadSEPERATS3TM4) - (xSEPERATS3TM4^2)));
            aSEPERATS3TM5 = (((xQuadSEPERATS3TM5 * ySEPERATS3TM5) - (xSEPERATS3TM5 * xySEPERATS3TM5)) / ((minPifVAL * xQuadSEPERATS3TM5) - (xSEPERATS3TM5^2)));
            aSEPERATS3TM7 = (((xQuadSEPERATS3TM7 * ySEPERATS3TM7) - (xSEPERATS3TM7 * xySEPERATS3TM7)) / ((minPifVAL * xQuadSEPERATS3TM7) - (xSEPERATS3TM7^2)));
            
            bSEPERATS3TM1 = qXYSEPERATS3TM1 / xxAritQuadSEPERATS3TM1;
            bSEPERATS3TM2 = qXYSEPERATS3TM2 / xxAritQuadSEPERATS3TM2;
            bSEPERATS3TM3 = qXYSEPERATS3TM3 / xxAritQuadSEPERATS3TM3;
            bSEPERATS3TM4 = qXYSEPERATS3TM4 / xxAritQuadSEPERATS3TM4;
            bSEPERATS3TM5 = qXYSEPERATS3TM5 / xxAritQuadSEPERATS3TM5;
            bSEPERATS3TM7 = qXYSEPERATS3TM7 / xxAritQuadSEPERATS3TM7;
    
            rSEPERATS3TM1 = (qXYSEPERATS3TM1 / ((xxAritQuadSEPERATS3TM1 * yyAritQuadSEPERATS3TM1)^0.5));
            rSEPERATS3TM2 = (qXYSEPERATS3TM2 / ((xxAritQuadSEPERATS3TM2 * yyAritQuadSEPERATS3TM2)^0.5));
            rSEPERATS3TM3 = (qXYSEPERATS3TM3 / ((xxAritQuadSEPERATS3TM3 * yyAritQuadSEPERATS3TM3)^0.5));
            rSEPERATS3TM4 = (qXYSEPERATS3TM4 / ((xxAritQuadSEPERATS3TM4 * yyAritQuadSEPERATS3TM4)^0.5));
            rSEPERATS3TM5 = (qXYSEPERATS3TM5 / ((xxAritQuadSEPERATS3TM5 * yyAritQuadSEPERATS3TM5)^0.5));
            rSEPERATS3TM7 = (qXYSEPERATS3TM7 / ((xxAritQuadSEPERATS3TM7 * yyAritQuadSEPERATS3TM7)^0.5));
    
            rQuadSEPERATS3TM1 = ((rSEPERATS3TM1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3TM2 = ((rSEPERATS3TM2^2) * 100);
            rQuadSEPERATS3TM3 = ((rSEPERATS3TM3^2) * 100);
            rQuadSEPERATS3TM4 = ((rSEPERATS3TM4^2) * 100);
            rQuadSEPERATS3TM5 = ((rSEPERATS3TM5^2) * 100);
            rQuadSEPERATS3TM7 = ((rSEPERATS3TM7^2) * 100);
        
            syxSEPERATS3TM1 = (((yyAritQuadSEPERATS3TM1 - ((qXYSEPERATS3TM1^2) / xxAritQuadSEPERATS3TM1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM2 = (((yyAritQuadSEPERATS3TM2 - ((qXYSEPERATS3TM2^2) / xxAritQuadSEPERATS3TM2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM3 = (((yyAritQuadSEPERATS3TM3 - ((qXYSEPERATS3TM3^2) / xxAritQuadSEPERATS3TM3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM4 = (((yyAritQuadSEPERATS3TM4 - ((qXYSEPERATS3TM4^2) / xxAritQuadSEPERATS3TM4)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM5 = (((yyAritQuadSEPERATS3TM5 - ((qXYSEPERATS3TM5^2) / xxAritQuadSEPERATS3TM5)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3TM7 = (((yyAritQuadSEPERATS3TM7 - ((qXYSEPERATS3TM7^2) / xxAritQuadSEPERATS3TM7)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3TM1 = (((syxSEPERATS3TM1^2) / xxAritQuadSEPERATS3TM1)^0.5);
            bStandSEPERATS3TM2 = (((syxSEPERATS3TM2^2) / xxAritQuadSEPERATS3TM2)^0.5);
            bStandSEPERATS3TM3 = (((syxSEPERATS3TM3^2) / xxAritQuadSEPERATS3TM3)^0.5);
            bStandSEPERATS3TM4 = (((syxSEPERATS3TM4^2) / xxAritQuadSEPERATS3TM4)^0.5);
            bStandSEPERATS3TM5 = (((syxSEPERATS3TM5^2) / xxAritQuadSEPERATS3TM5)^0.5);
            bStandSEPERATS3TM7 = (((syxSEPERATS3TM7^2) / xxAritQuadSEPERATS3TM7)^0.5);
    
            aStandSEPERATS3TM1 = (bStandSEPERATS3TM1 * ((xQuadSEPERATS3TM1 / minPifVAL)^0.5));
            aStandSEPERATS3TM2 = (bStandSEPERATS3TM2 * ((xQuadSEPERATS3TM2 / minPifVAL)^0.5));
            aStandSEPERATS3TM3 = (bStandSEPERATS3TM3 * ((xQuadSEPERATS3TM3 / minPifVAL)^0.5));
            aStandSEPERATS3TM4 = (bStandSEPERATS3TM4 * ((xQuadSEPERATS3TM4 / minPifVAL)^0.5));
            aStandSEPERATS3TM5 = (bStandSEPERATS3TM5 * ((xQuadSEPERATS3TM5 / minPifVAL)^0.5));
            aStandSEPERATS3TM7 = (bStandSEPERATS3TM7 * ((xQuadSEPERATS3TM7 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (TM):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("TM1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM1, bSEPERATS3TM1, rSEPERATS3TM1, rQuadSEPERATS3TM1, aStandSEPERATS3TM1, bStandSEPERATS3TM1);
            printf("TM2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM2, bSEPERATS3TM2, rSEPERATS3TM2, rQuadSEPERATS3TM2, aStandSEPERATS3TM2, bStandSEPERATS3TM2);
            printf("TM3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM3, bSEPERATS3TM3, rSEPERATS3TM3, rQuadSEPERATS3TM3, aStandSEPERATS3TM3, bStandSEPERATS3TM3);
            printf("TM4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM4, bSEPERATS3TM4, rSEPERATS3TM4, rQuadSEPERATS3TM4, aStandSEPERATS3TM4, bStandSEPERATS3TM4);
            printf("TM5 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3TM5, bSEPERATS3TM5, rSEPERATS3TM5, rQuadSEPERATS3TM5, aStandSEPERATS3TM5, bStandSEPERATS3TM5);
            printf("TM7 %12f %12f %12f %12f %12f %12f\n\n", aSEPERATS3TM7, bSEPERATS3TM7, rSEPERATS3TM7, rQuadSEPERATS3TM7, aStandSEPERATS3TM7, bStandSEPERATS3TM7);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("TM1: %12f ", pifSEPERATS3slaveTM1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM1arrayRAND[minPifVAL]);
    
            printf("TM2: %12f ", pifSEPERATS3slaveTM2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM2arrayRAND[minPifVAL]);
    
            printf("TM3: %12f ", pifSEPERATS3slaveTM3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM3arrayRAND[minPifVAL]);
    
            printf("TM4: %12f ", pifSEPERATS3slaveTM4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM4arrayRAND[minPifVAL]);
    
            printf("TM5: %12f ", pifSEPERATS3slaveTM5arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM5arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveTM5arrayRAND[minPifVAL]);
    
            printf("TM7: %12f ", pifSEPERATS3slaveTM7arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveTM7arrayRAND[o]);
            }
            printf("%12f\n\n", pifSEPERATS3slaveTM7arrayRAND[minPifVAL]);
            printf("Computing output rasters...\n\n");
    
            for i = 1 to TMlins
            {
                for j = 1 to TMcols
                {
                    OUT3TM1[i,j] = (aSEPERATS3TM1 + (bSEPERATS3TM1 * REFS3TM1[i,j]));
                    OUT3TM2[i,j] = (aSEPERATS3TM2 + (bSEPERATS3TM2 * REFS3TM2[i,j]));
                    OUT3TM3[i,j] = (aSEPERATS3TM3 + (bSEPERATS3TM3 * REFS3TM3[i,j]));
                    OUT3TM4[i,j] = (aSEPERATS3TM4 + (bSEPERATS3TM4 * REFS3TM4[i,j]));
                    OUT3TM5[i,j] = (aSEPERATS3TM5 + (bSEPERATS3TM5 * REFS3TM5[i,j]));
                    OUT3TM7[i,j] = (aSEPERATS3TM7 + (bSEPERATS3TM7 * REFS3TM7[i,j]));
                }
            }
 
        	CreatePyramid(OUT3TM1);
        	CreatePyramid(OUT3TM2);
        	CreatePyramid(OUT3TM3);
        	CreatePyramid(OUT3TM4);
        	CreatePyramid(OUT3TM5);
        	CreatePyramid(OUT3TM7);
        
        	CreateHistogram(OUT3TM1);
        	CreateHistogram(OUT3TM2);
        	CreateHistogram(OUT3TM3);
        	CreateHistogram(OUT3TM4);
        	CreateHistogram(OUT3TM5);
        	CreateHistogram(OUT3TM7);
            CloseRaster(REFS3TM1);
            CloseRaster(REFS3TM2);
            CloseRaster(REFS3TM3);
            CloseRaster(REFS3TM4);
            CloseRaster(REFS3TM5);
            CloseRaster(REFS3TM7);
    
            CloseRaster(OUT3TM1);
            CloseRaster(OUT3TM2);
            CloseRaster(OUT3TM3);
            CloseRaster(OUT3TM4);
            CloseRaster(OUT3TM5);
            CloseRaster(OUT3TM7);
        
        	printf("Scene 3 (TM) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS3MSS1, xAritSEPERATS3MSS2, xAritSEPERATS3MSS4;
            numeric yAritSEPERATS3MSS1, yAritSEPERATS3MSS2, yAritSEPERATS3MSS4;
    
            numeric aSEPERATS3MSS1, aSEPERATS3MSS2, aSEPERATS3MSS4;
            numeric bSEPERATS3MSS1, bSEPERATS3MSS2, bSEPERATS3MSS4;
            numeric rSEPERATS3MSS1, rSEPERATS3MSS2, rSEPERATS3MSS4;
            numeric rQuadSEPERATS3MSS1, rQuadSEPERATS3MSS2, rQuadSEPERATS3MSS4;
            numeric syxSEPERATS3MSS1, syxSEPERATS3MSS2, syxSEPERATS3MSS4;
            numeric bStandSEPERATS3MSS1, bStandSEPERATS3MSS2, bStandSEPERATS3MSS4;
            numeric aStandSEPERATS3MSS1, aStandSEPERATS3MSS2, aStandSEPERATS3MSS4;
    
            numeric xSEPERATS3MSS1 = 0;
            numeric xSEPERATS3MSS2 = 0;
            numeric xSEPERATS3MSS4 = 0;
    
            numeric xQuadSEPERATS3MSS1 = 0;
            numeric xQuadSEPERATS3MSS2 = 0;
            numeric xQuadSEPERATS3MSS4 = 0;
    
            numeric ySEPERATS3MSS1 = 0;
            numeric ySEPERATS3MSS2 = 0;
            numeric ySEPERATS3MSS4 = 0;
    
            numeric yQuadSEPERATS3MSS1 = 0;
            numeric yQuadSEPERATS3MSS2 = 0;
            numeric yQuadSEPERATS3MSS4 = 0;
    
            numeric xySEPERATS3MSS1 = 0;
            numeric xySEPERATS3MSS2 = 0;
            numeric xySEPERATS3MSS4 = 0;
    
            numeric xxAritQuadSEPERATS3MSS1 = 0;
            numeric xxAritQuadSEPERATS3MSS2 = 0;
            numeric xxAritQuadSEPERATS3MSS4 = 0;
    
            numeric yyAritQuadSEPERATS3MSS1 = 0;
            numeric yyAritQuadSEPERATS3MSS2 = 0;
            numeric yyAritQuadSEPERATS3MSS4 = 0;
    
            numeric qXYSEPERATS3MSS1 = 0;
            numeric qXYSEPERATS3MSS2 = 0;
            numeric qXYSEPERATS3MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS3MSS1 = xSEPERATS3MSS1 + pifSEPERATS4S3TM2arrayRAND[m];
                xSEPERATS3MSS2 = xSEPERATS3MSS2 + pifSEPERATS4S3TM3arrayRAND[m];
                xSEPERATS3MSS4 = xSEPERATS3MSS4 + pifSEPERATS4S3TM4arrayRAND[m];
    
                xQuadSEPERATS3MSS1 = (xQuadSEPERATS3MSS1 + (pifSEPERATS4S3TM2arrayRAND[m]^2));
                xQuadSEPERATS3MSS2 = (xQuadSEPERATS3MSS2 + (pifSEPERATS4S3TM3arrayRAND[m]^2));
                xQuadSEPERATS3MSS4 = (xQuadSEPERATS3MSS4 + (pifSEPERATS4S3TM4arrayRAND[m]^2));
    
                ySEPERATS3MSS1 = ySEPERATS3MSS1 + pifSEPERATS3slaveMSS1arrayRAND[m];
                ySEPERATS3MSS2 = ySEPERATS3MSS2 + pifSEPERATS3slaveMSS2arrayRAND[m];
                ySEPERATS3MSS4 = ySEPERATS3MSS4 + pifSEPERATS3slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS3MSS1 = (yQuadSEPERATS3MSS1 + (pifSEPERATS3slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS3MSS2 = (yQuadSEPERATS3MSS2 + (pifSEPERATS3slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS3MSS4 = (yQuadSEPERATS3MSS4 + (pifSEPERATS3slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS3MSS1 = (xySEPERATS3MSS1 + (pifSEPERATS4S3TM2arrayRAND[m] * pifSEPERATS3slaveMSS1arrayRAND[m]));
                xySEPERATS3MSS2 = (xySEPERATS3MSS2 + (pifSEPERATS4S3TM3arrayRAND[m] * pifSEPERATS3slaveMSS2arrayRAND[m]));
                xySEPERATS3MSS4 = (xySEPERATS3MSS4 + (pifSEPERATS4S3TM4arrayRAND[m] * pifSEPERATS3slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS3MSS1 = xSEPERATS3MSS1 / minPifVAL;
            xAritSEPERATS3MSS2 = xSEPERATS3MSS2 / minPifVAL;
            xAritSEPERATS3MSS4 = xSEPERATS3MSS4 / minPifVAL;
    
            yAritSEPERATS3MSS1 = ySEPERATS3MSS1 / minPifVAL;
            yAritSEPERATS3MSS2 = ySEPERATS3MSS2 / minPifVAL;
            yAritSEPERATS3MSS4 = ySEPERATS3MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3MSS1 = (xxAritQuadSEPERATS3MSS1 + ((pifSEPERATS4S3TM2arrayRAND[n] - xAritSEPERATS3MSS1)^2));
                xxAritQuadSEPERATS3MSS2 = (xxAritQuadSEPERATS3MSS2 + ((pifSEPERATS4S3TM3arrayRAND[n] - xAritSEPERATS3MSS2)^2));
                xxAritQuadSEPERATS3MSS4 = (xxAritQuadSEPERATS3MSS4 + ((pifSEPERATS4S3TM4arrayRAND[n] - xAritSEPERATS3MSS4)^2));
    
                yyAritQuadSEPERATS3MSS1 = (yyAritQuadSEPERATS3MSS1 + ((pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)^2));
                yyAritQuadSEPERATS3MSS2 = (yyAritQuadSEPERATS3MSS2 + ((pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)^2));
                yyAritQuadSEPERATS3MSS4 = (yyAritQuadSEPERATS3MSS4 + ((pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)^2));
    
                qXYSEPERATS3MSS1 = (qXYSEPERATS3MSS1 + ((pifSEPERATS4S3TM2arrayRAND[n] - xAritSEPERATS3MSS1) * (pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)));
                qXYSEPERATS3MSS2 = (qXYSEPERATS3MSS2 + ((pifSEPERATS4S3TM3arrayRAND[n] - xAritSEPERATS3MSS2) * (pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)));
                qXYSEPERATS3MSS4 = (qXYSEPERATS3MSS4 + ((pifSEPERATS4S3TM4arrayRAND[n] - xAritSEPERATS3MSS4) * (pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)));
            }
        
            aSEPERATS3MSS1 = (((xQuadSEPERATS3MSS1 * ySEPERATS3MSS1) - (xSEPERATS3MSS1 * xySEPERATS3MSS1)) / ((minPifVAL * xQuadSEPERATS3MSS1) - (xSEPERATS3MSS1^2)));
            aSEPERATS3MSS2 = (((xQuadSEPERATS3MSS2 * ySEPERATS3MSS2) - (xSEPERATS3MSS2 * xySEPERATS3MSS2)) / ((minPifVAL * xQuadSEPERATS3MSS2) - (xSEPERATS3MSS2^2)));
            aSEPERATS3MSS4 = (((xQuadSEPERATS3MSS4 * ySEPERATS3MSS4) - (xSEPERATS3MSS4 * xySEPERATS3MSS4)) / ((minPifVAL * xQuadSEPERATS3MSS4) - (xSEPERATS3MSS4^2)));
            
            bSEPERATS3MSS1 = qXYSEPERATS3MSS1 / xxAritQuadSEPERATS3MSS1;
            bSEPERATS3MSS2 = qXYSEPERATS3MSS2 / xxAritQuadSEPERATS3MSS2;
            bSEPERATS3MSS4 = qXYSEPERATS3MSS4 / xxAritQuadSEPERATS3MSS4;
    
            rSEPERATS3MSS1 = (qXYSEPERATS3MSS1 / ((xxAritQuadSEPERATS3MSS1 * yyAritQuadSEPERATS3MSS1)^0.5));
            rSEPERATS3MSS2 = (qXYSEPERATS3MSS2 / ((xxAritQuadSEPERATS3MSS2 * yyAritQuadSEPERATS3MSS2)^0.5));
            rSEPERATS3MSS4 = (qXYSEPERATS3MSS4 / ((xxAritQuadSEPERATS3MSS4 * yyAritQuadSEPERATS3MSS4)^0.5));
    
            rQuadSEPERATS3MSS1 = ((rSEPERATS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3MSS2 = ((rSEPERATS3MSS2^2) * 100);
            rQuadSEPERATS3MSS4 = ((rSEPERATS3MSS4^2) * 100);
        
            syxSEPERATS3MSS1 = (((yyAritQuadSEPERATS3MSS1 - ((qXYSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS2 = (((yyAritQuadSEPERATS3MSS2 - ((qXYSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS4 = (((yyAritQuadSEPERATS3MSS4 - ((qXYSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3MSS1 = (((syxSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)^0.5);
            bStandSEPERATS3MSS2 = (((syxSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)^0.5);
            bStandSEPERATS3MSS4 = (((syxSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)^0.5);
    
            aStandSEPERATS3MSS1 = (bStandSEPERATS3MSS1 * ((xQuadSEPERATS3MSS1 / minPifVAL)^0.5));
            aStandSEPERATS3MSS2 = (bStandSEPERATS3MSS2 * ((xQuadSEPERATS3MSS2 / minPifVAL)^0.5));
            aStandSEPERATS3MSS4 = (bStandSEPERATS3MSS4 * ((xQuadSEPERATS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS1, bSEPERATS3MSS1, rSEPERATS3MSS1, rQuadSEPERATS3MSS1, aStandSEPERATS3MSS1, bStandSEPERATS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS2, bSEPERATS3MSS2, rSEPERATS3MSS2, rQuadSEPERATS3MSS2, aStandSEPERATS3MSS2, bStandSEPERATS3MSS2);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS4, bSEPERATS3MSS4, rSEPERATS3MSS4, rQuadSEPERATS3MSS4, aStandSEPERATS3MSS4, bStandSEPERATS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS3slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS3slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS3slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aSEPERATS3MSS1 + (bSEPERATS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aSEPERATS3MSS2 + (bSEPERATS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = REFS3MSS3[i,j];
                    OUT3MSS4[i,j] = (aSEPERATS3MSS4 + (bSEPERATS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT3MSS1);
            CreatePyramid(OUT3MSS2);
            CreatePyramid(OUT3MSS3);
            CreatePyramid(OUT3MSS4);
        
            CreateHistogram(OUT3MSS1);
            CreateHistogram(OUT3MSS2);
            CreateHistogram(OUT3MSS3);
            CreateHistogram(OUT3MSS4);
            
            CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
        }
        
        else
        {
        printf("Scene 4 - Master Scene (MSS):\n");
        printf("Scene 4 array values used for regression computation:\n");
	    printf("For Scene 4 (Master) and Slave (Scene 1):");
        printf("MSS1: %12f ", pifSEPERATS4S1MSS1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S1MSS1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S1MSS1arrayRAND[minPifVAL]);
    
        printf("MSS2: %12f ", pifSEPERATS4S1MSS2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S1MSS2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S1MSS2arrayRAND[minPifVAL]);
    
        printf("MSS3: %12f ", pifSEPERATS4S1MSS3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S1MSS3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S1MSS3arrayRAND[minPifVAL]);
    
        printf("MSS4: %12f ", pifSEPERATS4S1MSS4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S1MSS4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S1MSS4arrayRAND[minPifVAL]);
    
        
	    printf("For Scene 4 (Master) and Slave (Scene 2):");
        printf("MSS1: %12f ", pifSEPERATS4S2MSS1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S2MSS1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S2MSS1arrayRAND[minPifVAL]);
    
        printf("MSS2: %12f ", pifSEPERATS4S2MSS2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S2MSS2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S2MSS2arrayRAND[minPifVAL]);
    
        printf("MSS3: %12f ", pifSEPERATS4S2MSS3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S2MSS3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S2MSS3arrayRAND[minPifVAL]);
    
        printf("MSS4: %12f ", pifSEPERATS4S2MSS4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S2MSS4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S2MSS4arrayRAND[minPifVAL]);
	    printf("For Scene 4 (Master) and Slave (Scene 3):");
        printf("MSS1: %12f ", pifSEPERATS4S3MSS1arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S3MSS1arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S3MSS1arrayRAND[minPifVAL]);
    
        printf("MSS2: %12f ", pifSEPERATS4S3MSS2arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S3MSS2arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S3MSS2arrayRAND[minPifVAL]);
    
        printf("MSS3: %12f ", pifSEPERATS4S3MSS3arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S3MSS3arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S3MSS3arrayRAND[minPifVAL]);
    
        printf("MSS4: %12f ", pifSEPERATS4S3MSS4arrayRAND[1]);
        for o = 2 to (minPifVAL-1)
        {
              printf("%12f ", pifSEPERATS4S3MSS4arrayRAND[o]);
        }
        printf("%12f\n", pifSEPERATS4S3MSS4arrayRAND[minPifVAL]);
                for i = 1 to MSSlins
                {
                    for j = 1 to MSScols
                    {
                    OUT4MSS1[i,j] = REFS4MSS1[i,j];
                    OUT4MSS2[i,j] = REFS4MSS2[i,j];
                    OUT4MSS3[i,j] = REFS4MSS3[i,j];
                    OUT4MSS4[i,j] = REFS4MSS4[i,j];
                    }
                }
            
        CreatePyramid(OUT4MSS1);
        CreatePyramid(OUT4MSS2);
        CreatePyramid(OUT4MSS3);
        CreatePyramid(OUT4MSS4);
        
        CreateHistogram(OUT4MSS1);
        CreateHistogram(OUT4MSS2);
        CreateHistogram(OUT4MSS3);
        CreateHistogram(OUT4MSS4);
        
        CloseRaster(REFS4MSS1);
        CloseRaster(REFS4MSS2);
        CloseRaster(REFS4MSS3);
        CloseRaster(REFS4MSS4);
        
        CloseRaster(OUT4MSS1);
        CloseRaster(OUT4MSS2);
        CloseRaster(OUT4MSS3);
        CloseRaster(OUT4MSS4);
            
        printf("Scene 4 (Master) output was written, histogram created and pyramid written...\n\n\n"); 
        
            if ( sensors1 == 7 )
            {
        		printf("Master: Scene 4 (MSS), Slave: Scene 1 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors1 == 6 )
            {
        		printf("Master: Scene 4 (MSS), Slave: Scene 1 (TM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS1MSS1, xAritSEPERATS1MSS2, xAritSEPERATS1MSS3, xAritSEPERATS1MSS4;
            numeric yAritSEPERATS1MSS1, yAritSEPERATS1MSS2, yAritSEPERATS1MSS3, yAritSEPERATS1MSS4;
    
            numeric aSEPERATS1MSS1, aSEPERATS1MSS2, aSEPERATS1MSS3, aSEPERATS1MSS4;
            numeric bSEPERATS1MSS1, bSEPERATS1MSS2, bSEPERATS1MSS3, bSEPERATS1MSS4;
            numeric rSEPERATS1MSS1, rSEPERATS1MSS2, rSEPERATS1MSS3, rSEPERATS1MSS4;
            numeric rQuadSEPERATS1MSS1, rQuadSEPERATS1MSS2, rQuadSEPERATS1MSS3, rQuadSEPERATS1MSS4;
            numeric syxSEPERATS1MSS1, syxSEPERATS1MSS2, syxSEPERATS1MSS3, syxSEPERATS1MSS4;
            numeric bStandSEPERATS1MSS1, bStandSEPERATS1MSS2, bStandSEPERATS1MSS3, bStandSEPERATS1MSS4;
            numeric aStandSEPERATS1MSS1, aStandSEPERATS1MSS2, aStandSEPERATS1MSS3, aStandSEPERATS1MSS4;
    
            numeric xSEPERATS1MSS1 = 0;
            numeric xSEPERATS1MSS2 = 0;
            numeric xSEPERATS1MSS3 = 0;
            numeric xSEPERATS1MSS4 = 0;
    
            numeric xQuadSEPERATS1MSS1 = 0;
            numeric xQuadSEPERATS1MSS2 = 0;
            numeric xQuadSEPERATS1MSS3 = 0;
            numeric xQuadSEPERATS1MSS4 = 0;
    
            numeric ySEPERATS1MSS1 = 0;
            numeric ySEPERATS1MSS2 = 0;
            numeric ySEPERATS1MSS3 = 0;
            numeric ySEPERATS1MSS4 = 0;
    
            numeric yQuadSEPERATS1MSS1 = 0;
            numeric yQuadSEPERATS1MSS2 = 0;
            numeric yQuadSEPERATS1MSS3 = 0;
            numeric yQuadSEPERATS1MSS4 = 0;
    
            numeric xySEPERATS1MSS1 = 0;
            numeric xySEPERATS1MSS2 = 0;
            numeric xySEPERATS1MSS3 = 0;
            numeric xySEPERATS1MSS4 = 0;
    
            numeric xxAritQuadSEPERATS1MSS1 = 0;
            numeric xxAritQuadSEPERATS1MSS2 = 0;
            numeric xxAritQuadSEPERATS1MSS3 = 0;
            numeric xxAritQuadSEPERATS1MSS4 = 0;
    
            numeric yyAritQuadSEPERATS1MSS1 = 0;
            numeric yyAritQuadSEPERATS1MSS2 = 0;
            numeric yyAritQuadSEPERATS1MSS3 = 0;
            numeric yyAritQuadSEPERATS1MSS4 = 0;
    
            numeric qXYSEPERATS1MSS1 = 0;
            numeric qXYSEPERATS1MSS2 = 0;
            numeric qXYSEPERATS1MSS3 = 0;
            numeric qXYSEPERATS1MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS1MSS1 = xSEPERATS1MSS1 + pifSEPERATS4S1MSS1arrayRAND[m];
                xSEPERATS1MSS2 = xSEPERATS1MSS2 + pifSEPERATS4S1MSS2arrayRAND[m];
                xSEPERATS1MSS3 = xSEPERATS1MSS3 + pifSEPERATS4S1MSS3arrayRAND[m];
                xSEPERATS1MSS4 = xSEPERATS1MSS4 + pifSEPERATS4S1MSS4arrayRAND[m];
    
                xQuadSEPERATS1MSS1 = (xQuadSEPERATS1MSS1 + (pifSEPERATS4S1MSS1arrayRAND[m]^2));
                xQuadSEPERATS1MSS2 = (xQuadSEPERATS1MSS2 + (pifSEPERATS4S1MSS2arrayRAND[m]^2));
                xQuadSEPERATS1MSS3 = (xQuadSEPERATS1MSS3 + (pifSEPERATS4S1MSS3arrayRAND[m]^2));
                xQuadSEPERATS1MSS4 = (xQuadSEPERATS1MSS4 + (pifSEPERATS4S1MSS4arrayRAND[m]^2));
    
                ySEPERATS1MSS1 = ySEPERATS1MSS1 + pifSEPERATS1slaveMSS1arrayRAND[m];
                ySEPERATS1MSS2 = ySEPERATS1MSS2 + pifSEPERATS1slaveMSS2arrayRAND[m];
                ySEPERATS1MSS3 = ySEPERATS1MSS3 + pifSEPERATS1slaveMSS3arrayRAND[m];
                ySEPERATS1MSS4 = ySEPERATS1MSS4 + pifSEPERATS1slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS1MSS1 = (yQuadSEPERATS1MSS1 + (pifSEPERATS1slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS1MSS2 = (yQuadSEPERATS1MSS2 + (pifSEPERATS1slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS1MSS3 = (yQuadSEPERATS1MSS3 + (pifSEPERATS1slaveMSS3arrayRAND[m]^2));
                yQuadSEPERATS1MSS4 = (yQuadSEPERATS1MSS4 + (pifSEPERATS1slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS1MSS1 = (xySEPERATS1MSS1 + (pifSEPERATS4S1MSS1arrayRAND[m] * pifSEPERATS1slaveMSS1arrayRAND[m]));
                xySEPERATS1MSS2 = (xySEPERATS1MSS2 + (pifSEPERATS4S1MSS2arrayRAND[m] * pifSEPERATS1slaveMSS2arrayRAND[m]));
                xySEPERATS1MSS3 = (xySEPERATS1MSS3 + (pifSEPERATS4S1MSS3arrayRAND[m] * pifSEPERATS1slaveMSS3arrayRAND[m]));
                xySEPERATS1MSS4 = (xySEPERATS1MSS4 + (pifSEPERATS4S1MSS4arrayRAND[m] * pifSEPERATS1slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS1MSS1 = xSEPERATS1MSS1 / minPifVAL;
            xAritSEPERATS1MSS2 = xSEPERATS1MSS2 / minPifVAL;
            xAritSEPERATS1MSS3 = xSEPERATS1MSS3 / minPifVAL;
            xAritSEPERATS1MSS4 = xSEPERATS1MSS4 / minPifVAL;
    
            yAritSEPERATS1MSS1 = ySEPERATS1MSS1 / minPifVAL;
            yAritSEPERATS1MSS2 = ySEPERATS1MSS2 / minPifVAL;
            yAritSEPERATS1MSS3 = ySEPERATS1MSS3 / minPifVAL;
            yAritSEPERATS1MSS4 = ySEPERATS1MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS1MSS1 = (xxAritQuadSEPERATS1MSS1 + ((pifSEPERATS4S1MSS1arrayRAND[n] - xAritSEPERATS1MSS1)^2));
                xxAritQuadSEPERATS1MSS2 = (xxAritQuadSEPERATS1MSS2 + ((pifSEPERATS4S1MSS2arrayRAND[n] - xAritSEPERATS1MSS2)^2));
                xxAritQuadSEPERATS1MSS3 = (xxAritQuadSEPERATS1MSS3 + ((pifSEPERATS4S1MSS3arrayRAND[n] - xAritSEPERATS1MSS3)^2));
                xxAritQuadSEPERATS1MSS4 = (xxAritQuadSEPERATS1MSS4 + ((pifSEPERATS4S1MSS4arrayRAND[n] - xAritSEPERATS1MSS4)^2));
    
                yyAritQuadSEPERATS1MSS1 = (yyAritQuadSEPERATS1MSS1 + ((pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)^2));
                yyAritQuadSEPERATS1MSS2 = (yyAritQuadSEPERATS1MSS2 + ((pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)^2));
                yyAritQuadSEPERATS1MSS3 = (yyAritQuadSEPERATS1MSS3 + ((pifSEPERATS1slaveMSS3arrayRAND[n] - yAritSEPERATS1MSS3)^2));
                yyAritQuadSEPERATS1MSS4 = (yyAritQuadSEPERATS1MSS4 + ((pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)^2));
    
                qXYSEPERATS1MSS1 = (qXYSEPERATS1MSS1 + ((pifSEPERATS4S1MSS1arrayRAND[n] - xAritSEPERATS1MSS1) * (pifSEPERATS1slaveMSS1arrayRAND[n] - yAritSEPERATS1MSS1)));
                qXYSEPERATS1MSS2 = (qXYSEPERATS1MSS2 + ((pifSEPERATS4S1MSS2arrayRAND[n] - xAritSEPERATS1MSS2) * (pifSEPERATS1slaveMSS2arrayRAND[n] - yAritSEPERATS1MSS2)));
                qXYSEPERATS1MSS3 = (qXYSEPERATS1MSS3 + ((pifSEPERATS4S1MSS3arrayRAND[n] - xAritSEPERATS1MSS3) * (pifSEPERATS1slaveMSS3arrayRAND[n] - yAritSEPERATS1MSS3)));
                qXYSEPERATS1MSS4 = (qXYSEPERATS1MSS4 + ((pifSEPERATS4S1MSS4arrayRAND[n] - xAritSEPERATS1MSS4) * (pifSEPERATS1slaveMSS4arrayRAND[n] - yAritSEPERATS1MSS4)));
          }
        
            aSEPERATS1MSS1 = (((xQuadSEPERATS1MSS1 * ySEPERATS1MSS1) - (xSEPERATS1MSS1 * xySEPERATS1MSS1)) / ((minPifVAL * xQuadSEPERATS1MSS1) - (xSEPERATS1MSS1^2)));
            aSEPERATS1MSS2 = (((xQuadSEPERATS1MSS2 * ySEPERATS1MSS2) - (xSEPERATS1MSS2 * xySEPERATS1MSS2)) / ((minPifVAL * xQuadSEPERATS1MSS2) - (xSEPERATS1MSS2^2)));
            aSEPERATS1MSS3 = (((xQuadSEPERATS1MSS3 * ySEPERATS1MSS3) - (xSEPERATS1MSS3 * xySEPERATS1MSS3)) / ((minPifVAL * xQuadSEPERATS1MSS3) - (xSEPERATS1MSS3^2)));
            aSEPERATS1MSS4 = (((xQuadSEPERATS1MSS4 * ySEPERATS1MSS4) - (xSEPERATS1MSS4 * xySEPERATS1MSS4)) / ((minPifVAL * xQuadSEPERATS1MSS4) - (xSEPERATS1MSS4^2)));
            
            bSEPERATS1MSS1 = qXYSEPERATS1MSS1 / xxAritQuadSEPERATS1MSS1;
            bSEPERATS1MSS2 = qXYSEPERATS1MSS2 / xxAritQuadSEPERATS1MSS2;
            bSEPERATS1MSS3 = qXYSEPERATS1MSS3 / xxAritQuadSEPERATS1MSS3;
            bSEPERATS1MSS4 = qXYSEPERATS1MSS4 / xxAritQuadSEPERATS1MSS4;
    
            rSEPERATS1MSS1 = (qXYSEPERATS1MSS1 / ((xxAritQuadSEPERATS1MSS1 * yyAritQuadSEPERATS1MSS1)^0.5));
            rSEPERATS1MSS2 = (qXYSEPERATS1MSS2 / ((xxAritQuadSEPERATS1MSS2 * yyAritQuadSEPERATS1MSS2)^0.5));
            rSEPERATS1MSS3 = (qXYSEPERATS1MSS3 / ((xxAritQuadSEPERATS1MSS3 * yyAritQuadSEPERATS1MSS3)^0.5));
            rSEPERATS1MSS4 = (qXYSEPERATS1MSS4 / ((xxAritQuadSEPERATS1MSS4 * yyAritQuadSEPERATS1MSS4)^0.5));
    
            rQuadSEPERATS1MSS1 = ((rSEPERATS1MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS1MSS2 = ((rSEPERATS1MSS2^2) * 100);
            rQuadSEPERATS1MSS3 = ((rSEPERATS1MSS3^2) * 100);
            rQuadSEPERATS1MSS4 = ((rSEPERATS1MSS4^2) * 100);
        
            syxSEPERATS1MSS1 = (((yyAritQuadSEPERATS1MSS1 - ((qXYSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS2 = (((yyAritQuadSEPERATS1MSS2 - ((qXYSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS3 = (((yyAritQuadSEPERATS1MSS3 - ((qXYSEPERATS1MSS3^2) / xxAritQuadSEPERATS1MSS3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS1MSS4 = (((yyAritQuadSEPERATS1MSS4 - ((qXYSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS1MSS1 = (((syxSEPERATS1MSS1^2) / xxAritQuadSEPERATS1MSS1)^0.5);
            bStandSEPERATS1MSS2 = (((syxSEPERATS1MSS2^2) / xxAritQuadSEPERATS1MSS2)^0.5);
            bStandSEPERATS1MSS3 = (((syxSEPERATS1MSS3^2) / xxAritQuadSEPERATS1MSS3)^0.5);
            bStandSEPERATS1MSS4 = (((syxSEPERATS1MSS4^2) / xxAritQuadSEPERATS1MSS4)^0.5);
    
            aStandSEPERATS1MSS1 = (bStandSEPERATS1MSS1 * ((xQuadSEPERATS1MSS1 / minPifVAL)^0.5));
            aStandSEPERATS1MSS2 = (bStandSEPERATS1MSS2 * ((xQuadSEPERATS1MSS2 / minPifVAL)^0.5));
            aStandSEPERATS1MSS3 = (bStandSEPERATS1MSS3 * ((xQuadSEPERATS1MSS3 / minPifVAL)^0.5));
            aStandSEPERATS1MSS4 = (bStandSEPERATS1MSS4 * ((xQuadSEPERATS1MSS4 / minPifVAL)^0.5));
    
            printf("Scene 1 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS1, bSEPERATS1MSS1, rSEPERATS1MSS1, rQuadSEPERATS1MSS1, aStandSEPERATS1MSS1, bStandSEPERATS1MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS2, bSEPERATS1MSS2, rSEPERATS1MSS2, rQuadSEPERATS1MSS2, aStandSEPERATS1MSS2, bStandSEPERATS1MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS3, bSEPERATS1MSS3, rSEPERATS1MSS3, rQuadSEPERATS1MSS3, aStandSEPERATS1MSS3, bStandSEPERATS1MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS1MSS4, bSEPERATS1MSS4, rSEPERATS1MSS4, rQuadSEPERATS1MSS4, aStandSEPERATS1MSS4, bStandSEPERATS1MSS4);
            printf("Slave Scene 1 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS1slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS1slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifSEPERATS1slaveMSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS1slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS1slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS1slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT1MSS1[i,j] = (aSEPERATS1MSS1 + (bSEPERATS1MSS1 * REFS1MSS1[i,j]));
                    OUT1MSS2[i,j] = (aSEPERATS1MSS2 + (bSEPERATS1MSS2 * REFS1MSS2[i,j]));
                    OUT1MSS3[i,j] = (aSEPERATS1MSS3 + (bSEPERATS1MSS3 * REFS1MSS3[i,j]));
                    OUT1MSS4[i,j] = (aSEPERATS1MSS4 + (bSEPERATS1MSS4 * REFS1MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT1MSS1);
            CreatePyramid(OUT1MSS2);
            CreatePyramid(OUT1MSS3);
            CreatePyramid(OUT1MSS4);
        
            CreateHistogram(OUT1MSS1);
            CreateHistogram(OUT1MSS2);
            CreateHistogram(OUT1MSS3);
            CreateHistogram(OUT1MSS4);
            
            CloseRaster(REFS1MSS1);
            CloseRaster(REFS1MSS2);
            CloseRaster(REFS1MSS3);
            CloseRaster(REFS1MSS4);
    
            CloseRaster(OUT1MSS1);
            CloseRaster(OUT1MSS2);
            CloseRaster(OUT1MSS3);
            CloseRaster(OUT1MSS4);
        	printf("Scene 1 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors2 == 7 )
            {
                 		printf("Master: Scene 4 (MSS), Slave: Scene 2 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors2 == 6 )
            {
                		printf("Master: Scene 4 (MSS), Slave: Scene 2 (TM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS2MSS1, xAritSEPERATS2MSS2, xAritSEPERATS2MSS3, xAritSEPERATS2MSS4;
            numeric yAritSEPERATS2MSS1, yAritSEPERATS2MSS2, yAritSEPERATS2MSS3, yAritSEPERATS2MSS4;
    
            numeric aSEPERATS2MSS1, aSEPERATS2MSS2, aSEPERATS2MSS3, aSEPERATS2MSS4;
            numeric bSEPERATS2MSS1, bSEPERATS2MSS2, bSEPERATS2MSS3, bSEPERATS2MSS4;
            numeric rSEPERATS2MSS1, rSEPERATS2MSS2, rSEPERATS2MSS3, rSEPERATS2MSS4;
            numeric rQuadSEPERATS2MSS1, rQuadSEPERATS2MSS2, rQuadSEPERATS2MSS3, rQuadSEPERATS2MSS4;
            numeric syxSEPERATS2MSS1, syxSEPERATS2MSS2, syxSEPERATS2MSS3, syxSEPERATS2MSS4;
            numeric bStandSEPERATS2MSS1, bStandSEPERATS2MSS2, bStandSEPERATS2MSS3, bStandSEPERATS2MSS4;
            numeric aStandSEPERATS2MSS1, aStandSEPERATS2MSS2, aStandSEPERATS2MSS3, aStandSEPERATS2MSS4;
    
            numeric xSEPERATS2MSS1 = 0;
            numeric xSEPERATS2MSS2 = 0;
            numeric xSEPERATS2MSS3 = 0;
            numeric xSEPERATS2MSS4 = 0;
    
            numeric xQuadSEPERATS2MSS1 = 0;
            numeric xQuadSEPERATS2MSS2 = 0;
            numeric xQuadSEPERATS2MSS3 = 0;
            numeric xQuadSEPERATS2MSS4 = 0;
    
            numeric ySEPERATS2MSS1 = 0;
            numeric ySEPERATS2MSS2 = 0;
            numeric ySEPERATS2MSS3 = 0;
            numeric ySEPERATS2MSS4 = 0;
    
            numeric yQuadSEPERATS2MSS1 = 0;
            numeric yQuadSEPERATS2MSS2 = 0;
            numeric yQuadSEPERATS2MSS3 = 0;
            numeric yQuadSEPERATS2MSS4 = 0;
    
            numeric xySEPERATS2MSS1 = 0;
            numeric xySEPERATS2MSS2 = 0;
            numeric xySEPERATS2MSS3 = 0;
            numeric xySEPERATS2MSS4 = 0;
    
            numeric xxAritQuadSEPERATS2MSS1 = 0;
            numeric xxAritQuadSEPERATS2MSS2 = 0;
            numeric xxAritQuadSEPERATS2MSS3 = 0;
            numeric xxAritQuadSEPERATS2MSS4 = 0;
    
            numeric yyAritQuadSEPERATS2MSS1 = 0;
            numeric yyAritQuadSEPERATS2MSS2 = 0;
            numeric yyAritQuadSEPERATS2MSS3 = 0;
            numeric yyAritQuadSEPERATS2MSS4 = 0;
    
            numeric qXYSEPERATS2MSS1 = 0;
            numeric qXYSEPERATS2MSS2 = 0;
            numeric qXYSEPERATS2MSS3 = 0;
            numeric qXYSEPERATS2MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS2MSS1 = xSEPERATS2MSS1 + pifSEPERATS4S2MSS1arrayRAND[m];
                xSEPERATS2MSS2 = xSEPERATS2MSS2 + pifSEPERATS4S2MSS2arrayRAND[m];
                xSEPERATS2MSS3 = xSEPERATS2MSS3 + pifSEPERATS4S2MSS3arrayRAND[m];
                xSEPERATS2MSS4 = xSEPERATS2MSS4 + pifSEPERATS4S2MSS4arrayRAND[m];
    
                xQuadSEPERATS2MSS1 = (xQuadSEPERATS2MSS1 + (pifSEPERATS4S2MSS1arrayRAND[m]^2));
                xQuadSEPERATS2MSS2 = (xQuadSEPERATS2MSS2 + (pifSEPERATS4S2MSS2arrayRAND[m]^2));
                xQuadSEPERATS2MSS3 = (xQuadSEPERATS2MSS3 + (pifSEPERATS4S2MSS3arrayRAND[m]^2));
                xQuadSEPERATS2MSS4 = (xQuadSEPERATS2MSS4 + (pifSEPERATS4S2MSS4arrayRAND[m]^2));
    
                ySEPERATS2MSS1 = ySEPERATS2MSS1 + pifSEPERATS2slaveMSS1arrayRAND[m];
                ySEPERATS2MSS2 = ySEPERATS2MSS2 + pifSEPERATS2slaveMSS2arrayRAND[m];
                ySEPERATS2MSS3 = ySEPERATS2MSS3 + pifSEPERATS2slaveMSS3arrayRAND[m];
                ySEPERATS2MSS4 = ySEPERATS2MSS4 + pifSEPERATS2slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS2MSS1 = (yQuadSEPERATS2MSS1 + (pifSEPERATS2slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS2MSS2 = (yQuadSEPERATS2MSS2 + (pifSEPERATS2slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS2MSS3 = (yQuadSEPERATS2MSS3 + (pifSEPERATS2slaveMSS3arrayRAND[m]^2));
                yQuadSEPERATS2MSS4 = (yQuadSEPERATS2MSS4 + (pifSEPERATS2slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS2MSS1 = (xySEPERATS2MSS1 + (pifSEPERATS4S2MSS1arrayRAND[m] * pifSEPERATS2slaveMSS1arrayRAND[m]));
                xySEPERATS2MSS2 = (xySEPERATS2MSS2 + (pifSEPERATS4S2MSS2arrayRAND[m] * pifSEPERATS2slaveMSS2arrayRAND[m]));
                xySEPERATS2MSS3 = (xySEPERATS2MSS3 + (pifSEPERATS4S2MSS3arrayRAND[m] * pifSEPERATS2slaveMSS3arrayRAND[m]));
                xySEPERATS2MSS4 = (xySEPERATS2MSS4 + (pifSEPERATS4S2MSS4arrayRAND[m] * pifSEPERATS2slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS2MSS1 = xSEPERATS2MSS1 / minPifVAL;
            xAritSEPERATS2MSS2 = xSEPERATS2MSS2 / minPifVAL;
            xAritSEPERATS2MSS3 = xSEPERATS2MSS3 / minPifVAL;
            xAritSEPERATS2MSS4 = xSEPERATS2MSS4 / minPifVAL;
    
            yAritSEPERATS2MSS1 = ySEPERATS2MSS1 / minPifVAL;
            yAritSEPERATS2MSS2 = ySEPERATS2MSS2 / minPifVAL;
            yAritSEPERATS2MSS3 = ySEPERATS2MSS3 / minPifVAL;
            yAritSEPERATS2MSS4 = ySEPERATS2MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS2MSS1 = (xxAritQuadSEPERATS2MSS1 + ((pifSEPERATS4S2MSS1arrayRAND[n] - xAritSEPERATS2MSS1)^2));
                xxAritQuadSEPERATS2MSS2 = (xxAritQuadSEPERATS2MSS2 + ((pifSEPERATS4S2MSS2arrayRAND[n] - xAritSEPERATS2MSS2)^2));
                xxAritQuadSEPERATS2MSS3 = (xxAritQuadSEPERATS2MSS3 + ((pifSEPERATS4S2MSS3arrayRAND[n] - xAritSEPERATS2MSS3)^2));
                xxAritQuadSEPERATS2MSS4 = (xxAritQuadSEPERATS2MSS4 + ((pifSEPERATS4S2MSS4arrayRAND[n] - xAritSEPERATS2MSS4)^2));
    
                yyAritQuadSEPERATS2MSS1 = (yyAritQuadSEPERATS2MSS1 + ((pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)^2));
                yyAritQuadSEPERATS2MSS2 = (yyAritQuadSEPERATS2MSS2 + ((pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)^2));
                yyAritQuadSEPERATS2MSS3 = (yyAritQuadSEPERATS2MSS3 + ((pifSEPERATS2slaveMSS3arrayRAND[n] - yAritSEPERATS2MSS3)^2));
                yyAritQuadSEPERATS2MSS4 = (yyAritQuadSEPERATS2MSS4 + ((pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)^2));
    
                qXYSEPERATS2MSS1 = (qXYSEPERATS2MSS1 + ((pifSEPERATS4S2MSS1arrayRAND[n] - xAritSEPERATS2MSS1) * (pifSEPERATS2slaveMSS1arrayRAND[n] - yAritSEPERATS2MSS1)));
                qXYSEPERATS2MSS2 = (qXYSEPERATS2MSS2 + ((pifSEPERATS4S2MSS2arrayRAND[n] - xAritSEPERATS2MSS2) * (pifSEPERATS2slaveMSS2arrayRAND[n] - yAritSEPERATS2MSS2)));
                qXYSEPERATS2MSS3 = (qXYSEPERATS2MSS3 + ((pifSEPERATS4S2MSS3arrayRAND[n] - xAritSEPERATS2MSS3) * (pifSEPERATS2slaveMSS3arrayRAND[n] - yAritSEPERATS2MSS3)));
                qXYSEPERATS2MSS4 = (qXYSEPERATS2MSS4 + ((pifSEPERATS4S2MSS4arrayRAND[n] - xAritSEPERATS2MSS4) * (pifSEPERATS2slaveMSS4arrayRAND[n] - yAritSEPERATS2MSS4)));
            }
        
            aSEPERATS2MSS1 = (((xQuadSEPERATS2MSS1 * ySEPERATS2MSS1) - (xSEPERATS2MSS1 * xySEPERATS2MSS1)) / ((minPifVAL * xQuadSEPERATS2MSS1) - (xSEPERATS2MSS1^2)));
            aSEPERATS2MSS2 = (((xQuadSEPERATS2MSS2 * ySEPERATS2MSS2) - (xSEPERATS2MSS2 * xySEPERATS2MSS2)) / ((minPifVAL * xQuadSEPERATS2MSS2) - (xSEPERATS2MSS2^2)));
            aSEPERATS2MSS3 = (((xQuadSEPERATS2MSS3 * ySEPERATS2MSS3) - (xSEPERATS2MSS3 * xySEPERATS2MSS3)) / ((minPifVAL * xQuadSEPERATS2MSS3) - (xSEPERATS2MSS3^2)));
            aSEPERATS2MSS4 = (((xQuadSEPERATS2MSS4 * ySEPERATS2MSS4) - (xSEPERATS2MSS4 * xySEPERATS2MSS4)) / ((minPifVAL * xQuadSEPERATS2MSS4) - (xSEPERATS2MSS4^2)));
            
            bSEPERATS2MSS1 = qXYSEPERATS2MSS1 / xxAritQuadSEPERATS2MSS1;
            bSEPERATS2MSS2 = qXYSEPERATS2MSS2 / xxAritQuadSEPERATS2MSS2;
            bSEPERATS2MSS3 = qXYSEPERATS2MSS3 / xxAritQuadSEPERATS2MSS3;
            bSEPERATS2MSS4 = qXYSEPERATS2MSS4 / xxAritQuadSEPERATS2MSS4;
    
            rSEPERATS2MSS1 = (qXYSEPERATS2MSS1 / ((xxAritQuadSEPERATS2MSS1 * yyAritQuadSEPERATS2MSS1)^0.5));
            rSEPERATS2MSS2 = (qXYSEPERATS2MSS2 / ((xxAritQuadSEPERATS2MSS2 * yyAritQuadSEPERATS2MSS2)^0.5));
            rSEPERATS2MSS3 = (qXYSEPERATS2MSS3 / ((xxAritQuadSEPERATS2MSS3 * yyAritQuadSEPERATS2MSS3)^0.5));
            rSEPERATS2MSS4 = (qXYSEPERATS2MSS4 / ((xxAritQuadSEPERATS2MSS4 * yyAritQuadSEPERATS2MSS4)^0.5));
    
            rQuadSEPERATS2MSS1 = ((rSEPERATS2MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS2MSS2 = ((rSEPERATS2MSS2^2) * 100);
            rQuadSEPERATS2MSS3 = ((rSEPERATS2MSS3^2) * 100);
            rQuadSEPERATS2MSS4 = ((rSEPERATS2MSS4^2) * 100);
        
            syxSEPERATS2MSS1 = (((yyAritQuadSEPERATS2MSS1 - ((qXYSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS2 = (((yyAritQuadSEPERATS2MSS2 - ((qXYSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS3 = (((yyAritQuadSEPERATS2MSS3 - ((qXYSEPERATS2MSS3^2) / xxAritQuadSEPERATS2MSS3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS2MSS4 = (((yyAritQuadSEPERATS2MSS4 - ((qXYSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS2MSS1 = (((syxSEPERATS2MSS1^2) / xxAritQuadSEPERATS2MSS1)^0.5);
            bStandSEPERATS2MSS2 = (((syxSEPERATS2MSS2^2) / xxAritQuadSEPERATS2MSS2)^0.5);
            bStandSEPERATS2MSS3 = (((syxSEPERATS2MSS3^2) / xxAritQuadSEPERATS2MSS3)^0.5);
            bStandSEPERATS2MSS4 = (((syxSEPERATS2MSS4^2) / xxAritQuadSEPERATS2MSS4)^0.5);
    
            aStandSEPERATS2MSS1 = (bStandSEPERATS2MSS1 * ((xQuadSEPERATS2MSS1 / minPifVAL)^0.5));
            aStandSEPERATS2MSS2 = (bStandSEPERATS2MSS2 * ((xQuadSEPERATS2MSS2 / minPifVAL)^0.5));
            aStandSEPERATS2MSS3 = (bStandSEPERATS2MSS3 * ((xQuadSEPERATS2MSS3 / minPifVAL)^0.5));
            aStandSEPERATS2MSS4 = (bStandSEPERATS2MSS4 * ((xQuadSEPERATS2MSS4 / minPifVAL)^0.5));
    
            printf("Scene 2 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS1, bSEPERATS2MSS1, rSEPERATS2MSS1, rQuadSEPERATS2MSS1, aStandSEPERATS2MSS1, bStandSEPERATS2MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS2, bSEPERATS2MSS2, rSEPERATS2MSS2, rQuadSEPERATS2MSS2, aStandSEPERATS2MSS2, bStandSEPERATS2MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS3, bSEPERATS2MSS3, rSEPERATS2MSS3, rQuadSEPERATS2MSS3, aStandSEPERATS2MSS3, bStandSEPERATS2MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS2MSS4, bSEPERATS2MSS4, rSEPERATS2MSS4, rQuadSEPERATS2MSS4, aStandSEPERATS2MSS4, bStandSEPERATS2MSS4);
            printf("Slave Scene 2 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS2slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS2slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifSEPERATS2slaveMSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS2slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS2slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS2slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT2MSS1[i,j] = (aSEPERATS2MSS1 + (bSEPERATS2MSS1 * REFS2MSS1[i,j]));
                    OUT2MSS2[i,j] = (aSEPERATS2MSS2 + (bSEPERATS2MSS2 * REFS2MSS2[i,j]));
                    OUT2MSS3[i,j] = (aSEPERATS2MSS3 + (bSEPERATS2MSS3 * REFS2MSS3[i,j]));
                    OUT2MSS4[i,j] = (aSEPERATS2MSS4 + (bSEPERATS2MSS4 * REFS2MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT2MSS1);
            CreatePyramid(OUT2MSS2);
            CreatePyramid(OUT2MSS3);
            CreatePyramid(OUT2MSS4);
        
            CreateHistogram(OUT2MSS1);
            CreateHistogram(OUT2MSS2);
            CreateHistogram(OUT2MSS3);
            CreateHistogram(OUT2MSS4);
            
            CloseRaster(REFS2MSS1);
            CloseRaster(REFS2MSS2);
            CloseRaster(REFS2MSS3);
            CloseRaster(REFS2MSS4);
    
            CloseRaster(OUT2MSS1);
            CloseRaster(OUT2MSS2);
            CloseRaster(OUT2MSS3);
            CloseRaster(OUT2MSS4);
        	printf("Scene 2 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
            
            if ( sensors3 == 7 )
            {
                printf("Master: Scene 4 (MSS), Slave: Scene 3 (ETM) - IMPOSSIBLE...\n\n\n");
            }
            
            else if ( sensors3 == 6 )
            {
        		printf("Master: Scene 4 (MSS), Slave: Scene 3 (TM) - IMPOSSIBLE...\n\n\n");
            }
            
            else
            {
            numeric xAritSEPERATS3MSS1, xAritSEPERATS3MSS2, xAritSEPERATS3MSS3, xAritSEPERATS3MSS4;
            numeric yAritSEPERATS3MSS1, yAritSEPERATS3MSS2, yAritSEPERATS3MSS3, yAritSEPERATS3MSS4;
    
            numeric aSEPERATS3MSS1, aSEPERATS3MSS2, aSEPERATS3MSS3, aSEPERATS3MSS4;
            numeric bSEPERATS3MSS1, bSEPERATS3MSS2, bSEPERATS3MSS3, bSEPERATS3MSS4;
            numeric rSEPERATS3MSS1, rSEPERATS3MSS2, rSEPERATS3MSS3, rSEPERATS3MSS4;
            numeric rQuadSEPERATS3MSS1, rQuadSEPERATS3MSS2, rQuadSEPERATS3MSS3, rQuadSEPERATS3MSS4;
            numeric syxSEPERATS3MSS1, syxSEPERATS3MSS2, syxSEPERATS3MSS3, syxSEPERATS3MSS4;
            numeric bStandSEPERATS3MSS1, bStandSEPERATS3MSS2, bStandSEPERATS3MSS3, bStandSEPERATS3MSS4;
            numeric aStandSEPERATS3MSS1, aStandSEPERATS3MSS2, aStandSEPERATS3MSS3, aStandSEPERATS3MSS4;
    
            numeric xSEPERATS3MSS1 = 0;
            numeric xSEPERATS3MSS2 = 0;
            numeric xSEPERATS3MSS3 = 0;
            numeric xSEPERATS3MSS4 = 0;
    
            numeric xQuadSEPERATS3MSS1 = 0;
            numeric xQuadSEPERATS3MSS2 = 0;
            numeric xQuadSEPERATS3MSS3 = 0;
            numeric xQuadSEPERATS3MSS4 = 0;
    
            numeric ySEPERATS3MSS1 = 0;
            numeric ySEPERATS3MSS2 = 0;
            numeric ySEPERATS3MSS3 = 0;
            numeric ySEPERATS3MSS4 = 0;
    
            numeric yQuadSEPERATS3MSS1 = 0;
            numeric yQuadSEPERATS3MSS2 = 0;
            numeric yQuadSEPERATS3MSS3 = 0;
            numeric yQuadSEPERATS3MSS4 = 0;
    
            numeric xySEPERATS3MSS1 = 0;
            numeric xySEPERATS3MSS2 = 0;
            numeric xySEPERATS3MSS3 = 0;
            numeric xySEPERATS3MSS4 = 0;
    
            numeric xxAritQuadSEPERATS3MSS1 = 0;
            numeric xxAritQuadSEPERATS3MSS2 = 0;
            numeric xxAritQuadSEPERATS3MSS3 = 0;
            numeric xxAritQuadSEPERATS3MSS4 = 0;
    
            numeric yyAritQuadSEPERATS3MSS1 = 0;
            numeric yyAritQuadSEPERATS3MSS2 = 0;
            numeric yyAritQuadSEPERATS3MSS3 = 0;
            numeric yyAritQuadSEPERATS3MSS4 = 0;
    
            numeric qXYSEPERATS3MSS1 = 0;
            numeric qXYSEPERATS3MSS2 = 0;
            numeric qXYSEPERATS3MSS3 = 0;
            numeric qXYSEPERATS3MSS4 = 0;
            
            for m = 1 to minPifVAL
                {		
                xSEPERATS3MSS1 = xSEPERATS3MSS1 + pifSEPERATS4S3MSS1arrayRAND[m];
                xSEPERATS3MSS2 = xSEPERATS3MSS2 + pifSEPERATS4S3MSS2arrayRAND[m];
                xSEPERATS3MSS3 = xSEPERATS3MSS3 + pifSEPERATS4S3MSS3arrayRAND[m];
                xSEPERATS3MSS4 = xSEPERATS3MSS4 + pifSEPERATS4S3MSS4arrayRAND[m];
    
                xQuadSEPERATS3MSS1 = (xQuadSEPERATS3MSS1 + (pifSEPERATS4S3MSS1arrayRAND[m]^2));
                xQuadSEPERATS3MSS2 = (xQuadSEPERATS3MSS2 + (pifSEPERATS4S3MSS2arrayRAND[m]^2));
                xQuadSEPERATS3MSS3 = (xQuadSEPERATS3MSS3 + (pifSEPERATS4S3MSS3arrayRAND[m]^2));
                xQuadSEPERATS3MSS4 = (xQuadSEPERATS3MSS4 + (pifSEPERATS4S3MSS4arrayRAND[m]^2));
    
                ySEPERATS3MSS1 = ySEPERATS3MSS1 + pifSEPERATS3slaveMSS1arrayRAND[m];
                ySEPERATS3MSS2 = ySEPERATS3MSS2 + pifSEPERATS3slaveMSS2arrayRAND[m];
                ySEPERATS3MSS3 = ySEPERATS3MSS3 + pifSEPERATS3slaveMSS3arrayRAND[m];
                ySEPERATS3MSS4 = ySEPERATS3MSS4 + pifSEPERATS3slaveMSS4arrayRAND[m];
                
                yQuadSEPERATS3MSS1 = (yQuadSEPERATS3MSS1 + (pifSEPERATS3slaveMSS1arrayRAND[m]^2));
                yQuadSEPERATS3MSS2 = (yQuadSEPERATS3MSS2 + (pifSEPERATS3slaveMSS2arrayRAND[m]^2));
                yQuadSEPERATS3MSS3 = (yQuadSEPERATS3MSS3 + (pifSEPERATS3slaveMSS3arrayRAND[m]^2));
                yQuadSEPERATS3MSS4 = (yQuadSEPERATS3MSS4 + (pifSEPERATS3slaveMSS4arrayRAND[m]^2));
    
                xySEPERATS3MSS1 = (xySEPERATS3MSS1 + (pifSEPERATS4S3MSS1arrayRAND[m] * pifSEPERATS3slaveMSS1arrayRAND[m]));
                xySEPERATS3MSS2 = (xySEPERATS3MSS2 + (pifSEPERATS4S3MSS2arrayRAND[m] * pifSEPERATS3slaveMSS2arrayRAND[m]));
                xySEPERATS3MSS3 = (xySEPERATS3MSS3 + (pifSEPERATS4S3MSS3arrayRAND[m] * pifSEPERATS3slaveMSS3arrayRAND[m]));
                xySEPERATS3MSS4 = (xySEPERATS3MSS4 + (pifSEPERATS4S3MSS4arrayRAND[m] * pifSEPERATS3slaveMSS4arrayRAND[m]));
            }	
            
            xAritSEPERATS3MSS1 = xSEPERATS3MSS1 / minPifVAL;
            xAritSEPERATS3MSS2 = xSEPERATS3MSS2 / minPifVAL;
            xAritSEPERATS3MSS3 = xSEPERATS3MSS3 / minPifVAL;
            xAritSEPERATS3MSS4 = xSEPERATS3MSS4 / minPifVAL;
    
            yAritSEPERATS3MSS1 = ySEPERATS3MSS1 / minPifVAL;
            yAritSEPERATS3MSS2 = ySEPERATS3MSS2 / minPifVAL;
            yAritSEPERATS3MSS3 = ySEPERATS3MSS3 / minPifVAL;
            yAritSEPERATS3MSS4 = ySEPERATS3MSS4 / minPifVAL;
    
            for n = 1 to minPifVAL
            {
                xxAritQuadSEPERATS3MSS1 = (xxAritQuadSEPERATS3MSS1 + ((pifSEPERATS4S3MSS1arrayRAND[n] - xAritSEPERATS3MSS1)^2));
                xxAritQuadSEPERATS3MSS2 = (xxAritQuadSEPERATS3MSS2 + ((pifSEPERATS4S3MSS2arrayRAND[n] - xAritSEPERATS3MSS2)^2));
                xxAritQuadSEPERATS3MSS3 = (xxAritQuadSEPERATS3MSS3 + ((pifSEPERATS4S3MSS3arrayRAND[n] - xAritSEPERATS3MSS3)^2));
                xxAritQuadSEPERATS3MSS4 = (xxAritQuadSEPERATS3MSS4 + ((pifSEPERATS4S3MSS4arrayRAND[n] - xAritSEPERATS3MSS4)^2));
    
                yyAritQuadSEPERATS3MSS1 = (yyAritQuadSEPERATS3MSS1 + ((pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)^2));
                yyAritQuadSEPERATS3MSS2 = (yyAritQuadSEPERATS3MSS2 + ((pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)^2));
                yyAritQuadSEPERATS3MSS3 = (yyAritQuadSEPERATS3MSS3 + ((pifSEPERATS3slaveMSS3arrayRAND[n] - yAritSEPERATS3MSS3)^2));
                yyAritQuadSEPERATS3MSS4 = (yyAritQuadSEPERATS3MSS4 + ((pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)^2));
    
                qXYSEPERATS3MSS1 = (qXYSEPERATS3MSS1 + ((pifSEPERATS4S3MSS1arrayRAND[n] - xAritSEPERATS3MSS1) * (pifSEPERATS3slaveMSS1arrayRAND[n] - yAritSEPERATS3MSS1)));
                qXYSEPERATS3MSS2 = (qXYSEPERATS3MSS2 + ((pifSEPERATS4S3MSS2arrayRAND[n] - xAritSEPERATS3MSS2) * (pifSEPERATS3slaveMSS2arrayRAND[n] - yAritSEPERATS3MSS2)));
                qXYSEPERATS3MSS3 = (qXYSEPERATS3MSS3 + ((pifSEPERATS4S3MSS3arrayRAND[n] - xAritSEPERATS3MSS3) * (pifSEPERATS3slaveMSS3arrayRAND[n] - yAritSEPERATS3MSS3)));
                qXYSEPERATS3MSS4 = (qXYSEPERATS3MSS4 + ((pifSEPERATS4S3MSS4arrayRAND[n] - xAritSEPERATS3MSS4) * (pifSEPERATS3slaveMSS4arrayRAND[n] - yAritSEPERATS3MSS4)));
            }
        
            aSEPERATS3MSS1 = (((xQuadSEPERATS3MSS1 * ySEPERATS3MSS1) - (xSEPERATS3MSS1 * xySEPERATS3MSS1)) / ((minPifVAL * xQuadSEPERATS3MSS1) - (xSEPERATS3MSS1^2)));
            aSEPERATS3MSS2 = (((xQuadSEPERATS3MSS2 * ySEPERATS3MSS2) - (xSEPERATS3MSS2 * xySEPERATS3MSS2)) / ((minPifVAL * xQuadSEPERATS3MSS2) - (xSEPERATS3MSS2^2)));
            aSEPERATS3MSS3 = (((xQuadSEPERATS3MSS3 * ySEPERATS3MSS3) - (xSEPERATS3MSS3 * xySEPERATS3MSS3)) / ((minPifVAL * xQuadSEPERATS3MSS3) - (xSEPERATS3MSS3^2)));
            aSEPERATS3MSS4 = (((xQuadSEPERATS3MSS4 * ySEPERATS3MSS4) - (xSEPERATS3MSS4 * xySEPERATS3MSS4)) / ((minPifVAL * xQuadSEPERATS3MSS4) - (xSEPERATS3MSS4^2)));
            
            bSEPERATS3MSS1 = qXYSEPERATS3MSS1 / xxAritQuadSEPERATS3MSS1;
            bSEPERATS3MSS2 = qXYSEPERATS3MSS2 / xxAritQuadSEPERATS3MSS2;
            bSEPERATS3MSS3 = qXYSEPERATS3MSS3 / xxAritQuadSEPERATS3MSS3;
            bSEPERATS3MSS4 = qXYSEPERATS3MSS4 / xxAritQuadSEPERATS3MSS4;
    
            rSEPERATS3MSS1 = (qXYSEPERATS3MSS1 / ((xxAritQuadSEPERATS3MSS1 * yyAritQuadSEPERATS3MSS1)^0.5));
            rSEPERATS3MSS2 = (qXYSEPERATS3MSS2 / ((xxAritQuadSEPERATS3MSS2 * yyAritQuadSEPERATS3MSS2)^0.5));
            rSEPERATS3MSS3 = (qXYSEPERATS3MSS3 / ((xxAritQuadSEPERATS3MSS3 * yyAritQuadSEPERATS3MSS3)^0.5));
            rSEPERATS3MSS4 = (qXYSEPERATS3MSS4 / ((xxAritQuadSEPERATS3MSS4 * yyAritQuadSEPERATS3MSS4)^0.5));
    
            rQuadSEPERATS3MSS1 = ((rSEPERATS3MSS1^2) * 100);			# * 100 transfers r^2 into percent ( % )
            rQuadSEPERATS3MSS2 = ((rSEPERATS3MSS2^2) * 100);
            rQuadSEPERATS3MSS3 = ((rSEPERATS3MSS3^2) * 100);
            rQuadSEPERATS3MSS4 = ((rSEPERATS3MSS4^2) * 100);
        
            syxSEPERATS3MSS1 = (((yyAritQuadSEPERATS3MSS1 - ((qXYSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS2 = (((yyAritQuadSEPERATS3MSS2 - ((qXYSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS3 = (((yyAritQuadSEPERATS3MSS3 - ((qXYSEPERATS3MSS3^2) / xxAritQuadSEPERATS3MSS3)) / (minPifVAL - 2))^0.5);
            syxSEPERATS3MSS4 = (((yyAritQuadSEPERATS3MSS4 - ((qXYSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)) / (minPifVAL - 2))^0.5);
            
            bStandSEPERATS3MSS1 = (((syxSEPERATS3MSS1^2) / xxAritQuadSEPERATS3MSS1)^0.5);
            bStandSEPERATS3MSS2 = (((syxSEPERATS3MSS2^2) / xxAritQuadSEPERATS3MSS2)^0.5);
            bStandSEPERATS3MSS3 = (((syxSEPERATS3MSS3^2) / xxAritQuadSEPERATS3MSS3)^0.5);
            bStandSEPERATS3MSS4 = (((syxSEPERATS3MSS4^2) / xxAritQuadSEPERATS3MSS4)^0.5);
    
            aStandSEPERATS3MSS1 = (bStandSEPERATS3MSS1 * ((xQuadSEPERATS3MSS1 / minPifVAL)^0.5));
            aStandSEPERATS3MSS2 = (bStandSEPERATS3MSS2 * ((xQuadSEPERATS3MSS2 / minPifVAL)^0.5));
            aStandSEPERATS3MSS3 = (bStandSEPERATS3MSS3 * ((xQuadSEPERATS3MSS3 / minPifVAL)^0.5));
            aStandSEPERATS3MSS4 = (bStandSEPERATS3MSS4 * ((xQuadSEPERATS3MSS4 / minPifVAL)^0.5));
    
            printf("Scene 3 - Slave Scene (MSS):\n");
            printf("     a            b            r            rQuad(perc.) aStdv        bStdv       \n");
            printf("MSS1 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS1, bSEPERATS3MSS1, rSEPERATS3MSS1, rQuadSEPERATS3MSS1, aStandSEPERATS3MSS1, bStandSEPERATS3MSS1);
            printf("MSS2 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS2, bSEPERATS3MSS2, rSEPERATS3MSS2, rQuadSEPERATS3MSS2, aStandSEPERATS3MSS2, bStandSEPERATS3MSS2);
            printf("MSS3 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS3, bSEPERATS3MSS3, rSEPERATS3MSS3, rQuadSEPERATS3MSS3, aStandSEPERATS3MSS3, bStandSEPERATS3MSS3);
            printf("MSS4 %12f %12f %12f %12f %12f %12f\n", aSEPERATS3MSS4, bSEPERATS3MSS4, rSEPERATS3MSS4, rQuadSEPERATS3MSS4, aStandSEPERATS3MSS4, bStandSEPERATS3MSS4);
            printf("Slave Scene 3 array values used for regression computation:\n");
            
            printf("MSS1: %12f ", pifSEPERATS3slaveMSS1arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS1arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS1arrayRAND[minPifVAL]);
    
            printf("MSS2: %12f ", pifSEPERATS3slaveMSS2arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS2arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS2arrayRAND[minPifVAL]);
    
            printf("MSS3: %12f ", pifSEPERATS3slaveMSS3arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS3arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS3arrayRAND[minPifVAL]);
    
            printf("MSS4: %12f ", pifSEPERATS3slaveMSS4arrayRAND[1]);
            for o = 2 to (minPifVAL-1)
            {
                  printf("%12f ", pifSEPERATS3slaveMSS4arrayRAND[o]);
            }
            printf("%12f\n", pifSEPERATS3slaveMSS4arrayRAND[minPifVAL]);
    
            for i = 1 to MSSlins
            {
                for j = 1 to MSScols
                {
                    OUT3MSS1[i,j] = (aSEPERATS3MSS1 + (bSEPERATS3MSS1 * REFS3MSS1[i,j]));
                    OUT3MSS2[i,j] = (aSEPERATS3MSS2 + (bSEPERATS3MSS2 * REFS3MSS2[i,j]));
                    OUT3MSS3[i,j] = (aSEPERATS3MSS3 + (bSEPERATS3MSS3 * REFS3MSS3[i,j]));
                    OUT3MSS4[i,j] = (aSEPERATS3MSS4 + (bSEPERATS3MSS4 * REFS3MSS4[i,j]));
                }
            }
 
            CreatePyramid(OUT3MSS1);
            CreatePyramid(OUT3MSS2);
            CreatePyramid(OUT3MSS3);
            CreatePyramid(OUT3MSS4);
        
            CreateHistogram(OUT3MSS1);
            CreateHistogram(OUT3MSS2);
            CreateHistogram(OUT3MSS3);
            CreateHistogram(OUT3MSS4);
            
            CloseRaster(REFS3MSS1);
            CloseRaster(REFS3MSS2);
            CloseRaster(REFS3MSS3);
            CloseRaster(REFS3MSS4);
    
            CloseRaster(OUT3MSS1);
            CloseRaster(OUT3MSS2);
            CloseRaster(OUT3MSS3);
            CloseRaster(OUT3MSS4);
        	printf("Scene 3 (MSS) got normalized, output was written, histogram created and pyramid written...\n\n\n");
            }
        }
    }    
}