You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: responseFunction_Pearsons.m
    path of file: ./repos/HydroSight/algorithms/models/TransferNoise/ResponseFunctions
    
    the code of the file until where you have to start completion: classdef responseFunction_Pearsons < responseFunction_abstract
% Pearson's type III impulse response transfer function class. 

    properties(GetAccess=public, SetAccess=protected)
        A
        b
        n        
        settings 
    end

%%  STATIC METHODS        
% Static methods used by the Graphical User Interface to inform the
% user of the available model options and their input format.
    methods(Static)        
        function options = modelOptions(bore_ID, forcingDataSiteID, siteCoordinates)
            
            options{1} = modelOptions();
            
            % Assign format of table for GUI.
            options{1}.label = 'Parameter bounds';
            options{1}.colNames = {'Parameter Name', 'Lower Physical Bound', 'Upper Physical Bound'};
            options{1}.colFormats = {'char', 'numeric', 'numeric'};
            opti
    
function
                % should have been defined prior in a call to theta().
                if isnan(obj.settings.t_limit) || isnan(obj.settings.weight_at_limit)
                    error('When "exp(obj.n) - 1<1", the method "theta()" must be called prior to "intTheta()" so that the lower time limit can be set.')
                end                   
                delta_t_to_limit = obj.settings.t_limit - t;
                result = A_backTrans ./(1-obj.settings.weight_at_limit) .* (gamma(n_backTrans)./(b_backTrans^n_backTrans) .* (gammainc(b_backTrans .* t ,n_backTrans ,'upper') - gammainc(b_backTrans .* obj.settings.t_limit ,n_backTrans ,'upper')) - obj.settings.weight_at_limit.*delta_t_to_limit);
            end
            
            % Trials indicated that when tor (ie t herein) is very large,
            % result can equal NaN.            
            if any(isnan(result) | isinf(result))
                result(:)=NaN;                
            end                               
            
        end 
        
        % Numerical integration of impulse-response function from 0 to 1.
        % This is undertaken to ensure the first time step is accuratly
        % estimated.
        function result = intTheta_lowerTail(obj, t)           

            % Back-transform parameter 'n' from natural log domain to
            % non-transformed domain. This transformation of n was
            % undertaken because ocassionally the optimal value of n was
            % very large eg 200. By transforming it as below, such large
            % values do not occur in the transformed domain and this allows
            % for a greater parameter range to be more easily accessed by
            % the gradient based calibration.
            n_backTrans = 10^(obj.n);    
            
            % Back transform 'b'
            b_backTrans = 10^(obj.b);
            
            % Back transform 'A'
            A_backTrans = 10^(obj.A);            
            
            % If n>1, then theta will have a value of 't' at which the
            % gradient is zero. By putting this value of 't' into theta
            % then value at the peak can be determined. 
            if n_backTrans>1
                t_peak = (n_backTrans - 1)/b_backTrans;
                theta_peak =  t_peak^(n_backTrans-1) * exp( -b_backTrans * t_peak );
                
                % Recalculate theta_peak in a way to minimise rounding
                % errors.
                if any(isinf(theta_peak))
                      theta_peak = ( (n_backTrans - 1)/b_backTrans * exp(-1))^(n_backTrans-1);
                end