]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TRD/qaAnalysis/runTRDqaAnalysis.C
add jet shape 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   /**/
12   gSystem->Load("libTree.so");
13   gSystem->Load("libGeom.so");
14   gSystem->Load("libVMC.so");
15   gSystem->Load("libSTEERBase.so");
16   gSystem->Load("libESD.so");
17   /**/
18
19   gSystem->Load("libANALYSIS.so");
20   gSystem->Load("libANALYSISalice.so");
21   gSystem->Load("libTRDqaAnalysis.so");
22   
23   // Setup chain
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);
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
41   AliAnalysisManager *mgr = new AliAnalysisManager("qaTasks", "title");
42   AliAnalysisTask *tasks[5];
43   AliAnalysisDataContainer *out[5];
44
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");
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);
57   out[3] = mgr->CreateContainer("oBS", TObjArray::Class(), AliAnalysisManager::kOutputContainer);
58   out[4] = mgr->CreateContainer("oEJ", TObjArray::Class(), AliAnalysisManager::kOutputContainer);  
59
60   // register
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]);
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 }