ROOT logo
///////////////////////////////////////////////////////////////////////////////
// Macro to setup AliPerformanceTask for 
// TPC and TPC+ITS performance QA to run on PWGPP QA train. 
//
// Input: ESDs, ESDfriends (optional), Kinematics (optional), TrackRefs (optional)
// ESD and MC input handlers must be attached to AliAnalysisManager
// to run default configuration. 
//
// By default 1 performance components are added to 
// the task: 
// 1. AliPerformanceTPC (TPC cluster and track and event information)
//
// Usage on the analysis train (default configuration):
// gSystem->Load("libANALYSIS");
// gSystem->Load("libANALYSISalice");
// gSystem->Load("libTPCcalib.so");
// gSystem->Load("libTENDER.so");
// gSystem->Load("libPWGPP.so");
//
// gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskPerformanceTPCITSQA.C");
// AliPerformanceTask *tpcQA = AddTaskPerformanceTPC("kFALSE","kTRUE","triggerClass"); 
// 
// Output:
// TPCITS.Performance.root file with TPC and TPCITS performance components is created.
//
// Each of the components contains THnSparse generic histograms which 
// have to be analysed (post-analysis) by using Analyse() function. 
// Each component contains such function.
//
//14.12.2009 -  J.Otwinowski@gsi.de
///////////////////////////////////////////////////////////////////////////////

//____________________________________________
AliPerformanceTask* AddTaskPerformanceTPCITSQA(Bool_t bUseMCInfo=kFALSE, Bool_t bUseESDfriend=kTRUE, const char *triggerClass=0)
{
  //
  // Add AliPerformanceTask with TPC performance components
  //
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if(!mgr) { 
    Error("AddTaskPerformanceTPC","AliAnalysisManager not set!");
    return NULL;
  }
  
  TString type = mgr->GetInputEventHandler()->GetDataType();
  if (!type.Contains("ESD")) {
    Error("AddTaskPerformanceTPC", "ESD input handler needed!");
    return NULL;
  }
  
  AliMCEventHandler *mcH = (AliMCEventHandler*)mgr->GetMCtruthEventHandler();
  if (!mcH && bUseMCInfo) {
    Error("AddTaskPerformanceTPC", "MC input handler needed!");
    return NULL;
  }

  //
  // Create task
  //
  AliPerformanceTask *task = new AliPerformanceTask("PerformanceQA","TPC Performance");
  if (!task) {
    Error("AddTaskPerformanceTPC", "TPC performance task cannot be created!");
    return NULL;
  }
  task->SetUseMCInfo(bUseMCInfo);
  task->SetUseESDfriend(bUseESDfriend);
  task->SelectCollisionCandidates();

  //
  // Add task to analysis manager
  //
  mgr->AddTask(task);

  //
  // Create TPC-ITS ESD track reconstruction cuts
  // MB tracks
  //
  AliRecInfoCuts *pRecInfoCutsTPC = new AliRecInfoCuts(); 
  if(pRecInfoCutsTPC) {
    pRecInfoCutsTPC->SetMaxDCAToVertexXY(3.0);
    pRecInfoCutsTPC->SetMaxDCAToVertexZ(3.0);
    pRecInfoCutsTPC->SetRequireSigmaToVertex(kFALSE);
    pRecInfoCutsTPC->SetRequireTPCRefit(kFALSE);
    pRecInfoCutsTPC->SetAcceptKinkDaughters(kTRUE);
    pRecInfoCutsTPC->SetMinNClustersTPC(70);
    pRecInfoCutsTPC->SetMaxChi2PerClusterTPC(1000000.);
    pRecInfoCutsTPC->SetDCAToVertex2D(kFALSE);
    pRecInfoCutsTPC->SetMinNClustersITS(2);

    pRecInfoCutsTPC->SetHistogramsOn(kFALSE); 
  } 
  else {
    Error("AddTaskPerformanceTPC", "AliRecInfoCutsTPC cannot be created!");
    return NULL;
  }

  //
  // Create TPC-MC track reconstruction cuts
  //
  AliMCInfoCuts  *pMCInfoCuts = new AliMCInfoCuts();
  if(pMCInfoCuts) {
    pMCInfoCuts->SetMinTrackLength(70);
  } 
  else {
    Error("AddTaskPerformanceTPC", "AliMCInfoCuts cannot be created!");
    return NULL;
  }

  //
  // Create performance objects for TPC and TPCITS set cuts 
  //
  enum { kTPC = 0, kTPCITS};

  //
  // TPC performance
  //
  AliPerformanceTPC *pCompTPC0 = new AliPerformanceTPC("AliPerformanceTPC","AliPerformanceTPC",kTPC,kFALSE); 
  if(!pCompTPC0) {
    Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceTPC");
  }
  pCompTPC0->SetAliRecInfoCuts(pRecInfoCutsTPC);
  pCompTPC0->SetAliMCInfoCuts(pMCInfoCuts);

  //
  // TPC+ITS performance
  //
  AliPerformanceTPC *pCompTPC1 = new AliPerformanceTPC("AliPerformanceTPCITS","AliPerformanceTPCITS",kTPCITS,kFALSE); 
  if(!pCompTPC1) {
    Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceTPCITS");
  }
  pCompTPC1->SetAliRecInfoCuts(pRecInfoCutsTPC);
  pCompTPC1->SetAliMCInfoCuts(pMCInfoCuts);

  //
  // Add components to the performance task
  //
  if(!bUseMCInfo) { 
    pCompTPC0->SetTriggerClass(triggerClass);
    pCompTPC1->SetTriggerClass(triggerClass);
  }
  task->AddPerformanceObject( pCompTPC0 );
  task->AddPerformanceObject( pCompTPC1 );

  //
  // Create containers for input
  //
  mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());

  //
  // Create containers for output
  //
  AliAnalysisDataContainer *coutput_tpc = mgr->CreateContainer("TPCITSQA", TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TPCITS_%s", mgr->GetCommonFileName(), task->GetName()));
  mgr->ConnectOutput(task, 1, coutput_tpc);

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