2 void runTRDqaAnalysis(const char *chainName, int limit = 0) {
4 // runs the analysis train
6 // chainName -- a name of a file with a list of ESDs
7 // limit -- number of files to be processed
11 gSystem->Load("libANALYSIS.so");
12 gSystem->Load("libTRDqaAnalysis.so");
15 TChain *chain = new TChain("esdTree");
16 //chain->SetBranchStatus("*",0);
17 //chain->SetBranchStatus("*fTracks*",1);
18 //esdTree->SetBranchStatus("ESDfriend*",1);
21 fstream coll(chainName, ios_base::in);
23 while (line.ReadLine(coll)) {
24 cout << line.Data() << endl;
25 chain->Add(line.Data());
27 if (limit && nfiles > limit) break;
30 // Create an analysis manager
31 AliAnalysisManager *mgr = new AliAnalysisManager("qaTasks", "No safety");
32 AliAnalysisTask *tasks[3];
33 AliAnalysisDataContainer *out[3];
35 tasks[0] = new AliTRDqaElectronSpectra("trdElectronSpectra");
36 tasks[1] = new AliTRDqaESDFriends("trdESDFriends");
37 tasks[2] = new AliTRDqaEnergyDeposit("trdEnergyDeposit");
39 AliAnalysisDataContainer *cinput =
40 mgr->CreateContainer("inputESD", TTree::Class(), AliAnalysisManager::kInputContainer);
42 out[0] = mgr->CreateContainer("oES", TObjArray::Class(), AliAnalysisManager::kOutputContainer);
43 out[1] = mgr->CreateContainer("oEF", TObjArray::Class(), AliAnalysisManager::kOutputContainer);
44 out[2] = mgr->CreateContainer("oED", TObjArray::Class(), AliAnalysisManager::kOutputContainer);
47 for(int i=0; i<3; i++) {
48 mgr->AddTask(tasks[i]);
49 mgr->ConnectInput(tasks[i],0,cinput);
50 mgr->ConnectOutput(tasks[i],0,out[i]);
54 cout << "connect to data" << endl;
55 cinput->SetData(chain);
56 Long_t t0 = gSystem->Now();
61 cout << "Initializing" << endl;
62 if (mgr->InitAnalysis()) {
64 mgr->StartAnalysis("local", chain);
70 Long_t t1 = gSystem->Now();
71 double time = 1e-3 * (t1-t0);
73 //cout << "Size = " << mgr->GetNBytes()*1e-6 << " MB" << endl;
74 //cout << "Time = " << time << " s" << endl;
75 //cout << "Speed = " << 1e-6*mgr->GetNBytes()/time << " MB/s" << endl;
76 //cout << "Events = " << mgr->GetNEvents()/time << " Events/s" << endl;