1 // Macro to run TPC performance task (locally, proof).
3 // By default 2 performance components are added to
4 // AliPerformanceRes - resloution at DCA to prim. vertex
5 // AliPerformanceEff - efficiency for prim. tracks
11 gROOT->LoadMacro("$ALICE_ROOT/PWG1/TPC/macros/LoadMyLibs.C");
13 gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
14 TChain* chain = CreateESDChain("/u/jacek/alice/dNdPt7TeV/scripts/lists/1668.list",10, 0);
15 //TChain* chain = CreateESDChain("/u/jacek/alice/dNdPt/input/LHC10a8/esds_104867_MC_LHC10a8.txt",3, 0);
18 gROOT->LoadMacro("$ALICE_ROOT/PWG1/TPC/macros/RunPerformanceTaskResEffMC.C");
19 RunPerformanceTaskResEffMC(chain, kTRUE, kTRUE, kFALSE);
21 //2. Make final spectra and store them in the
22 // output folder and generate control pictures
25 TFile f("TPC.MC.Performance.root");
27 AliPerformanceRes * compObjRes = (AliPerformanceRes*)TPCMC->FindObject("AliPerformanceRes");
28 compObjRes->Analyse();
29 compObjRes->GetAnalysisFolder()->ls("*");
30 // create control pictures
31 compObjRes->PrintHisto(kTRUE,"TPC.MC.PerformanceRes.Pict.ps");
32 // store output QA histograms in file
33 TFile fout("TPC.MC.PerformanceRes.Histo.root","recreate");
34 compObjRes->GetAnalysisFolder()->Write();
39 AliPerformanceEff * compObjEff = (AliPerformanceEff*)TPCMC->FindObject("AliPerformanceEff");
40 compObjEff->Analyse();
41 compObjEff->GetAnalysisFolder()->ls("*");
42 // create control pictures
43 compObjEff->PrintHisto(kTRUE,"TPC.MC.PerformanceEff.Pict.ps");
44 // store output QA histograms in file
45 TFile fout("TPC.MC.PerformanceEff.Histo.root","recreate");
46 compObjEff->GetAnalysisFolder()->Write();
53 //_____________________________________________________________________________
54 void RunPerformanceTaskResEffMC(TChain *chain, Bool_t bUseMCInfo=kTRUE, Bool_t bUseESDfriend=kTRUE, Bool_t bProof=kTRUE)
58 AliDebug(AliLog::kError, "ERROR: No input chain available");
62 // Swtich off all AliInfo (too much output!)
64 AliLog::SetGlobalLogLevel(AliLog::kError);
67 // Create analysis manager
69 AliAnalysisManager *mgr = new AliAnalysisManager;
71 Error("runTPCQA","AliAnalysisManager not set!");
76 // Set ESD input handler
78 AliESDInputHandler* esdH = new AliESDInputHandler;
80 Error("runTPCQA","AliESDInputHandler not created!");
83 if(bUseESDfriend) esdH->SetActiveBranches("ESDfriend");
84 mgr->SetInputEventHandler(esdH);
87 // Set MC input handler
90 AliMCEventHandler* mcH = new AliMCEventHandler;
92 Error("runTPCQA","AliMCEventHandler not created!");
95 mcH->SetReadTR(kTRUE);
96 mgr->SetMCtruthEventHandler(mcH);
102 AliPerformanceTask *task = new AliPerformanceTask("Performance","TPC Performance");
104 Error("AddTaskPerformanceTPC", "TPC performance task cannot be created!");
107 task->SetUseMCInfo(bUseMCInfo);
108 task->SetUseESDfriend(bUseESDfriend);
111 // Add task to analysis manager
116 // Create TPC-ESD track reconstruction cuts
119 AliRecInfoCuts *pRecInfoCutsTPC = new AliRecInfoCuts();
120 if(pRecInfoCutsTPC) {
121 pRecInfoCutsTPC->SetMaxDCAToVertexXY(3.0);
122 pRecInfoCutsTPC->SetMaxDCAToVertexZ(30.0);
123 //pRecInfoCutsTPC->SetMaxDCAToVertexZ(3.0);
124 pRecInfoCutsTPC->SetRequireSigmaToVertex(kFALSE);
125 pRecInfoCutsTPC->SetRequireTPCRefit(kFALSE);
126 pRecInfoCutsTPC->SetAcceptKinkDaughters(kTRUE);
127 pRecInfoCutsTPC->SetMinNClustersTPC(50);
128 pRecInfoCutsTPC->SetMaxChi2PerClusterTPC(1000000.);
129 pRecInfoCutsTPC->SetDCAToVertex2D(kFALSE);
131 pRecInfoCutsTPC->SetHistogramsOn(kFALSE);
134 Error("AddTaskPerformanceTPC", "AliRecInfoCutsTPC cannot be created!");
139 // Create TPC-ESD track reconstruction cuts
142 AliRecInfoCuts *pRecInfoCutsMATCH = new AliRecInfoCuts();
143 if(pRecInfoCutsMATCH) {
144 pRecInfoCutsMATCH->SetMaxDCAToVertexXY(3.0);
145 pRecInfoCutsMATCH->SetMaxDCAToVertexZ(3.0);
146 pRecInfoCutsMATCH->SetRequireSigmaToVertex(kFALSE);
147 pRecInfoCutsMATCH->SetRequireTPCRefit(kFALSE);
148 pRecInfoCutsMATCH->SetAcceptKinkDaughters(kTRUE);
149 pRecInfoCutsMATCH->SetMinNClustersTPC(50);
150 pRecInfoCutsMATCH->SetMaxChi2PerClusterTPC(1000000.);
151 pRecInfoCutsMATCH->SetDCAToVertex2D(kFALSE);
152 pRecInfoCutsMATCH->SetTPCITSMatchingRadius(70);
153 pRecInfoCutsMATCH->SetTPCTRDMatchingRadius(260);
154 pRecInfoCutsMATCH->SetMinNClustersITS(3);
156 pRecInfoCutsMATCH->SetHistogramsOn(kFALSE);
159 Error("AddTaskPerformanceTPC", "AliRecInfoCutsTPC cannot be created!");
164 // Create TPC-ESD track reconstruction cuts
166 AliRecInfoCuts *pRecInfoCuts = new AliRecInfoCuts();
168 pRecInfoCuts->SetMaxDCAToVertexXY(3.0);
169 pRecInfoCuts->SetMaxDCAToVertexZ(3.0);
170 pRecInfoCuts->SetMinNClustersTPC(50);
171 pRecInfoCuts->SetMinNClustersITS(2);
172 pRecInfoCuts->SetHistogramsOn(kFALSE);
173 pRecInfoCuts->SetTPCITSMatchingRadius(70);
174 pRecInfoCuts->SetTPCTRDMatchingRadius(260);
177 Error("AddTaskPerformanceTPC", "AliRecInfoCuts cannot be created!");
181 // Create TPC-MC track reconstruction cuts
183 AliMCInfoCuts *pMCInfoCuts = new AliMCInfoCuts();
185 pMCInfoCuts->SetMinTrackLength(70);
188 Error("AddTaskPerformanceTPC", "AliMCInfoCuts cannot be created!");
193 // Create performance objects for TPC and set cuts
195 enum { kTPC = 0, kTPCITS, kConstrained, kTPCInner, kTPCOuter, kTPCSec };
200 AliPerformanceRes *pCompRes0 = new AliPerformanceRes("AliPerformanceRes","AliPerformanceRes",kTPC,kFALSE);
202 Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceRes");
204 pCompRes0->SetAliRecInfoCuts(pRecInfoCuts);
205 pCompRes0->SetAliMCInfoCuts(pMCInfoCuts);
207 AliPerformanceRes *pCompRes3 = new AliPerformanceRes("AliPerformanceResTPCInner","AliPerformanceResTPCInner",kTPCInner,kFALSE);
209 Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceResTPCInner");
211 pCompRes3->SetAliRecInfoCuts(pRecInfoCuts);
212 pCompRes3->SetAliMCInfoCuts(pMCInfoCuts);
214 AliPerformanceRes *pCompRes4 = new AliPerformanceRes("AliPerformanceResTPCOuter","AliPerformanceResTPCOuter",kTPCOuter,kFALSE);
216 Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceResTPCOuter");
218 pCompRes4->SetAliRecInfoCuts(pRecInfoCuts);
219 pCompRes4->SetAliMCInfoCuts(pMCInfoCuts);
223 AliPerformanceEff *pCompEff0 = new AliPerformanceEff("AliPerformanceEff","AliPerformanceEff",kTPC,kFALSE);
225 Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceEff");
227 pCompEff0->SetAliRecInfoCuts(pRecInfoCuts);
228 pCompEff0->SetAliMCInfoCuts(pMCInfoCuts);
232 AliPerformanceDEdx *pCompDEdx3 = new AliPerformanceDEdx("AliPerformanceDEdxTPCInner","AliPerformanceDEdxTPCInner",kTPCInner,kFALSE);
234 Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceDEdxTPCInner");
236 pCompDEdx3->SetAliRecInfoCuts(pRecInfoCuts);
237 pCompDEdx3->SetAliMCInfoCuts(pMCInfoCuts);
241 AliPerformanceDCA *pCompDCA0 = new AliPerformanceDCA("AliPerformanceDCA","AliPerformanceDCA",kTPC,kFALSE);
243 Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceDCA");
245 pCompDCA0->SetAliRecInfoCuts(pRecInfoCuts);
246 pCompDCA0->SetAliMCInfoCuts(pMCInfoCuts);
250 AliPerformanceTPC *pCompTPC0 = new AliPerformanceTPC("AliPerformanceTPC","AliPerformanceTPC",kTPC,kFALSE);
252 Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceTPC");
254 pCompTPC0->SetAliRecInfoCuts(pRecInfoCutsTPC);
255 pCompTPC0->SetAliMCInfoCuts(pMCInfoCuts);
257 // TPC+ITS matching performance
259 AliPerformanceMatch *pCompMatch0 = new AliPerformanceMatch("AliPerformanceMatchTPCITS","AliPerformanceMatchTPCITS",0,kFALSE);
261 Error("AddTaskPerformanceMatch", "Cannot create AliPerformanceMatchTPCITS");
263 pCompMatch0->SetAliRecInfoCuts(pRecInfoCutsMATCH);
264 pCompMatch0->SetAliMCInfoCuts(pMCInfoCuts);
266 // TPC+TRD matching performance
268 AliPerformanceMatch *pCompMatch1 = new AliPerformanceMatch("AliPerformanceMatchTPCTRD","AliPerformanceMatchTPCTRD",1,kFALSE);
270 Error("AddTaskPerformanceMatch", "Cannot create AliPerformanceMatchTPCTRD");
272 pCompMatch1->SetAliRecInfoCuts(pRecInfoCutsMATCH);
273 pCompMatch1->SetAliMCInfoCuts(pMCInfoCuts);
275 AliPerformanceMatch *pCompMatch2 = new AliPerformanceMatch("AliPerformanceMatchTPCEFF","AliPerformanceMatchTPCEFF",2,kFALSE);
277 Error("AddTaskPerformanceMatch", "Cannot create AliPerformanceMatchTPCEFF");
279 pCompMatch2->SetAliRecInfoCuts(pRecInfoCutsMATCH);
280 pCompMatch2->SetAliMCInfoCuts(pMCInfoCuts);
283 // Add components to the performance task
285 //task->AddPerformanceObject( pCompDEdx3 );
286 //task->AddPerformanceObject( pCompDCA0 );
287 //task->AddPerformanceObject( pCompTPC0 );
288 //task->AddPerformanceObject( pCompMatch0 );
289 //task->AddPerformanceObject( pCompMatch1 );
290 //task->AddPerformanceObject( pCompMatch2 );
294 task->AddPerformanceObject( pCompRes0 );
295 //task->AddPerformanceObject( pCompRes3 );
296 //task->AddPerformanceObject( pCompRes4 );
297 task->AddPerformanceObject( pCompEff0 );
302 pCompDEdx3->SetTriggerClass(triggerClass);
303 pCompDCA0->SetTriggerClass(triggerClass);
304 pCompTPC0->SetTriggerClass(triggerClass);
305 pCompMatch0->SetTriggerClass(triggerClass);
306 pCompMatch1->SetTriggerClass(triggerClass);
307 pCompMatch2->SetTriggerClass(triggerClass);
311 // Create containers for input
313 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
316 // Create containers for output
318 AliAnalysisDataContainer *coutput_tpc = mgr->CreateContainer("TPCMC", TList::Class(), AliAnalysisManager::kOutputContainer, Form("TPC.MC.%s.root", task->GetName()));
319 mgr->ConnectOutput(task, 1, coutput_tpc);
321 // Enable debug printouts
322 mgr->SetDebugLevel(0);
324 if (!mgr->InitAnalysis())
329 if(bProof) mgr->StartAnalysis("proof",chain);
330 else mgr->StartAnalysis("local",chain);