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

This processor creates lcio::TrackerPulse objects from lcio::TrackerData. More...

#include <PulseFinderProcessor.h>

Inheritance diagram for marlintpc::PulseFinderProcessor:

Public Member Functions

virtual Processor * newProcessor ()
 
virtual void init ()
 
virtual void processRunHeader (lcio::LCRunHeader *run)
 
virtual void processEvent (lcio::LCEvent *evt)
 
virtual void check (lcio::LCEvent *evt)
 
virtual void end ()
 

Protected Attributes

std::string _inputColName
 name of the collection, where input data are stored
 
std::string _outputDataColName
 name of the collection, where TrackerData are stored
 
std::string _outputPulseColName
 name of the collection, where TrackerPulse are stored
 
std::string _pedestalColName
 the name of the pedestal collection
 
std::string _electrParaObjName
 Name of the conditions object in which the parameters of the read out electronics is stored.
 
std::string _electrParaColName
 Name of the conditions collection in which the parameters of the read out electronics is stored.
 
bool _outputIsPersistent
 Set this flag to use the amplitude (maximum bin value) of the pulse as the charge. More...
 
bool _forceSpectrumSave
 if not 0 the ADC spectrum will be saved for all pulses
 
bool _switchOffSplitting
 if not 0 pulses will not be split
 
int _chargeCalculationMode
 the mode to calulate the charge
 
int _timeCalculationMode
 the mode to calulate the time
 
double _timeCalculationParameter
 parameter for time methods (different meaning for different methods)
 
float _pulseStartPedestalWidthFactor
 factor to calculate the start threshold
 
float _pulseEndPedestalWidthFactor
 factor to calculate the start threshold
 
float _minimumPulseHeight
 minimal value for the maximum adc value
 
int _minimumPulseLength
 minimal length for a pulse in number of time bins
 
int _saveNBinsBeforeStart
 

of bins stored before the start threshold


 
int _saveNBinsAfterEnd
 

of bins stored after the end threshold


 
float _noiseValuePedestalWidthFactor
 factor to calculate the noise cut
 
float _maximumADCValueOverride
 maximum adc value, needed to determine if a pulse is maxed out
 
float _readoutFrequencyOverride
 The readout frequency of every readout group (in MHz). More...
 
float _pedestalValueOverride
 The pedestal value to be used for every hardware channel in every readout group. More...
 
float _pedestalWidthOverride
 The pedestal width to be used for every hardware channel in every readout group. More...
 
bool _isPedestalSubtractedOverride
 Sets, if the data is already pedestal subtracted in the read-out electronics. More...
 
int _polarityOverride
 the polarity of all readout groups, overrides LCCD
 
int _maxPlateauLength
 The maximum length of a plateau within a pulse in time bins. More...
 
PulseFinder_pulseFinder
 The instance of the pulse finder object.
 

Detailed Description

This processor creates lcio::TrackerPulse objects from lcio::TrackerData.

It is the modular version of the PulseFinderProcessor in the sense that the functionality has been extracted into a separate class (PulseFinder) to allow unit testing. See the documentation of PulseFinder for the description of the algorithm.

Input - Prerequisites

Collection of TrackerData (can be zero supressed and/ or pedestal subtracted)

Output

Parameters
InputCollectionName:stringName of the input TrackerData collection
OutputTrackerPulseCollectionName:stringName of the output TrackerPulse collection
OutputTrackerDataCollectionName:stringName of the output TrackerData collection
WriteOutputToStorage:boolOutput collection will be written if set to true (which is the default)
ForceSpectrumSave:boolIf true the ADC spectrum will be stored for all pulses, otherwise spectra are only stored if the quality word is not 0 (default: true)
SwitchOffSplitting:boolIf true pulses will not be splitted, e.g. if double pulse is detected
PulseStartPedestalWidthFactor:floatA pulse starts if the ADC value is this factor times width of the pedestal (default: : 7.0)
PulseEndPedestalWidthFactor:floatThe pulse ends if the ADC value drops below this factor timed the width of the pedestal (default: 3.0)
MinimumPulseHeight:floatTo accept a pulse its maximal ADC entry must exceed this cut (default: 12.0 ADC counts)
MinumumPulseLength:intTo accept a pulse its length in time bins must be larger than this value without Start/End bins (default: 5)
SaveNBinsBeforeStart:int# bins saved before the start bin (exept there is another pulse, default:2)
SaveNBinsAfterStart:int# bins saved after the start bin (exept there is another pulse, default 8)
NoiseValuePedestalWidthFactor:floatThe noise (cut) value is calculated as this factor times pedestal width (default: 3.0)
ElectronicsParameterObjectName:stringName of the conditions object in which the parameters of the read out electronics is stored
ElectronicsParametersCollectionName:stringName of the conditions collection in which the parameters of the read out electronics is stored
PedestalCollectionName:stringName of the conditions collection in which the pedestals are stored
TimeCalculationMode:intSpecifies the mode for time calculation. Valid values:
INFLEXION_POINT = 0 (default)
FIT_PARABOLA = 1
CENTRE_OF_GRAVITY = 2
FIRST_ABOVE_THRESHOLD = 3
AT_MAXIMUM = 4
CONSTANT_FRACTION = 5
GAMMA_FIT = 6
COG_ATMAX = 7
ChargeCalculationMode:intSpecifies the mode for charge calculation. Valid values:
SUMQ = 0 (default)
FIT_PARABOLA = 1
MAXQ = 2
PedestalValueOverrideOPTIONAL: Manually set the pedestal value (in ADC counts)
PedestalWidthOverrideOPTIONAL: Manually set value of the pedestal width (in ADC coutns)
MaximumADCValueOverrideOPTIONAL: Manually set value of the maximum adc value
IsPedestalSubtractedOverrideOPTIONAL: Manually set whether the pedestal has been subtracted (true or false)
SignalPolarityOverrideOPTIONAL: Manually set value of the electronics polarity (+-1)
ReadoutFrequencyOverrideOPTIONAL: Manually set value of the readout frequency (in MHz)
PlateauLengthCutOffOPTIONAL: The maximum length of a plateau within a pulse in time bins. This used to cut off strange pulses that go into a plateau.

As the interpretation of the data changes with the charge calculation mode (all charge or max charge) or the time calculation mode (different offsets), the parameters TimeCalculationMode and ChargeCalculationMode are stored as collection parameters of the pulse collection (in addition to being written to the run header together with all other processor parameters).

Attention
The following parameters have been renamed:
  • IsPedestalSubstractedOverride (Was a typo, there should ne no 's' after the 'b')
  • PulseStartThreshold (Is not a threshold, new name is PulseStartPedestalWidthFactor)
  • PulseEndThreshold (Is not a threshold, new name is PulseEndPedestalWidthFactor)
  • PedestalWidthScale (New name is NoiseValuePedestalWidthFactor)
The following parameters have been replaced (versions with and without question mark):
  • UseParabolicFitAmplitudeAsCharge? (Use ChargeCalculationMode instead)
  • UseParabolicFitAmplitudeAsCharge (Use ChargeCalculationMode instead)
  • UseParabolicFitMaxAsTime? (Use TimeCalculationMode instead)
  • UseParabolicFitMaxAsTime (Use TimeCalculationMode instead)
The processor will not run if any of the old parameters is set in the steering file. This avoids the old parameter being ignored and silently being replaced by the default of the new parameter. This would lead to unwanted behaviour and would be very difficult to identify. You can use the script tools/scripts/updatePulseFinderParameters.sh to automatically update your steering files..
The ReadoutFrequencyOverride value has changed from Hz to MHz to be consistent with the conditions data. The processor will refuse to work if values above 1e5 (50 GHz) are detected in case old values in Hz have not been updated.
Author
Ch. Rosemann, DESY (original author)
Martin Killenberg

Member Data Documentation

bool marlintpc::PulseFinderProcessor::_isPedestalSubtractedOverride
protected

Sets, if the data is already pedestal subtracted in the read-out electronics.

This overrides any information provided by LCCD

int marlintpc::PulseFinderProcessor::_maxPlateauLength
protected

The maximum length of a plateau within a pulse in time bins.

This used to cut off strange pulses that go into a plateau.

bool marlintpc::PulseFinderProcessor::_outputIsPersistent
protected

Set this flag to use the amplitude (maximum bin value) of the pulse as the charge.

set the persistency flag of the output collection

float marlintpc::PulseFinderProcessor::_pedestalValueOverride
protected

The pedestal value to be used for every hardware channel in every readout group.

This overrides any information provided by LCCD

float marlintpc::PulseFinderProcessor::_pedestalWidthOverride
protected

The pedestal width to be used for every hardware channel in every readout group.

This overrides any information provided by LCCD

float marlintpc::PulseFinderProcessor::_readoutFrequencyOverride
protected

The readout frequency of every readout group (in MHz).

This overrides any information provided by LCCD


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