Copyright | (c) Scott N. Walck 2016 |
---|---|

License | BSD3 (see LICENSE) |

Maintainer | Scott N. Walck <walck@lvc.edu> |

Stability | experimental |

Safe Haskell | Trustworthy |

Language | Haskell98 |

Splitters, recombiners, and detectors for Stern-Gerlach experiments.

- data BeamStack
- randomBeam :: BeamStack
- split :: Double -> Double -> BeamStack -> BeamStack
- recombine :: Double -> Double -> BeamStack -> BeamStack
- applyBField :: Double -> Double -> Double -> BeamStack -> BeamStack
- dropBeam :: BeamStack -> BeamStack
- flipBeams :: BeamStack -> BeamStack
- numBeams :: BeamStack -> Int
- detect :: BeamStack -> [Double]
- splitX :: BeamStack -> BeamStack
- splitY :: BeamStack -> BeamStack
- splitZ :: BeamStack -> BeamStack
- applyBFieldX :: Double -> BeamStack -> BeamStack
- applyBFieldY :: Double -> BeamStack -> BeamStack
- applyBFieldZ :: Double -> BeamStack -> BeamStack
- recombineX :: BeamStack -> BeamStack
- recombineY :: BeamStack -> BeamStack
- recombineZ :: BeamStack -> BeamStack
- xpFilter :: BeamStack -> BeamStack
- xmFilter :: BeamStack -> BeamStack
- zpFilter :: BeamStack -> BeamStack
- zmFilter :: BeamStack -> BeamStack

# Core laboratory components

randomBeam :: BeamStack Source

A beam of randomly oriented spin-1/2 particles.

split :: Double -> Double -> BeamStack -> BeamStack Source

Given angles describing the orientation of the splitter, removes an incoming beam from the stack and replaces it with two beams, a spin-up and a spin-down beam. The spin-down beam is the most recent beam on the stack.

recombine :: Double -> Double -> BeamStack -> BeamStack Source

Given angles describing the orientation of the recombiner, returns a single beam from an incoming pair of beams.

applyBField :: Double -> Double -> Double -> BeamStack -> BeamStack Source

Given angles describing the direction of a uniform magnetic field, and given an angle describing the product of the Larmor frequency and the time, return an output beam from an input beam.

# Standard splitters

# Standard magnetic fields

applyBFieldX :: Double -> BeamStack -> BeamStack Source

Given an angle in radians describing the product of the Larmor frequency and the time, apply a magnetic in the x direction to the most recent beam on the stack.

applyBFieldY :: Double -> BeamStack -> BeamStack Source

Given an angle in radians describing the product of the Larmor frequency and the time, apply a magnetic in the y direction to the most recent beam on the stack.

applyBFieldZ :: Double -> BeamStack -> BeamStack Source

Given an angle in radians describing the product of the Larmor frequency and the time, apply a magnetic in the z direction to the most recent beam on the stack.

# Standard combiners

recombineX :: BeamStack -> BeamStack Source

A Stern-Gerlach recombiner in the x direction.

recombineY :: BeamStack -> BeamStack Source

A Stern-Gerlach recombiner in the y direction.

recombineZ :: BeamStack -> BeamStack Source

A Stern-Gerlach recombiner in the z direction.