#include "AliLog.h"
#include "AliESDEvent.h"
#include "AliAODEvent.h"
#include "AliMultiplicity.h"
#include "AliAODVertex.h"
#include "AliEventplane.h"
#include "AliMixEventCutObj.h"
ClassImp(AliMixEventCutObj)
AliMixEventCutObj::AliMixEventCutObj(AliMixEventCutObj::EEPAxis_t type, Float_t min, Float_t max, Float_t step, const char *opt) : TObject(),
fCutType((Int_t)type),
fCutOpt(opt),
fCutMin(min),
fCutMax(max),
fCutStep(step),
fCutSmallVal(0),
fCurrentVal(min)
{
AliDebug(AliLog::kDebug + 5, "<-");
if (fCutStep < 1e-5) AliError("fCutStep is too small !!! This cut will not work !!!");
AliDebug(AliLog::kDebug + 5, "->");
}
AliMixEventCutObj::AliMixEventCutObj(const AliMixEventCutObj &obj) : TObject(obj),
fCutType(obj.fCutType),
fCutOpt(obj.fCutOpt),
fCutMin(obj.fCutMin),
fCutMax(obj.fCutMax),
fCutStep(obj.fCutStep),
fCutSmallVal(obj.fCutSmallVal),
fCurrentVal(obj.fCurrentVal)
{
AliDebug(AliLog::kDebug + 5, "<-");
AliDebug(AliLog::kDebug + 5, "->");
}
AliMixEventCutObj &AliMixEventCutObj::operator=(const AliMixEventCutObj &obj)
{
if (&obj != this) {
TObject::operator=(obj);
fCutType = obj.fCutType;
fCutOpt = obj.fCutOpt;
fCutMin = obj.fCutMin;
fCutMax = obj.fCutMax;
fCutStep = obj.fCutStep;
fCutSmallVal = obj.fCutSmallVal;
fCurrentVal = obj.fCurrentVal;
}
return *this;
}
void AliMixEventCutObj::Reset()
{
AliDebug(AliLog::kDebug + 5, "<-");
fCurrentVal = fCutMin - fCutStep;
AliDebug(AliLog::kDebug + 5, "->");
}
Bool_t AliMixEventCutObj::HasMore() const
{
return ((fCurrentVal + fCutStep) < fCutMax);
}
void AliMixEventCutObj::AddStep()
{
fCurrentVal += fCutStep;
}
void AliMixEventCutObj::Print(const Option_t *) const
{
AliInfo(Form("%s %f %f %f", GetCutName(fCutType), fCutMin, fCutMax, fCutStep));
}
void AliMixEventCutObj::PrintCurrentInterval()
{
AliDebug(AliLog::kDebug, Form("%s <%f,%f>", GetCutName(fCutType), GetCurrentMin(), GetCurrentMax()));
}
Int_t AliMixEventCutObj::GetNumberOfBins() const
{
if (fCutStep < 1e-5) return -1;
return (Int_t)((fCutMax - fCutMin) / fCutStep);
}
Int_t AliMixEventCutObj::GetBinNumber(Float_t num) const
{
Int_t binNum = 0;
for (Float_t iCurrent = fCutMin; iCurrent < fCutMax; iCurrent += fCutStep) {
binNum++;
if ((num >= iCurrent) && (num < iCurrent + fCutStep - fCutSmallVal)) {
return binNum;
}
}
return -1;
}
Int_t AliMixEventCutObj::GetIndex(AliVEvent *ev)
{
return GetBinNumber(GetValue(ev));
}
Double_t AliMixEventCutObj::GetValue(AliVEvent *ev)
{
AliESDEvent *esd = dynamic_cast<AliESDEvent *>(ev);
if (esd) return GetValue(esd);
AliAODEvent *aod = dynamic_cast<AliAODEvent *>(ev);
if (aod) return GetValue(aod);
AliFatal("Event is not supported in Event Mixing cuts!!!!");
return -99999;
}
Double_t AliMixEventCutObj::GetValue(AliESDEvent *ev)
{
const AliMultiplicity *multESD = 0;
switch (fCutType) {
case kMultiplicity:
return (Double_t)ev->GetNumberOfTracks();
case kZVertex:
return ev->GetVertex()->GetZ();
case kNumberV0s:
return ev->GetNumberOfV0s();
case kNumberTracklets:
multESD = ev->GetMultiplicity();
if (multESD) return multESD->GetNumberOfTracklets();
else AliFatal("esd->GetMultiplicity() is null");
break;
case kCentrality:
{
AliCentrality *c = ev->GetCentrality();
if (!c) AliFatal("esd->GetCentrality() is null");
return c->GetCentralityPercentile(fCutOpt.Data());
}
case kEventPlane:
{
AliEventplane *evtPlane = ev->GetEventplane();
if (!evtPlane) evtPlane = new AliEventplane();
Double_t val = evtPlane->GetEventplane("V0",ev,fCutOpt.Atoi());
if (!ev->GetEventplane()) delete evtPlane;
return val;
}
case kEventPlaneV0A:
{
AliEventplane *evtPlane = ev->GetEventplane();
if (!evtPlane) evtPlane = new AliEventplane();
Double_t val = evtPlane->GetEventplane("V0A",ev,fCutOpt.Atoi());
if (!ev->GetEventplane()) delete evtPlane;
return val;
}
case kEventPlaneV0C:
{
AliEventplane *evtPlane = ev->GetEventplane();
if (!evtPlane) evtPlane = new AliEventplane();
Double_t val = evtPlane->GetEventplane("V0C",ev,fCutOpt.Atoi());
if (!ev->GetEventplane()) delete evtPlane;
return val;
}
}
AliFatal("Mixing Cut TYPE is not supported for ESD");
return -99999;
}
Double_t AliMixEventCutObj::GetValue(AliAODEvent *ev)
{
AliAODVertex *v=0;
switch (fCutType) {
case kMultiplicity:
return (Double_t) ev->GetNumberOfTracks();
case kZVertex:
v = ev->GetVertex(0);
if (!v) return -99999;
return ev->GetVertex(0)->GetZ();
return -99999;
case kNumberV0s:
return ev->GetNumberOfV0s();
case kCentrality:
{
AliCentrality *c = ev->GetCentrality();
if (!c) AliFatal("esd->GetCentrality() is null");
return c->GetCentralityPercentile(fCutOpt.Data());
}
case kEventPlane:
{
AliEventplane *evtPlane = ev->GetEventplane();
if (!evtPlane) evtPlane = new AliEventplane();
Double_t val = evtPlane->GetEventplane("V0A",ev,fCutOpt.Atoi());
if (!ev->GetEventplane()) delete evtPlane;
return val;
}
case kEventPlaneV0A:
{
AliEventplane *evtPlane = ev->GetEventplane();
if (!evtPlane) evtPlane = new AliEventplane();
Double_t val = evtPlane->GetEventplane("V0A",ev,fCutOpt.Atoi());
if (!ev->GetEventplane()) delete evtPlane;
return val;
}
case kEventPlaneV0C:
{
AliEventplane *evtPlane = ev->GetEventplane();
if (!evtPlane) evtPlane = new AliEventplane();
Double_t val = evtPlane->GetEventplane("V0C",ev,fCutOpt.Atoi());
if (!ev->GetEventplane()) delete evtPlane;
return val;
}
}
AliFatal("Mixing Cut TYPE is not supported for AOD");
return -99999;
}
const char *AliMixEventCutObj::GetCutName(Int_t index) const
{
if (index < 0) index = fCutType;
switch (index) {
case kMultiplicity:
return "Multiplicity";
case kZVertex:
return "ZVertex";
case kNumberV0s:
return "NumberV0s";
case kNumberTracklets:
return "NumberTracklets";
case kCentrality:
return Form("kCentrality[%s]", fCutOpt.Data());
case kEventPlane:
return Form("EventPlane[%s]", fCutOpt.Data());
case kEventPlaneV0A:
return Form("EventPlaneV0A[%s]", fCutOpt.Data());
case kEventPlaneV0C:
return Form("EventPlaneV0A[%s]", fCutOpt.Data());
}
return "";
}
void AliMixEventCutObj::SetCurrentValueToIndex(Int_t index)
{
fCurrentVal = fCutMin;
for (Int_t i = 0; i < index-1; i++) AddStep();
}
void AliMixEventCutObj::PrintValues(AliVEvent *main, AliVEvent *mix)
{
AliInfo(Form("name=%s main=%f mix=%f", GetCutName(), GetValue(main), GetValue(mix)));
}
Bool_t AliMixEventCutObj::IsValid()
{
switch (fCutType) {
case kCentrality:
{
if (fCutOpt.IsNull()) {
AliError("fCutOpt is null");
return kFALSE;
}
break;
}
case kEventPlane:
{
if (fCutOpt.IsNull()) {
AliError("fCutOpt is null");
return kFALSE;
}
if (!fCutOpt.IsDigit()) {
AliError("fCutOpt is not a digit string");
return kFALSE;
}
break;
}
case kEventPlaneV0A:
{
if (fCutOpt.IsNull()) {
AliError("fCutOpt is null");
return kFALSE;
}
if (!fCutOpt.IsDigit()) {
AliError("fCutOpt is not a digit string");
return kFALSE;
}
break;
}
case kEventPlaneV0C:
{
if (fCutOpt.IsNull()) {
AliError("fCutOpt is null");
return kFALSE;
}
if (!fCutOpt.IsDigit()) {
AliError("fCutOpt is not a digit string");
return kFALSE;
}
break;
}
default: {
break;
}
}
return kTRUE;
}
AliMixEventCutObj.cxx:100 AliMixEventCutObj.cxx:101 AliMixEventCutObj.cxx:102 AliMixEventCutObj.cxx:103 AliMixEventCutObj.cxx:104 AliMixEventCutObj.cxx:105 AliMixEventCutObj.cxx:106 AliMixEventCutObj.cxx:107 AliMixEventCutObj.cxx:108 AliMixEventCutObj.cxx:109 AliMixEventCutObj.cxx:110 AliMixEventCutObj.cxx:111 AliMixEventCutObj.cxx:112 AliMixEventCutObj.cxx:113 AliMixEventCutObj.cxx:114 AliMixEventCutObj.cxx:115 AliMixEventCutObj.cxx:116 AliMixEventCutObj.cxx:117 AliMixEventCutObj.cxx:118 AliMixEventCutObj.cxx:119 AliMixEventCutObj.cxx:120 AliMixEventCutObj.cxx:121 AliMixEventCutObj.cxx:122 AliMixEventCutObj.cxx:123 AliMixEventCutObj.cxx:124 AliMixEventCutObj.cxx:125 AliMixEventCutObj.cxx:126 AliMixEventCutObj.cxx:127 AliMixEventCutObj.cxx:128 AliMixEventCutObj.cxx:129 AliMixEventCutObj.cxx:130 AliMixEventCutObj.cxx:131 AliMixEventCutObj.cxx:132 AliMixEventCutObj.cxx:133 AliMixEventCutObj.cxx:134 AliMixEventCutObj.cxx:135 AliMixEventCutObj.cxx:136 AliMixEventCutObj.cxx:137 AliMixEventCutObj.cxx:138 AliMixEventCutObj.cxx:139 AliMixEventCutObj.cxx:140 AliMixEventCutObj.cxx:141 AliMixEventCutObj.cxx:142 AliMixEventCutObj.cxx:143 AliMixEventCutObj.cxx:144 AliMixEventCutObj.cxx:145 AliMixEventCutObj.cxx:146 AliMixEventCutObj.cxx:147 AliMixEventCutObj.cxx:148 AliMixEventCutObj.cxx:149 AliMixEventCutObj.cxx:150 AliMixEventCutObj.cxx:151 AliMixEventCutObj.cxx:152 AliMixEventCutObj.cxx:153 AliMixEventCutObj.cxx:154 AliMixEventCutObj.cxx:155 AliMixEventCutObj.cxx:156 AliMixEventCutObj.cxx:157 AliMixEventCutObj.cxx:158 AliMixEventCutObj.cxx:159 AliMixEventCutObj.cxx:160 AliMixEventCutObj.cxx:161 AliMixEventCutObj.cxx:162 AliMixEventCutObj.cxx:163 AliMixEventCutObj.cxx:164 AliMixEventCutObj.cxx:165 AliMixEventCutObj.cxx:166 AliMixEventCutObj.cxx:167 AliMixEventCutObj.cxx:168 AliMixEventCutObj.cxx:169 AliMixEventCutObj.cxx:170 AliMixEventCutObj.cxx:171 AliMixEventCutObj.cxx:172 AliMixEventCutObj.cxx:173 AliMixEventCutObj.cxx:174 AliMixEventCutObj.cxx:175 AliMixEventCutObj.cxx:176 AliMixEventCutObj.cxx:177 AliMixEventCutObj.cxx:178 AliMixEventCutObj.cxx:179 AliMixEventCutObj.cxx:180 AliMixEventCutObj.cxx:181 AliMixEventCutObj.cxx:182 AliMixEventCutObj.cxx:183 AliMixEventCutObj.cxx:184 AliMixEventCutObj.cxx:185 AliMixEventCutObj.cxx:186 AliMixEventCutObj.cxx:187 AliMixEventCutObj.cxx:188 AliMixEventCutObj.cxx:189 AliMixEventCutObj.cxx:190 AliMixEventCutObj.cxx:191 AliMixEventCutObj.cxx:192 AliMixEventCutObj.cxx:193 AliMixEventCutObj.cxx:194 AliMixEventCutObj.cxx:195 AliMixEventCutObj.cxx:196 AliMixEventCutObj.cxx:197 AliMixEventCutObj.cxx:198 AliMixEventCutObj.cxx:199 AliMixEventCutObj.cxx:200 AliMixEventCutObj.cxx:201 AliMixEventCutObj.cxx:202 AliMixEventCutObj.cxx:203 AliMixEventCutObj.cxx:204 AliMixEventCutObj.cxx:205 AliMixEventCutObj.cxx:206 AliMixEventCutObj.cxx:207 AliMixEventCutObj.cxx:208 AliMixEventCutObj.cxx:209 AliMixEventCutObj.cxx:210 AliMixEventCutObj.cxx:211 AliMixEventCutObj.cxx:212 AliMixEventCutObj.cxx:213 AliMixEventCutObj.cxx:214 AliMixEventCutObj.cxx:215 AliMixEventCutObj.cxx:216 AliMixEventCutObj.cxx:217 AliMixEventCutObj.cxx:218 AliMixEventCutObj.cxx:219 AliMixEventCutObj.cxx:220 AliMixEventCutObj.cxx:221 AliMixEventCutObj.cxx:222 AliMixEventCutObj.cxx:223 AliMixEventCutObj.cxx:224 AliMixEventCutObj.cxx:225 AliMixEventCutObj.cxx:226 AliMixEventCutObj.cxx:227 AliMixEventCutObj.cxx:228 AliMixEventCutObj.cxx:229 AliMixEventCutObj.cxx:230 AliMixEventCutObj.cxx:231 AliMixEventCutObj.cxx:232 AliMixEventCutObj.cxx:233 AliMixEventCutObj.cxx:234 AliMixEventCutObj.cxx:235 AliMixEventCutObj.cxx:236 AliMixEventCutObj.cxx:237 AliMixEventCutObj.cxx:238 AliMixEventCutObj.cxx:239 AliMixEventCutObj.cxx:240 AliMixEventCutObj.cxx:241 AliMixEventCutObj.cxx:242 AliMixEventCutObj.cxx:243 AliMixEventCutObj.cxx:244 AliMixEventCutObj.cxx:245 AliMixEventCutObj.cxx:246 AliMixEventCutObj.cxx:247 AliMixEventCutObj.cxx:248 AliMixEventCutObj.cxx:249 AliMixEventCutObj.cxx:250 AliMixEventCutObj.cxx:251 AliMixEventCutObj.cxx:252 AliMixEventCutObj.cxx:253 AliMixEventCutObj.cxx:254 AliMixEventCutObj.cxx:255 AliMixEventCutObj.cxx:256 AliMixEventCutObj.cxx:257 AliMixEventCutObj.cxx:258 AliMixEventCutObj.cxx:259 AliMixEventCutObj.cxx:260 AliMixEventCutObj.cxx:261 AliMixEventCutObj.cxx:262 AliMixEventCutObj.cxx:263 AliMixEventCutObj.cxx:264 AliMixEventCutObj.cxx:265 AliMixEventCutObj.cxx:266 AliMixEventCutObj.cxx:267 AliMixEventCutObj.cxx:268 AliMixEventCutObj.cxx:269 AliMixEventCutObj.cxx:270 AliMixEventCutObj.cxx:271 AliMixEventCutObj.cxx:272 AliMixEventCutObj.cxx:273 AliMixEventCutObj.cxx:274 AliMixEventCutObj.cxx:275 AliMixEventCutObj.cxx:276 AliMixEventCutObj.cxx:277 AliMixEventCutObj.cxx:278 AliMixEventCutObj.cxx:279 AliMixEventCutObj.cxx:280 AliMixEventCutObj.cxx:281 AliMixEventCutObj.cxx:282 AliMixEventCutObj.cxx:283 AliMixEventCutObj.cxx:284 AliMixEventCutObj.cxx:285 AliMixEventCutObj.cxx:286 AliMixEventCutObj.cxx:287 AliMixEventCutObj.cxx:288 AliMixEventCutObj.cxx:289 AliMixEventCutObj.cxx:290 AliMixEventCutObj.cxx:291 AliMixEventCutObj.cxx:292 AliMixEventCutObj.cxx:293 AliMixEventCutObj.cxx:294 AliMixEventCutObj.cxx:295 AliMixEventCutObj.cxx:296 AliMixEventCutObj.cxx:297 AliMixEventCutObj.cxx:298 AliMixEventCutObj.cxx:299 AliMixEventCutObj.cxx:300 AliMixEventCutObj.cxx:301 AliMixEventCutObj.cxx:302 AliMixEventCutObj.cxx:303 AliMixEventCutObj.cxx:304 AliMixEventCutObj.cxx:305 AliMixEventCutObj.cxx:306 AliMixEventCutObj.cxx:307 AliMixEventCutObj.cxx:308 AliMixEventCutObj.cxx:309 AliMixEventCutObj.cxx:310 AliMixEventCutObj.cxx:311 AliMixEventCutObj.cxx:312 AliMixEventCutObj.cxx:313 AliMixEventCutObj.cxx:314 AliMixEventCutObj.cxx:315 AliMixEventCutObj.cxx:316 AliMixEventCutObj.cxx:317 AliMixEventCutObj.cxx:318 AliMixEventCutObj.cxx:319 AliMixEventCutObj.cxx:320 AliMixEventCutObj.cxx:321 AliMixEventCutObj.cxx:322 AliMixEventCutObj.cxx:323 AliMixEventCutObj.cxx:324 AliMixEventCutObj.cxx:325 AliMixEventCutObj.cxx:326 AliMixEventCutObj.cxx:327 AliMixEventCutObj.cxx:328 AliMixEventCutObj.cxx:329 AliMixEventCutObj.cxx:330 AliMixEventCutObj.cxx:331 AliMixEventCutObj.cxx:332 AliMixEventCutObj.cxx:333 AliMixEventCutObj.cxx:334 AliMixEventCutObj.cxx:335 AliMixEventCutObj.cxx:336 AliMixEventCutObj.cxx:337 AliMixEventCutObj.cxx:338 AliMixEventCutObj.cxx:339 AliMixEventCutObj.cxx:340 AliMixEventCutObj.cxx:341 AliMixEventCutObj.cxx:342 AliMixEventCutObj.cxx:343 AliMixEventCutObj.cxx:344 AliMixEventCutObj.cxx:345 AliMixEventCutObj.cxx:346 AliMixEventCutObj.cxx:347 AliMixEventCutObj.cxx:348 AliMixEventCutObj.cxx:349 AliMixEventCutObj.cxx:350 AliMixEventCutObj.cxx:351 AliMixEventCutObj.cxx:352 AliMixEventCutObj.cxx:353 AliMixEventCutObj.cxx:354 AliMixEventCutObj.cxx:355 AliMixEventCutObj.cxx:356 AliMixEventCutObj.cxx:357 AliMixEventCutObj.cxx:358 AliMixEventCutObj.cxx:359 AliMixEventCutObj.cxx:360 AliMixEventCutObj.cxx:361 AliMixEventCutObj.cxx:362 AliMixEventCutObj.cxx:363 AliMixEventCutObj.cxx:364 AliMixEventCutObj.cxx:365 AliMixEventCutObj.cxx:366 AliMixEventCutObj.cxx:367 AliMixEventCutObj.cxx:368 AliMixEventCutObj.cxx:369 AliMixEventCutObj.cxx:370 AliMixEventCutObj.cxx:371 AliMixEventCutObj.cxx:372 AliMixEventCutObj.cxx:373 AliMixEventCutObj.cxx:374 AliMixEventCutObj.cxx:375 AliMixEventCutObj.cxx:376 AliMixEventCutObj.cxx:377 AliMixEventCutObj.cxx:378 AliMixEventCutObj.cxx:379 AliMixEventCutObj.cxx:380 AliMixEventCutObj.cxx:381 AliMixEventCutObj.cxx:382 AliMixEventCutObj.cxx:383 AliMixEventCutObj.cxx:384 AliMixEventCutObj.cxx:385 AliMixEventCutObj.cxx:386 AliMixEventCutObj.cxx:387 AliMixEventCutObj.cxx:388 AliMixEventCutObj.cxx:389 AliMixEventCutObj.cxx:390 AliMixEventCutObj.cxx:391 AliMixEventCutObj.cxx:392 AliMixEventCutObj.cxx:393 AliMixEventCutObj.cxx:394 AliMixEventCutObj.cxx:395