]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C
Change trigger selection logic to include overlaps between J1 and J2 (from Marta)
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskEmcalJet.C
1 // $Id$ 
2
3 AliEmcalJetTask* AddTaskEmcalJet(
4   const UInt_t type          = AliEmcalJetTask::kAKT | AliEmcalJetTask::kFullJet | AliEmcalJetTask::kR040Jet,
5   const char *nTracks        = "Tracks",
6   const char *nClusters      = "CaloClusters",
7   const Double_t minTrPt     = 0.15,
8   const Double_t minClPt     = 0.30,
9   const Double_t ghostArea   = 0.005,
10   const Double_t radius      = 0.4,
11   const Int_t recombScheme   = 1,
12   const char *tag            = "Jet"
13
14 )
15 {  
16   // Get the pointer to the existing analysis manager via the static access method.
17   //==============================================================================
18   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
19   if (!mgr)
20   {
21     ::Error("AddTaskAliEmcalJet", "No analysis manager to connect to.");
22     return NULL;
23   }  
24   
25   // Check the analysis type using the event handlers connected to the analysis manager.
26   //==============================================================================
27   if (!mgr->GetInputEventHandler())
28   {
29     ::Error("AddTaskAliEmcalJet", "This task requires an input event handler");
30     return NULL;
31   }
32   
33   //-------------------------------------------------------
34   // Init the task and do settings
35   //-------------------------------------------------------
36
37   Double_t minJetPt = 0;
38
39   char *algoString;
40   if ((type & AliEmcalJetTask::kKT) != 0) {
41     algoString = "KT";
42     minJetPt = 0.1;
43   } else if ((type & AliEmcalJetTask::kAKT) != 0) {
44     algoString = "AKT";
45     minJetPt = 1.0;
46   }
47
48   char *typeString;
49   if ((type & AliEmcalJetTask::kFullJet) != 0)
50     typeString = "Full";
51   else if ((type & AliEmcalJetTask::kChargedJet) != 0)
52     typeString = "Charged";
53   else if ((type & AliEmcalJetTask::kNeutralJet) != 0)
54     typeString = "Neutral";
55
56   char radiusString[200];
57   if ((type & AliEmcalJetTask::kR020Jet) != 0)
58     sprintf(radiusString,"R020");
59   else if ((type & AliEmcalJetTask::kR030Jet) != 0)
60     sprintf(radiusString,"R030");
61   else if ((type & AliEmcalJetTask::kR040Jet) != 0)
62     sprintf(radiusString,"R040");
63   else
64     sprintf(radiusString,"R0%2.0f",radius*100.0);
65
66   char pTString[200];
67   if (minTrPt==0)
68     sprintf(pTString,"pT0000");
69   else if (minTrPt<1.0)
70     sprintf(pTString,"pT0%3.0f",minTrPt*1000.0);
71   else if (minTrPt>=1.0)
72     sprintf(pTString,"pT%4.0f",minTrPt*1000.0);
73
74   char ETString[200];
75   if (minClPt==0)
76     sprintf(ETString,"ET0000");
77   else if (minClPt<1.0)
78     sprintf(ETString,"ET0%3.0f",minClPt*1000.0);
79   else if (minClPt>=1.0)
80     sprintf(ETString,"ET%4.0f",minClPt*1000.0);  
81
82   char recombSchemeString[200];
83   if(recombScheme==0)
84     sprintf(recombSchemeString,"%s","E_scheme");
85   else if(recombScheme==1)
86     sprintf(recombSchemeString,"%s","pt_scheme");
87   else if(recombScheme==2)
88     sprintf(recombSchemeString,"%s","pt2_scheme");
89   else if(recombScheme==3)
90     sprintf(recombSchemeString,"%s","Et_scheme");
91   else if(recombScheme==4)
92     sprintf(recombSchemeString,"%s","Et2_scheme");
93   else if(recombScheme==5)
94     sprintf(recombSchemeString,"%s","BIpt_scheme");
95   else if(recombScheme==6)
96     sprintf(recombSchemeString,"%s","BIpt2_scheme");
97   else if(recombScheme==99)
98     sprintf(recombSchemeString,"%s","ext_scheme");
99   else {
100     ::Error("AddTaskAliEmcalJet", "Recombination scheme not recognized.");
101     return NULL;
102   }
103
104   TString name;
105   if (*nTracks && *nClusters)
106     name = TString(Form("%s_%s%s%s_%s_%s_%s_%s_%s",
107                         tag,algoString,typeString,radiusString,nTracks,pTString,nClusters,ETString,recombSchemeString));
108   else if (!*nClusters)
109     name = TString(Form("%s_%s%s%s_%s_%s_%s",
110                         tag,algoString,typeString,radiusString,nTracks,pTString,recombSchemeString));
111   else if (!*nTracks)
112     name = TString(Form("%s_%s%s%s_%s_%s_%s",
113                         tag,algoString,typeString,radiusString,nClusters,ETString,recombSchemeString));
114  
115   AliEmcalJetTask* mgrTask = mgr->GetTask(name.Data());
116   if (mgrTask)
117     return mgrTask;  
118
119   AliEmcalJetTask* jetTask = new AliEmcalJetTask(name);
120   jetTask->SetTracksName(nTracks);
121   jetTask->SetClusName(nClusters);
122   jetTask->SetJetsName(name);
123   jetTask->SetJetType(type);
124   jetTask->SetMinJetTrackPt(minTrPt);
125   jetTask->SetMinJetClusPt(minClPt);
126   jetTask->SetMinJetPt(minJetPt);
127   if ((type & (AliEmcalJetTask::kRX1Jet|AliEmcalJetTask::kRX2Jet|AliEmcalJetTask::kRX3Jet)) != 0)
128     jetTask->SetRadius(radius);
129   jetTask->SetGhostArea(ghostArea);
130   jetTask->SetRecombScheme(recombScheme);
131
132   //-------------------------------------------------------
133   // Final settings, pass to manager and set the containers
134   //-------------------------------------------------------
135
136   mgr->AddTask(jetTask);
137   
138   // Create containers for input/output
139   AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer()  ;
140   mgr->ConnectInput  (jetTask, 0, cinput);
141
142   return jetTask;
143 }
144
145
146 AliEmcalJetTask* AddTaskEmcalJet(
147   const char *nTracks        = "Tracks",
148   const char *nClusters      = "CaloClusters",
149   const Int_t algo           = 1,
150   const Double_t radius      = 0.4,
151   const Int_t type           = 0,
152   const Double_t minTrPt     = 0.15,
153   const Double_t minClPt     = 0.30,
154   const Double_t ghostArea   = 0.01,
155   const Int_t recombScheme   = 1,
156   const char *tag            = "Jet"
157 )
158 {  
159   
160   UInt_t jetType = 0;
161
162   if (algo == 0) 
163     jetType |= AliEmcalJetTask::kKT; 
164   else 
165     jetType |= AliEmcalJetTask::kAKT;
166
167   if (type==0)
168     jetType |= AliEmcalJetTask::kFullJet; 
169   else if (type==1) 
170     jetType |= AliEmcalJetTask::kChargedJet; 
171   else if (type==2) 
172     jetType |= AliEmcalJetTask::kNeutralJet;
173
174   if (radius==0.2) 
175     jetType |= AliEmcalJetTask::kR020Jet; 
176   else if (radius==0.3) 
177     jetType |= AliEmcalJetTask::kR030Jet;
178   else if (radius==0.4) 
179     jetType |= AliEmcalJetTask::kR040Jet;
180   else
181     jetType |= AliEmcalJetTask::kRX1Jet;
182
183   return AddTaskEmcalJet(jetType, nTracks, nClusters, minTrPt, minClPt, ghostArea, radius, recombScheme, tag);
184 }