#include <TCanvas.h>
#include <TH1D.h>
#include <TRandom3.h>

// Run with: root -l gamma_spectrum.C
void gamma_spectrum() {
    constexpr double peakEnergyKeV = 661.7;
    constexpr double fwhmKeV = 40.0;
    TRandom3 random(42);
    auto* spectrum = new TH1D("synthetic_gamma", "Synthetic spectrum;Energy (keV);Counts / 10 keV", 80, 0, 800);

    for (int event = 0; event < 1800; ++event)
        spectrum->Fill(random.Gaus(peakEnergyKeV, fwhmKeV / 2.35482));

    // A uniform background makes the peak easier to study independently.
    for (int event = 0; event < 5000; ++event)
        spectrum->Fill(random.Uniform(0.0, 800.0));

    auto* canvas = new TCanvas("gamma_spectrum_canvas", "Gamma spectrum", 820, 460);
    spectrum->SetLineColor(kBlue + 2);
    spectrum->Draw("HIST");
    canvas->Update();
}
