fCurrentEntry(0),
fCurrentEntryMain(0),
fCurrentEntryMix(0),
- fCurrentBinIndex(-1)
+ fCurrentBinIndex(-1),
+ fOfflineTriggerMask(0)
{
//
// Default constructor.
tree->LoadTree(0);
fMixIntupHandlerInfoTmp = new AliMixInputHandlerInfo(tree->GetName());
}
- // moved to Notify
-// // adds current file
-// fMixIntupHandlerInfoTmp->AddTreeToChain(tree->GetTree());
-// Int_t lastIndex = fMixIntupHandlerInfoTmp->GetChain()->GetListOfFiles()->GetEntries();
-// TChainElement *che = (TChainElement *)fMixIntupHandlerInfoTmp->GetChain()->GetListOfFiles()->At(lastIndex - 1);
-// AliMixInputHandlerInfo *mixIHI = 0;
-// for(Int_t i = 0; i < fInputHandlers.GetEntries(); i++) {
-// AliDebug(AliLog::kDebug+5, Form("fInputHandlers[%d]", i));
-// mixIHI = new AliMixInputHandlerInfo(fMixIntupHandlerInfoTmp->GetName(), fMixIntupHandlerInfoTmp->GetTitle());
-// mixIHI->PrepareEntry(che, -1, InputEventHandler(i),fAnalysisType);
-// AliDebug(AliLog::kDebug+5, Form("chain[%d]->GetEntries() = %lld", i, mixIHI->GetChain()->GetEntries()));
-// fMixTrees.Add(mixIHI);
-// }
-// AliDebug(AliLog::kDebug+5, Form("fEntryCounter=%lld", fEntryCounter));
-// if(fEventPool && fEventPool->NeedInit())
-// fEventPool->Init();
AliDebug(AliLog::kDebug + 5, Form("->"));
return kTRUE;
}
// All mixed events are set
//
AliDebug(AliLog::kDebug + 5, Form("<-"));
- // if no event pool MixStd
-// if (fEventPool && fEventPool->NeedInit()) fEventPool->Init();
+
if (!fEventPool) {
MixStd();
}
if (mh) inEvHMain = dynamic_cast<AliInputEventHandler *>(mh->GetFirstInputEventHandler());
else inEvHMain = dynamic_cast<AliInputEventHandler *>(mgr->GetInputEventHandler());
if (!inEvHMain) return kFALSE;
+
+ // check for PhysSelection
+ if (!IsEventCurrentSelected()) return kFALSE;
+
// return in case of 0 entry in full chain
if (!fEntryCounter) {
AliDebug(AliLog::kDebug + 3, Form("-> fEntryCounter == 0"));
- // runs UserExecMix for all tasks (kFALSE means that UserExecMix is not called)
+ // runs UserExecMix for all tasks, if needed
UserExecMixAllTasks(fEntryCounter, 1, fEntryCounter, -1, 0);
return kTRUE;
}
if (mh) inEvHMain = dynamic_cast<AliInputEventHandler *>(mh->GetFirstInputEventHandler());
else inEvHMain = dynamic_cast<AliInputEventHandler *>(mgr->GetInputEventHandler());
if (!inEvHMain) return kFALSE;
+
+ // check for PhysSelection
+ if (!IsEventCurrentSelected()) return kFALSE;
+
// find out zero chain entries
Long64_t zeroChainEntries = fMixIntupHandlerInfoTmp->GetChain()->GetEntries() - inEvHMain->GetTree()->GetTree()->GetEntries();
// fill entry
// return in case of 0 entry in full chain
if (!fEntryCounter) {
AliDebug(AliLog::kDebug + 3, Form("-> fEntryCounter == 0"));
- // runs UserExecMix for all tasks (kFALSE means that UserExecMix is not called)
- UserExecMixAllTasks(fEntryCounter, idEntryList, fEntryCounter, -1, 0);
+ // runs UserExecMix for all tasks, if needed
+ if (el) UserExecMixAllTasks(fEntryCounter, idEntryList, currentMainEntry, -1, 0);
+ else UserExecMixAllTasks(fEntryCounter, -1, currentMainEntry, -1, 0);
return kTRUE;
}
if (!el) {
} else {
elNum = el->GetN();
if (elNum < fBufferSize + 1) {
+ UserExecMixAllTasks(fEntryCounter, idEntryList, currentMainEntry, -1, 0);
AliDebug(AliLog::kDebug + 3, Form("++++++++++++++ END SETUP EVENT %lld SKIPPED (%lld) +++++++++++++++++++", fEntryCounter, elNum));
return kTRUE;
}
Int_t counter = 0;
AliInputEventHandler *eh = 0;
TObjArrayIter next(&fInputHandlers);
- while ((eh = dynamic_cast<AliInputEventHandler *> (next()))) {
+ while ((eh = dynamic_cast<AliInputEventHandler *>(next()))) {
if (fEventPool && fEventPool->GetListOfEventCuts()->GetEntries() > 0) {
entryMix = -1;
if (elNum >= fBufferSize) {
if (mh) inEvHMain = dynamic_cast<AliInputEventHandler *>(mh->GetFirstInputEventHandler());
else inEvHMain = dynamic_cast<AliInputEventHandler *>(mgr->GetInputEventHandler());
if (!inEvHMain) return kFALSE;
+
+ // check for PhysSelection
+ if (!IsEventCurrentSelected()) return kFALSE;
+
// find out zero chain entries
Long64_t zeroChainEntries = fMixIntupHandlerInfoTmp->GetChain()->GetEntries() - inEvHMain->GetTree()->GetTree()->GetEntries();
// fill entry
if (fEventPool) el = fEventPool->FindEntryList(inEvHMain->GetEvent(), idEntryList);
// return in case of 0 entry in full chain
if (!fEntryCounter) {
- // runs UserExecMix for all tasks (kFALSE means that UserExecMix is not called)
- UserExecMixAllTasks(fEntryCounter, idEntryList, currentMainEntry, -1, 0);
+ // runs UserExecMix for all tasks, if needed
+ if (el) UserExecMixAllTasks(fEntryCounter, idEntryList, currentMainEntry, -1, 0);
+ else UserExecMixAllTasks(fEntryCounter, -1, currentMainEntry, -1, 0);
AliDebug(AliLog::kDebug + 3, Form("++++++++++++++ END SETUP EVENT %lld SKIPPED (fEntryCounter=0, idEntryList=%d) +++++++++++++++++++", fEntryCounter, idEntryList));
return kTRUE;
}
while ((mixTask = (AliAnalysisTaskSE *) next())) {
if (dynamic_cast<AliAnalysisTaskSE *>(mixTask)) {
AliDebug(AliLog::kDebug, Form("%s %lld %d [%lld,%lld] %d", mixTask->GetName(), entryCounter, numMixed, entryMainReal, entryMixReal, idEntryList));
-// mixTask->SetCurrentBinIndex(idEntryList);
-// mixTask->SetCurrentEntry(entryCounter);
-// mixTask->SetCurrentEntryMain(entryMainReal);
-// mixTask->SetCurrentEntryMix(entryMixReal);
-// mixTask->SetNumberMixed(numMixed);
- fCurrentEntry = idEntryList;
- fCurrentEntryMain = entryCounter;
- fCurrentEntryMix = entryMainReal;
- fCurrentBinIndex = entryMixReal;
-
- if (entryMixReal > -1) mixTask->UserExecMix("");
+ fCurrentEntry = entryCounter;
+ fCurrentEntryMain = entryMainReal;
+ fCurrentEntryMix = entryMixReal;
+ fCurrentBinIndex = idEntryList;
+ if (entryMixReal >= 0) mixTask->UserExecMix("");
}
}
}
}
fMixNumber = mixNum;
}
+
+Bool_t AliMixInputEventHandler::IsEventCurrentSelected()
+{
+ AliDebug(AliLog::kDebug + 5, Form("<-"));
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+ AliMultiInputEventHandler *mh = dynamic_cast<AliMultiInputEventHandler *>(mgr->GetInputEventHandler());
+ Bool_t isSelected = kTRUE;
+ if (mh) {
+ if (fOfflineTriggerMask && mh->GetEventSelection()) {
+ isSelected = fOfflineTriggerMask & mh->IsEventSelected();
+ }
+ }
+ AliDebug(AliLog::kDebug + 1, Form("isSelected=%d", isSelected));
+ AliDebug(AliLog::kDebug + 5, Form("-> %d", isSelected));
+ return isSelected;
+}