]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/EMCAL/macros/AddTaskEmcalEsdTpcTrack.C
c35da9d7a93f06e0c0d22dba92c0420c6185e150
[u/mrichter/AliRoot.git] / PWG / EMCAL / macros / AddTaskEmcalEsdTpcTrack.C
1 // $Id$
2
3 AliEmcalEsdTpcTrackTask* AddTaskEmcalEsdTpcTrack(
4   const char *name       = "TpcSpdVertexConstrainedTracks",
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
29   if (strTrackCuts.Contains("Hybrid")) {
30     cutsType = kHybrid;
31   }
32   else if (strTrackCuts.Contains("TpcOnly")) {
33     cutsType = kTpcOnly;
34     cutsLabel = "TPC only constrained tracks";
35   }
36   else {
37     ::Warning("AddTaskEmcalEsdTpcTrack", "Cuts type not recognized, will assume Hybrid");
38   }
39
40   if (strTrackCuts.Contains("LHC10h")) {
41     dataSet = kLHC10h;
42   }
43   else if (strTrackCuts.Contains("LHC11a")) {
44     dataSet = kLHC11a;
45     dataSetLabel = "LHC11a";
46   }
47   else if (strTrackCuts.Contains("LHC11c")) {
48     dataSet = kLHC11c;
49     dataSetLabel = "LHC11c";
50   }
51   else if (strTrackCuts.Contains("LHC11d")) {
52     dataSet = kLHC11d;
53     dataSetLabel = "LHC11d";
54   }
55   else if (strTrackCuts.Contains("LHC11h")) {
56     dataSet = kLHC11h;
57     dataSetLabel = "LHC11h";
58   }
59   else {
60     ::Warning("AddTaskEmcalEsdTpcTrack", "Dataset not recognized, will assume LHC11h");
61   }
62
63   // Get the pointer to the existing analysis manager via the static access method.
64   //==============================================================================
65   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
66   if (!mgr) {
67     ::Error("AddTaskEmcalEsdTpcTrack", "No analysis manager to connect to.");
68     return NULL;
69   }  
70   
71   // Check the analysis type using the event handlers connected to the analysis manager.
72   //==============================================================================
73   AliVEventHandler *evhand = mgr->GetInputEventHandler();
74   if (!evhand) {
75     ::Error("AddTaskEmcalEsdTpcTrack", "This task requires an input event handler");
76     return NULL;
77   }
78   
79   if (!evhand->InheritsFrom("AliESDInputHandler")) {
80     ::Info("AddTaskEmcalEsdTpcTrack", "This task is only needed for ESD analysis. No task added.");
81     return NULL;
82   }
83   
84   //-------------------------------------------------------
85   // Init the task and do settings
86   //-------------------------------------------------------
87
88   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/CreateTrackCutsPWGJE.C");
89
90   AliEmcalEsdTpcTrackTask *eTask = new AliEmcalEsdTpcTrackTask(); // default is TPC only tracks constrained to the vertex
91
92   if ((dataSet == kLHC11c && cutsType == kHybrid) ||
93       (dataSet == kLHC11d && cutsType == kHybrid) ||
94       (dataSet == kLHC11h && cutsType == kHybrid)) {
95     /* hybrid track cuts*/
96     AliESDtrackCuts *cutsp = CreateTrackCutsPWGJE(10001007);       //1000 adds SPD any requirement
97     AliESDtrackCuts *hybsp = CreateTrackCutsPWGJE(10041007);       //1004 removes ITSrefit requirement from standard set    
98     hybsp->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kOff);
99     eTask->SetTrackCuts(cutsp);
100     eTask->SetHybridTrackCuts(hybsp);
101   }
102   else if ((dataSet == kLHC10h && cutsType == kHybrid) ||
103            (dataSet == kLHC11a && cutsType == kHybrid)} {
104     /* hybrid track cuts*/
105     AliESDtrackCuts *cutsp = CreateTrackCutsPWGJE(10001006);       //1000 adds SPD any requirement
106     AliESDtrackCuts *hybsp = CreateTrackCutsPWGJE(10041006);       //1004 removes ITSrefit requirement from standard set    
107     hybsp->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kOff);
108     eTask->SetTrackCuts(cutsp);
109     eTask->SetHybridTrackCuts(hybsp);
110   }
111
112   eTask->SetTracksName(name);
113
114   cout << " *** Track selector task configured to select " << cutsLabel  << " in dataset "<< dataSetLabel << " *** " << endl;
115
116   //-------------------------------------------------------
117   // Final settings, pass to manager and set the containers
118   //-------------------------------------------------------
119   mgr->AddTask(eTask);
120   
121   // Create containers for input/output
122   AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
123   mgr->ConnectInput(eTask, 0, cinput1);
124   
125   return eTask;
126 }