def METHOD_NAME(self):
    if not self.offline:
        outputs = self.response['outputs']
        ac_hourly = outputs.get('ac')
        if ac_hourly is None:
            ac_hourly = [0] * 8760
        dc_nameplate = self.system_capacity * 1000  # W
        prod_factor = []
        # subhourly (i.e 15 minute data)
        if self.time_steps_per_hour >= 1:
            timesteps = []
            timesteps_base = range(0, 8760)
            for ts_b in timesteps_base:
                for step in range(0, self.time_steps_per_hour):
                   timesteps.append(ts_b)
        # downscaled run (i.e 288 steps per year)
        else:
            timesteps = range(0, 8760, int(1 / self.time_steps_per_hour))
        for hour in timesteps:
            # degradation (levelization factor) applied in mosel model
            prod_factor.append(round(ac_hourly[hour]/ dc_nameplate, 4))
    else:
        prod_factor_original = list()
        import os
        with open(os.path.join('reo', 'tests', 'offline_pv_prod_factor.txt'), 'r') as f:
            for line in f:
                prod_factor_original.append(float(line.strip('\n')))
        # offline_pv_prod_factor.txt has 8760 rows, thus modifying prod_factor list
        # to have 8760 * time_steps_per_hour values
        prod_factor = [val for val in prod_factor_original for _ in range(self.time_steps_per_hour)]
    return prod_factor