]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/UserTasks/AliAnalysisTaskJetHadronCorrelation.cxx
c796f5c0534613d87e26a5753799202d73eac3ae
[u/mrichter/AliRoot.git] / PWGJE / UserTasks / AliAnalysisTaskJetHadronCorrelation.cxx
1 //#include <string.h>
2 //#include <TStyle.h>
3 #include <list>
4 #include <string>
5
6 #include "TTree.h"
7 #include "TCanvas.h"
8 #include "AliAnalysisTask.h"
9 #include "AliInputEventHandler.h"
10 #include "AliESDtrack.h"
11 #include "AliAODVertex.h"
12 #include "AliAODCluster.h"
13
14 #include <TROOT.h>
15 #include <TRandom.h>
16 #include <TSystem.h>
17 #include <TInterpreter.h>
18 #include <TChain.h>
19 #include <TFile.h>
20 #include <TKey.h>
21 #include <TH1F.h>
22 #include <TH2F.h>
23 #include <TH3F.h>
24 #include <TProfile.h>
25 #include <TList.h>
26 #include <TLorentzVector.h>
27 #include <TClonesArray.h>
28 #include <TRefArray.h>
29
30 #include "TDatabasePDG.h"
31 #include "AliAnalysisManager.h"
32 #include "AliJetFinder.h"
33 #include "AliJetHeader.h"
34 #include "AliJetReader.h"
35 #include "AliJetReaderHeader.h"
36 #include "AliUA1JetHeaderV1.h"
37 #include "AliSISConeJetHeader.h"
38 #include "AliESDEvent.h"
39 #include "AliAODEvent.h"
40 #include "AliAODHandler.h"
41 #include "AliAODTrack.h"
42 #include "AliAODJet.h"
43 #include "AliAODJetEventBackground.h"
44 #include "AliMCParticle.h"
45 #include "AliAODMCParticle.h"
46 #include "AliMCEventHandler.h"
47 #include "AliMCEvent.h"
48 #include "AliStack.h"
49
50 #include "AliAODHeader.h"
51 #include "AliAODMCHeader.h"
52 //#include "AliGenPythiaEventHeader.h"
53 #include "AliJetKineReaderHeader.h"
54 #include "AliGenCocktailEventHeader.h"
55 #include "AliInputEventHandler.h"
56 #include "AliGenEventHeader.h"
57 #include "AliGenDPMjetEventHeader.h"
58
59
60
61 #include "AliAnalysisTaskJetHadronCorrelation.h"
62 #include "AliAnalysisTaskPhiCorrelations.h"
63 //#include "AliAnalysisHelperJetTasks.h"
64 #include "AliPWG4HighPtQAMC.h"
65
66
67
68
69 ClassImp(AliAnalysisTaskJetHadronCorrelation)
70
71                                 //________________________________________________________________________
72                                 AliAnalysisTaskJetHadronCorrelation::AliAnalysisTaskJetHadronCorrelation():
73                                                                 AliAnalysisTaskSE(),
74                                                                 fUseAODInput(kFALSE),
75                                                                 fFillAOD(kFALSE),
76                                                                 fJetBranch("jets"),
77                                                                 fNonStdFile(""),
78                                                                 fAODIn(0x0),
79                                                                 fAODOut(0x0),
80                                                                 fAODExtension(0x0),
81                                                                 JFAlg("ANTIKT"),         
82                                                                 Radius(0.4),
83                                                                 Filtermask(256),
84                                                                 BackM(0),
85                                                                 TrackPtcut(0.15),
86                                                                 SkipCone(0),
87                                                                 IsMC(kTRUE),
88                 fxsec(0.),
89                 ftrial(1.),
90                 fJetRecEtaWindow(0.5),       // eta window for rec jets
91                 fMinJetPt(10), 
92                                                                 fHistList(0x0), // Output list
93                                                                 fIfiles(0),
94                                                                 fH1Events(0x0),
95                                                                 fH1Xsec(0x0),
96                                                                 fH1Trials(0x0),
97                                                                 fH1JetAKT04_pt                (0x0),
98                                                                 fH1leadJetAKT04_pt            (0x0),
99                                                                 fH1leadJetAKT04_pt_dijet      (0x0),
100                                                                 fH1subJetAKT04_pt_dijet       (0x0),
101                                                                 fH2JetsJetAKT04_dphi          (0x0),
102                                                                 fH2JetsJetAKT04_deta          (0x0),
103                                                                 fH2JetsJetAKT04_Aj            (0x0),
104                                                                 fH2JetsJetAKT04_pt            (0x0),
105                                                                 fH1JetMCAKT04_pt              (0x0),
106                                                                 fH1leadJetMCAKT04_pt          (0x0),
107                                                                 fH1leadJetMCAKT04_pt_dijet    (0x0),
108                                                                 fH1subJetMCAKT04_pt_dijet     (0x0),
109                                                                 fH2JetsJetMCAKT04_dphi        (0x0),
110                                                                 fH2JetsJetMCAKT04_deta        (0x0),
111                                                                 fH2JetsJetMCAKT04_Aj          (0x0),
112                                                                 fH2JetsJetMCAKT04_pt          (0x0)
113
114
115 {
116
117
118                                 if(IsMC){
119                                                                 for(int j=0;j<5;j++){
120                                                                                                 fH1AKT04_ndiJ_ediv[j]=0;
121                                                                                                 fH1leadJetMCAKT04_dphiResolution          [j]=0;
122                                                                                                 fH1subJetMCAKT04_dphiResolution           [j]=0;
123                                                                                                 for(int k=0;k<5;k++){
124                                                                                                                                 fH1JetHadronAKT04_dphi_ediv               [j][k]=0;
125                                                                                                                                 fH1JetHadronAKT04_dphi_tptweight_ediv     [j][k]=0;
126                                                                                                                                 fH1JetHadronAKT04_dphi_tJptweight_ediv    [j][k]=0;
127                                                                                                 }
128                                                                 }
129                                 }else{
130                                                                 for(int j=0;j<5;j++){
131                                                                                                 fH1AKT04_ndiJ_ediv[j]=0;
132                                                                                                 for(int k=0;k<5;k++){
133                                                                                                                                 fH1JetHadronAKT04_dphi_ediv             [j][k]=0;
134                                                                                                                                 fH1JetHadronAKT04_dphi_tptweight_ediv   [j][k]=0;
135                                                                                                                                 fH1JetHadronAKT04_dphi_tJptweight_ediv  [j][k]=0;
136                                                                                                 }
137                                                                 }
138                                 }
139
140
141                                 // Default constructor
142 }
143
144 //________________________________________________________________________
145 AliAnalysisTaskJetHadronCorrelation::AliAnalysisTaskJetHadronCorrelation(const char *name):
146                                 AliAnalysisTaskSE(name),
147                                 fUseAODInput(kFALSE),
148                                 fFillAOD(kFALSE),
149                                 fJetBranch("jets"),
150                                 fNonStdFile(""),
151                                 fAODIn(0x0), 
152                                 fAODOut(0x0), 
153                                 fAODExtension(0x0),
154                                 JFAlg("ANTIKT"),         
155                                 Radius(0.4),
156                                 Filtermask(256),
157                                 BackM(0),
158                                 TrackPtcut(0.15),
159                                 SkipCone(0),
160                                 IsMC(kTRUE),
161                                 fxsec(0.),
162                                 ftrial(1.),
163                                 fJetRecEtaWindow(0.5),       // eta window for rec jets
164                                 fMinJetPt(10), 
165                                 fHistList(0x0), // Output list
166                                 fIfiles(0),
167
168                                 fH1Events(0x0),
169                                 fH1Xsec(0x0),
170                                 fH1Trials(0x0),
171                                 fH1JetAKT04_pt                (0x0),
172                                 fH1leadJetAKT04_pt            (0x0),
173                                 fH1leadJetAKT04_pt_dijet      (0x0),
174                                 fH1subJetAKT04_pt_dijet       (0x0),
175                                 fH2JetsJetAKT04_dphi          (0x0),
176                                 fH2JetsJetAKT04_deta          (0x0),
177                                 fH2JetsJetAKT04_Aj            (0x0),
178                                 fH2JetsJetAKT04_pt            (0x0),
179                                 fH1JetMCAKT04_pt              (0x0),
180                                 fH1leadJetMCAKT04_pt          (0x0),
181                                 fH1leadJetMCAKT04_pt_dijet    (0x0),
182                                 fH1subJetMCAKT04_pt_dijet     (0x0),
183                                 fH2JetsJetMCAKT04_dphi        (0x0),
184                                 fH2JetsJetMCAKT04_deta        (0x0),
185                                 fH2JetsJetMCAKT04_Aj          (0x0),
186                                 fH2JetsJetMCAKT04_pt          (0x0)
187
188
189 {
190                                 if(IsMC){
191                                                                 for(int j=0;j<5;j++){
192                                                                                                 fH1AKT04_ndiJ_ediv[j]=0;
193                                                                                                 fH1leadJetMCAKT04_dphiResolution          [j]=0;
194                                                                                                 fH1subJetMCAKT04_dphiResolution           [j]=0;
195                                                                                                 for(int k=0;k<5;k++){
196                                                                                                                                 fH1JetHadronAKT04_dphi_ediv               [j][k]=0;
197                                                                                                                                 fH1JetHadronAKT04_dphi_tptweight_ediv     [j][k]=0;
198                                                                                                                                 fH1JetHadronAKT04_dphi_tJptweight_ediv    [j][k]=0;
199                                                                                                 }
200                                                                 }
201                                 }else{
202                                                                 for(int j=0;j<5;j++){
203                                                                                                 fH1AKT04_ndiJ_ediv[j]=0;
204                                                                                                 for(int k=0;k<5;k++){
205                                                                                                                                 fH1JetHadronAKT04_dphi_ediv             [j][k]=0;
206                                                                                                                                 fH1JetHadronAKT04_dphi_tptweight_ediv   [j][k]=0;
207                                                                                                                                 fH1JetHadronAKT04_dphi_tJptweight_ediv  [j][k]=0;
208                                                                                                 }
209                                                                 }
210                                 }
211
212                                 // Default constructor
213
214                                 // Constructor
215
216                                 // Define input and output slots here
217                                 // Input slot #0 works with a TChain
218                                 DefineInput(0, TChain::Class());
219                                 // Output slot #0 id reserved by the base class for AOD
220                                 // Output slot #1 writes into a TH1 container
221                                 DefineOutput(1, TList::Class());
222
223 }
224
225 //________________________________________________________________________
226 void AliAnalysisTaskJetHadronCorrelation::UserCreateOutputObjects()
227 {
228                                 // Create histograms
229                                 // Called once
230
231
232                                 fHistList = new TList();fHistList->SetOwner(kTRUE); cout<<"TList is created for output "<<endl;
233                                 //if (!fHistList){ fHistList = new TList();fHistList->SetOwner(kTRUE); cout<<"TList is created for output "<<endl;}
234
235                                 Bool_t oldStatus = TH1::AddDirectoryStatus();
236                                 TH1::AddDirectory(kFALSE);
237
238                                 Float_t pi=TMath::Pi();
239                                 //gStyle->SetPalette(1);
240
241
242                                 char *histname;
243                                 if(IsMC){
244                                                                 fH1Xsec                         = new TProfile("Xsec"               ,"Xsec"                   ,1,0,1);
245                                                                 fH1Trials                       = new TH1F    ("Trials"             ,"Trials"                 ,1,0,1);
246                                                                 fH1JetMCAKT04_pt                = new TH1F("JetMCAKT04_pt"          ,"JetMCAKT04_pt"          ,400,0,400);
247                                                                 fH1leadJetMCAKT04_pt            = new TH1F("leadJetMCAKT04_pt"      ,"leadJetMCAKT04_pt"      ,400,0,400);
248                                                                 fH1leadJetMCAKT04_pt_dijet      = new TH1F("leadJetMCAKT04_pt_dijet","leadJetMCAKT04_pt_dijet",400,0,400);
249                                                                 fH1subJetMCAKT04_pt_dijet       = new TH1F("subJetMCAKT04_pt_dijet" ,"subJetMCAKT04_pt_dijet" ,400,0,400);
250                                                                 fH1JetAKT04_pt                  = new TH1F("JetAKT04_pt"            ,"JetAKT04_pt"            ,400,0,400);
251                                                                 fH1leadJetAKT04_pt              = new TH1F("leadJetAKT04_pt"        ,"leadJetAKT04_pt"        ,400,0,400);
252                                                                 fH1leadJetAKT04_pt_dijet        = new TH1F("leadJetAKT04_pt_dijet"  ,"leadJetAKT04_pt_dijet"  ,400,0,400);
253                                                                 fH1subJetAKT04_pt_dijet         = new TH1F("subJetAKT04_pt_dijet"   ,"subJetAKT04_pt_dijet"   ,400,0,400);
254                                                                 histname = Form("JetsJetMCAKT04_dphi");
255                                                                 fH2JetsJetMCAKT04_dphi          = new TH2F(histname,histname,200,0,400,100,-2*pi,2*pi);
256                                                                 histname = Form("JetsJetMCAKT04_deta");
257                                                                 fH2JetsJetMCAKT04_deta          = new TH2F(histname,histname,200,0,400,100,-1.5,1.5);
258                                                                 histname = Form("JetsJetMCAKT04_Aj");
259                                                                 fH2JetsJetMCAKT04_Aj            = new TH2F(histname,histname,200,0,400,100,0,1.2);
260                                                                 histname = Form("JetsJetMCAKT04_pt");
261                                                                 fH2JetsJetMCAKT04_pt            = new TH2F(histname,histname,200,0,400,200,0,400);
262                                                                 histname = Form("JetsJetAKT04_dphi");
263                                                                 fH2JetsJetAKT04_dphi            = new TH2F(histname,histname,200,0,400,100,-2*pi,2*pi);
264                                                                 histname = Form("JetsJetAKT04_deta");
265                                                                 fH2JetsJetAKT04_deta            = new TH2F(histname,histname,200,0,400,100,-1.5,1.5);
266                                                                 histname = Form("JetsJetAKT04_Aj");
267                                                                 fH2JetsJetAKT04_Aj              = new TH2F(histname,histname,200,0,400,100,0,1.2);
268                                                                 histname = Form("JetsJetAKT04_pt");
269                                                                 fH2JetsJetAKT04_pt              = new TH2F(histname,histname,200,0,400,200,0,400);
270                                                                 for(int j=0;j<5;j++){
271                                                                                                 histname = Form("AKT04_ndiJ_ediv%d",j);
272                                                                                                 fH1AKT04_ndiJ_ediv[j]= new TH1F(histname,histname,1,1,2);
273                                                                                                 histname = Form("leadJetMCAKT04_dphiResolution%d",j);
274                                                                                                 fH1leadJetMCAKT04_dphiResolution[j] = new TH1F(histname,histname,200,-2*pi,2*pi);
275                                                                                                 histname = Form("subJetMCAKT04_dphiResolution%d",j);
276                                                                                                 fH1subJetMCAKT04_dphiResolution[j] = new TH1F(histname,histname,200,-2*pi,2*pi);
277                                                                                                 for(int k=0;k<5;k++){
278                                                                                                                                 histname = Form("JetHadronAKT04_dphi_ediv%d%d",j,k);
279                                                                                                                                 fH1JetHadronAKT04_dphi_ediv             [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
280                                                                                                                                 histname = Form("JetHadronAKT04_dphi_tptweight_ediv%d%d",j,k);
281                                                                                                                                 fH1JetHadronAKT04_dphi_tptweight_ediv   [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
282                                                                                                                                 histname = Form("JetHadronAKT04_dphi_tJptweight_ediv%d%d",j,k);
283                                                                                                                                 fH1JetHadronAKT04_dphi_tJptweight_ediv  [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
284                                                                                                 }
285                                                                 }
286                                                                 fHistList->Add(fH1Xsec);
287                                                                 fHistList->Add(fH1Trials);
288                                                                 fHistList->Add(fH1JetMCAKT04_pt          );
289                                                                 fHistList->Add(fH1leadJetMCAKT04_pt      );
290                                                                 fHistList->Add(fH1leadJetMCAKT04_pt_dijet);
291                                                                 fHistList->Add(fH1subJetMCAKT04_pt_dijet );
292                                                                 fHistList->Add(fH1JetAKT04_pt            );
293                                                                 fHistList->Add(fH1leadJetAKT04_pt        );
294                                                                 fHistList->Add(fH1leadJetAKT04_pt_dijet  );
295                                                                 fHistList->Add(fH1subJetAKT04_pt_dijet   );
296                                                                 fHistList->Add(fH2JetsJetMCAKT04_dphi);
297                                                                 fHistList->Add(fH2JetsJetMCAKT04_deta);
298                                                                 fHistList->Add(fH2JetsJetMCAKT04_Aj  );
299                                                                 fHistList->Add(fH2JetsJetMCAKT04_pt  );
300                                                                 fHistList->Add(fH2JetsJetAKT04_dphi  );
301                                                                 fHistList->Add(fH2JetsJetAKT04_deta  );
302                                                                 fHistList->Add(fH2JetsJetAKT04_Aj    );
303                                                                 fHistList->Add(fH2JetsJetAKT04_pt    );
304                                                                 for(int j=0;j<5;j++){
305                                                                                                 fHistList->Add(fH1AKT04_ndiJ_ediv    [j]);
306                                                                                                 fHistList->Add(fH1leadJetMCAKT04_dphiResolution          [j]);
307                                                                                                 fHistList->Add(fH1subJetMCAKT04_dphiResolution           [j]);
308                                                                                                 for(int k=0;k<5;k++){
309                                                                                                                                 fHistList->Add(fH1JetHadronAKT04_dphi_ediv               [j][k]);
310                                                                                                                                 fHistList->Add(fH1JetHadronAKT04_dphi_tptweight_ediv     [j][k]);
311                                                                                                                                 fHistList->Add(fH1JetHadronAKT04_dphi_tJptweight_ediv    [j][k]);
312                                                                                                 }
313                                                                 }
314                                 }
315                                 else{
316                                                                 fH1Events                     = new TH1F("Events"                  ,"Events"                  ,1,0,1);
317                                                                 fH1JetAKT04_pt                = new TH1F("JetAKT04_pt"             ,"JetAKT04_pt"             ,400,0,400);
318                                                                 fH1leadJetAKT04_pt            = new TH1F("leadJetAKT04_pt"         ,"leadJetAKT04_pt"         ,400,0,400);
319                                                                 fH1leadJetAKT04_pt_dijet      = new TH1F("leadJetAKT04_pt_dijet"   ,"leadJetAKT04_pt_dijet"   ,400,0,400);
320                                                                 fH1subJetAKT04_pt_dijet       = new TH1F("subJetAKT04_pt_dijet"    ,"subJetAKT04_pt_dijet"    ,400,0,400);
321                                                                 histname = Form("JetsJetAKT04_dphi");
322                                                                 fH2JetsJetAKT04_dphi          = new TH2F(histname,histname,200,0,400,100,-2*pi,2*pi);
323                                                                 histname = Form("JetsJetAKT04_deta");
324                                                                 fH2JetsJetAKT04_deta          = new TH2F(histname,histname,200,0,400,100,-1.5,1.5);
325                                                                 histname = Form("JetsJetAKT04_Aj");
326                                                                 fH2JetsJetAKT04_Aj            = new TH2F(histname,histname,200,0,400,100,0,1.2);
327                                                                 histname = Form("JetsJetAKT04_pt");
328                                                                 fH2JetsJetAKT04_pt            = new TH2F(histname,histname,200,0,400,200,0,400);
329                                                                 for(int j=0;j<5;j++){
330                                                                                                 histname = Form("AKT04_ndiJ_ediv%d",j);
331                                                                                                 fH1AKT04_ndiJ_ediv[j]= new TH1F(histname,histname,1,1,2);
332                                                                                                 for(int k=0;k<5;k++){
333                                                                                                                                 histname = Form("JetHadronAKT04_dphi_ediv%d%d",j,k);
334                                                                                                                                 fH1JetHadronAKT04_dphi_ediv             [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
335                                                                                                                                 histname = Form("JetHadronAKT04_dphi_tptweight_ediv%d%d",j,k);
336                                                                                                                                 fH1JetHadronAKT04_dphi_tptweight_ediv   [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
337                                                                                                                                 histname = Form("JetHadronAKT04_dphi_tJptweight_ediv%d%d",j,k);
338                                                                                                                                 fH1JetHadronAKT04_dphi_tJptweight_ediv  [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
339                                                                                                 }
340                                                                 }
341                                                                 fHistList->Add(fH1Events);
342                                                                 fHistList->Add(fH1JetAKT04_pt          );
343                                                                 fHistList->Add(fH1leadJetAKT04_pt      );
344                                                                 fHistList->Add(fH1leadJetAKT04_pt_dijet);
345                                                                 fHistList->Add(fH1subJetAKT04_pt_dijet );
346                                                                 fHistList->Add(fH2JetsJetAKT04_dphi  );
347                                                                 fHistList->Add(fH2JetsJetAKT04_deta  );
348                                                                 fHistList->Add(fH2JetsJetAKT04_Aj    );
349                                                                 fHistList->Add(fH2JetsJetAKT04_pt    );
350                                                                 for(int j=0;j<5;j++){
351                                                                                                 fHistList->Add(fH1AKT04_ndiJ_ediv    [j]);
352                                                                                                 for(int k=0;k<5;k++){
353                                                                                                                                 fHistList->Add(fH1JetHadronAKT04_dphi_ediv             [j][k]);
354                                                                                                                                 fHistList->Add(fH1JetHadronAKT04_dphi_tptweight_ediv   [j][k]);
355                                                                                                                                 fHistList->Add(fH1JetHadronAKT04_dphi_tJptweight_ediv  [j][k]);
356                                                                                                 }
357                                                                 }
358                                 }
359
360
361
362                                 // =========== Switch on Sumw2 for all histos ===========
363                                 for (Int_t i=0; i<fHistList->GetEntries(); ++i) 
364                                 {
365                                                                 TH1 *h1 = dynamic_cast<TH1*>(fHistList->At(i));
366                                                                 if (h1)
367                                                                 {
368                                                                                                 h1->Sumw2();
369                                                                                                 continue;
370                                                                 }
371                                                                 THnSparse *hn = dynamic_cast<THnSparse*>(fHistList->At(i));
372                                                                 if(hn)hn->Sumw2();
373                                 }
374                                 TH1::AddDirectory(oldStatus);
375
376
377
378
379                                 PostData(1,fHistList);
380
381 }
382
383 //----------------------------------------------------------------------                                                 
384 void AliAnalysisTaskJetHadronCorrelation::Init()
385 {
386                                 // Initialization                                                                                                    
387                                 if (fDebug) printf("AnalysisTaskJetHadronCorrelation::Init() \n");
388
389 }
390
391 Bool_t AliAnalysisTaskJetHadronCorrelation::Notify()
392 {
393
394
395                                 fIfiles++;
396                                 fAODIn = dynamic_cast<AliAODEvent*>(InputEvent());
397                                 fAODOut = AODEvent();
398                                 if(fNonStdFile.Length()!=0){
399                                                                 AliAODHandler *aodH = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler());
400                                                                 fAODExtension = (aodH?aodH->GetExtension(fNonStdFile.Data()):0);
401                                                                 if(fAODExtension){
402                                                                                                 if(fDebug>1)Printf("AODExtension found for %s ",fNonStdFile.Data());
403                                                                 }
404                                 }
405
406                                 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
407                                 fxsec=0;
408                                 ftrial=1;
409
410                                 if(tree){
411                                                                 TFile *curfile = tree->GetCurrentFile();
412                                                                 if(!curfile){
413                                                                                                 Error("Notify","No current file");
414                                                                                                 return kFALSE;
415                                                                 }
416
417
418                                                                 if(IsMC){
419                                                                                                 AliPWG4HighPtQAMC::PythiaInfoFromFile(curfile->GetName(),fxsec,ftrial);
420                                                                                                 //cout<<" Xsec "<<fxsec<<" trial "<<ftrial<<endl;
421                                                                                                 fH1Xsec  ->Fill(0.,fxsec);
422                                                                                                 fH1Trials->Fill(0.,ftrial);
423                                                                 }else{
424                                                                                                 Float_t totalEvent;
425                                                                                                 totalEvent = GetTotalEvents(curfile->GetName());
426                                                                                                 fH1Events->Fill(0.,totalEvent);
427                                                                 }
428
429                                 }
430
431                                 printf("Reading File %s ",fInputHandler->GetTree()->GetCurrentFile()->GetName());
432                                 return kTRUE;
433 }
434 void AliAnalysisTaskJetHadronCorrelation::FinishTaskOutput()
435 {
436 }
437
438
439
440 //________________________________________________________________________
441 void AliAnalysisTaskJetHadronCorrelation::UserExec(Option_t *) 
442 {
443
444
445                                 // Main loop (called each event)
446                                 // Execute analysis for current event
447
448                                 // start jet analysis
449
450                                 Double_t Jet_n  [20];
451                                 Double_t Jet_pt [20][1000];
452                                 Double_t Jet_eta[20][1000];
453                                 Double_t Jet_phi[20][1000];
454                                 Double_t subJet_n  [20];
455                                 Double_t subJet_pt [20][1000];
456                                 Double_t subJet_eta[20][1000];
457                                 Double_t subJet_phi[20][1000];
458                                 Double_t Track_n  ;
459                                 Double_t Track_pt [1000];
460                                 Double_t Track_eta[1000];
461                                 Double_t Track_phi[1000];
462
463                                 Track_n=0;
464                                 for(int i=0;i<20;i++){
465                                                                 Jet_n[i]=0;
466                                                                 subJet_n[i]=0;
467                                                                 for(int j=0;j<1000;j++){
468                                                                                                 Jet_pt[i][j]=0.;
469                                                                                                 Jet_phi[i][j]=999.;
470                                                                                                 Jet_eta[i][j]=999.;
471                                                                                                 subJet_pt[i][j]=0.;
472                                                                                                 subJet_phi[i][j]=999.;
473                                                                                                 subJet_eta[i][j]=999.;
474                                                                                                 Track_pt [j]=0.;
475                                                                                                 Track_phi[j]=999.;
476                                                                                                 Track_eta[j]=999.;
477                                                                 }
478                                 }
479
480                                 fAODIn = dynamic_cast<AliAODEvent*>(InputEvent());
481                                 if (!fAODIn) {
482                                                                 Printf("ERROR: fAODIn not available");
483                                                                 return;
484                                 }
485
486                                 //////-----------------------------------------------------------------------------------
487
488
489                                 int nLJetAOD=999; double ptLJetAOD=0;double phiLJetAOD=999.;double etaLJetAOD=999.;int nsLJetAOD=900;double ptsLJetAOD=0;double phisLJetAOD=900.;double etasLJetAOD=900.;
490                                 int nLJetMC2=999; double ptLJetMC2=0;double phiLJetMC2=999.;double etaLJetMC2=999.;int nsLJetMC2=900;double ptsLJetMC2=0;double phisLJetMC2=900.;double etasLJetMC2=900.;
491                                 int nLJetMC =999; double ptLJetMC =0;double phiLJetMC =999.;double etaLJetMC =999.;int nsLJetMC =900;double ptsLJetMC =0;double phisLJetMC =900.;double etasLJetMC =900.;
492                                 bool findLJetAOD=false;bool findsLJetAOD=false;bool findsLJetAOD_temp=false;
493                                 bool findLJetMC2=false;bool findsLJetMC2=false;bool findsLJetMC2_temp=false;
494                                 bool findLJetMC =false;bool findsLJetMC =false;bool findsLJetMC_temp =false;
495                                 bool findsLJet=false;
496                                 int nLJet = 999;
497
498
499                                 TString cAdd = "";
500                                 cAdd += Form("%02d_",(int)((Radius+0.01)*10.));
501                                 cAdd += Form("B%d",(int)BackM);
502                                 cAdd += Form("_Filter%05d",Filtermask);
503                                 cAdd += Form("_Cut%05d",(int)(1000.*TrackPtcut));
504                                 cAdd += Form("_Skip%02d",SkipCone);
505                                 TString Branchname_gen,Branchname_gen2,Branchname_rec;
506                                 //Branchname_gen  = Form("clustersMCKINE_%s%s",JFAlg.Data(),cAdd.Data());
507                                 //Branchname_gen2 = Form("clustersMCKINE2_%s%s",JFAlg.Data(),cAdd.Data());
508                                 Branchname_gen  = Form("clustersAODMC_%s%s",JFAlg.Data(),cAdd.Data());
509                                 Branchname_gen2 = Form("clustersAODMC2_%s%s",JFAlg.Data(),cAdd.Data());
510                                 Branchname_rec  = Form("clustersAOD_%s%s",JFAlg.Data(),cAdd.Data());
511
512
513                                 for(int algorithm=0;algorithm<3;algorithm++){
514                                                                 //for LHC11a1  LHC11a2
515                                                                 if(algorithm==0)fJetBranch   = Branchname_rec.Data();
516                                                                 if(algorithm==1)fJetBranch   = Branchname_gen2.Data();
517                                                                 if(algorithm==2)fJetBranch   = Branchname_gen.Data();
518
519                                                                 if((!IsMC&&(algorithm==1||algorithm==2)))continue;
520
521                                                                 TClonesArray* jets = dynamic_cast <TClonesArray*> (fAODIn->FindListObject(fJetBranch.Data()));
522                                                                 if(!jets){
523                                                                                                 printf(" Tere are no Branch named %s \n",fJetBranch.Data());
524                                                                                                 continue;
525                                                                 }
526                                                                 Int_t nj = jets->GetEntriesFast();
527                                                                 if (fDebug) printf("There are %5d jets in the event \n", nj);
528                                                                 AliAODJet* jetsAOD;
529                                                                 Jet_n[algorithm] = nj;
530                                                                 int nLjet_in05_pthdiv[20][20];
531                                                                 int nsLjet_in05_pthdiv[20][20];
532                                                                 for(int i=0;i<20;i++){
533                                                                                                 for(int j=0;j<20;j++){
534                                                                                                                                 nLjet_in05_pthdiv [i][j]=0;
535                                                                                                                                 nsLjet_in05_pthdiv[i][j]=0;
536                                                                                                 }
537                                                                 }
538                                                                 //Find Leading Jet -------------------------------------------------------
539                                                                 for(int njet =0;njet<nj;njet++){
540                                                                                                 jetsAOD = (AliAODJet*) (jets->At(njet));
541                                                                                                 Jet_pt   [algorithm][njet] = jetsAOD->Pt();
542                                                                                                 Jet_phi  [algorithm][njet] = jetsAOD->Phi();  
543                                                                                                 Jet_eta  [algorithm][njet] = jetsAOD->Eta();
544                                                                                                 //TRefArray *reftracks = jetsAOD->GetRefTracks();
545                                                                                                 double eta_cut_Jet=0.5;
546                                                                                                 if((TMath::Abs(Jet_eta[algorithm][njet])<eta_cut_Jet)&&(Jet_pt[algorithm][njet]>10.)){
547                                                                                                                                 if(algorithm==0){
548                                                                                                                                                                  fH1JetAKT04_pt->Fill(Jet_pt[algorithm][njet]);  
549                                                                                                                                                                 if(Jet_pt[algorithm][njet]>ptLJetAOD){
550                                                                                                                                                                                                 findLJetAOD=true;
551                                                                                                                                                                                                 nLJetAOD=njet;ptLJetAOD=Jet_pt[algorithm][njet];phiLJetAOD=Jet_phi[algorithm][njet];etaLJetAOD=Jet_eta[algorithm][njet];
552                                                                                                                                                                 }
553                                                                                                                                 }
554                                                                                                                                 if(algorithm==1){
555                                                                                                                                                                  fH1JetMCAKT04_pt->Fill(Jet_pt[algorithm][njet]);  
556                                                                                                                                                                 if(Jet_pt[algorithm][njet]>ptLJetMC2){
557                                                                                                                                                                                                 findLJetMC2=true;
558                                                                                                                                                                                                 nLJetMC2=njet;ptLJetMC2=Jet_pt[algorithm][njet];phiLJetMC2=Jet_phi[algorithm][njet];etaLJetMC2=Jet_eta[algorithm][njet];
559                                                                                                                                                                 }
560                                                                                                                                 }
561                                                                                                                                 if(algorithm==2){
562                                                                                                                                                                 if(Jet_pt[algorithm][njet]>ptLJetMC){
563                                                                                                                                                                                                 findLJetMC=true;
564                                                                                                                                                                                                 nLJetMC=njet;ptLJetMC=Jet_pt[algorithm][njet];phiLJetMC=Jet_phi[algorithm][njet];etaLJetMC=Jet_eta[algorithm][njet];
565                                                                                                                                                                 }
566                                                                                                                                 }
567                                                                                                 }
568                                                                 }//njet loop
569                                                                 //Leading Jet -----------------------------------------------------------
570
571                                                                 if(algorithm==0){nLJet=nLJetAOD;fH1leadJetAKT04_pt->Fill(Jet_pt[algorithm][nLJet]);}
572                                                                 if(algorithm==1){nLJet=nLJetMC2;fH1leadJetMCAKT04_pt->Fill(Jet_pt[algorithm][nLJet]);}
573                                                                 if(algorithm==2){nLJet=nLJetMC2;}
574
575                                                                 if(nj<2)continue;
576                                                                 //Find Sub leading Jet ==================================================
577                                                                 for(int njet=0;njet<nj;njet++){
578                                                                                                 if(njet==nLJet)continue;
579                                                                                                 jetsAOD = (AliAODJet *)jets->At(njet);
580                                                                                                 subJet_pt [algorithm][njet] = jetsAOD->Pt();
581                                                                                                 subJet_phi[algorithm][njet] = jetsAOD->Phi();
582                                                                                                 subJet_eta[algorithm][njet] = jetsAOD->Eta();
583                                                                                                 double eta_cut_Jet=0.5;
584                                                                                                 if((TMath::Abs(subJet_eta[algorithm][njet])<eta_cut_Jet) && (subJet_pt[algorithm][njet]>10.)){
585                                                                                                                                 if(subJet_pt[algorithm][njet]>ptsLJetAOD&&algorithm==0){
586                                                                                                                                                                 findsLJetAOD_temp=true;
587                                                                                                                                                                 nsLJetAOD=njet;ptsLJetAOD=Jet_pt[algorithm][njet];phisLJetAOD=Jet_phi[algorithm][njet];etasLJetAOD=Jet_eta[algorithm][njet];
588                                                                                                                                 }
589                                                                                                                                 if(subJet_pt[algorithm][njet]>ptsLJetMC2 &&algorithm==1){
590                                                                                                                                                                 findsLJetMC2_temp=true;
591                                                                                                                                                                 nsLJetMC2=njet;ptsLJetMC2=Jet_pt[algorithm][njet];phisLJetMC2=Jet_phi[algorithm][njet];etasLJetMC2=Jet_eta[algorithm][njet];
592                                                                                                                                 }
593                                                                                                                                 if(subJet_pt[algorithm][njet]>ptsLJetMC &&algorithm==2){
594                                                                                                                                                                 findsLJetMC_temp=true;
595                                                                                                                                                                 nsLJetMC =njet;ptsLJetMC =Jet_pt[algorithm][njet];phisLJetMC =Jet_phi[algorithm][njet];etasLJetMC =Jet_eta[algorithm][njet];
596                                                                                                                                 }
597                                                                                                 }
598                                                                 }
599                                                                 ////Sub leading Jet ======================================================
600
601                                                                 double Leading_pt=0.;double Leading_phi=999.;double Leading_eta=999.;double sLeading_pt=0.;double sLeading_phi=999.;double sLeading_eta=999.;
602                                                                 if(algorithm==0){Leading_pt=ptLJetAOD;Leading_phi=phiLJetAOD;Leading_eta=etaLJetAOD;sLeading_pt=ptsLJetAOD;sLeading_phi=phisLJetAOD;sLeading_eta=etasLJetAOD;}
603                                                                 if(algorithm==1){Leading_pt=ptLJetMC2;Leading_phi=phiLJetMC2;Leading_eta=etaLJetMC2;sLeading_pt=ptsLJetMC2;sLeading_phi=phisLJetMC2;sLeading_eta=etasLJetMC2;}
604                                                                 if(algorithm==2){Leading_pt=ptLJetMC ;Leading_phi=phiLJetMC ;Leading_eta=etaLJetMC ;sLeading_pt=ptsLJetMC ;sLeading_phi=phisLJetMC ;sLeading_eta=etasLJetMC ;}
605
606                                                                 ////Di-Jet event trigger +++++++++++++++++++++++++++++++++++++++++++++++
607                                                                 double DPhi = DeltaPhi(Leading_phi,sLeading_phi);
608                                                                 double DEta = Leading_eta-sLeading_eta;
609                                                                 if(algorithm==0){
610                                                                                                 fH2JetsJetAKT04_dphi->Fill(Leading_pt,DPhi);
611                                                                                                 fH2JetsJetAKT04_deta->Fill(Leading_pt,DEta);
612                                                                 }
613                                                                 if(algorithm==1){
614                                                                                                 fH2JetsJetMCAKT04_dphi->Fill(Leading_pt,DPhi);
615                                                                                                 fH2JetsJetMCAKT04_deta->Fill(Leading_pt,DEta);
616                                                                 }
617                                                                 if((TMath::Cos(DPhi)<-0.5)&&(Leading_pt>10.)&&(sLeading_pt>10.)){
618                                                                                                 if(algorithm==0)findsLJetAOD=true;                                                         
619                                                                                                 if(algorithm==1)findsLJetMC=true;                                                         
620
621                                                                                                 double Aj = (Leading_pt-sLeading_pt)/(Leading_pt+sLeading_pt);
622                                                                                                 if(algorithm==0){
623                                                                                                                                 fH1leadJetAKT04_pt_dijet->Fill(Leading_pt);
624                                                                                                                                 fH1subJetAKT04_pt_dijet ->Fill(sLeading_pt);
625                                                                                                                                 fH2JetsJetAKT04_Aj->Fill(Leading_pt,Aj);
626                                                                                                                                 fH2JetsJetAKT04_pt->Fill(Leading_pt,sLeading_pt);
627                                                                                                 }
628                                                                                                 if(algorithm==1){
629                                                                                                                                 fH1leadJetMCAKT04_pt_dijet->Fill(Leading_pt);
630                                                                                                                                 fH1subJetMCAKT04_pt_dijet ->Fill(sLeading_pt);
631                                                                                                                                 fH2JetsJetMCAKT04_Aj->Fill(Leading_pt,Aj);
632                                                                                                                                 fH2JetsJetMCAKT04_pt->Fill(Leading_pt,sLeading_pt);
633                                                                                                 }
634                                                                 }
635                                                                 if(algorithm==0)findsLJet=findsLJetAOD;
636                                                                 if(algorithm==1)findsLJet=findsLJetMC2;
637                                                                 if(algorithm==2)findsLJet=findsLJetMC;
638                                                                 ////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
639
640                                                                 if(algorithm>=2)continue;
641
642                                                                 if((findsLJet)&&(Leading_pt>10.)&&(sLeading_pt>10.)){
643                                                                                                 for(int eb=0;eb<5;eb++){//count number of Di-Jet in pt bin
644                                                                                                                                 if(TMath::Abs(Leading_pt -20.*(eb+1))<10.){
645                                                                                                                                                                 if(algorithm==0)fH1AKT04_ndiJ_ediv[eb]->Fill(1);
646                                                                                                                                 }
647                                                                                                 }
648                                                                                                 fJetBranch = "tracks";
649                                                                                                 TClonesArray* tracks = dynamic_cast <TClonesArray*> (fAODIn->FindListObject(fJetBranch.Data()));
650                                                                 
651                                                                                                 if(!tracks)continue;
652                                                                                                 Int_t nt = tracks->GetEntriesFast();
653                                                                                                 AliAODTrack* trackAOD;
654                                                                                                 Track_n = nt;
655                                                                                                 for(int njet=0;njet<Jet_n[algorithm];njet++){
656                                                                                                                                 if(njet!=nLJet)continue;
657                                                                                                                                 double eta_cut_Jet=0.5;
658                                                                                                                                 if(TMath::Abs(Jet_eta[algorithm][njet])<eta_cut_Jet){
659                                                                                                                                                                 for(int eb=0;eb<5;eb++){
660                                                                                                                                                                                                 if(TMath::Abs(Jet_pt[algorithm][njet] -20.*(eb+1))<10.){
661                                                                                                                                                                                                                                 for(int ntrack =0;ntrack<nt;ntrack++){
662                                                                                                                                                                                                                                                                 trackAOD = (AliAODTrack*) (tracks->At(ntrack));
663                                                                                                                                                                                                                                                                 if(trackAOD->TestFilterMask(Filtermask)){
664                                                                                                                                                                                                                                                                                                 Track_pt   [ntrack]      = trackAOD->Pt();
665                                                                                                                                                                                                                                                                                                 Track_phi  [ntrack]      = trackAOD->Phi();
666                                                                                                                                                                                                                                                                                                 Track_eta  [ntrack]      = trackAOD->Eta();
667                                                                                                                                                                                                                                                                                                 double DelPhi = DeltaPhi(Jet_phi[algorithm][njet],Track_phi[ntrack]);
668                                                                                                                                                                                                                                                                                                 if(TMath::Abs(Track_eta[ntrack])<0.9){
669                                                                                                                                                                                                                                                                                                                                 for(int teb=0;teb<5;teb++){
670                                                                                                                                                                                                                                                                                                                                                                 if(teb==0){if(!(Track_pt[ntrack]>0.15))continue;}
671                                                                                                                                                                                                                                                                                                                                                                 if(teb==1){if(!((Track_pt[ntrack]<1.5)&&(Track_pt[ntrack]>0.15)))continue;}
672                                                                                                                                                                                                                                                                                                                                                                 if(teb==2){if(!((Track_pt[ntrack]<3.0)&&(Track_pt[ntrack]>1.5)))continue;}
673                                                                                                                                                                                                                                                                                                                                                                 if(teb==3){if(!((Track_pt[ntrack]<4.5)&&(Track_pt[ntrack]>3.0)))continue;}
674                                                                                                                                                                                                                                                                                                                                                                 if(teb==4){if(!(Track_pt[ntrack]>4.5))continue;}
675                                                                                                                                                                                                                                                                                                                                                                 if(algorithm==0){
676                                                                                                                                                                                                                                                                                                                                                                                         fH1JetHadronAKT04_dphi_ediv                [eb][teb]->Fill(DelPhi); 
677                                                                                                                                                                                                                                                                                                                                                                                         fH1JetHadronAKT04_dphi_tptweight_ediv      [eb][teb]->Fill(DelPhi,Track_pt[ntrack]);
678                                                                                                                                                                                                                                                                                                                                                                                         fH1JetHadronAKT04_dphi_tJptweight_ediv     [eb][teb]->Fill(DelPhi,Track_pt[ntrack]/Jet_pt[algorithm][njet]);
679                                                                                                                                                                                                                                                                                                                                                                 }
680                                                                                                                                                                                                                                                                                                                                 }
681                                                                                                                                                                                                                                                                                                 }
682                                                                                                                                                                                                                                                                 }
683                                                                                                                                                                                                                                 }//Track Loop
684                                                                                                                                                                                                 }
685                                                                                                                                                                 }
686                                                                                                                                 }//eta cut
687                                                                                                 }//Jet Loop
688                                                                 }// Di-Jet
689                                 }// algorithm LOOP
690                                 if(IsMC){
691                                                                 for(int eb=0;eb<5;eb++){
692                                                                                                 double DPhi;
693                                                                                                 if(TMath::Abs(ptLJetAOD -20.*(eb+1))<10.){
694                                                                                                                                 DPhi = DeltaPhi(phiLJetMC,phiLJetAOD);
695                                                                                                                                 fH1leadJetMCAKT04_dphiResolution[eb]->Fill(DPhi);
696                                                                                                                                 DPhi = DeltaPhi(phisLJetMC,phisLJetAOD);
697                                                                                                                                 fH1subJetMCAKT04_dphiResolution[eb]->Fill(DPhi);
698                                                                                                 }
699                                                                 }
700                                 }
701
702
703
704
705
706                                 PostData(1, fHistList);
707                                 return;
708 }      
709
710 //________________________________________________________________________
711 void AliAnalysisTaskJetHadronCorrelation::Terminate(Option_t *) 
712 {
713                                 // Terminate analysis
714                                 if (fDebug) printf("AnalysisTaskPt: Terminate() \n");
715
716 }
717
718
719 Int_t  AliAnalysisTaskJetHadronCorrelation::GetListOfJets(TList *list,TClonesArray* jarray,Int_t type){
720
721                                 if(fDebug>2)Printf("%s:%d Selecting jets with cuts %d",(char*)__FILE__,__LINE__,type);
722                                 Int_t iCount = 0;
723
724                                 if(!jarray){
725                                                                 Printf("%s:%d no Jet array",(char*)__FILE__,__LINE__);
726                                                                 return iCount;
727                                 }
728
729
730                                 for(int ij=0;ij<jarray->GetEntries();ij++){
731                                                                 AliAODJet* jet = (AliAODJet*)jarray->At(ij);
732                                                                 if(!jet)continue;
733                                                                 if(type==0){
734                                                                                                 // No cut at all, main purpose here is sorting      
735                                                                                                 list->Add(jet);
736                                                                                                 iCount++;
737                                                                 }
738                                                                 else if(type == 1){
739                                                                                                 // eta cut
740                                                                                                 if(JetSelected(jet)){
741                                                                                                                                 list->Add(jet);
742                                                                                                                                 iCount++;
743                                                                                                 }
744                                                                 }
745                                 }
746
747                                 list->Sort();
748                                 return iCount;
749
750 }
751
752
753
754 Bool_t  AliAnalysisTaskJetHadronCorrelation::JetSelected(AliAODJet *jet){
755                                 Bool_t selected = false;
756
757                                 if(!jet)return selected;
758
759                                 if(fabs(jet->Eta())<fJetRecEtaWindow&&jet->Pt()>fMinJetPt){
760                                                                 selected = kTRUE;
761                                 }
762                                 return selected;
763
764 }
765
766
767 Double_t AliAnalysisTaskJetHadronCorrelation::DeltaPhi(Double_t phi1,Double_t phi2){
768                                 Float_t pi=TMath::Pi();
769                                 Double_t dphi = phi1-phi2;
770                                 if     (dphi<(-1./2*pi))dphi = dphi +2*pi;
771                                 else if(dphi>( 3./2*pi))dphi = dphi -2*pi;
772                                 return dphi;
773 }
774
775 Float_t AliAnalysisTaskJetHadronCorrelation::GetTotalEvents(const char* currFile){
776                                 Float_t totalevent;
777                                 TString file_es(currFile);
778                                 if(file_es.Contains("root_archive.zip#")){
779                                                                 Ssiz_t pos1 = file_es.Index("root_archive",12,TString::kExact);
780                                                                 Ssiz_t pos = file_es.Index("#",1,pos1,TString::kExact);
781                                                                 file_es.Replace(pos+1,20,"");
782                                 }
783                                 else {
784                                                                 // not an archive take the basename....
785                                                                 file_es.ReplaceAll(gSystem->BaseName(file_es.Data()),"");
786                                 }
787
788                                 TString cAdd = "";
789                                 cAdd += Form("%02d_",(int)((Radius+0.01)*10.));
790                                 cAdd += Form("B%d",(int)BackM);
791                                 cAdd += Form("_Filter%05d",Filtermask);
792                                 cAdd += Form("_Cut%05d",(int)(1000.*TrackPtcut));
793                                 cAdd += Form("_Skip%02d",SkipCone);
794                                 TString Dirname,Listname;
795                                 Dirname  = Form("PWG4_cluster_AOD__%s%s",JFAlg.Data(),cAdd.Data());
796                                 Listname = Form("pwg4cluster_AOD__%s%s",JFAlg.Data(),cAdd.Data());
797
798                                 TFile *feventstat = TFile::Open(Form("%s%s",file_es.Data(),"JetTasksOutput.root"));
799                                 gROOT->Cd(Dirname.Data());
800                                 TList *templist     = (TList*)gROOT->FindObject(Listname.Data());
801                                 TH1F* temphist = (TH1F*)templist->FindObject("fh1Trials");
802                                 totalevent = temphist->Integral();
803                                 //cout<<temphist->Integral()<<endl;
804                                 delete feventstat;
805                                 return totalevent;
806
807 }
808
809