#include <Riostream.h>
#include <TProcessID.h>
+#include <TROOT.h>
#include "AliAnalysisManager.h"
#include "AliAnalysisTask.h"
#include "AliAnalysisDataContainer.h"
#include "AliAnalysisSelector.h"
+using std::cout;
+using std::endl;
ClassImp(AliAnalysisSelector)
//______________________________________________________________________________
RestoreAnalysisManager();
if (fAnalysis && fAnalysis->GetDebugLevel()>1) {
cout << "->AliAnalysisSelector->Begin: Analysis manager restored" << endl;
+ gROOT->SetMustClean(fAnalysis->MustClean());
}
}
void AliAnalysisSelector::SlaveBegin(TTree *tree)
{
// Called on each worker. We "unpack" analysis manager here and call InitAnalysis.
- TObject::SetObjectStat(kFALSE);
RestoreAnalysisManager();
if (fAnalysis) {
+ gROOT->SetMustClean(fAnalysis->MustClean());
if (fAnalysis->GetDebugLevel()>1) {
cout << "->AliAnalysisSelector->SlaveBegin() after Restore" << endl;
}
Bool_t AliAnalysisSelector::Process(Long64_t entry)
{
// Event loop.
+ static Int_t count = 0;
+ count++;
if (fAnalysis->GetDebugLevel() > 1) {
cout << "->AliAnalysisSelector::Process()" << endl;
}
- Int_t nobjCount = TProcessID::GetObjectCount();
+ static Bool_t init=kTRUE;
+ static Int_t nobjCount = 0;
+ if(init) {
+ nobjCount = TProcessID::GetObjectCount();
+ init=kFALSE;
+ }
+ TProcessID::SetObjectCount(nobjCount);
Int_t returnCode = fAnalysis->GetEntry(entry);
if (returnCode <= 0) {
cout << "Error retrieving event:" << entry << " Skipping ..." << endl;
fAnalysis->CountEvent(1,0,1,0);
+ // Try to skip file
+ Abort("Bad stream to file. Trying next image.", kAbortFile);
+ return kFALSE;
} else {
fAnalysis->ExecAnalysis();
fAnalysis->CountEvent(1,1,0,0);
}
- TProcessID::SetObjectCount(nobjCount);
if (fAnalysis->GetDebugLevel() > 1) {
cout << "<-AliAnalysisSelector::Process()" << endl;
}
// The SlaveTerminate() function is called after all entries or objects
// have been processed. When running with PROOF SlaveTerminate() is called
// on each slave server.
+ gROOT->SetMustClean(kTRUE);
if (fStatus == -1) return; // TSelector won't abort...
if (fAnalysis->GetAnalysisType() == AliAnalysisManager::kMixingAnalysis) return;
if (fAnalysis->GetDebugLevel() > 1) {
// The Terminate() function is the last function to be called during
// a query. It always runs on the client, it can be used to present
// the results graphically or save the results to file.
+ gROOT->SetMustClean(kTRUE);
if (fStatus == -1) return; // TSelector won't abort...
if (!fAnalysis) {
Error("Terminate","AliAnalysisSelector::Terminate: No analysis manager!!!");