input: 
  def perform_data_calculations_and_plots(logfile: str, calib_folder: str) -> None:
      """ This function performs a series of calculations and plots based on input data.
      Before running this script, run eval_spectrum.py and calibration.py with appropriate measurements.
      The script imports necessary modules and functions from external sources. The main function
      loads the input data, performs calibration, calculates various values, and generates plots
      based on instructions provided in a separate text file. The generated plots show absorbed
      power vs emitted power, absorbed power vs reflectivity, and dissipated power vs wavelength.
      The script also calculates thermal resistance and displays it on the plot.
      >>> perform_data_calculations_and_plots('../24_LL_ev/20150211_sample21-1-d6/spot333um.csv', '../24_LL_ev/20150204_calib_333um_s21-1-d6')
      None
      """
  
output:     
      import pandas as pd
      import numpy as np
      import matplotlib.pyplot as plt
      from scipy.constants import Stefan_Boltzmann
  
      # Load the logfile data
      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_emitted_power'] = data['emitted_power'] * calib_data['calibration_factor'].mean()
      data['calibrated_absorbed_power'] = data['absorbed_power'] * calib_data['calibration_factor'].mean()
  
      # Calculate absorbed power vs emitted power
      plt.figure(figsize=(10, 6))
      plt.plot(data['calibrated_emitted_power'], data['calibrated_absorbed_power'], 'o-')
      plt.xlabel('Emitted Power (W)')
      plt.ylabel('Absorbed Power (W)')
      plt.title('Absorbed Power vs Emitted Power')
      plt.grid(True)
      plt.show()
  
      # Calculate absorbed power vs reflectivity
      data['reflectivity'] = 1 - (data['calibrated_absorbed_power'] / data['calibrated_emitted_power'])
      plt.figure(figsize=(10, 6))
      plt.plot(data['calibrated_absorbed_power'], data['reflectivity'], 'o-')
      plt.xlabel('Absorbed Power (W)')
      plt.ylabel('Reflectivity')
      plt.title('Absorbed Power vs Reflectivity')
      plt.grid(True)
      plt.show()
  
      # Calculate dissipated power vs wavelength
      data['dissipated_power'] = data['calibrated_emitted_power'] - data['calibrated_absorbed_power']
      plt.figure(figsize=(10, 6))
      plt.plot(data['wavelength'], data['dissipated_power'], 'o-')
      plt.xlabel('Wavelength (nm)')
      plt.ylabel('Dissipated Power (W)')
      plt.title('Dissipated Power vs Wavelength')
      plt.grid(True)
      plt.show()
  
      # Calculate thermal resistance
      data['thermal_resistance'] = (data['temperature_rise'] / data['dissipated_power'])
      print(f"Thermal Resistance: {data['thermal_resistance'].mean()} K/W")
  