Class HelicityGenerator

java.lang.Object
org.jlab.detector.helicity.HelicityGenerator
All Implemented Interfaces:
Comparable<HelicityGenerator>, Comparator<HelicityGenerator>

public final class HelicityGenerator extends Object implements Comparable<HelicityGenerator>, Comparator<HelicityGenerator>
Helicity Pseudo-Random Sequence. This calculates the first helicity state in each pattern (quartet/octet/toggle), according to the specs here: https://hallaweb.jlab.org/equipment/daq/HelicityUsersGuideFeb4.pdf Note, the convention above, and internally in this class, is HIGH=0=+ and LOW=1=-. Note, this pseudorandom generator operates on raw helicity, and does not produce the same sequence if you just reverse all the states, so the HWP-corrected helicity cannot be used here. User calls addState() until initialized()==true, then getState(). Public interface requires HelicityBit (not integers).
Author:
baltzell
  • Field Details Link icon

  • Constructor Details Link icon

    • HelicityGenerator Link icon

      public HelicityGenerator()
  • Method Details Link icon

    • setClock Link icon

      public void setClock(double clock)
    • compareTo Link icon

      public int compareTo(HelicityGenerator other)
      Specified by:
      compareTo in interface Comparable<HelicityGenerator>
    • compare Link icon

      public int compare(HelicityGenerator o1, HelicityGenerator o2)
      Specified by:
      compare in interface Comparator<HelicityGenerator>
    • getTimestamp Link icon

      public long getTimestamp()
      Get the timestamp of the first state in the generator sequence.
      Returns:
      timestamp (4ns)
    • reset Link icon

      public void reset()
      Reset the generator, clearing all added states, in order to reuse this HelicityGenerator for a new sequence.
    • initialized Link icon

      public boolean initialized()
      Test whether the generator is sufficiently initialized such that get(int) method can be called, based on whether the number of added states is at least REGISTER_SIZE.
      Returns:
      whether the sequence is initialized
    • size Link icon

      public int size()
      Get the number of states currently in the generator's sequence.
      Returns:
      size
    • addState Link icon

      public void addState(HelicityBit bit)
      Let the user add a state to initialize the sequence. This must be the first helicity state in the next pattern. States must be added serially and without skipped patterns. Requires initialized() is false and a defined HelicityBit, else throws an exception..
      Parameters:
      bit - the HelicityBit to add to the sequence. This must be the raw helicity, e.g. HelicityState.getHelicityRaw(), not the HWP-corrected version.
    • addState Link icon

      public void addState(HelicityState state)
      Let the user add a state to initialize the sequence. This just calls addState(HelicityBit) with the raw
      invalid reference
      #HelicityBit
      from the given
      invalid reference
      #HelicityState
      . This must be the first helicity state in the next pattern. States must be added serially and without skipped patterns. Requires initialized() is false and a defined
      invalid reference
      #HelicityState
      .
      Parameters:
      state - the HelicityState to add to the sequence.
    • get Link icon

      public HelicityBit get(int n)
      Get the nth state in the sequence. Requires initialized()==true.
      Parameters:
      n - number of states after the first one.
      Returns:
      the nth HelicityBit in the sequence.
    • initialize Link icon

      public final boolean initialize(List<HelicityState> states)
      Initialize with a list of states. The states are first time-ordered, and error-checking is done to find the first valid sequence of sufficient length in the list and use it to initialize the generator, otherwise the return value will be false.
      Parameters:
      states - list of HelicityState objects
      Returns:
      success of initializing the generator
    • getOffset Link icon

      public int getOffset()