]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/AliRsnCutValue.cxx
Class and macro to update the OCDB with the MeanVertex during pass0 (Davide)
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnCutValue.cxx
1 //
2 // *** Class AliRsnCutValue ***
3 //
4 // This cut implementation can be used to cut generically on
5 // any value which can be computed from AliRsnValue class.
6 // Since that value is implemented always as a Double_t one,
7 // then this cut operates only with the Double_t data members
8 // of the AliRsnCut base class.
9 // It allows to cusomize the reference AliRsnValue object by
10 // means of a getter that returns a pointer to it.
11 // This cut can apply to any kind of object, but the type of
12 // target must be one of those for which the chosen value type
13 // makes sense to be computed
14 //
15 // author: Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
16 //
17
18 #include "AliRsnValue.h"
19 #include "AliRsnDaughter.h"
20 #include "AliRsnMother.h"
21 #include "AliRsnEvent.h"
22 #include "AliRsnPairDef.h"
23
24 #include "AliRsnCutValue.h"
25
26 ClassImp(AliRsnCutValue)
27
28 //_________________________________________________________________________________________________
29 AliRsnCutValue::AliRsnCutValue() :
30    AliRsnCut(),
31    fValue(0x0)
32 {
33 //
34 // Default constructor.
35 //
36 }
37
38 //_________________________________________________________________________________________________
39 AliRsnCutValue::AliRsnCutValue
40 (const char *name, Double_t min, Double_t max) :
41    AliRsnCut(name, AliRsnTarget::kTargetTypes, min, max),
42    fValue(0x0)
43 {
44 //
45 // Main constructor.
46 // Sets the AliRsnValue data member accordingly to arguments passed here.
47 // NOTE: if the value needs a support object, it must be passed separately
48 //       using the GetValueObje() of this class
49 //
50 }
51
52 //_________________________________________________________________________________________________
53 AliRsnCutValue::AliRsnCutValue(const AliRsnCutValue& copy) :
54    AliRsnCut(copy),
55    fValue(copy.fValue)
56 {
57 //
58 // Copy constructor.
59 // Does not duplicate memory allocation.
60 //
61 }
62
63 //_________________________________________________________________________________________________
64 AliRsnCutValue& AliRsnCutValue::operator=(const AliRsnCutValue& copy)
65 {
66 //
67 // Assignment operator.
68 // Does not duplicate memory allocation.
69 //
70
71    AliRsnCut::operator=(copy);
72    fValue = copy.fValue;
73
74    return (*this);
75 }
76
77 //_________________________________________________________________________________________________
78 Bool_t AliRsnCutValue::IsSelected(TObject *object)
79 {
80 //
81 // Checks the cut.
82 // Calls the AliRsnValue::Eval() method and then checks its output.
83 //
84
85    // skip cut if value is not initialized
86    if (!fValue) return kTRUE;
87    
88    // match target types
89    SetTargetType(fValue->GetTargetType());
90
91    // try to compute values
92    Bool_t success = fValue->Eval(object);
93
94    // check success
95    if (!success) {
96       AliWarning(Form("[%s] Failed to compute value", GetName()));
97       return kFALSE;
98    }
99
100    // check in range
101    fCutValueD = fValue->GetComputedValue();
102    return OkRangeD();
103 }
104
105 //_________________________________________________________________________________________________
106 void AliRsnCutValue::Print(const Option_t *) const
107 {
108 //
109 // Print information on this cut
110 //
111
112    AliInfo(Form("Cut name   : %s", GetName()));
113    AliInfo(Form("Cut value  : %s", fValue->GetName()));
114    AliInfo(Form("Cut range  : %f - %f", fMinD, fMaxD));
115 }