TENDER becomes Tender
[u/mrichter/AliRoot.git] / PWGPP / TPC / macros / AddTaskPerformanceTPCQA.C
CommitLineData
b526c47d 1///////////////////////////////////////////////////////////////////////////////
2// Macro to setup AliPerformanceTask for
2bfe5463 3// TPC performance QA to run on PWGPP QA train.
b526c47d 4//
5// Input: ESDs, ESDfriends (optional), Kinematics (optional), TrackRefs (optional)
6// ESD and MC input handlers must be attached to AliAnalysisManager
7// to run default configuration.
8//
9// By default 1 performance components are added to
10// the task:
11// 1. AliPerformanceTPC (TPC cluster and track and event information)
12//
13// Usage on the analysis train (default configuration):
14// gSystem->Load("libANALYSIS");
15// gSystem->Load("libANALYSISalice");
16// gSystem->Load("libTPCcalib.so");
af472fff 17// gSystem->Load("libTender.so");
2bfe5463 18// gSystem->Load("libPWGPP.so");
b526c47d 19//
2bfe5463 20// gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskPerformanceTPCQA.C");
b526c47d 21// AliPerformanceTask *tpcQA = AddTaskPerformanceTPC("kFALSE","kTRUE","triggerClass");
22//
23// Output:
24// TPC.Performance.root file with TPC performance components is created.
25//
26// Each of the components contains THnSparse generic histograms which
27// have to be analysed (post-analysis) by using Analyse() function.
28// Each component contains such function.
29//
30//14.12.2009 - J.Otwinowski@gsi.de
31///////////////////////////////////////////////////////////////////////////////
32
33//____________________________________________
fa3caf32 34AliPerformanceTask* AddTaskPerformanceTPCQA(Bool_t bUseMCInfo=kFALSE, Bool_t bUseESDfriend=kTRUE, const char *triggerClass=0)
b526c47d 35{
36 //
37 // Add AliPerformanceTask with TPC performance components
38 //
39 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
40 if(!mgr) {
41 Error("AddTaskPerformanceTPC","AliAnalysisManager not set!");
42 return NULL;
43 }
44
45 TString type = mgr->GetInputEventHandler()->GetDataType();
46 if (!type.Contains("ESD")) {
47 Error("AddTaskPerformanceTPC", "ESD input handler needed!");
48 return NULL;
49 }
50
51 AliMCEventHandler *mcH = (AliMCEventHandler*)mgr->GetMCtruthEventHandler();
52 if (!mcH && bUseMCInfo) {
53 Error("AddTaskPerformanceTPC", "MC input handler needed!");
54 return NULL;
55 }
56
57 //
58 // Create task
59 //
fa3caf32 60 AliPerformanceTask *task = new AliPerformanceTask("PerformanceQA","TPC Performance");
b526c47d 61 if (!task) {
62 Error("AddTaskPerformanceTPC", "TPC performance task cannot be created!");
63 return NULL;
64 }
65 task->SetUseMCInfo(bUseMCInfo);
66 task->SetUseESDfriend(bUseESDfriend);
17d3c4d6 67 task->SelectCollisionCandidates();
b526c47d 68
69 //
70 // Add task to analysis manager
71 //
72 mgr->AddTask(task);
73
74 //
75 // Create TPC-ESD track reconstruction cuts
76 // MB tracks
77 //
78 AliRecInfoCuts *pRecInfoCutsTPC = new AliRecInfoCuts();
79 if(pRecInfoCutsTPC) {
80 pRecInfoCutsTPC->SetMaxDCAToVertexXY(3.0);
4bb5f8a9 81 pRecInfoCutsTPC->SetMaxDCAToVertexZ(3.0);
b526c47d 82 pRecInfoCutsTPC->SetRequireSigmaToVertex(kFALSE);
83 pRecInfoCutsTPC->SetRequireTPCRefit(kFALSE);
84 pRecInfoCutsTPC->SetAcceptKinkDaughters(kTRUE);
ff7b6e14 85 pRecInfoCutsTPC->SetMinNClustersTPC(70);
b526c47d 86 pRecInfoCutsTPC->SetMaxChi2PerClusterTPC(1000000.);
87 pRecInfoCutsTPC->SetDCAToVertex2D(kFALSE);
88
89 pRecInfoCutsTPC->SetHistogramsOn(kFALSE);
90 }
91 else {
92 Error("AddTaskPerformanceTPC", "AliRecInfoCutsTPC cannot be created!");
93 return NULL;
94 }
95
96 //
97 // Create TPC-MC track reconstruction cuts
98 //
99 AliMCInfoCuts *pMCInfoCuts = new AliMCInfoCuts();
100 if(pMCInfoCuts) {
101 pMCInfoCuts->SetMinTrackLength(70);
102 }
103 else {
104 Error("AddTaskPerformanceTPC", "AliMCInfoCuts cannot be created!");
105 return NULL;
106 }
107
108 //
109 // Create performance objects for TPC and set cuts
110 //
111 enum { kTPC = 0};
112
113 //
114 // TPC performance
115 //
116 AliPerformanceTPC *pCompTPC0 = new AliPerformanceTPC("AliPerformanceTPC","AliPerformanceTPC",kTPC,kFALSE);
117 if(!pCompTPC0) {
118 Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceTPC");
119 }
120 pCompTPC0->SetAliRecInfoCuts(pRecInfoCutsTPC);
121 pCompTPC0->SetAliMCInfoCuts(pMCInfoCuts);
122
123 //
124 // Add components to the performance task
125 //
126 if(!bUseMCInfo) pCompTPC0->SetTriggerClass(triggerClass);
127 task->AddPerformanceObject( pCompTPC0 );
128
129 //
130 // Create containers for input
131 //
132 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
133
134 //
135 // Create containers for output
136 //
997f86cb 137 AliAnalysisDataContainer *coutput_tpc = mgr->CreateContainer("TPCQA", TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TPC_%s", mgr->GetCommonFileName(), task->GetName()));
25126885 138 mgr->ConnectOutput(task, 1, coutput_tpc);
b526c47d 139
140return task;
141}