Add QA analysis classes
[u/mrichter/AliRoot.git] / TRD / qaAnalysis / runTRDqaAnalysis.C
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");
32   AliAnalysisTask *tasks[3];
33   AliAnalysisDataContainer *out[3];
34
35   tasks[0] = new AliTRDqaElectronSpectra("trdElectronSpectra");
36   tasks[1] = new AliTRDqaESDFriends("trdESDFriends");
37   tasks[2] = new AliTRDqaEnergyDeposit("trdEnergyDeposit");
38   
39   AliAnalysisDataContainer *cinput = 
40     mgr->CreateContainer("inputESD", TTree::Class(), AliAnalysisManager::kInputContainer);
41
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);
45
46   // register
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]);
51   }
52
53   // Connect input data
54   cout << "connect to data" << endl;
55   cinput->SetData(chain);
56   Long_t t0 = gSystem->Now();
57
58   TStopwatch sw;
59   sw.Start();
60   
61   cout << "Initializing" << endl;
62   if (mgr->InitAnalysis()) {
63     mgr->PrintStatus();
64     mgr->StartAnalysis("local", chain);
65   }
66   
67   sw.Stop();
68   sw.Print();
69
70   Long_t t1 = gSystem->Now();
71   double time = 1e-3 * (t1-t0);
72   
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;   
77
78   //gSystem->Exit(0);
79   
80
81 }