]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/macros/AddTaskESDfilter.C
fixed typo
[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    \r
45    AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter");\r
46    esdfilter->SetTrackFilter(trackFilter);\r
47    mgr->AddTask(esdfilter);\r
48       \r
49    // Create ONLY the output containers for the data produced by the task.\r
50    // Get and connect other common input/output containers via the manager as below\r
51    //==============================================================================\r
52    mgr->ConnectInput  (esdfilter, 0, mgr->GetCommonInputContainer());\r
53    mgr->ConnectOutput (esdfilter, 0, mgr->GetCommonOutputContainer());\r
54 \r
55    if (bUseKineFilter) {\r
56      mgr->ConnectInput  (kinefilter,  0, mgr->GetCommonInputContainer());\r
57      mgr->ConnectOutput (kinefilter,  0, mgr->GetCommonOutputContainer());\r
58    }\r
59 \r
60 \r
61    return esdfilter;\r
62 }\r
63 \r
64 AliAnalysisTaskESDfilter *AddTaskESDfilter(AliAnalysisManager* mgr,AliAnalysisDataContainer *cinput, AliAnalysisDataContainer *cout_aod)\r
65 {\r
66   // This is only for running on PROOF with the old root version 5-22-00 \r
67   // and the older version of the AF\r
68 \r
69    // Get the pointer to the existing analysis manager via the static access method.\r
70    //==============================================================================\r
71    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
72    if (!mgr) {\r
73       ::Error("AddTaskESDFilter", "No analysis manager to connect to.");\r
74       return NULL;\r
75    }  \r
76    \r
77    // Check the analysis type using the event handlers connected to the analysis manager.\r
78    //==============================================================================\r
79    if (!mgr->GetInputEventHandler()) {\r
80       ::Error("AddTaskESDFilter", "This task requires an input event handler");\r
81       return NULL;\r
82    }\r
83 \r
84    // Create the task and configure it.\r
85    //===========================================================================\r
86    AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");\r
87    trackFilter->AddCuts(CreateCuts(0));\r
88    //\r
89    // ESD filter task putting standard info to output AOD (with cuts)\r
90    AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter");\r
91    esdfilter->SetTrackFilter(trackFilter);\r
92    mgr->AddTask(esdfilter);\r
93 \r
94    // Connect to data containers\r
95    mgr->ConnectInput  (esdfilter,  0, cinput  );\r
96    mgr->ConnectOutput (esdfilter,  0, cout_aod );\r
97 \r
98    return esdfilter;\r
99 \r
100 }  \r
101 \r
102 AliESDtrackCuts *CreateCuts(Int_t iCut){\r
103   AliESDtrackCuts* esdTrackCuts = 0;  \r
104   if(iCut == 0){\r
105     esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts", "Loose");\r
106     esdTrackCuts->SetMinNClustersTPC(50);   \r
107     esdTrackCuts->SetMaxChi2PerClusterTPC(3.5);\r
108     esdTrackCuts->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);\r
109     esdTrackCuts->SetRequireTPCRefit(kTRUE);\r
110     esdTrackCuts->SetMaxNsigmaToVertex(3);\r
111     esdTrackCuts->SetRequireSigmaToVertex(kTRUE);\r
112     esdTrackCuts->SetAcceptKingDaughters(kFALSE);\r
113   }\r
114   \r
115   return esdTrackCuts;\r
116 \r
117 }\r