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

Data
input.csv holds one shared energy axis (1.196 to 1.606 eV, 1024 points) and 15 spectra, one per excitation power: 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80, 90 and 100 uW. These are the merged spectra, one column for each power.

Spectral content
- Peak 1: the dominant emission, near 1.32 to 1.335 eV.
- Peak 2: a weaker, broader band near 1.55 eV.
- A third feature rises at the very edge of the window (above about 1.58 eV). Its maximum lies outside the measured range, so a free Lorentzian fit of it is unconstrained: the width runs to its bound and the height to about 1e5. I excluded it and fitted the range E < 1.575 eV.

Model, fitted to each spectrum (scipy curve_fit, Levenberg-Marquardt):
  y = y0 + sum_i (2*A_i/pi) * w_i / (4*(x - xc_i)^2 + w_i^2),  for i = 1, 2
Intensity is the Lorentzian peak height, H = 2A/(pi*w). R^2 is 0.90 at 5 uW, where the signal is noisy, and 0.96 to 0.993 for the other powers.

Lorentzian results (peak 1 height H1 and position xc1; peak 2 height H2 and position xc2)
P(uW)   H1       xc1 (eV)    w1(eV)   H2      xc2 (eV)
  5     122.8    1.31772     0.0690   102.0   1.5536
 10     227.6    1.32287     0.0708   172.0   1.5513
 15     321.0    1.32496     0.0703   237.2   1.5508
 20     412.1    1.32663     0.0678   291.9   1.5496
 25     502.9    1.32794     0.0665   346.0   1.5491
 30     595.8    1.32890     0.0668   393.7   1.5507
 35     672.0    1.32940     0.0660   444.3   1.5505
 40     794.7    1.33057     0.0646   493.9   1.5513
 45     855.4    1.33084     0.0644   529.6   1.5504
 50     949.8    1.33182     0.0647   584.1   1.5499
 60    1134.4    1.33230     0.0636   678.4   1.5491
 70    1323.5    1.33345     0.0628   744.7   1.5501
 80    1503.4    1.33368     0.0621   813.4   1.5517
 90    1725.7    1.33436     0.0613   903.1   1.5514
100    1991.3    1.33497     0.0602   970.3   1.5518
Fit uncertainties: H about ±1.5 to 6 counts; xc1 about ±0.0001 to 0.0004 eV; xc2 about ±0.0005 to 0.002 eV.
Cross-check: a three-Lorentzian fit over the full range gives the same peak-1 values to within about 0.3%.

Allometric fit, y = a * x^b (unweighted; the weighted result is in brackets)
Plot 1, peak intensity vs power:
  Peak 1: a = 20.3 ± 1.6,  b = 0.988 ± 0.019   [weighted: b = 0.949 ± 0.014], R^2 = 0.996
  Peak 2: a = 31.4 ± 0.7,  b = 0.746 ± 0.005
  (Peak 1 integrated area instead of height: b = 0.907 ± 0.014)
Plot 2, peak position vs power:
  Peak 1: a = 1.3098 ± 0.0005 eV, b = 0.00419 ± 0.00009. The peak blueshifts by about 17 meV between 5 and 100 uW.
  Peak 2: b = -0.0003 ± 0.0002. This is zero within error, so the position does not change with power.

Interpretation
Peak 1 grows almost linearly with power (b ≈ 1). This is consistent with excitonic emission, with no sign of saturation. Peak 2 grows sublinearly (b ≈ 0.75), which is typical of defect- or trap-related emission.

Files in the run folder: fit2.py, allo.py, plot.py, fit_results.csv, intensity_vs_power.svg, position_vs_power.svg, position2_vs_power.svg.

The reported b is for peak 1 intensity vs power.
RESULT: b = 0.988 ± 0.019
