code: def summary_calculation(self):
          
          LOGGER.info('ANALYSIS : Summary calculation')
          if is_vector_layer(self._exposure_summary):
              # With continuous exposure, we don't have an exposure summary layer
              self.set_state_process(
                  'impact function',
                  'Aggregate the impact summary')
              self._aggregate_hazard_impacted = aggregate_hazard_summary(
                  self.exposure_summary, self._aggregate_hazard_impacted)
              self.debug_layer(self._exposure_summary, add_to_datastore=False)
  
          self.set_state_process(
              'impact function', 'Aggregate the aggregation summary')
          self._aggregation_summary = aggregation_summary(
              self._aggregate_hazard_impacted, self.aggregation)
          self.debug_layer(
              self._aggregation_summary, add_to_datastore=False)
  
          self.set_state_process(
              'impact function', 'Aggregate the analysis summary')
          self._analysis_impacted = analysis_summary(
              self._aggregate_hazard_impacted, self._analysis_impacted)
          self.debug_layer(self._analysis_impacted)
  
          if self._exposure.keywords.get('classification'):
              self.set_state_process(
                  'impact function', 'Build the exposure summary table')
              self._exposure_summary_table = exposure_summary_table(
                  self._aggregate_hazard_impacted, self._exposure_summary)
              self.debug_layer(
                  self._exposure_summary_table, add_to_datastore=False)
docs: Do the summary calculation.
  
          We do not check layers here, we will check them in the next step.