#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)
AliAnalysisSelector::AliAnalysisSelector()
:TSelector(),
fInitialized(kFALSE),
fAnalysis(NULL)
{
fAnalysis = AliAnalysisManager::GetAnalysisManager();
if (fAnalysis) fAnalysis->SetSelector(this);
}
AliAnalysisSelector::AliAnalysisSelector(AliAnalysisManager *mgr)
:TSelector(),
fInitialized(kFALSE),
fAnalysis(mgr)
{
mgr->SetSelector(this);
}
AliAnalysisSelector::~AliAnalysisSelector()
{
}
void AliAnalysisSelector::Init(TTree *tree)
{
if (!fAnalysis) {
Error("Init", "Analysis manager NULL !");
Abort("Cannot initialize without analysis manager. Aborting.");
SetStatus(-1);
return;
}
if (fAnalysis->GetDebugLevel()>1) {
cout << "->AliAnalysisSelector->Init()" << endl;
}
if (!tree) {
Error("Init", "Input tree is NULL !");
Abort("Cannot initialize without tree. Aborting.");
SetStatus(-1);
return;
}
fInitialized = fAnalysis->Init(tree);
if (!fInitialized) {
Error("Init", "Some error occured during analysis manager initialization. Aborting.");
Abort("Error during AliAnalysisManager::Init()");
SetStatus(-1);
return;
}
if (fAnalysis->GetDebugLevel()>1) {
cout << "<-AliAnalysisSelector->Init()" << endl;
}
}
void AliAnalysisSelector::Begin(TTree *)
{
RestoreAnalysisManager();
if (fAnalysis && fAnalysis->GetDebugLevel()>1) {
cout << "->AliAnalysisSelector->Begin: Analysis manager restored" << endl;
gROOT->SetMustClean(fAnalysis->MustClean());
}
}
void AliAnalysisSelector::SlaveBegin(TTree *tree)
{
RestoreAnalysisManager();
if (fAnalysis) {
gROOT->SetMustClean(fAnalysis->MustClean());
if (fAnalysis->GetDebugLevel()>1) {
cout << "->AliAnalysisSelector->SlaveBegin() after Restore" << endl;
}
fAnalysis->SlaveBegin(tree);
if (fAnalysis->GetDebugLevel()>1) {
cout << "<-AliAnalysisSelector->SlaveBegin()" << endl;
}
}
}
Bool_t AliAnalysisSelector::Notify()
{
if (fAnalysis) return fAnalysis->Notify();
return kFALSE;
}
Bool_t AliAnalysisSelector::Process(Long64_t entry)
{
static Int_t count = 0;
count++;
if (fAnalysis->GetDebugLevel() > 1) {
cout << "->AliAnalysisSelector::Process()" << endl;
}
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);
Abort("Bad stream to file. Trying next image.", kAbortFile);
return kFALSE;
} else {
fAnalysis->ExecAnalysis();
fAnalysis->CountEvent(1,1,0,0);
}
if (fAnalysis->GetDebugLevel() > 1) {
cout << "<-AliAnalysisSelector::Process()" << endl;
}
return kTRUE;
}
void AliAnalysisSelector::RestoreAnalysisManager()
{
if (!fAnalysis) {
TIter next(fInput);
TObject *obj;
while ((obj=next())) {
if (obj->IsA() == AliAnalysisManager::Class()) {
fAnalysis = (AliAnalysisManager*)obj;
fAnalysis->SetSelector(this);
if (fAnalysis->GetDebugLevel()>1) {
cout << "->AliAnalysisSelector->RestoreAnalysisManager: Analysis manager restored" << endl;
}
break;
}
}
if (!fAnalysis) {
Error("SlaveBegin", "Analysis manager not found in the input list");
return;
}
}
}
void AliAnalysisSelector::SlaveTerminate()
{
gROOT->SetMustClean(kTRUE);
if (fStatus == -1) return;
if (fAnalysis->GetAnalysisType() == AliAnalysisManager::kMixingAnalysis) return;
if (fAnalysis->GetDebugLevel() > 1) {
cout << "->AliAnalysisSelector::SlaveTerminate()" << endl;
}
fAnalysis->PackOutput(fOutput);
if (fAnalysis->GetDebugLevel() > 1) {
cout << "<-AliAnalysisSelector::SlaveTerminate()" << endl;
}
}
void AliAnalysisSelector::Terminate()
{
gROOT->SetMustClean(kTRUE);
if (fStatus == -1) return;
if (!fAnalysis) {
Error("Terminate","AliAnalysisSelector::Terminate: No analysis manager!!!");
return;
}
if (fAnalysis->GetAnalysisType() == AliAnalysisManager::kMixingAnalysis) return;
if (fAnalysis->GetDebugLevel() > 1) {
cout << "->AliAnalysisSelector::Terminate()" << endl;
}
fAnalysis->UnpackOutput(fOutput);
fAnalysis->Terminate();
if (fAnalysis->GetDebugLevel() > 1) {
cout << "<-AliAnalysisSelector::Terminate()" << endl;
}
}
AliAnalysisSelector.cxx:1 AliAnalysisSelector.cxx:2 AliAnalysisSelector.cxx:3 AliAnalysisSelector.cxx:4 AliAnalysisSelector.cxx:5 AliAnalysisSelector.cxx:6 AliAnalysisSelector.cxx:7 AliAnalysisSelector.cxx:8 AliAnalysisSelector.cxx:9 AliAnalysisSelector.cxx:10 AliAnalysisSelector.cxx:11 AliAnalysisSelector.cxx:12 AliAnalysisSelector.cxx:13 AliAnalysisSelector.cxx:14 AliAnalysisSelector.cxx:15 AliAnalysisSelector.cxx:16 AliAnalysisSelector.cxx:17 AliAnalysisSelector.cxx:18 AliAnalysisSelector.cxx:19 AliAnalysisSelector.cxx:20 AliAnalysisSelector.cxx:21 AliAnalysisSelector.cxx:22 AliAnalysisSelector.cxx:23 AliAnalysisSelector.cxx:24 AliAnalysisSelector.cxx:25 AliAnalysisSelector.cxx:26 AliAnalysisSelector.cxx:27 AliAnalysisSelector.cxx:28 AliAnalysisSelector.cxx:29 AliAnalysisSelector.cxx:30 AliAnalysisSelector.cxx:31 AliAnalysisSelector.cxx:32 AliAnalysisSelector.cxx:33 AliAnalysisSelector.cxx:34 AliAnalysisSelector.cxx:35 AliAnalysisSelector.cxx:36 AliAnalysisSelector.cxx:37 AliAnalysisSelector.cxx:38 AliAnalysisSelector.cxx:39 AliAnalysisSelector.cxx:40 AliAnalysisSelector.cxx:41 AliAnalysisSelector.cxx:42 AliAnalysisSelector.cxx:43 AliAnalysisSelector.cxx:44 AliAnalysisSelector.cxx:45 AliAnalysisSelector.cxx:46 AliAnalysisSelector.cxx:47 AliAnalysisSelector.cxx:48 AliAnalysisSelector.cxx:49 AliAnalysisSelector.cxx:50 AliAnalysisSelector.cxx:51 AliAnalysisSelector.cxx:52 AliAnalysisSelector.cxx:53 AliAnalysisSelector.cxx:54 AliAnalysisSelector.cxx:55 AliAnalysisSelector.cxx:56 AliAnalysisSelector.cxx:57 AliAnalysisSelector.cxx:58 AliAnalysisSelector.cxx:59 AliAnalysisSelector.cxx:60 AliAnalysisSelector.cxx:61 AliAnalysisSelector.cxx:62 AliAnalysisSelector.cxx:63 AliAnalysisSelector.cxx:64 AliAnalysisSelector.cxx:65 AliAnalysisSelector.cxx:66 AliAnalysisSelector.cxx:67 AliAnalysisSelector.cxx:68 AliAnalysisSelector.cxx:69 AliAnalysisSelector.cxx:70 AliAnalysisSelector.cxx:71 AliAnalysisSelector.cxx:72 AliAnalysisSelector.cxx:73 AliAnalysisSelector.cxx:74 AliAnalysisSelector.cxx:75 AliAnalysisSelector.cxx:76 AliAnalysisSelector.cxx:77 AliAnalysisSelector.cxx:78 AliAnalysisSelector.cxx:79 AliAnalysisSelector.cxx:80 AliAnalysisSelector.cxx:81 AliAnalysisSelector.cxx:82 AliAnalysisSelector.cxx:83 AliAnalysisSelector.cxx:84 AliAnalysisSelector.cxx:85 AliAnalysisSelector.cxx:86 AliAnalysisSelector.cxx:87 AliAnalysisSelector.cxx:88 AliAnalysisSelector.cxx:89 AliAnalysisSelector.cxx:90 AliAnalysisSelector.cxx:91 AliAnalysisSelector.cxx:92 AliAnalysisSelector.cxx:93 AliAnalysisSelector.cxx:94 AliAnalysisSelector.cxx:95 AliAnalysisSelector.cxx:96 AliAnalysisSelector.cxx:97 AliAnalysisSelector.cxx:98 AliAnalysisSelector.cxx:99 AliAnalysisSelector.cxx:100 AliAnalysisSelector.cxx:101 AliAnalysisSelector.cxx:102 AliAnalysisSelector.cxx:103 AliAnalysisSelector.cxx:104 AliAnalysisSelector.cxx:105 AliAnalysisSelector.cxx:106 AliAnalysisSelector.cxx:107 AliAnalysisSelector.cxx:108 AliAnalysisSelector.cxx:109 AliAnalysisSelector.cxx:110 AliAnalysisSelector.cxx:111 AliAnalysisSelector.cxx:112 AliAnalysisSelector.cxx:113 AliAnalysisSelector.cxx:114 AliAnalysisSelector.cxx:115 AliAnalysisSelector.cxx:116 AliAnalysisSelector.cxx:117 AliAnalysisSelector.cxx:118 AliAnalysisSelector.cxx:119 AliAnalysisSelector.cxx:120 AliAnalysisSelector.cxx:121 AliAnalysisSelector.cxx:122 AliAnalysisSelector.cxx:123 AliAnalysisSelector.cxx:124 AliAnalysisSelector.cxx:125 AliAnalysisSelector.cxx:126 AliAnalysisSelector.cxx:127 AliAnalysisSelector.cxx:128 AliAnalysisSelector.cxx:129 AliAnalysisSelector.cxx:130 AliAnalysisSelector.cxx:131 AliAnalysisSelector.cxx:132 AliAnalysisSelector.cxx:133 AliAnalysisSelector.cxx:134 AliAnalysisSelector.cxx:135 AliAnalysisSelector.cxx:136 AliAnalysisSelector.cxx:137 AliAnalysisSelector.cxx:138 AliAnalysisSelector.cxx:139 AliAnalysisSelector.cxx:140 AliAnalysisSelector.cxx:141 AliAnalysisSelector.cxx:142 AliAnalysisSelector.cxx:143 AliAnalysisSelector.cxx:144 AliAnalysisSelector.cxx:145 AliAnalysisSelector.cxx:146 AliAnalysisSelector.cxx:147 AliAnalysisSelector.cxx:148 AliAnalysisSelector.cxx:149 AliAnalysisSelector.cxx:150 AliAnalysisSelector.cxx:151 AliAnalysisSelector.cxx:152 AliAnalysisSelector.cxx:153 AliAnalysisSelector.cxx:154 AliAnalysisSelector.cxx:155 AliAnalysisSelector.cxx:156 AliAnalysisSelector.cxx:157 AliAnalysisSelector.cxx:158 AliAnalysisSelector.cxx:159 AliAnalysisSelector.cxx:160 AliAnalysisSelector.cxx:161 AliAnalysisSelector.cxx:162 AliAnalysisSelector.cxx:163 AliAnalysisSelector.cxx:164 AliAnalysisSelector.cxx:165 AliAnalysisSelector.cxx:166 AliAnalysisSelector.cxx:167 AliAnalysisSelector.cxx:168 AliAnalysisSelector.cxx:169 AliAnalysisSelector.cxx:170 AliAnalysisSelector.cxx:171 AliAnalysisSelector.cxx:172 AliAnalysisSelector.cxx:173 AliAnalysisSelector.cxx:174 AliAnalysisSelector.cxx:175 AliAnalysisSelector.cxx:176 AliAnalysisSelector.cxx:177 AliAnalysisSelector.cxx:178 AliAnalysisSelector.cxx:179 AliAnalysisSelector.cxx:180 AliAnalysisSelector.cxx:181 AliAnalysisSelector.cxx:182 AliAnalysisSelector.cxx:183 AliAnalysisSelector.cxx:184 AliAnalysisSelector.cxx:185 AliAnalysisSelector.cxx:186 AliAnalysisSelector.cxx:187 AliAnalysisSelector.cxx:188 AliAnalysisSelector.cxx:189 AliAnalysisSelector.cxx:190 AliAnalysisSelector.cxx:191 AliAnalysisSelector.cxx:192 AliAnalysisSelector.cxx:193 AliAnalysisSelector.cxx:194 AliAnalysisSelector.cxx:195 AliAnalysisSelector.cxx:196 AliAnalysisSelector.cxx:197 AliAnalysisSelector.cxx:198 AliAnalysisSelector.cxx:199 AliAnalysisSelector.cxx:200 AliAnalysisSelector.cxx:201 AliAnalysisSelector.cxx:202 AliAnalysisSelector.cxx:203 AliAnalysisSelector.cxx:204 AliAnalysisSelector.cxx:205 AliAnalysisSelector.cxx:206 AliAnalysisSelector.cxx:207 AliAnalysisSelector.cxx:208 AliAnalysisSelector.cxx:209 AliAnalysisSelector.cxx:210 AliAnalysisSelector.cxx:211 AliAnalysisSelector.cxx:212 AliAnalysisSelector.cxx:213 AliAnalysisSelector.cxx:214 AliAnalysisSelector.cxx:215 AliAnalysisSelector.cxx:216 AliAnalysisSelector.cxx:217 AliAnalysisSelector.cxx:218 AliAnalysisSelector.cxx:219 AliAnalysisSelector.cxx:220 AliAnalysisSelector.cxx:221 AliAnalysisSelector.cxx:222 AliAnalysisSelector.cxx:223 AliAnalysisSelector.cxx:224 AliAnalysisSelector.cxx:225 AliAnalysisSelector.cxx:226 AliAnalysisSelector.cxx:227 AliAnalysisSelector.cxx:228 AliAnalysisSelector.cxx:229 AliAnalysisSelector.cxx:230 AliAnalysisSelector.cxx:231 AliAnalysisSelector.cxx:232 AliAnalysisSelector.cxx:233 AliAnalysisSelector.cxx:234 AliAnalysisSelector.cxx:235 AliAnalysisSelector.cxx:236