class_docstr: Class implementing the MTG FCI L1c Filehandler.
  
  This class implements the Meteosat Third Generation (MTG) Flexible
  Combined Imager (FCI) Level-1c NetCDF reader.
  It is designed to be used through the :class:`~satpy.Scene`
  class using the :mod:`~satpy.Scene.load` method with the reader
  ``"fci_l1c_nc"``.
docstr: IR channel calibration.
docstr_tok: ["IR","channel","calibration","."]
code: def calibrate_rad_to_bt(self, radiance, key):
      """IR channel calibration."""
      # using the method from PUG section Converting from Effective Radiance to Brightness Temperature for IR Channels
      measured = self.get_channel_measured_group_path(key["name"])
  
      vc = self.get_and_cache_npxr(
          measured + "/radiance_to_bt_conversion_coefficient_wavenumber"
      ).astype(np.float32)
  
      a = self.get_and_cache_npxr(
          measured + "/radiance_to_bt_conversion_coefficient_a"
      ).astype(np.float32)
      b = self.get_and_cache_npxr(
          measured + "/radiance_to_bt_conversion_coefficient_b"
      ).astype(np.float32)
  
      c1 = self.get_and_cache_npxr(
          measured + "/radiance_to_bt_conversion_constant_c1"
      ).astype(np.float32)
      c2 = self.get_and_cache_npxr(
          measured + "/radiance_to_bt_conversion_constant_c2"
      ).astype(np.float32)
  
      for v in (vc, a, b, c1, c2):
          if v == v.attrs.get(
              "FillValue", default_fillvals.get(v.dtype.str[1:])
          ):
              logger.error(
                  "{:s} set to fill value, cannot produce "
                  "brightness temperatures for {:s}.".format(
                      v.attrs.get(
                          "long_name",
                          "at least one necessary coefficient",
                      ),
                      measured,
                  )
              )
              return radiance * np.float32(np.nan)
  
      nom = c2 * vc
      denom = a * np.log(1 + (c1 * vc ** np.float32(3.0)) / radiance)
  
      res = nom / denom - b / a
  
      return res
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  from datetime import timedelta
  from functools import cached_property
  import dask.array
  import numpy
  import xarray
  from netCDF4 import default_fillvals
  from pyresample import geometry
  from satpy.readers._geos_area import get_geos_area_naming
  from satpy.readers.eum_base import get_service_mode
  from .netcdf_utils import NetCDF4FsspecFileHandler
label_desc: Use image node_id 24 for calling the FCIL1cNCFileHandler obj's underlying member method code with example usage: obj.calibrate_rad_to_bt(radiance, key) and returns: res, unknown