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