00001
00002
00003
00004
00005
00006
00007
00010 #ifndef NO_TRKNUCLEI
00011
00012 #ifndef TRKNUCLEIZCUT_H_
00013 #define TRKNUCLEIZCUT_H_
00014
00015 #include "../../PamCutBase/PamCutBase.h"
00016 #include <TrkNuclei.h>
00017
00018 #include <TH2F.h>
00019
00021 enum TrkNucleiZ_Return {
00022 TRKNUCLEIZ_OUTOFBOUNDS,
00023 TRKNUCLEIZ_TOOFEWLAYERS,
00024 TRKNUCLEIZ_ILLEGALZ
00026 };
00027
00029 enum TrkNucleiZ_method {
00030 TRKNUCLEIZ_BETA,
00031 TRKNUCLEIZ_RIG,
00033 };
00034
00036 enum TrkNucleiZ_Check {
00037 TRKNUCLEIZ_CHECKMEAN,
00038 TRKNUCLEIZ_CHECKSINGLEVALUES
00040 };
00041
00048 class TrkNucleiZCut: public PamCut {
00049
00050 public:
00065 TrkNucleiZCut(const char *cutName, unsigned int Z, float lowerLimit, float upperLimit, unsigned int minLayers = 1,
00066 unsigned int howToCheck = TRKNUCLEIZ_CHECKMEAN, unsigned int method = TRKNUCLEIZ_RIG) :
00067 PamCut(cutName), _Z(Z), _lowerLimit(lowerLimit), _upperLimit(upperLimit), _trkNuclei(NULL), _minLayers(minLayers),
00068 _howToCheck(howToCheck), _method(method) {
00069
00070 }
00072 ~TrkNucleiZCut() {
00073 delete _trkNuclei;
00074 }
00075
00119 int Check(PamLevel2 *event);
00120
00121 private:
00122
00123 unsigned int _Z;
00124
00125 static const float _meanRigMean[];
00126 static const float _sigmaRigMean[];
00127 static const float _meanBetaMean[];
00128 static const float _sigmaBetaMean[];
00129
00130 float _lowerLimit;
00131 float _upperLimit;
00132 TrkNuclei *_trkNuclei;
00133 unsigned int _minLayers;
00134 unsigned int _howToCheck;
00135 unsigned int _method;
00136 };
00137 #endif
00138
00139 #endif