#include <TROOT.h>
#include <TSystem.h>
#include <TInterpreter.h>
#include <TChain.h>
#include <TFile.h>
#include <TList.h>
#include "AliAnalysisTaskME.h"
#include "AliAnalysisManager.h"
#include "AliAnalysisDataSlot.h"
#include "AliAODEvent.h"
#include "AliVEvent.h"
#include "AliAODHandler.h"
#include "AliMultiEventInputHandler.h"
#include "AliLog.h"
ClassImp(AliAnalysisTaskME)
AliAnalysisTaskME::AliAnalysisTaskME():
AliAnalysisTask(),
fDebug(0),
fEntry(0),
fFreshBufferOnly(kFALSE),
fInputHandler(0x0),
fOutputAOD(0x0),
fTreeA(0x0),
fOfflineTriggerMask(0)
{
}
AliAnalysisTaskME::AliAnalysisTaskME(const char* name):
AliAnalysisTask(name, "AnalysisTaskME"),
fDebug(0),
fEntry(0),
fFreshBufferOnly(kFALSE),
fInputHandler(0x0),
fOutputAOD(0x0),
fTreeA(0x0),
fOfflineTriggerMask(0)
{
DefineInput (0, TChain::Class());
DefineOutput(0, TTree::Class());
}
AliAnalysisTaskME::AliAnalysisTaskME(const AliAnalysisTaskME& obj):
AliAnalysisTask(obj),
fDebug(0),
fEntry(0),
fFreshBufferOnly(kFALSE),
fInputHandler(0x0),
fOutputAOD(0x0),
fTreeA(0x0),
fOfflineTriggerMask(0)
{
fDebug = obj.fDebug;
fEntry = obj.fEntry;
fInputHandler = obj.fInputHandler;
fOutputAOD = obj.fOutputAOD;
fTreeA = obj.fTreeA;
fOfflineTriggerMask = obj.fOfflineTriggerMask;
}
AliAnalysisTaskME& AliAnalysisTaskME::operator=(const AliAnalysisTaskME& other)
{
if (this != &other) {
AliAnalysisTask::operator=(other);
fDebug = other.fDebug;
fEntry = other.fEntry;
fFreshBufferOnly = other.fFreshBufferOnly;
fInputHandler = other.fInputHandler;
fOutputAOD = other.fOutputAOD;
fTreeA = other.fTreeA;
fOfflineTriggerMask = other.fOfflineTriggerMask;
}
return *this;
}
void AliAnalysisTaskME::ConnectInputData(Option_t* )
{
if (fDebug > 1) printf("AnalysisTaskME::ConnectInputData() \n");
fInputHandler = dynamic_cast<AliMultiEventInputHandler*>
((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
if (fInputHandler == 0) {
AliFatal("Event Handler has to be MultiEventInputHandler !");
} else {
if (!fInputHandler->GetEventPool()) {
fInputHandler->SetEventPool(AliAnalysisManager::GetAnalysisManager()->GetEventPool());
if (!fInputHandler->GetEventPool())
AliFatal("MultiEventInputHandler has no EventPool connected !");
}
}
}
void AliAnalysisTaskME::CreateOutputObjects()
{
if (fDebug > 1) printf("AnalysisTaskME::CreateOutPutData() \n");
AliAODHandler* handler = (AliAODHandler*)
((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
if (handler) {
fOutputAOD = handler->GetAOD();
fTreeA = handler->GetTree();
} else {
AliWarning("No AOD Event Handler connected.") ;
}
UserCreateOutputObjects();
}
void AliAnalysisTaskME::Exec(Option_t* option)
{
if (fDebug > 1) AliInfo("AliAnalysisTaskME::Exec() \n");
if( fInputHandler )
fEntry = fInputHandler->GetReadEntry();
if ( !((Entry()-1)%100) && fDebug > 0)
AliInfo(Form("%s ----> Processing event # %lld", CurrentFileName(), Entry()));
AliAODHandler* outputHandler = (AliAODHandler*)
((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
UInt_t isSelected = AliVEvent::kAny;
if(fInputHandler && fInputHandler->GetEventSelection()) {
if (fOfflineTriggerMask)
isSelected = fOfflineTriggerMask & fInputHandler->IsEventSelected();
}
if (!isSelected) {
if (fDebug > 1) AliInfo("Event rejected \n");
fInputHandler->EventSkipped();
return;
}
if (fInputHandler && fInputHandler->IsBufferReady()) {
if ((fFreshBufferOnly && fInputHandler->IsFreshBuffer()) || !fFreshBufferOnly)
{
if (outputHandler) outputHandler->SetFillAOD(kTRUE);
UserExec(option);
AliAnalysisDataSlot *out0 = GetOutputSlot(0);
if (out0 && out0->IsConnected()) PostData(0, fTreeA);
} else {
if (outputHandler) outputHandler->SetFillAOD(kFALSE);
}
} else {
AliInfo(Form("Waiting for buffer to be ready !\n"));
}
}
const char* AliAnalysisTaskME::CurrentFileName()
{
if(fInputHandler )
return fInputHandler->GetTree()->GetCurrentFile()->GetName();
else return "";
}
void AliAnalysisTaskME::AddAODBranch(const char* cname, void* addobj, const char *fname)
{
AliAODHandler* handler = (AliAODHandler*)
((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
if (handler) {
handler->AddBranch(cname, addobj, fname);
}
}
AliVEvent* AliAnalysisTaskME::GetEvent(Int_t iev)
{
return (fInputHandler->GetEvent(iev));
}
AliAnalysisTaskME.cxx:100 AliAnalysisTaskME.cxx:101 AliAnalysisTaskME.cxx:102 AliAnalysisTaskME.cxx:103 AliAnalysisTaskME.cxx:104 AliAnalysisTaskME.cxx:105 AliAnalysisTaskME.cxx:106 AliAnalysisTaskME.cxx:107 AliAnalysisTaskME.cxx:108 AliAnalysisTaskME.cxx:109 AliAnalysisTaskME.cxx:110 AliAnalysisTaskME.cxx:111 AliAnalysisTaskME.cxx:112 AliAnalysisTaskME.cxx:113 AliAnalysisTaskME.cxx:114 AliAnalysisTaskME.cxx:115 AliAnalysisTaskME.cxx:116 AliAnalysisTaskME.cxx:117 AliAnalysisTaskME.cxx:118 AliAnalysisTaskME.cxx:119 AliAnalysisTaskME.cxx:120 AliAnalysisTaskME.cxx:121 AliAnalysisTaskME.cxx:122 AliAnalysisTaskME.cxx:123 AliAnalysisTaskME.cxx:124 AliAnalysisTaskME.cxx:125 AliAnalysisTaskME.cxx:126 AliAnalysisTaskME.cxx:127 AliAnalysisTaskME.cxx:128 AliAnalysisTaskME.cxx:129 AliAnalysisTaskME.cxx:130 AliAnalysisTaskME.cxx:131 AliAnalysisTaskME.cxx:132 AliAnalysisTaskME.cxx:133 AliAnalysisTaskME.cxx:134 AliAnalysisTaskME.cxx:135 AliAnalysisTaskME.cxx:136 AliAnalysisTaskME.cxx:137 AliAnalysisTaskME.cxx:138 AliAnalysisTaskME.cxx:139 AliAnalysisTaskME.cxx:140 AliAnalysisTaskME.cxx:141 AliAnalysisTaskME.cxx:142 AliAnalysisTaskME.cxx:143 AliAnalysisTaskME.cxx:144 AliAnalysisTaskME.cxx:145 AliAnalysisTaskME.cxx:146 AliAnalysisTaskME.cxx:147 AliAnalysisTaskME.cxx:148 AliAnalysisTaskME.cxx:149 AliAnalysisTaskME.cxx:150 AliAnalysisTaskME.cxx:151 AliAnalysisTaskME.cxx:152 AliAnalysisTaskME.cxx:153 AliAnalysisTaskME.cxx:154 AliAnalysisTaskME.cxx:155 AliAnalysisTaskME.cxx:156 AliAnalysisTaskME.cxx:157 AliAnalysisTaskME.cxx:158 AliAnalysisTaskME.cxx:159 AliAnalysisTaskME.cxx:160 AliAnalysisTaskME.cxx:161 AliAnalysisTaskME.cxx:162 AliAnalysisTaskME.cxx:163 AliAnalysisTaskME.cxx:164 AliAnalysisTaskME.cxx:165 AliAnalysisTaskME.cxx:166 AliAnalysisTaskME.cxx:167 AliAnalysisTaskME.cxx:168 AliAnalysisTaskME.cxx:169 AliAnalysisTaskME.cxx:170 AliAnalysisTaskME.cxx:171 AliAnalysisTaskME.cxx:172 AliAnalysisTaskME.cxx:173 AliAnalysisTaskME.cxx:174 AliAnalysisTaskME.cxx:175 AliAnalysisTaskME.cxx:176 AliAnalysisTaskME.cxx:177 AliAnalysisTaskME.cxx:178 AliAnalysisTaskME.cxx:179 AliAnalysisTaskME.cxx:180 AliAnalysisTaskME.cxx:181 AliAnalysisTaskME.cxx:182 AliAnalysisTaskME.cxx:183 AliAnalysisTaskME.cxx:184 AliAnalysisTaskME.cxx:185 AliAnalysisTaskME.cxx:186 AliAnalysisTaskME.cxx:187 AliAnalysisTaskME.cxx:188 AliAnalysisTaskME.cxx:189 AliAnalysisTaskME.cxx:190 AliAnalysisTaskME.cxx:191 AliAnalysisTaskME.cxx:192 AliAnalysisTaskME.cxx:193 AliAnalysisTaskME.cxx:194 AliAnalysisTaskME.cxx:195 AliAnalysisTaskME.cxx:196 AliAnalysisTaskME.cxx:197 AliAnalysisTaskME.cxx:198 AliAnalysisTaskME.cxx:199 AliAnalysisTaskME.cxx:200 AliAnalysisTaskME.cxx:201 AliAnalysisTaskME.cxx:202 AliAnalysisTaskME.cxx:203 AliAnalysisTaskME.cxx:204 AliAnalysisTaskME.cxx:205 AliAnalysisTaskME.cxx:206 AliAnalysisTaskME.cxx:207 AliAnalysisTaskME.cxx:208 AliAnalysisTaskME.cxx:209 AliAnalysisTaskME.cxx:210 AliAnalysisTaskME.cxx:211 AliAnalysisTaskME.cxx:212 AliAnalysisTaskME.cxx:213