// When running with PROOF SlaveBegin() is called on each slave server.
// The tree argument is deprecated (on PROOF 0 is passed).
if (fDebug > 1) printf("->AliAnalysisManager::SlaveBegin()\n");
+ if (!CheckTasks()) Fatal("SlaveBegin", "Not all needed libraries were loaded");
static Bool_t isCalled = kFALSE;
Bool_t init = kFALSE;
Bool_t initOK = kTRUE;
// Start with memory as current dir and make sure by default histograms do not get attached to files.
TH1::AddDirectory(kFALSE);
task->CreateOutputObjects();
+ if (!task->CheckPostData()) {
+ Error("SlaveBegin","####### IMPORTANT! ####### \n\n\n\
+ Task %s (%s) did not call PostData() for all its outputs in (User)CreateOutputObjects()\n\n\
+ ####### FIX YOUR CODE, THIS WILL PRODUCE A FATAL ERROR IN FUTURE! ##########", task->GetName(), task->ClassName());
+ }
if (getsysInfo) AliSysInfo::AddStamp(Form("%s_CREATEOUTOBJ",task->ClassName()), 0, itask, 0);
itask++;
}
delete arr;
}
+//______________________________________________________________________________
+Bool_t AliAnalysisManager::CheckTasks() const
+{
+// Check consistency of tasks.
+ // Get the pointer to AliAnalysisTaskSE::Class()
+ TClass *badptr = (TClass*)gROOT->ProcessLine("AliAnalysisTaskSE::Class()");
+ // Loop all tasks to check if their corresponding library was loaded
+ TIter next(fTasks);
+ TObject *obj;
+ while ((obj=next())) {
+ if (obj->IsA() == badptr) {
+ Error("CheckTasks", "##################\n \
+ Class for task %s NOT loaded. You probably forgot to load the library for this task (or compile it dynamically).\n###########################\n",obj->GetName());
+ return kFALSE;
+ }
+ }
+ return kTRUE;
+}
+
//______________________________________________________________________________
void AliAnalysisManager::PrintStatus(Option_t *option) const
{
cdir->cd();
return -1;
}
+ if (!CheckTasks()) Fatal("StartAnalysis", "Not all needed libraries were loaded");
if (fDebug > 1) printf("StartAnalysis %s\n",GetName());
fMaxEntries = nentries;
fIsRemote = kFALSE;
while ((task=(AliAnalysisTask*)nextT())) {
TH1::AddDirectory(kFALSE);
task->CreateOutputObjects();
+ if (!task->CheckPostData()) {
+ Error("SlaveBegin","####### IMPORTANT! ####### \n\n\n\
+ Task %s (%s) did not call PostData() for all its outputs in (User)CreateOutputObjects()\n\n\
+ ########### FIX YOUR CODE, THIS WILL PRODUCE A FATAL ERROR IN FUTURE! ###########", task->GetName(), task->ClassName());
+ }
if (getsysInfo) AliSysInfo::AddStamp(Form("%s_CREATEOUTOBJ",task->ClassName()), 0, itask, 0);
gROOT->cd();
itask++;