2 // *** Class AliRsnCut ***
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.
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.
12 // authors: Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
13 // Martin Vala (martin.vala@cern.ch)
16 #include "AliRsnCut.h"
20 //______________________________________________________________________________
21 AliRsnCut::AliRsnCut(const char *name, RSNTARGET target) :
22 AliRsnTarget(name, target),
32 // Default constructor.
36 //______________________________________________________________________________
38 (const char *name, RSNTARGET target, Int_t imin, Int_t imax, Double_t dmin, Double_t dmax) :
39 AliRsnTarget(name, target),
49 // Constructor with arguments.
50 // This is provided to allow a quick setting of all data members.
54 //______________________________________________________________________________
56 (const char *name, RSNTARGET target, Double_t dmin, Double_t dmax, Int_t imin, Int_t imax) :
57 AliRsnTarget(name, target),
67 // Constructor with arguments.
68 // This is provided to allow a quick setting of all data members.
72 //______________________________________________________________________________
73 AliRsnCut::AliRsnCut(const AliRsnCut& copy) :
79 fCutValueI(copy.fCutValueI),
80 fCutValueD(copy.fCutValueD),
81 fCutResult(copy.fCutResult)
85 // Don't duplicate memory occupancy for pointer
89 //______________________________________________________________________________
90 AliRsnCut& AliRsnCut::operator=(const AliRsnCut& copy)
93 // Assignment operator.
94 // Don't duplicate memory occupancy for pointer
97 AliRsnTarget::operator=(copy);
103 fCutValueI = copy.fCutValueI;
104 fCutValueD = copy.fCutValueD;
105 fCutResult = copy.fCutResult;
110 //______________________________________________________________________________
111 Bool_t AliRsnCut::IsSelected(TObject* /*object*/)
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.
120 AliWarning("This virtual function must be implemented properly");
124 //______________________________________________________________________________
125 Bool_t AliRsnCut::OkValueI()
128 // This method is used to compare a value with a reference.
129 // In the case of integers, the equality must be exact.
133 fCutResult = (fCutValueI == fMinI);
135 // print debug message
136 AliDebug(AliLog::kDebug + 2, "=== CUT DEBUG ========================================================");
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")));
141 AliDebug(AliLog::kDebug + 2, "=== END CUT DEBUG ====================================================");
146 //______________________________________________________________________________
147 Bool_t AliRsnCut::OkValueD()
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.
155 fCutResult = (TMath::Abs(fCutValueD - fMinD) < 1E-6);
157 // print debug message
158 AliDebug(AliLog::kDebug + 2, "=== CUT DEBUG =======================================================");
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")));
163 AliDebug(AliLog::kDebug + 2, "=== END CUT DEBUG ===================================================");
168 //______________________________________________________________________________
169 Bool_t AliRsnCut::OkRangeI()
172 // This method is used to compare a value with an integer range.
176 fCutResult = ((fCutValueI >= fMinI) && (fCutValueI <= fMaxI));
178 // print debug message
179 AliDebug(AliLog::kDebug + 2, "=== CUT DEBUG ========================================================");
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")));
184 AliDebug(AliLog::kDebug + 2, "=== END CUT DEBUG ====================================================");
189 //______________________________________________________________________________
190 Bool_t AliRsnCut::OkRangeD()
193 // This method is used to compare a value with a double-float range.
197 fCutResult = ((fCutValueD >= fMinD) && (fCutValueD <= fMaxD));
199 // print debug message
200 AliDebug(AliLog::kDebug + 2, "=== CUT DEBUG ========================================================");
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")));
205 AliDebug(AliLog::kDebug + 2, "=== END CUT DEBUG ====================================================");
210 //______________________________________________________________________________
211 void AliRsnCut::Print(Option_t*) const
214 // Override TObject::Print() method,
215 // and print some useful info about the cut general parameters.
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("====================================================");