Changed scripts for new TrainSetup
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / AliRsnValue.cxx
CommitLineData
7356f978 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16////////////////////////////////////////////////////////////////////////////////
b9bbd271 17//
7356f978 18// This class contains all code which is used to compute any of the values
19// which can be of interest within a resonance analysis. Besides the obvious
20// invariant mass, it allows to compute other utility values on all possible
21// targets, in order to allow a wide spectrum of binning and checks.
22// When needed, this object can also define a binning in the variable which
23// it is required to compute, which is used for initializing axes of output
24// histograms (see AliRsnFunction).
25// The value computation requires this object to be passed the object whose
26// informations will be used. This object can be of any allowed input type
27// (track, pair, event), then this class must inherit from AliRsnTarget.
28// Then, when value computation is attempted, a check on target type is done
29// and computation is successful only if expected target matches that of the
30// passed object.
31// In some cases, the value computation can require a support external object,
32// which must then be passed to this class. It can be of any type inheriting
33// from TObject.
b9bbd271 34//
7356f978 35// authors: A. Pulvirenti (alberto.pulvirenti@ct.infn.it)
36// M. Vala (martin.vala@cern.ch)
b9bbd271 37//
7356f978 38////////////////////////////////////////////////////////////////////////////////
b9bbd271 39
32992791 40#include "AliESDtrackCuts.h"
99261e24 41#include "AliESDpid.h"
42#include "AliAODPid.h"
092b1805 43#include "AliCentrality.h"
99261e24 44
b9bbd271 45#include "AliRsnEvent.h"
46#include "AliRsnDaughter.h"
2dab9030 47#include "AliRsnMother.h"
b9bbd271 48#include "AliRsnPairDef.h"
11ed73f6 49#include "AliRsnDaughterDef.h"
b9bbd271 50
51#include "AliRsnValue.h"
52
53ClassImp(AliRsnValue)
54
55//_____________________________________________________________________________
f34f960b 56AliRsnValue::AliRsnValue(const char *name, AliRsnTarget::ETargetType type) :
57 AliRsnTarget(name, type),
58 fUseMCInfo(kFALSE),
2a1c7696 59 fComputedValue(0.0),
c865cb1d 60 fBinArray(0)
2dab9030 61{
62//
f34f960b 63// Constructor.
64// Initializes the binning to an empty array.
2dab9030 65//
b9bbd271 66}
67
68//_____________________________________________________________________________
61f275d1 69AliRsnValue::AliRsnValue(const AliRsnValue &copy) :
2a1c7696 70 AliRsnTarget(copy),
f34f960b 71 fUseMCInfo(copy.fUseMCInfo),
2a1c7696 72 fComputedValue(copy.fComputedValue),
c865cb1d 73 fBinArray(copy.fBinArray)
52944696 74{
75//
32992791 76// Copy constructor.
77// Duplicates the binning array and copies all settings.
52944696 78//
79}
80
81//_____________________________________________________________________________
61f275d1 82AliRsnValue &AliRsnValue::operator=(const AliRsnValue &copy)
52944696 83{
84//
32992791 85// Assignment operator.
86// Works like copy constructor.
52944696 87//
88
2a1c7696 89 AliRsnTarget::operator=(copy);
e6f3a909 90 if (this == &copy)
61f275d1 91 return *this;
f34f960b 92 fUseMCInfo = copy.fUseMCInfo;
2a1c7696 93 fComputedValue = copy.fComputedValue;
94 fBinArray = copy.fBinArray;
2a1c7696 95
96 return (*this);
52944696 97}
98
99//_____________________________________________________________________________
b2b08ca2 100void AliRsnValue::SetBins(Int_t nbins, Double_t min, Double_t max)
b9bbd271 101{
102//
b2b08ca2 103// Set binning for the axis in equally spaced bins
104// where the number of bins, minimum and maximum are given.
105//
106
2a1c7696 107 if (!nbins) {
108 fBinArray.Set(0);
109 return;
110 }
111
112 fBinArray.Set(nbins + 1);
113
114 Double_t mymax = TMath::Max(min, max);
115 Double_t mymin = TMath::Min(min, max);
116
117 Int_t k = 0;
118 Double_t binSize = (mymax - mymin) / ((Double_t)nbins);
119
120 fBinArray[0] = mymin;
121 for (k = 1; k <= nbins; k++) fBinArray[k] = fBinArray[k - 1] + binSize;
2dab9030 122}
123
124//_____________________________________________________________________________
b2b08ca2 125void AliRsnValue::SetBins(Double_t min, Double_t max, Double_t step)
2dab9030 126{
127//
b2b08ca2 128// Set binning for the axis in equally spaced bins
129// where the bin size, minimum and maximum are given.
2dab9030 130//
131
2a1c7696 132 Double_t dblNbins = TMath::Abs(max - min) / step;
f31a444b 133 Int_t intNbins = (Int_t) (dblNbins + 0.5);
2a1c7696 134
135 SetBins(intNbins, min, max);
b9bbd271 136}
137
138//_____________________________________________________________________________
b2b08ca2 139void AliRsnValue::SetBins(Int_t nbins, Double_t *array)
2dab9030 140{
141//
b2b08ca2 142// Set binning for the axis in unequally spaced bins
143// using the same way it is done in TAxis
2dab9030 144//
145
2a1c7696 146 if (!nbins) {
147 fBinArray.Set(0);
148 return;
149 }
150
d7712d44 151 Int_t i;
152 fBinArray.Set(nbins);
153 for (i = 0; i < nbins; i++) fBinArray[i] = array[i];
32992791 154}
155
156//_____________________________________________________________________________
f34f960b 157Bool_t AliRsnValue::Eval(TObject *)
b9bbd271 158{
159//
160// Evaluation of the required value.
161// Checks that the passed object is of the right type
32992791 162// and if this check is successful, computes the required value.
163// The output of the function tells if computing was successful,
b9bbd271 164// and the values must be taken with GetValue().
165//
166
c865cb1d 167 AliWarning("This method must be overridden by derived classes");
168 return kTRUE;
b9bbd271 169}
c18b1218 170
171//_____________________________________________________________________________
c865cb1d 172void AliRsnValue::Print(Option_t *option) const
69fbb331 173{
174//
f34f960b 175// Print informations about this object.
176// If one specifies option "BINS" all bin limits are also printed.
69fbb331 177//
178
2a1c7696 179 AliInfo("=== VALUE INFO =================================================");
180 AliInfo(Form(" Name : %s", GetName()));
2a1c7696 181 AliInfo(Form(" Current computed value: %f", fComputedValue));
c865cb1d 182 if (!strcmp(option, "BINS")) {
183 Int_t i;
184 for (i = 0; i < fBinArray.GetSize(); i++) {
185 AliInfo(Form(" Bin limit #%03d = %f", i, fBinArray[i]));
186 }
2a1c7696 187 }
eaa44581 188}