]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/EMCAL/macros/AddTaskEmcalEsdTrackFilter.C
bbc2accd182707318c44cd2a2177edfb763572a2
[u/mrichter/AliRoot.git] / PWG / EMCAL / macros / AddTaskEmcalEsdTrackFilter.C
1 // $Id$
2
3 AliEmcalEsdTrackFilterTask* AddTaskEmcalEsdTrackFilter(
4   const char *name              = "TrackFilter",
5   const char *trackCuts         = "Hybrid_LHC11h",
6   const char *taskName          = "AliEmcalEsdTrackFilterTask"
7 )
8
9   enum CutsType {
10     kHybrid  = 0,
11     kTpcOnly = 1
12   };
13
14   enum DataSet {
15     kLHC10h  = 0,
16     kLHC11a  = 1,
17     kLHC11c  = 3,
18     kLHC11d  = 3,
19     kLHC11h  = 3
20   };
21
22   CutsType cutsType = kHybrid;
23   DataSet  dataSet  = kLHC11h;
24
25   TString cutsLabel("hybrid tracks");
26   TString dataSetLabel("LHC11h");
27
28   TString strTrackCuts(trackCuts);
29   strTrackCuts.ToLower();
30
31   if (strTrackCuts.Contains("hybrid")) {
32     cutsType = kHybrid;
33   }
34   else if (strTrackCuts.Contains("tpconly")) {
35     cutsType = kTpcOnly;
36     cutsLabel = "TPC only constrained tracks";
37   }
38   else {
39     ::Warning("AddTaskEmcalEsdTpcTrack", "Cuts type not recognized, will assume Hybrid");
40   }
41
42   if (strTrackCuts.Contains("lhc10h")) {
43     dataSet = kLHC10h;
44   }
45   else if (strTrackCuts.Contains("lhc11a") || strTrackCuts.Contains("lhc12a15a")) {
46     dataSet = kLHC11a;
47     dataSetLabel = "LHC11a";
48   }
49   else if (strTrackCuts.Contains("lhc10e") ||   strTrackCuts.Contains("lhc10d") ||
50            strTrackCuts.Contains("lhc10e20") ||  strTrackCuts.Contains("lhc10f6a") ||
51            strTrackCuts.Contains("lhc11a1a") ||  strTrackCuts.Contains("lhc11a1b") ||
52            strTrackCuts.Contains("lhc11a1c") ||  strTrackCuts.Contains("lhc11a1d") ||
53            strTrackCuts.Contains("lhc11a1e") ||  strTrackCuts.Contains("lhc11a1f") ||
54            strTrackCuts.Contains("lhc11a1g") ||  strTrackCuts.Contains("lhc11a1h") ||
55            strTrackCuts.Contains("lhc11a1i") ||  strTrackCuts.Contains("lhc11a1j")) {
56     dataSet = kLHC11a;
57     dataSetLabel = "LHC10e";
58   }
59   else if (strTrackCuts.Contains("lhc11c")) {
60     dataSet = kLHC11c;
61     dataSetLabel = "LHC11c";
62   }
63   else if (strTrackCuts.Contains("lhc11d")) {
64     dataSet = kLHC11d;
65     dataSetLabel = "LHC11d";
66   }
67   else if (strTrackCuts.Contains("lhc11h") || strTrackCuts.Contains("lhc12a15e"))
68   {
69     dataSet = kLHC11h;
70     dataSetLabel = "LHC11h";
71   }
72   else if (strTrackCuts.Contains("lhc12g"))
73   {
74     dataSet = kLHC11h;
75     dataSetLabel = "LHC12g";
76   }
77   else if (strTrackCuts.Contains("lhc13b"))
78   {
79     dataSet = kLHC11h;
80     dataSetLabel = "LHC13b";
81   }
82   else if (strTrackCuts.Contains("lhc13c"))
83   {
84     dataSet = kLHC11h;
85     dataSetLabel = "LHC13c";
86   }
87   else if (strTrackCuts.Contains("lhc13d"))
88   {
89     dataSet = kLHC11h;
90     dataSetLabel = "LHC13d";
91   }
92   else if (strTrackCuts.Contains("lhc13e"))
93   {
94     dataSet = kLHC11h;
95     dataSetLabel = "LHC13e";
96   }
97   else if (strTrackCuts.Contains("lhc13f"))
98   {
99     dataSet = kLHC11h;
100     dataSetLabel = "LHC13f";
101   }
102   else if (strTrackCuts.Contains("lhc13g"))
103   {
104     dataSet = kLHC11h;
105     dataSetLabel = "LHC13g";
106   }
107   else if (strTrackCuts.Contains("lhc12a15f"))
108   {
109     dataSet = kLHC11h;
110     dataSetLabel = "LHC12a15f";
111   }
112   else if (strTrackCuts.Contains("lhc13b4"))
113   {
114     dataSet = kLHC11h;
115     dataSetLabel = "LHC13b4";
116   }
117   else if (strTrackCuts.Contains("lhc12a15g"))
118   {
119     dataSet = kLHC11d;
120     dataSetLabel = "LHC12a15g";
121   }
122   else if (strTrackCuts.Contains("lhc12f2a"))
123   {
124     dataSet = kLHC11d;
125     dataSetLabel = "LHC12f2a";
126   }
127   else {
128     ::Warning("AddTaskEmcalEsdTpcTrack", "Dataset not recognized, will assume LHC11h");
129   }
130
131   // Get the pointer to the existing analysis manager via the static access method.
132   //==============================================================================
133   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
134   if (!mgr) {
135     ::Error("AddTaskEmcalEsdTpcTrack", "No analysis manager to connect to.");
136     return NULL;
137   }  
138   
139   // Check the analysis type using the event handlers connected to the analysis manager.
140   //==============================================================================
141   AliVEventHandler *evhand = mgr->GetInputEventHandler();
142   if (!evhand) {
143     ::Error("AddTaskEmcalEsdTpcTrack", "This task requires an input event handler");
144     return NULL;
145   }
146   
147   if (!evhand->InheritsFrom("AliESDInputHandler")) {
148     ::Info("AddTaskEmcalEsdTpcTrack", "This task is only needed for ESD analysis. No task added.");
149     return NULL;
150   }
151   
152   //-------------------------------------------------------
153   // Init the task and do settings
154   //-------------------------------------------------------
155
156   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/CreateTrackCutsPWGJE.C");
157   Bool_t includeNoITS = kFALSE;
158   AliEmcalEsdTrackFilterTask *eTask = new AliEmcalEsdTrackFilterTask(taskName); // default is TPC only tracks constrained to the vertex
159
160   if ((dataSet == kLHC11c && cutsType == kHybrid) ||
161       (dataSet == kLHC11d && cutsType == kHybrid) ||
162       (dataSet == kLHC11h && cutsType == kHybrid)) {
163     /* hybrid track cuts*/
164     AliESDtrackCuts *cutsp = CreateTrackCutsPWGJE(10001008);       //1000 adds SPD any requirement
165     AliESDtrackCuts *hybsp = CreateTrackCutsPWGJE(10041008);       //1004 removes ITSrefit requirement from standard set   
166     hybsp->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kOff);
167     eTask->SetTrackCuts(cutsp);
168     eTask->SetHybridTrackCuts(hybsp);
169   }
170   else if ((dataSet == kLHC10h && cutsType == kHybrid) ||
171            (dataSet == kLHC11a && cutsType == kHybrid)) {
172     /* hybrid track cuts*/
173     AliESDtrackCuts *cutsp = CreateTrackCutsPWGJE(10001006);       //1000 adds SPD any requirement
174     AliESDtrackCuts *hybsp = CreateTrackCutsPWGJE(10041006);       //1004 removes ITSrefit requirement from standard set    
175     hybsp->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kOff);
176     eTask->SetTrackCuts(cutsp);
177     eTask->SetHybridTrackCuts(hybsp);
178     includeNoITS = kTRUE;
179   }
180
181   eTask->SetTracksName(name);
182   eTask->SetIncludeNoITS(includeNoITS);
183
184   cout << " *** Track selector task configured to select " << cutsLabel  << " in dataset "<< dataSetLabel << " *** " << endl;
185
186   //-------------------------------------------------------
187   // Final settings, pass to manager and set the containers
188   //-------------------------------------------------------
189   mgr->AddTask(eTask);
190   
191   // Create containers for input/output
192   AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
193   mgr->ConnectInput(eTask, 0, cinput1);
194   
195   return eTask;
196 }