Физика нейтрино
  • Физика нейтрино
  • Введение
  • Апплеты
  • Solar Neutrinos
  • Все лекции

Частотный трек электрона

Излучение уменьшает энергию электрона и повышает циклотронную частоту
← Все апплеты К курсу

Выберите начальную кинетическую энергию электрона. Проследите, как потеря энергии на излучение меняет его циклотронную частоту.

viewof cresEnergy = Inputs.range([5, 18.6], {
  value: 18.0,
  step: 0.1,
  label: html`
    <span class="spectrum-slider-label">
      ${tex`E_{\mathrm{нач}},\ \text{кэВ}`}
    </span>
  `
})

cresElectronRestEnergy = 510.99895
cresField = 1
cresNonRelFrequency = 27.99249
cresRadiatedPower = 1.2
cresLossRate = cresRadiatedPower * 6.241509e-6
cresDuration = 120

cresFrequency = energy =>
  cresNonRelFrequency / (1 + energy / cresElectronRestEnergy)

cresStartFrequency = cresFrequency(cresEnergy)

cresCurve = Array.from({length: 281}, (_, i) => {
  const energy = 20 * i / 280
  return {energy, frequency: cresFrequency(energy)}
})

cresTimes = Array.from({length: 401}, (_, i) => cresDuration * i / 400)

cresData = cresTimes.map(time => {
  const energy = Math.max(0, cresEnergy - cresLossRate * time)
  return {
    time,
    frequencyShift: 1e6 * (cresFrequency(energy) - cresStartFrequency)
  }
})

cresEndShift = cresData[cresData.length - 1].frequencyShift

cresMapPlot = Plot.plot({
  width: 500,
  height: 300,
  marginTop: 20,
  marginRight: 20,
  marginBottom: 52,
  marginLeft: 78,
  style: {background: "#ffffff", color: "#111111", fontSize: "17px"},
  x: {label: "E, кэВ →", domain: [0, 20], grid: true},
  y: {label: "↑ f_c, ГГц", domain: [26.9, 28.05], grid: true,
      tickFormat: value => value.toFixed(2)},
  marks: [
    Plot.line(cresCurve, {x: "energy", y: "frequency", stroke: "#4ea1ff", strokeWidth: 4}),
    Plot.ruleY([cresStartFrequency], {stroke: "#ffb347", strokeDasharray: "4 4"}),
    Plot.ruleX([cresEnergy], {stroke: "#ffb347", strokeDasharray: "4 4"}),
    Plot.dot([{energy: cresEnergy, frequency: cresStartFrequency}],
             {x: "energy", y: "frequency", r: 8, fill: "#ffb347"}),
    Plot.frame({stroke: "#111111"})
  ]
})

cresTrackPlot = Plot.plot({
  width: 500,
  height: 300,
  marginTop: 20,
  marginRight: 20,
  marginBottom: 52,
  marginLeft: 78,
  style: {background: "#ffffff", color: "#111111", fontSize: "17px"},
  x: {label: "t, мкс →", domain: [0, cresDuration], grid: true},
  y: {label: "↑ f_c − f_c(0), кГц", domain: [0, 48], grid: true},
  marks: [
    Plot.line(cresData, {x: "time", y: "frequencyShift", stroke: "#ffb347", strokeWidth: 4}),
    Plot.dot([cresData[0]], {x: "time", y: "frequencyShift", r: 7, fill: "#4ea1ff"}),
    Plot.frame({stroke: "#111111"})
  ]
})

html`
<div class="spectrum-panel">
  <div class="spectrum-legend">
    <span>слева: где электрон садится на кривую</span>
    <span>справа: как излучение тянет частоту вверх</span>
    <span>${tex`B=1\ \text{Тл}`}</span>
  </div>
  <div style="display:flex; gap:20px; justify-content:center; flex-wrap:wrap;">
    <div>${cresMapPlot}</div>
    <div>${cresTrackPlot}</div>
  </div>
  <div class="spectrum-summary">
    <span>${tex`f_c(0)=${cresStartFrequency.toFixed(4)}\ \text{ГГц}`}</span>
    <span>${tex`\Delta E=${(1000 * cresLossRate * cresDuration).toFixed(2)}\ \text{эВ}`}</span>
    <span>${tex`\Delta f_c=+${cresEndShift.toFixed(1)}\ \text{кГц}`}</span>
  </div>
</div>`

В модели поле постоянно, \(B=1\) Тл, а мощность излучения принята равной 1,2 фВт при всех начальных энергиях. Рассеяние и движение в неоднородном поле не учитываются. Величина \(\Delta E\) — энергия, потерянная за время наблюдения.

Объяснение в лекции 08 · Исходный код

© NeutrinoHit

 

Built with Quarto