} //end method get_signed_int()

        public static double get_signed_int(double to_change, Upload_and_Segment_Images_Thread.DeviceType device_type)
        {
            if (device_type == Upload_and_Segment_Images_Thread.DeviceType.Revue || device_type == Upload_and_Segment_Images_Thread.DeviceType.Autographer)
                return to_change;
            else return get_signed_int((int)to_change);            
        } //end method get_signed_int()
 public double get_raw_acc_combined(Upload_and_Segment_Images_Thread.DeviceType device_type)
 {
     return(Math.Sqrt(Standard_Calculation.square_value(Standard_Calculation.get_signed_int(acc_x, device_type))
                      + Standard_Calculation.square_value(Standard_Calculation.get_signed_int(acc_y, device_type))
                      + Standard_Calculation.square_value(Standard_Calculation.get_signed_int(acc_z, device_type))));
 } //end method get_raw_acc_combined()
        //THIS CLASS IS RESPONSIBLE FOR MANIPULATING AN ARRAY OF SENSOR VALUE
        //IT SHALL OPERATE AS FOLLOWS (BASED ON MY SEGMENTATION EXPERIMENTS)
        //1. SHOT BOUNDARY DETECTION APPROACH (I.E. JUST COMPARE ADJACENT READINGS)


        public static void manipulate_relevant_sensor_values(Sensor_Reading[] sensor_vals, int start_index, int end_index, Upload_and_Segment_Images_Thread.DeviceType device_type)
        {
            //NOTE THE START AND END INDEX ... THESE SIGNIFY THE START AND END OF A PARTICULAR CHUNK IN THE ARRAY

            //1. get the list of sensor values
            //NOTE THE START AND END INDEX ... THESE SIGNIFY THE START AND END OF A PARTICULAR CHUNK IN THE ARRAY

            //FIRSTLY STORE THE RAW VALUES TO LOCAL DOUBLE ARRAYS
            double[] original_acc_combined_values = new double[(end_index - start_index) + 1];
            double[] original_acc_x_values        = new double[original_acc_combined_values.Length];
            double[] original_pir_values          = new double[original_acc_combined_values.Length];

            for (int counter = 0; counter < original_acc_combined_values.Length; counter++)
            {
                original_acc_combined_values[counter] = sensor_vals[start_index + counter].get_raw_acc_combined(device_type);
                original_acc_x_values[counter]        = Standard_Calculation.get_signed_int(sensor_vals[start_index + counter].get_acc_x(), device_type);
                original_pir_values[counter]          = sensor_vals[start_index + counter].get_pir();
            } //end for (int counter = 0; counter < original_sensor_values.Length; counter++)



            //---------------------------------------------------------------


            //2. perform SDB comparisons on acc_comb and texttiling on acc x
            double[] acc_comb_manipulated_scores, acc_x_manipulated_scores, pir_manipulated_scores;

            //perform SDB comparisons on acc_comb
            acc_comb_manipulated_scores = calculate_sbd_scores(original_acc_combined_values);

            //and TextTiling of block size 2 on the acc_x component
            acc_x_manipulated_scores = calculate_texttiling_scores(original_acc_x_values, 2);

            //and finally the PIR with a block size of 78
            pir_manipulated_scores = calculate_texttiling_scores(original_pir_values, 78);


            //---------------------------------------------------------------


            //3. smooth the values over a window size of just 1 (i.e. 3 readings just taken, ref, and 1 before + 1 after)
            Standard_Calculation.smooth_array_using_median_values(acc_comb_manipulated_scores, 1);
            Standard_Calculation.smooth_array_using_median_values(acc_x_manipulated_scores, 1);
            Standard_Calculation.smooth_array_using_median_values(original_pir_values, 1);


            //---------------------------------------------------------------


            //4. update Sensor_Reading[] array with newly calculated manipulated values
            set_relevant_manipulated_sensor_values(sensor_vals, acc_comb_manipulated_scores, acc_x_manipulated_scores, pir_manipulated_scores, start_index);
        } //end method manipulate_relevant_sensor_values