-
Notifications
You must be signed in to change notification settings - Fork 8
Tree Correlator
#Motivation A correlator is an object relating events occurring in the same or different detectors at the same or different times. We have listed here the features of the original Correlator class and the new TreeCorrelator class.
##Features of Correlator
- Tailored for DSSD experiments
- Difficult to extend
- Will drag a lot of unnecessary code if used for other purposes
- Deeply bound into basic structures (composed into RawEvent class)
##Featuers of TreeCorrelator
- Flexible design
- Easy extending
- Dynamic creation, easy modification for different experimental setups
- Loosely bound building blocks, easy to remove if not needed
- (More object oriented design)
#Design The basic building block of the TreeCorrelator is the Place. A Place is an abstract object, may be related with physical objects, conditions, or sets of conditions. For example, a place called "Beam On" may be activated when we receive a "Beam On" signal and deactivated when we receive the subsequent "Beam Off".
Each entry in the map node is related with a basic place. If you have defined a channel
<Channel number="0" type="generic" subtype="beta"/></Channel>
A place will automatically be created with the name generic_beta_0. The number at the end of the place refers to the location of the detector, which counts from zero for each type:subtype combination. Places are characterized by Boolean state (True / False) but also may store additional information (time, energy, etc.). Places should be kept simple, each serving one simple task only (e.g. counting number of activations, performing logical operation ’or’, etc.). User will be given a number of such building blocks to build a hierarchical tree scheme for his experiment. We will connect places with other places as we would connect analog electronics modules (e.g. noise discriminators, coincidence units, etc.).
#Known Places
- Place - abstract base class
- PlaceLazy - abstract, does not store multiple activation / deactivation events
- PlaceDetector - most basic (does not depend on children)
- PlaceThreshold - activates if energy between low and high thresholds
- PlaceThresholdOR - as above but depends on children status (’or’ logic operation)
- PlaceCounter - counts number of activation
- PlaceOR - performs ’or’ logic operation on children status
- PlaceAND - performs ’and’ logic operation on children status
- PlaceSwitchANDX - switch–like behavior
#Adding a Place Type
#Example ##Map Node
<Map verbose_calibration="False" verbose_map="False" verbose_walk="False">
<Module number="0">
<Channel number="0" type="scint" subtype="beta"></Channel>
</Module>
<Module number="1">
<Channel number="0" type="ge" subtype="clover_high"></Channel>
<Channel number="1" type="ge" subtype="clover_high" ></Channel>
<Channel number="2" type="ge" subtype="clover_high"></Channel>
<Channel number="3" type="ge" subtype="clover_high" ></Channel>
<Channel number="4" type="logic" subtype="mtc_start" ></Channel>
<Channel number="5" type="logic" subtype="mtc_stop" ></Channel>
<Channel number="6" type="logic" subtype="beam_start" ></Channel>
<Channel number="7" type="logic" subtype="beam_stop"></Channel>
<Channel number="8" type="ge" subtype="clover_high"></Channel>
<Channel number="9" type="ge" subtype="clover_high" ></Channel>
<Channel number="10" type="ge" subtype="clover_high"></Channel>
<Channel number="11" type="ge" subtype="clover_high" ></Channel>
</Module>
</Map>
##Tree Correlator Node
<TreeCorrelator name="root" description="LeRIBSS Style Experiment" verbose="False">
<Place type="PlaceOR" name="Beta" fifo="10">
<Place type="PlaceThreshold" name="scint_beta_0"
low_limit="10.0" high_limit="16382" fifo="5"
replace="true"/>
</Place>
<Place type="PlaceOR" name="Gamma">
<Place type="PlaceOR" name="Clover0">
<Place type="PlaceThreshold" name="ge_clover_high_0-3"
low_limit="20.0" high_limit="99999"
replace="true"/>
</Place>
</Place>
<Place type="PlaceAND" name="GammaWOBeta">
<Place type="" name="Gamma" coincidence="true"/>
<Place type="" name="Beta" fifo="10" coincidence="false"/>
</Place>
<Place type="PlaceDetector" name="TapeMove" reset="false"/>
<Place type="PlaceDetector" name="Beam" reset="false"/>
<Place type="PlaceDetector" name="Cycle" reset="false"/>
</TreeCorrelator>