#include "AliMultiEventInputHandler.h"
#include "AliVEvent.h"
#include "AliAODEvent.h"
#include "AliESDEvent.h"
#include "AliVEventPool.h"
#include "AliVCuts.h"
#include "AliLog.h"
#include <TObjArray.h>
#include <TTree.h>
#include <TList.h>
#include <TEntryList.h>
ClassImp(AliMultiEventInputHandler)
AliMultiEventInputHandler::AliMultiEventInputHandler() :
AliInputEventHandler(),
fBufferSize(0),
fFormat(1),
fNBuffered(0),
fIndex(0),
fCurrentBin(0),
fCurrentEvt(0),
fInit(0),
fEventPool(0),
fEventBuffer(0),
fEventSkipped(0)
{
}
AliMultiEventInputHandler::AliMultiEventInputHandler(Int_t size, Int_t format) :
AliInputEventHandler(),
fBufferSize(size),
fFormat(format),
fNBuffered(0),
fIndex(0),
fCurrentBin(0),
fCurrentEvt(0),
fInit(0),
fEventPool(0),
fEventBuffer(0),
fEventSkipped(0)
{
}
AliMultiEventInputHandler::AliMultiEventInputHandler(const char* name, const char* title, Int_t size, Int_t format):
AliInputEventHandler(name, title),
fBufferSize(size),
fFormat(format),
fNBuffered(0),
fIndex(0),
fCurrentBin(0),
fCurrentEvt(0),
fInit(0),
fEventPool(0),
fEventBuffer(0),
fEventSkipped(0)
{
}
AliMultiEventInputHandler::~AliMultiEventInputHandler()
{
}
Bool_t AliMultiEventInputHandler::Init(TTree* tree, Option_t* )
{
if (!fEventBuffer) {
fEventBuffer = new AliVEvent*[fBufferSize];
for (Int_t i = 0; i < fBufferSize; i++)
if (fFormat == 1) {
fEventBuffer[i] = new AliAODEvent();
} else if (fFormat == 0) {
fEventBuffer[i] = new AliESDEvent();
} else{
AliWarning(Form("Unknown Format %5d", fFormat));
}
}
fTree = tree;
fInit = 1;
if (!fTree) return kFALSE;
for (Int_t i = 0; i < fBufferSize; i++)
fEventBuffer[i]->Clear();
fIndex = 0;
fNBuffered = 1;
return kTRUE;
}
Bool_t AliMultiEventInputHandler::Notify(const char *)
{
TList* connectedList = (TList*) (fTree->GetUserInfo()->FindObject("AODObjectsConnectedToTree"));
if (connectedList && !fInit) {
fEventBuffer[0]->ReadFromTree(fTree, "reconnect");
} else {
if (fInit) fEventBuffer[0]->ReadFromTree(fTree, "");
}
fCurrentEvt = 0;
fInit = 0;
return (kTRUE);
}
Bool_t AliMultiEventInputHandler::BeginEvent(Long64_t )
{
if (fCurrentBin != (fEventPool->BinNumber())) {
fCurrentBin = fEventPool->BinNumber();
fNBuffered = 0;
}
if (fFormat == 0) {
fIsSelectedResult = 0;
if (fEventCuts && !IsUserCallSelectionMask())
fIsSelectedResult =
fEventCuts->GetSelectionMask((AliESDEvent*)fEventBuffer[fIndex]);
}
return kTRUE;
}
Bool_t AliMultiEventInputHandler::FinishEvent()
{
if (!fEventSkipped) fIndex++;
fIndex %= fBufferSize;
AliInfo(Form("Connecting buffer entry %5d", fIndex));
fEventBuffer[fIndex]->Clear();
fCurrentEvt++;
if (fEventBuffer[fIndex]->GetList() && fCurrentEvt > (fBufferSize - 1))
fEventBuffer[fIndex]->GetList()->Delete();
fEventBuffer[fIndex]->ReadFromTree(fTree, "reconnect");
fNBuffered++;
if (fNBuffered > fBufferSize) fNBuffered = fBufferSize;
Int_t nmax = fTree->GetEntries();
if (fTree->GetEntryList()) {
nmax = (fTree->GetEntryList()->GetN());
} else {
if (fTree->GetTree()) nmax = fTree->GetTree()->GetEntries();
}
if (fCurrentEvt == nmax)
{
for (Int_t i = 0; i < fBufferSize; i++) {
fEventBuffer[i]->Clear();
}
}
return (kTRUE);
}
AliVEvent* AliMultiEventInputHandler::GetEvent(Int_t iev) const
{
if ((iev < 0) || (iev >= fBufferSize))
{
AliWarning(Form("Event number out of range: %10d", iev));
return 0;
}
iev = fIndex - (fBufferSize - 1 - iev);
if (iev < 0) iev += fBufferSize;
AliInfo(Form("Event index in buffer is %5d", iev));
return (fEventBuffer[iev]);
}
AliMultiEventInputHandler.cxx:1 AliMultiEventInputHandler.cxx:2 AliMultiEventInputHandler.cxx:3 AliMultiEventInputHandler.cxx:4 AliMultiEventInputHandler.cxx:5 AliMultiEventInputHandler.cxx:6 AliMultiEventInputHandler.cxx:7 AliMultiEventInputHandler.cxx:8 AliMultiEventInputHandler.cxx:9 AliMultiEventInputHandler.cxx:10 AliMultiEventInputHandler.cxx:11 AliMultiEventInputHandler.cxx:12 AliMultiEventInputHandler.cxx:13 AliMultiEventInputHandler.cxx:14 AliMultiEventInputHandler.cxx:15 AliMultiEventInputHandler.cxx:16 AliMultiEventInputHandler.cxx:17 AliMultiEventInputHandler.cxx:18 AliMultiEventInputHandler.cxx:19 AliMultiEventInputHandler.cxx:20 AliMultiEventInputHandler.cxx:21 AliMultiEventInputHandler.cxx:22 AliMultiEventInputHandler.cxx:23 AliMultiEventInputHandler.cxx:24 AliMultiEventInputHandler.cxx:25 AliMultiEventInputHandler.cxx:26 AliMultiEventInputHandler.cxx:27 AliMultiEventInputHandler.cxx:28 AliMultiEventInputHandler.cxx:29 AliMultiEventInputHandler.cxx:30 AliMultiEventInputHandler.cxx:31 AliMultiEventInputHandler.cxx:32 AliMultiEventInputHandler.cxx:33 AliMultiEventInputHandler.cxx:34 AliMultiEventInputHandler.cxx:35 AliMultiEventInputHandler.cxx:36 AliMultiEventInputHandler.cxx:37 AliMultiEventInputHandler.cxx:38 AliMultiEventInputHandler.cxx:39 AliMultiEventInputHandler.cxx:40 AliMultiEventInputHandler.cxx:41 AliMultiEventInputHandler.cxx:42 AliMultiEventInputHandler.cxx:43 AliMultiEventInputHandler.cxx:44 AliMultiEventInputHandler.cxx:45 AliMultiEventInputHandler.cxx:46 AliMultiEventInputHandler.cxx:47 AliMultiEventInputHandler.cxx:48 AliMultiEventInputHandler.cxx:49 AliMultiEventInputHandler.cxx:50 AliMultiEventInputHandler.cxx:51 AliMultiEventInputHandler.cxx:52 AliMultiEventInputHandler.cxx:53 AliMultiEventInputHandler.cxx:54 AliMultiEventInputHandler.cxx:55 AliMultiEventInputHandler.cxx:56 AliMultiEventInputHandler.cxx:57 AliMultiEventInputHandler.cxx:58 AliMultiEventInputHandler.cxx:59 AliMultiEventInputHandler.cxx:60 AliMultiEventInputHandler.cxx:61 AliMultiEventInputHandler.cxx:62 AliMultiEventInputHandler.cxx:63 AliMultiEventInputHandler.cxx:64 AliMultiEventInputHandler.cxx:65 AliMultiEventInputHandler.cxx:66 AliMultiEventInputHandler.cxx:67 AliMultiEventInputHandler.cxx:68 AliMultiEventInputHandler.cxx:69 AliMultiEventInputHandler.cxx:70 AliMultiEventInputHandler.cxx:71 AliMultiEventInputHandler.cxx:72 AliMultiEventInputHandler.cxx:73 AliMultiEventInputHandler.cxx:74 AliMultiEventInputHandler.cxx:75 AliMultiEventInputHandler.cxx:76 AliMultiEventInputHandler.cxx:77 AliMultiEventInputHandler.cxx:78 AliMultiEventInputHandler.cxx:79 AliMultiEventInputHandler.cxx:80 AliMultiEventInputHandler.cxx:81 AliMultiEventInputHandler.cxx:82 AliMultiEventInputHandler.cxx:83 AliMultiEventInputHandler.cxx:84 AliMultiEventInputHandler.cxx:85 AliMultiEventInputHandler.cxx:86 AliMultiEventInputHandler.cxx:87 AliMultiEventInputHandler.cxx:88 AliMultiEventInputHandler.cxx:89 AliMultiEventInputHandler.cxx:90 AliMultiEventInputHandler.cxx:91 AliMultiEventInputHandler.cxx:92 AliMultiEventInputHandler.cxx:93 AliMultiEventInputHandler.cxx:94 AliMultiEventInputHandler.cxx:95 AliMultiEventInputHandler.cxx:96 AliMultiEventInputHandler.cxx:97 AliMultiEventInputHandler.cxx:98 AliMultiEventInputHandler.cxx:99 AliMultiEventInputHandler.cxx:100 AliMultiEventInputHandler.cxx:101 AliMultiEventInputHandler.cxx:102 AliMultiEventInputHandler.cxx:103 AliMultiEventInputHandler.cxx:104 AliMultiEventInputHandler.cxx:105 AliMultiEventInputHandler.cxx:106 AliMultiEventInputHandler.cxx:107 AliMultiEventInputHandler.cxx:108 AliMultiEventInputHandler.cxx:109 AliMultiEventInputHandler.cxx:110 AliMultiEventInputHandler.cxx:111 AliMultiEventInputHandler.cxx:112 AliMultiEventInputHandler.cxx:113 AliMultiEventInputHandler.cxx:114 AliMultiEventInputHandler.cxx:115 AliMultiEventInputHandler.cxx:116 AliMultiEventInputHandler.cxx:117 AliMultiEventInputHandler.cxx:118 AliMultiEventInputHandler.cxx:119 AliMultiEventInputHandler.cxx:120 AliMultiEventInputHandler.cxx:121 AliMultiEventInputHandler.cxx:122 AliMultiEventInputHandler.cxx:123 AliMultiEventInputHandler.cxx:124 AliMultiEventInputHandler.cxx:125 AliMultiEventInputHandler.cxx:126 AliMultiEventInputHandler.cxx:127 AliMultiEventInputHandler.cxx:128 AliMultiEventInputHandler.cxx:129 AliMultiEventInputHandler.cxx:130 AliMultiEventInputHandler.cxx:131 AliMultiEventInputHandler.cxx:132 AliMultiEventInputHandler.cxx:133 AliMultiEventInputHandler.cxx:134 AliMultiEventInputHandler.cxx:135 AliMultiEventInputHandler.cxx:136 AliMultiEventInputHandler.cxx:137 AliMultiEventInputHandler.cxx:138 AliMultiEventInputHandler.cxx:139 AliMultiEventInputHandler.cxx:140 AliMultiEventInputHandler.cxx:141 AliMultiEventInputHandler.cxx:142 AliMultiEventInputHandler.cxx:143 AliMultiEventInputHandler.cxx:144 AliMultiEventInputHandler.cxx:145 AliMultiEventInputHandler.cxx:146 AliMultiEventInputHandler.cxx:147 AliMultiEventInputHandler.cxx:148 AliMultiEventInputHandler.cxx:149 AliMultiEventInputHandler.cxx:150 AliMultiEventInputHandler.cxx:151 AliMultiEventInputHandler.cxx:152 AliMultiEventInputHandler.cxx:153 AliMultiEventInputHandler.cxx:154 AliMultiEventInputHandler.cxx:155 AliMultiEventInputHandler.cxx:156 AliMultiEventInputHandler.cxx:157 AliMultiEventInputHandler.cxx:158 AliMultiEventInputHandler.cxx:159 AliMultiEventInputHandler.cxx:160 AliMultiEventInputHandler.cxx:161 AliMultiEventInputHandler.cxx:162 AliMultiEventInputHandler.cxx:163 AliMultiEventInputHandler.cxx:164 AliMultiEventInputHandler.cxx:165 AliMultiEventInputHandler.cxx:166 AliMultiEventInputHandler.cxx:167 AliMultiEventInputHandler.cxx:168 AliMultiEventInputHandler.cxx:169 AliMultiEventInputHandler.cxx:170 AliMultiEventInputHandler.cxx:171 AliMultiEventInputHandler.cxx:172 AliMultiEventInputHandler.cxx:173 AliMultiEventInputHandler.cxx:174 AliMultiEventInputHandler.cxx:175 AliMultiEventInputHandler.cxx:176 AliMultiEventInputHandler.cxx:177 AliMultiEventInputHandler.cxx:178 AliMultiEventInputHandler.cxx:179 AliMultiEventInputHandler.cxx:180 AliMultiEventInputHandler.cxx:181 AliMultiEventInputHandler.cxx:182 AliMultiEventInputHandler.cxx:183 AliMultiEventInputHandler.cxx:184 AliMultiEventInputHandler.cxx:185 AliMultiEventInputHandler.cxx:186 AliMultiEventInputHandler.cxx:187 AliMultiEventInputHandler.cxx:188 AliMultiEventInputHandler.cxx:189 AliMultiEventInputHandler.cxx:190 AliMultiEventInputHandler.cxx:191 AliMultiEventInputHandler.cxx:192 AliMultiEventInputHandler.cxx:193 AliMultiEventInputHandler.cxx:194 AliMultiEventInputHandler.cxx:195 AliMultiEventInputHandler.cxx:196 AliMultiEventInputHandler.cxx:197 AliMultiEventInputHandler.cxx:198 AliMultiEventInputHandler.cxx:199 AliMultiEventInputHandler.cxx:200 AliMultiEventInputHandler.cxx:201 AliMultiEventInputHandler.cxx:202 AliMultiEventInputHandler.cxx:203 AliMultiEventInputHandler.cxx:204 AliMultiEventInputHandler.cxx:205 AliMultiEventInputHandler.cxx:206 AliMultiEventInputHandler.cxx:207 AliMultiEventInputHandler.cxx:208 AliMultiEventInputHandler.cxx:209 AliMultiEventInputHandler.cxx:210 AliMultiEventInputHandler.cxx:211 AliMultiEventInputHandler.cxx:212 AliMultiEventInputHandler.cxx:213