İlker Can CELIK

Geant4 · C++ · ROOT

Hesaplamalı Nükleer Fizik

Radyasyon taşınımı ve gama ışını spektroskopisini öğretmek için kullanılan iki modeli keşfedin. Parametreleri değiştirin, grafikleri yorumlayın ve ardından örneklerin kodlarını inceleyin.

Foton zayıflaması

Homojen bir levhadan geçen dar, tek enerjili bir demet için etkileşmeden geçen foton oranı I/I₀ = exp(−μx) bağıntısına uyar. μ doğrusal zayıflama katsayısı, x levha kalınlığıdır. İşaretçi, seçilen kalınlıktaki sonucu gösterir.

0.2
10
Geçen foton oranı: %13,5

Deneyin μ = 0,20 cm⁻¹ için 5 cm ve 10 cm’yi karşılaştırın. Kalınlığı iki katına çıkarmak geçen oranın karesini verir. Bu analitik karşılaştırmada saçılan fotonlar hesaba katılmaz.

Gama ışını spektrumu

Gauss dağılımından örneklenen sentetik bir 661,7 keV piki, düzgün dağılımlı arka plana eklenir. Dedektör çözünürlüğünü yarı yükseklikteki tam genişlik (FWHM) cinsinden değiştirin. Değişimi karşılaştırmak için her hesaplamada aynı rastgele sayı tohumu kullanılır.

40
10 keV genişliğindeki kanallarda sentetik sayımlar

Deneyin 20 keV ile 80 keV’yi karşılaştırın. Model aynı sayıda sinyal olayıyla başlarken pik daha fazla kanala yayılır. Bu sentetik örnek gerçekçi Compton sürekliliğini ve dedektör yanıtını içermez.

Kod örnekleri

Geant4

G4ParticleGun kullanan bir Geant4 uygulamasında tek enerjili foton kaynağını ayarlayın. Makro kaynak ayarlarını içerir. Analitik eğriyle karşılaştırmak için levha geometrisini tanımlayın, elektromanyetik etkileşimleri etkinleştirin ve çıkışta etkileşmemiş birincil fotonları sayın.

Kaynak kodu göster
# For a Geant4 application that uses G4ParticleGun.
# Example geometry assumption: a slab normal to z, downstream of z = -10 cm.
# Change source position to match your geometry.
/run/initialize
/gun/particle gamma
/gun/energy 661.7 keV
/gun/position 0 0 -10 cm
/gun/direction 0 0 1
/run/beamOn 100000
İndir · geant4_gamma_source.mac

Geant4 temel örnekleri

C++

Aynı zayıflama eğrisini hesaplayın ve 21 noktayı CSV olarak alın. μ değerini cm⁻¹, en büyük kalınlığı cm cinsinden girin.

c++ -std=c++17 attenuation.cpp -o attenuation
printf '0.20 10\n' | ./attenuation > curve.csv
Kaynak kodu göster
#include <cmath>
#include <iomanip>
#include <iostream>

int main() {
    double mu = 0.0;
    double thickness = 0.0;
    if (!(std::cin >> mu >> thickness) || !std::isfinite(mu) ||
        !std::isfinite(thickness) || mu < 0.0 || thickness < 0.0) {
        std::cerr << "Enter a nonnegative coefficient (cm^-1) and thickness (cm).\n";
        return 1;
    }

    std::cout << "thickness_cm,transmitted_fraction\n" << std::setprecision(8);
    for (int step = 0; step <= 20; ++step) {
        const double depth = thickness * (step / 20.0);
        std::cout << depth << ',' << std::exp(-mu * depth) << '\n';
    }
}
İndir · attenuation.cpp

ROOT

TH1D histogramını Gauss piki ve düz arka planla doldurup ROOT’ta görüntüleyin. Makro tarayıcı örneğiyle aynı modeli, ROOT’un kendi rastgele sayı üreteciyle uygular.

root -l gamma_spectrum.C
Kaynak kodu göster
#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();
}
İndir · gamma_spectrum.C

ROOT TH1D

Güncel yayınlara dayalı alıştırmalar

Makalelerin yöntemlerine dayanan bu alıştırmaları kendi verilerinizle uygulayabilirsiniz.

Geant4 ve XCOM · Kaplamalı pamuk gabardin

Bileşimi ve birim alan başına kütleyi sabit tutarak homojen bir levhayı kaplama ve kumaşı ayrı ayrı temsil eden geometriyle karşılaştırın. Etkileşmeden geçen fotonları dedektör sayımlarından ayrı kaydedin.

Makaleyi okuyun ↗ · Radiation Physics and Chemistry

ROOT ve XCOM · Foton etkileşimlerinin baskınlığı

Su ve kurşun için XCOM katsayılarını dışa aktarın. ROOT’ta her kısmi katsayıyı, aynı malzeme ve enerjideki toplam katsayıya bölün. Oranları logaritmik enerji ekseninde çizip en büyük katkının nerede değiştiğini belirleyin.

Makaleyi okuyun ↗ · Harran University Journal of Engineering · 2026

Gama geçirgenliği · Seryum oksit kaplamalar

Makalede kaplamalı kumaş ve cam, kobalt-60’ın 1173 ve 1332 keV gama enerjilerinde incelendi. İki enerji penceresi kullanarak arka plan düzeltmeli geçirgenliği her enerji için ayrı hesaplayın.

Makaleyi okuyun ↗ · Radiation Effects and Defects in Solids · 2026

C++ ve ROOT · Yüklü parçacıklarda durdurma gücü ve menzil

Aynı ortamda iki parçacık türü için durdurma gücü tablolarını kullanın. C++ ile ortak bir enerji aralığında durdurma gücünün tersinin integralini sayısal olarak hesaplayın, ardından menzilleri ROOT’ta çizin. Tutarlı birimler kullanıp enerji aralığını belirtin.

Makaleyi okuyun ↗ · The European Physical Journal Plus · 2025

İlgili araştırmalar