input: 
  def perform_calculations_and_plot(logfile: str, calib_folder: str) -> None:
      """ Perform a series of calculations and generate plots based on input data from a logfile and calibration folder.
      The script performs calibration, calculates absorbed, emitted, reflected, pumped, and dissipated power, 
      and generates plots for absorbed vs emitted power, absorbed vs reflectivity, and dissipated power vs wavelength.
      It also calculates and displays the thermal resistance 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')
      # Plots generated and thermal resistance displayed
      """
  
output:     
      import pandas as pd
      import numpy as np
      import matplotlib.pyplot as plt
      from scipy.constants import Stefan_Boltzmann
  
      # Load logfile data
      log_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
      log_data['calibrated_power'] = log_data['power'] * calib_data['calibration_factor'].mean()
  
      # Calculate absorbed power
      log_data['absorbed_power'] = log_data['calibrated_power'] - log_data['reflected_power']
  
      # Calculate emitted power
      log_data['emitted_power'] = Stefan_Boltzmann * log_data['temperature']**4
  
      # Calculate reflectivity
      log_data['reflectivity'] = log_data['reflected_power'] / log_data['calibrated_power']
  
      # Calculate pumped power
      log_data['pumped_power'] = log_data['calibrated_power'] - log_data['absorbed_power']
  
      # Calculate dissipated power
      log_data['dissipated_power'] = log_data['absorbed_power'] - log_data['emitted_power']
  
      # Plot absorbed vs emitted power
      plt.figure(figsize=(10, 6))
      plt.plot(log_data['absorbed_power'], log_data['emitted_power'], 'bo-')
      plt.xlabel('Absorbed Power (W)')
      plt.ylabel('Emitted Power (W)')
      plt.title('Absorbed vs Emitted Power')
      plt.grid(True)
      plt.show()
  
      # Plot absorbed vs reflectivity
      plt.figure(figsize=(10, 6))
      plt.plot(log_data['absorbed_power'], log_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(log_data['wavelength'], log_data['dissipated_power'], 'go-')
      plt.xlabel('Wavelength (nm)')
      plt.ylabel('Dissipated Power (W)')
      plt.title('Dissipated Power vs Wavelength')
      plt.grid(True)
      plt.show()
  
      # Calculate thermal resistance
      thermal_resistance = np.mean(log_data['dissipated_power'] / log_data['temperature'])
      print(f'Thermal Resistance: {thermal_resistance:.2f} W/K')
  