<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://labadviser.nanolab.dtu.dk//index.php?action=history&amp;feed=atom&amp;title=Specific_Process_Knowledge%2FLithography%2FEBeamLithography%2Fthopesplaystuff</id>
	<title>Specific Process Knowledge/Lithography/EBeamLithography/thopesplaystuff - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://labadviser.nanolab.dtu.dk//index.php?action=history&amp;feed=atom&amp;title=Specific_Process_Knowledge%2FLithography%2FEBeamLithography%2Fthopesplaystuff"/>
	<link rel="alternate" type="text/html" href="https://labadviser.nanolab.dtu.dk//index.php?title=Specific_Process_Knowledge/Lithography/EBeamLithography/thopesplaystuff&amp;action=history"/>
	<updated>2026-05-03T03:30:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://labadviser.nanolab.dtu.dk//index.php?title=Specific_Process_Knowledge/Lithography/EBeamLithography/thopesplaystuff&amp;diff=54224&amp;oldid=prev</id>
		<title>Thope: Blanked the page</title>
		<link rel="alternate" type="text/html" href="https://labadviser.nanolab.dtu.dk//index.php?title=Specific_Process_Knowledge/Lithography/EBeamLithography/thopesplaystuff&amp;diff=54224&amp;oldid=prev"/>
		<updated>2025-09-02T16:34:53Z</updated>

		<summary type="html">&lt;p&gt;Blanked the page&lt;/p&gt;
&lt;a href=&quot;https://labadviser.nanolab.dtu.dk//index.php?title=Specific_Process_Knowledge/Lithography/EBeamLithography/thopesplaystuff&amp;amp;diff=54224&amp;amp;oldid=54223&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Thope</name></author>
	</entry>
	<entry>
		<id>https://labadviser.nanolab.dtu.dk//index.php?title=Specific_Process_Knowledge/Lithography/EBeamLithography/thopesplaystuff&amp;diff=54223&amp;oldid=prev</id>
		<title>Thope at 16:34, 2 September 2025</title>
		<link rel="alternate" type="text/html" href="https://labadviser.nanolab.dtu.dk//index.php?title=Specific_Process_Knowledge/Lithography/EBeamLithography/thopesplaystuff&amp;diff=54223&amp;oldid=prev"/>
		<updated>2025-09-02T16:34:41Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://labadviser.nanolab.dtu.dk//index.php?title=Specific_Process_Knowledge/Lithography/EBeamLithography/thopesplaystuff&amp;amp;diff=54223&amp;amp;oldid=54222&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Thope</name></author>
	</entry>
	<entry>
		<id>https://labadviser.nanolab.dtu.dk//index.php?title=Specific_Process_Knowledge/Lithography/EBeamLithography/thopesplaystuff&amp;diff=54222&amp;oldid=prev</id>
		<title>Thope: Blanked the page</title>
		<link rel="alternate" type="text/html" href="https://labadviser.nanolab.dtu.dk//index.php?title=Specific_Process_Knowledge/Lithography/EBeamLithography/thopesplaystuff&amp;diff=54222&amp;oldid=prev"/>
		<updated>2025-09-02T15:33:29Z</updated>

		<summary type="html">&lt;p&gt;Blanked the page&lt;/p&gt;
&lt;a href=&quot;https://labadviser.nanolab.dtu.dk//index.php?title=Specific_Process_Knowledge/Lithography/EBeamLithography/thopesplaystuff&amp;amp;diff=54222&amp;amp;oldid=54221&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Thope</name></author>
	</entry>
	<entry>
		<id>https://labadviser.nanolab.dtu.dk//index.php?title=Specific_Process_Knowledge/Lithography/EBeamLithography/thopesplaystuff&amp;diff=54221&amp;oldid=prev</id>
		<title>Thope: Created page with &quot;&lt;!doctype html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt;   &lt;meta charset=&quot;utf-8&quot; /&gt;   &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,initial-scale=1&quot; /&gt;   &lt;title&gt;EBL Dose Simulator — Hello Kitty Theme&lt;/title&gt;   &lt;script src=&quot;https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js&quot;&gt;&lt;/script&gt;   &lt;style&gt;     :root{       --pink:#ffb6d5;       --hotpink:#ff69b4;       --accent:#fff0f6;       --text:#333;       --card:#fff;     }     body{       margin:0;       font-family:Inter,...&quot;</title>
		<link rel="alternate" type="text/html" href="https://labadviser.nanolab.dtu.dk//index.php?title=Specific_Process_Knowledge/Lithography/EBeamLithography/thopesplaystuff&amp;diff=54221&amp;oldid=prev"/>
		<updated>2025-09-02T15:33:10Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;!doctype html&amp;gt; &amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt; &amp;lt;head&amp;gt;   &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;   &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width,initial-scale=1&amp;quot; /&amp;gt;   &amp;lt;title&amp;gt;EBL Dose Simulator — Hello Kitty Theme&amp;lt;/title&amp;gt;   &amp;lt;script src=&amp;quot;https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;   &amp;lt;style&amp;gt;     :root{       --pink:#ffb6d5;       --hotpink:#ff69b4;       --accent:#fff0f6;       --text:#333;       --card:#fff;     }     body{       margin:0;       font-family:Inter,...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;!doctype html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width,initial-scale=1&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;EBL Dose Simulator — Hello Kitty Theme&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;script src=&amp;quot;https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;style&amp;gt;&lt;br /&gt;
    :root{&lt;br /&gt;
      --pink:#ffb6d5;&lt;br /&gt;
      --hotpink:#ff69b4;&lt;br /&gt;
      --accent:#fff0f6;&lt;br /&gt;
      --text:#333;&lt;br /&gt;
      --card:#fff;&lt;br /&gt;
    }&lt;br /&gt;
    body{&lt;br /&gt;
      margin:0;&lt;br /&gt;
      font-family:Inter,ui-sans-serif,system-ui,-apple-system,&amp;quot;Segoe UI&amp;quot;,Roboto,&amp;quot;Helvetica Neue&amp;quot;,Arial;&lt;br /&gt;
      background: linear-gradient(180deg,var(--accent),#fff);&lt;br /&gt;
      color:var(--text);&lt;br /&gt;
    }&lt;br /&gt;
    header{&lt;br /&gt;
      display:flex;align-items:center;gap:16px;padding:18px 24px;background:var(--pink);box-shadow:0 6px 18px rgba(255,105,180,0.12);&lt;br /&gt;
    }&lt;br /&gt;
    .logo{&lt;br /&gt;
      width:64px;height:64px;border-radius:12px;background:linear-gradient(180deg,var(--hotpink),#ffd1ea);display:flex;align-items:center;justify-content:center;box-shadow:0 6px 10px rgba(0,0,0,0.06);&lt;br /&gt;
    }&lt;br /&gt;
    .logo svg{width:46px;height:46px}&lt;br /&gt;
    h1{font-size:20px;margin:0}&lt;br /&gt;
    .container{max-width:1100px;margin:20px auto;padding:18px}&lt;br /&gt;
    .grid{display:grid;grid-template-columns:320px 1fr;gap:18px}&lt;br /&gt;
    .card{background:var(--card);border-radius:12px;padding:14px;box-shadow:0 8px 22px rgba(0,0,0,0.06)}&lt;br /&gt;
    label{font-size:13px;display:block;margin-bottom:6px}&lt;br /&gt;
    .small{font-size:12px;color:#666}&lt;br /&gt;
    input[type=range]{width:100%}&lt;br /&gt;
    .row{display:flex;gap:12px;align-items:center}&lt;br /&gt;
    button{background:var(--hotpink);border:none;color:white;padding:8px 12px;border-radius:10px;cursor:pointer}&lt;br /&gt;
    footer{margin-top:18px;text-align:center;color:#777;font-size:13px}&lt;br /&gt;
    .muted{color:#666;font-size:13px}&lt;br /&gt;
    canvas{background:transparent}&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;header&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;logo&amp;quot; aria-hidden&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Cute Hello-Kitty-like SVG (original, stylized cat) --&amp;gt;&lt;br /&gt;
      &amp;lt;svg viewBox=&amp;quot;0 0 64 64&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;g fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#ffffff&amp;quot; stroke-width=&amp;quot;1.6&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ellipse cx=&amp;quot;32&amp;quot; cy=&amp;quot;36&amp;quot; rx=&amp;quot;18&amp;quot; ry=&amp;quot;14&amp;quot; fill=&amp;quot;#fff&amp;quot; stroke=&amp;quot;none&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;path d=&amp;quot;M18 18c-6 0-8-6-8-6s6 0 8 2c2 2 6 4 10 4s8-2 10-4c2-2 8-2 8-2s-2 6-8 6&amp;quot; fill=&amp;quot;#fff&amp;quot; stroke=&amp;quot;none&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/g&amp;gt;&lt;br /&gt;
        &amp;lt;circle cx=&amp;quot;24&amp;quot; cy=&amp;quot;34&amp;quot; r=&amp;quot;2.5&amp;quot; fill=&amp;quot;#ff69b4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;circle cx=&amp;quot;40&amp;quot; cy=&amp;quot;34&amp;quot; r=&amp;quot;2.5&amp;quot; fill=&amp;quot;#ff69b4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;rect x=&amp;quot;28&amp;quot; y=&amp;quot;38&amp;quot; width=&amp;quot;8&amp;quot; height=&amp;quot;6&amp;quot; rx=&amp;quot;3&amp;quot; fill=&amp;quot;#ff69b4&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/svg&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;h1&amp;gt;EBL Dose Simulator — Hello Kitty Theme&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;small&amp;quot;&amp;gt;Simulate exposure dose including forward- and backscattered electrons (proximity effect)&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/header&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;main class=&amp;quot;container&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;grid&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;margin-bottom:10px&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;label for=&amp;quot;widthSlider&amp;quot;&amp;gt;Line width: &amp;lt;strong id=&amp;quot;widthLabel&amp;quot;&amp;gt;100 nm&amp;lt;/strong&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;input id=&amp;quot;widthSlider&amp;quot; type=&amp;quot;range&amp;quot; min=&amp;quot;10&amp;quot; max=&amp;quot;400&amp;quot; value=&amp;quot;100&amp;quot; step=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;small muted&amp;quot;&amp;gt;Change the width of the three parallel lines. Dose profile updates live.&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;div style=&amp;quot;margin-top:12px&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;label for=&amp;quot;doseInput&amp;quot;&amp;gt;Incident dose (a.u.):&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;input id=&amp;quot;doseInput&amp;quot; type=&amp;quot;number&amp;quot; value=&amp;quot;1&amp;quot; step=&amp;quot;0.1&amp;quot; style=&amp;quot;width:100%&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;small muted&amp;quot;&amp;gt;This is a scale factor — relative units (a.u.).&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;hr style=&amp;quot;margin:12px 0;border:none;border-top:1px solid #f1d7e3&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;div&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;Proximity function parameters&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;small&amp;quot;&amp;gt;A two-Gaussian point-spread function is used: narrow forward-scatter (σ&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;) and broad backscatter (σ&amp;lt;sub&amp;gt;b&amp;lt;/sub&amp;gt;) with weight η.&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div style=&amp;quot;margin-top:8px&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;label&amp;gt;Forward sigma (σ&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;, nm): &amp;lt;strong id=&amp;quot;sfLabel&amp;quot;&amp;gt;5&amp;lt;/strong&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
            &amp;lt;input id=&amp;quot;sfSlider&amp;quot; type=&amp;quot;range&amp;quot; min=&amp;quot;1&amp;quot; max=&amp;quot;30&amp;quot; value=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div style=&amp;quot;margin-top:8px&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;label&amp;gt;Backscatter sigma (σ&amp;lt;sub&amp;gt;b&amp;lt;/sub&amp;gt;, nm): &amp;lt;strong id=&amp;quot;sbLabel&amp;quot;&amp;gt;200&amp;lt;/strong&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
            &amp;lt;input id=&amp;quot;sbSlider&amp;quot; type=&amp;quot;range&amp;quot; min=&amp;quot;50&amp;quot; max=&amp;quot;2000&amp;quot; value=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div style=&amp;quot;margin-top:8px&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;label&amp;gt;Backscatter weight (η): &amp;lt;strong id=&amp;quot;etaLabel&amp;quot;&amp;gt;0.4&amp;lt;/strong&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
            &amp;lt;input id=&amp;quot;etaSlider&amp;quot; type=&amp;quot;range&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;0.9&amp;quot; step=&amp;quot;0.01&amp;quot; value=&amp;quot;0.4&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;hr style=&amp;quot;margin:12px 0;border:none;border-top:1px solid #f1d7e3&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;div style=&amp;quot;display:flex;gap:8px;justify-content:space-between&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;button id=&amp;quot;resetBtn&amp;quot;&amp;gt;Reset&amp;lt;/button&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;small muted&amp;quot;&amp;gt;Tip: drag the line-width slider to see how proximity effects blur and add dose between lines.&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;canvas id=&amp;quot;doseChart&amp;quot; height=&amp;quot;220&amp;quot;&amp;gt;&amp;lt;/canvas&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;display:flex;gap:14px;margin-top:10px;align-items:center&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;label style=&amp;quot;display:flex;gap:6px;align-items:center&amp;quot;&amp;gt;&amp;lt;input id=&amp;quot;showPattern&amp;quot; type=&amp;quot;checkbox&amp;quot; checked&amp;gt; Show pattern&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;label style=&amp;quot;display:flex;gap:6px;align-items:center&amp;quot;&amp;gt;&amp;lt;input id=&amp;quot;showForward&amp;quot; type=&amp;quot;checkbox&amp;quot; checked&amp;gt; Forward component&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;label style=&amp;quot;display:flex;gap:6px;align-items:center&amp;quot;&amp;gt;&amp;lt;input id=&amp;quot;showBack&amp;quot; type=&amp;quot;checkbox&amp;quot; checked&amp;gt; Backscatter component&amp;lt;/label&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;footer&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;muted&amp;quot;&amp;gt;Model: 1D cross-section of three parallel lines. Uses a two-Gaussian proximity function: PSF(r) = (1-η)*G(σf) + η*G(σb). Units are arbitrary — this is a relative-dose visualizer, useful for intuition and teaching.&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/footer&amp;gt;&lt;br /&gt;
  &amp;lt;/main&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
// --- Configuration &amp;amp; utilities ---&lt;br /&gt;
const LENGTH = 2000; // nm length of simulation window&lt;br /&gt;
const DX = 1; // nm resolution&lt;br /&gt;
const N = Math.floor(LENGTH/DX);&lt;br /&gt;
const x = new Array(N).fill(0).map((_,i)=&amp;gt;i*DX);&lt;br /&gt;
&lt;br /&gt;
function gaussian1d(sigma){&lt;br /&gt;
  const twiceVar = 2*sigma*sigma;&lt;br /&gt;
  const radius = Math.ceil(6*sigma/DX);&lt;br /&gt;
  const kernel = new Float64Array(radius*2+1);&lt;br /&gt;
  let sum = 0;&lt;br /&gt;
  for(let i=-radius;i&amp;lt;=radius;i++){&lt;br /&gt;
    const v = Math.exp(-(i*DX)*(i*DX)/twiceVar);&lt;br /&gt;
    kernel[i+radius]=v; sum+=v;&lt;br /&gt;
  }&lt;br /&gt;
  for(let i=0;i&amp;lt;kernel.length;i++) kernel[i]/=sum;&lt;br /&gt;
  return {kernel, radius};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function convolve(signal, kernel, radius){&lt;br /&gt;
  const out = new Float64Array(signal.length);&lt;br /&gt;
  for(let i=0;i&amp;lt;signal.length;i++){&lt;br /&gt;
    let s=0;&lt;br /&gt;
    for(let k=-radius;k&amp;lt;=radius;k++){&lt;br /&gt;
      const j=i+k;&lt;br /&gt;
      if(j&amp;lt;0||j&amp;gt;=signal.length) continue;&lt;br /&gt;
      s += signal[j]*kernel[k+radius];&lt;br /&gt;
    }&lt;br /&gt;
    out[i]=s;&lt;br /&gt;
  }&lt;br /&gt;
  return out;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function makePattern(lineWidth){&lt;br /&gt;
  // three parallel lines centered at 600, 1000, 1400 nm&lt;br /&gt;
  const centers = [600,1000,1400];&lt;br /&gt;
  const pat = new Float64Array(N);&lt;br /&gt;
  const half = lineWidth/2;&lt;br /&gt;
  for(let i=0;i&amp;lt;N;i++){&lt;br /&gt;
    const xi = x[i];&lt;br /&gt;
    for(const c of centers){&lt;br /&gt;
      if(Math.abs(xi-c) &amp;lt;= half) { pat[i]=1; break; }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return pat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// --- UI elements ---&lt;br /&gt;
const widthSlider = document.getElementById(&amp;#039;widthSlider&amp;#039;);&lt;br /&gt;
const widthLabel = document.getElementById(&amp;#039;widthLabel&amp;#039;);&lt;br /&gt;
const doseInput = document.getElementById(&amp;#039;doseInput&amp;#039;);&lt;br /&gt;
const sfSlider = document.getElementById(&amp;#039;sfSlider&amp;#039;);&lt;br /&gt;
const sbSlider = document.getElementById(&amp;#039;sbSlider&amp;#039;);&lt;br /&gt;
const etaSlider = document.getElementById(&amp;#039;etaSlider&amp;#039;);&lt;br /&gt;
const sfLabel = document.getElementById(&amp;#039;sfLabel&amp;#039;);&lt;br /&gt;
const sbLabel = document.getElementById(&amp;#039;sbLabel&amp;#039;);&lt;br /&gt;
const etaLabel = document.getElementById(&amp;#039;etaLabel&amp;#039;);&lt;br /&gt;
const resetBtn = document.getElementById(&amp;#039;resetBtn&amp;#039;);&lt;br /&gt;
const showPattern = document.getElementById(&amp;#039;showPattern&amp;#039;);&lt;br /&gt;
const showForward = document.getElementById(&amp;#039;showForward&amp;#039;);&lt;br /&gt;
const showBack = document.getElementById(&amp;#039;showBack&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
// --- Chart ---&lt;br /&gt;
const ctx = document.getElementById(&amp;#039;doseChart&amp;#039;).getContext(&amp;#039;2d&amp;#039;);&lt;br /&gt;
const chart = new Chart(ctx, {&lt;br /&gt;
  type: &amp;#039;line&amp;#039;,&lt;br /&gt;
  data: {&lt;br /&gt;
    labels: x,&lt;br /&gt;
    datasets: [&lt;br /&gt;
      {label:&amp;#039;Total dose&amp;#039;, data: new Array(N).fill(0), tension:0.2, borderWidth:2, pointRadius:0, spanGaps:true},&lt;br /&gt;
      {label:&amp;#039;Pattern (direct)&amp;#039;, data: new Array(N).fill(0), tension:0.2, borderWidth:1, pointRadius:0, borderDash:[4,4], hidden:!showPattern.checked},&lt;br /&gt;
      {label:&amp;#039;Forward scatter&amp;#039;, data: new Array(N).fill(0), tension:0.2, borderWidth:1, pointRadius:0, hidden:!showForward.checked},&lt;br /&gt;
      {label:&amp;#039;Backscatter&amp;#039;, data: new Array(N).fill(0), tension:0.2, borderWidth:1, pointRadius:0, hidden:!showBack.checked},&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  options: {&lt;br /&gt;
    animation:false,&lt;br /&gt;
    plugins:{legend:{position:&amp;#039;top&amp;#039;}},&lt;br /&gt;
    scales: {&lt;br /&gt;
      x:{display:true,title:{display:true,text:&amp;#039;x (nm)&amp;#039;}},&lt;br /&gt;
      y:{display:true,title:{display:true,text:&amp;#039;Relative dose (a.u.)&amp;#039;}}&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
function updateChart(total, pattern, forwardComp, backComp){&lt;br /&gt;
  chart.data.datasets[0].data = Array.from(total);&lt;br /&gt;
  chart.data.datasets[1].data = Array.from(pattern);&lt;br /&gt;
  chart.data.datasets[2].data = Array.from(forwardComp);&lt;br /&gt;
  chart.data.datasets[3].data = Array.from(backComp);&lt;br /&gt;
  chart.data.datasets[1].hidden = !showPattern.checked;&lt;br /&gt;
  chart.data.datasets[2].hidden = !showForward.checked;&lt;br /&gt;
  chart.data.datasets[3].hidden = !showBack.checked;&lt;br /&gt;
  chart.update(&amp;#039;none&amp;#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function computeAndRender(){&lt;br /&gt;
  const w = Number(widthSlider.value);&lt;br /&gt;
  widthLabel.textContent = `${w} nm`;&lt;br /&gt;
  const doseScale = Number(doseInput.value) || 1;&lt;br /&gt;
  const sf = Number(sfSlider.value); sfLabel.textContent = sf;&lt;br /&gt;
  const sb = Number(sbSlider.value); sbLabel.textContent = sb;&lt;br /&gt;
  const eta = Number(etaSlider.value); etaLabel.textContent = eta;&lt;br /&gt;
&lt;br /&gt;
  const pattern = makePattern(w);&lt;br /&gt;
  // forward kernel&lt;br /&gt;
  const {kernel: kf, radius: rf} = gaussian1d(sf);&lt;br /&gt;
  const {kernel: kb, radius: rb} = gaussian1d(sb);&lt;br /&gt;
&lt;br /&gt;
  const forwardComp = convolve(pattern, kf, rf).map(v=&amp;gt;v*(1-eta)*doseScale);&lt;br /&gt;
  const backComp = convolve(pattern, kb, rb).map(v=&amp;gt;v*eta*doseScale);&lt;br /&gt;
&lt;br /&gt;
  const total = new Float64Array(N);&lt;br /&gt;
  for(let i=0;i&amp;lt;N;i++) total[i]=forwardComp[i]+backComp[i];&lt;br /&gt;
&lt;br /&gt;
  updateChart(total, pattern.map(v=&amp;gt;v*doseScale), forwardComp, backComp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// --- events ---&lt;br /&gt;
[widthSlider, doseInput, sfSlider, sbSlider, etaSlider].forEach(el=&amp;gt;el.addEventListener(&amp;#039;input&amp;#039;,computeAndRender));&lt;br /&gt;
[showPattern, showForward, showBack].forEach(el=&amp;gt;el.addEventListener(&amp;#039;change&amp;#039;,computeAndRender));&lt;br /&gt;
resetBtn.addEventListener(&amp;#039;click&amp;#039;,()=&amp;gt;{&lt;br /&gt;
  widthSlider.value=100; doseInput.value=1; sfSlider.value=5; sbSlider.value=200; etaSlider.value=0.4;&lt;br /&gt;
  computeAndRender();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// initial render&lt;br /&gt;
computeAndRender();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;/div&gt;</summary>
		<author><name>Thope</name></author>
	</entry>
</feed>