This document explains how to set up a .jcm file to run demuxing on data from the MINOS far detector, as well as the various options one can use with the demuxing. An example .jcm file is also shown.
To run the demuxing, one needs to include the libDeMux.so file at the top of the .jcm file. There are three modules that one can use for demuxing. The first is DeMuxModule, which demultiplexes beam events, the second, DeMuxCosmicsModule is for demuxing cosmic ray events, and the third, DeMuxFilterModule, filters events based on whether it can be demuxed and the quality of the solution. If you wish to look at MC beam data then include the line
DeMuxModule::Reco \
in your JobPath. If you wish to look at cosmic ray data or monte carlo cosmic ray files, include this line,
DeMuxCosmicsModule::Reco \
in the JobPath. Each module also has an analysis method which performs various tests of the demuxing efficiency. You can run these methods by including either
DeMuxModule::Ana \
or
DeMuxCosmicsModule::Ana \
in your JobPath. The tests available are described below in the options section.
The options and their possbile values are listed in the table below. The default values are in red.
| Module Name | Option | Description | Possible Values and Explanation |
| DeMuxModule | |||
| DataType | sets type of data used - mc or daq | MonteCarlo - mc files | |
| FarDetector - daq files from Soudan | |||
| TestToMake | type of test to make to evaluate the DeMux efficiency. No default test set. | MCXTalkEvents - test efficiency based on mc files with cross talk | |
| MCUpAndDownStream - test efficiency using mc files without cross talk | |||
| DontUseCandDigitMasks | turn off the masking of possible xtalk digits when demuxing | n/a - default turns this off | |
| DeMuxCosmicsModule | |||
| DataType | sets type of data used - mc or daq | MonteCarlo - mc files | |
| FarDetector - daq files from Soudan | |||
| TestToMake | type of test to make to evaluate the DeMux efficiency | SingleModuleDeMux - test efficiency from plane 12 with only modules 3 & 6 connected | |
| DeMuxCheck - print demuxing solution to screen | |||
| UnsetDigitCheck - checks properties of unset digits. | |||
| XTalkFractionLimit | upper limit for ratio of a digit to its 4 nondiagonal neighbors to mark it as xtalk | 0.0 - 1.0, 0.0 | |
| WindowSize | size of sliding window to use | 2 - 6, 6 | |
| StrayDeltaStripLimit | number of strips the center of gravity of a hypothesis can vary from the fit before being considered stray | 0 - 192, 6 | |
| DontUseCandDigitMasks | turn off the masking of possible xtalk digits when demuxing | n/a, default is turned off | |
| WriteHistos | write out trees and histograms filled in tests | n/a, default is turned off | |
| MakeTrees | make trees from the various tests | n/a, default is turned on | |
| HistoFileName | name of the root file containing the histograms | demux_cosmics.root |
The DeMuxCosmicsModule::Ana method can be instructed to fill 3 diagnostic trees if the MakeTrees option is set. The trees are described in the following table
| Tree Name | Branch Name | Description | Data Type |
| fDeMuxTree | Event | event number | Int_t |
| DeMuxed | flag for if an event was demuxed | Int_t | |
| Vertex | vertex plane number | Int_t | |
| Direction | direction (N->S or S->N) of event | Int_t | |
| End | end plane number | Int_t | |
| NumberOfPlanesHit | number of planes hit in event | Int_t | |
| EventCharge | total adc counts in event | Float_t | |
| DigitsInEvent | total digits in event | Int_t | |
| Multiple | flag for if event has multiple muons | Int_t | |
| NonPhysicalPlanes | number of planes where the fit represents a non physical solution (ie strip <0 or strip>192 | Int_t | |
| ValidPlanesFailure | flag for if event had too few valid planes for demuxing | Int_t | |
| NoVertexFailure | flag for if event had no vertex | Int_t | |
| NonPhysicalFailure | flag for if event had too many non-physical plane | Int_t | |
| OneSidedUPlanes | number of U planes with signal from only one side | Int_t | |
| OneSidedVPlanes | number of V planes with signal from only one side | Int_t | |
| SignleModuleCharge | total adc counts from the plane with only one module connected | Float_t | |
| SingleModuleCorrectCharge | total correctly reconstructed adc counts from single module plane | Float_t | |
| SingleModuleDigits | total digits from plane with single module connected | Float_t | |
| SingleModuleCorrectDigits | total correctly reconstructed digits from plane with single module connected | Float_t | |
| UStrayPlanes | number of U planes where all 3 best hypotheses are more than n strips off from fit | Int_t | |
| VStrayPlanes | number of V planes where all 3 best hypotheses are more than n strips off from fit | Int_t | |
| UValidPlanes | number of valid U planes | Int_t | |
| VValidPlanes | number of valid V planes | Int_t | |
| fDeMuxedDigitTree | Branch Name | Description | Data Type |
| Event | event number | Int_t | |
| Plane | plane number of digit | Int_t | |
| Crate | crate number of digit | Int_t | |
| ADC | adc counts from digit | Float_t | |
| Time | tdc of digit | Double_t | |
| Strip0 | SEId 0 | Int_t | |
| Stip1 | SEId 1 | Int_t | |
| Strip2 | SEId 2 | Int_t | |
| Strip3 | SEId 3 | Int_t | |
| Strip4 | SEId 4 | Int_t | |
| Strip5 | SEId 5 | Int_t | |
| Strip6 | SEId 6 | Int_t | |
| Strip7 | SEId 7 | Int_t | |
| DeMuxedStrip | chosen SEId | Int_t | |
| XTalkDigit | flag for if digit is XTalk candidate | Int_t | |
| fDmxPlaneTree | Event | event number | Int_t |
| Plane | plane number | Int_t | |
| PlaneType | muon (0) or shower (1) plane | Int_t | |
| PlaneCoG | demuxed center of gravity | Float_t | |
| FitCoG | straight line fit center of gravity | Float_t | |
| HypothesisCoG | hypothesis center of gravity | Float_t | |
| Hypothesis | hypothesis number | Int_t | |
| MatedSignal | fraction of mated signal in hypothesis | Float_t | |
| Statistic | goodness of fit for hypothesis | Float_t | |
| TieBreaker | tie breaker statistic for hypothesis | Float_t | |
| Rank | hypothesis rank 1, 2, 3, or -1 | Int_t | |
| Valid | flag for if hypothesis is valid | Int_t |
The SingleModule and UnsetDigitCheck test options fill TTrees containing information about the events. Those trees are written to a root file, demux_cosmics.root for example, if the WriteHistos option is set. The trees available are below.
| Test Name | Tree Name | Branch Name | Description | Data Type |
| SingleModuleDeMux | fSingleModuleTree | Event | event number in file | Int_t |
| DigitCharge | adc counts from current digit | Float_t | ||
| XTalkSignalRatio | ratio of adc counts from current digit to sum of counts from 4 nearest non-diagonal neighborts | Float_t | ||
| DigitDeMuxedCorrectly | was digit reconstructed to either module 3 or 6 | Int_t | ||
| UnsetDigitCheck | fUnusedDigitsTree | Event | event number in file | Int_t |
| DigitCharge | adc counts from current digit | Float_t | ||
| XTalkSignalRatio | ratio of adc counts from current digit to sum of counts from 4 nearest non-diagonal neighborts | Float_t | ||
| DigitSide | east (0.) or west (1.) | Float_t |
The first example .jcm file is for use with batch jobs (ie demojob executable) where no event display is desired. It uses the CandTrackSR class to fit tracks to the demuxed events. Comments are preceded by #.
#link in the demuxing library /Root/LoadLibrary libRecoBase.so /Root/LoadLibrary libCandStripSR.so /Root/LoadLibrary libCandSliceSR.so /Root/LoadLibrary libCandTrackSR.so /Root/LoadLibrary /home/brebel/test/lib/Linux2-EGCS_1_1/libDeMux.so # # Create the path # /Path/Create DEMUX \ Input::Get \ DigitListModule::Get \ DigitListModule::Reco \ DeMuxCosmicsModule::Reco \ StripSRListModule::Reco \ SliceSRListModule::Reco \ TrackSRListModule::Reco \ DeMuxCosmicsModule::Ana /Input/Set Streams DaqSnarl /DEMUX/Input/SetFormat raw # # Config the message service, eg # #Options to make Roy's track fitter work /DigitListModule/Set ListsToMake 1 # Fill only canddigitlist not MC /StripSRListModule/Set ListIn canddigitlist # Run path on DAQ data #DeMuxCosmicsModule Options /DeMuxCosmicsModule/Set DataType FarDetector /DeMuxCosmicsModule/Set TestToMake DigitsAlongTrack /DeMuxCosmicsModule/Set TestToMake UnsetDigitCheck /DeMuxCosmicsModule/Set TestToMake SingleModuleDeMux /DeMuxCosmicsModule/Set TestToMake EventDistributions /DeMuxCosmicsModule/Set TestToMake EventLength #/DeMuxCosmicsModule/Set TestToMake MatedSignalFraction #/DeMuxCosmicsModule/Set TestToMake DeMuxCheck /DeMuxCosmicsModule/Set TrackFitter CandTrackSR /DeMuxCosmicsModule/Set WriteHistos #/DeMuxCosmicsModule/Set DontUseCandDigitMasks /DeMuxCosmicsModule/Set XTalkFractionLimit 0.15 /DeMuxCosmicsModule/Set DeltaStripsFromTrack 12 #/Msg/SetLevel Exodus Error #/Msg/SetLevel DmxX3 Info #/Msg/SetLevel DmxX4 Info #/Msg/SetLevel DmxX5 Info /Msg/SetLevel Dmx1 Error /Msg/SetLevel Dmx Error /Msg/SetLevel DmxDigit Warning /Msg/SetLevel DmxVertex Warning #/Msg/Attach DmxDigit::Info /home/brebel/demux_results/no_valid_planes_sides_by_plane.txt #/Msg/Attach DmxVertex::Info /home/brebel/demux_results/no_vertex_planes_by_event.txt # # Run all events through the DEMUX path # #/DEMUX/Run Nin 50 #run only 50 events through the path /DEMUX/Run
The second example is for running the midad executable and viewing individual events
#link in the demuxing library /Root/LoadLibrary libRecoBase.so /Root/LoadLibrary libCandStripSR.so /Root/LoadLibrary libCandSliceSR.so /Root/LoadLibrary libCandTrackSR.so /Root/LoadLibrary /home/brebel/test/lib/Linux2-EGCS_1_1/libDeMux.so # # Create the path # /Path/Create DEMUX \ Input::Get \ DigitListModule::Get \ DigitListModule::Reco \ DeMuxCosmicsModule::Reco \ StripSRListModule::Reco \ SliceSRListModule::Reco \ TrackSRListModule::Reco \ DeMuxCosmicsModule::Ana \ MIDAD::Ana /Input/Set Streams DaqSnarl /DEMUX/Input/SetFormat raw # # Config the message service, eg # #Options to make Roy's track fitter work /DigitListModule/Set ListsToMake 1 # Fill only canddigitlist not MC /StripSRListModule/Set ListIn canddigitlist # Run path on DAQ data #DeMuxCosmicsModule Options /DeMuxCosmicsModule/Set DataType FarDetector /DeMuxCosmicsModule/Set TestToMake DigitsAlongTrack /DeMuxCosmicsModule/Set TestToMake UnsetDigitCheck /DeMuxCosmicsModule/Set TestToMake SingleModuleDeMux /DeMuxCosmicsModule/Set TestToMake EventDistributions /DeMuxCosmicsModule/Set TestToMake EventLength #/DeMuxCosmicsModule/Set TestToMake DeMuxCheck #/DeMuxCosmicsModule/Set TestToMake MatedSignalFraction /DeMuxCosmicsModule/Set TrackFitter CandTrackSR #/DeMuxCosmicsModule/Set WriteHistos #/DeMuxCosmicsModule/Set DontUseCandDigitMasks /DeMuxCosmicsModule/Set XTalkFractionLimit 0.15 /DeMuxCosmicsModule/Set DeltaStripsFromTrack 12 #DeMuxModule Options #/DeMuxModule/Set DataType FarDetector #/DeMuxModule/Set TestToMake UpAndDownStream #/Msg/SetLevel Exodus Error #/Msg/SetLevel DmxX3 Info #/Msg/SetLevel DmxX4 Info #/Msg/SetLevel DmxX5 Info /Msg/SetLevel Dmx3 Info /Msg/SetLevel Dmx Error # MIDAD options /DEMUX/MIDAD/Display UZVZDisplay /DEMUX/MIDAD/Viewable DigitListViewable canddigitlist /DEMUX/MIDAD/Viewable TrackListViewable CandTrackSRList /DEMUX/MIDAD/Viewable GeomViewable Geometry /DEMUX/MIDAD/UZVZDisplay ViewableStyle DigitListViewable ColorIs 0 /DEMUX/MIDAD/UZVZDisplay ViewableStyle DigitListViewable SizeIs 0 /DEMUX/MIDAD/UZVZDisplay ViewableStyle DigitListViewable StripEnd 0 # # Run the DEMUX path # /DEMUX/Run Nin 1