]>
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 | // | |
10 | ||
11 | gSystem->Load("libANALYSIS.so"); | |
12 | gSystem->Load("libTRDqaAnalysis.so"); | |
13 | ||
14 | // Setup chain | |
15 | TChain *chain = new TChain("esdTree"); | |
16 | //chain->SetBranchStatus("*",0); | |
17 | //chain->SetBranchStatus("*fTracks*",1); | |
18 | //esdTree->SetBranchStatus("ESDfriend*",1); | |
19 | ||
20 | int nfiles = 0; | |
21 | fstream coll(chainName, ios_base::in); | |
22 | TString line; | |
23 | while (line.ReadLine(coll)) { | |
24 | cout << line.Data() << endl; | |
25 | chain->Add(line.Data()); | |
26 | nfiles++; | |
27 | if (limit && nfiles > limit) break; | |
28 | } | |
29 | ||
30 | // Create an analysis manager | |
31 | AliAnalysisManager *mgr = new AliAnalysisManager("qaTasks", "No safety"); | |
8e2f611a | 32 | AliAnalysisTask *tasks[4]; |
33 | AliAnalysisDataContainer *out[4]; | |
917559ee | 34 | |
35 | tasks[0] = new AliTRDqaElectronSpectra("trdElectronSpectra"); | |
36 | tasks[1] = new AliTRDqaESDFriends("trdESDFriends"); | |
37 | tasks[2] = new AliTRDqaEnergyDeposit("trdEnergyDeposit"); | |
8e2f611a | 38 | tasks[3] = new AliTRDqaJPsi("trdJPsi"); |
917559ee | 39 | |
40 | AliAnalysisDataContainer *cinput = | |
41 | mgr->CreateContainer("inputESD", TTree::Class(), AliAnalysisManager::kInputContainer); | |
42 | ||
43 | out[0] = mgr->CreateContainer("oES", TObjArray::Class(), AliAnalysisManager::kOutputContainer); | |
44 | out[1] = mgr->CreateContainer("oEF", TObjArray::Class(), AliAnalysisManager::kOutputContainer); | |
45 | out[2] = mgr->CreateContainer("oED", TObjArray::Class(), AliAnalysisManager::kOutputContainer); | |
8e2f611a | 46 | out[3] = mgr->CreateContainer("oEJ", TObjArray::Class(), AliAnalysisManager::kOutputContainer); |
917559ee | 47 | |
48 | // register | |
8e2f611a | 49 | for(int i=0; i<4; i++) { |
917559ee | 50 | mgr->AddTask(tasks[i]); |
51 | mgr->ConnectInput(tasks[i],0,cinput); | |
52 | mgr->ConnectOutput(tasks[i],0,out[i]); | |
53 | } | |
54 | ||
55 | // Connect input data | |
56 | cout << "connect to data" << endl; | |
57 | cinput->SetData(chain); | |
58 | Long_t t0 = gSystem->Now(); | |
59 | ||
60 | TStopwatch sw; | |
61 | sw.Start(); | |
62 | ||
63 | cout << "Initializing" << endl; | |
64 | if (mgr->InitAnalysis()) { | |
65 | mgr->PrintStatus(); | |
66 | mgr->StartAnalysis("local", chain); | |
67 | } | |
68 | ||
69 | sw.Stop(); | |
70 | sw.Print(); | |
71 | ||
72 | Long_t t1 = gSystem->Now(); | |
73 | double time = 1e-3 * (t1-t0); | |
74 | ||
75 | //cout << "Size = " << mgr->GetNBytes()*1e-6 << " MB" << endl; | |
76 | //cout << "Time = " << time << " s" << endl; | |
77 | //cout << "Speed = " << 1e-6*mgr->GetNBytes()/time << " MB/s" << endl; | |
78 | //cout << "Events = " << mgr->GetNEvents()/time << " Events/s" << endl; | |
79 | ||
80 | //gSystem->Exit(0); | |
81 | ||
82 | ||
83 | } |