input: def main(logfile: str, calib_folder: str) -> None:
      """
      This function performs a series of calculations and plots based on input data.
      Before running this function, ensure that 'eval_spectrum.py' and 'calibration.py' 
      have been run with appropriate measurements. The function imports necessary modules 
      and functions from external sources. It loads the input data, performs calibration, 
      calculates various values, and generates plots based on instructions provided 
      in a separate text file. The generated plots include:
      1. Absorbed power vs. emitted power.
      2. Absorbed power vs. reflectivity.
      3. Dissipated power vs. wavelength.
      The function also calculates and displays thermal resistance on the plots.
      
      >>> main('../24_LL_ev/20150211_sample21-1-d6/spot333um.csv', '../24_LL_ev/20150204_calib_333um_s21-1-d6')
      None
      """
output:     
      import os
      import pandas as pd
      import numpy as np
      import matplotlib.pyplot as plt
      from eval_spectrum import load_spectrum
      from calibration import calibrate_data
  
      # Load the logfile data
      log_data = pd.read_csv(logfile)
  
      # Load the calibration data
      calib_files = [os.path.join(calib_folder, f) for f in os.listdir(calib_folder) if f.endswith('.csv')]
      calib_data = pd.concat([pd.read_csv(f) for f in calib_files])
  
      # Perform calibration
      calibrated_data = calibrate_data(log_data, calib_data)
  
      # Calculate absorbed power
      absorbed_power = calibrated_data['emitted_power'] - calibrated_data['reflected_power']
  
      # Calculate dissipated power
      dissipated_power = calibrated_data['emitted_power'] - absorbed_power
  
      # Plot absorbed power vs emitted power
      plt.figure(1)
      plt.plot(calibrated_data['emitted_power'], absorbed_power, 'bo')
      plt.xlabel('Emitted Power')
      plt.ylabel('Absorbed Power')
      plt.title('Absorbed Power vs Emitted Power')
      plt.grid(True)
  
      # Plot absorbed power vs reflectivity
      plt.figure(2)
      reflectivity = calibrated_data['reflected_power'] / calibrated_data['emitted_power']
      plt.plot(absorbed_power, reflectivity, 'ro')
      plt.xlabel('Absorbed Power')
      plt.ylabel('Reflectivity')
      plt.title('Absorbed Power vs Reflectivity')
      plt.grid(True)
  
      # Plot dissipated power vs wavelength
      plt.figure(3)
      plt.plot(calibrated_data['wavelength'], dissipated_power, 'go')
      plt.xlabel('Wavelength')
      plt.ylabel('Dissipated Power')
      plt.title('Dissipated Power vs Wavelength')
      plt.grid(True)
  
      # Calculate and display thermal resistance
      thermal_resistance = np.mean(dissipated_power / absorbed_power)
      plt.figtext(0.5, 0.01, f'Thermal Resistance: {thermal_resistance:.2f}', ha='center', fontsize=12)
  
      # Show all plots
      plt.show()
  