]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/macros/AddTaskESDfilter.C
AliTPCcalibCalib.cxx - use also alignmnet - not implemented yet
[u/mrichter/AliRoot.git] / PWG4 / macros / AddTaskESDfilter.C
1 AliESDtrackCuts *CreateCuts(Int_t iCut = 0); // create the standard cuts\r
2 AliAnalysisTaskESDfilter *AddTaskESDfilter(bool bUseKineFilter = true)\r
3 {\r
4 // Creates a jet fider task, configures it and adds it to the analysis manager.\r
5 \r
6    // Get the pointer to the existing analysis manager via the static access method.\r
7    //==============================================================================\r
8    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
9    if (!mgr) {\r
10       ::Error("AddTaskESDFilter", "No analysis manager to connect to.");\r
11       return NULL;\r
12    }  \r
13    \r
14    // Check the analysis type using the event handlers connected to the analysis manager.\r
15    //==============================================================================\r
16    if (!mgr->GetInputEventHandler()) {\r
17       ::Error("AddTaskESDFilter", "This task requires an input event handler");\r
18       return NULL;\r
19    }\r
20 \r
21    // Check if MC handler is connected in case kine filter requested            \r
22    AliMCEventHandler *mcH = (AliMCEventHandler*)mgr->GetMCtruthEventHandler();\r
23    if (!mcH && bUseKineFilter) {\r
24      ::Error("AddTaskESDFilter", "No MC handler connected while kine filtering requested");\r
25       return NULL;\r
26    }\r
27 \r
28 \r
29    // Create the task and configure it.\r
30    //===========================================================================\r
31 \r
32    // this task is also needed to set the MCEventHandler                        \r
33    // to the AODHandler, this will not be needed when                           \r
34    // AODHandler goes to ANALYSISalice                                          \r
35    AliAnalysisTaskMCParticleFilter *kinefilter = 0;\r
36    if (bUseKineFilter) {\r
37       kinefilter = new AliAnalysisTaskMCParticleFilter("Particle Kine Filter");\r
38       mgr->AddTask(kinefilter);\r
39    }\r
40 \r
41 \r
42    AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");\r
43    trackFilter->AddCuts(CreateCuts(0));\r
44    trackFilter->AddCuts(CreateCuts(1));\r
45    \r
46    AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter");\r
47    esdfilter->SetTrackFilter(trackFilter);\r
48    mgr->AddTask(esdfilter);\r
49       \r
50    // Create ONLY the output containers for the data produced by the task.\r
51    // Get and connect other common input/output containers via the manager as below\r
52    //==============================================================================\r
53    mgr->ConnectInput  (esdfilter, 0, mgr->GetCommonInputContainer());\r
54    mgr->ConnectOutput (esdfilter, 0, mgr->GetCommonOutputContainer());\r
55 \r
56    if (bUseKineFilter) {\r
57      mgr->ConnectInput  (kinefilter,  0, mgr->GetCommonInputContainer());\r
58      mgr->ConnectOutput (kinefilter,  0, mgr->GetCommonOutputContainer());\r
59      AliAnalysisDataContainer *coutputEx = mgr->CreateContainer("cFilterList", TList::Class(),\r
60                                                                 AliAnalysisManager::kOutputContainer,"pyxsec_hists.root");\r
61      mgr->ConnectOutput (kinefilter,  1,coutputEx);\r
62    }   \r
63 \r
64 \r
65 \r
66    return esdfilter;\r
67 }\r
68 \r
69 AliESDtrackCuts *CreateCuts(Int_t iCut){\r
70   AliESDtrackCuts* esdTrackCuts = 0;  \r
71   if(iCut == 0){\r
72     esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts", "Loose");\r
73     esdTrackCuts->SetMinNClustersTPC(50);   \r
74     esdTrackCuts->SetMaxChi2PerClusterTPC(3.5);\r
75     esdTrackCuts->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);\r
76     esdTrackCuts->SetRequireTPCRefit(kTRUE);\r
77     esdTrackCuts->SetMaxDCAToVertexXY(2.4);\r
78     esdTrackCuts->SetMaxDCAToVertexZ(3.2);\r
79     esdTrackCuts->SetDCAToVertex2D(kTRUE);\r
80     esdTrackCuts->SetRequireSigmaToVertex(kFALSE);\r
81     // additional high pT cut\r
82     esdTrackCuts->SetMaxRel1PtUncertainty(0.08);\r
83   }\r
84   else if(iCut == 1){\r
85     esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts", "Old loose cuts");\r
86     esdTrackCuts->SetMinNClustersTPC(50);   \r
87     esdTrackCuts->SetMaxChi2PerClusterTPC(3.5);\r
88     esdTrackCuts->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);\r
89     esdTrackCuts->SetRequireTPCRefit(kTRUE);\r
90     esdTrackCuts->SetMaxNsigmaToVertex(3);\r
91     esdTrackCuts->SetRequireSigmaToVertex(kTRUE);\r
92     esdTrackCuts->SetAcceptKinkDaughters(kFALSE);\r
93   }\r
94 \r
95 \r
96   \r
97   return esdTrackCuts;\r
98 \r
99 }\r