MarlinTPC  1.2.0
Public Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
marlintpc::TPCElectronicsProcessor Class Reference

This processor applies the electronics shaping to the incoming electron signals. More...

#include <TPCElectronicsProcessor.h>

Inheritance diagram for marlintpc::TPCElectronicsProcessor:

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)
 
ADCPulsepulse
 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.
 

Detailed Description

This processor applies the electronics shaping to the incoming electron signals.

The signal shape is a gaussian which is cut off at +- 3 $\sigma$. The width of the gaussian is defined as $\sigma$ = 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.

Input - Prerequisites

Collection of TPCVoxel with charges on pads

Output

Collection with TPCRawData

Parameters
InputCollectionNameName of input collection, (default: TPCVoxel)
OutputCollectionNameName of output collection, (default: TrackerRawData)
WriteOutputToStorageOutput collection will be written if set to true (default: true)
ReadoutFrequencyThe frequency of readout electronics in MHz (default: 40.).
RiseTimeSignal rise time in ns (default: 60.).
AsymmetrySignal asymmetry around center of gaussian shape (default: 1.).
ADCMaxValueDynamic range of the ADC in ADC counts (default: 1023)
NElectronsDynamicRangeDynamic range of the ADC in electrons (default: 1e6)
VoxelZLengthLength of a voxel in ns (default: 1.);
ThresholdMinimum 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.
NoiseSwitchSwitch between different noise model for pedestal width distribution (0=no noise, 1=gaussian, 2=landau)
ClockJitterClock jitter for the digitisation in nanoseconds (default: 0)
NoiseLevelCentral 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...)
NoiseWidthWidth of the pedestal width distribution used to add noise to the ADC spectrum
NoiseCutoffCutoff 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)
MinimumPulseHeightMinimal value of the highest sample in a pulse (default: 1)
ImproveMemoryFootprintFlag whether to use ChargeDistributionProcessor::fetchVoxelCollection instead of the input collection (default:false)
Author
Astrid Muennich, RWTH Aachen
Thorsten Krautscheid, University of Bonn
Martin Killenberg, CERN

Member Data Documentation

int marlintpc::TPCElectronicsProcessor::_electronicsSwitch
protected

Switch between different electronics implementations:

0=Gaussian shaping, 1=ALTRO electronics

Referenced by processEvent().

int marlintpc::TPCElectronicsProcessor::_nElectronsDynamicRange
protected

The number of electrons which correspond.

to the dynamic range of the ADC

int marlintpc::TPCElectronicsProcessor::_noiseSwitch
protected

Switch between different noise model for pedestal width distribution:

0=no noise, 1=gaussian, 2=landau

Referenced by processEvent().


The documentation for this class was generated from the following files: