]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - PWGCF/Correlations/JCORRAN/AliJJetJtAnalysis.cxx
histogram title fix and jetjt update from beomkyu
[u/mrichter/AliRoot.git] / PWGCF / Correlations / JCORRAN / AliJJetJtAnalysis.cxx
... / ...
CommitLineData
1/**************************************************************************
2 * Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16// Comment describing what this class does needed!
17
18//===========================================================
19// Dummy comment, should be replaced by a real one
20// comment
21// comment
22// Simple class for the jt anlyais by Beomkyu Kim and Dongjo Kim
23//===========================================================
24
25#include <TRandom.h>
26#include <TMath.h>
27#include <TRegexp.h>
28#include <TVector.h>
29#include "AliJJet.h"
30#include "AliJEfficiency.h"
31#include "AliJJetJtAnalysis.h"
32#include "AliJHistManager.h"
33#include "TClonesArray.h"
34
35AliJJetJtAnalysis::AliJJetJtAnalysis():
36 fInputList(NULL)
37 , fJetList(NULL)
38 , fJetListOfList()
39 //, fJetBgList(NULL)
40 , fJetBgListOfList()
41 , fJetTriggPtBorders(NULL)
42 , fJetConstPtLowLimits(NULL)
43 , fJetAssocPtBorders(NULL)
44 , fDeltaRBorders(NULL)
45 , nJetContainer(0)
46 , fCard(NULL)
47 , fJJetAnalysis(NULL)
48 , fJetFinderName(0)
49 , fConeSizes(0)
50 , fEfficiency(0x0)
51 , cBin(-1)
52 , fcent(-999)
53 , zBin(-1)
54 , zVert(-999)
55 , fTracks(NULL)
56 , fHMG(NULL)
57 , fJetFinderBin()
58 , fJetTriggerBin()
59 , fTrkPtBin()
60 , fTrkLimPtBin()
61 , fdRBin()
62 , fhNumber()
63 , fhKNumber()
64 , fhJetPt()
65 , fhJetPtBin()
66 , fhZ()
67 , fhZBin()
68 , fhJt()
69 , fhJtBin()
70 , fhJtWeightBin()
71 , fhLogJtWeightBin()
72 , fhJtWithPtCutWeightBinBin()
73 , fhLogJtWithPtCutWeightBinBin()
74 , fhJtBinLimBin()
75 , fhJtWeightBinLimBin()
76 , fhLogJtWeightBinLimBin()
77 , fhJetBgPt()
78 , fhJetBgPtBin()
79 , fhBgZ()
80 , fhBgZBin()
81 , fhBgJt()
82 , fhBgJtBin()
83 , fhBgJtWeightBin()
84 , fhBgLogJtWeightBin()
85 , fhBgJtWithPtCutWeightBinBin()
86 , fhBgLogJtWithPtCutWeightBinBin()
87 , fhdeltaE()
88 , fhdeltaN()
89 , fhFullJetEChJetBin()
90 , fhFullChdRChJetBin()
91 , fh2DFullEvsChEdN0()
92 , fh2DFullEvsChEdNnot0()
93{
94
95}
96
97AliJJetJtAnalysis::AliJJetJtAnalysis( AliJCard * card ):
98 fInputList(NULL)
99 , fJetList(NULL)
100 , fJetListOfList()
101 //, fJetBgList(NULL)
102 , fJetBgListOfList()
103 , fJetTriggPtBorders(NULL)
104 , fJetConstPtLowLimits(NULL)
105 , fJetAssocPtBorders(NULL)
106 , fDeltaRBorders(NULL)
107 , nJetContainer(0)
108 , fCard(card)
109 , fJJetAnalysis(NULL)
110 , fJetFinderName(0)
111 , fConeSizes(0)
112 , fEfficiency(0x0)
113 , cBin(-1)
114 , fcent(-999)
115 , zBin(-1)
116 , zVert(-999)
117 , fTracks(NULL)
118 , fHMG(NULL)
119 , fJetFinderBin()
120 , fJetTriggerBin()
121 , fTrkPtBin()
122 , fTrkLimPtBin()
123 , fdRBin()
124 , fhNumber()
125 , fhKNumber()
126 , fhJetPt()
127 , fhJetPtBin()
128 , fhZ()
129 , fhZBin()
130 , fhJt()
131 , fhJtBin()
132 , fhJtWeightBin()
133 , fhLogJtWeightBin()
134 , fhJtWithPtCutWeightBinBin()
135 , fhLogJtWithPtCutWeightBinBin()
136 , fhJtBinLimBin()
137 , fhJtWeightBinLimBin()
138 , fhLogJtWeightBinLimBin()
139 , fhJetBgPt()
140 , fhJetBgPtBin()
141 , fhBgZ()
142 , fhBgZBin()
143 , fhBgJt()
144 , fhBgJtBin()
145 , fhBgJtWeightBin()
146 , fhBgLogJtWeightBin()
147 , fhBgJtWithPtCutWeightBinBin()
148 , fhBgLogJtWithPtCutWeightBinBin()
149 , fhdeltaE()
150 , fhdeltaN()
151 , fhFullJetEChJetBin()
152 , fhFullChdRChJetBin()
153 , fh2DFullEvsChEdN0()
154 , fh2DFullEvsChEdNnot0()
155{
156
157}
158
159AliJJetJtAnalysis::AliJJetJtAnalysis(const AliJJetJtAnalysis& ap) :
160 fInputList(ap.fInputList)
161 , fJetList(ap.fJetList)
162 , fJetListOfList(ap.fJetListOfList)
163 //, fJetBgList(ap.fJetBgList)
164 , fJetBgListOfList(ap.fJetBgListOfList)
165 , fJetTriggPtBorders(ap.fJetTriggPtBorders)
166 , fJetConstPtLowLimits(ap.fJetConstPtLowLimits)
167 , fJetAssocPtBorders(ap.fJetAssocPtBorders)
168 , fDeltaRBorders(ap.fDeltaRBorders)
169 , nJetContainer(ap.nJetContainer)
170 , fCard(ap.fCard)
171 , fJJetAnalysis(ap.fJJetAnalysis)
172 , fJetFinderName(ap.fJetFinderName)
173 , fConeSizes(ap.fConeSizes)
174 , fEfficiency(ap.fEfficiency)
175 , cBin(-1)
176 , fcent(-999)
177 , zBin(-1)
178 , zVert(-999)
179 , fTracks(ap.fTracks)
180 , fHMG(ap.fHMG)
181 , fJetFinderBin(ap.fJetFinderBin)
182 , fJetTriggerBin(ap.fJetTriggerBin)
183 , fTrkPtBin(ap.fTrkPtBin)
184 , fTrkLimPtBin(ap.fTrkLimPtBin)
185 , fdRBin(ap.fdRBin)
186 , fhNumber(ap.fhNumber)
187 , fhKNumber(ap.fhKNumber)
188 , fhJetPt(ap.fhJetPt)
189 , fhJetPtBin(ap.fhJetPtBin)
190 , fhZ(ap.fhZ)
191 , fhZBin(ap.fhZBin)
192 , fhJt(ap.fhJt)
193 , fhJtBin(ap.fhJtBin)
194 , fhJtWeightBin(ap.fhJtWeightBin)
195 , fhLogJtWeightBin(ap.fhLogJtWeightBin)
196 , fhJtWithPtCutWeightBinBin(ap.fhJtWithPtCutWeightBinBin)
197 , fhLogJtWithPtCutWeightBinBin(ap.fhLogJtWithPtCutWeightBinBin)
198 , fhJtBinLimBin(ap.fhJtBinLimBin)
199 , fhJtWeightBinLimBin(ap.fhJtWeightBinLimBin)
200 , fhLogJtWeightBinLimBin(ap.fhLogJtWeightBinLimBin)
201 , fhJetBgPt(ap.fhJetBgPt)
202 , fhJetBgPtBin(ap.fhJetBgPtBin)
203 , fhBgZ(ap.fhBgZ)
204 , fhBgZBin(ap.fhBgZBin)
205 , fhBgJt(ap.fhBgJt)
206 , fhBgJtBin(ap.fhBgJtBin)
207 , fhBgJtWeightBin(ap.fhBgJtWeightBin)
208 , fhBgLogJtWeightBin(ap.fhBgLogJtWeightBin)
209 , fhBgJtWithPtCutWeightBinBin(ap.fhBgJtWithPtCutWeightBinBin)
210 , fhBgLogJtWithPtCutWeightBinBin(ap.fhBgLogJtWithPtCutWeightBinBin)
211 , fhdeltaE(ap.fhdeltaE)
212 , fhdeltaN(ap.fhdeltaN)
213 , fhFullJetEChJetBin(ap.fhFullJetEChJetBin)
214 , fhFullChdRChJetBin(ap.fhFullChdRChJetBin)
215 , fh2DFullEvsChEdN0(ap.fh2DFullEvsChEdN0)
216 , fh2DFullEvsChEdNnot0(ap.fh2DFullEvsChEdNnot0)
217{
218
219}
220
221AliJJetJtAnalysis& AliJJetJtAnalysis::operator = (const AliJJetJtAnalysis& ap)
222{
223 // assignment operator
224
225 this->~AliJJetJtAnalysis();
226 new(this) AliJJetJtAnalysis(ap);
227 return *this;
228}
229
230
231AliJJetJtAnalysis::~AliJJetJtAnalysis(){
232
233
234 delete fJJetAnalysis;
235 fJetFinderName.clear();
236 fConeSizes.clear();
237 delete fEfficiency;
238 delete fHMG;
239
240
241
242}
243
244
245
246void AliJJetJtAnalysis::UserCreateOutputObjects(){
247 //fJetListOfList always point one address in the whole time of this analysis.
248 //Thus mustn't be cleared in it's life.
249 //fJetListOfList.Clear();
250
251
252 fJJetAnalysis = new AliJJetAnalysis();
253
254 fJetTriggPtBorders = fCard->GetVector("JetTriggPtBorders");
255 fJetConstPtLowLimits = fCard->GetVector("JetConstPtLowLimits");
256 fJetAssocPtBorders = fCard->GetVector("JetAssocPtBorders");
257 fDeltaRBorders = fCard->GetVector("DeltaRBorders");
258
259 fEfficiency = new AliJEfficiency();
260 fEfficiency->SetMode( fCard->Get("EfficiencyMode") ); // 0:NoEff, 1:Period 2:RunNum 3:Auto
261 fEfficiency->SetDataPath("alien:///alice/cern.ch/user/d/djkim/legotrain/efficieny/data"); // Efficiency root file location local or alien
262
263 TRegexp reg("R[0-9][0-9][0-9]");
264 TRegexp reg2("[0-9][0-9][0-9]");
265
266 //container name has information of cone size like **R040**
267 //this cone size information will be pulled to a numerical variable
268 nJetContainer = fJetFinderName.size();
269 fJetBgListOfList.resize(nJetContainer, TClonesArray("AliJJet",100));
270 for (int i=0; i<nJetContainer; i++){
271 //AliJJetJtHistos *histo = new AliJJetJtHistos(fCard);
272 //histo->CreateJetJtHistos();
273 // fHistos.push_back( histo );
274 TString fullNameOfiJetContainer(fJetFinderName[i]);
275 TString coneSizeName (fullNameOfiJetContainer(reg));
276 TString coneSizeValue (coneSizeName(reg2));
277 fConeSizes.push_back( (double) coneSizeValue.Atoi()/100.);
278 }
279
280
281 int NBINS=150;
282 double LogBinsX[NBINS+1], LimL=0.1, LimH=150;
283 double logBW = (log(LimH)-log(LimL))/NBINS;
284 for(int ij=0;ij<=NBINS;ij++) LogBinsX[ij]=LimL*exp(ij*logBW);
285
286
287
288 fHMG = new AliJHistManager( "AliJJetJtHistManager");
289 fJetFinderBin .Set("JetFinderOrder","NFin","NFin:%d", AliJBin::kSingle).SetBin(nJetContainer);
290 fJetTriggerBin .Set("JetTriggerBin","JetPt","p_{T,jet} : %.1f - %.1f").SetBin(fCard->GetVector("JetTriggPtBorders"));
291 fTrkPtBin .Set("TrkPtBin","TrkPt","p_{T,constituent}:%.1f-%.1f").SetBin(fCard->GetVector("JetAssocPtBorders"));
292 fTrkLimPtBin .Set("TrkLimitPtBin","TrkLimitPt","p_{T,Limit}<%.1f", AliJBin::kSingle).SetBin(fJetConstPtLowLimits->GetNoElements());
293 fdRBin.Set("dRBin","dR","dR : %.1f - %.1f ").SetBin(fCard->GetVector("DeltaRBorders"));
294
295 fhNumber
296 << TH1D("hNumber","Number",6,0,6) << fJetFinderBin
297 <<"END";
298
299 fhKNumber
300 << TH1D("hKNumber","KNumber",17,0,17) << fJetFinderBin
301 <<"END";
302
303 fhJetPt
304 << TH1D("JetPt","",NBINS, LogBinsX ) << fJetFinderBin
305 <<"END";
306 fhJetPtBin
307 << TH1D("JetPtBin","",NBINS, LogBinsX ) << fJetFinderBin << fJetTriggerBin
308 <<"END";
309
310 int NBINSZ=150;
311 double LogBinsZ[NBINSZ+1], LimLZ=0.001, LimHZ=1.1;
312 double logBWZ = (TMath::Log(LimHZ)-TMath::Log(LimLZ))/NBINSZ;
313 for(int ij=0;ij<=NBINSZ;ij++) LogBinsZ[ij]=LimLZ*exp(ij*logBWZ);//
314
315 fhZ
316 << TH1D("Z","",NBINSZ, LogBinsZ ) << fJetFinderBin
317 <<"END";
318 fhZBin
319 << TH1D("ZBin","",NBINSZ, LogBinsZ ) << fJetFinderBin << fJetTriggerBin
320 <<"END";
321
322 int NBINSJt=150;
323 double LogBinsJt[NBINSJt+1], LimLJt=0.01, LimHJt=10;
324 double logBWJt = (TMath::Log(LimHJt)-TMath::Log(LimLJt))/NBINSJt;
325 for(int ij=0;ij<=NBINSJt;ij++) LogBinsJt[ij]=LimLJt*exp(ij*logBWJt);
326 int NBINSJtW=150;
327 double LimLJtW=TMath::Log(0.01), LimHJtW=TMath::Log(10);
328
329 fhJt
330 << TH1D("Jt","",NBINSJt, LogBinsJt ) << fJetFinderBin
331 <<"END";
332 fhJtBin
333 << TH1D("JtBin","",NBINSJt, LogBinsJt ) << fJetFinderBin << fJetTriggerBin
334 <<"END";
335 fhJtWeightBin
336 << TH1D("JtWeightBin","",NBINSJt, LogBinsJt ) << fJetFinderBin << fJetTriggerBin
337 <<"END";
338 fhLogJtWeightBin
339 << TH1D("LogJtWeightBin","",NBINSJtW, LimLJtW, LimHJtW ) << fJetFinderBin << fJetTriggerBin
340 <<"END";
341
342 fhJtWithPtCutWeightBinBin
343 << TH1D("JtWithPtCutWeightBinBin","",NBINSJt, LogBinsJt ) << fJetFinderBin << fJetTriggerBin << fTrkPtBin
344 <<"END";
345 fhLogJtWithPtCutWeightBinBin
346 << TH1D("LogJtWeightBinBin","",NBINSJtW, LimLJtW, LimHJtW ) << fJetFinderBin << fJetTriggerBin << fTrkPtBin
347 <<"END";
348
349 fhJtBinLimBin
350 << TH1D("JtBinLimBin","",NBINSJt, LogBinsJt ) << fJetFinderBin << fJetTriggerBin << fTrkLimPtBin
351 <<"END";
352 fhJtWeightBinLimBin
353 << TH1D("JtWeightBinLimBin","",NBINSJt, LogBinsJt ) << fJetFinderBin << fJetTriggerBin << fTrkLimPtBin
354 <<"END";
355 fhLogJtWeightBinLimBin
356 << TH1D("LogJtWeightBinLimBin","",NBINSJtW, LimLJtW, LimHJtW ) << fJetFinderBin << fJetTriggerBin << fTrkLimPtBin
357 <<"END";
358
359 fhJetBgPt
360 << TH1D("JetBgPt","",NBINS, LogBinsX ) << fJetFinderBin
361 <<"END";
362 fhJetBgPtBin
363 << TH1D("JetBgPtBin","",NBINS, LogBinsX ) << fJetFinderBin << fJetTriggerBin
364 <<"END";
365 fhBgZ
366 << TH1D("BgZ","",NBINSZ, LogBinsZ ) << fJetFinderBin
367 <<"END";
368 fhBgZBin
369 << TH1D("BgZBin","",NBINSZ, LogBinsZ ) << fJetFinderBin << fJetTriggerBin
370 <<"END";
371
372
373 fhBgJt
374 << TH1D("BgJt","",NBINSJt, LogBinsJt ) << fJetFinderBin
375 <<"END";
376 fhBgJtBin
377 << TH1D("BgJtBin","",NBINSJt, LogBinsJt ) << fJetFinderBin << fJetTriggerBin
378 <<"END";
379 fhBgJtWeightBin
380 << TH1D("BgJtWeightBin","",NBINSJt, LogBinsJt ) << fJetFinderBin << fJetTriggerBin
381 <<"END";
382 fhBgLogJtWeightBin
383 << TH1D("BgLogJtWeightBin","",NBINSJtW, LimLJtW, LimHJtW ) << fJetFinderBin << fJetTriggerBin
384 <<"END";
385
386 fhBgJtWithPtCutWeightBinBin
387 << TH1D("BgJtWithPtCutWeightBinBin","",NBINSJt, LogBinsJt ) << fJetFinderBin << fJetTriggerBin << fTrkPtBin
388 <<"END";
389 fhBgLogJtWithPtCutWeightBinBin
390 << TH1D("BgLogJtWeightBin","",NBINSJtW, LimLJtW, LimHJtW ) << fJetFinderBin << fJetTriggerBin << fTrkPtBin
391 <<"END";
392
393
394 int NBINSdeltaN=40;
395 double LimLdeltaN=-19.5, LimHdeltaN=19.5;
396 fhdeltaN
397 << TH1D("hdeltaN","",NBINSdeltaN,LimLdeltaN,LimHdeltaN )
398 << fJetTriggerBin << fdRBin <<"END";
399
400 int NBINSdeltaE=400;
401 double LimLdeltaE=-20, LimHdeltaE=20;
402 fhdeltaE
403 << TH1D("hdeltaE","",NBINSdeltaE,LimLdeltaE,LimHdeltaE )
404 << fJetTriggerBin << fdRBin <<"END";
405
406
407 fhFullJetEChJetBin
408 << TH1D("hFullJetEChJetBin","",NBINS, LogBinsX ) << fJetTriggerBin
409 <<"END";
410
411 int nDR = 1000;double xDR0= -10; double xDR1 = 10;
412 fhFullChdRChJetBin
413 << TH1D("hFullChdRChJetBin","",nDR,xDR0,xDR1) << fJetTriggerBin
414 <<"END";
415
416 fh2DFullEvsChEdN0
417 << TH2D("h2DFullEvsChEdN0","",NBINS, LogBinsX, NBINS, LogBinsX )
418 <<"END";
419
420 fh2DFullEvsChEdNnot0
421 << TH2D("h2DFullEvsChEdNnot0","",NBINS, LogBinsX, NBINS, LogBinsX )
422 <<"END";
423 fHMG->Print();
424 fHMG->WriteConfig();
425
426
427
428
429}
430
431void AliJJetJtAnalysis::ClearBeforeEvent(){
432 //fJetListOfList.Clear();
433
434
435}
436
437void AliJJetJtAnalysis::UserExec(){
438 for( int i=0;i<fJetListOfList.GetEntries();i++ ){
439 TObjArray * Jets = (TObjArray*) fJetListOfList[i];
440 if(!Jets) {
441 continue;
442 }
443 this->FillJtHistogram(Jets,i);
444 }
445
446
447 int iS1 = 0; //full 0.4
448 int iS2 = 3; //Ch 0.4
449 TObjArray * jetfinder1 = (TObjArray*) fJetListOfList[iS1];
450 TObjArray * jetfinder2 = (TObjArray*) fJetListOfList[iS2];
451 AliJJet *jet1 = NULL;
452 AliJJet *jet2 = NULL;
453 double deltaeta;
454 int chEbin=-1, rbin=-1;
455 int dN=-1000;
456 double dE=-1000.;
457 for (int ijet = 0; ijet<jetfinder1->GetEntriesFast(); ijet++){
458 jet1 = dynamic_cast<AliJJet*>( jetfinder1->At(ijet) );
459 if (!jet1) continue;
460 for (int jjet = 0; jjet<jetfinder2->GetEntriesFast(); jjet++){
461 cout<<"Check new system is working"<<endl;
462 cout<<"Check new system is working2"<<endl;
463 jet2 = dynamic_cast<AliJJet*>( jetfinder2->At(jjet) );
464 if (!jet2) continue;
465 chEbin = GetBin(fJetTriggPtBorders,jet2->E());
466 deltaeta = TMath::Abs(jet1->Eta()-jet2->Eta());
467 rbin = GetBin(fDeltaRBorders,deltaeta);
468 fJJetAnalysis->CompareTwoJets(jet1, jet2, dE, dN);
469 if (chEbin < 0 || rbin < 0 ) continue;
470 fhdeltaE[chEbin][rbin]->Fill(dE);
471 fhdeltaN[chEbin][rbin]->Fill(dN);
472 if (dN ==0) {
473 fhFullJetEChJetBin[chEbin]->Fill(jet1->E());
474 fhFullChdRChJetBin[chEbin]->Fill(jet1->DeltaR(*jet2));
475 fh2DFullEvsChEdN0->Fill(jet1->E(), jet2->E());
476 } else {
477 fh2DFullEvsChEdNnot0->Fill(jet1->E(), jet2->E());
478 }
479
480 }
481 }
482
483
484}
485
486void AliJJetJtAnalysis::WriteHistograms(){
487
488
489 TDirectory * cwd = gDirectory;
490 //const int nJetContainer = fJetListOfList.GetEntries();
491
492
493 for (int i=0; i<nJetContainer; i++){
494 TDirectory *nwd = gDirectory->mkdir(fJetFinderName[i]);
495 nwd->cd();
496 //fHistos[i]->WriteHistograms();
497 cwd->cd();
498 }
499
500
501}
502
503
504
505void AliJJetJtAnalysis::FillJtHistogram( TObjArray *Jets , int iContainer)
506{
507
508
509
510
511
512 int iBin, iptaBin=0;
513 int jBin=0;
514 double pT = 0;
515 double conPtMax =0;
516
517 double z; double jt;
518 double pta;
519 //double Y , deltaY = 0;
520 //double Phi, deltaPhi;
521 //double deltaR= 0;
522 //cout<<"histogram filling number of jets : "<<Jets->GetEntriesFast()<<endl;
523
524 TLorentzVector vOrtho;
525 fJetBgListOfList[iContainer].Clear();
526 TClonesArray & bgjets = fJetBgListOfList[iContainer];
527
528
529
530 int k = 0;
531 double deltaR = -1;
532 double deltaEta = -999;
533 double deltaPhi = -999;
534 double effCorrection = -1;
535 double thisConeSize = fConeSizes[iContainer] ;
536 int iBgJet = 0;
537
538 // iJet loop for an event
539 for (int i = 0; i<Jets->GetEntries(); i++){
540 AliJJet *jet = dynamic_cast<AliJJet*>( Jets->At(i) );
541 pT = jet->Pt();
542 if (pT<(*fJetTriggPtBorders)[1]) continue;
543 iBin = GetBin(fJetTriggPtBorders,pT); // fill jetPt histos
544 if( iBin < 0 ) continue;
545 fhJetPt[iContainer]->Fill( pT );
546 fhJetPtBin[iContainer][iBin]->Fill( pT );
547
548 for (int icon = 0; icon<jet->GetConstituents()->GetEntries(); icon++){
549 AliJBaseTrack *con = jet->GetConstituent(icon);
550 if (con->Pt()>conPtMax) conPtMax = con->Pt();
551 }
552
553 for (int ii = fJetConstPtLowLimits->GetNoElements(); ii >= 1 ; ii--) { // could also be done using GetBin( ... )
554 if (conPtMax > (*fJetConstPtLowLimits)[ii]) { // if JetConstPtLowLimits={a,...,b} -> ConPtBinBorders={a,...,b,c}
555 jBin = ii-1; // where c(>>b) is ''sufficiently'' high
556 break;
557 }
558 }
559
560
561 //iConstituent loop for the iJet
562 //jt, z are calcualted and filled
563 for (int icon = 0; icon<jet->GetConstituents()->GetEntries(); icon++){
564 AliJBaseTrack *constituent = jet->GetConstituent(icon);
565 z = (constituent->Vect()*jet->Vect().Unit())/jet->P();
566 pta = constituent->Pt();
567 constituent->SetTrackEff( fEfficiency->GetCorrection( pta, 5, fcent) );
568 effCorrection = 1.0/constituent->GetTrackEff();
569 iptaBin = GetBin(fJetAssocPtBorders, pta);
570 if( iptaBin < 0 ) continue;
571
572
573 fhZ[iContainer]->Fill( z , effCorrection);
574 fhZBin[iContainer][iBin]->Fill( z , effCorrection);
575 jt = (constituent->Vect()-z*jet->Vect()).Mag();
576 fhJt[iContainer]->Fill( jt , effCorrection);
577 fhJtBin[iContainer][iBin]->Fill( jt , effCorrection);
578 fhJtWeightBin[iContainer][iBin]->Fill( jt, 1.0/jt * effCorrection );
579 fhLogJtWeightBin[iContainer][iBin]->Fill( TMath::Log(jt), 1.0/jt * effCorrection );
580
581
582
583 if (iptaBin < 0) continue;
584 fhJtWithPtCutWeightBinBin[iContainer][iBin][iptaBin]->Fill( jt, 1.0/jt * effCorrection );
585 fhLogJtWithPtCutWeightBinBin[iContainer][iBin][iptaBin]->Fill( TMath::Log(jt), 1.0/jt * effCorrection);
586
587 for (int jj = 0; jj <= jBin ; jj++) {
588 fhJtBinLimBin[iContainer][iBin][jj]->Fill( jt, effCorrection );
589 fhJtWeightBinLimBin[iContainer][iBin][jj]->Fill( jt, 1.0/jt * effCorrection );
590 fhLogJtWeightBinLimBin[iContainer][iBin][jj]->Fill( TMath::Log(jt), 1.0/jt * effCorrection );
591 //histos->fHistosJT[0][0][iBin][jj]->Fill( TMath::Log(jt), 1.0/jt );
592 }
593
594 }
595
596
597
598 vOrtho.SetVect(jet->Vect().Orthogonal());
599 vOrtho.SetE(jet->E());
600 //if (Log) cout<<"Before R caluation, R = "<<TMath::Sqrt(it->area()/TMath::Pi())<<endl;
601 //R_area = TMath::Sqrt(it->area()/TMath::Pi())*Rs[order]/R;
602 //if (Log )cout<<"Rs[order] = "<<Rs[order]<<" R = "<<R<<" Bg R area : "<<R_area<<endl;
603
604 //Background jet (iBgJet) will be produced. This background jet is orthogonal to the iJet.
605 //If there is another jJet, then iBgJet will be consecutevely moved not to have jJet in the cone size.
606 if (Jets->GetEntries()>1){
607 fhNumber[iContainer]->Fill(3.5);
608 for (int j = 0; j<Jets->GetEntries(); j++){
609 if (i == j) continue;
610 AliJJet *jet2 = dynamic_cast<AliJJet*>( Jets->At(j) );
611
612 if (k>15) {
613 fhNumber[iContainer]->Fill(5.5);
614 break;
615 }
616
617
618 deltaEta = vOrtho.Eta() - jet2->Eta();
619 deltaPhi = vOrtho.Phi() - jet2->Phi();
620 deltaR = TMath::Sqrt(deltaEta*deltaEta + deltaPhi*deltaPhi);
621 if ( deltaR < thisConeSize) {
622
623 vOrtho.Rotate(TMath::Pi()/8, jet->Vect());
624 j=0;
625 k++;
626 fhNumber[iContainer]->Fill(4.5);
627 }
628
629 }
630 fhKNumber[iContainer]->Fill(k);
631 }
632
633 // Filling iBgJet, Bgjt and Bgz
634 // "k<16" means that we will select a iBgJet which hasn't moved
635 // more than 16 times by the process above
636 double maxconpt = 0;
637 if ( k<16 ){
638 new (bgjets[iBgJet]) AliJJet(vOrtho.Px(),vOrtho.Py(), vOrtho.Pz(), vOrtho.E(), i ,0,0);
639 AliJJet * jbg = (AliJJet*) fJetBgListOfList[iContainer][iBgJet];
640 iBgJet++;
641
642 pT = vOrtho.Pt();
643 if (pT<(*fJetTriggPtBorders)[1]) continue;
644
645 fhJetBgPt[iContainer]->Fill( pT );
646 //bbfHistos[iContainer]->fhJetBgPtWeight->Fill( pT, 1./pT);
647 iBin = GetBin(fJetTriggPtBorders, pT);
648 if( iBin < 0 ) continue;
649 fhJetBgPtBin[iContainer][iBin]->Fill( pT );
650
651
652 for (int icon = 0; icon<fTracks->GetEntries(); icon++){
653 AliJBaseTrack *track = dynamic_cast<AliJBaseTrack*>(fTracks->At(icon));
654 if (!track) continue;
655 deltaEta = vOrtho.Eta() - track->Eta();
656 deltaPhi = vOrtho.Phi() - track->Phi();
657 deltaR = TMath::Sqrt(deltaEta*deltaEta + deltaPhi*deltaPhi);
658 if ( deltaR > thisConeSize) continue;
659
660 jbg->AddConstituent(track);
661
662 pta = track->Pt();
663 if (pta > maxconpt) maxconpt = pta;
664 track->SetTrackEff( fEfficiency->GetCorrection( pta, 5, fcent) );
665 effCorrection = 1.0/track->GetTrackEff();
666 iptaBin = GetBin(fJetAssocPtBorders, pta);
667 if( iptaBin < 0 ) continue;
668
669
670 z = (track->Vect()*vOrtho.Vect().Unit())/vOrtho.P();
671 fhBgZ[iContainer]->Fill( z , effCorrection);
672 fhBgZBin[iContainer][iBin]->Fill( z , effCorrection);
673
674 jt = (track->Vect()-z*vOrtho.Vect()).Mag();
675 fhBgJt[iContainer]->Fill( jt , effCorrection);
676 fhBgJtBin[iContainer][iBin]->Fill( jt , effCorrection);
677 fhBgJtWeightBin[iContainer][iBin]->Fill( jt, 1.0/jt * effCorrection );
678 fhBgLogJtWeightBin[iContainer][iBin]->Fill( TMath::Log(jt), 1.0/jt * effCorrection );
679
680 if (iptaBin < 0) continue;
681 fhBgJtWithPtCutWeightBinBin[iContainer][iBin][iptaBin]->Fill( jt, 1.0/jt * effCorrection );
682 fhBgLogJtWithPtCutWeightBinBin[iContainer][iBin][iptaBin]->Fill( TMath::Log(jt), 1.0/jt * effCorrection );
683 }
684 }
685
686
687 }
688}
689
690
691