class GaseousAbsorptionAlgo {

    float[] getTransmissionGas(String bandName, float[] sza, float[] oza) {
        float[] calMassAirs = getMassAir(sza, oza);
        String[] gasesToCompute = gasToComputeForBand(bandName);

        final ArrayList<float[]> arrayListExponential = new ArrayList<>();

        for (String gas : gasesToCompute) {
            final float calAtmosphericGas = getAtmosphericGas(gas);
            final float normalizedConcentration = getNormalizedConcentration(gas);
            final float[] calExponential = new float[oza.length];

            for (int i = 0; i < sza.length; i++) {
                calExponential[i] = getExponential(calAtmosphericGas, normalizedConcentration, calMassAirs[i]);
            }
            arrayListExponential.add(calExponential);
        }

        final int size = arrayListExponential.size();
        float[] transmissionGas = new float[0];
        if (size == 1) {
            transmissionGas = arrayListExponential.get(0);
        } else if (size == 2) {
            transmissionGas = SmileCorrectionUtils.multiple2ArrayFloat(arrayListExponential.get(0), arrayListExponential.get(1));
        } else if (size == 3) {
            transmissionGas = SmileCorrectionUtils.multiple3ArrayFloat(arrayListExponential.get(0), arrayListExponential.get(1), arrayListExponential.get(2));
        }
        return transmissionGas;
    }

}