class_docstr: Base class for sun zenith correction modifiers.
docstr: Generate the composite.
docstr_tok: ["Generate","the","composite","."]
code: def __call__(self, projectables, **info):
      """Generate the composite."""
      projectables = self.match_data_arrays(
          list(projectables) + list(info.get("optional_datasets", []))
      )
      vis = projectables[0]
      if vis.attrs.get("sunz_corrected"):
          logger.debug("Sun zenith correction already applied")
          return vis
  
      logger.debug("Applying sun zen correction")
      if not info.get("optional_datasets"):
          # we were not given SZA, generate cos(SZA)
          logger.debug("Computing sun zenith angles.")
          from .angles import get_cos_sza
  
          coszen = get_cos_sza(vis)
          if self.max_sza is not None:
              coszen = coszen.where(coszen >= self.max_sza_cos)
      else:
          # we were given the SZA, calculate the cos(SZA)
          coszen = np.cos(np.deg2rad(projectables[1]))
  
      proj = self._apply_correction(vis, coszen)
      proj.attrs = vis.attrs.copy()
      self.apply_modifier_info(vis, proj)
      return proj
  
imports: from __future__ import annotations
  import logging
  import numpy
  from satpy.modifiers import ModifierBase
  from satpy.modifiers.angles import sunzen_corr_cos, sunzen_reduction
  from satpy.utils import atmospheric_path_length_correction
label_desc: Use image node_id 2 for calling the SunZenithCorrectorBase obj's underlying member method code with example usage: obj.__call__(projectables) and returns: proj, vis