Power-dependent PL: Lorentzian peak fits and allometric (power-law) fits

Data: input.csv has 1024 energy points (1.196 to 1.606 eV) and 15 spectra, one per excitation power (5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80, 90, 100 uW). I put all 15 spectra on one common energy axis (the merged set). I removed cosmic-ray spikes by replacing points that sat far above a 7-point running median; this changed 2 points at 45 uW and 1 each at 60 and 100 uW.

Lorentzian fit: each spectrum was fitted as one model, a constant baseline y0 plus three Lorentzians, using Origin's Lorentz form y = y0 + (2A/pi)*w/(4(x-xc)^2 + w^2):
  Peak 1: the main PL peak, about 1.32 to 1.34 eV
  Peak 2: a weaker, broader peak, about 1.53 to 1.54 eV
  Peak 3: a rising edge at the top of the range (>1.58 eV), whose center lies outside the data. It is included only so it does not distort peaks 1 and 2, and it is not analysed.
Peak intensity = Lorentzian peak height H = 2A/(pi*w). The fits have R^2 from 0.92 at 5 uW to 0.99 at 100 uW.

Power   H1      xc1 (eV)   w1 (eV)  | H2     xc2 (eV)  w2 (eV)
  5     122.7   1.31804    0.0692   |  79.1  1.5363    0.115
 10     226.5   1.32314    0.0707   | 108.9  1.5306    0.090
 15     319.3   1.32522    0.0700   | 153.3  1.5322    0.087
 20     409.8   1.32685    0.0675   | 198.8  1.5333    0.082
 25     500.7   1.32813    0.0663   | 243.7  1.5345    0.084
 30     593.8   1.32907    0.0667   | 280.0  1.5362    0.087
 35     669.1   1.32954    0.0657   | 297.9  1.5352    0.080
 40     792.6   1.33070    0.0646   | 352.3  1.5372    0.085
 45     853.0   1.33097    0.0643   | 370.7  1.5358    0.083
 50     947.8   1.33195    0.0647   | 416.2  1.5357    0.084
 60    1131.8   1.33242    0.0636   | 489.7  1.5358    0.081
 70    1321.5   1.33355    0.0628   | 544.2  1.5372    0.085
 80    1501.9   1.33377    0.0621   | 606.5  1.5397    0.090
 90    1723.3   1.33444    0.0613   | 659.0  1.5392    0.086
100    1989.3   1.33506    0.0602   | 716.0  1.5391    0.086
(The full table, with areas, xc uncertainties and baseline, is in lorentz_fit_results.csv.)

Allometric fit, y = a * P^b, with P in uW, unweighted nonlinear least squares:

Plot 1, peak intensity vs power:
  Peak 1: a = 20.1 ± 1.6,  b = 0.990 ± 0.019  (R^2 = 0.997)
  Peak 2: a = 18.4 ± 0.8,  b = 0.797 ± 0.010  (R^2 = 0.999)
Plot 2, peak position vs power:
  Peak 1: a = 1.3103 ± 0.0005 eV,  b = 0.00412 ± 0.00010  (R^2 = 0.993). The peak blue-shifts by about 17 meV from 5 to 100 uW.
  Peak 2: a = 1.5284 ± 0.0021 eV,  b = 0.0014 ± 0.0004  (R^2 = 0.50). The shift is small and noisy.

What this means: the main peak's intensity grows almost exactly linearly with power (b ≈ 1), with no sign of saturation. The 1.54 eV peak grows sublinearly (b ≈ 0.8).

How robust this is:
  - If intensity is taken as the integrated Lorentzian area A instead of the height, peak 1 gives b = 0.911 ± 0.014. The difference comes from the peak narrowing slightly as power rises.
  - Fitting peak 1 alone in a 1.25 to 1.43 eV window gives b = 1.02 ± 0.02 for the height.
  - The free baseline comes out slightly negative. This is because Lorentzian tails are heavier than the real lineshape's.

Plots: matplotlib is not installed on the server, so no image files were made. The data for both plots and the fitted curves are in lorentz_fit_results.csv (and fit3.py / out3.txt).

RESULT: b = 0.99 ± 0.02
