3 #if !defined(__CINT__) || defined(__MAKECINT__)
12 #include <TProfile2D.h>
17 #include <TStopwatch.h>
22 #include <TTimeStamp.h>
23 #include "AliTkConeJetEvent.h"
24 #include "AliTkConeJet.h"
25 #include "AliTkConeJetFinderV2.h"
26 #include <AliJetParticle.h>
27 #include <AliJetParticlesReader.h>
28 #include <AliJetParticlesReaderKine.h>
29 #include <AliJetParticlesReaderESD.h>
30 #include <AliJetParticlesReaderHLT.h>
31 #include <AliJetEventParticles.h>
34 Float_t relphi(Float_t phi1, Float_t phi2);
35 Float_t addphi(Float_t phi1, Float_t phi2);
36 Float_t diffphi(Float_t phi1, Float_t phi2);
37 Int_t eventindex(Float_t phi1, Float_t phi2);
38 void convert(Float_t pjet[4], Float_t &pt, Float_t &theta, Float_t &eta, Float_t &phi);
40 void anaAliJets(Char_t *filename,Char_t *savefilename,
41 Int_t mEnergy=100,Int_t mBackEn=-1,Int_t nMaxEvents=-1,
42 Char_t *evfilename=0,Char_t *sigevfilename=0,
43 Char_t *signalfilename=0,Char_t *monteconefilename=0)
45 filename = cone finder event
46 evfilename = background event or jetevent only (if 0 take from jetevent)
47 sigevfilename = signal event if background event is used (otherwice == 0)
48 signalfilename = original signal event (eg. for real tracking to get trigger jets)
49 monteconefilename = reconstructed jets from signal event (esd=0,esd=10)
53 const Float_t minEtRecoCut=mEnergy*0.95;
54 const Float_t maxEtRecoCut=mEnergy*1.05;
56 if(mBackEn) minJetEt=mBackEn;
57 else minJetEt=mEnergy/4.;
58 const Float_t minPartPt=0.5;
59 //const Char_t *figprefix=0;
60 //const Char_t *figdirname=".";
62 const Int_t nclasses=22;
63 const Float_t cletmin[nclasses] = {0,10,20,30,40,50,60,70,80,90,100,
64 110,120,130,140,150,160,170,180,190,200,0};
65 const Float_t cletmax[nclasses] = {10,20,30,40,50,60,70,80,90,100,
66 110,120,130,140,150,160,170,180,190,200,350,350};
69 const Float_t deltaR=0.1/2;
72 #ifdef APPLYCORRECTION
73 if(!allparts) corrfac=2./3;
75 if(Radius<=0.3) conefluc=0.8;
76 else if(Radius<=0.5) conefluc=0.9;
77 else if(Radius<=0.7) conefluc=0.9;
85 TH1F *hJetEt = new TH1F("hJetEt","E_{T} (jet)",350,0,350);
86 hJetEt->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
87 hJetEt->GetYaxis()->SetTitle("dN/dE_{T} [GeV^{-1}]");
89 TH1F *hBackJetEt = new TH1F("hBackJetEt","E_{T} (jet)",350,0,350);
90 hBackJetEt->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
91 hBackJetEt->GetYaxis()->SetTitle("dN/dE_{T} [GeV^{-1}]");
93 TH1F *hJetEtall = new TH1F("hAllJetEt","E_{T} (jet)",350,0,350);
94 hJetEtall->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
95 hJetEtall->GetYaxis()->SetTitle("dN/dE_{T} [GeV^{-1}]");
97 TProfile *hJetEttrue = new TProfile("hJetEttrue","E_{T} (jet)",350,0,350,0,1.5);
98 hJetEttrue->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
99 hJetEttrue->GetYaxis()->SetTitle("E^{true}_{T}/E_{T}");
101 TProfile *hBackJetEttrue = new TProfile("hBackJetEttrue","E_{T} (jet)",350,0,350,0,1.5);
102 hBackJetEttrue->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
103 hBackJetEttrue->GetYaxis()->SetTitle("E^{true}_{T}/E_{T}");
105 TProfile *hJetEtalltrue = new TProfile("hAllJetEttrue","E_{T} (jet)",350,0,350,0,1.5);
106 hJetEtalltrue->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
107 hJetEtalltrue->GetYaxis()->SetTitle("E^{true}_{T}/E_{T}");
109 TH1F *hJetEtUQTrigger = new TH1F("hJetEtUQTrigger","E_{T} (trigger jet)",350,0,350);
110 hJetEtUQTrigger->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
111 hJetEtUQTrigger->GetYaxis()->SetTitle("dN/dE_{T} [GeV^{-1}]");
113 TH1F *hJetEtTrigger = new TH1F("hJetEtTrigger","E_{T} (trigger jet)",350,0,350);
114 hJetEtTrigger->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
115 hJetEtTrigger->GetYaxis()->SetTitle("dN/dE_{T} [GeV^{-1}]");
117 TH2F *hJetEtvsEll = new TH2F("hJetEtvsEll","E_{T} (jet) versus Length",350,0,350,100,0,10);
118 hJetEtvsEll->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
119 hJetEtvsEll->GetYaxis()->SetTitle("L [fm]");
121 TH2F *hJetEtallvsEll = new TH2F("hAllJetEtallvsEll","E_{T} (jet) versus Length",350,0,350,100,0,10);
122 hJetEtallvsEll->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
123 hJetEtallvsEll->GetYaxis()->SetTitle("L [fm]");
125 TH2F *hJetEtvsTrigger = new TH2F("hJetEtvsTrigger","",350,0,350,350,0,350);
126 hJetEtvsTrigger->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
127 hJetEtvsTrigger->GetYaxis()->SetTitle("E_{T} (jettrigger) [GeV]");
129 TH2F *hJetEtvsUQTrigger = new TH2F("hJetEtvsUQTrigger","",350,0,350,350,0,350);
130 hJetEtvsUQTrigger->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
131 hJetEtvsUQTrigger->GetYaxis()->SetTitle("E_{T} (jettrigger) [GeV]");
133 TH2F *hJetEtvsEt = new TH2F("hJetEtvsEt","",350,0,350,350,0,350);
134 hJetEtvsEt->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
135 hJetEtvsEt->GetYaxis()->SetTitle("E_{T} (jet) [GeV]");
137 TH1F *hJetZ = new TH1F("hjetZ","Z distribution",100,0,1);
138 hJetZ->GetXaxis()->SetTitle("Z");
139 hJetZ->GetYaxis()->SetTitle("dN/dZ");
141 TH1F *hJet1 = new TH1F("hjet1","E_{t} distribution",350,0,350);
142 hJet1->GetXaxis()->SetTitle("E_{T} (parton) [GeV]");
143 hJet1->GetYaxis()->SetTitle("dN/dE_{T} [GeV^{-1}]");
145 TH1F *hJet2 = new TH1F("hjet2","E_{t} distribution",350,0,350);
146 hJet2->GetXaxis()->SetTitle("E_{T} (parton) [GeV]");
147 hJet2->GetYaxis()->SetTitle("dN/dE_{T} [GeV^{-1}]");
149 TH1F **hJettype= new TH1F*[3];
150 for(Int_t i=0;i<3;i++){
152 sprintf(t,"hJettype%d",i);
155 sprintf(tit,"Unknown");
157 sprintf(tit,"Quark");
159 sprintf(tit,"Gluon");
160 hJettype[i]=new TH1F(t,tit,350,0,350);
161 hJettype[i]->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
162 hJettype[i]->GetYaxis()->SetTitle("dN/dE_{T} [GeV^{-1}]");
165 TH2F *hAxesDiff = new TH2F("hAxesDiff","",120,0,TMath::Pi(),40,0,2);
166 hAxesDiff->GetXaxis()->SetTitle("#Delta #phi");
167 hAxesDiff->GetYaxis()->SetTitle("#Delta #eta");
170 TH1F *hJetEtres = new TH1F("hJetEtres","E_{T} (jet)",350,0,350);
171 hJetEtres->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
172 hJetEtres->GetYaxis()->SetTitle("dN/dE_{T} [GeV^{-1}]");
174 TH1F *hJetEtratio = new TH1F("hJetEtratio","E_{T} (jet)",200,0,2);
175 hJetEtratio->GetXaxis()->SetTitle("E_{T} (jet)/E_{T} (trigger)");
176 hJetEtratio->GetYaxis()->SetTitle("Number of jets");
178 TProfile *hJetEtrestrue = new TProfile("hJetEttestrue","E_{T} (jet)",35,0,350,-2,2);
179 hJetEtrestrue->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
180 hJetEtrestrue->GetYaxis()->SetTitle("E^{true}_{T}/E_{T}");
182 TH1F *hJetEtresTrigger = new TH1F("hJetEtresTrigger","E_{T} (trigger jet)",350,0,350);
183 hJetEtresTrigger->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
184 hJetEtresTrigger->GetYaxis()->SetTitle("dN/dE_{T} [GeV^{-1}]");
186 TProfile2D *hAxesDiffres = new TProfile2D("hAxesDiffres","",240,0,TMath::Pi(),100,0,2);
187 hAxesDiffres->GetXaxis()->SetTitle("#Delta #phi");
188 hAxesDiffres->GetYaxis()->SetTitle("#Delta #eta");
190 TH1F *hPhires = new TH1F("hPhires","",250,-1,1);
191 hPhires->GetXaxis()->SetTitle("#Delta #phi [rad]");
192 hPhires->GetYaxis()->SetTitle("Number of jets");
194 TH1F *hEtares = new TH1F("hEtares","",250,-1,1);
195 hEtares->GetXaxis()->SetTitle("#Delta #eta [rad]");
196 hEtares->GetYaxis()->SetTitle("Number of jets");
198 TH1F *hmJetEtres = new TH1F("hmJetEtres","E_{T} (jet)",350,0,350);
199 hmJetEtres->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
200 hmJetEtres->GetYaxis()->SetTitle("dN/dE_{T} [GeV^{-1}]");
202 TH1F *hmJetEtratio = new TH1F("hmJetEtratio","E_{T} (jet)",200,0,2);
203 hmJetEtratio->GetXaxis()->SetTitle("E_{T} (jet)/E_{T} (trigger)");
204 hmJetEtratio->GetYaxis()->SetTitle("Number of jets");
206 TProfile *hmJetEtrestrue = new TProfile("hmJetEttestrue","E_{T} (jet)",35,0,350,-2,2);
207 hmJetEtrestrue->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
208 hmJetEtrestrue->GetYaxis()->SetTitle("E^{true}_{T}/E_{T}");
210 TProfile2D *hmAxesDiffres = new TProfile2D("hmAxesDiffres","",240,0,TMath::Pi(),100,0,2);
211 hmAxesDiffres->GetXaxis()->SetTitle("#Delta #phi");
212 hmAxesDiffres->GetYaxis()->SetTitle("#Delta #eta");
214 TH1F *hmPhires = new TH1F("hmPhires","",250,-1,1);
215 hmPhires->GetXaxis()->SetTitle("#Delta #phi [rad]");
216 hmPhires->GetYaxis()->SetTitle("Number of jets");
218 TH1F *hmEtares = new TH1F("hmEtares","",250,-1,1);
219 hmEtares->GetXaxis()->SetTitle("#Delta #eta [rad]");
220 hmEtares->GetYaxis()->SetTitle("Number of jets");
222 TH1F *hPhiMonteres = new TH1F("hPhiMonteres","",250,-1,1);
223 hPhiMonteres->GetXaxis()->SetTitle("#Delta #phi [rad]");
224 hPhiMonteres->GetYaxis()->SetTitle("Number of jets");
226 TH1F *hEtaMonteres = new TH1F("hEtaMonteres","",250,-1,1);
227 hEtaMonteres->GetXaxis()->SetTitle("#Delta #eta [rad]");
228 hEtaMonteres->GetYaxis()->SetTitle("Number of jets");
230 TH1F *hEtMonteres = new TH1F("hEtMonteres","",250,-125,125);
231 hEtMonteres->GetXaxis()->SetTitle("#Delta E_{T} [GeV]");
232 hEtMonteres->GetYaxis()->SetTitle("Number of jets");
234 TH1F *hEtMonteratio = new TH1F("hEtMonteratio","E_{T} (jet)",200,0,2);
235 hEtMonteratio->GetXaxis()->SetTitle("E^{rec}_{T} / E^{monte}_{T}");
236 hEtMonteratio->GetYaxis()->SetTitle("Number of jets");
240 TH1F **hJetEttrigger=new TH1F*[9];
241 TH1F **hJetEttrigger2=new TH1F*[9];
242 for(Int_t i=0;i<9;i++){
243 sprintf(dummy,"hJetEttrigger%d",i);
244 hJetEttrigger[i] = new TH1F(dummy,"E_{T} (jet)",350,0,350);
245 hJetEttrigger[i]->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
246 hJetEttrigger[i]->GetYaxis()->SetTitle("dN/dE_{T} [GeV^{-1}]");
247 sprintf(dummy,"hJetEttrigger2%d",i);
248 hJetEttrigger2[i] = new TH1F(dummy,"E_{T} (jet)",350,0,350);
249 hJetEttrigger2[i]->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
250 hJetEttrigger2[i]->GetYaxis()->SetTitle("dN/dE_{T} [GeV^{-1}]");
252 sprintf(dummy,"hJetEttriggernorm");
253 TH1F *hJetEttriggernorm = new TH1F(dummy,"E_{T} (jet)",350,0,350);
254 hJetEttriggernorm->GetXaxis()->SetTitle("E_{T} (jet) [GeV]");
255 hJetEttriggernorm->GetYaxis()->SetTitle("dN/dE_{T} [GeV^{-1}]");
259 TH1F **hJetLeadingPt = new TH1F*[nclasses];
260 for(Int_t i=0;i<nclasses;i++){
261 sprintf(dummy,"hJetLeadingPt%d",i);
262 sprintf(title,"Transverse Momentum Fraction of Leading Particle (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
263 hJetLeadingPt[i]=new TH1F(dummy,title,100,0,1);
264 hJetLeadingPt[i]->GetXaxis()->SetTitle("z=p_{T}^{lead.part.}/P_{T}^{jet}");
265 hJetLeadingPt[i]->GetYaxis()->SetTitle("dN/dz");
268 TH1F **hJetFragLeadingPt = new TH1F*[nclasses];
269 for(Int_t i=0;i<nclasses;i++){
270 sprintf(dummy,"hJetFragLeadingPt%d",i);
271 sprintf(title,"Fragmentation Function (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
272 hJetFragLeadingPt[i]=new TH1F(dummy,title,100,0,1);
273 hJetFragLeadingPt[i]->GetXaxis()->SetTitle("z=p_{T}/p_{T}^{lead.part.}");
274 hJetFragLeadingPt[i]->GetYaxis()->SetTitle("dN/dz");
277 TH1F **hJetLeadingPtDist = new TH1F*[nclasses];
278 for(Int_t i=0;i<nclasses;i++){
279 sprintf(dummy,"hJetLeadingPtDist%d",i);
280 sprintf(title,"Transverse Momentum Fraction of Leading Particle (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
281 hJetLeadingPtDist[i]=new TH1F(dummy,title,600,0,150);
282 hJetLeadingPtDist[i]->GetXaxis()->SetTitle("p_{T}^{lead.part.} [GeV]");
283 hJetLeadingPtDist[i]->GetYaxis()->SetTitle("dN/dp_{T}^{lead.part.} [GeV^{-1}]");
286 TH1F **hJetFragL = new TH1F*[nclasses];
287 for(Int_t i=0;i<nclasses;i++){
288 sprintf(dummy,"hJetFragL%d",i);
289 sprintf(title,"Longitudinal Fragmentation Function (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
290 hJetFragL[i]=new TH1F(dummy,title,100,0,1);
291 hJetFragL[i]->GetXaxis()->SetTitle("z=p_{L}/P^{jet}");
292 hJetFragL[i]->GetYaxis()->SetTitle("dN/dz");
295 TH1F **hJetFragPL = new TH1F*[nclasses];
296 for(Int_t i=0;i<nclasses;i++){
297 sprintf(dummy,"hJetFragPL%d",i);
298 sprintf(title,"Longitudinal Momentum (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
299 hJetFragPL[i]=new TH1F(dummy,title,600,0,150);
300 hJetFragPL[i]->GetXaxis()->SetTitle("p_{L}");
301 hJetFragPL[i]->GetYaxis()->SetTitle("dN/dp_{L} [GeV^{-1}]");
304 TH1F **hJetFragT = new TH1F*[nclasses];
305 for(Int_t i=0;i<nclasses;i++){
306 sprintf(dummy,"hJetFragT%d",i);
307 sprintf(title,"Transversal Fragmentation Function (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
308 hJetFragT[i]=new TH1F(dummy,title,250,0,25);
309 hJetFragT[i]->GetXaxis()->SetTitle("j_{T} [GeV]");
310 hJetFragT[i]->GetYaxis()->SetTitle("dN/dj_{T}");
313 TH1F **hJetFragPt = new TH1F*[nclasses];
314 for(Int_t i=0;i<nclasses;i++){
315 sprintf(dummy,"hJetFragPt%d",i);
316 sprintf(title,"Particle Transversal Momentum Distribution (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
317 hJetFragPt[i]=new TH1F(dummy,title,600,0,150);
318 hJetFragPt[i]->GetXaxis()->SetTitle("p_{T} [GeV]");
319 hJetFragPt[i]->GetYaxis()->SetTitle("dN/dp_{T}");
322 TH1F **hJetN = new TH1F*[nclasses];
323 for(Int_t i=0;i<nclasses;i++){
324 sprintf(dummy,"hJetN%d",i);
325 sprintf(title,"Particle Multiplicity (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
326 hJetN[i]=new TH1F(dummy,title,150+1,-0.5,150+0.5);
327 hJetN[i]->GetXaxis()->SetTitle("n = Number of Particles within Jet");
328 hJetN[i]->GetYaxis()->SetTitle("dN/dn");
331 TH1F **hJetMeanPt = new TH1F*[nclasses];
332 for(Int_t i=0;i<nclasses;i++){
333 sprintf(dummy,"hJetMeanPt%d",i);
334 sprintf(title,"Mean Transverse Jet Energy per Particle (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
335 hJetMeanPt[i]=new TH1F(dummy,title,125,0,25);
336 hJetMeanPt[i]->GetXaxis()->SetTitle("#bar{p} = P_{T}^{jet}/n [GeV]");
337 hJetMeanPt[i]->GetYaxis()->SetTitle("dN/d#bar{p}");
341 Float_t retall[nclasses][10];
342 Float_t retlow[nclasses][10];
343 Float_t retlow1[nclasses][10];
344 Float_t retlow2[nclasses][10];
345 Float_t retlow3[nclasses][10];
346 Float_t retlow4[nclasses][10];
348 for(Int_t i=0;i<10;i++) {
349 for(Int_t j=0;j<nclasses;j++) {
361 Float_t dretall[nclasses][11];
362 Float_t dretlow[nclasses][11];
363 Float_t dretlow1[nclasses][11];
364 Float_t dretlow2[nclasses][11];
365 Float_t dretlow3[nclasses][11];
366 Float_t dretlow4[nclasses][11];
368 for(Int_t i=0;i<11;i++) {
369 for(Int_t j=0;j<nclasses;j++) {
380 TH1F **hPhiCorr = new TH1F*[nclasses];
381 for(Int_t i=0;i<nclasses;i++){
382 sprintf(dummy,"hPartPhiCorr%d",i);
383 sprintf(title,"Azimuthal Correlation (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
384 hPhiCorr[i]= new TH1F(dummy,title,120,0,TMath::TwoPi());
385 hPhiCorr[i]->GetXaxis()->SetTitle("#phi");
386 hPhiCorr[i]->GetYaxis()->SetTitle("dN/d#phi");
390 //global event properties (ue)
391 // [0]=toward, [1]=away, [2]=transverse,
393 AliTkEtaPhiVector **centers=new AliTkEtaPhiVector*[4];
395 TH1F ***hgJetFragLeadingPt = new TH1F**[3];
396 TH1F ***hgJetFragL = new TH1F**[3];
397 TH1F ***hgJetFragPL = new TH1F**[3];
398 TH1F ***hgJetFragT = new TH1F**[3];
399 TH1F ***hgJetFragPt = new TH1F**[3];
400 TH1F ***hgDiJetFragLeadingPt = new TH1F**[3];
401 TH1F ***hgDiJetFragL = new TH1F**[3];
402 TH1F ***hgDiJetFragPL = new TH1F**[3];
403 TH1F ***hgDiJetFragT = new TH1F**[3];
404 TH1F ***hgDiJetFragPt = new TH1F**[3];
405 for(Int_t k=0;k<3;k++){
406 hgJetFragLeadingPt[k] = new TH1F*[nclasses];
407 hgJetFragL[k] = new TH1F*[nclasses];
408 hgJetFragPL[k] = new TH1F*[nclasses];
409 hgJetFragT[k] = new TH1F*[nclasses];
410 hgJetFragPt[k] = new TH1F*[nclasses];
411 hgDiJetFragLeadingPt[k] = new TH1F*[nclasses];
412 hgDiJetFragL[k] = new TH1F*[nclasses];
413 hgDiJetFragPL[k] = new TH1F*[nclasses];
414 hgDiJetFragT[k] = new TH1F*[nclasses];
415 hgDiJetFragPt[k] = new TH1F*[nclasses];
417 sprintf(name,"toward");
419 sprintf(name,"away");
421 sprintf(name,"transverse");
423 for(Int_t i=0;i<nclasses;i++){
424 sprintf(dummy,"h%s-JetFragLeadingPt%d",name,i);
425 sprintf(title,"Fragmentation Function (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
426 hgJetFragLeadingPt[k][i]=new TH1F(dummy,title,100,0,1);
427 hgJetFragLeadingPt[k][i]->GetXaxis()->SetTitle("z=p_{T}/p_{T}^{lead.part.}");
428 hgJetFragLeadingPt[k][i]->GetYaxis()->SetTitle("dN/dz");
430 sprintf(dummy,"h%s-JetFragL%d",name,i);
431 sprintf(title,"Longitudinal Fragmentation Function (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
432 hgJetFragL[k][i]=new TH1F(dummy,title,100,0,1);
433 hgJetFragL[k][i]->GetXaxis()->SetTitle("z=p_{L}/P^{jet}");
434 hgJetFragL[k][i]->GetYaxis()->SetTitle("dN/dz");
436 sprintf(dummy,"h%s-JetFragPL%d",name,i);
437 sprintf(title,"Longitudinal Momentum (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
438 hgJetFragPL[k][i]=new TH1F(dummy,title,600,0,150);
439 hgJetFragPL[k][i]->GetXaxis()->SetTitle("p_{L}");
440 hgJetFragPL[k][i]->GetYaxis()->SetTitle("dN/dp_{L} [GeV^{-1}]");
442 sprintf(dummy,"h%s-JetFragT%d",name,i);
443 sprintf(title,"Transversal Fragmentation Function (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
444 hgJetFragT[k][i]=new TH1F(dummy,title,250,0,25);
445 hgJetFragT[k][i]->GetXaxis()->SetTitle("j_{T} [GeV]");
446 hgJetFragT[k][i]->GetYaxis()->SetTitle("dN/dj_{T}");
448 sprintf(dummy,"h%s-JetFragPt%d",name,i);
449 sprintf(title,"Particle Transversal Momentum Distribution (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
450 hgJetFragPt[k][i]=new TH1F(dummy,title,600,0,150);
451 hgJetFragPt[k][i]->GetXaxis()->SetTitle("p_{T} [GeV]");
452 hgJetFragPt[k][i]->GetYaxis()->SetTitle("dN/dp_{T}");
454 sprintf(dummy,"h%s-DiJetFragLeadingPt%d",name,i);
455 sprintf(title,"Fragmentation Function (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
456 hgDiJetFragLeadingPt[k][i]=new TH1F(dummy,title,100,0,1);
457 hgDiJetFragLeadingPt[k][i]->GetXaxis()->SetTitle("z=p_{T}/p_{T}^{lead.part.}");
458 hgDiJetFragLeadingPt[k][i]->GetYaxis()->SetTitle("dN/dz");
460 sprintf(dummy,"h%s-DiJetFragL%d",name,i);
461 sprintf(title,"Longitudinal Fragmentation Function (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
462 hgDiJetFragL[k][i]=new TH1F(dummy,title,100,0,1);
463 hgDiJetFragL[k][i]->GetXaxis()->SetTitle("z=p_{L}/P^{jet}");
464 hgDiJetFragL[k][i]->GetYaxis()->SetTitle("dN/dz");
466 sprintf(dummy,"h%s-DiJetFragPL%d",name,i);
467 sprintf(title,"Longitudinal Momentum (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
468 hgDiJetFragPL[k][i]=new TH1F(dummy,title,600,0,150);
469 hgDiJetFragPL[k][i]->GetXaxis()->SetTitle("p_{L}");
470 hgDiJetFragPL[k][i]->GetYaxis()->SetTitle("dN/dp_{L} [GeV^{-1}]");
472 sprintf(dummy,"h%s-DiJetFragT%d",name,i);
473 sprintf(title,"Transversal Fragmentation Function (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
474 hgDiJetFragT[k][i]=new TH1F(dummy,title,250,0,25);
475 hgDiJetFragT[k][i]->GetXaxis()->SetTitle("j_{T} [GeV]");
476 hgDiJetFragT[k][i]->GetYaxis()->SetTitle("dN/dj_{T}");
478 sprintf(dummy,"h%s-DiJetFragPt%d",name,i);
479 sprintf(title,"Particle Transversal Momentum Distribution (%.0f GeV<E_{T}<%.0f GeV)",cletmin[i],cletmax[i]);
480 hgDiJetFragPt[k][i]=new TH1F(dummy,title,600,0,150);
481 hgDiJetFragPt[k][i]->GetXaxis()->SetTitle("p_{T} [GeV]");
482 hgDiJetFragPt[k][i]->GetYaxis()->SetTitle("dN/dp_{T}");
487 Float_t gretall[3][nclasses][10];
488 Float_t gretlow[3][nclasses][10];
489 Float_t gretlow1[3][nclasses][10];
490 Float_t gretlow2[3][nclasses][10];
491 Float_t gretlow3[3][nclasses][10];
492 Float_t gretlow4[3][nclasses][10];
494 for(Int_t i=0;i<10;i++) {
495 for(Int_t j=0;j<nclasses;j++) {
496 for(Int_t k=0;k<3;k++){
499 gretlow1[k][j][i]=0.;
500 gretlow2[k][j][i]=0.;
501 gretlow3[k][j][i]=0.;
502 gretlow4[k][j][i]=0.;
509 Float_t gdretall[3][nclasses][11];
510 Float_t gdretlow[3][nclasses][11];
511 Float_t gdretlow1[3][nclasses][11];
512 Float_t gdretlow2[3][nclasses][11];
513 Float_t gdretlow3[3][nclasses][11];
514 Float_t gdretlow4[3][nclasses][11];
516 for(Int_t i=0;i<11;i++) {
517 for(Int_t j=0;j<nclasses;j++) {
518 for(Int_t k=0;k<3;k++){
519 gdretall[k][j][i]=0.;
520 gdretlow[k][j][i]=0.;
521 gdretlow1[k][j][i]=0.;
522 gdretlow2[k][j][i]=0.;
523 gdretlow3[k][j][i]=0.;
524 gdretlow4[k][j][i]=0.;
531 Float_t gdiretall[3][nclasses][10];
532 Float_t gdiretlow[3][nclasses][10];
533 Float_t gdiretlow1[3][nclasses][10];
534 Float_t gdiretlow2[3][nclasses][10];
535 Float_t gdiretlow3[3][nclasses][10];
536 Float_t gdiretlow4[3][nclasses][10];
537 for(Int_t i=0;i<10;i++) {
538 for(Int_t j=0;j<nclasses;j++) {
539 for(Int_t k=0;k<3;k++){
540 gdiretall[k][j][i]=0.;
541 gdiretlow[k][j][i]=0.;
542 gdiretlow1[k][j][i]=0.;
543 gdiretlow2[k][j][i]=0.;
544 gdiretlow3[k][j][i]=0.;
545 gdiretlow4[k][j][i]=0.;
551 Float_t gdidretall[3][nclasses][11];
552 Float_t gdidretlow[3][nclasses][11];
553 Float_t gdidretlow1[3][nclasses][11];
554 Float_t gdidretlow2[3][nclasses][11];
555 Float_t gdidretlow3[3][nclasses][11];
556 Float_t gdidretlow4[3][nclasses][11];
557 for(Int_t i=0;i<11;i++) {
558 for(Int_t j=0;j<nclasses;j++) {
559 for(Int_t k=0;k<3;k++){
560 gdidretall[k][j][i]=0.;
561 gdidretlow[k][j][i]=0.;
562 gdidretlow1[k][j][i]=0.;
563 gdidretlow2[k][j][i]=0.;
564 gdidretlow3[k][j][i]=0.;
565 gdidretlow4[k][j][i]=0.;
570 TH1F *hPartPtDist = new TH1F("hPartPtDist","Transverse Momentum Distribution",600,0,150);
571 hPartPtDist->GetXaxis()->SetTitle("p_{T} [GeV]");
572 hPartPtDist->GetYaxis()->SetTitle("dN/dp_{T} [GeV^{-1}]");
574 TH1F *hPartPhiDist = new TH1F("hPartPhiDist","Azimuthal Distribution",120,0,TMath::TwoPi());
575 hPartPhiDist->GetXaxis()->SetTitle("#phi");
576 hPartPhiDist->GetYaxis()->SetTitle("dN/d#phi");
578 TH1F *hPartEtaDist = new TH1F("hPartEtaDist","Pseudo-Rapidity Distribution",100,-1,1);
579 hPartEtaDist->GetXaxis()->SetTitle("#eta");
580 hPartEtaDist->GetYaxis()->SetTitle("dN/d#eta");
582 TH1F *hPartPhiCorr = new TH1F("hPartPhiCorr","Azimuthal Correlation",120,0,TMath::TwoPi());
583 hPartPhiCorr->GetXaxis()->SetTitle("#phi");
584 hPartPhiCorr->GetYaxis()->SetTitle("dN/d#phi");
586 TH1F *hPartDiPhiCorr = new TH1F("hPartDiPhiCorr","Azimuthal Correlation",120,0,TMath::TwoPi());
587 hPartDiPhiCorr->GetXaxis()->SetTitle("#phi");
588 hPartDiPhiCorr->GetYaxis()->SetTitle("dN/d#phi");
590 TH1F *hPartACorr = new TH1F("hPartACorr","Alpha Correlation",100,-1.1,1.1);
591 hPartACorr->GetXaxis()->SetTitle("#alpha");
592 hPartACorr->GetYaxis()->SetTitle("dN/d#alpha");
594 TH1F *hPartDiACorr = new TH1F("hPartDiACorr","Alpha Correlation",100,-1.1,1.1);
595 hPartDiACorr->GetXaxis()->SetTitle("#alpha");
596 hPartDiACorr->GetYaxis()->SetTitle("dN/d#alpha");
598 Int_t nTotalEvents = 0;
599 Int_t nclGoodEvents[nclasses];
600 for(Int_t i=0;i<nclasses;i++) nclGoodEvents[i]=0;
601 Int_t nclLeadEvents[nclasses];
602 for(Int_t i=0;i<nclasses;i++) nclLeadEvents[i]=0;
603 Int_t nclDiEvents[nclasses];
604 for(Int_t i=0;i<nclasses;i++) nclDiEvents[i]=0;
607 TChain *theTree = new TChain("jets");
608 theTree->Add(filename);
609 AliTkConeJetEvent *event = new AliTkConeJetEvent();
610 theTree->SetBranchAddress("ConeFinder",&event);
612 Int_t treeentries=(Int_t)theTree->GetEntries();
613 if((nMaxEvents<0) || (nMaxEvents>treeentries))
614 nMaxEvents=treeentries;
616 cout << "Found " << nMaxEvents << " in " << filename << endl;
619 AliJetEventParticles *jetevent=0;
620 TChain *theEvTree_sig=0;
621 AliJetEventParticles *jetevent_sig=0;
622 Int_t backtreeentries=0;
623 Int_t nPerBackground=0;
624 if(nPerBackground==0) nPerBackground=1;
627 theEvTree = new TChain("AJEPtree");
628 theEvTree->Add(evfilename);
629 jetevent=new AliJetEventParticles();
630 theEvTree->SetBranchAddress("particles",&jetevent);
631 Int_t evtreeentries=(Int_t)theEvTree->GetEntries();
634 theEvTree_sig = new TChain("AJEPtree");
635 theEvTree_sig->Add(sigevfilename);
636 jetevent_sig=new AliJetEventParticles();
637 theEvTree_sig->SetBranchAddress("particles",&jetevent_sig);
638 evtreeentries=(Int_t)theEvTree_sig->GetEntries();
639 backtreeentries=(Int_t)theEvTree->GetEntries();
640 nPerBackground=nMaxEvents/backtreeentries;
641 if(nPerBackground==0) nPerBackground=1;
644 if(evtreeentries!=treeentries){
646 cerr << "Total jet event number not equals event number: "
647 << evtreeentries << " " << treeentries <<endl;
652 TChain *theSignalTree=0;
653 AliJetEventParticles *jetsigevent=0;
655 theSignalTree = new TChain("AJEPtree");
656 theSignalTree->Add(signalfilename);
657 jetsigevent=new AliJetEventParticles();
658 theSignalTree->SetBranchAddress("particles",&jetsigevent);
660 Int_t sigtreeentries=(Int_t)theSignalTree->GetEntries();
661 if(sigtreeentries!=treeentries){
663 cerr << "Total jet signal event number not equals event number: "
664 << sigtreeentries << " " << treeentries <<endl;
669 //connect to monte jets (if wanted)
670 TChain *theTreeMonte=0;
671 AliTkConeJetEvent *monteevent = 0;
672 if(monteconefilename){
673 theTreeMonte = new TChain("jets");
674 theTreeMonte->Add(monteconefilename);
675 monteevent= new AliTkConeJetEvent();
676 theTreeMonte->SetBranchAddress("ConeFinder",&monteevent);
677 Int_t montetreeentries=(Int_t)theTreeMonte->GetEntries();
678 if(montetreeentries!=treeentries){
680 cerr << "Total monte jet event number not equals jet event number: "
681 << montetreeentries << " " << treeentries <<endl;
684 Int_t sigtreeentries=(Int_t)theSignalTree->GetEntries();
685 if(montetreeentries!=sigtreeentries){
687 cerr << "Total signal cone jet event number not equals signal event number: "
688 << sigtreeentries << " " << montetreeentries <<endl;
695 //=========================================================================
696 // start the event loop
697 //=========================================================================
699 Int_t nEventSig = -1;
700 Int_t nEventHijing = -1;
701 Int_t nEventHijingCounter = nPerBackground;
702 while(nEvent<nMaxEvents-1){
706 if ((nEvent % 100) == 0) {
707 cout << "Analysing event " << nEvent << endl;
710 //connect the cone event/jets
712 theTree->GetEvent(nEvent);
715 Float_t ptcutused=event->getPtCut();
716 if(ptcutused<minPartPt) ptcutused=minPartPt;
718 TClonesArray *jets=event->getJets();
720 if(theEvTree_sig){ // need to mix
721 if(nEventHijingCounter==nPerBackground){
724 theEvTree->GetEvent(nEventHijing);
726 if(nEventHijing==backtreeentries) nEventHijing=0;
727 nEventHijingCounter=0;
729 jetevent_sig->Reset();
730 theEvTree_sig->GetEvent(nEvent);
731 //jetevent_sig->Print();
732 jetevent->AddSignal(*jetevent_sig);
733 TString dummy="Counter: ";
736 dummy+="(Pythia ";dummy+=nEvent;
738 dummy+=", Hijing ";dummy+=nEventHijing;
740 jetevent->SetHeader(dummy);
741 nEventHijingCounter++;
742 } else if(theEvTree){
743 theEvTree->GetEvent(nEvent);
746 jetevent=event->getJetParticles();
749 if(theSignalTree){ //get MC event containing signal
750 jetsigevent->Reset();
751 theSignalTree->GetEvent(nEventSig);
753 if(jetsigevent->GetEventNr()!=jetevent->GetEventNr()){
754 Int_t js=jetsigevent->GetEventNr();
755 Int_t es=jetevent->GetEventNr();
756 cerr << "Need to skip event: " << nEvent << ": " << es << " != " << js << endl;
757 if(es>js) nEventSig++;
764 jetsigevent=jetevent;
767 //connect the monte cone jets
768 TClonesArray *montejets=0;
771 theTreeMonte->GetEvent(nEventSig);
772 monteevent->sortJets();
773 //monteevent->Print("");
774 montejets=monteevent->getJets();
781 Int_t njets=jets->GetEntries();
783 cerr << "No Cone jet found in event " << nEvent << ", continuing..." <<endl;
787 Int_t nhard=0; //get hard partons
788 TClonesArray *chard_jets=new TClonesArray("AliTkConeJet",0);
791 //TString header=jetsigevent->getHeader();
792 //Int_t ntrials=jetsigevent->Trials();
793 jetsigevent->Hard(0,phard,type);
795 Float_t ptj,thj,etaj,phj;
796 convert(phard,ptj,thj,etaj,phj);
797 new ((*chard_jets)[nhard]) AliTkConeJet(ptj,etaj,phj,(Int_t)type);
800 jetsigevent->Hard(1,phard,type);
802 Float_t ptj,thj,etaj,phj;
803 convert(phard,ptj,thj,etaj,phj);
804 new ((*chard_jets)[nhard]) AliTkConeJet(ptj,etaj,phj,(Int_t)type);
808 //chard_jets->Print();
810 Int_t ntr=jetsigevent->NTriggerJets();
811 Float_t tr_jets[ntr][3]; // trigger jets
812 TClonesArray *ctr_jets=new TClonesArray("AliTkConeJet",ntr);
813 Float_t lead_tr_pt=-1.,lead_tr_phi=0,lead_tr_eta=0.;
814 for(Int_t j=0;j<ntr;j++){
816 Float_t ptj,thj,etaj,phj;
817 jetsigevent->TriggerJet(j,pjet);
818 convert(pjet,ptj,thj,etaj,phj);
822 new ((*ctr_jets)[j]) AliTkConeJet(ptj,etaj,phj);
828 for(Int_t i=0;i<nhard;i++){
829 Float_t diff,etdiff,etadiff,phidiff;
830 AliTkConeJet *jet=(AliTkConeJet*)ctr_jets->At(j);
831 diff=AliTkConeJet::Diff(jet,(AliTkConeJet*)chard_jets->At(i),etdiff,phidiff,etadiff);
832 //cout << diff << " " << etdiff << " " << phidiff << " " << etadiff << endl;
834 jet->setType((Int_t)type);
841 Int_t ntruq=jetsigevent->NUQTriggerJets();
842 Float_t uq_jets[ntruq][3]; // unquenched jets
843 TClonesArray *cuq_jets=new TClonesArray("AliTkConeJet",ntruq);
844 Float_t lead_uq_pt=-1.,lead_uq_phi=0,lead_uq_eta=0.;
845 for(Int_t j=0;j<ntruq;j++){
847 Float_t ptj,thj,etaj,phj;
848 jetsigevent->UQJet(j,pjet);
849 convert(pjet,ptj,thj,etaj,phj);
853 new ((*cuq_jets)[j]) AliTkConeJet(ptj,etaj,phj);
863 Double_t x0=jetsigevent->GetXJet();
864 Double_t y0=jetsigevent->GetYJet();
865 Double_t prodlength=TMath::Sqrt(x0*x0+y0*y0);
867 jetsigevent->GetZQuench(zquench);
869 //fill trigger histos (without cuts)
870 hJetEtUQTrigger->Fill(lead_uq_pt);
871 hJetEtTrigger->Fill(lead_tr_pt);
872 for(Int_t i=0;i<2;i++){
873 hJetZ->Fill(zquench[i]);
875 //reconstruction efficiency plots
876 if(ntr) for(Int_t j=0;j<1/*ntr*/;j++){ //loop over MC jets
877 Float_t diff,etdiff,etadiff,phidiff;
880 AliTkConeJet *jt=(AliTkConeJet*)ctr_jets->At(j);
881 if(jt->getEt()<minEtRecoCut||jt->getEt()>maxEtRecoCut) continue;
882 //if(TMath:Abs(jt->getEta())>0.1) continue,
884 Int_t njets=jets->GetEntries();
886 for(Int_t i=0;i<njets;i++){
887 jet=(AliTkConeJet*)jets->At(i);
889 jet->calculateValues();
890 diff=AliTkConeJet::Diff(jt,jet,etdiff,phidiff,etadiff);
891 //_cut_ here if wanted (prob. for mixed events)
892 //if(phidiff>0.25||etadiff>0.25) continue;
893 //if(TMath::Abs(etdiff)/jt->getEt()>0.1) continue;
894 //cout << diff << " " << etdiff << " " << phidiff << " " << etadiff << endl;
901 jet=(AliTkConeJet*)jets->At(index);
902 hJetEtres->Fill(jet->getEt());
903 hJetEtresTrigger->Fill(jt->getEt());
904 hJetEtratio->Fill(jet->getEt()/jt->getEt());
905 Float_t phidiff=(jt->getPhi()-jet->getPhi());
906 if(phidiff>TMath::Pi()) phidiff=TMath::TwoPi()-phidiff;
907 Float_t etadiff=(jt->getEta()-jet->getEta());
908 Float_t etfract=jet->getEtMarkedFrac();
909 hAxesDiffres->Fill(phidiff,etadiff,TMath::Abs(jet->getEt()-jt->getEt()));
910 hJetEtrestrue->Fill(jet->getEt(),etfract);
911 hPhires->Fill(phidiff);
912 hEtares->Fill(etadiff);
913 //cout << "test" << nEvent << " " << phidiff << " " << etadiff << endl;
917 //compare leading jets from Monte and Reconstruction
918 AliTkConeJet *jt=(AliTkConeJet*)jets->At(0);
919 AliTkConeJet *mjt=(AliTkConeJet*)montejets->At(0);
921 Float_t phidiff=(jt->getPhi()-mjt->getPhi());
922 if(phidiff>TMath::Pi()) phidiff=TMath::TwoPi()-phidiff;
923 Float_t etadiff=(jt->getEta()-mjt->getEta());
924 Float_t etdiff=jt->getEt()-mjt->getEt();
925 hPhiMonteres->Fill(phidiff);
926 hEtaMonteres->Fill(etadiff);
927 hEtMonteres->Fill(etdiff);
928 hEtMonteratio->Fill(jt->getEt()/mjt->getEt());
930 for(Int_t j=0;j<1/*montejets->Entries()*/;j++){
931 Float_t diff,etdiff,etadiff,phidiff;
934 AliTkConeJet *jt=(AliTkConeJet*)montejets->At(j);
936 //if(jt->getEt()<minEtRecoCut||jt->getEt()>maxEtRecoCut) continue;
938 Int_t njets=jets->GetEntries();
940 for(Int_t i=0;i<njets;i++){
941 jet=(AliTkConeJet*)jets->At(i);
943 jet->calculateValues();
944 diff=AliTkConeJet::Diff(jt,jet,etdiff,phidiff,etadiff);
945 //_cut_ here if wanted (prob. for mixed events)
946 //if(phidiff>0.25||etadiff>0.25) continue;
947 //if(TMath::Abs(etdiff)/jt->getEt()>0.1) continue;
948 //cout << diff << " " << etdiff << " " << phidiff << " " << etadiff << endl;
955 jet=(AliTkConeJet*)jets->At(index);
956 hmJetEtres->Fill(jet->getEt());
957 hmJetEtratio->Fill(jet->getEt()/jt->getEt());
958 Float_t phidiff=(jt->getPhi()-jet->getPhi());
959 if(phidiff>TMath::Pi()) phidiff=TMath::TwoPi()-phidiff;
960 Float_t etadiff=(jt->getEta()-jet->getEta());
961 Float_t etfract=jet->getEtMarkedFrac();
962 hmAxesDiffres->Fill(phidiff,etadiff,TMath::Abs(jet->getEt()-jt->getEt()));
963 hmJetEtrestrue->Fill(jet->getEt(),etfract);
964 hmPhires->Fill(phidiff);
965 hmEtares->Fill(etadiff);
970 //could _cut_ on event
972 //cout << lead_tr_pt << " " << lead_tr_eta << " " << lead_tr_phi << endl;
973 if((lead_tr_eta>0.5) || (lead_tr_eta<-0.5)) continue;
974 if(zquench[0]<0.1||zquench[1]<0.1) continue;
978 const TClonesArray *parts=jetevent->GetParticles();
981 AliTkConeJet *lead_jet=0;
982 AliTkConeJet *back_jet=0;
983 for(Int_t i=0;i<njets;i++){
986 jet=(AliTkConeJet*)jets->At(i);
988 jet->calculateValues();
990 hJetEtall->Fill(jet->getEt()); //without any cuts
991 Float_t etfract=jet->getEtMarkedFrac();
992 hJetEtalltrue->Fill(jet->getEt(),etfract); //without any cuts
994 //here could _cut_ on jet
996 Float_t et=jet->getEt();
998 if(corrfac>0) corret/=corrfac;
999 if(corret<minJetEt) continue;
1001 Int_t clindex=Int_t(corret/10);
1002 if(clindex>nclasses-2) clindex=nclasses-2;
1003 nclGoodEvents[clindex]++;
1004 nclGoodEvents[nclasses-1]++;
1008 for(Int_t i=0;i<nhard;i++){
1009 Float_t diff,etdiff,etadiff,phidiff;
1010 AliTkConeJet *jh=(AliTkConeJet*)chard_jets->At(i);
1011 diff=AliTkConeJet::Diff(jet,jh,etdiff,phidiff,etadiff);
1012 //cout << diff << " " << etdiff << " " << phidiff << " " << etadiff << endl;
1014 jet->setType(jh->getType());
1023 hJetEt->Fill(lead_jet->getEt());
1024 hJetEttrue->Fill(lead_jet->getEt(),etfract);
1025 Float_t mindiff=100;
1026 Float_t minetdiff=0.,minphidiff=0.,minetadiff=0.;
1028 for(Int_t j=0;j<ntr;j++){
1029 Float_t diff,etdiff,etadiff,phidiff;
1030 AliTkConeJet *jt=(AliTkConeJet*)ctr_jets->At(j);
1031 diff=AliTkConeJet::Diff(lead_jet,jt,etdiff,phidiff,etadiff);
1040 if(TMath::Abs(minetdiff)/lead_jet->getEt()<0.15)
1041 hAxesDiff->Fill(minphidiff,minetadiff);
1044 Float_t triget=lead_jet->getEt();
1045 Float_t leadet=((AliTkConeJet*)ctr_jets->At(0))->getEt();
1046 for(Int_t i=0;i<9;i++){
1047 Float_t minet=i*10+10;
1048 if(triget>=minet) hJetEttrigger[i]->Fill(leadet,1);
1049 else hJetEttrigger2[i]->Fill(leadet,1);
1051 hJetEttriggernorm->Fill(leadet,1);
1052 }// check the back-to-back jet
1053 else if ((jet->getEt()/lead_jet->getEt()>0.75) &&
1054 (relphi(jet->getPhi(),lead_jet->getPhi())>5/6*TMath::Pi())){
1058 hBackJetEt->Fill(back_jet->getEt());
1059 hBackJetEttrue->Fill(back_jet->getEt(),etfract);
1060 hJetEtvsEt->Fill(lead_jet->getEt(),back_jet->getEt());
1063 cerr << "Already found one back jet, disregarding the new one." << endl;
1068 hJetEtvsTrigger->Fill(corret,lead_tr_pt);
1069 hJetEtvsUQTrigger->Fill(corret,lead_uq_pt);
1070 hJetEtallvsEll->Fill(corret,prodlength);
1071 hJetEtvsEll->Fill(corret,prodlength);
1072 hJettype[jet->getType()]->Fill(jet->getEt());
1074 Int_t njetparts=jet->getNParts();
1075 hJetN[clindex]->Fill(njetparts);
1076 hJetN[nclasses-1]->Fill(njetparts);
1077 Float_t leadPartPt=jet->getPtLead();
1079 if(corret>0) ptRatio=leadPartPt/corret;
1081 if(njetparts>0) meanpt=corret/njetparts;
1082 hJetMeanPt[clindex]->Fill(meanpt);
1083 hJetMeanPt[nclasses-1]->Fill(meanpt);
1084 hJetLeadingPt[clindex]->Fill(ptRatio);
1085 hJetLeadingPt[nclasses-1]->Fill(ptRatio);
1086 hJetLeadingPtDist[clindex]->Fill(leadPartPt);
1087 hJetLeadingPtDist[nclasses-1]->Fill(leadPartPt);
1089 Float_t jetAxisX=jet->getXAxis();
1090 Float_t jetAxisY=jet->getYAxis();
1091 Float_t jetAxisZ=jet->getZAxis();
1092 Float_t jetAxisLength=jet->getPLength();
1094 TClonesArray *particles = jet->getParts();
1095 TIterator *partit = particles->MakeIterator();
1096 TParticle *particle = NULL;
1098 while ((particle = (TParticle *) partit->Next()) != NULL) {
1099 Float_t al=particle->Px()*jetAxisX+particle->Py()*jetAxisY+particle->Pz()*jetAxisZ;
1101 //cout << "Should not happen!" << al << endl;
1104 Float_t at=TMath::Sqrt(TMath::Abs(particle->P()*particle->P()-al*al));
1105 hJetFragL[clindex]->Fill(al/jetAxisLength);
1106 hJetFragT[clindex]->Fill(at);
1107 hJetFragPL[clindex]->Fill(al);
1108 hJetFragPt[clindex]->Fill(particle->Pt());
1109 hJetFragL[nclasses-1]->Fill(al/jetAxisLength);
1110 hJetFragT[nclasses-1]->Fill(at);
1111 hJetFragPL[nclasses-1]->Fill(al);
1112 hJetFragPt[nclasses-1]->Fill(particle->Pt());
1114 Float_t z=particle->Pt()/leadPartPt;
1116 hJetFragLeadingPt[clindex]->Fill(z);
1117 hJetFragLeadingPt[nclasses-1]->Fill(z);
1118 } else if(z==1) firstval=1;
1124 //calculate int/diff shapes
1125 Float_t jeteta=jet->getCEta();
1126 Float_t jetphi=jet->getCPhi();
1127 AliTkEtaPhiVector center(jeteta,jetphi);
1128 TIterator *partit = parts->MakeIterator();
1129 AliJetParticle *particle = NULL;
1130 while ((particle = (AliJetParticle *) partit->Next()) != NULL) {
1131 Float_t pt=particle->Pt();
1132 if(pt<ptcutused) continue;
1133 AliTkEtaPhiVector centerp;
1134 centerp.setVector(particle->Eta(),particle->Phi());
1135 Float_t diff=center.diff(centerp);
1136 for(Int_t loop=Int_t(diff*10)+1;loop<=10;loop++){
1137 if(pt<1.) retlow1[clindex][loop-1]+=pt;
1138 if(pt<2.) retlow[clindex][loop-1]+=pt;
1139 if(pt<3.) retlow2[clindex][loop-1]+=pt;
1140 if(pt<4.) retlow3[clindex][loop-1]+=pt;
1141 if(pt<5.) retlow4[clindex][loop-1]+=pt;
1142 retall[clindex][loop-1]+=pt;
1143 if(pt<1.) retlow1[nclasses-1][loop-1]+=pt;
1144 if(pt<2.) retlow[nclasses-1][loop-1]+=pt;
1145 if(pt<3.) retlow2[nclasses-1][loop-1]+=pt;
1146 if(pt<4.) retlow3[nclasses-1][loop-1]+=pt;
1147 if(pt<5.) retlow4[nclasses-1][loop-1]+=pt;
1148 retall[nclasses-1][loop-1]+=pt;
1152 if(diff<=deltaR) index=0;
1153 else index=Int_t((diff-deltaR)*10)+1;
1154 if(pt<1.) dretlow1[clindex][index]+=pt;
1155 if(pt<2.) dretlow[clindex][index]+=pt;
1156 if(pt<3.) dretlow2[clindex][index]+=pt;
1157 if(pt<4.) dretlow3[clindex][index]+=pt;
1158 if(pt<5.) dretlow4[clindex][index]+=pt;
1159 dretall[clindex][index]+=pt;
1160 if(pt<1.) dretlow1[nclasses-1][index]+=pt;
1161 if(pt<2.) dretlow[nclasses-1][index]+=pt;
1162 if(pt<3.) dretlow2[nclasses-1][index]+=pt;
1163 if(pt<4.) dretlow3[nclasses-1][index]+=pt;
1164 if(pt<5.) dretlow4[nclasses-1][index]+=pt;
1165 dretall[nclasses-1][index]+=pt;
1167 if(pt<ptcutused) continue;
1168 Float_t phi=particle->Phi();
1170 Float_t dphi=diffphi(jet->getPhi(),phi);
1171 hPhiCorr[clindex]->Fill(dphi);
1172 hPhiCorr[nclasses-1]->Fill(dphi);
1176 } //loop over cone jets
1178 //global event studies
1179 TIterator *partit = parts->MakeIterator();
1180 AliJetParticle *particle = NULL;
1184 Float_t jetAxisX=-1;
1185 Float_t jetAxisY=-1;
1186 Float_t jetAxisZ=-1;
1187 Float_t jetAxisLength=-1;
1188 Float_t leadPartPt=-1;
1190 leta=lead_jet->getCEta();
1191 lphi=lead_jet->getCPhi();
1192 jetAxisX=lead_jet->getXAxis();
1193 jetAxisY=lead_jet->getYAxis();
1194 jetAxisZ=lead_jet->getZAxis();
1195 jetAxisLength=lead_jet->getPLength();
1196 leadPartPt=lead_jet->getPtLead();
1197 centers[0]=new AliTkEtaPhiVector(leta,lphi);
1198 centers[1]=new AliTkEtaPhiVector(leta,addphi(lphi,TMath::Pi()));
1199 centers[2]=new AliTkEtaPhiVector(leta,addphi(lphi,TMath::Pi()/2));
1200 centers[3]=new AliTkEtaPhiVector(leta,addphi(lphi,3*TMath::Pi()/2));
1201 Float_t et=lead_jet->getEt();
1203 if(corrfac>0) corret/=corrfac;
1204 clindex=Int_t(corret/10);
1205 if(clindex>nclasses-2) clindex=nclasses-2;
1206 nclLeadEvents[clindex]++;
1207 nclLeadEvents[nclasses-1]++;
1209 nclDiEvents[clindex]++;
1210 nclDiEvents[nclasses-1]++;
1214 //loop over particles in event
1217 while ((particle = (AliJetParticle *) partit->Next()) != NULL) {
1218 Float_t pt=particle->Pt();
1219 if(pt<ptcutused) continue;
1220 Float_t eta=particle->Eta();
1221 Float_t phi=particle->Phi();
1222 hPartPtDist->Fill(pt);
1223 hPartPhiDist->Fill(phi);
1224 hPartEtaDist->Fill(eta);
1226 Float_t dphi=diffphi(lphi,phi);
1227 Float_t al=particle->Px()*jetAxisX+particle->Py()*jetAxisY+particle->Pz()*jetAxisZ;
1229 hPartPhiCorr->Fill(dphi);
1230 hPartACorr->Fill(al);
1232 hPartDiPhiCorr->Fill(dphi);
1233 hPartDiACorr->Fill(al);
1237 for(Int_t ceindex=0;ceindex<4;ceindex++){
1238 Int_t heindex=ceindex;
1239 if(heindex==3) heindex=2; //store both sides of trans plane in one histo
1241 AliTkEtaPhiVector centerp;
1242 centerp.setVector(eta,phi);
1243 Float_t diff=centers[ceindex]->diff(centerp);
1244 for(Int_t loop=Int_t(diff*10)+1;loop<=10;loop++){
1245 if(pt<1.) gretlow1[heindex][clindex][loop-1]+=pt;
1246 if(pt<2.) gretlow[heindex][clindex][loop-1]+=pt;
1247 if(pt<3.) gretlow2[heindex][clindex][loop-1]+=pt;
1248 if(pt<4.) gretlow3[heindex][clindex][loop-1]+=pt;
1249 if(pt<5.) gretlow4[heindex][clindex][loop-1]+=pt;
1250 gretall[heindex][clindex][loop-1]+=pt;
1251 if(pt<1.) gretlow1[heindex][nclasses-1][loop-1]+=pt;
1252 if(pt<2.) gretlow[heindex][nclasses-1][loop-1]+=pt;
1253 if(pt<3.) gretlow2[heindex][nclasses-1][loop-1]+=pt;
1254 if(pt<4.) gretlow3[heindex][nclasses-1][loop-1]+=pt;
1255 if(pt<5.) gretlow4[heindex][nclasses-1][loop-1]+=pt;
1256 gretall[heindex][nclasses-1][loop-1]+=pt;
1260 if(diff<=deltaR) index=0;
1261 else index=Int_t((diff-deltaR)*10)+1;
1262 if(pt<1.) gdretlow1[heindex][clindex][index]+=pt;
1263 if(pt<2.) gdretlow[heindex][clindex][index]+=pt;
1264 if(pt<3.) gdretlow2[heindex][clindex][index]+=pt;
1265 if(pt<4.) gdretlow3[heindex][clindex][index]+=pt;
1266 if(pt<5.) gdretlow4[heindex][clindex][index]+=pt;
1267 gdretall[heindex][clindex][index]+=pt;
1268 if(pt<1.) gdretlow1[heindex][nclasses-1][index]+=pt;
1269 if(pt<2.) gdretlow[heindex][nclasses-1][index]+=pt;
1270 if(pt<3.) gdretlow2[heindex][nclasses-1][index]+=pt;
1271 if(pt<4.) gdretlow3[heindex][nclasses-1][index]+=pt;
1272 if(pt<5.) gdretlow4[heindex][nclasses-1][index]+=pt;
1273 gdretall[heindex][nclasses-1][index]+=pt;
1276 for(Int_t loop=Int_t(diff*10)+1;loop<=10;loop++){
1277 if(pt<1.) gdiretlow1[heindex][clindex][loop-1]+=pt;
1278 if(pt<2.) gdiretlow[heindex][clindex][loop-1]+=pt;
1279 if(pt<3.) gdiretlow2[heindex][clindex][loop-1]+=pt;
1280 if(pt<4.) gdiretlow3[heindex][clindex][loop-1]+=pt;
1281 if(pt<5.) gdiretlow4[heindex][clindex][loop-1]+=pt;
1282 gdiretall[heindex][clindex][loop-1]+=pt;
1283 if(pt<1.) gdiretlow1[heindex][nclasses-1][loop-1]+=pt;
1284 if(pt<2.) gdiretlow[heindex][nclasses-1][loop-1]+=pt;
1285 if(pt<3.) gdiretlow2[heindex][nclasses-1][loop-1]+=pt;
1286 if(pt<4.) gdiretlow3[heindex][nclasses-1][loop-1]+=pt;
1287 if(pt<5.) gdiretlow4[heindex][nclasses-1][loop-1]+=pt;
1288 gdiretall[heindex][nclasses-1][loop-1]+=pt;
1292 if(diff<=deltaR) index=0;
1293 else index=Int_t((diff-deltaR)*10)+1;
1294 if(pt<1.) gdidretlow1[heindex][clindex][index]+=pt;
1295 if(pt<2.) gdidretlow[heindex][clindex][index]+=pt;
1296 if(pt<3.) gdidretlow2[heindex][clindex][index]+=pt;
1297 if(pt<4.) gdidretlow3[heindex][clindex][index]+=pt;
1298 if(pt<5.) gdidretlow4[heindex][clindex][index]+=pt;
1299 gdidretall[heindex][clindex][index]+=pt;
1300 if(pt<1.) gdretlow1[heindex][nclasses-1][index]+=pt;
1301 if(pt<2.) gdretlow[heindex][nclasses-1][index]+=pt;
1302 if(pt<3.) gdidretlow2[heindex][nclasses-1][index]+=pt;
1303 if(pt<4.) gdidretlow3[heindex][nclasses-1][index]+=pt;
1304 if(pt<5.) gdidretlow4[heindex][nclasses-1][index]+=pt;
1305 gdidretall[heindex][nclasses-1][index]+=pt;
1310 Int_t ceindex=eventindex(lphi,phi);
1311 Int_t heindex=ceindex;
1312 if(heindex==3) heindex=2; //store both sides of trans plane in one histo
1315 Float_t jetX=jetAxisX;
1316 Float_t jetY=jetAxisY;
1320 } else if(ceindex==2) {
1324 else if(ceindex==3) {
1328 Float_t al=particle->Px()*jetX+particle->Py()*jetY+particle->Pz()*jetAxisZ;
1329 Float_t at=TMath::Sqrt(TMath::Abs(particle->P()*particle->P()-al*al));
1330 hgJetFragL[heindex][clindex]->Fill(al/jetAxisLength);
1331 hgJetFragT[heindex][clindex]->Fill(at);
1332 hgJetFragPL[heindex][clindex]->Fill(al);
1333 hgJetFragPt[heindex][clindex]->Fill(particle->Pt());
1334 hgJetFragL[heindex][nclasses-1]->Fill(al/jetAxisLength);
1335 hgJetFragT[heindex][nclasses-1]->Fill(at);
1336 hgJetFragPL[heindex][nclasses-1]->Fill(al);
1337 hgJetFragPt[heindex][nclasses-1]->Fill(particle->Pt());
1339 Float_t z=particle->Pt()/leadPartPt;
1341 hgJetFragLeadingPt[heindex][clindex]->Fill(z);
1342 hgJetFragLeadingPt[heindex][nclasses-1]->Fill(z);
1343 } else if(z==1) firstval=1;
1346 hgDiJetFragL[heindex][clindex]->Fill(al/jetAxisLength);
1347 hgDiJetFragT[heindex][clindex]->Fill(at);
1348 hgDiJetFragPL[heindex][clindex]->Fill(al);
1349 hgDiJetFragPt[heindex][clindex]->Fill(particle->Pt());
1350 hgDiJetFragL[heindex][nclasses-1]->Fill(al/jetAxisLength);
1351 hgDiJetFragT[heindex][nclasses-1]->Fill(at);
1352 hgDiJetFragPL[heindex][nclasses-1]->Fill(al);
1353 hgDiJetFragPt[heindex][nclasses-1]->Fill(particle->Pt());
1355 Float_t z=particle->Pt()/leadPartPt;
1356 if(difirstval||z<1){
1357 hgDiJetFragLeadingPt[heindex][clindex]->Fill(z);
1358 hgDiJetFragLeadingPt[heindex][nclasses-1]->Fill(z);
1359 } else if(z==1) difirstval=1;
1368 for(Int_t i=0;i<4;i++) delete centers[i];
1373 cout << "Finished analysing events " << nTotalEvents << endl;
1384 delete theSignalTree;
1388 delete theTreeMonte;
1391 //========================================================================
1393 //========================================================================
1396 Char_t timestamp[255];
1397 sprintf(timestamp,"%d",tstamp.GetDate(0,0));
1399 //store all objects in root file (you never know, when you need it)
1400 Char_t rootfilename[1024];
1401 if(savefilename!=NULL)
1402 sprintf(rootfilename,"%s",savefilename);
1404 sprintf(rootfilename,"%s/anaAliJets-%s.root",gSystem->Getenv("JF_PLOTSDIR"),timestamp);
1405 TFile *rootfile=new TFile(rootfilename,"RECREATE");
1407 // let's start with the drawing...
1408 Int_t nents=(Int_t)hJetEt->GetEntries();
1410 cout << "hJetEt: " << nents << " entries in histogram" << endl;
1411 hJetEt->SetLineWidth(3);
1415 nents=(Int_t)hJetEttrue->GetEntries();
1417 cout << "hJetEttrue: " << nents << " entries in histogram" << endl;
1418 hJetEttrue->SetLineWidth(3);
1419 hJetEttrue->Write();
1422 nents=(Int_t)hBackJetEt->GetEntries();
1424 cout << "hBackJetEt: " << nents << " entries in histogram" << endl;
1425 hBackJetEt->SetLineWidth(3);
1426 hBackJetEt->Write();
1429 nents=(Int_t)hBackJetEttrue->GetEntries();
1431 cout << "hBackJetEttrue: " << nents << " entries in histogram" << endl;
1432 hBackJetEttrue->SetLineWidth(3);
1433 hBackJetEttrue->Write();
1436 nents=(Int_t)hJetEtall->GetEntries();
1438 cout << "hJetEtall: " << nents << " entries in histogram" << endl;
1439 hJetEtall->SetLineWidth(3);
1443 nents=(Int_t)hJetEtalltrue->GetEntries();
1445 cout << "hJetEtalltrue: " << nents << " entries in histogram" << endl;
1446 hJetEtalltrue->SetLineWidth(3);
1447 hJetEtalltrue->Write();
1450 nents=(Int_t)hJetEtUQTrigger->GetEntries();
1452 cout << "hJetEtUQTrigger: " << nents << " entries in histogram" << endl;
1453 hJetEtUQTrigger->SetLineWidth(3);
1454 hJetEtUQTrigger->Write();
1456 nents=(Int_t)hJetEtTrigger->GetEntries();
1458 cout << "hJetEtTrigger: " << nents << " entries in histogram" << endl;
1459 hJetEtTrigger->SetLineWidth(3);
1460 hJetEtTrigger->Write();
1464 rootfile->mkdir("LeadingPt");
1465 rootfile->cd("LeadingPt");
1466 for(Int_t i=0;i<nclasses;i++){
1467 nents=(Int_t)hJetLeadingPt[i]->GetEntries();
1469 //cout << "hJetLeadingPt " << i << ": " << nents << " entries in histogram" << endl;
1470 hJetLeadingPt[i]->SetLineWidth(3);
1471 hJetLeadingPt[i]->Write();
1476 rootfile->mkdir("FragLeadingPt");
1477 rootfile->cd("FragLeadingPt");
1478 for(Int_t i=0;i<nclasses;i++){
1479 nents=(Int_t)hJetFragLeadingPt[i]->GetEntries();
1481 //cout << "hJetFragLeadingPt " << i << ": " << nents << " entries in histogram" << endl;
1482 hJetFragLeadingPt[i]->SetLineWidth(3);
1483 hJetFragLeadingPt[i]->Write();
1488 rootfile->mkdir("LeadingPtDist");
1489 rootfile->cd("LeadingPtDist");
1490 for(Int_t i=0;i<nclasses;i++){
1491 nents=(Int_t)hJetLeadingPtDist[i]->GetEntries();
1493 //cout << "hJetLeadingPtDist " << i << ": " << nents << " entries in histogram" << endl;
1494 hJetLeadingPtDist[i]->SetLineWidth(3);
1495 hJetLeadingPtDist[i]->Write();
1500 rootfile->mkdir("FragLong");
1501 rootfile->cd("FragLong");
1502 for(Int_t i=0;i<nclasses;i++){
1503 nents=(Int_t)hJetFragL[i]->GetEntries();
1505 //cout << "hJetFragL " << i << ": " << nents << " entries in histogram " << endl;
1506 hJetFragL[i]->SetLineWidth(3);
1507 hJetFragL[i]->Write();
1512 rootfile->mkdir("FragPL");
1513 rootfile->cd("FragPL");
1514 for(Int_t i=0;i<nclasses;i++){
1515 nents=(Int_t)hJetFragPL[i]->GetEntries();
1517 //cout << "hJetFragPL " << i << ": " << nents << " entries in histogram " << endl;
1518 hJetFragPL[i]->SetLineWidth(3);
1519 hJetFragPL[i]->Write();
1524 rootfile->mkdir("FragTrans");
1525 rootfile->cd("FragTrans");
1526 for(Int_t i=0;i<nclasses;i++){
1527 nents=(Int_t)hJetFragT[i]->GetEntries();
1529 //cout << "hJetFragT " << i << ": " << nents << " entries in histogram" << endl;
1530 hJetFragT[i]->SetLineWidth(3);
1531 hJetFragT[i]->Write();
1536 rootfile->mkdir("Multiplicity");
1537 rootfile->cd("Multiplicity");
1538 for(Int_t i=0;i<nclasses;i++){
1539 nents=(Int_t)hJetN[i]->GetEntries();
1540 //cout <<"hJetN " << i << ": " << nents << " entries in histogram " << endl;
1542 hJetN[i]->SetLineWidth(3);
1548 rootfile->mkdir("PtDistribution");
1549 rootfile->cd("PtDistribution");
1550 for(Int_t i=0;i<nclasses;i++){
1551 nents=(Int_t)hJetFragPt[i]->GetEntries();
1553 //cout << "hJetFragPt " << i << ": " << nents << " entries in histogram " << endl;
1554 hJetFragPt[i]->SetLineWidth(3);
1555 hJetFragPt[i]->Write();
1560 rootfile->mkdir("MeanPt");
1561 rootfile->cd("MeanPt");
1562 for(Int_t i=0;i<nclasses;i++){
1563 nents=(Int_t)hJetMeanPt[i]->GetEntries();
1565 //cout << "hJetMeanPt " << i << ": " << nents << " entries in histogram " << endl;
1566 hJetMeanPt[i]->SetLineWidth(3);
1567 hJetMeanPt[i]->Write();
1572 rootfile->mkdir("PhiCorr");
1573 rootfile->cd("PhiCorr");
1574 for(Int_t i=0;i<nclasses;i++){
1575 nents=(Int_t)hPhiCorr[i]->GetEntries();
1577 //cout << "hPhiCorr " << i << ": " << nents << " entries in histogram " << endl;
1578 hPhiCorr[i]->SetLineWidth(3);
1579 hPhiCorr[i]->Write();
1583 rootfile->cd();//intshape
1584 rootfile->mkdir("ConeFluc");
1585 rootfile->cd("ConeFluc");
1586 for(Int_t j=0;j<nclasses;j++){
1587 TGraph *graphall=new TGraph(10);
1588 TGraph *graphlow=new TGraph(10);
1589 TGraph *graphlow1=new TGraph(10);
1590 TGraph *graphlow2=new TGraph(10);
1591 TGraph *graphlow3=new TGraph(10);
1592 TGraph *graphlow4=new TGraph(10);
1593 for(Int_t i=0;i<10;i++) {
1594 graphall->SetPoint(i,rxet[i],retall[j][i]);
1595 graphlow->SetPoint(i,rxet[i],retlow[j][i]);
1596 graphlow1->SetPoint(i,rxet[i],retlow1[j][i]);
1597 graphlow2->SetPoint(i,rxet[i],retlow2[j][i]);
1598 graphlow3->SetPoint(i,rxet[i],retlow3[j][i]);
1599 graphlow4->SetPoint(i,rxet[i],retlow4[j][i]);
1601 sprintf(dummy,"gretall%d",j);
1602 graphall->Write(dummy);
1603 sprintf(dummy,"gretlow%d",j);
1604 graphlow->Write(dummy);
1605 sprintf(dummy,"gret2low%d",j);
1606 graphlow->Write(dummy);
1607 sprintf(dummy,"gret1low%d",j);
1608 graphlow1->Write(dummy);
1609 sprintf(dummy,"gret3low%d",j);
1610 graphlow2->Write(dummy);
1611 sprintf(dummy,"gret4low%d",j);
1612 graphlow3->Write(dummy);
1613 sprintf(dummy,"gret5low%d",j);
1614 graphlow4->Write(dummy);
1623 rootfile->mkdir("Shape");
1624 rootfile->cd("Shape");
1625 for(Int_t j=0;j<nclasses;j++){
1626 TGraph *graphall=new TGraph(11);
1627 TGraph *graphlow=new TGraph(11);
1628 TGraph *graphlow1=new TGraph(11);
1629 TGraph *graphlow2=new TGraph(11);
1630 TGraph *graphlow3=new TGraph(11);
1631 TGraph *graphlow4=new TGraph(11);
1632 for(Int_t i=0;i<11;i++) {
1633 graphall->SetPoint(i,drxet[i],dretall[j][i]/deltaR);
1634 graphlow->SetPoint(i,drxet[i],dretlow[j][i]/deltaR);
1635 graphlow1->SetPoint(i,drxet[i],dretlow1[j][i]/deltaR);
1636 graphlow2->SetPoint(i,drxet[i],dretlow2[j][i]/deltaR);
1637 graphlow3->SetPoint(i,drxet[i],dretlow3[j][i]/deltaR);
1638 graphlow4->SetPoint(i,drxet[i],dretlow4[j][i]/deltaR);
1640 sprintf(dummy,"gretall%d",j);
1641 graphall->Write(dummy);
1642 sprintf(dummy,"gretlow%d",j);
1643 graphlow->Write(dummy);
1644 sprintf(dummy,"gret2low%d",j);
1645 graphlow->Write(dummy);
1646 sprintf(dummy,"gret1low%d",j);
1647 graphlow1->Write(dummy);
1648 sprintf(dummy,"gret3low%d",j);
1649 graphlow2->Write(dummy);
1650 sprintf(dummy,"gret4low%d",j);
1651 graphlow3->Write(dummy);
1652 sprintf(dummy,"gret5low%d",j);
1653 graphlow4->Write(dummy);
1662 rootfile->mkdir("Extended");
1663 rootfile->cd("Extended");
1665 nents=(Int_t)hJetEtvsTrigger->GetEntries();
1667 cout << "hJetEtvsTrigger" << nents << " entries in histogram" << endl;
1668 hJetEtvsTrigger->SetLineWidth(3);
1669 hJetEtvsTrigger->Write();
1672 nents=(Int_t)hJetEtvsEt->GetEntries();
1674 cout << "hJetEtvsEt" << nents << " entries in histogram" << endl;
1675 hJetEtvsEt->SetLineWidth(3);
1676 hJetEtvsEt->Write();
1679 nents=(Int_t)hAxesDiff->GetEntries();
1681 cout << "hAxesDiff" << nents << " entries in histogram" << endl;
1682 hAxesDiff->SetLineWidth(3);
1686 nents=(Int_t)hJet1->GetEntries();
1688 cout << "hJet1" << nents << " entries in histogram" << endl;
1689 hJet1->SetLineWidth(3);
1692 nents=(Int_t)hJet2->GetEntries();
1694 cout << "hJet2" << nents << " entries in histogram" << endl;
1695 hJet2->SetLineWidth(3);
1699 for(Int_t i=0;i<3;i++){
1700 nents=(Int_t)hJettype[i]->GetEntries();
1702 hJettype[i]->SetLineWidth(3);
1703 hJettype[i]->Write();
1707 nents=(Int_t)hJetEtvsEll->GetEntries();
1709 cout << "hJetEtvsEll" << nents << " entries in histogram " << endl;
1710 hJetEtvsEll->SetLineWidth(3);
1711 hJetEtvsEll->Write();
1714 nents=(Int_t)hJetEtallvsEll->GetEntries();
1716 cout << "hJetEtallvsEll" << nents << " entries in histogram " << endl;
1717 hJetEtallvsEll->SetLineWidth(3);
1718 hJetEtallvsEll->Write();
1721 nents=(Int_t)hJetZ->GetEntries();
1723 cout << "hJetZ: " << nents << " entries in histogram " << endl;
1724 hJetZ->SetLineWidth(3);
1729 rootfile->mkdir("Global");
1730 rootfile->cd("Global");
1732 nents=(Int_t)hPartPtDist->GetEntries();
1734 cout << "hPartPtDist: " << nents << " entries in histogram" << endl;
1735 hPartPtDist->SetLineWidth(3);
1736 hPartPtDist->Write();
1739 nents=(Int_t)hPartEtaDist->GetEntries();
1741 cout << "hPartEtaDist: " << nents << " entries in histogram" << endl;
1742 hPartEtaDist->SetLineWidth(3);
1743 hPartEtaDist->Write();
1746 nents=(Int_t)hPartPhiDist->GetEntries();
1748 cout << "hPartPhiDist: " << nents << " entries in histogram" << endl;
1749 hPartPhiDist->SetLineWidth(3);
1750 hPartPhiDist->Write();
1753 nents=(Int_t)hPartPhiCorr->GetEntries();
1755 cout << "hPartPhiCorr: " << nents << " entries in histogram" << endl;
1756 hPartPhiCorr->SetLineWidth(3);
1757 hPartPhiCorr->Write();
1760 nents=(Int_t)hPartDiPhiCorr->GetEntries();
1762 cout << "hPartDiPhiCorr: " << nents << " entries in histogram" << endl;
1763 hPartDiPhiCorr->SetLineWidth(3);
1764 hPartDiPhiCorr->Write();
1767 nents=(Int_t)hPartACorr->GetEntries();
1769 cout << "hPartACorr: " << nents << " entries in histogram" << endl;
1770 hPartACorr->SetLineWidth(3);
1771 hPartACorr->Write();
1774 nents=(Int_t)hPartDiACorr->GetEntries();
1776 cout << "hPartDiACorr: " << nents << " entries in histogram" << endl;
1777 hPartDiACorr->SetLineWidth(3);
1778 hPartDiACorr->Write();
1782 rootfile->mkdir("gConeFluc");
1783 rootfile->cd("gConeFluc");
1784 for(Int_t k=0;k<3;k++){
1786 sprintf(name,"toward");
1788 sprintf(name,"away");
1790 sprintf(name,"transverse");
1793 for(Int_t j=0;j<nclasses;j++){
1794 TGraph *graphall=new TGraph(10);
1795 TGraph *graphlow=new TGraph(10);
1796 TGraph *graphlow1=new TGraph(10);
1797 TGraph *graphlow2=new TGraph(10);
1798 TGraph *graphlow3=new TGraph(10);
1799 TGraph *graphlow4=new TGraph(10);
1800 for(Int_t i=0;i<10;i++) {
1801 graphall->SetPoint(i,grxet[i],gretall[k][j][i]);
1802 graphlow->SetPoint(i,grxet[i],gretlow[k][j][i]);
1803 graphlow1->SetPoint(i,grxet[i],gretlow1[k][j][i]);
1804 graphlow2->SetPoint(i,grxet[i],gretlow2[k][j][i]);
1805 graphlow3->SetPoint(i,grxet[i],gretlow3[k][j][i]);
1806 graphlow4->SetPoint(i,grxet[i],gretlow4[k][j][i]);
1808 sprintf(dummy,"%s-gretall%d",name,j);
1809 graphall->Write(dummy);
1810 sprintf(dummy,"%s-gretlow%d",name,j);
1811 graphlow->Write(dummy);
1812 sprintf(dummy,"%s-gret2low%d",name,j);
1813 graphlow->Write(dummy);
1814 sprintf(dummy,"%s-gret1low%d",name,j);
1815 graphlow1->Write(dummy);
1816 sprintf(dummy,"%s-gret3low%d",name,j);
1817 graphlow2->Write(dummy);
1818 sprintf(dummy,"%s-gret4low%d",name,j);
1819 graphlow3->Write(dummy);
1820 sprintf(dummy,"%s-gret5low%d",name,j);
1821 graphlow4->Write(dummy);
1831 rootfile->mkdir("gShape");
1832 rootfile->cd("gShape");
1833 for(Int_t k=0;k<3;k++){
1835 sprintf(name,"toward");
1837 sprintf(name,"away");
1839 sprintf(name,"transverse");
1842 for(Int_t j=0;j<nclasses;j++){
1843 TGraph *graphall=new TGraph(10);
1844 TGraph *graphlow=new TGraph(10);
1845 TGraph *graphlow1=new TGraph(10);
1846 TGraph *graphlow2=new TGraph(10);
1847 TGraph *graphlow3=new TGraph(10);
1848 TGraph *graphlow4=new TGraph(10);
1849 for(Int_t i=0;i<10;i++) {
1850 graphall->SetPoint(i,gdrxet[i],gdretall[k][j][i]/deltaR);
1851 graphlow->SetPoint(i,gdrxet[i],gdretlow[k][j][i]/deltaR);
1852 graphlow1->SetPoint(i,gdrxet[i],gdretlow1[k][j][i]/deltaR);
1853 graphlow2->SetPoint(i,gdrxet[i],gdretlow2[k][j][i]/deltaR);
1854 graphlow3->SetPoint(i,gdrxet[i],gdretlow3[k][j][i]/deltaR);
1855 graphlow4->SetPoint(i,gdrxet[i],gdretlow4[k][j][i]/deltaR);
1857 sprintf(dummy,"%s-gretall%d",name,j);
1858 graphall->Write(dummy);
1859 sprintf(dummy,"%s-gretlow%d",name,j);
1860 graphlow->Write(dummy);
1861 sprintf(dummy,"%s-gret2low%d",name,j);
1862 graphlow->Write(dummy);
1863 sprintf(dummy,"%s-gret1low%d",name,j);
1864 graphlow1->Write(dummy);
1865 sprintf(dummy,"%s-gret3low%d",name,j);
1866 graphlow2->Write(dummy);
1867 sprintf(dummy,"%s-gret4low%d",name,j);
1868 graphlow3->Write(dummy);
1869 sprintf(dummy,"%s-gret5low%d",name,j);
1870 graphlow4->Write(dummy);
1880 rootfile->mkdir("gDiConeFluc");
1881 rootfile->cd("gDiConeFluc");
1882 for(Int_t k=0;k<3;k++){
1884 sprintf(name,"toward");
1886 sprintf(name,"away");
1888 sprintf(name,"transverse");
1891 for(Int_t j=0;j<nclasses;j++){
1892 TGraph *graphall=new TGraph(10);
1893 TGraph *graphlow=new TGraph(10);
1894 TGraph *graphlow1=new TGraph(10);
1895 TGraph *graphlow2=new TGraph(10);
1896 TGraph *graphlow3=new TGraph(10);
1897 TGraph *graphlow4=new TGraph(10);
1898 for(Int_t i=0;i<10;i++) {
1899 graphall->SetPoint(i,grxet[i],gdiretall[k][j][i]);
1900 graphlow->SetPoint(i,grxet[i],gdiretlow[k][j][i]);
1901 graphlow1->SetPoint(i,grxet[i],gdiretlow1[k][j][i]);
1902 graphlow2->SetPoint(i,grxet[i],gdiretlow2[k][j][i]);
1903 graphlow3->SetPoint(i,grxet[i],gdiretlow3[k][j][i]);
1904 graphlow4->SetPoint(i,grxet[i],gdiretlow4[k][j][i]);
1906 sprintf(dummy,"%s-gretall%d",name,j);
1907 graphall->Write(dummy);
1908 sprintf(dummy,"%s-gretlow%d",name,j);
1909 graphlow->Write(dummy);
1910 sprintf(dummy,"%s-gret2low%d",name,j);
1911 graphlow->Write(dummy);
1912 sprintf(dummy,"%s-gret1low%d",name,j);
1913 graphlow1->Write(dummy);
1914 sprintf(dummy,"%s-gret3low%d",name,j);
1915 graphlow2->Write(dummy);
1916 sprintf(dummy,"%s-gret4low%d",name,j);
1917 graphlow3->Write(dummy);
1918 sprintf(dummy,"%s-gret5low%d",name,j);
1919 graphlow4->Write(dummy);
1929 rootfile->mkdir("gDiShape");
1930 rootfile->cd("gDiShape");
1931 for(Int_t k=0;k<3;k++){
1933 sprintf(name,"toward");
1935 sprintf(name,"away");
1937 sprintf(name,"transverse");
1940 for(Int_t j=0;j<nclasses;j++){
1941 TGraph *graphall=new TGraph(10);
1942 TGraph *graphlow=new TGraph(10);
1943 TGraph *graphlow1=new TGraph(10);
1944 TGraph *graphlow2=new TGraph(10);
1945 TGraph *graphlow3=new TGraph(10);
1946 TGraph *graphlow4=new TGraph(10);
1947 for(Int_t i=0;i<10;i++) {
1948 graphall->SetPoint(i,gdrxet[i],gdidretall[k][j][i]/deltaR);
1949 graphlow->SetPoint(i,gdrxet[i],gdidretlow[k][j][i]/deltaR);
1950 graphlow1->SetPoint(i,gdrxet[i],gdidretlow1[k][j][i]/deltaR);
1951 graphlow2->SetPoint(i,gdrxet[i],gdidretlow2[k][j][i]/deltaR);
1952 graphlow3->SetPoint(i,gdrxet[i],gdidretlow3[k][j][i]/deltaR);
1953 graphlow4->SetPoint(i,gdrxet[i],gdidretlow4[k][j][i]/deltaR);
1955 sprintf(dummy,"%s-gretall%d",name,j);
1956 graphall->Write(dummy);
1957 sprintf(dummy,"%s-gretlow%d",name,j);
1958 graphlow->Write(dummy);
1959 sprintf(dummy,"%s-gret2low%d",name,j);
1960 graphlow->Write(dummy);
1961 sprintf(dummy,"%s-gret1low%d",name,j);
1962 graphlow1->Write(dummy);
1963 sprintf(dummy,"%s-gret3low%d",name,j);
1964 graphlow2->Write(dummy);
1965 sprintf(dummy,"%s-gret4low%d",name,j);
1966 graphlow3->Write(dummy);
1967 sprintf(dummy,"%s-gret5low%d",name,j);
1968 graphlow4->Write(dummy);
1978 rootfile->mkdir("gFragLeadingPt");
1979 rootfile->cd("gFragLeadingPt");
1980 for(Int_t k=0;k<3;k++){
1981 for(Int_t i=0;i<nclasses;i++){
1982 nents=(Int_t)hgJetFragLeadingPt[k][i]->GetEntries();
1984 //cout << "hJetFragLeadingPt " << i << ": " << nents << " entries in histogram" << endl;
1985 hgJetFragLeadingPt[k][i]->SetLineWidth(3);
1986 hgJetFragLeadingPt[k][i]->Write();
1992 rootfile->mkdir("gFragLong");
1993 rootfile->cd("gFragLong");
1994 for(Int_t k=0;k<3;k++){
1995 for(Int_t i=0;i<nclasses;i++){
1996 nents=(Int_t)hgJetFragL[k][i]->GetEntries();
1998 //cout << "hgJetFragL " << i << ": " << nents << " entries in histogram " << endl;
1999 hgJetFragL[k][i]->SetLineWidth(3);
2000 hgJetFragL[k][i]->Write();
2006 rootfile->mkdir("gFragPL");
2007 rootfile->cd("gFragPL");
2008 for(Int_t k=0;k<3;k++){
2009 for(Int_t i=0;i<nclasses;i++){
2010 nents=(Int_t)hgJetFragPL[k][i]->GetEntries();
2012 //cout << "hJetFragPL " << i << ": " << nents << " entries in histogram " << endl;
2013 hgJetFragPL[k][i]->SetLineWidth(3);
2014 hgJetFragPL[k][i]->Write();
2020 rootfile->mkdir("gFragTrans");
2021 rootfile->cd("gFragTrans");
2022 for(Int_t k=0;k<3;k++){
2023 for(Int_t i=0;i<nclasses;i++){
2024 nents=(Int_t)hgJetFragT[k][i]->GetEntries();
2026 //cout << "hJetFragT " << i << ": " << nents << " entries in histogram" << endl;
2027 hgJetFragT[k][i]->SetLineWidth(3);
2028 hgJetFragT[k][i]->Write();
2034 rootfile->mkdir("gDiFragLeadingPt");
2035 rootfile->cd("gDiFragLeadingPt");
2036 for(Int_t k=0;k<3;k++){
2037 for(Int_t i=0;i<nclasses;i++){
2038 nents=(Int_t)hgDiJetFragLeadingPt[k][i]->GetEntries();
2040 //cout << "hJetFragLeadingPt " << i << ": " << nents << " entries in histogram" << endl;
2041 hgDiJetFragLeadingPt[k][i]->SetLineWidth(3);
2042 hgDiJetFragLeadingPt[k][i]->Write();
2048 rootfile->mkdir("gDiFragLong");
2049 rootfile->cd("gDiFragLong");
2050 for(Int_t k=0;k<3;k++){
2051 for(Int_t i=0;i<nclasses;i++){
2052 nents=(Int_t)hgDiJetFragL[k][i]->GetEntries();
2054 //cout << "hgDiJetFragL " << i << ": " << nents << " entries in histogram " << endl;
2055 hgDiJetFragL[k][i]->SetLineWidth(3);
2056 hgDiJetFragL[k][i]->Write();
2062 rootfile->mkdir("gDiFragPL");
2063 rootfile->cd("gDiFragPL");
2064 for(Int_t k=0;k<3;k++){
2065 for(Int_t i=0;i<nclasses;i++){
2066 nents=(Int_t)hgDiJetFragPL[k][i]->GetEntries();
2068 //cout << "hgDJetFragPL " << i << ": " << nents << " entries in histogram " << endl;
2069 hgDiJetFragPL[k][i]->SetLineWidth(3);
2070 hgDiJetFragPL[k][i]->Write();
2076 rootfile->mkdir("gDiFragTrans");
2077 rootfile->cd("gDiFragTrans");
2078 for(Int_t k=0;k<3;k++){
2079 for(Int_t i=0;i<nclasses;i++){
2080 nents=(Int_t)hgDiJetFragT[k][i]->GetEntries();
2082 //cout << "hJetFragT " << i << ": " << nents << " entries in histogram" << endl;
2083 hgDiJetFragT[k][i]->SetLineWidth(3);
2084 hgDiJetFragT[k][i]->Write();
2091 rootfile->mkdir("reconstruction");
2092 rootfile->cd("reconstruction");
2094 nents=(Int_t)hJetEtres->GetEntries();
2096 cout << "hJetEtres " << nents << " entries in histogram" << endl;
2097 hJetEtres->SetLineWidth(3);
2101 nents=(Int_t)hJetEtratio->GetEntries();
2103 cout << "hJetEtratio " << nents << " entries in histogram" << endl;
2104 hJetEtratio->SetLineWidth(3);
2105 hJetEtratio->Write();
2108 nents=(Int_t)hJetEtrestrue->GetEntries();
2110 cout << "hJetEtrestrue " << nents << " entries in histogram" << endl;
2111 hJetEtrestrue->SetLineWidth(3);
2112 hJetEtrestrue->Write();
2115 nents=(Int_t)hJetEtresTrigger->GetEntries();
2117 cout << "hJetEtresTrigger " << nents << " entries in histogram" << endl;
2118 hJetEtresTrigger->SetLineWidth(3);
2119 hJetEtresTrigger->Write();
2122 nents=(Int_t)hAxesDiffres->GetEntries();
2124 cout << "hAxesDiffres " << nents << " entries in histogram" << endl;
2125 hAxesDiffres->SetLineWidth(3);
2126 hAxesDiffres->Write();
2129 nents=(Int_t)hPhires->GetEntries();
2131 cout << "hPhires " << nents << " entries in histogram" << endl;
2132 hPhires->SetLineWidth(3);
2136 nents=(Int_t)hEtares->GetEntries();
2138 cout << "hEtares " << nents << " entries in histogram" << endl;
2139 hEtares->SetLineWidth(3);
2143 nents=(Int_t)hEtMonteres->GetEntries();
2145 cout << "hEtMonteres " << nents << " entries in histogram" << endl;
2146 hEtMonteres->SetLineWidth(3);
2147 hEtMonteres->Write();
2150 nents=(Int_t)hEtaMonteres->GetEntries();
2152 cout << "hEtaMonteres " << nents << " entries in histogram" << endl;
2153 hEtaMonteres->SetLineWidth(3);
2154 hEtaMonteres->Write();
2157 nents=(Int_t)hPhiMonteres->GetEntries();
2159 cout << "hPhiMonteres " << nents << " entries in histogram" << endl;
2160 hPhiMonteres->SetLineWidth(3);
2161 hPhiMonteres->Write();
2164 nents=(Int_t)hEtMonteratio->GetEntries();
2166 cout << "hEtMonteratio " << nents << " entries in histogram" << endl;
2167 hEtMonteratio->SetLineWidth(3);
2168 hEtMonteratio->Write();
2171 nents=(Int_t)hmJetEtres->GetEntries();
2173 cout << "hmJetEtres " << nents << " entries in histogram" << endl;
2174 hmJetEtres->SetLineWidth(3);
2175 hmJetEtres->Write();
2178 nents=(Int_t)hmJetEtratio->GetEntries();
2180 cout << "hmJetEtratio " << nents << " entries in histogram" << endl;
2181 hmJetEtratio->SetLineWidth(3);
2182 hmJetEtratio->Write();
2185 nents=(Int_t)hmJetEtrestrue->GetEntries();
2187 cout << "hmJetEtrestrue " << nents << " entries in histogram" << endl;
2188 hmJetEtrestrue->SetLineWidth(3);
2189 hmJetEtrestrue->Write();
2192 nents=(Int_t)hmAxesDiffres->GetEntries();
2194 cout << "hmAxesDiffres " << nents << " entries in histogram" << endl;
2195 hmAxesDiffres->SetLineWidth(3);
2196 hmAxesDiffres->Write();
2199 nents=(Int_t)hmPhires->GetEntries();
2201 cout << "hmPhires " << nents << " entries in histogram" << endl;
2202 hmPhires->SetLineWidth(3);
2206 nents=(Int_t)hmEtares->GetEntries();
2208 cout << "hmEtares " << nents << " entries in histogram" << endl;
2209 hmEtares->SetLineWidth(3);
2214 rootfile->mkdir("trigger");
2215 rootfile->cd("trigger");
2216 for(Int_t i=0;i<9;i++){
2217 hJetEttrigger[i]->Write();
2218 hJetEttrigger2[i]->Write();
2220 hJetEttriggernorm->Write();
2224 TGraph *graph=new TGraph(nclasses+1);
2225 cout << "Good jets counters" << endl;
2226 for(Int_t i=0;i<nclasses;i++){
2227 cout << i << " " << nclGoodEvents[i] << endl;
2228 graph->SetPoint(i,i,nclGoodEvents[i]);
2230 graph->SetPoint(nclasses,nclasses,nTotalEvents);
2231 cout << nclasses << " " << nTotalEvents << endl;
2232 graph->Write("ggoodevents");
2234 graph=new TGraph(nclasses+1);
2235 for(Int_t i=0;i<nclasses;i++){
2236 //cout << i << " " << nclLeadEvents[i] << endl;
2237 graph->SetPoint(i,i,nclLeadEvents[i]);
2239 graph->SetPoint(nclasses,nclasses,nTotalEvents);
2240 graph->Write("ggoodlead");
2242 graph=new TGraph(nclasses+1);
2243 for(Int_t i=0;i<nclasses;i++){
2244 //cout << i << " " << nclDiEvents[i] << endl;
2245 graph->SetPoint(i,i,nclDiEvents[i]);
2247 graph->SetPoint(nclasses,nclasses,nTotalEvents);
2248 graph->Write("ggooddilead");
2251 //close the result file
2259 delete hBackJetEttrue;
2260 delete hJetEtalltrue;
2261 delete hJetEtTrigger;
2262 delete hJetEtUQTrigger;
2263 delete hJetEtvsTrigger;
2264 delete hJetEtvsUQTrigger;
2268 delete hPartEtaDist;
2269 delete hPartPhiDist;
2270 delete hPartPhiCorr;
2272 delete hPartDiACorr;
2273 delete hPartDiPhiCorr;
2276 for(Int_t i=0;i<3;i++) delete hJettype[i];
2279 delete hJetEtallvsEll;
2284 delete hJetEtrestrue;
2285 delete hJetEtresTrigger;
2286 delete hAxesDiffres;
2290 delete hmJetEtratio;
2291 delete hmJetEtrestrue;
2292 delete hmAxesDiffres;
2295 delete hPhiMonteres;
2296 delete hEtaMonteres;
2298 delete hEtMonteratio;
2300 for(Int_t i=0;i<nclasses;i++) delete hJetLeadingPt[i];
2301 delete[] hJetLeadingPt;
2302 for(Int_t i=0;i<nclasses;i++) delete hJetFragLeadingPt[i];
2303 delete[] hJetFragLeadingPt;
2304 for(Int_t i=0;i<nclasses;i++) delete hJetLeadingPtDist[i];
2305 delete[] hJetLeadingPtDist;
2306 for(Int_t i=0;i<nclasses;i++) delete hJetFragL[i];
2308 for(Int_t i=0;i<nclasses;i++) delete hJetFragPL[i];
2309 delete[] hJetFragPL;
2310 for(Int_t i=0;i<nclasses;i++) delete hJetFragT[i];
2312 for(Int_t i=0;i<nclasses;i++) delete hJetFragPt[i];
2313 delete[] hJetFragPt;
2314 for(Int_t i=0;i<nclasses;i++) delete hJetN[i];
2316 for(Int_t i=0;i<nclasses;i++) delete hJetMeanPt[i];
2317 delete[] hJetMeanPt;
2318 for(Int_t i=0;i<nclasses;i++) delete hPhiCorr[i];
2321 for(Int_t k=0;k<3;k++){
2322 for(Int_t i=0;i<nclasses;i++){
2323 delete hgJetFragLeadingPt[k][i];
2324 delete hgJetFragL[k][i];
2325 delete hgJetFragPL[k][i];
2326 delete hgJetFragT[k][i];
2327 delete hgJetFragPt[k][i];
2329 delete[] hgJetFragLeadingPt[k];
2330 delete[] hgJetFragL[k];
2331 delete[] hgJetFragPL[k];
2332 delete[] hgJetFragT[k];
2333 delete[] hgJetFragPt[k];
2335 delete[] hgJetFragLeadingPt;
2336 delete[] hgJetFragL;
2337 delete[] hgJetFragPL;
2338 delete[] hgJetFragT;
2339 delete[] hgJetFragPt;
2341 for(Int_t k=0;k<3;k++){
2342 for(Int_t i=0;i<nclasses;i++){
2343 delete hgDiJetFragLeadingPt[k][i];
2344 delete hgDiJetFragL[k][i];
2345 delete hgDiJetFragPL[k][i];
2346 delete hgDiJetFragT[k][i];
2347 delete hgDiJetFragPt[k][i];
2349 delete[] hgDiJetFragLeadingPt[k];
2350 delete[] hgDiJetFragL[k];
2351 delete[] hgDiJetFragPL[k];
2352 delete[] hgDiJetFragT[k];
2353 delete[] hgDiJetFragPt[k];
2355 delete[] hgDiJetFragLeadingPt;
2356 delete[] hgDiJetFragL;
2357 delete[] hgDiJetFragPL;
2358 delete[] hgDiJetFragT;
2359 delete[] hgDiJetFragPt;
2361 for(Int_t i=0;i<9;i++){
2362 delete hJetEttrigger[i];
2363 delete hJetEttrigger2[i];
2365 delete[] hJetEttrigger;
2366 delete[] hJetEttrigger2;
2367 delete hJetEttriggernorm;
2371 //------------------------------------------------------------------
2373 Float_t relphi(Float_t phi1, Float_t phi2)
2375 Float_t ret=TMath::Abs(phi1-phi2);
2376 if(ret>TMath::Pi()) ret=TMath::TwoPi()-ret;
2380 Float_t addphi(Float_t phi1, Float_t phi2)
2382 Float_t addphi=phi1+phi2;
2383 if(addphi>TMath::TwoPi()) addphi-=TMath::TwoPi();
2384 else if(addphi<0) addphi+=TMath::TwoPi();
2388 Float_t diffphi(Float_t phi1, Float_t phi2)
2389 { //and move correlation to pi/2
2390 Float_t diffphi=TMath::Pi()/2+phi1-phi2;
2391 if(diffphi>TMath::TwoPi()) diffphi-=TMath::TwoPi();
2392 else if(diffphi<0) diffphi+=TMath::TwoPi();
2396 Int_t eventindex(Float_t phi1, Float_t phi2)
2398 Int_t ret=0; //toward (300 - 60)
2399 Float_t dphi=addphi(phi1,-phi2);
2400 const Float_t slice=TMath::Pi()/3.;
2401 if (dphi>1*slice && dphi < 2*slice)
2402 ret=2; //transverse (60-120)
2403 else if (dphi>4*slice && dphi < 5*slice)
2404 ret=3; //transverse (240-300)
2405 else if(dphi>=2*slice && dphi<=4*slice)
2406 ret=1; //away side (120-200)
2411 void convert(Float_t pjet[4], Float_t &pt, Float_t &theta, Float_t &eta, Float_t &phi)
2413 pt=TMath::Sqrt(pjet[0]*pjet[0]+pjet[1]*pjet[1]);
2414 theta=TMath::ATan2(pt,pjet[2]);
2415 eta=-TMath::Log(TMath::Tan(theta/2));
2416 phi=TMath::Pi()+TMath::ATan2(-pjet[1],-pjet[0]);