MarlinTPC
1.2.0
|
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>
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... | |
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.
Collection of SimTrackerHits with charge values set as dEdx
Collection with TPCVoxels containing charges on pads
InputCollectionName | Name of input collection, SimTrackerHits |
OutputCollectionName | Name of output collection, TPCVoxel |
WriteOutputToStorage | If true the output collection is written (default: true)", |
xBinLength | Length of the bins in z direction in ns |
ETrans1 | Value of first transfer field in V/cm |
ETrans2 | Value of second transfer field in V/cm |
EInd | Value of Induction field in V/cm |
Gas | Gas mixture |
BunchIntervall | Time between two bunch crossings in ns |
TPCConditions | Name of the collection with TPCConditons to be read in |
AlternativeTPCConditionsName | Name of newly created TPCCondtions collection if original object is writeable |
IonisationEnergy | Mean ionisation energy of the chambers gas in [GeV] (default: 26E-9 (argon)) |
WriteAfterNEvents | Force readout of the full TPC after overlaying n events (optional) |
ImproveMemoryFootprint | Flag whether to use fetchVoxelCollection instead of the output collection (default:false) |
SigmaOverride | Override the sigma which usually is calculated from the diffusion in the GEM stack (optional) |
|
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().
|
virtual |
Called at the begin of the job before anything is read.
Use to initialize the processor, e.g. book histograms.
References _BField, _BOverride, _EInd, _ETrans1, _ETrans2, _gas, _inductionFactor, _isFirstEvent, _sigma, _sigmaLong, _sigmaOverride, _zBinLength, marlintpc::TPCGas::CalculateGasParameters(), marlintpc::TPCGas::GetLongitudinalDiffusion(), marlintpc::TPCGas::GetTransverseDiffusion(), marlintpc::TPCGas::SetBField(), and marlintpc::TPCGas::SetEField().
|
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().
|
protected |
|
protected |
If true the output collection is written.
Value of the transverse defocussing
Referenced by init(), and processEvent().