#include <TrkNucleiZCut.h>
Public Member Functions | |
TrkNucleiZCut (const char *cutName, unsigned int Z, float lowerLimit, float upperLimit, unsigned int minLayers=1, unsigned int howToCheck=TRKNUCLEIZ_CHECKMEAN, unsigned int method=TRKNUCLEIZ_RIG) | |
Constructor. | |
~TrkNucleiZCut () | |
Destructor. | |
int | Check (PamLevel2 *event) |
The TrkNucleiZ check. |
This cut uses the TrkNuclei library to cut events depending on particle's charge value.
TrkNucleiZCut::TrkNucleiZCut | ( | const char * | cutName, | |
unsigned int | Z, | |||
float | lowerLimit, | |||
float | upperLimit, | |||
unsigned int | minLayers = 1 , |
|||
unsigned int | howToCheck = TRKNUCLEIZ_CHECKMEAN , |
|||
unsigned int | method = TRKNUCLEIZ_RIG | |||
) | [inline] |
Constructor.
The charge to look for is passed to the TrkNucleiZCut object as Z. For each charge, there is an associated distribution of events, with mean Zmean and standard deviation sigmaZ. These values will be used to check the events.
cutName | The cut's name. | |
Z | The charge value. | |
lowerLimit | The lower bound (in units of sigma_Z) of the desired charge range, defined as Zmean - lowerBound*sigmaZ. | |
upperLimit | The upper bound (in units of sigma_Z) of the desired charge range, defined as Zmean + upperBound*sigmaZ. | |
minLayers | The minimum required number of layers which give a valid charge information. | |
howToCheck | Flag to set the check by mean release or by release in single planes (see TrkNucleiZ_Check). | |
method | The method to use to measure the particle's charge (see TrkNucleiZ_method). |
int TrkNucleiZCut::Check | ( | PamLevel2 * | event | ) | [virtual] |
The TrkNucleiZ check.
The routine selects events whose value of Zmean obtained from the TrkNuclei Class is in the range [Zmean - sigma*lowerBound, Zmean + sigma*upperBound]. Zmean and sigma are defined respectively as the mean and the standard deviation of the charge distributions obtained using TrkNuclei. In current implementation, calibrations for Z=1 and Z=2 for mean dE/dx Vs. rigidity are:
Z=1 | mean sigma ------------------------ | 0.992 0.06
Z=2 | mean sigma ------------------------ | 1.99 0.1
For all other cases (Z>2 or single plane releases or dE/dx Vs. beta), means are taken to be equal to the charge value (Zmean = Z) and sigmas are:
Z | sigma ----------- 1 | 0.09 2 | 0.10 3 | 0.17 4 | 0.34 5 | 0.44 6 | 0.59
The TofNuclei calibrations used are the standard ones (from Wolfgang, see TrkNuclei.cpp). First of all, the number of layers giving a valid charge information is checked to be greater than minLayers; if it's not so, the routine will return TRKNUCLEIZ_TOOFEWLAYERS. Next, it will check if the charge obtained considering the mean dE/dx in the tracker's layers is in the validity range if the constructor's flag howToCheckMean was set to TRKNUCLEIZ_CHECKMEAN; otherwise, it will check each single valid charge value (mean for X and Y views) obtained from each layer. In the latter case, it will return CUTOK only if all valid layers (ie., those tagged as good for both X and Y in traccker level 2 routines) give a charge inside the bounds, regardless of the value of minLayers.
event | The event to analyze. |
TRKNUCLEIZ_OUTOFBOUNDS if the charge from mean dE/dx(if howToCheck == TRKNUCLEIZ_CHECKMEAN) or at least one valid single layer charge (if howToCheck == TRKNUCLEIZ_CHECKSINGLEVALUES) is out of bounds.
TRKNUCLEIZ_TOOFEWLAYERS if charge information is available for a number of layers lesser than minLayers.
TRKNUCLEIZ_OUTOFBOUNDS if Z < 1 or Z > 6.
Implements PamCut.