MarlinTPC
1.2.0
|
This Processor takes drifted electrons and uses a triple GEM structure for amplification. More...
#include <GEMProcessor.h>
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 | |
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!!!
Collection of SimTrackerHits with drifted electrons
Collection of SimTrackerHits with dEdx set as charge
InputCollectionName | Name of input collection (default: DriftedElectrons) |
OutputCollectionName | Name of output collection (default: AmplifiedElectrons) |
Transient | If not 0 the output collection is set transient (default: 0) |
ParamFile | Name of the file containing GEM-parametrisation (default: parameterfile) |
GainFactor | Correction factor for the gain (default: 1) |
DriftField | Value of the drift field (default: 240) |
ETrans1 | Value of transfer field 1 in V/cm |
ETrans2 | Value of transfer field 2 in V/cm |
EInd | Value of the induction field in V/cm |
UGEM1 | Voltage on GEM 1 in V (default: 315) |
UGEM2 | Voltage on GEM 2 in V (default: 315) |
UGEM3 | Voltage on GEM 3 in V (default: 315) |
Gas | Name of the gas in the TPC (default: TDR) |
IonisationEnergy | Mean ionisation energy of the chambers gas in [GeV] (default: 26E-9 (argon)) |
FullCurlerBackwardCompatibility | Turn 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. |
TPCConditions | Name of the collection with TPCConditons to be read in |
AlternativeTPCConditionsName | Name of newly created TPCCondtions collection if original object is writeable |
GEMGainPolya | Switch from default exponential gain to polya distribution for gain in GEMS |
PolyaThetaPlusOne | Parameter Theta+1 for the polya distributed GEM gain (default: 1.2) |
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().
|
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().