-1 = failure
fSelector->GetStatus() when run via TSelector
0 otherwise
}
//______________________________________________________________________________
}
//______________________________________________________________________________
-void AliAnalysisManager::StartAnalysis(const char *type, TTree *tree, Long64_t nentries, Long64_t firstentry)
+Long64_t AliAnalysisManager::StartAnalysis(const char *type, TTree *tree, Long64_t nentries, Long64_t firstentry)
{
// Start analysis for this manager. Analysis task can be: LOCAL, PROOF, GRID or
// MIX. Process nentries starting from firstentry
if (!fInitOK) {
Error("StartAnalysis","Analysis manager was not initialized !");
{
// Start analysis for this manager. Analysis task can be: LOCAL, PROOF, GRID or
// MIX. Process nentries starting from firstentry
if (!fInitOK) {
Error("StartAnalysis","Analysis manager was not initialized !");
}
if (fDebug > 0) printf("StartAnalysis %s\n",GetName());
TString anaType = type;
}
if (fDebug > 0) printf("StartAnalysis %s\n",GetName());
TString anaType = type;
if (!fGridHandler) {
Error("StartAnalysis", "Cannot start grid analysis without a grid handler.");
Info("===", "Add an AliAnalysisAlien object as plugin for this manager and configure it.");
if (!fGridHandler) {
Error("StartAnalysis", "Cannot start grid analysis without a grid handler.");
Info("===", "Add an AliAnalysisAlien object as plugin for this manager and configure it.");
}
// Write analysis manager in the analysis file
cout << "===== RUNNING GRID ANALYSIS: " << GetName() << endl;
}
// Write analysis manager in the analysis file
cout << "===== RUNNING GRID ANALYSIS: " << GetName() << endl;
}
if (!fGridHandler->StartAnalysis(nentries, firstentry)) {
Info("StartAnalysis", "Grid analysis was stopped and cannot be terminated");
}
if (!fGridHandler->StartAnalysis(nentries, firstentry)) {
Info("StartAnalysis", "Grid analysis was stopped and cannot be terminated");
}
// Terminate grid analysis
}
// Terminate grid analysis
- if (fSelector && fSelector->GetStatus() == -1) return;
- if (fGridHandler->GetRunMode() == AliAnalysisGrid::kOffline) return;
+ if (fSelector && fSelector->GetStatus() == -1) return -1;
+ if (fGridHandler->GetRunMode() == AliAnalysisGrid::kOffline) return 0;
cout << "===== MERGING OUTPUTS REGISTERED BY YOUR ANALYSIS JOB: " << GetName() << endl;
if (!fGridHandler->MergeOutputs()) {
// Return if outputs could not be merged or if it alien handler
// was configured for offline mode or local testing.
cout << "===== MERGING OUTPUTS REGISTERED BY YOUR ANALYSIS JOB: " << GetName() << endl;
if (!fGridHandler->MergeOutputs()) {
// Return if outputs could not be merged or if it alien handler
// was configured for offline mode or local testing.
}
ImportWrappers(NULL);
Terminate();
}
ImportWrappers(NULL);
Terminate();
}
char line[256];
SetEventLoop(kFALSE);
}
char line[256];
SetEventLoop(kFALSE);
chain = (TChain*)tree;
if (!chain || !chain->GetListOfFiles()->First()) {
Error("StartAnalysis", "Cannot process null or empty chain...");
chain = (TChain*)tree;
if (!chain || !chain->GetListOfFiles()->First()) {
Error("StartAnalysis", "Cannot process null or empty chain...");
if (IsExternalLoop()) {
Info("StartAnalysis", "Initialization done. Event loop is controlled externally.\
\nSetData for top container, call ExecAnalysis in a loop and then Terminate manually");
if (IsExternalLoop()) {
Info("StartAnalysis", "Initialization done. Event loop is controlled externally.\
\nSetData for top container, call ExecAnalysis in a loop and then Terminate manually");
}
ExecAnalysis();
Terminate();
}
ExecAnalysis();
Terminate();
}
// Run tree-based analysis via AliAnalysisSelector
cout << "===== RUNNING LOCAL ANALYSIS " << GetName() << " ON TREE " << tree->GetName() << endl;
}
// Run tree-based analysis via AliAnalysisSelector
cout << "===== RUNNING LOCAL ANALYSIS " << GetName() << " ON TREE " << tree->GetName() << endl;
case kProofAnalysis:
if (!gROOT->GetListOfProofs() || !gROOT->GetListOfProofs()->GetEntries()) {
Error("StartAnalysis", "No PROOF!!! Aborting.");
case kProofAnalysis:
if (!gROOT->GetListOfProofs() || !gROOT->GetListOfProofs()->GetEntries()) {
Error("StartAnalysis", "No PROOF!!! Aborting.");
}
sprintf(line, "gProof->AddInput((TObject*)0x%lx);", (ULong_t)this);
gROOT->ProcessLine(line);
}
sprintf(line, "gProof->AddInput((TObject*)0x%lx);", (ULong_t)this);
gROOT->ProcessLine(line);
chain->Process("AliAnalysisSelector", "", nentries, firstentry);
} else {
Error("StartAnalysis", "No chain!!! Aborting.");
chain->Process("AliAnalysisSelector", "", nentries, firstentry);
} else {
Error("StartAnalysis", "No chain!!! Aborting.");
}
break;
case kGridAnalysis:
}
break;
case kGridAnalysis:
// Run event mixing analysis
if (!fEventPool) {
Error("StartAnalysis", "Cannot run event mixing without event pool");
// Run event mixing analysis
if (!fEventPool) {
Error("StartAnalysis", "Cannot run event mixing without event pool");
}
cout << "===== RUNNING EVENT MIXING ANALYSIS " << GetName() << endl;
fSelector = new AliAnalysisSelector(this);
}
cout << "===== RUNNING EVENT MIXING ANALYSIS " << GetName() << endl;
fSelector = new AliAnalysisSelector(this);
}
PackOutput(fSelector->GetOutputList());
Terminate();
}
PackOutput(fSelector->GetOutputList());
Terminate();
+ }
+ if (fSelector) return fSelector->GetStatus();
+ return 0;
}
//______________________________________________________________________________
}
//______________________________________________________________________________
-void AliAnalysisManager::StartAnalysis(const char *type, const char *dataset, Long64_t nentries, Long64_t firstentry)
+Long64_t AliAnalysisManager::StartAnalysis(const char *type, const char *dataset, Long64_t nentries, Long64_t firstentry)
{
// Start analysis for this manager on a given dataset. Analysis task can be:
// LOCAL, PROOF or GRID. Process nentries starting from firstentry.
if (!fInitOK) {
Error("StartAnalysis","Analysis manager was not initialized !");
{
// Start analysis for this manager on a given dataset. Analysis task can be:
// LOCAL, PROOF or GRID. Process nentries starting from firstentry.
if (!fInitOK) {
Error("StartAnalysis","Analysis manager was not initialized !");
}
if (fDebug > 0) printf("StartAnalysis %s\n",GetName());
TString anaType = type;
anaType.ToLower();
if (!anaType.Contains("proof")) {
Error("StartAnalysis", "Cannot process datasets in %s mode. Try PROOF.", type);
}
if (fDebug > 0) printf("StartAnalysis %s\n",GetName());
TString anaType = type;
anaType.ToLower();
if (!anaType.Contains("proof")) {
Error("StartAnalysis", "Cannot process datasets in %s mode. Try PROOF.", type);
}
fMode = kProofAnalysis;
char line[256];
}
fMode = kProofAnalysis;
char line[256];
if (!gROOT->GetListOfProofs() || !gROOT->GetListOfProofs()->GetEntries()) {
Error("StartAnalysis", "No PROOF!!! Aborting.");
if (!gROOT->GetListOfProofs() || !gROOT->GetListOfProofs()->GetEntries()) {
Error("StartAnalysis", "No PROOF!!! Aborting.");
}
sprintf(line, "gProof->AddInput((TObject*)0x%lx);", (ULong_t)this);
gROOT->ProcessLine(line);
sprintf(line, "gProof->GetDataSet(\"%s\");", dataset);
if (!gROOT->ProcessLine(line)) {
Error("StartAnalysis", "Dataset %s not found", dataset);
}
sprintf(line, "gProof->AddInput((TObject*)0x%lx);", (ULong_t)this);
gROOT->ProcessLine(line);
sprintf(line, "gProof->GetDataSet(\"%s\");", dataset);
if (!gROOT->ProcessLine(line)) {
Error("StartAnalysis", "Dataset %s not found", dataset);
}
sprintf(line, "gProof->Process(\"%s\", \"AliAnalysisSelector\", \"\", %lld, %lld);",
dataset, nentries, firstentry);
cout << "===== RUNNING PROOF ANALYSIS " << GetName() << " ON DATASET " << dataset << endl;
gROOT->ProcessLine(line);
}
sprintf(line, "gProof->Process(\"%s\", \"AliAnalysisSelector\", \"\", %lld, %lld);",
dataset, nentries, firstentry);
cout << "===== RUNNING PROOF ANALYSIS " << GetName() << " ON DATASET " << dataset << endl;
gROOT->ProcessLine(line);
+ if (fSelector) return fSelector->GetStatus();
+ return 0;
}
//______________________________________________________________________________
}
//______________________________________________________________________________
static TFile *OpenFile(AliAnalysisDataContainer *cont, const char *option, Bool_t ignoreProof=kFALSE);
void PackOutput(TList *target);
void RegisterExtraFile(const char *fname);
static TFile *OpenFile(AliAnalysisDataContainer *cont, const char *option, Bool_t ignoreProof=kFALSE);
void PackOutput(TList *target);
void RegisterExtraFile(const char *fname);
- void StartAnalysis(const char *type="local", TTree *tree=0, Long64_t nentries=1234567890, Long64_t firstentry=0);
- void StartAnalysis(const char *type, const char *dataset, Long64_t nentries=1234567890, Long64_t firstentry=0);
+ Long64_t StartAnalysis(const char *type="local", TTree *tree=0, Long64_t nentries=1234567890, Long64_t firstentry=0);
+ Long64_t StartAnalysis(const char *type, const char *dataset, Long64_t nentries=1234567890, Long64_t firstentry=0);
virtual void SlaveBegin(TTree *tree);
virtual void Terminate();
void UnpackOutput(TList *source);
virtual void SlaveBegin(TTree *tree);
virtual void Terminate();
void UnpackOutput(TList *source);
ClassImp(AliAnalysisSelector)
ClassImp(AliAnalysisSelector)
+//______________________________________________________________________________
+AliAnalysisSelector::AliAnalysisSelector()
+ :TSelector(),
+ fInitialized(kFALSE),
+ fAnalysis(NULL)
+{
+// Dummy ctor.
+ fAnalysis = AliAnalysisManager::GetAnalysisManager();
+ if (fAnalysis) fAnalysis->SetSelector(this);
+}
+
//______________________________________________________________________________
AliAnalysisSelector::AliAnalysisSelector(AliAnalysisManager *mgr)
:TSelector(),
//______________________________________________________________________________
AliAnalysisSelector::AliAnalysisSelector(AliAnalysisManager *mgr)
:TSelector(),
{
// Constructor. Called by AliAnalysisManager which registers itself on the
// selector running on the master.
{
// Constructor. Called by AliAnalysisManager which registers itself on the
// selector running on the master.
+ mgr->SetSelector(this);
}
//______________________________________________________________________________
}
//______________________________________________________________________________
void RestoreAnalysisManager();
public:
void RestoreAnalysisManager();
public:
- AliAnalysisSelector() : TSelector(), fInitialized(kFALSE), fAnalysis(NULL) {}
AliAnalysisSelector(AliAnalysisManager *mgr);
virtual ~AliAnalysisSelector();
AliAnalysisSelector(AliAnalysisManager *mgr);
virtual ~AliAnalysisSelector();