1 |
pam-fi |
1.1 |
/* |
2 |
|
|
* CaloNucleiZCut.h |
3 |
|
|
* |
4 |
|
|
* Created on: 30-apr-2009 |
5 |
|
|
* Author: Nicola Mori |
6 |
|
|
*/ |
7 |
|
|
|
8 |
|
|
/*! @file CaloNucleiZCut.h The TofNucleiZCut class definition file */ |
9 |
|
|
|
10 |
|
|
#ifndef NO_CALONUCLEI |
11 |
|
|
|
12 |
|
|
#ifndef CALONUCLEIZCUT_H_ |
13 |
|
|
#define CALONUCLEIZCUT_H_ |
14 |
|
|
|
15 |
|
|
#include "../../PamCutBase/PamCutBase.h" |
16 |
|
|
#include <CaloNuclei.h> |
17 |
|
|
|
18 |
|
|
#include <TH2F.h> |
19 |
|
|
|
20 |
|
|
/*! @enum CaloNucleiZ_Return Return values for rejected events */ |
21 |
|
|
enum CaloNucleiZ_Return { |
22 |
|
|
CALONUCLEIZ_OUTOFBOUNDS, ///< Discarded because charge is out of bounds |
23 |
|
|
CALONUCLEIZ_ILLEGALZ |
24 |
|
|
///< Discarded because charge is not between 1 and 8 |
25 |
|
|
}; |
26 |
|
|
|
27 |
|
|
/*! @enum CaloNucleiZ_method Method to use to measure Z. */ |
28 |
|
|
enum CaloNucleiZ_method { |
29 |
|
|
CALONUCLEIZ_SIEGEN, ///< Siegen method: stdedx vs. beta from ToF |
30 |
|
|
CALONUCLEIZ_DEDXBETA, ///< dE/dx in the first calorimeter plane vs. beta from ToF |
31 |
|
|
CALONUCLEIZ_DEDXDEFL, |
32 |
|
|
///< dE/dx in the first calorimeter plane vs. deflection from Tracker |
33 |
|
|
}; |
34 |
|
|
|
35 |
|
|
/*! @brief The CaloNuclei charge cut. |
36 |
|
|
* |
37 |
|
|
* This cut uses the CaloNuclei library to cut events depending on particle's charge value. |
38 |
|
|
* |
39 |
|
|
*/ |
40 |
|
|
|
41 |
|
|
class CaloNucleiZCut: public PamCut { |
42 |
|
|
|
43 |
|
|
public: |
44 |
|
|
/*! @brief Constructor. |
45 |
|
|
* |
46 |
|
|
* The charge to look for is passed to the CaloNucleiZCut object as Z. For each charge, there is an associated distribution of |
47 |
|
|
* events, with mean Zmean and standard deviation sigmaZ. These values will be used to check the events. |
48 |
|
|
* |
49 |
|
|
* @param cutName The cut's name. |
50 |
|
|
* @param Z The charge value. |
51 |
|
|
* @param lowerLimit The lower bound (in units of sigma_Z) of the desired charge range, defined as Zmean - lowerBound*sigmaZ. |
52 |
|
|
* @param upperLimit The upper bound (in units of sigma_Z) of the desired charge range, defined as Zmean + upperBound*sigmaZ. |
53 |
|
|
* @param method The method to use to measure the particle's charge (see #CaloNucleiZ_method). |
54 |
|
|
* @return |
55 |
|
|
*/ |
56 |
|
|
CaloNucleiZCut(const char *cutName, unsigned int Z, float lowerLimit, float upperLimit, unsigned int method = |
57 |
|
|
CALONUCLEIZ_SIEGEN) : |
58 |
|
|
PamCut(cutName), _Z(Z), _lowerLimit(lowerLimit), _upperLimit(upperLimit), _caloNuclei(NULL), _method(method) { |
59 |
|
|
|
60 |
|
|
} |
61 |
|
|
/*! @brief Destructor. */ |
62 |
|
|
~CaloNucleiZCut() { |
63 |
|
|
delete _caloNuclei; |
64 |
|
|
|
65 |
|
|
} |
66 |
|
|
|
67 |
|
|
/*! @brief The CaloNucleiZ check. |
68 |
|
|
* |
69 |
|
|
* The routine selects events whose value of Zmean obtained from the CaloNuclei Class is in the range [Zmean - sigma*lowerBound, Zmean + sigma*upperBound]. |
70 |
|
|
* Zmean and sigma are defined respectively as the mean and the standard deviation of the charge distributions obtained using CaloNuclei. |
71 |
|
|
* In current implementation, means are taken to be equal to the charge value (Zmean = Z) and sigmas are: |
72 |
|
|
* |
73 |
|
|
* Z | sigma |
74 |
|
|
* ----------- |
75 |
|
|
* 1 | 0.11 |
76 |
|
|
* 2 | 0.14 |
77 |
|
|
* 3 | 0.21 |
78 |
|
|
* 4 | 0.28 |
79 |
|
|
* 5 | 0.28 |
80 |
|
|
* 6 | 0.31 |
81 |
|
|
* 7 | 0.32 |
82 |
|
|
* 8 | 0.32 |
83 |
|
|
* |
84 |
|
|
* independent of the method used. |
85 |
|
|
* |
86 |
pam-fi |
1.2 |
* @param event The event to analyze. |
87 |
pam-fi |
1.3 |
* @return CUTOK if the charge of the perticle is in the specified range. |
88 |
pam-fi |
1.2 |
* |
89 |
pam-fi |
1.1 |
*/ |
90 |
|
|
int Check(PamLevel2 *event); |
91 |
|
|
|
92 |
|
|
private: |
93 |
|
|
|
94 |
|
|
unsigned int _Z; |
95 |
|
|
static const float _sigmaZ[]; |
96 |
|
|
|
97 |
|
|
float _lowerLimit; |
98 |
|
|
float _upperLimit; |
99 |
|
|
CaloNuclei *_caloNuclei; |
100 |
|
|
|
101 |
|
|
unsigned int _method; |
102 |
|
|
}; |
103 |
|
|
#endif /* CALONUCLEIZCUT_H_ */ |
104 |
|
|
|
105 |
|
|
#endif /* NO_CALONUCLEI */ |