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