ROOT logo

void runTRDqaAnalysis(const char *chainName, int limit = 0) {
  //
  // runs the analysis train
  // parameters: 
  // chainName -- a name of a file with a list of ESDs
  // limit -- number of files to be processed
  //
  //
  
  /**/
  gSystem->Load("libTree.so");
  gSystem->Load("libGeom.so");
  gSystem->Load("libVMC.so");
  gSystem->Load("libSTEERBase.so");
  gSystem->Load("libESD.so");
  /**/

  gSystem->Load("libANALYSIS.so");
  gSystem->Load("libANALYSISalice.so");
  gSystem->Load("libTRDqaAnalysis.so");
  
  // Setup chain
  TChain *chain = new TChain("esdTree");
  //chain->SetBranchStatus("*",0);
  //chain->SetBranchStatus("*fTracks*",1);
  //chain->SetBranchStatus("ESDfriend*",1);
  //chain->SetBranchStatus("ESDfriend.*",1);

  int nfiles = 0;
  fstream  coll(chainName, ios_base::in);
  TString line;
  while (line.ReadLine(coll)) {
    cout << line.Data() << endl;
    chain->Add(line.Data()); 
    nfiles++;
    if (limit && nfiles > limit) break;
  } 
  
  // Create an analysis manager
  AliAnalysisManager *mgr = new AliAnalysisManager("qaTasks", "title");
  AliAnalysisTask *tasks[5];
  AliAnalysisDataContainer *out[5];

  tasks[0] = new AliTRDqaElectronSpectra("trdElectronSpectra");
  tasks[1] = new AliTRDqaESDFriends("trdESDFriends");
  tasks[2] = new AliTRDqaEnergyDeposit("trdEnergyDeposit");
  tasks[3] = new AliTRDqaBasic("trdBasic");
  tasks[4] = new AliTRDqaJPsi("trdJPsi");
  
  AliAnalysisDataContainer *cinput = 
    mgr->CreateContainer("inputESD", TTree::Class(), AliAnalysisManager::kInputContainer);

  out[0] = mgr->CreateContainer("oES", TObjArray::Class(), AliAnalysisManager::kOutputContainer);
  out[1] = mgr->CreateContainer("oEF", TObjArray::Class(), AliAnalysisManager::kOutputContainer);
  out[2] = mgr->CreateContainer("oED", TObjArray::Class(), AliAnalysisManager::kOutputContainer);
  out[3] = mgr->CreateContainer("oBS", TObjArray::Class(), AliAnalysisManager::kOutputContainer);
  out[4] = mgr->CreateContainer("oEJ", TObjArray::Class(), AliAnalysisManager::kOutputContainer);  

  // register
  for(int i=0; i<4; i++) {
    mgr->AddTask(tasks[i]);
    mgr->ConnectInput(tasks[i],0,cinput);
    mgr->ConnectOutput(tasks[i],0,out[i]);
  }

  // Connect input data
  cout << "connect to data" << endl;
  cinput->SetData(chain);
  Long_t t0 = gSystem->Now();

  TStopwatch sw;
  sw.Start();
  
  cout << "Initializing" << endl;
  if (mgr->InitAnalysis()) {
    mgr->PrintStatus();
    mgr->StartAnalysis("local", chain);
  }
  
  sw.Stop();
  sw.Print();

  Long_t t1 = gSystem->Now();
  double time = 1e-3 * (t1-t0);
  
  //cout << "Size   = " << mgr->GetNBytes()*1e-6 << " MB" << endl;
  //cout << "Time   = " << time << " s" << endl;
  //cout << "Speed  = " << 1e-6*mgr->GetNBytes()/time << " MB/s" << endl;
  //cout << "Events = " << mgr->GetNEvents()/time << " Events/s" << endl;   

  //gSystem->Exit(0);
  

}
 runTRDqaAnalysis.C:1
 runTRDqaAnalysis.C:2
 runTRDqaAnalysis.C:3
 runTRDqaAnalysis.C:4
 runTRDqaAnalysis.C:5
 runTRDqaAnalysis.C:6
 runTRDqaAnalysis.C:7
 runTRDqaAnalysis.C:8
 runTRDqaAnalysis.C:9
 runTRDqaAnalysis.C:10
 runTRDqaAnalysis.C:11
 runTRDqaAnalysis.C:12
 runTRDqaAnalysis.C:13
 runTRDqaAnalysis.C:14
 runTRDqaAnalysis.C:15
 runTRDqaAnalysis.C:16
 runTRDqaAnalysis.C:17
 runTRDqaAnalysis.C:18
 runTRDqaAnalysis.C:19
 runTRDqaAnalysis.C:20
 runTRDqaAnalysis.C:21
 runTRDqaAnalysis.C:22
 runTRDqaAnalysis.C:23
 runTRDqaAnalysis.C:24
 runTRDqaAnalysis.C:25
 runTRDqaAnalysis.C:26
 runTRDqaAnalysis.C:27
 runTRDqaAnalysis.C:28
 runTRDqaAnalysis.C:29
 runTRDqaAnalysis.C:30
 runTRDqaAnalysis.C:31
 runTRDqaAnalysis.C:32
 runTRDqaAnalysis.C:33
 runTRDqaAnalysis.C:34
 runTRDqaAnalysis.C:35
 runTRDqaAnalysis.C:36
 runTRDqaAnalysis.C:37
 runTRDqaAnalysis.C:38
 runTRDqaAnalysis.C:39
 runTRDqaAnalysis.C:40
 runTRDqaAnalysis.C:41
 runTRDqaAnalysis.C:42
 runTRDqaAnalysis.C:43
 runTRDqaAnalysis.C:44
 runTRDqaAnalysis.C:45
 runTRDqaAnalysis.C:46
 runTRDqaAnalysis.C:47
 runTRDqaAnalysis.C:48
 runTRDqaAnalysis.C:49
 runTRDqaAnalysis.C:50
 runTRDqaAnalysis.C:51
 runTRDqaAnalysis.C:52
 runTRDqaAnalysis.C:53
 runTRDqaAnalysis.C:54
 runTRDqaAnalysis.C:55
 runTRDqaAnalysis.C:56
 runTRDqaAnalysis.C:57
 runTRDqaAnalysis.C:58
 runTRDqaAnalysis.C:59
 runTRDqaAnalysis.C:60
 runTRDqaAnalysis.C:61
 runTRDqaAnalysis.C:62
 runTRDqaAnalysis.C:63
 runTRDqaAnalysis.C:64
 runTRDqaAnalysis.C:65
 runTRDqaAnalysis.C:66
 runTRDqaAnalysis.C:67
 runTRDqaAnalysis.C:68
 runTRDqaAnalysis.C:69
 runTRDqaAnalysis.C:70
 runTRDqaAnalysis.C:71
 runTRDqaAnalysis.C:72
 runTRDqaAnalysis.C:73
 runTRDqaAnalysis.C:74
 runTRDqaAnalysis.C:75
 runTRDqaAnalysis.C:76
 runTRDqaAnalysis.C:77
 runTRDqaAnalysis.C:78
 runTRDqaAnalysis.C:79
 runTRDqaAnalysis.C:80
 runTRDqaAnalysis.C:81
 runTRDqaAnalysis.C:82
 runTRDqaAnalysis.C:83
 runTRDqaAnalysis.C:84
 runTRDqaAnalysis.C:85
 runTRDqaAnalysis.C:86
 runTRDqaAnalysis.C:87
 runTRDqaAnalysis.C:88
 runTRDqaAnalysis.C:89
 runTRDqaAnalysis.C:90
 runTRDqaAnalysis.C:91
 runTRDqaAnalysis.C:92
 runTRDqaAnalysis.C:93
 runTRDqaAnalysis.C:94
 runTRDqaAnalysis.C:95
 runTRDqaAnalysis.C:96