1 ///////////////////////////////////////////////////////////////////////////////
2 // Macro to setup AliPerformanceTask for
3 // TPC 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 component is added to
11 // 1. AliPerformancePtCalib
12 // or AliPerformancePtCalibMC if bUseMCinfo = kTRUE (use MC info)
14 // Usage on the analysis train (default configuration):
15 // gSystem->Load("libANALYSIS");
16 // gSystem->Load("libANALYSISalice");
17 // gSystem->Load("libTPCcalib.so");
18 // gSystem->Load("libPWG1.so");
20 // gROOT->LoadMacro("$ALICE_ROOT/PWG1/macros/AddTaskPerformanceTPC.C");
21 // AliPerformanceTask *tpcQA = AddTaskPerformanceTPC("kTRUE","kTRUE");
24 // TPC.Performance.root file with TPC 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 //13.10.2009 - J.Otwinowski@gsi.de
31 ///////////////////////////////////////////////////////////////////////////////
33 //____________________________________________
34 AliPerformanceTask* AddTaskPerformanceTPCPtCalib(Bool_t bUseMCInfo=kTRUE, Bool_t bUseESDfriend=kTRUE)
37 // Add AliPerformanceTask with TPC performance components
39 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
41 Error("AddTaskPerformanceTPCPtCalib","AliAnalysisManager not set!");
45 TString type = mgr->GetInputEventHandler()->GetDataType();
46 if (!type.Contains("ESD")) {
47 Error("AddTaskPerformanceTPCPtCalib", "ESD input handler needed!");
51 AliMCEventHandler *mcH = (AliMCEventHandler*)mgr->GetMCtruthEventHandler();
52 if (!mcH && bUseMCInfo) {
53 Error("AddTaskPerformanceTPCPtCalib", "MC input handler needed!");
60 AliPerformanceTask *task = new AliPerformanceTask("Performance","TPC Performance PtCalib");
62 Error("AddTaskPerformanceTPCPtCalib", "TPC performance task cannot be created!");
65 task->SetUseMCInfo(bUseMCInfo);
66 task->SetUseESDfriend(bUseESDfriend);
69 // Add task to analysis manager
74 // Create TPC-ESD track reconstruction cuts
76 AliRecInfoCuts *pRecInfoCuts = new AliRecInfoCuts();
78 pRecInfoCuts->SetMaxDCAToVertexXY(3.0);
79 pRecInfoCuts->SetMaxDCAToVertexZ(3.0);
80 pRecInfoCuts->SetMinNClustersTPC(50);
81 pRecInfoCuts->SetMinNClustersITS(2);
82 pRecInfoCuts->SetHistogramsOn(kFALSE);
85 Error("AddTaskPerformanceTPCPtCalib", "AliRecInfoCuts cannot be created!");
89 // Create TPC-MC track reconstruction cuts
91 AliMCInfoCuts *pMCInfoCuts = new AliMCInfoCuts();
93 pMCInfoCuts->SetMinTrackLength(70);
96 Error("AddTaskPerformanceTPCPtCalib", "AliMCInfoCuts cannot be created!");
101 // Create performance objects for TPC and set cuts
103 enum { kTPC = 0, kTPCITS, kConstrained, kTPCInner, kTPCOuter, kTPCSec };
106 AliPerformancePtCalib *ptCalib = NULL;
107 AliPerformancePtCalibMC *ptCalibMC = NULL;
110 ptCalibMC = new AliPerformancePtCalibMC("AliPerformancePtCalibMC","AliPerformancePtCalibMC");//,kTPC,kTRUE);
112 Error("AddTaskPerformanceTPCPtCalib", "Cannot create AliPerformancePtCalibMC");
115 ptCalibMC->SetAliRecInfoCuts(pRecInfoCuts);
116 ptCalibMC->SetReadTPCTracks(kTRUE);
117 ptCalibMC->SetTPCRefit(kFALSE) ;
118 ptCalibMC->SetITSRefit(kFALSE);
119 ptCalibMC->SetESDCuts(kTRUE);
120 ptCalibMC->SetDCACuts(kTRUE);
121 ptCalibMC->SetAcceptKinkDaughters(kFALSE);
122 ptCalibMC->SetRequireSigmaToVertex(kFALSE);
123 ptCalibMC->SetfDCAToVertex2D(kFALSE) ;
125 // const Double_t esdCutvalues[6] ={};//set esd track cut values
126 // ptCalibMC->SetESDcutValues(esdCutvalues);
127 // ptCalibMC->SetEtaRange(0.9);
128 // ptCalibMC->SetAliMCInfoCuts(pMCInfoCut);
133 ptCalib = new AliPerformancePtCalib("AliPerformancePtCalib","AliPerformancePtCalib");//,kTPC,kFALSE);
135 Error("AddTaskPerformanceTPCPtCalib", "Cannot create AliPerformancePtCalib");
137 ptCalib->SetAliRecInfoCuts(pRecInfoCuts);
138 ptCalib->SetReadTPCTracks(kTRUE);
139 ptCalib->SetTPCRefit(kFALSE) ;
140 ptCalib->SetITSRefit(kFALSE);
141 ptCalib->SetESDCuts(kTRUE);
142 ptCalib->SetDCACuts(kTRUE);
143 ptCalib->SetAcceptKinkDaughters(kFALSE);
144 ptCalib->SetRequireSigmaToVertex(kFALSE);
145 ptCalib->SetfDCAToVertex2D(kFALSE) ;
147 // const Double_t esdCutvalues[6] ={};
148 // ptCalib->SetESDcutValues(esdCutvalues);
149 // ptCalib->SetEtaRange(0.9);
150 // ptCalib->SetAliMCInfoCuts(pMCInfoCut);
154 // add components to the performance task
156 if(bUseMCInfo) task->AddPerformanceObject( ptCalibMC);
157 else task->AddPerformanceObject( ptCalib );
159 // Create containers for input
161 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
164 // Create containers for output
166 AliAnalysisDataContainer *coutput_tpcptcalib = mgr->CreateContainer("TPCPtCalib", TList::Class(), AliAnalysisManager::kOutputContainer, Form("TPCPtCalib.%s.root", task->GetName()));
167 mgr->ConnectOutput(task, 0, coutput_tpcptcalib);