]>
Commit | Line | Data |
---|---|---|
917559ee | 1 | |
2 | void runTRDqaAnalysis(const char *chainName, int limit = 0) { | |
3 | // | |
4 | // runs the analysis train | |
5 | // parameters: | |
6 | // chainName -- a name of a file with a list of ESDs | |
7 | // limit -- number of files to be processed | |
8 | // | |
9 | // | |
9bff9978 | 10 | |
11 | /**/ | |
4070f709 | 12 | gSystem->Load("libTree"); |
13 | gSystem->Load("libGeom"); | |
14 | gSystem->Load("libVMC"); | |
15 | gSystem->Load("libSTEERBase"); | |
16 | gSystem->Load("libESD"); | |
9bff9978 | 17 | /**/ |
917559ee | 18 | |
4070f709 | 19 | gSystem->Load("libANALYSIS"); |
20 | gSystem->Load("libANALYSISalice"); | |
21 | gSystem->Load("libTRDqaAnalysis"); | |
917559ee | 22 | |
9bff9978 | 23 | // Setup chain |
917559ee | 24 | TChain *chain = new TChain("esdTree"); |
25 | //chain->SetBranchStatus("*",0); | |
26 | //chain->SetBranchStatus("*fTracks*",1); | |
9bff9978 | 27 | //chain->SetBranchStatus("ESDfriend*",1); |
28 | //chain->SetBranchStatus("ESDfriend.*",1); | |
917559ee | 29 | |
30 | int nfiles = 0; | |
31 | fstream coll(chainName, ios_base::in); | |
32 | TString line; | |
33 | while (line.ReadLine(coll)) { | |
34 | cout << line.Data() << endl; | |
35 | chain->Add(line.Data()); | |
36 | nfiles++; | |
37 | if (limit && nfiles > limit) break; | |
38 | } | |
39 | ||
40 | // Create an analysis manager | |
9bff9978 | 41 | AliAnalysisManager *mgr = new AliAnalysisManager("qaTasks", "title"); |
42 | AliAnalysisTask *tasks[5]; | |
43 | AliAnalysisDataContainer *out[5]; | |
917559ee | 44 | |
45 | tasks[0] = new AliTRDqaElectronSpectra("trdElectronSpectra"); | |
46 | tasks[1] = new AliTRDqaESDFriends("trdESDFriends"); | |
47 | tasks[2] = new AliTRDqaEnergyDeposit("trdEnergyDeposit"); | |
9bff9978 | 48 | tasks[3] = new AliTRDqaBasic("trdBasic"); |
49 | tasks[4] = new AliTRDqaJPsi("trdJPsi"); | |
917559ee | 50 | |
51 | AliAnalysisDataContainer *cinput = | |
52 | mgr->CreateContainer("inputESD", TTree::Class(), AliAnalysisManager::kInputContainer); | |
53 | ||
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); | |
9bff9978 | 57 | out[3] = mgr->CreateContainer("oBS", TObjArray::Class(), AliAnalysisManager::kOutputContainer); |
58 | out[4] = mgr->CreateContainer("oEJ", TObjArray::Class(), AliAnalysisManager::kOutputContainer); | |
917559ee | 59 | |
60 | // register | |
8e2f611a | 61 | for(int i=0; i<4; i++) { |
917559ee | 62 | mgr->AddTask(tasks[i]); |
63 | mgr->ConnectInput(tasks[i],0,cinput); | |
64 | mgr->ConnectOutput(tasks[i],0,out[i]); | |
65 | } | |
66 | ||
67 | // Connect input data | |
68 | cout << "connect to data" << endl; | |
69 | cinput->SetData(chain); | |
70 | Long_t t0 = gSystem->Now(); | |
71 | ||
72 | TStopwatch sw; | |
73 | sw.Start(); | |
74 | ||
75 | cout << "Initializing" << endl; | |
76 | if (mgr->InitAnalysis()) { | |
77 | mgr->PrintStatus(); | |
78 | mgr->StartAnalysis("local", chain); | |
79 | } | |
80 | ||
81 | sw.Stop(); | |
82 | sw.Print(); | |
83 | ||
84 | Long_t t1 = gSystem->Now(); | |
85 | double time = 1e-3 * (t1-t0); | |
86 | ||
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; | |
91 | ||
92 | //gSystem->Exit(0); | |
93 | ||
94 | ||
95 | } |