class RayleighCorrAlgorithm {

    double[] getCorrOzone(double[] rho_ng_ref, double absorpO, double[] ozones, double[] cosOZARads,
                          double[] cosSZARads) {
        double[] ozoneCorrRefl = new double[rho_ng_ref.length];
        for (int i = 0; i < rho_ng_ref.length; i++) {
            double cts = cosSZARads[i]; //#cosine of sun zenith angle
            double ctv = cosOZARads[i];//#cosine of view zenith angle
            double ozone = ozones[i];
            double rho_ng = rho_ng_ref[i];
            ozoneCorrRefl[i] = Double.isNaN(rho_ng) ? Double.NaN : getCorrOzone(rho_ng, absorpO, ozone, cts, ctv);
        }
        return ozoneCorrRefl;
    }

    public  RayleighCorrAlgorithm(String bandPattern, int numBands);
    public  RayleighCorrAlgorithm(Sensor sensor);

}