]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/macros/AddTaskUE.C
adding the option for hybrid tracks global+global constrained as well as global+TPC...
[u/mrichter/AliRoot.git] / PWG4 / macros / AddTaskUE.C
1 \r
2 \r
3 void ConfigTaskUE(AliAnalysisTaskUE * ueana );          // common config, extend with different cases\r
4 void SetTrackCuts(AliAnalysisTaskUE * ueana, Char_t *ct);      //can be extended\r
5 void SetAnaTopology(AliAnalysisTaskUE * ueana, Char_t *at);    //can be extended                  \r
6 void SetRegionType(AliAnalysisTaskUE * ueana, Char_t *rt);     //can be extended        \r
7 void SetSorting(AliAnalysisTaskUE * ueana, Char_t *sort);\r
8 \r
9 AliAnalysisTaskUE *AddTaskUE(Char_t *jetBranch = "jets",Char_t *cuts = "ALICE", Char_t *anaTopology="LJ", Char_t *regionType="TRANSV", Char_t *sortBy="MSP")\r
10 {\r
11 // Creates a jet fider task, configures it and adds it to the analysis manager.\r
12 \r
13    // Get the pointer to the existing analysis manager via the static access method.\r
14    //==============================================================================\r
15    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
16    if (!mgr) {\r
17       ::Error("AddTaskUE", "No analysis manager to connect to.");\r
18       return NULL;\r
19    }  \r
20    \r
21    // Check the analysis type using the event handlers connected to the analysis manager.\r
22    //==============================================================================\r
23    if (!mgr->GetInputEventHandler()) {\r
24       ::Error("AddTaskUE", "This task requires an input event handler");\r
25       return NULL;\r
26    }\r
27 \r
28    // Create the task and configure it.\r
29    //===========================================================================\r
30    \r
31    TString jb(jetBranch);\r
32    TString ct(cuts);\r
33    TString at(anaTopology);\r
34    TString rt(regionType);\r
35    TString sort(sortBy);\r
36    TString name(Form("%s_%s_%s_%s_%s",jb.Data(),ct.Data(),at.Data(),rt.Data(),sort.Data()));\r
37    \r
38    AliAnalysisTaskUE* ueana = new  AliAnalysisTaskUE(Form("UEAnalysis_%s",name.Data()));\r
39    ueana->SelectAODBranch(jb.Data());\r
40    ConfigTaskUE(ueana);\r
41    SetTrackCuts(ueana,cuts);\r
42    SetAnaTopology(ueana,anaTopology);\r
43    SetRegionType(ueana,regionType);\r
44    SetSorting(ueana,sortBy);\r
45 \r
46    if( jb.Contains("ICDF") ) { // Use internal "Charged Particle Jet CDF" instead of jets from AOD\r
47       ueana->SetUseChPartJet( kTRUE );\r
48       ueana->SetPtMinChPartJet(0.5);\r
49    }\r
50 \r
51    //  ***** to be fixed *******\r
52    /*\r
53    if(jb.Length()>0){\r
54      ueana->ReadDeltaAOD(kTRUE);\r
55      ueana->SelectDeltaAODBranch(jb.Data());\r
56    }\r
57    */\r
58 \r
59    mgr->AddTask(ueana);\r
60    \r
61    // Create ONLY the output containers for the data produced by the task.\r
62    // Get and connect other common input/output containers via the manager as below\r
63    //==============================================================================\r
64    AliAnalysisDataContainer *coutput1_UE = 0;\r
65    if(jb.Length()==0)coutput1_UE = mgr->CreateContainer("histosUE", TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:PWG4_UE",AliAnalysisManager::GetCommonFileName()));\r
66    else coutput1_UE = mgr->CreateContainer(Form("histosUE_%s",name.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:PWG4_UE_%s",AliAnalysisManager::GetCommonFileName(),name.Data()));\r
67    \r
68    mgr->ConnectInput  (ueana, 0, mgr->GetCommonInputContainer());\r
69    mgr->ConnectOutput (ueana,     0, coutput1_UE );\r
70    \r
71    return ueana;\r
72 }\r
73 \r
74 void ConfigTaskUE(AliAnalysisTaskUE * ueana){\r
75   // common config,\r
76   ueana->SetDebugLevel(0); \r
77   ueana->SetPtRangeInHist(100, 0., 100.);\r
78 }\r
79 \r
80 //------------------------------------------------------------------------\r
81 SetTrackCuts(AliAnalysisTaskUE * ueana, Char_t *ct){\r
82   \r
83   ueana->SetFilterBit(16); // ITS refit\r
84 \r
85   switch (ct) {\r
86        case "ALICE":\r
87        ueana->SetTrackPtCut(0.1);\r
88        ueana->SetTrackEtaCut(0.9);\r
89        break;\r
90   \r
91        case "CDF":\r
92        ueana->SetTrackPtCut(0.5);\r
93        ueana->SetTrackEtaCut(0.9); // meaningful only for pure MC\r
94        break;\r
95 \r
96        default:\r
97        Printf("\n >>>>>>> AddTaskUE Error Wrong Set of Track Cuts selected\n");\r
98        break;\r
99   }\r
100 }\r
101 \r
102 //------------------------------------------------------------------------\r
103 //------------------------------------------------------------------------\r
104 SetAnaTopology(AliAnalysisTaskUE * ueana, Char_t *at){\r
105 \r
106   switch (at) {\r
107        case "LJ":  // leading jet\r
108         ueana->SetAnaTopology(1);\r
109         ueana->SetJet1EtaCut(0.5);\r
110        break;\r
111 \r
112        case "LJCC":  // leading jet with charged cluster\r
113         ueana->SetAnaTopology(1);\r
114         ueana->SetJet1EtaCut(0.9);  // CDF allow jet radius extend ouside |eta|<1\r
115        break;\r
116   \r
117        case "BB":  // back-to-back\r
118         ueana->SetAnaTopology(2);\r
119         ueana->SetJet1EtaCut(0.5);\r
120         ueana->SetJet2DeltaPhiCut(2.616);\r
121        break;\r
122 \r
123        case "BE":  // back-to-back exclusive\r
124         ueana->SetAnaTopology(3);\r
125         ueana->SetJet1EtaCut(0.5);\r
126         ueana->SetJet2DeltaPhiCut(2.616);\r
127         ueana->SetJet3PtCut(10.);\r
128        break;\r
129 \r
130        case "MP_eta05":\r
131         ueana->SetAnaTopology(4);\r
132         ueana->SetJet1EtaCut(0.9);\r
133        break;\r
134 \r
135        case "MP_eta09":  // max Pt charged particle\r
136          ueana->SetAnaTopology(4);\r
137          ueana->SetJet1EtaCut(0.9);\r
138        break;\r
139 \r
140 \r
141        default:\r
142        Printf("\n >>>>>>> AddTaskUE Error Wrong Analysis Topology selected\n");\r
143        break;\r
144   }\r
145 \r
146 }\r
147 \r
148 //------------------------------------------------------------------------\r
149 SetRegionType(AliAnalysisTaskUE * ueana, Char_t *rt){\r
150 \r
151   switch (rt) {\r
152        case "TRANSV":  \r
153         ueana->SetRegionType(1);        \r
154        break;\r
155   \r
156        case "CONE":\r
157         ueana->SetRegionType(2);        \r
158         ueana->SetConeRadius(0.4);   \r
159        break;\r
160 \r
161        default:\r
162        Printf("\n >>>>>>> AddTaskUE Error Wrong Region Type selected\n");\r
163        break;\r
164   }\r
165 }  \r
166 \r
167 //------------------------------------------------------------------------\r
168 SetSorting(AliAnalysisTaskUE * ueana, Char_t *sort){\r
169    \r
170    switch (sort){\r
171       // Minimum zone is selected per quantity type\r
172       case "MQA":\r
173        ueana->SetPtSumOrdering(1);             \r
174       break;\r
175       \r
176       // Minimum Zone is selected at the region having lowest pt summation of all tracks \r
177       case "MSP":\r
178        ueana->SetPtSumOrdering(2);\r
179       break;\r
180       \r
181       // Minimum Zone is selected at the region having lowest average pt per track\r
182       case "MAP":\r
183        ueana->SetPtSumOrdering(3);\r
184       break;\r
185       \r
186       default:\r
187        Printf("\n >>>>>>> AddTaskUE Error Wrong Sorting selected\n");     \r
188        Printf("\n >>>>>>> AddTaskUE Sort by Set to MSP \n");\r
189        ueana->SetPtSumOrdering(2);\r
190       break;\r
191    }\r
192 }\r