ROOT logo
//
// *** Class AliRsnCutValue ***
//
// This cut implementation can be used to cut generically on
// any value which can be computed from AliRsnValue class.
// Since that value is implemented always as a Double_t one,
// then this cut operates only with the Double_t data members
// of the AliRsnCut base class.
// It allows to cusomize the reference AliRsnValue object by
// means of a getter that returns a pointer to it.
// This cut can apply to any kind of object, but the type of
// target must be one of those for which the chosen value type
// makes sense to be computed
//
// author: Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
//

#include "AliRsnValue.h"
#include "AliRsnDaughter.h"
#include "AliRsnMother.h"
#include "AliRsnEvent.h"
#include "AliRsnPairDef.h"

#include "AliRsnCutValue.h"

ClassImp(AliRsnCutValue)

//_________________________________________________________________________________________________
AliRsnCutValue::AliRsnCutValue() :
   AliRsnCut(),
   fValue(0x0)
{
//
// Default constructor.
//
}

//_________________________________________________________________________________________________
AliRsnCutValue::AliRsnCutValue
(const char *name, Double_t min, Double_t max) :
   AliRsnCut(name, AliRsnTarget::kTargetTypes, min, max),
   fValue(0x0)
{
//
// Main constructor.
// Sets the AliRsnValue data member accordingly to arguments passed here.
// NOTE: if the value needs a support object, it must be passed separately
//       using the GetValueObje() of this class
//
}

//_________________________________________________________________________________________________
AliRsnCutValue::AliRsnCutValue(const AliRsnCutValue &copy) :
   AliRsnCut(copy),
   fValue(copy.fValue)
{
//
// Copy constructor.
// Does not duplicate memory allocation.
//
}

//_________________________________________________________________________________________________
AliRsnCutValue &AliRsnCutValue::operator=(const AliRsnCutValue &copy)
{
//
// Assignment operator.
// Does not duplicate memory allocation.
//

   AliRsnCut::operator=(copy);
   if (this == &copy)
      return *this;

   fValue = copy.fValue;

   return (*this);
}

//_________________________________________________________________________________________________
Bool_t AliRsnCutValue::IsSelected(TObject *object)
{
//
// Checks the cut.
// Calls the AliRsnValue::Eval() method and then checks its output.
//

   // skip cut if value is not initialized
   if (!fValue) return kTRUE;

   // match target types
   SetTargetType(fValue->GetTargetType());

   // try to compute values
   Bool_t success = fValue->Eval(object);

   // check success
   if (!success) {
      AliWarning(Form("[%s] Failed to compute value", GetName()));
      return kFALSE;
   }

   // check in range
   fCutValueD = fValue->GetComputedValue();
   return OkRangeD();
}

//_________________________________________________________________________________________________
void AliRsnCutValue::Print(const Option_t *) const
{
//
// Print information on this cut
//

   AliInfo(Form("Cut name   : %s", GetName()));
   AliInfo(Form("Cut value  : %s", fValue->GetName()));
   AliInfo(Form("Cut range  : %f - %f", fMinD, fMaxD));
}
 AliRsnCutValue.cxx:1
 AliRsnCutValue.cxx:2
 AliRsnCutValue.cxx:3
 AliRsnCutValue.cxx:4
 AliRsnCutValue.cxx:5
 AliRsnCutValue.cxx:6
 AliRsnCutValue.cxx:7
 AliRsnCutValue.cxx:8
 AliRsnCutValue.cxx:9
 AliRsnCutValue.cxx:10
 AliRsnCutValue.cxx:11
 AliRsnCutValue.cxx:12
 AliRsnCutValue.cxx:13
 AliRsnCutValue.cxx:14
 AliRsnCutValue.cxx:15
 AliRsnCutValue.cxx:16
 AliRsnCutValue.cxx:17
 AliRsnCutValue.cxx:18
 AliRsnCutValue.cxx:19
 AliRsnCutValue.cxx:20
 AliRsnCutValue.cxx:21
 AliRsnCutValue.cxx:22
 AliRsnCutValue.cxx:23
 AliRsnCutValue.cxx:24
 AliRsnCutValue.cxx:25
 AliRsnCutValue.cxx:26
 AliRsnCutValue.cxx:27
 AliRsnCutValue.cxx:28
 AliRsnCutValue.cxx:29
 AliRsnCutValue.cxx:30
 AliRsnCutValue.cxx:31
 AliRsnCutValue.cxx:32
 AliRsnCutValue.cxx:33
 AliRsnCutValue.cxx:34
 AliRsnCutValue.cxx:35
 AliRsnCutValue.cxx:36
 AliRsnCutValue.cxx:37
 AliRsnCutValue.cxx:38
 AliRsnCutValue.cxx:39
 AliRsnCutValue.cxx:40
 AliRsnCutValue.cxx:41
 AliRsnCutValue.cxx:42
 AliRsnCutValue.cxx:43
 AliRsnCutValue.cxx:44
 AliRsnCutValue.cxx:45
 AliRsnCutValue.cxx:46
 AliRsnCutValue.cxx:47
 AliRsnCutValue.cxx:48
 AliRsnCutValue.cxx:49
 AliRsnCutValue.cxx:50
 AliRsnCutValue.cxx:51
 AliRsnCutValue.cxx:52
 AliRsnCutValue.cxx:53
 AliRsnCutValue.cxx:54
 AliRsnCutValue.cxx:55
 AliRsnCutValue.cxx:56
 AliRsnCutValue.cxx:57
 AliRsnCutValue.cxx:58
 AliRsnCutValue.cxx:59
 AliRsnCutValue.cxx:60
 AliRsnCutValue.cxx:61
 AliRsnCutValue.cxx:62
 AliRsnCutValue.cxx:63
 AliRsnCutValue.cxx:64
 AliRsnCutValue.cxx:65
 AliRsnCutValue.cxx:66
 AliRsnCutValue.cxx:67
 AliRsnCutValue.cxx:68
 AliRsnCutValue.cxx:69
 AliRsnCutValue.cxx:70
 AliRsnCutValue.cxx:71
 AliRsnCutValue.cxx:72
 AliRsnCutValue.cxx:73
 AliRsnCutValue.cxx:74
 AliRsnCutValue.cxx:75
 AliRsnCutValue.cxx:76
 AliRsnCutValue.cxx:77
 AliRsnCutValue.cxx:78
 AliRsnCutValue.cxx:79
 AliRsnCutValue.cxx:80
 AliRsnCutValue.cxx:81
 AliRsnCutValue.cxx:82
 AliRsnCutValue.cxx:83
 AliRsnCutValue.cxx:84
 AliRsnCutValue.cxx:85
 AliRsnCutValue.cxx:86
 AliRsnCutValue.cxx:87
 AliRsnCutValue.cxx:88
 AliRsnCutValue.cxx:89
 AliRsnCutValue.cxx:90
 AliRsnCutValue.cxx:91
 AliRsnCutValue.cxx:92
 AliRsnCutValue.cxx:93
 AliRsnCutValue.cxx:94
 AliRsnCutValue.cxx:95
 AliRsnCutValue.cxx:96
 AliRsnCutValue.cxx:97
 AliRsnCutValue.cxx:98
 AliRsnCutValue.cxx:99
 AliRsnCutValue.cxx:100
 AliRsnCutValue.cxx:101
 AliRsnCutValue.cxx:102
 AliRsnCutValue.cxx:103
 AliRsnCutValue.cxx:104
 AliRsnCutValue.cxx:105
 AliRsnCutValue.cxx:106
 AliRsnCutValue.cxx:107
 AliRsnCutValue.cxx:108
 AliRsnCutValue.cxx:109
 AliRsnCutValue.cxx:110
 AliRsnCutValue.cxx:111
 AliRsnCutValue.cxx:112
 AliRsnCutValue.cxx:113
 AliRsnCutValue.cxx:114
 AliRsnCutValue.cxx:115
 AliRsnCutValue.cxx:116
 AliRsnCutValue.cxx:117
 AliRsnCutValue.cxx:118