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