aade3858efe2f0e4fa36f275b6cf54cdf6d0c9a0
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskEmcalJet.C
1 // $Id$ 
2
3 AliEmcalJetTask* AddTaskEmcalJet(
4   const char *nTracks        = "Tracks",
5   const char *nClusters      = "CaloClusters",
6   const Int_t algo           = 1,
7   const Double_t radius      = 0.4,
8   const Int_t type           = 0,
9   const Double_t minTrPt     = 0.15,
10   const Double_t minClPt     = 0.15
11 )
12 {  
13   // Get the pointer to the existing analysis manager via the static access method.
14   //==============================================================================
15   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
16   if (!mgr)
17   {
18     ::Error("AddTaskAliEmcalJet", "No analysis manager to connect to.");
19     return NULL;
20   }  
21   
22   // Check the analysis type using the event handlers connected to the analysis manager.
23   //==============================================================================
24   if (!mgr->GetInputEventHandler())
25   {
26     ::Error("AddTaskAliEmcalJet", "This task requires an input event handler");
27     return NULL;
28   }
29   
30   //-------------------------------------------------------
31   // Init the task and do settings
32   //-------------------------------------------------------
33
34   Double_t minJetPt = 0;
35
36   char *algoString;
37   if (algo == 0) {
38     algoString = "KT";
39     minJetPt = 0.1;
40   } else if (algo == 1) {
41     algoString = "AKT";
42     minJetPt = 1.0;
43   }
44
45   char *typeString;
46   if (type == 0)
47     typeString = "Full";
48   else if (type == 1)
49     typeString = "Charged";
50   else if (type == 2)
51     typeString = "Neutral";
52
53   char radiusString[200];
54   sprintf(radiusString,"R0%2.0f",radius*100.0);
55
56   char pTString[200];
57   if (minTrPt==0)
58     sprintf(pTString,"pT0000");
59   else if (minTrPt<1.0)
60     sprintf(pTString,"pT0%3.0f",minTrPt*1000.0);
61   else if (minTrPt>=1.0)
62     sprintf(pTString,"pT%4.0f",minTrPt*1000.0);
63
64   char ETString[200];
65   if (minClPt==0)
66     sprintf(ETString,"ET0000");
67   else if (minClPt<1.0)
68     sprintf(ETString,"ET0%3.0f",minClPt*1000.0);
69   else if (minClPt>=1.0)
70     sprintf(ETString,"ET%4.0f",minClPt*1000.0);  
71
72   TString name;
73   if (type == 0)
74     name = TString(Form("Jet_%s%s%s_%s_%s_%s_%s",
75                         algoString,typeString,radiusString,nTracks,pTString,nClusters,ETString));
76   else if (type == 1)
77     name = TString(Form("Jet_%s%s%s_%s_%s",
78                         algoString,typeString,radiusString,nTracks,pTString));
79   else if (type == 2)
80     name = TString(Form("Jet_%s%s%s_%s_%s",
81                         algoString,typeString,radiusString,nClusters,ETString));
82  
83   AliEmcalJetTask* mgrTask = mgr->GetTask(name.Data());
84   if (mgrTask)
85     return mgrTask;  
86
87   AliEmcalJetTask* jetTask = new AliEmcalJetTask(name);
88   jetTask->SetTracksName(nTracks);
89   jetTask->SetClusName(nClusters);
90   jetTask->SetJetsName(name);
91   jetTask->SetAlgo(algo);
92   jetTask->SetMinJetTrackPt(minTrPt);
93   jetTask->SetMinJetClusPt(minClPt);
94   jetTask->SetMinJetPt(minJetPt);
95   jetTask->SetRadius(radius);
96   jetTask->SetType(type);
97
98   //-------------------------------------------------------
99   // Final settings, pass to manager and set the containers
100   //-------------------------------------------------------
101
102   mgr->AddTask(jetTask);
103   
104   // Create containers for input/output
105   AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer()  ;
106   mgr->ConnectInput  (jetTask, 0, cinput);
107
108   return jetTask;
109 }