]>
Commit | Line | Data |
---|---|---|
e2bafbbc | 1 | // |
32992791 | 2 | // *** Class AliRsnCut *** |
06351446 | 3 | // |
32992791 | 4 | // Cut base class: all other cuts inherit from it. |
5 | // The 'core' of the class is the method "IsSelected()" which | |
6 | // must be overloaded by any specific cut implementation. | |
e2bafbbc | 7 | // |
32992791 | 8 | // This class provides some default instruments to check values |
9 | // agains a reference or an allowed range, in order to permit | |
10 | // a unique way to execute such kind of checks. | |
06351446 | 11 | // |
32992791 | 12 | // authors: Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it) |
13 | // Martin Vala (martin.vala@cern.ch) | |
e2bafbbc | 14 | // |
06351446 | 15 | |
5eb970a4 | 16 | #include "AliRsnCut.h" |
06351446 | 17 | |
aec0ec32 | 18 | ClassImp(AliRsnCut) |
06351446 | 19 | |
32992791 | 20 | //______________________________________________________________________________ |
21 | AliRsnCut::AliRsnCut(const char *name, RSNTARGET target) : | |
2a1c7696 | 22 | AliRsnTarget(name, target), |
23 | fMinI(0), | |
24 | fMaxI(0), | |
25 | fMinD(0.), | |
26 | fMaxD(0.), | |
27 | fCutValueI(0), | |
28 | fCutValueD(0.0), | |
29 | fCutResult(kTRUE) | |
06351446 | 30 | { |
31 | // | |
5eb970a4 | 32 | // Default constructor. |
06351446 | 33 | // |
34 | } | |
35 | ||
32992791 | 36 | //______________________________________________________________________________ |
5eb970a4 | 37 | AliRsnCut::AliRsnCut |
32992791 | 38 | (const char *name, RSNTARGET target, Int_t imin, Int_t imax, Double_t dmin, Double_t dmax) : |
2a1c7696 | 39 | AliRsnTarget(name, target), |
40 | fMinI(imin), | |
41 | fMaxI(imax), | |
42 | fMinD(dmin), | |
43 | fMaxD(dmax), | |
44 | fCutValueI(0), | |
45 | fCutValueD(0.0), | |
46 | fCutResult(kTRUE) | |
06351446 | 47 | { |
48 | // | |
32992791 | 49 | // Constructor with arguments. |
50 | // This is provided to allow a quick setting of all data members. | |
06351446 | 51 | // |
52 | } | |
53 | ||
32992791 | 54 | //______________________________________________________________________________ |
5eb970a4 | 55 | AliRsnCut::AliRsnCut |
32992791 | 56 | (const char *name, RSNTARGET target, Double_t dmin, Double_t dmax, Int_t imin, Int_t imax) : |
2a1c7696 | 57 | AliRsnTarget(name, target), |
58 | fMinI(imin), | |
59 | fMaxI(imax), | |
60 | fMinD(dmin), | |
61 | fMaxD(dmax), | |
62 | fCutValueI(0), | |
63 | fCutValueD(0.0), | |
64 | fCutResult(kTRUE) | |
06351446 | 65 | { |
66 | // | |
32992791 | 67 | // Constructor with arguments. |
68 | // This is provided to allow a quick setting of all data members. | |
06351446 | 69 | // |
70 | } | |
71 | ||
32992791 | 72 | //______________________________________________________________________________ |
73 | AliRsnCut::AliRsnCut(const AliRsnCut& copy) : | |
2a1c7696 | 74 | AliRsnTarget(copy), |
75 | fMinI(copy.fMinI), | |
76 | fMaxI(copy.fMaxI), | |
77 | fMinD(copy.fMinD), | |
78 | fMaxD(copy.fMaxD), | |
79 | fCutValueI(copy.fCutValueI), | |
80 | fCutValueD(copy.fCutValueD), | |
81 | fCutResult(copy.fCutResult) | |
32992791 | 82 | { |
83 | // | |
84 | // Copy constructor. | |
85 | // Don't duplicate memory occupancy for pointer | |
86 | // | |
87 | } | |
88 | ||
89 | //______________________________________________________________________________ | |
413bbf44 | 90 | AliRsnCut& AliRsnCut::operator=(const AliRsnCut& copy) |
91 | { | |
92 | // | |
32992791 | 93 | // Assignment operator. |
94 | // Don't duplicate memory occupancy for pointer | |
413bbf44 | 95 | // |
96 | ||
2a1c7696 | 97 | AliRsnTarget::operator=(copy); |
413bbf44 | 98 | |
2a1c7696 | 99 | fMinI = copy.fMinI; |
100 | fMaxI = copy.fMaxI; | |
101 | fMinD = copy.fMinD; | |
102 | fMaxD = copy.fMaxD; | |
103 | fCutValueI = copy.fCutValueI; | |
104 | fCutValueD = copy.fCutValueD; | |
eaa44581 | 105 | fCutResult = copy.fCutResult; |
2a1c7696 | 106 | |
107 | return (*this); | |
413bbf44 | 108 | } |
109 | ||
32992791 | 110 | //______________________________________________________________________________ |
111 | Bool_t AliRsnCut::IsSelected(TObject* /*object*/) | |
aec0ec32 | 112 | { |
113 | // | |
32992791 | 114 | // Virtual cut-checking method. |
115 | // In this implementation, it does nothing, and all classes | |
116 | // inheriting from this, should provide a proper implementation | |
117 | // which must return kTRUE if the cut is passed, and kFALSE otherwise. | |
aec0ec32 | 118 | // |
aec0ec32 | 119 | |
2a1c7696 | 120 | AliWarning("This virtual function must be implemented properly"); |
121 | return kTRUE; | |
06351446 | 122 | } |
123 | ||
32992791 | 124 | //______________________________________________________________________________ |
2dab9030 | 125 | Bool_t AliRsnCut::OkValueI() |
06351446 | 126 | { |
127 | // | |
eaa44581 | 128 | // This method is used to compare a value with a reference. |
129 | // In the case of integers, the equality must be exact. | |
06351446 | 130 | // |
aec0ec32 | 131 | |
2a1c7696 | 132 | // eval result |
133 | fCutResult = (fCutValueI == fMinI); | |
134 | ||
135 | // print debug message | |
eaa44581 | 136 | AliDebug(AliLog::kDebug + 2, "=== CUT DEBUG ========================================================"); |
2a1c7696 | 137 | AliDebug(AliLog::kDebug + 2, Form("Cut name : %s", GetName())); |
138 | AliDebug(AliLog::kDebug + 2, Form("Checked value: %d", fCutValueI)); | |
139 | AliDebug(AliLog::kDebug + 2, Form("Cut value : %d", fMinI)); | |
140 | AliDebug(AliLog::kDebug + 2, Form("Cut result : %s", (fCutResult ? "PASSED" : "NOT PASSED"))); | |
eaa44581 | 141 | AliDebug(AliLog::kDebug + 2, "=== END CUT DEBUG ===================================================="); |
2a1c7696 | 142 | |
143 | return fCutResult; | |
2dab9030 | 144 | } |
aec0ec32 | 145 | |
32992791 | 146 | //______________________________________________________________________________ |
2dab9030 | 147 | Bool_t AliRsnCut::OkValueD() |
148 | { | |
149 | // | |
eaa44581 | 150 | // This method is used to compare a value with a reference. |
151 | // In the case of doubles, the equality consists in being very close. | |
2dab9030 | 152 | // |
153 | ||
2a1c7696 | 154 | // eval result |
d7712d44 | 155 | fCutResult = (TMath::Abs(fCutValueD - fMinD) < 1E-6); |
2a1c7696 | 156 | |
157 | // print debug message | |
eaa44581 | 158 | AliDebug(AliLog::kDebug + 2, "=== CUT DEBUG ======================================================="); |
2a1c7696 | 159 | AliDebug(AliLog::kDebug + 2, Form("Cut name : %s", GetName())); |
160 | AliDebug(AliLog::kDebug + 2, Form("Checked value: %f", fCutValueD)); | |
161 | AliDebug(AliLog::kDebug + 2, Form("Cut value : %f", fMinD)); | |
162 | AliDebug(AliLog::kDebug + 2, Form("Cut result : %s", (fCutResult ? "PASSED" : "NOT PASSED"))); | |
eaa44581 | 163 | AliDebug(AliLog::kDebug + 2, "=== END CUT DEBUG ==================================================="); |
2a1c7696 | 164 | |
165 | return fCutResult; | |
06351446 | 166 | } |
167 | ||
32992791 | 168 | //______________________________________________________________________________ |
2dab9030 | 169 | Bool_t AliRsnCut::OkRangeI() |
e0baff8c | 170 | { |
5eb970a4 | 171 | // |
eaa44581 | 172 | // This method is used to compare a value with an integer range. |
5eb970a4 | 173 | // |
e0baff8c | 174 | |
2a1c7696 | 175 | // eval result |
176 | fCutResult = ((fCutValueI >= fMinI) && (fCutValueI <= fMaxI)); | |
177 | ||
178 | // print debug message | |
eaa44581 | 179 | AliDebug(AliLog::kDebug + 2, "=== CUT DEBUG ========================================================"); |
2a1c7696 | 180 | AliDebug(AliLog::kDebug + 2, Form("Cut name : %s", GetName())); |
181 | AliDebug(AliLog::kDebug + 2, Form("Checked value: %d", fCutValueI)); | |
182 | AliDebug(AliLog::kDebug + 2, Form("Cut range : %d , %d", fMinI, fMaxI)); | |
183 | AliDebug(AliLog::kDebug + 2, Form("Cut result : %s", (fCutResult ? "PASSED" : "NOT PASSED"))); | |
eaa44581 | 184 | AliDebug(AliLog::kDebug + 2, "=== END CUT DEBUG ===================================================="); |
2a1c7696 | 185 | |
186 | return fCutResult; | |
2dab9030 | 187 | } |
188 | ||
32992791 | 189 | //______________________________________________________________________________ |
2dab9030 | 190 | Bool_t AliRsnCut::OkRangeD() |
191 | { | |
192 | // | |
eaa44581 | 193 | // This method is used to compare a value with a double-float range. |
2dab9030 | 194 | // |
195 | ||
2a1c7696 | 196 | // eval result |
197 | fCutResult = ((fCutValueD >= fMinD) && (fCutValueD <= fMaxD)); | |
198 | ||
199 | // print debug message | |
eaa44581 | 200 | AliDebug(AliLog::kDebug + 2, "=== CUT DEBUG ========================================================"); |
2a1c7696 | 201 | AliDebug(AliLog::kDebug + 2, Form("Cut name : %s", GetName())); |
202 | AliDebug(AliLog::kDebug + 2, Form("Checked value: %f", fCutValueD)); | |
203 | AliDebug(AliLog::kDebug + 2, Form("Cut range : %f , %f", fMinD, fMaxD)); | |
204 | AliDebug(AliLog::kDebug + 2, Form("Cut result : %s", (fCutResult ? "PASSED" : "NOT PASSED"))); | |
eaa44581 | 205 | AliDebug(AliLog::kDebug + 2, "=== END CUT DEBUG ===================================================="); |
e0baff8c | 206 | |
2a1c7696 | 207 | return fCutResult; |
e0baff8c | 208 | } |
209 | ||
32992791 | 210 | //______________________________________________________________________________ |
2dab9030 | 211 | void AliRsnCut::Print(Option_t*) const |
212 | { | |
213 | // | |
32992791 | 214 | // Override TObject::Print() method, |
215 | // and print some useful info about the cut general parameters. | |
2dab9030 | 216 | // |
217 | ||
2a1c7696 | 218 | AliInfo("=== CUT DETAILS ===================================="); |
219 | AliInfo(Form("Cut name : [%s]", GetName())); | |
220 | AliInfo(Form("Cut target : [%s]", GetTargetTypeName())); | |
221 | AliInfo(Form("Cut edges [D]: [%f - %f]", fMinD, fMaxD)); | |
222 | AliInfo(Form("Cut edges [I]: [%d - %d]", fMinI, fMaxI)); | |
223 | AliInfo("===================================================="); | |
2dab9030 | 224 | } |