1 ///////////////////////////////////////////////////////////////////////////////
2 // Macro to setup AliPerformanceTask for
3 // TPC and TPC+ITS performance QA to run on PWG1 QA train.
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.
9 // By default 1 performance components are added to
11 // 1. AliPerformanceTPC (TPC cluster and track and event information)
13 // Usage on the analysis train (default configuration):
14 // gSystem->Load("libANALYSIS");
15 // gSystem->Load("libANALYSISalice");
16 // gSystem->Load("libTPCcalib.so");
17 // gSystem->Load("libTENDER.so");
18 // gSystem->Load("libPWG1.so");
20 // gROOT->LoadMacro("$ALICE_ROOT/PWG1/macros/AddTaskPerformanceTPCITSQA.C");
21 // AliPerformanceTask *tpcQA = AddTaskPerformanceTPC("kFALSE","kTRUE","triggerClass");
24 // TPCITS.Performance.root file with TPC and TPCITS performance components is created.
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.
30 //14.12.2009 - J.Otwinowski@gsi.de
31 ///////////////////////////////////////////////////////////////////////////////
33 //____________________________________________
34 AliPerformanceTask* AddTaskPerformanceTPCITSQA(Bool_t bUseMCInfo=kFALSE, Bool_t bUseESDfriend=kTRUE, const char *triggerClass=0)
37 // Add AliPerformanceTask with TPC performance components
39 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
41 Error("AddTaskPerformanceTPC","AliAnalysisManager not set!");
45 TString type = mgr->GetInputEventHandler()->GetDataType();
46 if (!type.Contains("ESD")) {
47 Error("AddTaskPerformanceTPC", "ESD input handler needed!");
51 AliMCEventHandler *mcH = (AliMCEventHandler*)mgr->GetMCtruthEventHandler();
52 if (!mcH && bUseMCInfo) {
53 Error("AddTaskPerformanceTPC", "MC input handler needed!");
60 AliPerformanceTask *task = new AliPerformanceTask("PerformanceQA","TPC Performance");
62 Error("AddTaskPerformanceTPC", "TPC performance task cannot be created!");
65 task->SetUseMCInfo(bUseMCInfo);
66 task->SetUseESDfriend(bUseESDfriend);
69 // Add task to analysis manager
74 // Create TPC-ITS ESD track reconstruction cuts
77 AliRecInfoCuts *pRecInfoCutsTPC = new AliRecInfoCuts();
79 pRecInfoCutsTPC->SetMaxDCAToVertexXY(3.0);
80 pRecInfoCutsTPC->SetMaxDCAToVertexZ(3.0);
81 pRecInfoCutsTPC->SetRequireSigmaToVertex(kFALSE);
82 pRecInfoCutsTPC->SetRequireTPCRefit(kFALSE);
83 pRecInfoCutsTPC->SetAcceptKinkDaughters(kTRUE);
84 pRecInfoCutsTPC->SetMinNClustersTPC(70);
85 pRecInfoCutsTPC->SetMaxChi2PerClusterTPC(1000000.);
86 pRecInfoCutsTPC->SetDCAToVertex2D(kFALSE);
87 pRecInfoCutsTPC->SetMinNClustersITS(2);
89 pRecInfoCutsTPC->SetHistogramsOn(kFALSE);
92 Error("AddTaskPerformanceTPC", "AliRecInfoCutsTPC cannot be created!");
97 // Create TPC-MC track reconstruction cuts
99 AliMCInfoCuts *pMCInfoCuts = new AliMCInfoCuts();
101 pMCInfoCuts->SetMinTrackLength(70);
104 Error("AddTaskPerformanceTPC", "AliMCInfoCuts cannot be created!");
109 // Create performance objects for TPC and TPCITS set cuts
111 enum { kTPC = 0, kTPCITS};
116 AliPerformanceTPC *pCompTPC0 = new AliPerformanceTPC("AliPerformanceTPC","AliPerformanceTPC",kTPC,kFALSE);
118 Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceTPC");
120 pCompTPC0->SetAliRecInfoCuts(pRecInfoCutsTPC);
121 pCompTPC0->SetAliMCInfoCuts(pMCInfoCuts);
124 // TPC+ITS performance
126 AliPerformanceTPC *pCompTPC1 = new AliPerformanceTPC("AliPerformanceTPCITS","AliPerformanceTPCITS",kTPCITS,kFALSE);
128 Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceTPCITS");
130 pCompTPC1->SetAliRecInfoCuts(pRecInfoCutsTPC);
131 pCompTPC1->SetAliMCInfoCuts(pMCInfoCuts);
134 // Add components to the performance task
137 pCompTPC0->SetTriggerClass(triggerClass);
138 pCompTPC1->SetTriggerClass(triggerClass);
140 task->AddPerformanceObject( pCompTPC0 );
141 task->AddPerformanceObject( pCompTPC1 );
144 // Create containers for input
146 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
149 // Create containers for output
151 AliAnalysisDataContainer *coutput_tpc = mgr->CreateContainer("TPCITSQA", TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TPCITS_%s", mgr->GetCommonFileName(), task->GetName()));
152 mgr->ConnectOutput(task, 1, coutput_tpc);