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
12 gSystem->Load("libTree");
13 gSystem->Load("libGeom");
14 gSystem->Load("libVMC");
15 gSystem->Load("libSTEERBase");
16 gSystem->Load("libESD");
19 gSystem->Load("libANALYSIS");
20 gSystem->Load("libANALYSISalice");
21 gSystem->Load("libTRDqaAnalysis");
24 TChain *chain = new TChain("esdTree");
25 //chain->SetBranchStatus("*",0);
26 //chain->SetBranchStatus("*fTracks*",1);
27 //chain->SetBranchStatus("ESDfriend*",1);
28 //chain->SetBranchStatus("ESDfriend.*",1);
31 fstream coll(chainName, ios_base::in);
33 while (line.ReadLine(coll)) {
34 cout << line.Data() << endl;
35 chain->Add(line.Data());
37 if (limit && nfiles > limit) break;
40 // Create an analysis manager
41 AliAnalysisManager *mgr = new AliAnalysisManager("qaTasks", "title");
42 AliAnalysisTask *tasks[5];
43 AliAnalysisDataContainer *out[5];
45 tasks[0] = new AliTRDqaElectronSpectra("trdElectronSpectra");
46 tasks[1] = new AliTRDqaESDFriends("trdESDFriends");
47 tasks[2] = new AliTRDqaEnergyDeposit("trdEnergyDeposit");
48 tasks[3] = new AliTRDqaBasic("trdBasic");
49 tasks[4] = new AliTRDqaJPsi("trdJPsi");
51 AliAnalysisDataContainer *cinput =
52 mgr->CreateContainer("inputESD", TTree::Class(), AliAnalysisManager::kInputContainer);
54 out[0] = mgr->CreateContainer("oES", TObjArray::Class(), AliAnalysisManager::kOutputContainer);
55 out[1] = mgr->CreateContainer("oEF", TObjArray::Class(), AliAnalysisManager::kOutputContainer);
56 out[2] = mgr->CreateContainer("oED", TObjArray::Class(), AliAnalysisManager::kOutputContainer);
57 out[3] = mgr->CreateContainer("oBS", TObjArray::Class(), AliAnalysisManager::kOutputContainer);
58 out[4] = mgr->CreateContainer("oEJ", TObjArray::Class(), AliAnalysisManager::kOutputContainer);
61 for(int i=0; i<4; i++) {
62 mgr->AddTask(tasks[i]);
63 mgr->ConnectInput(tasks[i],0,cinput);
64 mgr->ConnectOutput(tasks[i],0,out[i]);
68 cout << "connect to data" << endl;
69 cinput->SetData(chain);
70 Long_t t0 = gSystem->Now();
75 cout << "Initializing" << endl;
76 if (mgr->InitAnalysis()) {
78 mgr->StartAnalysis("local", chain);
84 Long_t t1 = gSystem->Now();
85 double time = 1e-3 * (t1-t0);
87 //cout << "Size = " << mgr->GetNBytes()*1e-6 << " MB" << endl;
88 //cout << "Time = " << time << " s" << endl;
89 //cout << "Speed = " << 1e-6*mgr->GetNBytes()/time << " MB/s" << endl;
90 //cout << "Events = " << mgr->GetNEvents()/time << " Events/s" << endl;