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

This Processor takes drifted electrons and uses a triple GEM structure for amplification. More...

#include <GEMProcessor.h>

Inheritance diagram for marlintpc::GEMProcessor:

Public Member Functions

virtual Processor * newProcessor ()
 
 GEMProcessor ()
 C'tor.
 
virtual ~GEMProcessor ()
 D'tor.
 
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.
 
void LoadGEMSettings ()
 Reads parameter file with GEM parametrisations and sets collection and extraction efficiencies as well as the gain for the single GEMs.
 
int GEM_Collection (int GEMNr, int enumber)
 Gives the Collection into GEM i=GEMNr for enumber of electrons in front of GEM hole.
 
double GEM_Gain (int GEMNr, int enumber)
 Gives the gain in GEM i=GEMNr using an exponential distribution for the gain in one GEM.
 
int GEM_Extraction (int GEMNr, int enumber)
 Gives the Extraction out of GEM i=GEMNr for enumber of electrons indside GEM hole.
 
double CalculateAttachment (double E)
 Claculates the attachment between GEMs.
 
double AttachmentParam (double E, double a0, double a1, double a2, double a3, double a4, double a5)
 
int CalculateNrElectrons (double attachment1, double attachment2, double attachment3, int charge)
 Function to claculate number of electrons after passing through the GEM structure. More...
 
virtual void end ()
 Called after data processing for clean up.
 

Protected Attributes

std::string _inputCollectionName
 Name of input collection.
 
std::string _outputCollectionName
 Name of 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 paramfile
 Name of file containig GEM parametrization.
 
std::string gas
 Name of gas in TPC (P5, P10 or TDR)
 
float UGEM1
 Voltage of GEM 1 in [V].
 
float UGEM2
 Voltage of GEM 2 in [V].
 
float UGEM3
 Voltage of GEM 3 in [V].
 
float ETrans1
 Strength of first transversal field in [V/cm].
 
float ETrans2
 Strength of second transversal field in [V/cm].
 
float EInd
 Strength of induction field in [V/cm].
 
float _gainFactor
 Correction factor for GAIN.
 
int _transient
 Sets output collection to transient when set to another value than 0.
 
float _driftField
 Strength of the drift field in [V/cm].
 
double Extr [3]
 
double Coll [3]
 
double Gain [3]
 
double gainmean [3]
 
double A1
 
double A2
 
double A3
 
int _nRun
 
int _nEvt
 
double _meanAmp
 Mean amplification in GEMs.
 
double _ionisationEnergy
 Ionisation energy of the gas.
 
bool _fullCurlerBackwardCompatibility
 Flag whether to multiply hits in curlers with 10.
 
bool _GEMGainPolya
 
std::map< int, TF1 * > _gainPolya
 Polya function for gain in GEMs, if option selected.
 
double _polyaThetaP1
 value for the parameter theta+1 of the polya gain distribution
 

Detailed Description

This Processor takes drifted electrons and uses a triple GEM structure for amplification.

The amplified electrons are safed as SimTrackerHits with charge safed in dEdx. ATTENTION!This processor checks also for electrons arriving on padplane. Those not on padplane are dumped and not amplified. Correctly this should be done in the digitisation part but it is done here for reasons of performance. This has to be kept in mind when the processor is not used in combination with the ChargeDistributionProcessor. The processor adds the mean amplification value of an single electron to the conditions data. If the conditions data is write protected and therefor the amplification value 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!!!

Input - Prerequisites

Collection of SimTrackerHits with drifted electrons

Output

Collection of SimTrackerHits with dEdx set as charge

Parameters
InputCollectionNameName of input collection (default: DriftedElectrons)
OutputCollectionNameName of output collection (default: AmplifiedElectrons)
TransientIf not 0 the output collection is set transient (default: 0)
ParamFileName of the file containing GEM-parametrisation (default: parameterfile)
GainFactorCorrection factor for the gain (default: 1)
DriftFieldValue of the drift field (default: 240)
ETrans1Value of transfer field 1 in V/cm
ETrans2Value of transfer field 2 in V/cm
EIndValue of the induction field in V/cm
UGEM1Voltage on GEM 1 in V (default: 315)
UGEM2Voltage on GEM 2 in V (default: 315)
UGEM3Voltage on GEM 3 in V (default: 315)
GasName of the gas in the TPC (default: TDR)
IonisationEnergyMean ionisation energy of the chambers gas in [GeV] (default: 26E-9 (argon))
FullCurlerBackwardCompatibilityTurn on for data from PrimaryIonisation < r1876 and FullCurler turned off (default: false)
Without FullCurler the old versions of PrimaryIonisation grouped 10 electrons but did not set the charge currectly.
TPCConditionsName of the collection with TPCConditons to be read in
AlternativeTPCConditionsNameName of newly created TPCCondtions collection if original object is writeable
GEMGainPolyaSwitch from default exponential gain to polya distribution for gain in GEMS
PolyaThetaPlusOneParameter Theta+1 for the polya distributed GEM gain (default: 1.2)
Author
Astrid Muennich and Thorsten Krautscheid

Member Function Documentation

int marlintpc::GEMProcessor::CalculateNrElectrons ( double  attachment1,
double  attachment2,
double  attachment3,
int  charge 
)

Function to claculate number of electrons after passing through the GEM structure.

This function makes use of the parametrisation of the charge transfer through the GEMs.

References GEM_Collection(), GEM_Extraction(), and GEM_Gain().

Referenced by processEvent().

void marlintpc::GEMProcessor::init ( )
virtual

Called at the begin of the job before anything is read.

Use to initialize the processor, e.g. book histograms.

References _gainFactor, _gainPolya, _meanAmp, _polyaThetaP1, EInd, ETrans1, ETrans2, gas, marlintpc::TPCGas::GetAttachment(), and LoadGEMSettings().


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