input: 
  def perform_calculations_and_plot(logfile: str, calib_folder: str) -> None:
      """ Perform a series of calculations and generate plots based on input data.
      The function loads input data, performs calibration, calculates various values,
      and generates plots showing absorbed power vs emitted power, absorbed power vs reflectivity,
      and dissipated power vs wavelength. It also calculates thermal resistance and displays it on the plot.
  
      >>> perform_calculations_and_plot('../24_LL_ev/20150211_sample21-1-d6/spot333um.csv', '../24_LL_ev/20150204_calib_333um_s21-1-d6')
      
      """
  
output:     
      import pandas as pd
      import numpy as np
      import matplotlib.pyplot as plt
      from scipy.constants import Stefan_Boltzmann
  
      # Load data from logfile
      data = pd.read_csv(logfile)
  
      # Load calibration data
      calib_files = [f for f in os.listdir(calib_folder) if f.endswith('.csv')]
      calib_data = pd.concat([pd.read_csv(os.path.join(calib_folder, f)) for f in calib_files])
  
      # Perform calibration
      data['calibrated_power'] = data['power'] * calib_data['calibration_factor'].mean()
  
      # Calculate absorbed power
      data['absorbed_power'] = data['calibrated_power'] - data['reflected_power']
  
      # Calculate emitted power using Stefan-Boltzmann law
      data['emitted_power'] = Stefan_Boltzmann * data['temperature']**4
  
      # Calculate reflectivity
      data['reflectivity'] = data['reflected_power'] / data['calibrated_power']
  
      # Calculate dissipated power
      data['dissipated_power'] = data['absorbed_power'] - data['emitted_power']
  
      # Calculate thermal resistance
      data['thermal_resistance'] = (data['temperature'] - data['ambient_temperature']) / data['dissipated_power']
  
      # Plot absorbed power vs emitted power
      plt.figure(figsize=(10, 6))
      plt.plot(data['absorbed_power'], data['emitted_power'], 'bo-')
      plt.xlabel('Absorbed Power (W)')
      plt.ylabel('Emitted Power (W)')
      plt.title('Absorbed Power vs Emitted Power')
      plt.grid(True)
      plt.show()
  
      # Plot absorbed power vs reflectivity
      plt.figure(figsize=(10, 6))
      plt.plot(data['absorbed_power'], data['reflectivity'], 'ro-')
      plt.xlabel('Absorbed Power (W)')
      plt.ylabel('Reflectivity')
      plt.title('Absorbed Power vs Reflectivity')
      plt.grid(True)
      plt.show()
  
      # Plot dissipated power vs wavelength
      plt.figure(figsize=(10, 6))
      plt.plot(data['wavelength'], data['dissipated_power'], 'go-')
      plt.xlabel('Wavelength (nm)')
      plt.ylabel('Dissipated Power (W)')
      plt.title('Dissipated Power vs Wavelength')
      plt.grid(True)
      plt.show()
  
      # Display thermal resistance on the plot
      plt.figure(figsize=(10, 6))
      plt.plot(data['wavelength'], data['thermal_resistance'], 'mo-')
      plt.xlabel('Wavelength (nm)')
      plt.ylabel('Thermal Resistance (K/W)')
      plt.title('Thermal Resistance vs Wavelength')
      plt.grid(True)
      plt.show()
  