Adding example macro to setup and use comparison tasks
[u/mrichter/AliRoot.git] / PWG1 / Macros / RunAliComparisonTask.C
1 void RunAliComparisonTask(TChain  *chain = 0, Bool_t aProof = kTRUE, Bool_t aDebug = kFALSE)
2 {
3   //
4   // Create global cuts objects 
5   //
6
7   // Create ESD track reconstruction cuts
8   AliRecInfoCuts *pRecInfoCuts = new AliRecInfoCuts(); 
9   if(pRecInfoCuts) {
10     pRecInfoCuts->SetPtRange(0.15,200.0);
11     pRecInfoCuts->SetMaxAbsTanTheta(1.0);
12     pRecInfoCuts->SetMinNClustersTPC(10);
13     pRecInfoCuts->SetMinTPCsignalN(50);
14   } else {
15     AliDebug(AliLog::kError, "ERROR: Cannot create AliRecInfoCuts object");
16   }
17
18   // Create MC track reconstruction cuts
19   AliMCInfoCuts  *pMCInfoCuts = new AliMCInfoCuts();
20   if(pMCInfoCuts) {
21     pMCInfoCuts->SetMinRowsWithDigits(50);
22     pMCInfoCuts->SetMaxR(0.001);  
23     pMCInfoCuts->SetMaxVz(0.001); 
24     pMCInfoCuts->SetRangeTPCSignal(0.5,1.4); 
25   } else {
26     AliDebug(AliLog::kError, "ERROR: Cannot AliMCInfoCuts object");
27   }
28
29   //
30   // Create comparison objects and set cuts 
31   //
32
33   // Resolution
34   AliComparisonRes *pCompRes = new AliComparisonRes(); 
35   if(!pCompRes) {
36     AliDebug(AliLog::kError, "ERROR: Cannot create AliComparisonRes object");
37   }
38   pCompRes->SetAliRecInfoCuts(pRecInfoCuts);
39   pCompRes->SetAliMCInfoCuts(pMCInfoCuts);
40
41   // Efficiency
42   AliComparisonEff *pCompEff =  new AliComparisonEff();
43   if(!pCompEff) {
44     AliDebug(AliLog::kError, "ERROR: Cannot create AliComparisonEff object");
45   }
46   pCompEff->SetAliRecInfoCuts(pRecInfoCuts);
47   pCompEff->SetAliMCInfoCuts(pMCInfoCuts);
48
49   // dE/dx
50   AliComparisonDEdx *pCompDEdx = new AliComparisonDEdx();
51   if(!pCompDEdx) {
52     AliDebug(AliLog::kError, "ERROR: Cannot create AliComparisonDEdx object");
53   }
54   pCompDEdx->SetAliRecInfoCuts(pRecInfoCuts);
55   pCompDEdx->SetAliMCInfoCuts(pMCInfoCuts);
56   pCompDEdx->SetMCPtMin(0.5);
57   pCompDEdx->SetMCAbsTanThetaMax(0.5);
58   pCompDEdx->SetMCPdgCode(pMCInfoCuts->GetPiP()); // only pi+ particles
59
60   // DCA
61   AliComparisonDCA *pCompDCA = new AliComparisonDCA();
62   if(!pCompDCA) {
63     AliDebug(AliLog::kError, "ERROR: Cannot create AliComparisonDCA object");
64   }
65   pCompDCA->SetAliRecInfoCuts(pRecInfoCuts);
66   pCompDCA->SetAliMCInfoCuts(pMCInfoCuts);
67
68   // Create the analysis manager
69   mgr = new AliAnalysisManager("testAnalysis");
70
71   // Create, add task
72   task = new AliComparisonTask;
73   task->SetAliComparisonRes( pCompRes );
74   task->SetAliComparisonEff( pCompEff );
75   task->SetAliComparisonDEdx( pCompDEdx );
76   task->SetAliComparisonDCA( pCompDCA );
77   mgr->AddTask(task);
78
79   // Attach input
80   cInput  = mgr->CreateContainer("cInput", TChain::Class(), AliAnalysisManager::kInputContainer);
81   mgr->ConnectInput(task, 0, cInput);
82
83   // Attach output
84   cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer);
85   mgr->ConnectOutput(task, 0, cOutput);
86
87   // Enable debug printouts
88   if (aDebug)
89     mgr->SetDebugLevel(2);
90
91   // Run analysis
92   mgr->InitAnalysis();
93   mgr->PrintStatus();
94
95   if(chain) {
96     mgr->StartAnalysis((aProof) ? "proof" : "local", chain);
97   } else {
98     AliDebug(AliLog::kError, "ERROR: No chain available");
99   }
100 }