MarlinTPC
1.2.0
|
This processor applies the electronics shaping to the incoming electron signals. More...
#include <TPCElectronicsProcessor.h>
Public Member Functions | |
virtual Processor * | newProcessor () |
virtual void | init () |
virtual void | processRunHeader (lcio::LCRunHeader *run) |
Called for every run. | |
virtual void | processEvent (lcio::LCEvent *evt) |
Called for every event - the working horse. | |
Static Protected Member Functions | |
static bool | voxelPadComp (const std::pair< VoxelTPC::VoxelIndex, int > &left, const std::pair< VoxelTPC::VoxelIndex, int > &right) |
function to sort the list of std::pair< VoxelTPC::VoxelIndex, int > by pad index, then time | |
static bool | voxelTimeComp (const std::pair< VoxelTPC::VoxelIndex, int > &left, const std::pair< VoxelTPC::VoxelIndex, int > &right) |
function to sort the list of std::pair< VoxelTPC::VoxelIndex, int > by time, then pad index | |
Protected Attributes | |
bool | _outputIsPersistent |
std::string | _inputColName |
Name of input collection. | |
std::string | _outputColName |
Name of output collection. | |
double | _frequency |
Readout frequency of the ADC. | |
double | _riseTime |
Rise time of the signal. | |
double | _asym |
int | _ADCMaxValue |
The maximum of the dynamic range in ADC counts. | |
int | _nElectronsDynamicRange |
The number of electrons which correspond. More... | |
double | _voxelZLength |
Length of a voxel in ns. | |
int | _ADCThreshold |
The threshold of the ADC (in ADC counts) | |
int | _minimumPulseHeight |
The minimal value for the highest sample value in a pulse. | |
int | _electronicsSwitch |
Switch between different electronics implementations: More... | |
double | _peakingTime |
Peaking time ALTRO electronics (time from start of pulse to maximum) | |
int | _noiseSwitch |
Switch between different noise model for pedestal width distribution: More... | |
double | _clockJitter |
Time jitter for the digitisation in nanoseconds. | |
std::map< int, double > | _timeJitter |
double | _noiseLevel |
Central value of the pedestal width used to add noise to the ADC spectrum. | |
double | _noiseWidth |
Width of the pedestal width distribution used to add noise to the ADC spectrum. | |
double | _noiseCutoff |
Cutoff for random pedestal width - e.g. to discard tails from the Landau distribution, since really noisy channels probably wouldn't be used in the data either. (default: 4) | |
ADCPulse * | pulse |
The instance of the ADCPulse, as pointer since it can only be initialised in the init() | |
bool | _improveMemoryFootprint |
Flag whether to use the memory saving shortcut. | |
double | _integrationTime |
IntegrationTime of the electronics. Voxel within this time window will be shaped in one go. | |
This processor applies the electronics shaping to the incoming electron signals.
The signal shape is a gaussian which is cut off at +- 3 . The width of the gaussian is defined as
= rise time / 3. The electronics amplification is calculated from the number of of electrons and the number of ADC counts which correspond to the dynamic range of the ADC.
In order to use the ImproveMemoryFootprint option this processor has to be run together with (after) the ChargeDistributionProcessor in the same Marlin run. The ChargeDistributionProcessor also needs the ImproveMemoryFootprint option to be turned on. MokkaToVoxelProcessor does not support this option yet.
Collection of TPCVoxel with charges on pads
Collection with TPCRawData
InputCollectionName | Name of input collection, (default: TPCVoxel) |
OutputCollectionName | Name of output collection, (default: TrackerRawData) |
WriteOutputToStorage | Output collection will be written if set to true (default: true) |
ReadoutFrequency | The frequency of readout electronics in MHz (default: 40.). |
RiseTime | Signal rise time in ns (default: 60.). |
Asymmetry | Signal asymmetry around center of gaussian shape (default: 1.). |
ADCMaxValue | Dynamic range of the ADC in ADC counts (default: 1023) |
NElectronsDynamicRange | Dynamic range of the ADC in electrons (default: 1e6) |
VoxelZLength | Length of a voxel in ns (default: 1.); |
Threshold | Minimum number auf ADC counts for a sample to be accepted (default: 1, just zero suppression) Attention: A threshold of 0 turns off part of the zero suppressesion. 1 is the smallest resonable value. |
NoiseSwitch | Switch between different noise model for pedestal width distribution (0=no noise, 1=gaussian, 2=landau) |
ClockJitter | Clock jitter for the digitisation in nanoseconds (default: 0) |
NoiseLevel | Central value of the pedestal width used to add noise to the ADC spectrum (mean for the gaussian noise width distribution, most probable value for the landau (which is, by the way, (almost but) not exactly the parameter root calls "MPV" if you fit your distribution with a Landau, see e.g. the TMath documentation...) |
NoiseWidth | Width of the pedestal width distribution used to add noise to the ADC spectrum |
NoiseCutoff | Cutoff for random pedestal width - e.g. to discard tails from the Landau distribution, since really noisy channels probably wouldn't be used in the data either. (default: 4) |
MinimumPulseHeight | Minimal value of the highest sample in a pulse (default: 1) |
ImproveMemoryFootprint | Flag whether to use ChargeDistributionProcessor::fetchVoxelCollection instead of the input collection (default:false) |
|
protected |
Switch between different electronics implementations:
0=Gaussian shaping, 1=ALTRO electronics
Referenced by processEvent().
|
protected |
The number of electrons which correspond.
to the dynamic range of the ADC
|
protected |
Switch between different noise model for pedestal width distribution:
0=no noise, 1=gaussian, 2=landau
Referenced by processEvent().