Changed scripts for new TrainSetup
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / AliRsnCut.cxx
1 //
2 // *** Class AliRsnCut ***
3 //
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.
7 //
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.
11 //
12 // authors: Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
13 //          Martin Vala (martin.vala@cern.ch)
14 //
15
16 #include "AliRsnCut.h"
17
18 ClassImp(AliRsnCut)
19
20 //______________________________________________________________________________
21 AliRsnCut::AliRsnCut(const char *name, RSNTARGET target) :
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)
30 {
31 //
32 // Default constructor.
33 //
34 }
35
36 //______________________________________________________________________________
37 AliRsnCut::AliRsnCut
38 (const char *name, RSNTARGET target, Int_t imin, Int_t imax, Double_t dmin, Double_t dmax) :
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)
47 {
48 //
49 // Constructor with arguments.
50 // This is provided to allow a quick setting of all data members.
51 //
52 }
53
54 //______________________________________________________________________________
55 AliRsnCut::AliRsnCut
56 (const char *name, RSNTARGET target, Double_t dmin, Double_t dmax, Int_t imin, Int_t imax) :
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)
65 {
66 //
67 // Constructor with arguments.
68 // This is provided to allow a quick setting of all data members.
69 //
70 }
71
72 //______________________________________________________________________________
73 AliRsnCut::AliRsnCut(const AliRsnCut &copy) :
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)
82 {
83 //
84 // Copy constructor.
85 // Don't duplicate memory occupancy for pointer
86 //
87 }
88
89 //______________________________________________________________________________
90 AliRsnCut &AliRsnCut::operator=(const AliRsnCut &copy)
91 {
92 //
93 // Assignment operator.
94 // Don't duplicate memory occupancy for pointer
95 //
96
97    AliRsnTarget::operator=(copy);
98    if (this == &copy)
99       return *this;
100
101    fMinI      = copy.fMinI;
102    fMaxI      = copy.fMaxI;
103    fMinD      = copy.fMinD;
104    fMaxD      = copy.fMaxD;
105    fCutValueI = copy.fCutValueI;
106    fCutValueD = copy.fCutValueD;
107    fCutResult = copy.fCutResult;
108
109    return (*this);
110 }
111
112 //______________________________________________________________________________
113 Bool_t AliRsnCut::IsSelected(TObject * /*object*/)
114 {
115 //
116 // Virtual cut-checking method.
117 // In this implementation, it does nothing, and all classes
118 // inheriting from this, should provide a proper implementation
119 // which must return kTRUE if the cut is passed, and kFALSE otherwise.
120 //
121
122    AliWarning("This virtual function must be implemented properly");
123    return kTRUE;
124 }
125
126 //______________________________________________________________________________
127 Bool_t AliRsnCut::OkValueI()
128 {
129 //
130 // This method is used to compare a value with a reference.
131 // In the case of integers, the equality must be exact.
132 //
133
134    // eval result
135    fCutResult = (fCutValueI == fMinI);
136
137    // print debug message
138    AliDebug(AliLog::kDebug + 2, "=== CUT DEBUG ========================================================");
139    AliDebug(AliLog::kDebug + 2, Form("Cut name     : %s", GetName()));
140    AliDebug(AliLog::kDebug + 2, Form("Checked value: %d", fCutValueI));
141    AliDebug(AliLog::kDebug + 2, Form("Cut value    : %d", fMinI));
142    AliDebug(AliLog::kDebug + 2, Form("Cut result   : %s", (fCutResult ? "PASSED" : "NOT PASSED")));
143    AliDebug(AliLog::kDebug + 2, "=== END CUT DEBUG ====================================================");
144
145    return fCutResult;
146 }
147
148 //______________________________________________________________________________
149 Bool_t AliRsnCut::OkValueD()
150 {
151 //
152 // This method is used to compare a value with a reference.
153 // In the case of doubles, the equality consists in being very close.
154 //
155
156    // eval result
157    fCutResult = (TMath::Abs(fCutValueD - fMinD) < 1E-6);
158
159    // print debug message
160    AliDebug(AliLog::kDebug + 2, "=== CUT DEBUG =======================================================");
161    AliDebug(AliLog::kDebug + 2, Form("Cut name     : %s", GetName()));
162    AliDebug(AliLog::kDebug + 2, Form("Checked value: %f", fCutValueD));
163    AliDebug(AliLog::kDebug + 2, Form("Cut value    : %f", fMinD));
164    AliDebug(AliLog::kDebug + 2, Form("Cut result   : %s", (fCutResult ? "PASSED" : "NOT PASSED")));
165    AliDebug(AliLog::kDebug + 2, "=== END CUT DEBUG ===================================================");
166
167    return fCutResult;
168 }
169
170 //______________________________________________________________________________
171 Bool_t AliRsnCut::OkRangeI()
172 {
173 //
174 // This method is used to compare a value with an integer range.
175 //
176
177    // eval result
178    fCutResult = ((fCutValueI >= fMinI) && (fCutValueI <= fMaxI));
179
180    // print debug message
181    AliDebug(AliLog::kDebug + 2, "=== CUT DEBUG ========================================================");
182    AliDebug(AliLog::kDebug + 2, Form("Cut name     : %s", GetName()));
183    AliDebug(AliLog::kDebug + 2, Form("Checked value: %d", fCutValueI));
184    AliDebug(AliLog::kDebug + 2, Form("Cut range    : %d , %d", fMinI, fMaxI));
185    AliDebug(AliLog::kDebug + 2, Form("Cut result   : %s", (fCutResult ? "PASSED" : "NOT PASSED")));
186    AliDebug(AliLog::kDebug + 2, "=== END CUT DEBUG ====================================================");
187
188    return fCutResult;
189 }
190
191 //______________________________________________________________________________
192 Bool_t AliRsnCut::OkRangeD()
193 {
194 //
195 // This method is used to compare a value with a double-float range.
196 //
197
198    // eval result
199    fCutResult = ((fCutValueD >= fMinD) && (fCutValueD <= fMaxD));
200
201    // print debug message
202    AliDebug(AliLog::kDebug + 2, "=== CUT DEBUG ========================================================");
203    AliDebug(AliLog::kDebug + 2, Form("Cut name     : %s", GetName()));
204    AliDebug(AliLog::kDebug + 2, Form("Checked value: %f", fCutValueD));
205    AliDebug(AliLog::kDebug + 2, Form("Cut range    : %f , %f", fMinD, fMaxD));
206    AliDebug(AliLog::kDebug + 2, Form("Cut result   : %s", (fCutResult ? "PASSED" : "NOT PASSED")));
207    AliDebug(AliLog::kDebug + 2, "=== END CUT DEBUG ====================================================");
208
209    return fCutResult;
210 }
211
212 //______________________________________________________________________________
213 void AliRsnCut::Print(Option_t *) const
214 {
215 //
216 // Override TObject::Print() method,
217 // and print some useful info about the cut general parameters.
218 //
219
220    AliInfo("=== CUT DETAILS ====================================");
221    AliInfo(Form("Cut name     : [%s]", GetName()));
222    AliInfo(Form("Cut target   : [%s]", GetTargetTypeName()));
223    AliInfo(Form("Cut edges [D]: [%f - %f]", fMinD, fMaxD));
224    AliInfo(Form("Cut edges [I]: [%d - %d]", fMinI, fMaxI));
225    AliInfo("====================================================");
226 }