Reconstruction using art Producer¶
This section is intended to prepare the user on how to run the data reconstruction steps.
Calorimeter reconstruction chain¶
Please refer to the computing review talk for a top-level overview of the calorimeter reconstruction chain: http://gm2-docdb.fnal.gov:8080/cgi-bin/ShowDocument?docid=4507
Pulsefitting¶
The pulsefitter takes CaloIslandArtRecord
and produces CaloFitResultArtRecord
. Islands are groups of contiguous ADC samples from the waveform digitizers, triggered by ADC samples going over a threshold that is configurable in the DAQ. Regardless of which digitizer channel triggered the island, islands are always recorded from all calorimeter channels whenever any channel goes over threshold. The baseline algorithm for pulsefitting is template fitting, described in the link at the top of this section.
responsible module: gm2calo/pulsefinder/IslandTemplateFit_module.cc
example configuration
islandFitter : {
module_type: IslandTemplateFit
fitterInstanceLabel: fitter
unpackerModuleLabel: islandChopper
unpackerInstanceLabel: chopper
negativePolarity: true
peakCutoff: 1625
residualCutoff: 25
artificialDeadTime: 3
scaleCutoff: 30
ratioCutoff: 0.01
wiggleRoom: 2
}
parameters of interest:
- negativePolarity: Whether pulse polarity is negative. Will be true for all real pulses, and defaults to true. Could be otherwise in simulation depending on configuration, and could be false for some bench tests.
- peakCutoff: A threshold determining when to attempt a fit. For example, if peakCutoff is 1600 and negativePolarity is true, a fit will only be attempted on islands with some sample less than 1600.
- residualCutoff: The fitter will attempt to fit pileup pulses wherever the residuals go over this value. The points in the fit are weighted by 1, so this is in units of ADC samples.
- artificialDeadTime: The fitter will not attempt to fit any pulses closer together then this value, in units of clock ticks.
- scaleCutoff: Any fits with a fitted pulse area less than this value will be rejected.
- ratioCutoff: Any pileup fits that have fit a pulse with an energy ratio to the largest pulse of less than this value will be rejected by the fitter.
- wiggleRoom: This is a parameter used by the fitter to decide whether to reject fit results and try again. Best not to change this without a good reason.
Energy Calibration¶
The energy calibration takes CaloFitResultArtRecord
and produces CaloCrystalHitArtRecord
. The energy calibration transforms the fit result pulse areas into meaningful units, like MeV or photo electrons.
responsible module: gm2calo/energycalibration/EnergyCalibrator_module.cc
example configuration
energyCalibrator: {
module_type: EnergyCalibrator
correctorInstanceLabel: calibrator
fitterInstanceLabel: fitter
fitterModuleLabel: islandFitter
readConstants: false
calibrationConstant: 0.239620
}
parameters of interest:
- readConstants: Whether to read calibration constants from a fhicl file / database, or to use a hard coded value for all crystals. The latter is typically used for simulation reconstruction runs.
- calibrationConstant: If readConstants is false, use this value as the calibration constant.
The calibration constant for simulation reconstruction is determined using test beam calorimeter simulations, where a clean 3.1 GeV pulse is reconstructed and the constant set so that the energy peak sits at 3.1 GeV. This constant is linked to the configuration of the waveform builder, where the goal is for the full ADC range of the digitizer to equal the amplitude of a pulse from two 3.1 GeV positrons impacting simultaneously.
Clustering¶
The clustering stage takes CaloCrystalHitArtRecord
and produces CaloClusterArtRecord
. The current algorithm accomplishes this by partitioning crystal hits in time, and then grouping them spatially. Ultimately, the energies of all crystal hits that are grouped together become summarized by a single energy, time, and position, which is recorded in a ClusterArtRecord
. Ideally, a cluster represents a reconstructed decay positron.
responsible module: gm2calo/clustering/HitCluster_module.cc
See http://gm2-docdb.fnal.gov:8080/cgi-bin/ShowDocument?docid=2974 for a description of the algorithm currently in use.
See http://gm2-docdb.fnal.gov:8080/cgi-bin/ShowDocument?docid=3780 for a description of the logarithmic weighting technique currently in use for position reconstruction.
example configuration
hitCluster : {
module_type: HitCluster
clusterInstanceLabel: cluster
correctorModuleLabel: gainCorrector
correctorInstanceLabel: corrector
ratioCutoff: 0.12
distanceCutoff: 4
minEnergy: 1500
timeCutoffLow: 1.0
timeCutoffHigh: 4.0
w0: 4.0
}
parameters of interest:
- ratioCutoff, distanceCutoff: Parameters of the spatial separation algorithm, as described in the link above.
- minEnergy: Spatial separation is not run on groups of hits where the sum of all hit energies is below this value.
- timeCutoffLow: All crystal hit times are sorted. If a crystal hit time is closer to the next crystal hit than the previous hit and it is greater than this value, it is grouped with the next hit rather than the last. Units of clock ticks.
- timeCutoffHigh: Crystal hits will never be grouped with other hits that are farther apart in time than this value.
- w0: Parameter of the logarithmic weighting position reconstruction algorithm, as described in the link above.
note: In the near future, this will be split into two modules, one for time partitioning and one for spatial pattern recognition. This division does not preclude others from writing a holistic time and space algorithm.