ROOT logo
// Macro to run TPC performance task (locally, proof).
//
// By default 8 performance components are added to 
// the task. Look inside AddTaskPerformanceTPC.C
//

/*
 
  //1. Run locally e.g.

  gROOT->LoadMacro("$ALICE_ROOT/PWGPP/TPC/macros/LoadMyLibs.C");

  gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
  TChain* chain = CreateESDChain("esds_test.txt",10, 0);
  chain->Lookup();

  gROOT->LoadMacro("$ALICE_ROOT/PWGPP/TPC/macros/RunPerformanceTask.C");
  RunPerformanceTask(chain, kFALSE, kTRUE, kFALSE);

  //2. Run on PROOF Lite e.g.

  TProof::Open(""); 

  gROOT->LoadMacro("$ALICE_ROOT/PWGPP/TPC/macros/ProofEnableAliRoot.C");
  ProofEnableAliRoot("/u/jacek/alice/AliRoot/trunk");

  gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
  TChain* chain = CreateESDChain("list_flatP_JB.txt",20, 0);
  chain->Lookup();

  gROOT->LoadMacro("$ALICE_ROOT/PWGPP/TPC/macros/RunPerformanceTask.C");
  RunPerformanceTask(chain, kTRUE, kTRUE, kTRUE);


  //3. Run only on PoD at GSI e.g.
  TProofMgr * proofmgr = TProof::Mgr("lxialpod2.gsi.de:21001");
  TProof * proof = proofmgr->CreateSession();
  proof->SetParameter("PROOF_MaxSlavesPerNode", (Long_t)10000);

  gROOT->LoadMacro("$ALICE_ROOT/PWGPP/TPC/macros/ProofEnableAliRoot.C");
  ProofEnableAliRoot("/d/alice11/jacek/alice/x86_64/AliRoot/trunk");

  gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
  TChain* chain = CreateESDChain("../input/ffprod_v4-17-Rev-19_900kPythia6D6T.list", 200, 0);
  chain->Lookup();

  //gROOT->LoadMacro("$ALICE_ROOT/PWGPP/TPC/macros/RunPerformanceTask.C");
  gROOT->LoadMacro("/d/alice11/jacek/alice/TPC/macros/RunPerformanceTask.C");
  RunPerformanceTask(chain, kFALSE, kTRUE, kTRUE); 

  //4. Make final spectra and store them in the
  // output folder and generate control pictures e.g.

  TFile f("TPC.Performance.root");
  AliPerformanceRes * compObjRes = (AliPerformanceRes*)coutput->FindObject("AliPerformanceResTPCOuter");
  compObjRes->Analyse();
  compObjRes->GetAnalysisFolder()->ls("*");
  // create pictures
  compObjRes->PrintHisto(kTRUE,"PerformanceResTPCOuterQA.ps");
  // store output QA histograms in file
  TFile fout("PerformanceResTPCOuterQAHisto.root","recreate");
  compObjRes->GetAnalysisFolder()->Write();
  fout.Close();
  f.Close();

*/

//_____________________________________________________________________________
void RunPerformanceTask(TChain *chain, Bool_t bUseMCInfo=kTRUE, Bool_t bUseESDfriend=kTRUE,  Bool_t bProof=kTRUE)
{
  if(!chain) 
  {
    AliDebug(AliLog::kError, "ERROR: No input chain available");
    return;
  }
  //
  // Swtich off all AliInfo (too much output!)
  //
  AliLog::SetGlobalLogLevel(AliLog::kError);

  //
  // Create analysis manager
  //
  AliAnalysisManager *mgr = new AliAnalysisManager;
  if(!mgr) { 
    Error("runTPCQA","AliAnalysisManager not set!");
    return;
  }

  //
  // Set ESD input handler
  //
  AliESDInputHandler* esdH = new AliESDInputHandler;
  if(!esdH) { 
    Error("runTPCQA","AliESDInputHandler not created!");
    return;
  }
  if(bUseESDfriend) esdH->SetActiveBranches("ESDfriend");
  mgr->SetInputEventHandler(esdH);

  //
  // Set MC input handler
  //
  if(bUseMCInfo) {
    AliMCEventHandler* mcH = new AliMCEventHandler;
    if(!esdH) { 
      Error("runTPCQA","AliMCEventHandler not created!");
      return;
    }
    mcH->SetReadTR(kTRUE);
    mgr->SetMCtruthEventHandler(mcH);
  }
  //
  // Add task to AliAnalysisManager
  //
  //gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskPerformanceTPC.C");
  gROOT->LoadMacro("$ALICE_ROOT/PWGPP/TPC/macros/AddTaskPerformanceTPCQA.C");
  AliPerformanceTask *tpcQA = AddTaskPerformanceTPCQA(bUseMCInfo,bUseESDfriend);
  if(!tpcQA) { 
      Error("runTPCQA","TaskPerformanceTPC not created!");
      return;
  }

  // Enable debug printouts
  mgr->SetDebugLevel(0);

  if (!mgr->InitAnalysis())
    return;

  mgr->PrintStatus();

  if(bProof) mgr->StartAnalysis("proof",chain);
  else mgr->StartAnalysis("local",chain);
}

 RunPerformanceTask.C:1
 RunPerformanceTask.C:2
 RunPerformanceTask.C:3
 RunPerformanceTask.C:4
 RunPerformanceTask.C:5
 RunPerformanceTask.C:6
 RunPerformanceTask.C:7
 RunPerformanceTask.C:8
 RunPerformanceTask.C:9
 RunPerformanceTask.C:10
 RunPerformanceTask.C:11
 RunPerformanceTask.C:12
 RunPerformanceTask.C:13
 RunPerformanceTask.C:14
 RunPerformanceTask.C:15
 RunPerformanceTask.C:16
 RunPerformanceTask.C:17
 RunPerformanceTask.C:18
 RunPerformanceTask.C:19
 RunPerformanceTask.C:20
 RunPerformanceTask.C:21
 RunPerformanceTask.C:22
 RunPerformanceTask.C:23
 RunPerformanceTask.C:24
 RunPerformanceTask.C:25
 RunPerformanceTask.C:26
 RunPerformanceTask.C:27
 RunPerformanceTask.C:28
 RunPerformanceTask.C:29
 RunPerformanceTask.C:30
 RunPerformanceTask.C:31
 RunPerformanceTask.C:32
 RunPerformanceTask.C:33
 RunPerformanceTask.C:34
 RunPerformanceTask.C:35
 RunPerformanceTask.C:36
 RunPerformanceTask.C:37
 RunPerformanceTask.C:38
 RunPerformanceTask.C:39
 RunPerformanceTask.C:40
 RunPerformanceTask.C:41
 RunPerformanceTask.C:42
 RunPerformanceTask.C:43
 RunPerformanceTask.C:44
 RunPerformanceTask.C:45
 RunPerformanceTask.C:46
 RunPerformanceTask.C:47
 RunPerformanceTask.C:48
 RunPerformanceTask.C:49
 RunPerformanceTask.C:50
 RunPerformanceTask.C:51
 RunPerformanceTask.C:52
 RunPerformanceTask.C:53
 RunPerformanceTask.C:54
 RunPerformanceTask.C:55
 RunPerformanceTask.C:56
 RunPerformanceTask.C:57
 RunPerformanceTask.C:58
 RunPerformanceTask.C:59
 RunPerformanceTask.C:60
 RunPerformanceTask.C:61
 RunPerformanceTask.C:62
 RunPerformanceTask.C:63
 RunPerformanceTask.C:64
 RunPerformanceTask.C:65
 RunPerformanceTask.C:66
 RunPerformanceTask.C:67
 RunPerformanceTask.C:68
 RunPerformanceTask.C:69
 RunPerformanceTask.C:70
 RunPerformanceTask.C:71
 RunPerformanceTask.C:72
 RunPerformanceTask.C:73
 RunPerformanceTask.C:74
 RunPerformanceTask.C:75
 RunPerformanceTask.C:76
 RunPerformanceTask.C:77
 RunPerformanceTask.C:78
 RunPerformanceTask.C:79
 RunPerformanceTask.C:80
 RunPerformanceTask.C:81
 RunPerformanceTask.C:82
 RunPerformanceTask.C:83
 RunPerformanceTask.C:84
 RunPerformanceTask.C:85
 RunPerformanceTask.C:86
 RunPerformanceTask.C:87
 RunPerformanceTask.C:88
 RunPerformanceTask.C:89
 RunPerformanceTask.C:90
 RunPerformanceTask.C:91
 RunPerformanceTask.C:92
 RunPerformanceTask.C:93
 RunPerformanceTask.C:94
 RunPerformanceTask.C:95
 RunPerformanceTask.C:96
 RunPerformanceTask.C:97
 RunPerformanceTask.C:98
 RunPerformanceTask.C:99
 RunPerformanceTask.C:100
 RunPerformanceTask.C:101
 RunPerformanceTask.C:102
 RunPerformanceTask.C:103
 RunPerformanceTask.C:104
 RunPerformanceTask.C:105
 RunPerformanceTask.C:106
 RunPerformanceTask.C:107
 RunPerformanceTask.C:108
 RunPerformanceTask.C:109
 RunPerformanceTask.C:110
 RunPerformanceTask.C:111
 RunPerformanceTask.C:112
 RunPerformanceTask.C:113
 RunPerformanceTask.C:114
 RunPerformanceTask.C:115
 RunPerformanceTask.C:116
 RunPerformanceTask.C:117
 RunPerformanceTask.C:118
 RunPerformanceTask.C:119
 RunPerformanceTask.C:120
 RunPerformanceTask.C:121
 RunPerformanceTask.C:122
 RunPerformanceTask.C:123
 RunPerformanceTask.C:124
 RunPerformanceTask.C:125
 RunPerformanceTask.C:126
 RunPerformanceTask.C:127
 RunPerformanceTask.C:128
 RunPerformanceTask.C:129
 RunPerformanceTask.C:130
 RunPerformanceTask.C:131
 RunPerformanceTask.C:132
 RunPerformanceTask.C:133
 RunPerformanceTask.C:134
 RunPerformanceTask.C:135
 RunPerformanceTask.C:136