/[PAMELA software]/PamCut/CaloCuts/CaloNucleiZCut/CaloNucleiZCut.h
ViewVC logotype

Contents of /PamCut/CaloCuts/CaloNucleiZCut/CaloNucleiZCut.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show annotations) (download) (vendor branch)
Wed May 27 13:30:09 2009 UTC (15 years, 6 months ago) by pam-fi
Branch: DEV
CVS Tags: v0r00
Changes since 1.1: +0 -0 lines
File MIME type: text/plain
First import

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 */
87 int Check(PamLevel2 *event);
88
89 private:
90
91 unsigned int _Z;
92 static const float _sigmaZ[];
93
94 float _lowerLimit;
95 float _upperLimit;
96 CaloNuclei *_caloNuclei;
97
98 unsigned int _method;
99 };
100 #endif /* CALONUCLEIZCUT_H_ */
101
102 #endif /* NO_CALONUCLEI */

  ViewVC Help
Powered by ViewVC 1.1.23