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 gSystem->Load("libANALYSIS");
12 gSystem->Load("libANALYSISalice");
13 gSystem->Load("libTENDER");
14 gSystem->Load("libCORRFW");
15 gSystem->Load("libPWGPP");
17 gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
18 TChain* chain = CreateESDChain("esds.txt",10, 0);
19 //TChain* chain = CreateESDChain("/u/jacek/alice/dNdPt/input/LHC10a8/esds_104867_MC_LHC10a8.txt",3, 0);
22 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/TPC/macros/RunPerformanceTaskResEffMC.C");
23 RunPerformanceTaskResEffMC(chain, kTRUE, kFALSE, kFALSE);
25 //2. Make final spectra and store them in the
26 // output folder and generate control pictures
29 TFile f("TPC.MC.Performance.root");
31 AliPerformanceRes * compObjRes = (AliPerformanceRes*)TPCMC->FindObject("AliPerformanceRes");
32 compObjRes->Analyse();
33 compObjRes->GetAnalysisFolder()->ls("*");
34 // create control pictures
35 compObjRes->PrintHisto(kTRUE,"TPC.MC.PerformanceRes.Pict.ps");
36 // store output QA histograms in file
37 TFile fout("TPC.MC.PerformanceRes.Histo.root","recreate");
38 compObjRes->GetAnalysisFolder()->Write();
43 AliPerformanceEff * compObjEff = (AliPerformanceEff*)TPCMC->FindObject("AliPerformanceEff");
44 compObjEff->Analyse();
45 compObjEff->GetAnalysisFolder()->ls("*");
46 // create control pictures
47 compObjEff->PrintHisto(kTRUE,"TPC.MC.PerformanceEff.Pict.ps");
48 // store output QA histograms in file
49 TFile fout("TPC.MC.PerformanceEff.Histo.root","recreate");
50 compObjEff->GetAnalysisFolder()->Write();
57 //_____________________________________________________________________________
58 void RunPerformanceTaskResEffMC(TChain *chain, Bool_t bUseMCInfo=kTRUE, Bool_t bUseESDfriend=kTRUE, Bool_t bProof=kTRUE)
62 AliDebug(AliLog::kError, "ERROR: No input chain available");
66 // Swtich off all AliInfo (too much output!)
68 AliLog::SetGlobalLogLevel(AliLog::kError);
71 // Create analysis manager
73 AliAnalysisManager *mgr = new AliAnalysisManager;
75 Error("runTPCQA","AliAnalysisManager not set!");
80 // Set ESD input handler
82 AliESDInputHandler* esdH = new AliESDInputHandler;
84 Error("runTPCQA","AliESDInputHandler not created!");
87 if(bUseESDfriend) esdH->SetActiveBranches("ESDfriend");
88 mgr->SetInputEventHandler(esdH);
91 // Set MC input handler
94 AliMCEventHandler* mcH = new AliMCEventHandler;
96 Error("runTPCQA","AliMCEventHandler not created!");
99 mcH->SetReadTR(kTRUE);
100 mgr->SetMCtruthEventHandler(mcH);
106 AliPerformanceTask *task = new AliPerformanceTask("Performance","TPC Performance");
108 Error("AddTaskPerformanceTPC", "TPC performance task cannot be created!");
111 task->SetUseMCInfo(bUseMCInfo);
112 task->SetUseESDfriend(bUseESDfriend);
115 // Add task to analysis manager
120 // Create TPC-ESD track reconstruction cuts
123 AliRecInfoCuts *pRecInfoCutsTPC = new AliRecInfoCuts();
124 if(pRecInfoCutsTPC) {
125 pRecInfoCutsTPC->SetMaxDCAToVertexXY(3.0);
126 pRecInfoCutsTPC->SetMaxDCAToVertexZ(30.0);
127 //pRecInfoCutsTPC->SetMaxDCAToVertexZ(3.0);
128 pRecInfoCutsTPC->SetRequireSigmaToVertex(kFALSE);
129 pRecInfoCutsTPC->SetRequireTPCRefit(kFALSE);
130 pRecInfoCutsTPC->SetAcceptKinkDaughters(kTRUE);
131 pRecInfoCutsTPC->SetMinNClustersTPC(50);
132 pRecInfoCutsTPC->SetMaxChi2PerClusterTPC(1000000.);
133 pRecInfoCutsTPC->SetDCAToVertex2D(kFALSE);
135 pRecInfoCutsTPC->SetHistogramsOn(kFALSE);
138 Error("AddTaskPerformanceTPC", "AliRecInfoCutsTPC cannot be created!");
143 // Create TPC-ESD track reconstruction cuts
146 AliRecInfoCuts *pRecInfoCutsMATCH = new AliRecInfoCuts();
147 if(pRecInfoCutsMATCH) {
148 pRecInfoCutsMATCH->SetMaxDCAToVertexXY(3.0);
149 pRecInfoCutsMATCH->SetMaxDCAToVertexZ(3.0);
150 pRecInfoCutsMATCH->SetRequireSigmaToVertex(kFALSE);
151 pRecInfoCutsMATCH->SetRequireTPCRefit(kFALSE);
152 pRecInfoCutsMATCH->SetAcceptKinkDaughters(kTRUE);
153 pRecInfoCutsMATCH->SetMinNClustersTPC(50);
154 pRecInfoCutsMATCH->SetMaxChi2PerClusterTPC(1000000.);
155 pRecInfoCutsMATCH->SetDCAToVertex2D(kFALSE);
156 pRecInfoCutsMATCH->SetTPCITSMatchingRadius(70);
157 pRecInfoCutsMATCH->SetTPCTRDMatchingRadius(260);
158 pRecInfoCutsMATCH->SetMinNClustersITS(3);
160 pRecInfoCutsMATCH->SetHistogramsOn(kFALSE);
163 Error("AddTaskPerformanceTPC", "AliRecInfoCutsTPC cannot be created!");
168 // Create TPC-ESD track reconstruction cuts
170 AliRecInfoCuts *pRecInfoCuts = new AliRecInfoCuts();
172 pRecInfoCuts->SetMaxDCAToVertexXY(3.0);
173 pRecInfoCuts->SetMaxDCAToVertexZ(3.0);
174 pRecInfoCuts->SetMinNClustersTPC(50);
175 pRecInfoCuts->SetMinNClustersITS(2);
176 pRecInfoCuts->SetHistogramsOn(kFALSE);
177 pRecInfoCuts->SetTPCITSMatchingRadius(70);
178 pRecInfoCuts->SetTPCTRDMatchingRadius(260);
181 Error("AddTaskPerformanceTPC", "AliRecInfoCuts cannot be created!");
185 // Create TPC-MC track reconstruction cuts
187 AliMCInfoCuts *pMCInfoCuts = new AliMCInfoCuts();
189 pMCInfoCuts->SetMinTrackLength(70);
192 Error("AddTaskPerformanceTPC", "AliMCInfoCuts cannot be created!");
197 // Create performance objects for TPC and set cuts
199 enum { kTPC = 0, kTPCITS, kConstrained, kTPCInner, kTPCOuter, kTPCSec };
204 AliPerformanceRes *pCompRes0 = new AliPerformanceRes("AliPerformanceRes","AliPerformanceRes",kTPC,kFALSE);
206 Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceRes");
208 pCompRes0->SetAliRecInfoCuts(pRecInfoCuts);
209 pCompRes0->SetAliMCInfoCuts(pMCInfoCuts);
211 AliPerformanceRes *pCompRes3 = new AliPerformanceRes("AliPerformanceResTPCInner","AliPerformanceResTPCInner",kTPCInner,kFALSE);
213 Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceResTPCInner");
215 pCompRes3->SetAliRecInfoCuts(pRecInfoCuts);
216 pCompRes3->SetAliMCInfoCuts(pMCInfoCuts);
218 AliPerformanceRes *pCompRes4 = new AliPerformanceRes("AliPerformanceResTPCOuter","AliPerformanceResTPCOuter",kTPCOuter,kFALSE);
220 Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceResTPCOuter");
222 pCompRes4->SetAliRecInfoCuts(pRecInfoCuts);
223 pCompRes4->SetAliMCInfoCuts(pMCInfoCuts);
227 AliPerformanceEff *pCompEff0 = new AliPerformanceEff("AliPerformanceEff","AliPerformanceEff",kTPC,kFALSE);
229 Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceEff");
231 pCompEff0->SetAliRecInfoCuts(pRecInfoCuts);
232 pCompEff0->SetAliMCInfoCuts(pMCInfoCuts);
236 AliPerformanceDEdx *pCompDEdx3 = new AliPerformanceDEdx("AliPerformanceDEdxTPCInner","AliPerformanceDEdxTPCInner",kTPCInner,kFALSE);
238 Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceDEdxTPCInner");
240 pCompDEdx3->SetAliRecInfoCuts(pRecInfoCuts);
241 pCompDEdx3->SetAliMCInfoCuts(pMCInfoCuts);
245 AliPerformanceDCA *pCompDCA0 = new AliPerformanceDCA("AliPerformanceDCA","AliPerformanceDCA",kTPC,kFALSE);
247 Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceDCA");
249 pCompDCA0->SetAliRecInfoCuts(pRecInfoCuts);
250 pCompDCA0->SetAliMCInfoCuts(pMCInfoCuts);
254 AliPerformanceTPC *pCompTPC0 = new AliPerformanceTPC("AliPerformanceTPC","AliPerformanceTPC",kTPC,kFALSE);
256 Error("AddTaskPerformanceTPC", "Cannot create AliPerformanceTPC");
258 pCompTPC0->SetAliRecInfoCuts(pRecInfoCutsTPC);
259 pCompTPC0->SetAliMCInfoCuts(pMCInfoCuts);
261 // TPC+ITS matching performance
263 AliPerformanceMatch *pCompMatch0 = new AliPerformanceMatch("AliPerformanceMatchTPCITS","AliPerformanceMatchTPCITS",0,kFALSE);
265 Error("AddTaskPerformanceMatch", "Cannot create AliPerformanceMatchTPCITS");
267 pCompMatch0->SetAliRecInfoCuts(pRecInfoCutsMATCH);
268 pCompMatch0->SetAliMCInfoCuts(pMCInfoCuts);
270 // TPC+TRD matching performance
272 AliPerformanceMatch *pCompMatch1 = new AliPerformanceMatch("AliPerformanceMatchTPCTRD","AliPerformanceMatchTPCTRD",1,kFALSE);
274 Error("AddTaskPerformanceMatch", "Cannot create AliPerformanceMatchTPCTRD");
276 pCompMatch1->SetAliRecInfoCuts(pRecInfoCutsMATCH);
277 pCompMatch1->SetAliMCInfoCuts(pMCInfoCuts);
279 AliPerformanceMatch *pCompMatch2 = new AliPerformanceMatch("AliPerformanceMatchTPCEFF","AliPerformanceMatchTPCEFF",2,kFALSE);
281 Error("AddTaskPerformanceMatch", "Cannot create AliPerformanceMatchTPCEFF");
283 pCompMatch2->SetAliRecInfoCuts(pRecInfoCutsMATCH);
284 pCompMatch2->SetAliMCInfoCuts(pMCInfoCuts);
287 // Add components to the performance task
289 //task->AddPerformanceObject( pCompDEdx3 );
290 //task->AddPerformanceObject( pCompDCA0 );
291 //task->AddPerformanceObject( pCompTPC0 );
292 //task->AddPerformanceObject( pCompMatch0 );
293 //task->AddPerformanceObject( pCompMatch1 );
294 //task->AddPerformanceObject( pCompMatch2 );
298 task->AddPerformanceObject( pCompRes0 );
299 //task->AddPerformanceObject( pCompRes3 );
300 //task->AddPerformanceObject( pCompRes4 );
301 task->AddPerformanceObject( pCompEff0 );
306 pCompDEdx3->SetTriggerClass(triggerClass);
307 pCompDCA0->SetTriggerClass(triggerClass);
308 pCompTPC0->SetTriggerClass(triggerClass);
309 pCompMatch0->SetTriggerClass(triggerClass);
310 pCompMatch1->SetTriggerClass(triggerClass);
311 pCompMatch2->SetTriggerClass(triggerClass);
315 // Create containers for input
317 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
320 // Create containers for output
322 AliAnalysisDataContainer *coutput_tpc = mgr->CreateContainer("TPCMC", TList::Class(), AliAnalysisManager::kOutputContainer, Form("TPC.MC.%s.root", task->GetName()));
323 mgr->ConnectOutput(task, 1, coutput_tpc);
325 // Enable debug printouts
326 mgr->SetDebugLevel(0);
328 if (!mgr->InitAnalysis())
333 if(bProof) mgr->StartAnalysis("proof",chain);
334 else mgr->StartAnalysis("local",chain);