#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. | |
Private Attributes | |
unsigned int | _Z |
float | _lowerLimit |
float | _upperLimit |
TrkNuclei * | _trkNuclei |
unsigned int | _minLayers |
unsigned int | _howToCheck |
unsigned int | _method |
Static Private Attributes | |
static const float | _meanRigMean [] = { .992, 1.99, 3., 4., 5., 6. } |
static const float | _sigmaRigMean [] = { 0.06, 0.1, 0.17, 0.34, 0.44, 0.59 } |
static const float | _meanBetaMean [] = { 1., 2., 3., 4., 5., 6. } |
static const float | _sigmaBetaMean [] = { 0.09, 0.1, 0.17, 0.34, 0.44, 0.59 } |
This cut uses the TrkNuclei library to cut events depending on particle's charge value.
Definition at line 48 of file TrkNucleiZCut.h.
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). |
Definition at line 65 of file TrkNucleiZCut.h.
TrkNucleiZCut::~TrkNucleiZCut | ( | ) | [inline] |
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.
Definition at line 20 of file TrkNucleiZCut.cpp.
References _howToCheck, _lowerLimit, _meanBetaMean, _meanRigMean, _method, _minLayers, _sigmaBetaMean, _sigmaRigMean, _trkNuclei, _upperLimit, _Z, CUTOK, TRKNUCLEIZ_BETA, TRKNUCLEIZ_CHECKMEAN, TRKNUCLEIZ_ILLEGALZ, TRKNUCLEIZ_OUTOFBOUNDS, TRKNUCLEIZ_RIG, and TRKNUCLEIZ_TOOFEWLAYERS.
unsigned int TrkNucleiZCut::_howToCheck [private] |
float TrkNucleiZCut::_lowerLimit [private] |
const float TrkNucleiZCut::_meanBetaMean = { 1., 2., 3., 4., 5., 6. } [static, private] |
const float TrkNucleiZCut::_meanRigMean = { .992, 1.99, 3., 4., 5., 6. } [static, private] |
unsigned int TrkNucleiZCut::_method [private] |
unsigned int TrkNucleiZCut::_minLayers [private] |
const float TrkNucleiZCut::_sigmaBetaMean = { 0.09, 0.1, 0.17, 0.34, 0.44, 0.59 } [static, private] |
const float TrkNucleiZCut::_sigmaRigMean = { 0.06, 0.1, 0.17, 0.34, 0.44, 0.59 } [static, private] |
TrkNuclei* TrkNucleiZCut::_trkNuclei [private] |
float TrkNucleiZCut::_upperLimit [private] |
unsigned int TrkNucleiZCut::_Z [private] |