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

This processor takes the coordinates of the drifted electrons and the charge from amplification and smears the charge on the padplane. More...

#include <ChargeDistributionProcessor.h>

Inheritance diagram for marlintpc::ChargeDistributionProcessor:

Public Member Functions

virtual Processor * newProcessor ()
 
virtual void init ()
 Called at the begin of the job before anything is read. More...
 
virtual void processRunHeader (lcio::LCRunHeader *run)
 Called for every run.
 
virtual void processEvent (lcio::LCEvent *evt)
 Called for every event - the working horse.
 

Static Public Member Functions

static std::list< std::pair
< VoxelTPC::VoxelIndex, int > > * 
fetchVoxelList ()
 A function to directly get the voxels from the internal map. More...
 

Protected Attributes

std::string _inputCollectionName
 Input/output collection names. More...
 
std::string _outputCollectionName
 Name of the output collection.
 
std::string _tpcConditionsColName
 Name of collection containing the TPCConditions.
 
std::string _altTPCConditionsName
 Name of the newly created TPCConditonsCollection if the original one is not writeable.
 
std::string _gas
 Name of the gas mixture.
 
float _ETrans1
 First transfer field.
 
float _ETrans2
 Second transfer field.
 
float _EInd
 Induction field.
 
bool _outputIsPersistent
 
double _sigma
 If true the output collection is written. More...
 
double _sigmaLong
 Value of the longitudinal defocussing.
 
float _BField
 Strength of the magnetic field in T.
 
double _bunchIntervall
 Time between two bunch crossings in ns.
 
double _zBinLength
 Length of a z-bin in ns.
 
int _writeAfterNEvents
 Number of overlayed events after which the TPC is read out.
 
const gear::TPCParameters * _tpcParameters
 
marlintpc::VoxelTPC_trackerData
 
bool _isFirstEvent
 Test if this is the first event to be processed at all.
 
double _ionisationEnergy
 Ionisation energy of the gas.
 
bool _improveMemoryFootprint
 Flag whether to use the memory saving shotcut.
 
double _sigmaOverride
 Optional override parameter for the charge broadening.
 
double _BOverride
 Optional override parameter for the magnetic field.
 
double _inductionFactor
 Size of induction on neighbour pads in percent of charge on central pad.
 

Static Protected Attributes

static std::list< std::pair
< VoxelTPC::VoxelIndex, int > > * 
_fetchedList = 0
 A subset of voxels which has been removed (fetched) from the VoxelTPC. More...
 

Detailed Description

This processor takes the coordinates of the drifted electrons and the charge from amplification and smears the charge on the padplane.

Broadening of the charge cloud due to diffussion between the GEMs is included as well as charge transfer parameters in dependence on the GEM settings. The processor adds the transversale defocussing in the GEM stack to the conditions data. If the conditions data is write protected and therefor the defocussing can not be added a new writeable TPCConditions object is added to the data stream. The new object is a copy of the original TPCConditions and additionally holds the value for the mean amplification of an single electron. Later processors should only use the newly created object.

Do not use the marlin::ConditionsProcessor to manage TPCConditions set or modified by the GEMProcessor!!!

The WriteAfterNEvents parameter is optional. It is inteded for a CLIC-like bunch train structure where the bunch train length is much shorter than the readout time of the TPC. The TPC is read out completely if ( eventNr % WriteAfterNEvents == (WriteAfterNEvents - 1) ). All events up to this point are empty, the whole TPC picture is written to one event.

The ImproveMemoryFootprint flag disables the output collection. Instead the static fetchVoxelMap() function has to be called by the subsequent processors.

Input - Prerequisites

Collection of SimTrackerHits with charge values set as dEdx

Output

Collection with TPCVoxels containing charges on pads

Parameters
InputCollectionNameName of input collection, SimTrackerHits
OutputCollectionNameName of output collection, TPCVoxel
WriteOutputToStorageIf true the output collection is written (default: true)",
xBinLengthLength of the bins in z direction in ns
ETrans1Value of first transfer field in V/cm
ETrans2Value of second transfer field in V/cm
EIndValue of Induction field in V/cm
GasGas mixture
BunchIntervallTime between two bunch crossings in ns
TPCConditionsName of the collection with TPCConditons to be read in
AlternativeTPCConditionsNameName of newly created TPCCondtions collection if original object is writeable
IonisationEnergyMean ionisation energy of the chambers gas in [GeV] (default: 26E-9 (argon))
WriteAfterNEventsForce readout of the full TPC after overlaying n events (optional)
ImproveMemoryFootprintFlag whether to use fetchVoxelCollection instead of the output collection (default:false)
SigmaOverrideOverride the sigma which usually is calculated from the diffusion in the GEM stack (optional)
Author
Thorsten Krautscheid

Member Function Documentation

std::list< std::pair< VoxelTPC::VoxelIndex, int > > * marlintpc::ChargeDistributionProcessor::fetchVoxelList ( )
static

A function to directly get the voxels from the internal map.

Like this the data does not go to the event and thus reduces the memory footprint. Sort of a hack which bypasses the processor interface, but necessary due to the huge memory consumption. Make sure to delete it in order not to leak memory.

References _fetchedList.

Referenced by marlintpc::TPCElectronicsProcessor::processEvent().

void marlintpc::ChargeDistributionProcessor::init ( )
virtual

Member Data Documentation

std::list< std::pair< VoxelTPC::VoxelIndex, int > > * marlintpc::ChargeDistributionProcessor::_fetchedList = 0
staticprotected

A subset of voxels which has been removed (fetched) from the VoxelTPC.

It is to be fetched by the subsequent processor using fetchVoxelList.

Referenced by fetchVoxelList(), and processEvent().

std::string marlintpc::ChargeDistributionProcessor::_inputCollectionName
protected

Input/output collection names.

Name of the input collection

Referenced by processEvent().

double marlintpc::ChargeDistributionProcessor::_sigma
protected

If true the output collection is written.

Value of the transverse defocussing

Referenced by init(), and processEvent().


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