]>
Commit | Line | Data |
---|---|---|
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 | ||
53 | ClassImp(AliRsnValue) | |
54 | ||
55 | //_____________________________________________________________________________ | |
f34f960b | 56 | AliRsnValue::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 | 69 | AliRsnValue::AliRsnValue(const AliRsnValue ©) : |
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 | 82 | AliRsnValue &AliRsnValue::operator=(const AliRsnValue ©) |
52944696 | 83 | { |
84 | // | |
32992791 | 85 | // Assignment operator. |
86 | // Works like copy constructor. | |
52944696 | 87 | // |
88 | ||
2a1c7696 | 89 | AliRsnTarget::operator=(copy); |
e6f3a909 | 90 | if (this == ©) |
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 | 100 | void 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 | 125 | void 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 | 139 | void 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 | 157 | Bool_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 | |
69fbb331 | 171 | //_____________________________________________________________________________ |
c865cb1d | 172 | void 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 | } |