#include <TEntryList.h>
#include "AliLog.h"
#include "AliAnalysisManager.h"
#include "AliMultiInputEventHandler.h"
#include "AliMixInputEventHandler.h"
#include "AliMCEventHandler.h"
#include "AliRsnEvent.h"
#include "AliRsnLoop.h"
#include "AliRsnInputHandler.h"
#include "AliRsnAnalysisTask.h"
ClassImp(AliRsnAnalysisTask)
AliRsnAnalysisTask::AliRsnAnalysisTask() :
AliAnalysisTaskSE(),
fOutput(0),
fRsnObjects(0),
fInputEHMain(0),
fInputEHMix(0),
fBigOutput(kFALSE)
{
}
AliRsnAnalysisTask::AliRsnAnalysisTask(const char *name) :
AliAnalysisTaskSE(name),
fOutput(0),
fRsnObjects(0),
fInputEHMain(0),
fInputEHMix(0),
fBigOutput(kFALSE)
{
DefineOutput(1, TList::Class());
}
AliRsnAnalysisTask::AliRsnAnalysisTask(const AliRsnAnalysisTask ©) :
AliAnalysisTaskSE(copy),
fOutput(0),
fRsnObjects(copy.fRsnObjects),
fInputEHMain(copy.fInputEHMain),
fInputEHMix(copy.fInputEHMix),
fBigOutput(copy.fBigOutput)
{
}
AliRsnAnalysisTask &AliRsnAnalysisTask::operator=(const AliRsnAnalysisTask ©)
{
AliAnalysisTaskSE::operator=(copy);
if (this == ©)
return *this;
fRsnObjects = copy.fRsnObjects;
fInputEHMain = copy.fInputEHMain;
fInputEHMix = copy.fInputEHMix;
fBigOutput = copy.fBigOutput;
return (*this);
}
AliRsnAnalysisTask::~AliRsnAnalysisTask()
{
if (fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
delete fOutput;
}
}
void AliRsnAnalysisTask::AddLoop(AliRsnLoop *obj)
{
fRsnObjects.Add(obj);
}
void AliRsnAnalysisTask::UserCreateOutputObjects()
{
InitInputHandlers();
if (fBigOutput) OpenFile(1);
fOutput = new TList();
fOutput->SetOwner();
TObjArrayIter next(&fRsnObjects);
AliRsnLoop *objLoop = 0x0;
while ( (objLoop = (AliRsnLoop *)next()) ) {
objLoop->Init(GetName(), fOutput);
}
if (fInputEHMain) {
TObjArrayIter nextIH(fInputEHMain->InputEventHandlers());
TObject *obj = 0x0;
AliRsnInputHandler *rsnIH;
AliRsnDaughterSelector *s;
TClonesArray *c;
AliRsnCutSet *cuts;
while ( (obj = nextIH()) ) {
if (obj->IsA() == AliRsnInputHandler::Class()) {
rsnIH = (AliRsnInputHandler *) obj;
s = rsnIH->GetSelector();
s->InitActions(fOutput);
c = s->GetCutSetC();
for (Int_t is = 0; is < c->GetEntries(); is++) {
cuts = (AliRsnCutSet *)c->At(is);
cuts->Init(fOutput);
}
}
}
}
PostData(1, fOutput);
}
void AliRsnAnalysisTask::UserExec(Option_t *)
{
AliRsnEvent *evMain = 0x0;
AliRsnInputHandler *rsnIH = 0x0;
if (fInputEHMain) {
TObjArrayIter next(fInputEHMain->InputEventHandlers());
TObject *obj = 0x0;
while ( (obj = next()) ) {
if (obj->IsA() == AliRsnInputHandler::Class()) {
rsnIH = (AliRsnInputHandler *)obj;
evMain = rsnIH->GetRsnEvent();
break;
}
}
}
if (!evMain) return;
TObjArrayIter next(&fRsnObjects);
AliRsnLoop *obj = 0x0;
while ( (obj = (AliRsnLoop *)next()) ) {
if (obj->IsMixed()) continue;
obj->DoLoop(evMain, rsnIH->GetSelector());
}
PostData(1, fOutput);
}
void AliRsnAnalysisTask::UserExecMix(Option_t *)
{
AliRsnEvent *evMain = 0x0;
AliRsnEvent *evMix = 0x0;
Int_t id = -1;
AliRsnInputHandler *rsnIH = 0x0, *rsnMixIH = 0x0;
if (fInputEHMain) {
TObjArrayIter next(fInputEHMain->InputEventHandlers());
TObject *obj = 0x0;
while ( (obj = next()) ) {
if (obj->IsA() == AliRsnInputHandler::Class()) {
rsnIH = (AliRsnInputHandler *)obj;
evMain = rsnIH->GetRsnEvent();
id = fInputEHMain->InputEventHandlers()->IndexOf(obj);
break;
}
}
}
if (!evMain) return;
AliMultiInputEventHandler *ihMultiMix = dynamic_cast<AliMultiInputEventHandler *>(fInputEHMix->InputEventHandler(0));
if (ihMultiMix) {
rsnMixIH = dynamic_cast<AliRsnInputHandler *>(ihMultiMix->InputEventHandler(id));
if (rsnMixIH) {
evMix = rsnMixIH->GetRsnEvent();
if (!evMix) return;
TObjArrayIter next(&fRsnObjects);
AliRsnLoop *obj = 0x0;
while ( (obj = (AliRsnLoop *)next()) ) {
if (!obj->IsMixed()) continue;
obj->DoLoop(evMain, rsnIH->GetSelector(), evMix, rsnMixIH->GetSelector());
}
}
}
PostData(1, fOutput);
}
void AliRsnAnalysisTask::Terminate(Option_t *)
{
fOutput = dynamic_cast<TList *>(GetOutputData(1));
if (!fOutput) { AliError("Could not retrieve TList fOutput"); return; }
}
void AliRsnAnalysisTask::InitInputHandlers()
{
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
fInputEHMain = dynamic_cast<AliMultiInputEventHandler *>(mgr->GetInputEventHandler());
if (fInputEHMain) {
fInputEHMix = dynamic_cast<AliMixInputEventHandler *>(fInputEHMain->GetFirstMultiInputHandler());
}
}
AliRsnAnalysisTask.cxx:10 AliRsnAnalysisTask.cxx:11 AliRsnAnalysisTask.cxx:12 AliRsnAnalysisTask.cxx:13 AliRsnAnalysisTask.cxx:14 AliRsnAnalysisTask.cxx:15 AliRsnAnalysisTask.cxx:16 AliRsnAnalysisTask.cxx:17 AliRsnAnalysisTask.cxx:18 AliRsnAnalysisTask.cxx:19 AliRsnAnalysisTask.cxx:20 AliRsnAnalysisTask.cxx:21 AliRsnAnalysisTask.cxx:22 AliRsnAnalysisTask.cxx:23 AliRsnAnalysisTask.cxx:24 AliRsnAnalysisTask.cxx:25 AliRsnAnalysisTask.cxx:26 AliRsnAnalysisTask.cxx:27 AliRsnAnalysisTask.cxx:28 AliRsnAnalysisTask.cxx:29 AliRsnAnalysisTask.cxx:30 AliRsnAnalysisTask.cxx:31 AliRsnAnalysisTask.cxx:32 AliRsnAnalysisTask.cxx:33 AliRsnAnalysisTask.cxx:34 AliRsnAnalysisTask.cxx:35 AliRsnAnalysisTask.cxx:36 AliRsnAnalysisTask.cxx:37 AliRsnAnalysisTask.cxx:38 AliRsnAnalysisTask.cxx:39 AliRsnAnalysisTask.cxx:40 AliRsnAnalysisTask.cxx:41 AliRsnAnalysisTask.cxx:42 AliRsnAnalysisTask.cxx:43 AliRsnAnalysisTask.cxx:44 AliRsnAnalysisTask.cxx:45 AliRsnAnalysisTask.cxx:46 AliRsnAnalysisTask.cxx:47 AliRsnAnalysisTask.cxx:48 AliRsnAnalysisTask.cxx:49 AliRsnAnalysisTask.cxx:50 AliRsnAnalysisTask.cxx:51 AliRsnAnalysisTask.cxx:52 AliRsnAnalysisTask.cxx:53 AliRsnAnalysisTask.cxx:54 AliRsnAnalysisTask.cxx:55 AliRsnAnalysisTask.cxx:56 AliRsnAnalysisTask.cxx:57 AliRsnAnalysisTask.cxx:58 AliRsnAnalysisTask.cxx:59 AliRsnAnalysisTask.cxx:60 AliRsnAnalysisTask.cxx:61 AliRsnAnalysisTask.cxx:62 AliRsnAnalysisTask.cxx:63 AliRsnAnalysisTask.cxx:64 AliRsnAnalysisTask.cxx:65 AliRsnAnalysisTask.cxx:66 AliRsnAnalysisTask.cxx:67 AliRsnAnalysisTask.cxx:68 AliRsnAnalysisTask.cxx:69 AliRsnAnalysisTask.cxx:70 AliRsnAnalysisTask.cxx:71 AliRsnAnalysisTask.cxx:72 AliRsnAnalysisTask.cxx:73 AliRsnAnalysisTask.cxx:74 AliRsnAnalysisTask.cxx:75 AliRsnAnalysisTask.cxx:76 AliRsnAnalysisTask.cxx:77 AliRsnAnalysisTask.cxx:78 AliRsnAnalysisTask.cxx:79 AliRsnAnalysisTask.cxx:80 AliRsnAnalysisTask.cxx:81 AliRsnAnalysisTask.cxx:82 AliRsnAnalysisTask.cxx:83 AliRsnAnalysisTask.cxx:84 AliRsnAnalysisTask.cxx:85 AliRsnAnalysisTask.cxx:86 AliRsnAnalysisTask.cxx:87 AliRsnAnalysisTask.cxx:88 AliRsnAnalysisTask.cxx:89 AliRsnAnalysisTask.cxx:90 AliRsnAnalysisTask.cxx:91 AliRsnAnalysisTask.cxx:92 AliRsnAnalysisTask.cxx:93 AliRsnAnalysisTask.cxx:94 AliRsnAnalysisTask.cxx:95 AliRsnAnalysisTask.cxx:96 AliRsnAnalysisTask.cxx:97 AliRsnAnalysisTask.cxx:98 AliRsnAnalysisTask.cxx:99 AliRsnAnalysisTask.cxx:100 AliRsnAnalysisTask.cxx:101 AliRsnAnalysisTask.cxx:102 AliRsnAnalysisTask.cxx:103 AliRsnAnalysisTask.cxx:104 AliRsnAnalysisTask.cxx:105 AliRsnAnalysisTask.cxx:106 AliRsnAnalysisTask.cxx:107 AliRsnAnalysisTask.cxx:108 AliRsnAnalysisTask.cxx:109 AliRsnAnalysisTask.cxx:110 AliRsnAnalysisTask.cxx:111 AliRsnAnalysisTask.cxx:112 AliRsnAnalysisTask.cxx:113 AliRsnAnalysisTask.cxx:114 AliRsnAnalysisTask.cxx:115 AliRsnAnalysisTask.cxx:116 AliRsnAnalysisTask.cxx:117 AliRsnAnalysisTask.cxx:118 AliRsnAnalysisTask.cxx:119 AliRsnAnalysisTask.cxx:120 AliRsnAnalysisTask.cxx:121 AliRsnAnalysisTask.cxx:122 AliRsnAnalysisTask.cxx:123 AliRsnAnalysisTask.cxx:124 AliRsnAnalysisTask.cxx:125 AliRsnAnalysisTask.cxx:126 AliRsnAnalysisTask.cxx:127 AliRsnAnalysisTask.cxx:128 AliRsnAnalysisTask.cxx:129 AliRsnAnalysisTask.cxx:130 AliRsnAnalysisTask.cxx:131 AliRsnAnalysisTask.cxx:132 AliRsnAnalysisTask.cxx:133 AliRsnAnalysisTask.cxx:134 AliRsnAnalysisTask.cxx:135 AliRsnAnalysisTask.cxx:136 AliRsnAnalysisTask.cxx:137 AliRsnAnalysisTask.cxx:138 AliRsnAnalysisTask.cxx:139 AliRsnAnalysisTask.cxx:140 AliRsnAnalysisTask.cxx:141 AliRsnAnalysisTask.cxx:142 AliRsnAnalysisTask.cxx:143 AliRsnAnalysisTask.cxx:144 AliRsnAnalysisTask.cxx:145 AliRsnAnalysisTask.cxx:146 AliRsnAnalysisTask.cxx:147 AliRsnAnalysisTask.cxx:148 AliRsnAnalysisTask.cxx:149 AliRsnAnalysisTask.cxx:150 AliRsnAnalysisTask.cxx:151 AliRsnAnalysisTask.cxx:152 AliRsnAnalysisTask.cxx:153 AliRsnAnalysisTask.cxx:154 AliRsnAnalysisTask.cxx:155 AliRsnAnalysisTask.cxx:156 AliRsnAnalysisTask.cxx:157 AliRsnAnalysisTask.cxx:158 AliRsnAnalysisTask.cxx:159 AliRsnAnalysisTask.cxx:160 AliRsnAnalysisTask.cxx:161 AliRsnAnalysisTask.cxx:162 AliRsnAnalysisTask.cxx:163 AliRsnAnalysisTask.cxx:164 AliRsnAnalysisTask.cxx:165 AliRsnAnalysisTask.cxx:166 AliRsnAnalysisTask.cxx:167 AliRsnAnalysisTask.cxx:168 AliRsnAnalysisTask.cxx:169 AliRsnAnalysisTask.cxx:170 AliRsnAnalysisTask.cxx:171 AliRsnAnalysisTask.cxx:172 AliRsnAnalysisTask.cxx:173 AliRsnAnalysisTask.cxx:174 AliRsnAnalysisTask.cxx:175 AliRsnAnalysisTask.cxx:176 AliRsnAnalysisTask.cxx:177 AliRsnAnalysisTask.cxx:178 AliRsnAnalysisTask.cxx:179 AliRsnAnalysisTask.cxx:180 AliRsnAnalysisTask.cxx:181 AliRsnAnalysisTask.cxx:182 AliRsnAnalysisTask.cxx:183 AliRsnAnalysisTask.cxx:184 AliRsnAnalysisTask.cxx:185 AliRsnAnalysisTask.cxx:186 AliRsnAnalysisTask.cxx:187 AliRsnAnalysisTask.cxx:188 AliRsnAnalysisTask.cxx:189 AliRsnAnalysisTask.cxx:190 AliRsnAnalysisTask.cxx:191 AliRsnAnalysisTask.cxx:192 AliRsnAnalysisTask.cxx:193 AliRsnAnalysisTask.cxx:194 AliRsnAnalysisTask.cxx:195 AliRsnAnalysisTask.cxx:196 AliRsnAnalysisTask.cxx:197 AliRsnAnalysisTask.cxx:198 AliRsnAnalysisTask.cxx:199 AliRsnAnalysisTask.cxx:200 AliRsnAnalysisTask.cxx:201 AliRsnAnalysisTask.cxx:202 AliRsnAnalysisTask.cxx:203 AliRsnAnalysisTask.cxx:204 AliRsnAnalysisTask.cxx:205 AliRsnAnalysisTask.cxx:206 AliRsnAnalysisTask.cxx:207 AliRsnAnalysisTask.cxx:208 AliRsnAnalysisTask.cxx:209 AliRsnAnalysisTask.cxx:210 AliRsnAnalysisTask.cxx:211 AliRsnAnalysisTask.cxx:212 AliRsnAnalysisTask.cxx:213 AliRsnAnalysisTask.cxx:214 AliRsnAnalysisTask.cxx:215 AliRsnAnalysisTask.cxx:216 AliRsnAnalysisTask.cxx:217 AliRsnAnalysisTask.cxx:218 AliRsnAnalysisTask.cxx:219 AliRsnAnalysisTask.cxx:220 AliRsnAnalysisTask.cxx:221 AliRsnAnalysisTask.cxx:222 AliRsnAnalysisTask.cxx:223 AliRsnAnalysisTask.cxx:224 AliRsnAnalysisTask.cxx:225 AliRsnAnalysisTask.cxx:226 AliRsnAnalysisTask.cxx:227 AliRsnAnalysisTask.cxx:228 AliRsnAnalysisTask.cxx:229 AliRsnAnalysisTask.cxx:230 AliRsnAnalysisTask.cxx:231 AliRsnAnalysisTask.cxx:232 AliRsnAnalysisTask.cxx:233 AliRsnAnalysisTask.cxx:234 AliRsnAnalysisTask.cxx:235 AliRsnAnalysisTask.cxx:236 AliRsnAnalysisTask.cxx:237 AliRsnAnalysisTask.cxx:238 AliRsnAnalysisTask.cxx:239 AliRsnAnalysisTask.cxx:240 AliRsnAnalysisTask.cxx:241 AliRsnAnalysisTask.cxx:242 AliRsnAnalysisTask.cxx:243 AliRsnAnalysisTask.cxx:244 AliRsnAnalysisTask.cxx:245 AliRsnAnalysisTask.cxx:246 AliRsnAnalysisTask.cxx:247 AliRsnAnalysisTask.cxx:248 AliRsnAnalysisTask.cxx:249 AliRsnAnalysisTask.cxx:250 AliRsnAnalysisTask.cxx:251 AliRsnAnalysisTask.cxx:252 AliRsnAnalysisTask.cxx:253 AliRsnAnalysisTask.cxx:254 AliRsnAnalysisTask.cxx:255 AliRsnAnalysisTask.cxx:256 AliRsnAnalysisTask.cxx:257 AliRsnAnalysisTask.cxx:258 AliRsnAnalysisTask.cxx:259 AliRsnAnalysisTask.cxx:260 AliRsnAnalysisTask.cxx:261 AliRsnAnalysisTask.cxx:262 AliRsnAnalysisTask.cxx:263 AliRsnAnalysisTask.cxx:264 AliRsnAnalysisTask.cxx:265 AliRsnAnalysisTask.cxx:266 AliRsnAnalysisTask.cxx:267 AliRsnAnalysisTask.cxx:268 AliRsnAnalysisTask.cxx:269