#include <TList.h>
#include <TObjString.h>
#include "AliAnalysisManager.h"
#include "AliMixInputEventHandler.h"
#include "AliAnalysisTaskMixInfo.h"
#include "AliMixInfo.h"
#include "AliMixEventPool.h"
#include "AliMixEventCutObj.h"
ClassImp(AliAnalysisTaskMixInfo)
AliAnalysisTaskMixInfo::AliAnalysisTaskMixInfo(const char *name)
: AliAnalysisTaskSE(name),
fInputEHMain(0),
fInputEHMix(0),
fOutputList(0),
fMixInfo(0),
fCurrentEntryTmp(-1),
fLogType(AliLog::kInfo),
fLogClassesString()
{
DefineOutput(1, TList::Class());
}
AliAnalysisTaskMixInfo::~AliAnalysisTaskMixInfo()
{
if (fOutputList && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) delete fOutputList;
}
void AliAnalysisTaskMixInfo::UserCreateOutputObjects()
{
SetDebugForAllClasses();
fOutputList = new TList();
fOutputList->SetOwner(kTRUE);
InitInputHandlers();
InitMixInfo();
if (fInputEHMix) {
AliMixEventPool *evPool = fInputEHMix->GetEventPool();
if (evPool) {
evPool->SetBufferSize(fInputEHMix->BufferSize());
evPool->SetMixNumber(fInputEHMix->MixNumber());
fMixInfo->SetEventPool(evPool);
}
}
if (fMixInfo) fOutputList->Add(fMixInfo);
PostData(1, fOutputList);
}
void AliAnalysisTaskMixInfo::UserExec(Option_t *)
{
if (fMixInfo && fInputEHMix) {
if (fInputEHMix->BufferSize() > 1) {
if (fInputEHMix->NumberMixedTimes() >= fInputEHMix->BufferSize())
fMixInfo->FillHistogram(AliMixInfo::kMainEvents, fInputEHMix->CurrentBinIndex());
} else {
if ((!fInputEHMix->IsMixingIfNotEnoughEvents())) {
if (fInputEHMix->NumberMixed() == fInputEHMix->MixNumber())
fMixInfo->FillHistogram(AliMixInfo::kMainEvents, fInputEHMix->CurrentBinIndex());
} else {
fMixInfo->FillHistogram(AliMixInfo::kMainEvents, fInputEHMix->CurrentBinIndex());
}
}
AliDebug(AliLog::kDebug, Form("Main %lld %d [%lld,%lld] %d", fInputEHMix->CurrentEntry(), fInputEHMix->CurrentBinIndex(), fInputEHMix->CurrentEntryMain(), fInputEHMix->CurrentEntryMix(), fInputEHMix->NumberMixed()));
}
PostData(1, fOutputList);
}
void AliAnalysisTaskMixInfo::UserExecMix(Option_t *)
{
if (!fInputEHMix) return;
if (fMixInfo) {
if (fInputEHMix->CurrentBinIndex()==-1) {
fMixInfo->FillHistogram(AliMixInfo::kMixedEvents, fInputEHMix->CurrentBinIndex());
} else {
for(Int_t iBuff=0; iBuff<fInputEHMix->BufferSize(); iBuff++) {
fMixInfo->FillHistogram(AliMixInfo::kMixedEvents, fInputEHMix->CurrentBinIndex());
}
}
}
if (fInputEHMix->CurrentEntryMix() < 0) {
AliError("Mix entry is -1 and it should not happen !!!!!");
return ;
}
AliDebug(AliLog::kDebug, Form("Mixing %lld %d [%lld,%lld] %d", fInputEHMix->CurrentEntry(), fInputEHMix->CurrentBinIndex(), fInputEHMix->CurrentEntryMain(), fInputEHMix->CurrentEntryMix(), fInputEHMix->NumberMixed()));
if (AliLog::GetDebugLevel("", IsA()->GetName()) > AliLog::kDebug) PrintEventInfo();
PostData(1, fOutputList);
}
void AliAnalysisTaskMixInfo::FinishTaskOutput()
{
if (fMixInfo) fMixInfo->Print();
}
void AliAnalysisTaskMixInfo::Terminate(Option_t *)
{
fOutputList = dynamic_cast<TList *>(GetOutputData(1));
if (!fOutputList) {
AliError("fOutputList not available");
return;
}
fOutputList->Print();
fMixInfo = (AliMixInfo *) fOutputList->FindObject("mixInfo");
if (fMixInfo) {
fMixInfo->Draw("HIST");
AliMixEventPool *evPool = (AliMixEventPool *) fMixInfo->GetEventPool("mixEventPool");
if (evPool) evPool->Print();
}
}
void AliAnalysisTaskMixInfo::SetLogType(AliLog::EType_t type, TString allClasses)
{
AliDebug(AliLog::kDebug + 10, "<-");
fLogType = type;
fLogClassesString = allClasses;
SetDebugForAllClasses();
AliDebug(AliLog::kDebug + 10, "->");
}
void AliAnalysisTaskMixInfo::SetDebugForAllClasses()
{
AliDebug(AliLog::kDebug + 10, "<-");
TObjArray *array = fLogClassesString.Tokenize(":");
TObjString *str;
TString strr;
for (Int_t i = 0; i < array->GetEntriesFast(); i++) {
str = (TObjString *) array->At(i);
strr = str->GetString();
AliLog::SetClassDebugLevel(strr.Data(), fLogType);
AliDebug(AliLog::kDebug + 5, Form("Setting Debug level %d to %s ...", (Int_t)fLogType - AliLog::kDebug, strr.Data()));
}
delete array;
AliDebug(AliLog::kDebug + 10, "->");
}
void AliAnalysisTaskMixInfo::InitMixInfo()
{
if (fInputEHMix) {
fMixInfo = new AliMixInfo("mixInfo", "Mix title");
AliMixEventPool *evPool = fInputEHMix->GetEventPool();
if (!evPool) {
if (fMixInfo) fMixInfo->CreateHistogram(AliMixInfo::kMainEvents, 1, 1, 2);
if (fMixInfo) fMixInfo->CreateHistogram(AliMixInfo::kMixedEvents, 1, 1, 2);
} else {
if (evPool->NeedInit()) evPool->Init();
Int_t num = evPool->GetListOfEntryLists()->GetEntriesFast();
if (fMixInfo) fMixInfo->CreateHistogram(AliMixInfo::kMainEvents, num, 1, num + 1);
if (fMixInfo) fMixInfo->CreateHistogram(AliMixInfo::kMixedEvents, num, 1, num + 1);
}
}
}
void AliAnalysisTaskMixInfo::PrintEventInfo()
{
if (fInputEHMix) {
TObjArrayIter next(fInputEHMix->GetEventPool()->GetListOfEventCuts());
AliMixEventCutObj *cut;
AliInputEventHandler *ihMain = fInputEHMain->GetFirstInputEventHandler();
AliMultiInputEventHandler *ihMultiMix = fInputEHMix->GetFirstMultiInputHandler();
AliInputEventHandler *ihMix = 0;
if (ihMultiMix) ihMix = ihMultiMix->GetFirstInputEventHandler();
if (!ihMix) return;
while ((cut = (AliMixEventCutObj *) next())) {
cut->PrintValues(ihMain->GetEvent(), ihMix->GetEvent());
}
}
}
void AliAnalysisTaskMixInfo::InitInputHandlers()
{
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
fInputEHMain = dynamic_cast<AliMultiInputEventHandler *>(mgr->GetInputEventHandler());
if (fInputEHMain) {
fInputEHMix = dynamic_cast<AliMixInputEventHandler *>(fInputEHMain->GetFirstMultiInputHandler());
}
}
AliAnalysisTaskMixInfo.cxx:1 AliAnalysisTaskMixInfo.cxx:2 AliAnalysisTaskMixInfo.cxx:3 AliAnalysisTaskMixInfo.cxx:4 AliAnalysisTaskMixInfo.cxx:5 AliAnalysisTaskMixInfo.cxx:6 AliAnalysisTaskMixInfo.cxx:7 AliAnalysisTaskMixInfo.cxx:8 AliAnalysisTaskMixInfo.cxx:9 AliAnalysisTaskMixInfo.cxx:10 AliAnalysisTaskMixInfo.cxx:11 AliAnalysisTaskMixInfo.cxx:12 AliAnalysisTaskMixInfo.cxx:13 AliAnalysisTaskMixInfo.cxx:14 AliAnalysisTaskMixInfo.cxx:15 AliAnalysisTaskMixInfo.cxx:16 AliAnalysisTaskMixInfo.cxx:17 AliAnalysisTaskMixInfo.cxx:18 AliAnalysisTaskMixInfo.cxx:19 AliAnalysisTaskMixInfo.cxx:20 AliAnalysisTaskMixInfo.cxx:21 AliAnalysisTaskMixInfo.cxx:22 AliAnalysisTaskMixInfo.cxx:23 AliAnalysisTaskMixInfo.cxx:24 AliAnalysisTaskMixInfo.cxx:25 AliAnalysisTaskMixInfo.cxx:26 AliAnalysisTaskMixInfo.cxx:27 AliAnalysisTaskMixInfo.cxx:28 AliAnalysisTaskMixInfo.cxx:29 AliAnalysisTaskMixInfo.cxx:30 AliAnalysisTaskMixInfo.cxx:31 AliAnalysisTaskMixInfo.cxx:32 AliAnalysisTaskMixInfo.cxx:33 AliAnalysisTaskMixInfo.cxx:34 AliAnalysisTaskMixInfo.cxx:35 AliAnalysisTaskMixInfo.cxx:36 AliAnalysisTaskMixInfo.cxx:37 AliAnalysisTaskMixInfo.cxx:38 AliAnalysisTaskMixInfo.cxx:39 AliAnalysisTaskMixInfo.cxx:40 AliAnalysisTaskMixInfo.cxx:41 AliAnalysisTaskMixInfo.cxx:42 AliAnalysisTaskMixInfo.cxx:43 AliAnalysisTaskMixInfo.cxx:44 AliAnalysisTaskMixInfo.cxx:45 AliAnalysisTaskMixInfo.cxx:46 AliAnalysisTaskMixInfo.cxx:47 AliAnalysisTaskMixInfo.cxx:48 AliAnalysisTaskMixInfo.cxx:49 AliAnalysisTaskMixInfo.cxx:50 AliAnalysisTaskMixInfo.cxx:51 AliAnalysisTaskMixInfo.cxx:52 AliAnalysisTaskMixInfo.cxx:53 AliAnalysisTaskMixInfo.cxx:54 AliAnalysisTaskMixInfo.cxx:55 AliAnalysisTaskMixInfo.cxx:56 AliAnalysisTaskMixInfo.cxx:57 AliAnalysisTaskMixInfo.cxx:58 AliAnalysisTaskMixInfo.cxx:59 AliAnalysisTaskMixInfo.cxx:60 AliAnalysisTaskMixInfo.cxx:61 AliAnalysisTaskMixInfo.cxx:62 AliAnalysisTaskMixInfo.cxx:63 AliAnalysisTaskMixInfo.cxx:64 AliAnalysisTaskMixInfo.cxx:65 AliAnalysisTaskMixInfo.cxx:66 AliAnalysisTaskMixInfo.cxx:67 AliAnalysisTaskMixInfo.cxx:68 AliAnalysisTaskMixInfo.cxx:69 AliAnalysisTaskMixInfo.cxx:70 AliAnalysisTaskMixInfo.cxx:71 AliAnalysisTaskMixInfo.cxx:72 AliAnalysisTaskMixInfo.cxx:73 AliAnalysisTaskMixInfo.cxx:74 AliAnalysisTaskMixInfo.cxx:75 AliAnalysisTaskMixInfo.cxx:76 AliAnalysisTaskMixInfo.cxx:77 AliAnalysisTaskMixInfo.cxx:78 AliAnalysisTaskMixInfo.cxx:79 AliAnalysisTaskMixInfo.cxx:80 AliAnalysisTaskMixInfo.cxx:81 AliAnalysisTaskMixInfo.cxx:82 AliAnalysisTaskMixInfo.cxx:83 AliAnalysisTaskMixInfo.cxx:84 AliAnalysisTaskMixInfo.cxx:85 AliAnalysisTaskMixInfo.cxx:86 AliAnalysisTaskMixInfo.cxx:87 AliAnalysisTaskMixInfo.cxx:88 AliAnalysisTaskMixInfo.cxx:89 AliAnalysisTaskMixInfo.cxx:90 AliAnalysisTaskMixInfo.cxx:91 AliAnalysisTaskMixInfo.cxx:92 AliAnalysisTaskMixInfo.cxx:93 AliAnalysisTaskMixInfo.cxx:94 AliAnalysisTaskMixInfo.cxx:95 AliAnalysisTaskMixInfo.cxx:96 AliAnalysisTaskMixInfo.cxx:97 AliAnalysisTaskMixInfo.cxx:98 AliAnalysisTaskMixInfo.cxx:99 AliAnalysisTaskMixInfo.cxx:100 AliAnalysisTaskMixInfo.cxx:101 AliAnalysisTaskMixInfo.cxx:102 AliAnalysisTaskMixInfo.cxx:103 AliAnalysisTaskMixInfo.cxx:104 AliAnalysisTaskMixInfo.cxx:105 AliAnalysisTaskMixInfo.cxx:106 AliAnalysisTaskMixInfo.cxx:107 AliAnalysisTaskMixInfo.cxx:108 AliAnalysisTaskMixInfo.cxx:109 AliAnalysisTaskMixInfo.cxx:110 AliAnalysisTaskMixInfo.cxx:111 AliAnalysisTaskMixInfo.cxx:112 AliAnalysisTaskMixInfo.cxx:113 AliAnalysisTaskMixInfo.cxx:114 AliAnalysisTaskMixInfo.cxx:115 AliAnalysisTaskMixInfo.cxx:116 AliAnalysisTaskMixInfo.cxx:117 AliAnalysisTaskMixInfo.cxx:118 AliAnalysisTaskMixInfo.cxx:119 AliAnalysisTaskMixInfo.cxx:120 AliAnalysisTaskMixInfo.cxx:121 AliAnalysisTaskMixInfo.cxx:122 AliAnalysisTaskMixInfo.cxx:123 AliAnalysisTaskMixInfo.cxx:124 AliAnalysisTaskMixInfo.cxx:125 AliAnalysisTaskMixInfo.cxx:126 AliAnalysisTaskMixInfo.cxx:127 AliAnalysisTaskMixInfo.cxx:128 AliAnalysisTaskMixInfo.cxx:129 AliAnalysisTaskMixInfo.cxx:130 AliAnalysisTaskMixInfo.cxx:131 AliAnalysisTaskMixInfo.cxx:132 AliAnalysisTaskMixInfo.cxx:133 AliAnalysisTaskMixInfo.cxx:134 AliAnalysisTaskMixInfo.cxx:135 AliAnalysisTaskMixInfo.cxx:136 AliAnalysisTaskMixInfo.cxx:137 AliAnalysisTaskMixInfo.cxx:138 AliAnalysisTaskMixInfo.cxx:139 AliAnalysisTaskMixInfo.cxx:140 AliAnalysisTaskMixInfo.cxx:141 AliAnalysisTaskMixInfo.cxx:142 AliAnalysisTaskMixInfo.cxx:143 AliAnalysisTaskMixInfo.cxx:144 AliAnalysisTaskMixInfo.cxx:145 AliAnalysisTaskMixInfo.cxx:146 AliAnalysisTaskMixInfo.cxx:147 AliAnalysisTaskMixInfo.cxx:148 AliAnalysisTaskMixInfo.cxx:149 AliAnalysisTaskMixInfo.cxx:150 AliAnalysisTaskMixInfo.cxx:151 AliAnalysisTaskMixInfo.cxx:152 AliAnalysisTaskMixInfo.cxx:153 AliAnalysisTaskMixInfo.cxx:154 AliAnalysisTaskMixInfo.cxx:155 AliAnalysisTaskMixInfo.cxx:156 AliAnalysisTaskMixInfo.cxx:157 AliAnalysisTaskMixInfo.cxx:158 AliAnalysisTaskMixInfo.cxx:159 AliAnalysisTaskMixInfo.cxx:160 AliAnalysisTaskMixInfo.cxx:161 AliAnalysisTaskMixInfo.cxx:162 AliAnalysisTaskMixInfo.cxx:163 AliAnalysisTaskMixInfo.cxx:164 AliAnalysisTaskMixInfo.cxx:165 AliAnalysisTaskMixInfo.cxx:166 AliAnalysisTaskMixInfo.cxx:167 AliAnalysisTaskMixInfo.cxx:168 AliAnalysisTaskMixInfo.cxx:169 AliAnalysisTaskMixInfo.cxx:170 AliAnalysisTaskMixInfo.cxx:171 AliAnalysisTaskMixInfo.cxx:172 AliAnalysisTaskMixInfo.cxx:173 AliAnalysisTaskMixInfo.cxx:174 AliAnalysisTaskMixInfo.cxx:175 AliAnalysisTaskMixInfo.cxx:176 AliAnalysisTaskMixInfo.cxx:177 AliAnalysisTaskMixInfo.cxx:178 AliAnalysisTaskMixInfo.cxx:179 AliAnalysisTaskMixInfo.cxx:180 AliAnalysisTaskMixInfo.cxx:181 AliAnalysisTaskMixInfo.cxx:182 AliAnalysisTaskMixInfo.cxx:183 AliAnalysisTaskMixInfo.cxx:184 AliAnalysisTaskMixInfo.cxx:185 AliAnalysisTaskMixInfo.cxx:186 AliAnalysisTaskMixInfo.cxx:187 AliAnalysisTaskMixInfo.cxx:188 AliAnalysisTaskMixInfo.cxx:189 AliAnalysisTaskMixInfo.cxx:190 AliAnalysisTaskMixInfo.cxx:191 AliAnalysisTaskMixInfo.cxx:192 AliAnalysisTaskMixInfo.cxx:193 AliAnalysisTaskMixInfo.cxx:194 AliAnalysisTaskMixInfo.cxx:195 AliAnalysisTaskMixInfo.cxx:196 AliAnalysisTaskMixInfo.cxx:197 AliAnalysisTaskMixInfo.cxx:198 AliAnalysisTaskMixInfo.cxx:199 AliAnalysisTaskMixInfo.cxx:200 AliAnalysisTaskMixInfo.cxx:201 AliAnalysisTaskMixInfo.cxx:202 AliAnalysisTaskMixInfo.cxx:203 AliAnalysisTaskMixInfo.cxx:204 AliAnalysisTaskMixInfo.cxx:205 AliAnalysisTaskMixInfo.cxx:206 AliAnalysisTaskMixInfo.cxx:207 AliAnalysisTaskMixInfo.cxx:208 AliAnalysisTaskMixInfo.cxx:209 AliAnalysisTaskMixInfo.cxx:210 AliAnalysisTaskMixInfo.cxx:211 AliAnalysisTaskMixInfo.cxx:212 AliAnalysisTaskMixInfo.cxx:213 AliAnalysisTaskMixInfo.cxx:214 AliAnalysisTaskMixInfo.cxx:215 AliAnalysisTaskMixInfo.cxx:216 AliAnalysisTaskMixInfo.cxx:217 AliAnalysisTaskMixInfo.cxx:218 AliAnalysisTaskMixInfo.cxx:219 AliAnalysisTaskMixInfo.cxx:220 AliAnalysisTaskMixInfo.cxx:221 AliAnalysisTaskMixInfo.cxx:222 AliAnalysisTaskMixInfo.cxx:223 AliAnalysisTaskMixInfo.cxx:224 AliAnalysisTaskMixInfo.cxx:225 AliAnalysisTaskMixInfo.cxx:226 AliAnalysisTaskMixInfo.cxx:227 AliAnalysisTaskMixInfo.cxx:228 AliAnalysisTaskMixInfo.cxx:229 AliAnalysisTaskMixInfo.cxx:230 AliAnalysisTaskMixInfo.cxx:231 AliAnalysisTaskMixInfo.cxx:232 AliAnalysisTaskMixInfo.cxx:233 AliAnalysisTaskMixInfo.cxx:234 AliAnalysisTaskMixInfo.cxx:235 AliAnalysisTaskMixInfo.cxx:236 AliAnalysisTaskMixInfo.cxx:237 AliAnalysisTaskMixInfo.cxx:238 AliAnalysisTaskMixInfo.cxx:239 AliAnalysisTaskMixInfo.cxx:240 AliAnalysisTaskMixInfo.cxx:241 AliAnalysisTaskMixInfo.cxx:242 AliAnalysisTaskMixInfo.cxx:243 AliAnalysisTaskMixInfo.cxx:244 AliAnalysisTaskMixInfo.cxx:245 AliAnalysisTaskMixInfo.cxx:246 AliAnalysisTaskMixInfo.cxx:247 AliAnalysisTaskMixInfo.cxx:248 AliAnalysisTaskMixInfo.cxx:249 AliAnalysisTaskMixInfo.cxx:250 AliAnalysisTaskMixInfo.cxx:251 AliAnalysisTaskMixInfo.cxx:252 AliAnalysisTaskMixInfo.cxx:253