class_docstr: Highlight pixels of a layer by an amount determined by a secondary layer.
  
  The highlighting is applied per channel to either add or subtract an
  intensity from the primary image. In the addition case, the code is
  essentially doing::
  
      highlight_factor = (highlight_data - min_highlight) / (max_highlight - min_highlight)
      channel_result = primary_data + highlight_factor * max_factor
  
  The ``max_factor`` is defined per channel and can be positive for an
  additive effect, negative for a subtractive effect, or zero for no
  effect.
class_docstr_tok: ["Highlight","pixels","of","a","layer","by","an","amount","determined","by","a","secondary","layer",".","The","highlighting","is","applied","per","channel","to","either","add","or","subtract","an","intensity","from","the","primary","image",".","In","the","addition","case",",","the","code","is","essentially","doing",":",":","highlight_factor","=","(","highlight_data","-","min_highlight",")","\/","(","max_highlight","-","min_highlight",")","channel_result","=","primary_data","+","highlight_factor","*","max_factor","The","``","max_factor","``","is","defined","per","channel","and","can","be","positive","for","an","additive","effect",",","negative","for","a","subtractive","effect",",","or","zero","for","no","effect","."]
code: def _apply_highlight_effect(self, background_data, factor):
      new_channels = []
      for max_factor, band_name in zip(self.max_factor, "RGBA"):
          new_channel = background_data.sel(bands=[band_name])
          if max_factor != 0 or max_factor is not None:
              new_channel = new_channel + factor * max_factor
          new_channels.append(new_channel)
      return new_channels
  
file_path: satpy/satpy/composites/glm.py
imports: import logging
  import xarray
  from satpy.composites import GenericCompositor
  from satpy.writers import get_enhanced_image
label_desc: Use image node_id 4 for calling the HighlightCompositor obj's underlying member method code with example usage: obj._apply_highlight_effect(background_data, factor) and returns: new_channels