2 // Class AliMixEventCutObj
4 // AliMixEventCutObj object contains information about one cut on for event mixing
5 // used by AliMixEventPool class
8 // Martin Vala (martin.vala@cern.ch)
12 #include "AliESDEvent.h"
13 #include "AliAODEvent.h"
14 #include "AliMultiplicity.h"
16 #include "AliMixEventCutObj.h"
18 ClassImp(AliMixEventCutObj)
20 //_________________________________________________________________________________________________
21 AliMixEventCutObj::AliMixEventCutObj(EEPAxis_t type, Float_t min, Float_t max, Float_t step) : TObject(),
22 fCutType((Short_t)type),
26 fCutSmallVal((max - min) / (step*1e6)),
30 // Default constructor.
33 AliDebug(AliLog::kDebug + 2, "<-");
35 AliDebug(AliLog::kDebug + 2, "->");
37 //_________________________________________________________________________________________________
38 AliMixEventCutObj::AliMixEventCutObj(const AliMixEventCutObj& obj) : TObject(obj),
39 fCutType(obj.fCutType),
42 fCutStep(obj.fCutStep),
43 fCutSmallVal(obj.fCutSmallVal),
44 fCurrentVal(obj.fCurrentVal),
45 fNoMore(obj.fNoMore) {
51 //_________________________________________________________________________________________________
52 void AliMixEventCutObj::Reset() {
57 AliDebug(AliLog::kDebug + 2, "<-");
58 fCurrentVal = fCutMin - fCutStep;
60 AliDebug(AliLog::kDebug + 2, "->");
62 //_________________________________________________________________________________________________
63 Bool_t AliMixEventCutObj::HasMore() const {
65 // Return kTRUE when fCurrentVal is in interval of cut range
68 return ((fCurrentVal + fCutStep) < fCutMax);
71 //_________________________________________________________________________________________________
72 void AliMixEventCutObj::AddStep() {
77 fCurrentVal += fCutStep;
80 //_________________________________________________________________________________________________
81 void AliMixEventCutObj::Print(const Option_t *) const {
83 // Prints cut information
86 AliInfo(Form("%d %f %f %f", fCutType, fCutMin, fCutMax, fCutStep));
88 //_________________________________________________________________________________________________
89 void AliMixEventCutObj::PrintCurrentInterval() {
91 // Prints current cut interval information
94 AliInfo(Form("%s <%f,%f>", GetNameOfCut(fCutType), GetMin(), GetMax()));
97 //_________________________________________________________________________________________________
98 Int_t AliMixEventCutObj::GetNumberOfBins() const {
100 // Returns number of bins
103 if (!fCutStep) return -1;
104 return (Int_t)((fCutMax -fCutMin) / fCutStep);
107 //_________________________________________________________________________________________________
108 Int_t AliMixEventCutObj::GetBinNumber(Float_t num) const {
110 // Returns bin (index) number in current cut.
111 // Returns -1 in case of out of range
115 for (Float_t i = fCutMin;i <= fCutMax - fCutSmallVal;i += fCutStep) {
117 if ((num >= i) && (num <= i + fCutStep - fCutSmallVal)) return binNum;
123 //_________________________________________________________________________________________________
124 Int_t AliMixEventCutObj::GetIndex(AliVEvent* ev) {
126 // Finds bin (index) in current cut from event information.
129 AliESDEvent *esd = dynamic_cast<AliESDEvent*>(ev);
130 if (esd) return GetIndex(esd);
131 AliAODEvent *aod = dynamic_cast<AliAODEvent*>(ev);
132 if (aod) return GetIndex(aod);
136 //_________________________________________________________________________________________________
137 Int_t AliMixEventCutObj::GetIndex(AliESDEvent* ev) {
139 // Finds bin (index) in current cut from ESD event information.
143 return GetBinNumber((Float_t)ev->GetNumberOfTracks());
145 return GetBinNumber(ev->GetVertex()->GetZ());
147 return GetBinNumber(ev->GetNumberOfV0s());
148 case kNumberTracklets:
149 const AliMultiplicity* multESD = ev->GetMultiplicity();
150 return GetBinNumber(multESD->GetNumberOfTracklets());
155 //_________________________________________________________________________________________________
156 Int_t AliMixEventCutObj::GetIndex(AliAODEvent* ev) {
158 // Finds bin (index) in current cut from AOD event information.
162 return GetBinNumber((Float_t)ev->GetNumberOfTracks());
164 return GetBinNumber(ev->GetVertex(0)->GetZ());
166 return GetBinNumber(ev->GetNumberOfV0s());
170 //_________________________________________________________________________________________________
171 const char* AliMixEventCutObj::GetNameOfCut(Short_t index) const
174 // Retruns name of cut
176 switch ((Int_t)index) {
178 return "Multiplicity";
183 case kNumberTracklets:
184 return "NumberTracklets";