]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHMEC.cxx
adding rho dependence on leading track (M. Verweij)
[u/mrichter/AliRoot.git] / PWGGA / EMCALJetTasks / UserTasks / AliAnalysisTaskEmcalJetHMEC.cxx
CommitLineData
1101e468 1#include "TChain.h"
2#include "TTree.h"
3#include "TList.h"
4#include "TH1F.h"
5#include "TH2F.h"
6#include "THnSparse.h"
7#include "TCanvas.h"
8#include <TClonesArray.h>
9#include <TParticle.h>
10#include "AliVTrack.h"
11#include "TParameter.h"
12
13#include "AliAODEvent.h"
14#include "AliAnalysisTask.h"
15#include "AliAnalysisManager.h"
16
17#include "AliESDEvent.h"
18#include "AliESDInputHandler.h"
19#include "AliESDCaloCluster.h"
20#include "AliESDVertex.h"
21#include "AliCentrality.h"
22#include "AliAODJet.h"
23#include "AliEmcalJet.h"
24#include "AliESDtrackCuts.h"
25#include "AliAnalysisTaskEmcalJetHMEC.h"
26#include "TVector3.h"
27
55f64c2f 28#include "AliEventPoolManager.h"
1101e468 29ClassImp(AliAnalysisTaskEmcalJetHMEC)
55f64c2f 30ClassImp( AliDPhiBasicParticleMEC )
1101e468 31
32//________________________________________________________________________
33AliAnalysisTaskEmcalJetHMEC::AliAnalysisTaskEmcalJetHMEC() :
34 AliAnalysisTaskSE(),
35 fTracksName("tracks"),
36 fJetsName("jets"),
37 fPhimin(-10),
38 fPhimax(10),
39 fEtamin(-0.9),
40 fEtamax(0.9),
41 fAreacut(0.0),
55f64c2f 42 fDoEventMixing(0),
43 fMixingTracks(50000),
1101e468 44 fESD(0),
55f64c2f 45 fPoolMgr(0x0),
46 fOutputList(0),
1101e468 47 fHistTrackPt(0),
48 fHistCentrality(0),
49 fHistJetEtaPhi(0),
50 fHistTrackEtaPhi(0),
55f64c2f 51 fHistJetHEtaPhi(0),
52 fNevents(0),
53 fTindex(0),
54 fTrigBufferIndex(0),
55 fCountAgain(0),
56 fhnMixedEvents(0x0)
1101e468 57{
58 // Default Constructor
59
60 for(Int_t icent = 0; icent<6; ++icent){
61 fHistJetPt[icent]=0;
81941f29 62 fHistJetPtBias[icent]=0;
63 fHistJetPtTT[icent]=0;
55f64c2f 64 for(Int_t iptjet = 0; iptjet<5; ++iptjet){
1101e468 65 for(Int_t ieta = 0; ieta<3; ++ieta){
66 fHistJetH[icent][iptjet][ieta]=0;
67 fHistJetHBias[icent][iptjet][ieta]=0;
81941f29 68 fHistJetHTT[icent][iptjet][ieta]=0;
69
1101e468 70 }
71 }
72 }
73
74}
75//________________________________________________________________________
76AliAnalysisTaskEmcalJetHMEC::AliAnalysisTaskEmcalJetHMEC(const char *name) :
77 AliAnalysisTaskSE(name),
78 fTracksName("tracks"),
79 fJetsName("jets"),
80 fPhimin(-10),
81 fPhimax(10),
82 fEtamin(-0.9),
83 fEtamax(0.9),
84 fAreacut(0.0),
55f64c2f 85 fDoEventMixing(0),
86 fMixingTracks(50000),
1101e468 87 fESD(0),
55f64c2f 88 fPoolMgr(0x0),
1101e468 89 fOutputList(0),
90 fHistTrackPt(0),
91 fHistCentrality(0),
92 fHistJetEtaPhi(0),
93 fHistTrackEtaPhi(0),
55f64c2f 94 fHistJetHEtaPhi(0),
95 fNevents(0),
96 fTindex(0),
97 fTrigBufferIndex(0),
98 fCountAgain(0),
99 fhnMixedEvents(0x0)
1101e468 100{
101 // Constructor
102 for(Int_t icent = 0; icent<6; ++icent){
103 fHistJetPt[icent]=0;
104 fHistJetPtBias[icent]=0;
81941f29 105 fHistJetPtTT[icent]=0;
106 for(Int_t iptjet = 0; iptjet<5; ++iptjet){
1101e468 107 for(Int_t ieta = 0; ieta<3; ++ieta){
108 fHistJetH[icent][iptjet][ieta]=0;
109 fHistJetHBias[icent][iptjet][ieta]=0;
81941f29 110 fHistJetHTT[icent][iptjet][ieta]=0;
1101e468 111 }
112 }
113 }
114
55f64c2f 115 for(Int_t i=0; i<10; i++) {
116 for(Int_t j=0; j<6; j++) {
117 fTrigBuffer[i][j]=0;
118 }
119 }
120
121
1101e468 122 DefineInput(0, TChain::Class());
123 DefineOutput(1, TList::Class());
124
125}
126
127//________________________________________________________________________
128void AliAnalysisTaskEmcalJetHMEC::UserCreateOutputObjects()
129{
130 // Called once
131
132
133 AliVEventHandler* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
134 if (!handler) {
135 AliError("Input handler not available!");
136 return;
137 }
138
139 OpenFile(1);
140 fOutputList = new TList();
141 fOutputList->SetOwner();
142
1101e468 143
55f64c2f 144
145 // Create histograms
1101e468 146 fHistTrackPt = new TH1F("fHistTrackPt", "P_{T} distribution", 1000, 0.0, 100.0);
147
148
149
150 fHistCentrality = new TH1F("fHistCentrality","centrality",100,0,100);
151
152 fHistJetEtaPhi = new TH2F("fHistJetEtaPhi","Jet eta-phi",900,-1.8,1.8,640,-3.2,3.2);
153 fHistTrackEtaPhi = new TH2F("fHistTrackEtaPhi","Track eta-phi",900,-1.8,1.8,640,-3.2,3.2);
154 fHistJetHEtaPhi = new TH2F("fHistJetHEtaPhi","Jet-Hadron deta-dphi",900,-1.8,1.8,640,-1.6,4.8);
155
156 char name[200];
157
158
159 for(Int_t icent = 0; icent<6; ++icent){
160 sprintf(name,"fHistJetPt_%i",icent);
161 fHistJetPt[icent] = new TH1F(name,name,200,0,200);
162 fOutputList->Add(fHistJetPt[icent]);
163
164 sprintf(name,"fHistJetPtBias_%i",icent);
165 fHistJetPtBias[icent] = new TH1F(name,name,200,0,200);
166 fOutputList->Add(fHistJetPtBias[icent]);
167
81941f29 168 sprintf(name,"fHistJetPtTT_%i",icent);
169 fHistJetPtTT[icent] = new TH1F(name,name,200,0,200);
170 fOutputList->Add(fHistJetPtTT[icent]);
171
172 for(Int_t iptjet = 0; iptjet<5; ++iptjet){
1101e468 173 for(Int_t ieta = 0; ieta<3; ++ieta){
174 sprintf(name,"fHistJetH_%i_%i_%i",icent,iptjet,ieta);
175 fHistJetH[icent][iptjet][ieta]=new TH2F(name,name,64,-0.5*TMath::Pi(),1.5*TMath::Pi(),300,0,30);
176 fOutputList->Add(fHistJetH[icent][iptjet][ieta]);
177
178 sprintf(name,"fHistJetHBias_%i_%i_%i",icent,iptjet,ieta);
179 fHistJetHBias[icent][iptjet][ieta]=new TH2F(name,name,64,-0.5*TMath::Pi(),1.5*TMath::Pi(),300,0,30);
180 fOutputList->Add(fHistJetHBias[icent][iptjet][ieta]);
181
81941f29 182 sprintf(name,"fHistJetHTT_%i_%i_%i",icent,iptjet,ieta);
183 fHistJetHTT[icent][iptjet][ieta]=new TH2F(name,name,64,-0.5*TMath::Pi(),1.5*TMath::Pi(),300,0,30);
184 fOutputList->Add(fHistJetHTT[icent][iptjet][ieta]);
185
1101e468 186 }
187 }
188 }
189
55f64c2f 190 if(fDoEventMixing){
191 UInt_t cifras = 0; // bit coded, see GetDimParams() below
192 cifras = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<7;
193 fhnMixedEvents = NewTHnSparseF("fhnMixedEvents", cifras);
194 }
195
1101e468 196
197
198 fOutputList->Add(fHistTrackPt);
199 fOutputList->Add(fHistCentrality);
200 fOutputList->Add(fHistJetEtaPhi);
201 fOutputList->Add(fHistTrackEtaPhi);
202 fOutputList->Add(fHistJetHEtaPhi);
55f64c2f 203 fOutputList->Add(fhnMixedEvents);
1101e468 204
205
206 PostData(1, fOutputList);
207
55f64c2f 208
209 //Event Mixing
210 Int_t trackDepth = fMixingTracks;
211 Int_t poolsize = 1000; // Maximum number of events, ignored in the present implemented of AliEventPoolManager
212
213 Int_t nZvtxBins = 7+1+7;
214 // bins for second buffer are shifted by 100 cm
215 Double_t vertexBins[] = { -7, -5, -3, -1, 1, 3, 5, 7, 93, 95, 97, 99, 101, 103, 105, 107 };
216 Double_t* zvtxbin = vertexBins;
217
218 Int_t nCentralityBins = 100;
219 Double_t centralityBins[nCentralityBins];
220 for(Int_t ic=0; ic<nCentralityBins; ic++){
221 centralityBins[ic]=1.0*ic;
222 }
223 //Double_t* centbin = centralityBins;
224
225 //cout << "filling centrality bins" <<endl;
226 //Int_t nCentralityBins = fHistCentrality->GetNbinsX();
227 //Double_t* centralityBins = (Double_t*)fHistCentrality->GetXaxis()->GetXbins()->GetArray();
228
229 fPoolMgr = new AliEventPoolManager(poolsize, trackDepth, nCentralityBins, centralityBins, nZvtxBins, zvtxbin);
230
231
232
1101e468 233}
234
235//________________________________________________________________________
236
237Double_t AliAnalysisTaskEmcalJetHMEC:: RelativePhi(Double_t mphi,Double_t vphi) {
238
239
240 if (vphi < -1*TMath::Pi()) vphi += (2*TMath::Pi());
241 else if (vphi > TMath::Pi()) vphi -= (2*TMath::Pi());
242 if (mphi < -1*TMath::Pi()) mphi += (2*TMath::Pi());
243 else if (mphi > TMath::Pi()) mphi -= (2*TMath::Pi());
244 Double_t dphi = vphi-mphi;
245 if (dphi < -1*TMath::Pi()) dphi += (2*TMath::Pi());
246 else if (dphi > TMath::Pi()) dphi -= (2*TMath::Pi());
247
248 return dphi;//dphi in [-Pi, Pi]
249}
250
251
252//________________________________________________________________________
253Int_t AliAnalysisTaskEmcalJetHMEC::GetCentBin(Double_t cent) const
254{
255 // Get centrality bin.
256
257 Int_t centbin = -1;
258 if (cent>=0 && cent<10)
259 centbin = 0;
260 else if (cent>=10 && cent<20)
261 centbin = 1;
262 else if (cent>=20 && cent<30)
263 centbin = 2;
264 else if (cent>=30 && cent<40)
265 centbin = 3;
266 else if (cent>=40 && cent<50)
267 centbin = 4;
268 else if (cent>=50 && cent<90)
269 centbin = 5;
270 return centbin;
271}
272
273
274//________________________________________________________________________
275Int_t AliAnalysisTaskEmcalJetHMEC::GetEtaBin(Double_t eta) const
276{
277 // Get eta bin for histos.
278
279 Int_t etabin = -1;
280 if (TMath::Abs(eta)<=0.4)
281 etabin = 0;
282 else if (TMath::Abs(eta)>0.4 && TMath::Abs(eta)<0.8)
283 etabin = 1;
284 else if (TMath::Abs(eta)>=0.8)
285 etabin = 2;
286 return etabin;
287}
288//________________________________________________________________________
81941f29 289Int_t AliAnalysisTaskEmcalJetHMEC::GetpTjetBin(Double_t pt) const
1101e468 290{
81941f29 291 // Get jet pt bin for histos.
292
293 Int_t ptbin = -1;
294 if (pt>=10 && pt<15)
295 ptbin = 0;
296 else if (pt>=15 && pt<20)
297 ptbin = 1;
298 else if (pt>=20 && pt<25)
299 ptbin = 2;
300 else if (pt>=25 && pt<30)
301 ptbin = 3;
302 else if (pt>=30)
303 ptbin = 4;
304
305
306 return ptbin;
1101e468 307}
308
309
310//________________________________________________________________________
311void AliAnalysisTaskEmcalJetHMEC::UserExec(Option_t *)
312{
313
314
315 // Main loop called for each event
316 // esd or aod mode
317 Bool_t esdMode = kTRUE;
318 if (dynamic_cast<AliAODEvent*>(InputEvent()))
319 esdMode = kFALSE;
320
321
322 if (esdMode) {
323 // optimization in case autobranch loading is off
324 AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
325 if (fTracksName == "Tracks")
326 am->LoadBranch("Tracks");
327 }
328
329
330 //get centrality
331 TList *list = InputEvent()->GetList();
332 AliCentrality *centrality = InputEvent()->GetCentrality() ;
333 Double_t fcent=-1;
334 if(centrality)
335 fcent = centrality->GetCentralityPercentile("V0M");
336 else
337 fcent=99;//probably pp data
338
339 if (fcent<0) {
340 AliError(Form("Centrality negative: %f", fcent));
341 return;
342 }
343
344
345 fHistCentrality->Fill(fcent);
346 Int_t centbin = GetCentBin(fcent);
347
348 TClonesArray *jets = 0;
349 TClonesArray *tracks = 0;
350
351 tracks = dynamic_cast<TClonesArray*>(list->FindObject(fTracksName));
352 if (!tracks) {
353 AliError(Form("Pointer to tracks %s == 0", fTracksName.Data() ));
354 return;
355 }
356 const Int_t Ntracks=tracks->GetEntries();
357
358 jets= dynamic_cast<TClonesArray*>(list->FindObject(fJetsName));
359 const Int_t Njets = jets->GetEntries();
360
81941f29 361 //Leticia's loop to find hardest track
362
363 Int_t iTT=-1;
364 Double_t ptmax=-10;
365
366 for (Int_t iTracks = 0; iTracks < Ntracks; iTracks++)
367 {
368 AliVTrack* track = static_cast<AliVTrack*>(tracks->At(iTracks));
369 if (!track) {
370 printf("ERROR: Could not receive track %d\n", iTracks);
371 continue;
372 }
373
374 if(TMath::Abs(track->Eta())>0.9) continue;
375 if(track->Pt()<0.15)continue;
376 //iCount++;
377 if(track->Pt()>ptmax){
378 ptmax=track->Pt();
379 iTT=iTracks;
380 }
381 }
1101e468 382
383
81941f29 384 Int_t ijethi=-1;
385
386 Double_t highestjetpt=0.0;
387
388 Int_t passedTTcut=0;
1101e468 389
390 for (Int_t ijet = 0; ijet < Njets; ijet++)
391 {
81941f29 392
1101e468 393 AliEmcalJet *jet = static_cast<AliEmcalJet*>(jets->At(ijet));
394
395 if (!jet)
396 continue;
397
398 //pt,eta,phi,centrality
399 float jetphi = jet->Phi();
400 if (jetphi>TMath::Pi())
401 jetphi = jetphi-2*TMath::Pi();
402
403 if ((jet->Phi()<fPhimin)||(jet->Phi()>fPhimax))
404 continue;
405 if ((jet->Eta()<fEtamin)||(jet->Eta()>fEtamax))
406 continue;
407 //fHistAreavsRawPt[centbin]->Fill(jet->Pt(),jet->Area());
408 if (jet->Area()<fAreacut)
409 continue;
410 //prevents 0 area jets from sneaking by when area cut == 0
411 if (jet->Area()==0)
412 continue;
413
1101e468 414 Double_t jetPt = jet->Pt();
415
59d5ae99 416 if(highestjetpt<jetPt){
417 ijethi=ijet;
418 highestjetpt=jetPt;
419 }
420
421 }
422
423
424
425 //Only look at the highest pT jet in the event
426
427 if(ijethi>-1){
428 AliEmcalJet *jet = static_cast<AliEmcalJet*>(jets->At(ijethi));
429
55f64c2f 430 Double_t jetphi = jet->Phi();
59d5ae99 431 Double_t jetPt = jet->Pt();
55f64c2f 432 Double_t jeteta=jet->Eta();
1101e468 433
434 fHistJetPt[centbin]->Fill(jet->Pt());
435
81941f29 436 if ((jet->MaxTrackPt()>6) || (jet->MaxClusterPt()>6))
437 fHistJetPtBias[centbin]->Fill(jet->Pt());
438
439
1101e468 440 fHistJetEtaPhi->Fill(jet->Eta(),jetphi);
441
442 //fHistDeltaPtvsArea->Fill(jetPt,jet->Area());
443
81941f29 444 if(iTT>0){
445 AliVTrack* TT = static_cast<AliVTrack*>(tracks->At(iTT));
446 if(TMath::Abs(jetphi-TT->Phi()-TMath::Pi())<0.6) passedTTcut=1;
447 else passedTTcut=0;
448 }
1101e468 449
81941f29 450 if(passedTTcut)
451 fHistJetPtTT[centbin]->Fill(jet->Pt());
59d5ae99 452
81941f29 453
454 if (highestjetpt>10) {
81941f29 455
81941f29 456 for (Int_t iTracks = 0; iTracks < Ntracks; iTracks++)
457 {
458 AliVTrack* track = static_cast<AliVTrack*>(tracks->At(iTracks));
459 if (!track) {
460 printf("ERROR: Could not receive track %d\n", iTracks);
461 continue;
462 }
463
1101e468 464 if(TMath::Abs(track->Eta())>0.9) continue;
465
466 fHistTrackPt->Fill(track->Pt());
467
81941f29 468 if (track->Pt()<0.15)
1101e468 469 continue;
470
471 Double_t trackphi = track->Phi();
472 if (trackphi > TMath::Pi())
473 trackphi = trackphi-2*TMath::Pi();
474
475 Double_t tracketa=track->Eta();
55f64c2f 476
1101e468 477 Double_t deta=tracketa-jeteta;
478 Int_t ieta=GetEtaBin(deta);
479
480 //Jet pt, track pt, dPhi,deta,fcent
481 Double_t dphijh = RelativePhi(jetphi,trackphi);
482 if (dphijh < -0.5*TMath::Pi())
483 dphijh= dphijh+ 2*TMath::Pi();
484
485 Int_t iptjet=-1;
486 iptjet=GetpTjetBin(jetPt);
487
488 fHistJetH[centbin][iptjet][ieta]->Fill(dphijh,track->Pt());
489 fHistJetHEtaPhi->Fill(deta,dphijh);
490 fHistTrackEtaPhi->Fill(tracketa,trackphi);
81941f29 491 if ((jet->MaxTrackPt()>6) || (jet->MaxClusterPt()>6))
1101e468 492 fHistJetHBias[centbin][iptjet][ieta]->Fill(dphijh,track->Pt());
81941f29 493
494 if(passedTTcut)
59d5ae99 495 fHistJetHTT[centbin][iptjet][ieta]->Fill(dphijh,track->Pt());
1101e468 496
1101e468 497
498 } //track loop
59d5ae99 499 }//jet pt cut
55f64c2f 500
501
502 // create a list of reduced objects. This speeds up processing and reduces memory consumption for the event pool
503 TObjArray* tracksClone = CloneAndReduceTrackList(tracks);
504 //delete tracks;
505
506 Double_t fvertex[3]={0,0,0};
507 InputEvent()->GetPrimaryVertex()->GetXYZ(fvertex);
508 Double_t zVtx=fvertex[3];
509
510 if(fDoEventMixing>0){
511
512 // event mixing
513
514 // 1. First get an event pool corresponding in mult (cent) and
515 // zvertex to the current event. Once initialized, the pool
516 // should contain nMix (reduced) events. This routine does not
517 // pre-scan the chain. The first several events of every chain
518 // will be skipped until the needed pools are filled to the
519 // specified depth. If the pool categories are not too rare, this
520 // should not be a problem. If they are rare, you could lose
521 // statistics.
522
523 // 2. Collect the whole pool's content of tracks into one TObjArray
524 // (bgTracks), which is effectively a single background super-event.
525
526 // 3. The reduced and bgTracks arrays must both be passed into
527 // FillCorrelations(). Also nMix should be passed in, so a weight
528 // of 1./nMix can be applied.
529
530
531
532
533
534 AliEventPool* pool = fPoolMgr->GetEventPool(fcent, zVtx);
535
536 pool->PrintInfo();
537
538
539 if (!pool)
540 AliFatal(Form("No pool found for centrality = %f, zVtx = %f", fcent, zVtx));
541
542
543 if (pool->IsReady() || pool->NTracksInPool() > fMixingTracks / 10 || pool->GetCurrentNEvents() >= 5)
544 {
545
546 Int_t nMix = pool->GetCurrentNEvents();
547 //cout << "good pool with nMix = " << nMix << " tracks in pool = " << pool->NTracksInPool() << endl;
548
549
550 // Fill mixed-event histos here
551 for (Int_t jMix=0; jMix<nMix; jMix++)
552 {
553 TObjArray* bgTracks = pool->GetEvent(jMix);
554 const Int_t Nbgtrks = bgTracks->GetEntries();
555 for(Int_t ibg=0; ibg<Nbgtrks; ibg++){
556 AliDPhiBasicParticleMEC *part = static_cast<AliDPhiBasicParticleMEC*>(bgTracks->At(ibg));
557 if(!part) continue;
558
559 Double_t DPhi = jetphi - part->Phi();
560 Double_t DEta = jeteta - part->Eta();
561 Double_t DR=TMath::Sqrt(DPhi*DPhi+DEta*DEta);
562 if(DPhi<-0.5*TMath::Pi()) DPhi+=2.*TMath::Pi();
563 if(DPhi>3./2.*TMath::Pi()) DPhi-=2.*TMath::Pi();
564 Double_t triggerEntries[7] = {fcent,jetPt,part->Pt(),DR,DEta,DPhi,0.0};
565 fhnMixedEvents->Fill(triggerEntries,1./nMix);
566 }
567
568 }
569 }
570 pool->UpdatePool(tracksClone);
571
572 }
573
574
575
59d5ae99 576 }
577
1101e468 578 PostData(1, fOutputList);
579}
580
581//________________________________________________________________________
582void AliAnalysisTaskEmcalJetHMEC::Terminate(Option_t *)
583{
584 //just terminate
585
586}
587
55f64c2f 588THnSparse* AliAnalysisTaskEmcalJetHMEC::NewTHnSparseF(const char* name, UInt_t entries)
589{
590 // generate new THnSparseF, axes are defined in GetDimParams()
591
592 Int_t count = 0;
593 UInt_t tmp = entries;
594 while(tmp!=0){
595 count++;
596 tmp = tmp &~ -tmp; // clear lowest bit
597 }
598
599 TString hnTitle(name);
600 const Int_t dim = count;
601 Int_t nbins[dim];
602 Double_t xmin[dim];
603 Double_t xmax[dim];
604
605 Int_t i=0;
606 Int_t c=0;
607 while(c<dim && i<32){
608 if(entries&(1<<i)){
609
610 TString label("");
611 GetDimParams(i, label, nbins[c], xmin[c], xmax[c]);
612 hnTitle += Form(";%s",label.Data());
613 c++;
614 }
615
616 i++;
617 }
618 hnTitle += ";";
619
620 return new THnSparseF(name, hnTitle.Data(), dim, nbins, xmin, xmax);
621}
622
623void AliAnalysisTaskEmcalJetHMEC::GetDimParams(Int_t iEntry, TString &label, Int_t &nbins, Double_t &xmin, Double_t &xmax)
624{
625 // stores label and binning of axis for THnSparse
626
627 const Double_t pi = TMath::Pi();
628
629 switch(iEntry){
630
631 case 0:
632 label = "V0 centrality (%)";
633
634 nbins = 10;
635 xmin = 0.;
636 xmax = 100.;
637 break;
638
639
640 case 1:
641 label = "corrected jet pt";
642 nbins = 20;
643 xmin = 0.;
644 xmax = 200.;
645 break;
646
647
648 case 2:
649 label = "track pT";
650
651 nbins = 100;
652 xmin = 0.;
653 xmax = 10;
654 break;
655
656
657 case 3:
658 label = "deltaR";
659 nbins = 15;
660 xmin = 0.;
661 xmax = 1.5;
662 break;
663
664
665
666 case 4:
667 label = "deltaEta";
668 nbins = 8;
669 xmin = -1.6;
670 xmax = 1.6;
671 break;
672
673
674 case 5:
675 label = "deltaPhi";
676 nbins = 90;
677 xmin = -0.5*pi;
678 xmax = 1.5*pi;
679 break;
680
681
682
683 case 6:
684 label = "leading track";
685 nbins = 13;
686 xmin = 0;
687 xmax = 50;
688 break;
689
690 case 7:
691
692 label = "trigger track";
693 nbins =10;
694 xmin = 0;
695 xmax = 50;
696 break;
697
698
699
700
701 }
702
703}
704
705
706//_________________________________________________
707// From CF event mixing code PhiCorrelations
708TObjArray* AliAnalysisTaskEmcalJetHMEC::CloneAndReduceTrackList(TObjArray* tracks)
709{
710 // clones a track list by using AliDPhiBasicParticle which uses much less memory (used for event mixing)
711
712 TObjArray* tracksClone = new TObjArray;
713 tracksClone->SetOwner(kTRUE);
714
715 for (Int_t i=0; i<tracks->GetEntriesFast(); i++)
716 {
717 AliVParticle* particle = (AliVParticle*) tracks->At(i);
718 tracksClone->Add(new AliDPhiBasicParticleMEC(particle->Eta(), particle->Phi(), particle->Pt(), particle->Charge()));
719 }
720
721 return tracksClone;
722}
723
724
1101e468 725