]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskFullpAJets.cxx
updates for Kch femto train
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskFullpAJets.cxx
CommitLineData
ac6a3f1e 1#include "AliAnalysisTaskFullpAJets.h"
2
3#include <Riostream.h>
4#include <ctime>
5#include <TString.h>
6#include <TChain.h>
7#include <TTree.h>
8#include <TH1D.h>
9#include <TH2D.h>
10#include <TH3D.h>
2d2100d5 11#include <THnSparse.h>
ac6a3f1e 12#include <TCanvas.h>
13#include <TList.h>
14#include <TLorentzVector.h>
15#include <TProfile.h>
16#include <TProfile2D.h>
17#include <TProfile3D.h>
18#include <TRandom.h>
19#include <TRandom3.h>
c6202663 20#include <TClonesArray.h>
21#include <TObjArray.h>
ac6a3f1e 22
23#include "AliAnalysisTaskSE.h"
24#include "AliAnalysisManager.h"
25#include "AliStack.h"
26#include "AliESDtrackCuts.h"
27#include "AliESDEvent.h"
28#include "AliESDInputHandler.h"
29#include "AliAODEvent.h"
08b981da 30#include "AliVEvent.h"
ac6a3f1e 31#include "AliMCEvent.h"
c6202663 32#include "AliVTrack.h"
33#include "AliVCluster.h"
ac6a3f1e 34#include "AliEmcalJet.h"
35#include "AliEMCALGeometry.h"
08b981da 36#include "AliEMCALRecoUtils.h"
37#include "AliVCaloCells.h"
24a61909 38#include "AliPicoTrack.h"
c6202663 39#include "Rtypes.h"
ac6a3f1e 40
41ClassImp(AliAnalysisTaskFullpAJets)
42
43//________________________________________________________________________
44AliAnalysisTaskFullpAJets::AliAnalysisTaskFullpAJets() :
45 AliAnalysisTaskSE(),
46
47 fOutput(0),
62620fff 48 flTrack(0),
49 flCluster(0),
ac6a3f1e 50 fhTrackPt(0),
51 fhTrackEta(0),
52 fhTrackPhi(0),
24a61909 53 fhGlobalTrackPt(0),
54 fhGlobalTrackEta(0),
55 fhGlobalTrackPhi(0),
56 fhComplementaryTrackPt(0),
57 fhComplementaryTrackEta(0),
58 fhComplementaryTrackPhi(0),
ac6a3f1e 59 fhClusterPt(0),
60 fhClusterEta(0),
61 fhClusterPhi(0),
c54b626a 62 fhCentrality(0),
ac6a3f1e 63 fhEMCalCellCounts(0),
78246241 64
ac6a3f1e 65 fhTrackEtaPhi(0),
24a61909 66 fhTrackPhiPt(0),
67 fhTrackEtaPt(0),
68 fhGlobalTrackEtaPhi(0),
69 fhGlobalTrackPhiPt(0),
70 fhGlobalTrackEtaPt(0),
71 fhComplementaryTrackEtaPhi(0),
72 fhComplementaryTrackPhiPt(0),
73 fhComplementaryTrackEtaPt(0),
ac6a3f1e 74 fhClusterEtaPhi(0),
24a61909 75 fhClusterPhiPt(0),
76 fhClusterEtaPt(0),
3e43a01f 77 fhEMCalEventMult(0),
78 fhTPCEventMult(0),
79 fhEMCalTrackEventMult(0),
c6202663 80
81 fpEMCalEventMult(0),
82 fpTPCEventMult(0),
78246241 83
ac6a3f1e 84 fpTrackPtProfile(0),
c54b626a 85 fpClusterPtProfile(0),
86
3e43a01f 87 fTPCRawJets(0),
88 fEMCalRawJets(0),
c6202663 89 fRhoChargedCMSScale(0),
62620fff 90 fRhoChargedScale(0),
91 fRhoFull0(0),
92 fRhoFull1(0),
93 fRhoFull2(0),
94 fRhoFullN(0),
95 fRhoFullDijet(0),
96 fRhoFullkT(0),
97 fRhoFullCMS(0),
98 fRhoCharged0(0),
99 fRhoCharged1(0),
100 fRhoCharged2(0),
101 fRhoChargedN(0),
102 fRhoChargedkT(0),
103 fRhoChargedkTScale(0),
104 fRhoChargedCMS(0),
c6202663 105
106 fTPCJet(0),
107 fTPCFullJet(0),
108 fTPCOnlyJet(0),
8daeee93 109 fTPCJetUnbiased(0),
c6202663 110 fTPCkTFullJet(0),
111 fEMCalJet(0),
112 fEMCalFullJet(0),
113 fEMCalPartJet(0),
8daeee93 114 fEMCalPartJetUnbiased(0),
c6202663 115 fEMCalkTFullJet(0),
116
c54b626a 117 fIsInitialized(0),
c6202663 118 fRJET(4),
c54b626a 119 fnEvents(0),
120 fnEventsCharged(0),
121 fnDiJetEvents(0),
08b981da 122 fEvent(0),
123 fRecoUtil(0),
124 fEMCALGeometry(0),
125 fCells(0),
87a5edfe 126 fDoNEF(0),
3e43a01f 127 fSignalTrackBias(0),
62620fff 128 fTrackQA(0),
129 fClusterQA(0),
130 fCalculateRhoJet(0),
c6202663 131 fEMCalPhiMin(1.39626),
132 fEMCalPhiMax(3.26377),
133 fEMCalPhiTotal(1.86750),
134 fEMCalEtaMin(-0.7),
135 fEMCalEtaMax(0.7),
136 fEMCalEtaTotal(1.4),
137 fEMCalArea(2.61450),
c54b626a 138 fTPCPhiMin(0),
c6202663 139 fTPCPhiMax(6.28319),
140 fTPCPhiTotal(6.28319),
141 fTPCEtaMin(-0.9),
142 fTPCEtaMax(0.9),
143 fTPCEtaTotal(1.8),
144 fTPCArea(11.30973),
24a61909 145 fParticlePtLow(0.0),
146 fParticlePtUp(200.0),
20f2d13a 147 fParticlePtBins(200),
c6202663 148 fJetR(0.4),
149 fJetRForRho(0.5),
150 fJetAreaCutFrac(0.6),
151 fJetAreaThreshold(0.30159),
152 fnEMCalCells(12288),
153 fScaleFactor(1.50),
7acc3e04 154 fNColl(7),
c6202663 155 fTrackMinPt(0.15),
156 fClusterMinPt(0.3),
91d0893e 157 fNEFSignalJetCut(0.9),
3aae667c 158 fCentralityTag("V0A"),
c6202663 159 fCentralityBins(10),
c54b626a 160 fCentralityLow(0),
c6202663 161 fCentralityUp(100),
c54b626a 162 fEventCentrality(0),
c6202663 163 fRhoFull(0),
c54b626a 164 fRhoCharged(0),
c54b626a 165 fnTracks(0),
166 fnClusters(0),
08b981da 167 fnCaloClusters(0),
c54b626a 168 fnAKTFullJets(0),
169 fnAKTChargedJets(0),
170 fnKTFullJets(0),
78246241 171 fnKTChargedJets(0),
c54b626a 172 fnBckgClusters(0),
c6202663 173 fTPCJetThreshold(5),
174 fEMCalJetThreshold(5),
175 fVertexWindow(10),
176 fVertexMaxR(1),
d812e269 177 fTrackName(0),
178 fClusName(0),
179 fkTChargedName(0),
180 fAkTChargedName(0),
181 fkTFullName(0),
182 fAkTFullName(0),
c6202663 183 fOrgTracks(0),
184 fOrgClusters(0),
c54b626a 185 fmyAKTFullJets(0),
186 fmyAKTChargedJets(0),
187 fmyKTFullJets(0),
78246241 188 fmyKTChargedJets(0),
c6202663 189 fmyTracks(0),
190 fmyClusters(0),
191 fEMCalRCBckgFluc(0),
192 fTPCRCBckgFluc(0),
193 fEMCalRCBckgFlucSignal(0),
7acc3e04 194 fTPCRCBckgFlucSignal(0),
195 fEMCalRCBckgFlucNColl(0),
196 fTPCRCBckgFlucNColl(0)
ac6a3f1e 197{
198 // Dummy constructor ALWAYS needed for I/O.
8daeee93 199 fVertex[0]=0.0,fVertex[1]=0.0,fVertex[2]=0.0;
ac6a3f1e 200}
201
202//________________________________________________________________________
203AliAnalysisTaskFullpAJets::AliAnalysisTaskFullpAJets(const char *name) :
204 AliAnalysisTaskSE(name),
205
206 fOutput(0),
62620fff 207 flTrack(0),
208 flCluster(0),
ac6a3f1e 209 fhTrackPt(0),
210 fhTrackEta(0),
211 fhTrackPhi(0),
24a61909 212 fhGlobalTrackPt(0),
213 fhGlobalTrackEta(0),
214 fhGlobalTrackPhi(0),
215 fhComplementaryTrackPt(0),
216 fhComplementaryTrackEta(0),
217 fhComplementaryTrackPhi(0),
ac6a3f1e 218 fhClusterPt(0),
219 fhClusterEta(0),
220 fhClusterPhi(0),
c54b626a 221 fhCentrality(0),
ac6a3f1e 222 fhEMCalCellCounts(0),
78246241 223
ac6a3f1e 224 fhTrackEtaPhi(0),
24a61909 225 fhTrackPhiPt(0),
226 fhTrackEtaPt(0),
227 fhGlobalTrackEtaPhi(0),
228 fhGlobalTrackPhiPt(0),
229 fhGlobalTrackEtaPt(0),
230 fhComplementaryTrackEtaPhi(0),
231 fhComplementaryTrackPhiPt(0),
232 fhComplementaryTrackEtaPt(0),
ac6a3f1e 233 fhClusterEtaPhi(0),
24a61909 234 fhClusterPhiPt(0),
235 fhClusterEtaPt(0),
3e43a01f 236 fhEMCalEventMult(0),
237 fhTPCEventMult(0),
238 fhEMCalTrackEventMult(0),
c6202663 239
240 fpEMCalEventMult(0),
241 fpTPCEventMult(0),
78246241 242
ac6a3f1e 243 fpTrackPtProfile(0),
c54b626a 244 fpClusterPtProfile(0),
245
c6202663 246 fTPCRawJets(0),
247 fEMCalRawJets(0),
c6202663 248 fRhoChargedCMSScale(0),
62620fff 249 fRhoChargedScale(0),
250 fRhoFull0(0),
251 fRhoFull1(0),
252 fRhoFull2(0),
253 fRhoFullN(0),
254 fRhoFullDijet(0),
255 fRhoFullkT(0),
256 fRhoFullCMS(0),
257 fRhoCharged0(0),
258 fRhoCharged1(0),
259 fRhoCharged2(0),
260 fRhoChargedN(0),
261 fRhoChargedkT(0),
262 fRhoChargedkTScale(0),
263 fRhoChargedCMS(0),
c6202663 264
265 fTPCJet(0),
266 fTPCFullJet(0),
267 fTPCOnlyJet(0),
8daeee93 268 fTPCJetUnbiased(0),
c6202663 269 fTPCkTFullJet(0),
270 fEMCalJet(0),
271 fEMCalFullJet(0),
272 fEMCalPartJet(0),
8daeee93 273 fEMCalPartJetUnbiased(0),
c6202663 274 fEMCalkTFullJet(0),
275
c54b626a 276 fIsInitialized(0),
c6202663 277 fRJET(4),
c54b626a 278 fnEvents(0),
279 fnEventsCharged(0),
280 fnDiJetEvents(0),
08b981da 281 fEvent(0),
282 fRecoUtil(0),
283 fEMCALGeometry(0),
284 fCells(0),
87a5edfe 285 fDoNEF(0),
3e43a01f 286 fSignalTrackBias(0),
62620fff 287 fTrackQA(0),
288 fClusterQA(0),
289 fCalculateRhoJet(0),
c6202663 290 fEMCalPhiMin(1.39626),
291 fEMCalPhiMax(3.26377),
292 fEMCalPhiTotal(1.86750),
293 fEMCalEtaMin(-0.7),
294 fEMCalEtaMax(0.7),
295 fEMCalEtaTotal(1.4),
296 fEMCalArea(2.61450),
c54b626a 297 fTPCPhiMin(0),
c6202663 298 fTPCPhiMax(6.28319),
299 fTPCPhiTotal(6.28319),
300 fTPCEtaMin(-0.9),
301 fTPCEtaMax(0.9),
302 fTPCEtaTotal(1.8),
303 fTPCArea(11.30973),
24a61909 304 fParticlePtLow(0.0),
305 fParticlePtUp(200.0),
306 fParticlePtBins(2000),
c6202663 307 fJetR(0.4),
308 fJetRForRho(0.5),
309 fJetAreaCutFrac(0.6),
310 fJetAreaThreshold(0.30159),
311 fnEMCalCells(12288),
312 fScaleFactor(1.50),
7acc3e04 313 fNColl(7),
c6202663 314 fTrackMinPt(0.15),
315 fClusterMinPt(0.3),
91d0893e 316 fNEFSignalJetCut(0.9),
3aae667c 317 fCentralityTag("V0A"),
c6202663 318 fCentralityBins(10),
c54b626a 319 fCentralityLow(0),
c6202663 320 fCentralityUp(100),
c54b626a 321 fEventCentrality(0),
c6202663 322 fRhoFull(0),
c54b626a 323 fRhoCharged(0),
c54b626a 324 fnTracks(0),
325 fnClusters(0),
08b981da 326 fnCaloClusters(0),
c54b626a 327 fnAKTFullJets(0),
328 fnAKTChargedJets(0),
329 fnKTFullJets(0),
78246241 330 fnKTChargedJets(0),
c54b626a 331 fnBckgClusters(0),
c6202663 332 fTPCJetThreshold(5),
333 fEMCalJetThreshold(5),
334 fVertexWindow(10),
335 fVertexMaxR(1),
d812e269 336 fTrackName(0),
337 fClusName(0),
338 fkTChargedName(0),
339 fAkTChargedName(0),
340 fkTFullName(0),
341 fAkTFullName(0),
c6202663 342 fOrgTracks(0),
343 fOrgClusters(0),
c54b626a 344 fmyAKTFullJets(0),
345 fmyAKTChargedJets(0),
346 fmyKTFullJets(0),
78246241 347 fmyKTChargedJets(0),
c6202663 348 fmyTracks(0),
349 fmyClusters(0),
350 fEMCalRCBckgFluc(0),
351 fTPCRCBckgFluc(0),
352 fEMCalRCBckgFlucSignal(0),
7acc3e04 353 fTPCRCBckgFlucSignal(0),
354 fEMCalRCBckgFlucNColl(0),
355 fTPCRCBckgFlucNColl(0)
ac6a3f1e 356{
357 // Constructor
358 // Define input and output slots here (never in the dummy constructor)
359 // Input slot #0 works with a TChain - it is connected to the default input container
360 // Output slot #1 writes into a TH1 container
8daeee93 361 fVertex[0]=0.0,fVertex[1]=0.0,fVertex[2]=0.0;
ac6a3f1e 362
c54b626a 363 DefineOutput(1,TList::Class()); // for output list
ac6a3f1e 364}
365
366//________________________________________________________________________
367AliAnalysisTaskFullpAJets::~AliAnalysisTaskFullpAJets()
368{
369 // Destructor. Clean-up the output list, but not the histograms that are put inside
370 // (the list is owner and will clean-up these histograms). Protect in PROOF case.
371 if (fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode())
372 {
373 delete fOutput;
374 }
ac6a3f1e 375}
376
377//________________________________________________________________________
378void AliAnalysisTaskFullpAJets::UserCreateOutputObjects()
379{
380 // Create histograms
381 // Called once (on the worker node)
382 fIsInitialized=kFALSE;
383 fOutput = new TList();
384 fOutput->SetOwner(); // IMPORTANT!
385
ac6a3f1e 386 // Initialize Global Variables
387 fnEvents=0;
388 fnEventsCharged=0;
389 fnDiJetEvents=0;
ac6a3f1e 390
c54b626a 391 // fRJET=4 -> fJetR=0.4 && fRJET=25 -> fJetR=0.25, but for writing files, should be 4 and 25 respectively
392 if (fRJET>10)
393 {
394 fJetR=(Double_t)fRJET/100.0;
395 }
396 else
397 {
398 fJetR=(Double_t)fRJET/10.0;
399 }
c6202663 400 fJetRForRho=0.5;
401
ac6a3f1e 402 fEMCalPhiMin=(80/(double)360)*2*TMath::Pi();
403 fEMCalPhiMax=(187/(double)360)*2*TMath::Pi();
404 fEMCalPhiTotal= fEMCalPhiMax-fEMCalPhiMin;
405 fEMCalEtaMin=-0.7;
406 fEMCalEtaMax=0.7;
407 fEMCalEtaTotal=fEMCalEtaMax-fEMCalEtaMin;
408 fEMCalArea=fEMCalPhiTotal*fEMCalEtaTotal;
409
410 fTPCPhiMin=(0/(double)360)*2*TMath::Pi();
411 fTPCPhiMax=(360/(double)360)*2*TMath::Pi();
412 fTPCPhiTotal= fTPCPhiMax-fTPCPhiMin;
413 fTPCEtaMin=-0.9;
414 fTPCEtaMax=0.9;
415 fTPCEtaTotal=fTPCEtaMax-fTPCEtaMin;
416 fTPCArea=fTPCPhiTotal*fTPCEtaTotal;
24a61909 417
418 fParticlePtLow=0.0;
419 fParticlePtUp=200.0;
420 fParticlePtBins=Int_t(fParticlePtUp-fParticlePtLow);
421
ac6a3f1e 422 fCentralityBins=10;
423 fCentralityLow=0.0;
424 fCentralityUp=100.0;
c54b626a 425 Int_t CentralityBinMult=10;
426
c6202663 427 fJetAreaCutFrac =0.6; // Fudge factor for selecting on jets with threshold Area or higher
ac6a3f1e 428 fJetAreaThreshold=fJetAreaCutFrac*TMath::Pi()*fJetR*fJetR;
c6202663 429 fTPCJetThreshold=5.0; // Threshold required for an Anti-kT Charged jet to be considered a "true" jet in TPC
430 fEMCalJetThreshold=5.0; // Threshold required for an Anti-kT Charged+Neutral jet to be considered a "true" jet in EMCal
ac6a3f1e 431 fVertexWindow=10.0;
432 fVertexMaxR=1.0;
433
c6202663 434 fnBckgClusters=1;
435 fEMCalRCBckgFluc = new Double_t[fnBckgClusters];
436 fTPCRCBckgFluc = new Double_t[fnBckgClusters];
437 fEMCalRCBckgFlucSignal = new Double_t[fnBckgClusters];
438 fTPCRCBckgFlucSignal = new Double_t[fnBckgClusters];
7acc3e04 439 fEMCalRCBckgFlucNColl = new Double_t[fnBckgClusters];
440 fTPCRCBckgFlucNColl = new Double_t[fnBckgClusters];
ac6a3f1e 441 for (Int_t i=0;i<fnBckgClusters;i++)
442 {
c6202663 443 fEMCalRCBckgFluc[i]=0.0;
444 fTPCRCBckgFluc[i]=0.0;
445 fEMCalRCBckgFlucSignal[i]=0.0;
446 fTPCRCBckgFlucSignal[i]=0.0;
7acc3e04 447 fEMCalRCBckgFlucNColl[i]=0.0;
448 fTPCRCBckgFlucNColl[i]=0.0;
ac6a3f1e 449 }
450
ac6a3f1e 451 fnEMCalCells=12288; // sMods 1-10 have 24x48 cells, sMods 11&12 have 8x48 cells...
452
ac6a3f1e 453 Int_t TCBins=100;
62620fff 454 Int_t multBins=200;
455 Double_t multLow=0;
456 Double_t multUp=200;
24a61909 457
c54b626a 458 fhCentrality = new TH1D("fhCentrality","Event Centrality Distribution",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
c6202663 459 fhCentrality->GetXaxis()->SetTitle(fCentralityTag);
c54b626a 460 fhCentrality->GetYaxis()->SetTitle("1/N_{Events}");
461 fhCentrality->Sumw2();
462
62620fff 463 // Track QA Plots
464 if (fTrackQA==kTRUE)
465 {
466 flTrack = new TList();
467 flTrack->SetName("TrackQA");
468
469 // Hybrid Tracks
470 fhTrackPt = new TH1D("fhTrackPt","p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
471 fhTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
472 fhTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
473 fhTrackPt->Sumw2();
474
475 fhTrackPhi = new TH1D("fhTrackPhi","#varphi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
476 fhTrackPhi->GetXaxis()->SetTitle("#varphi");
477 fhTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
478 fhTrackPhi->Sumw2();
479
480 fhTrackEta = new TH1D("fhTrackEta","#eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
481 fhTrackEta->GetXaxis()->SetTitle("#eta");
482 fhTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
483 fhTrackEta->Sumw2();
484
485 fhTrackEtaPhi = new TH2D("fhTrackEtaPhi","#eta-#varphi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
486 fhTrackEtaPhi->GetXaxis()->SetTitle("#eta");
487 fhTrackEtaPhi->GetYaxis()->SetTitle("#varphi");
488 fhTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
489 fhTrackEtaPhi->Sumw2();
490
491 fhTrackPhiPt = new TH2D("fhTrackPhiPt","#varphi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
492 fhTrackPhiPt->GetXaxis()->SetTitle("#varphi");
493 fhTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
494 fhTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
495 fhTrackPhiPt->Sumw2();
496
497 fhTrackEtaPt = new TH2D("fhTrackEtaPt","#eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
498 fhTrackEtaPt->GetXaxis()->SetTitle("#varphi");
499 fhTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
500 fhTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
501 fhTrackEtaPt->Sumw2();
2d2100d5 502
62620fff 503 // Global Tracks
504 fhGlobalTrackPt = new TH1D("fhGlobalTrackPt","Global p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
505 fhGlobalTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
506 fhGlobalTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
507 fhGlobalTrackPt->Sumw2();
508
509 fhGlobalTrackPhi = new TH1D("fhGlobalTrackPhi","Global #varphi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
510 fhGlobalTrackPhi->GetXaxis()->SetTitle("#varphi");
511 fhGlobalTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
512 fhGlobalTrackPhi->Sumw2();
513
514 fhGlobalTrackEta = new TH1D("fhGlobalTrackEta","Global #eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
515 fhGlobalTrackEta->GetXaxis()->SetTitle("#eta");
516 fhGlobalTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
517 fhGlobalTrackEta->Sumw2();
518
519 fhGlobalTrackEtaPhi = new TH2D("fhGlobalTrackEtaPhi","Global #eta-#varphi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
520 fhGlobalTrackEtaPhi->GetXaxis()->SetTitle("#eta");
521 fhGlobalTrackEtaPhi->GetYaxis()->SetTitle("#varphi");
522 fhGlobalTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
523 fhGlobalTrackEtaPhi->Sumw2();
524
525 fhGlobalTrackPhiPt = new TH2D("fhGlobalTrackPhiPt","Global #varphi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
526 fhGlobalTrackPhiPt->GetXaxis()->SetTitle("#varphi");
527 fhGlobalTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
528 fhGlobalTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
529 fhGlobalTrackPhiPt->Sumw2();
530
531 fhGlobalTrackEtaPt = new TH2D("fhGlobalTrackEtaPt","Global #eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
532 fhGlobalTrackEtaPt->GetXaxis()->SetTitle("#varphi");
533 fhGlobalTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
534 fhGlobalTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
535 fhGlobalTrackEtaPt->Sumw2();
536
62620fff 537 // Complementary Tracks
538 fhComplementaryTrackPt = new TH1D("fhComplementaryTrackPt","Complementary p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
539 fhComplementaryTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
540 fhComplementaryTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
541 fhComplementaryTrackPt->Sumw2();
542
543 fhComplementaryTrackPhi = new TH1D("fhComplementaryTrackPhi","Complementary #varphi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
544 fhComplementaryTrackPhi->GetXaxis()->SetTitle("#varphi");
545 fhComplementaryTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
546 fhComplementaryTrackPhi->Sumw2();
547
548 fhComplementaryTrackEta = new TH1D("fhComplementaryTrackEta","Complementary #eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
549 fhComplementaryTrackEta->GetXaxis()->SetTitle("#eta");
550 fhComplementaryTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
551 fhComplementaryTrackEta->Sumw2();
552
553 fhComplementaryTrackEtaPhi = new TH2D("fhComplementaryTrackEtaPhi","Complementary #eta-#varphi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
554 fhComplementaryTrackEtaPhi->GetXaxis()->SetTitle("#eta");
555 fhComplementaryTrackEtaPhi->GetYaxis()->SetTitle("#varphi");
556 fhComplementaryTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
557 fhComplementaryTrackEtaPhi->Sumw2();
558
559 fhComplementaryTrackPhiPt = new TH2D("fhComplementaryTrackPhiPt","Complementary #varphi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
560 fhComplementaryTrackPhiPt->GetXaxis()->SetTitle("#varphi");
561 fhComplementaryTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
562 fhComplementaryTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
563 fhComplementaryTrackPhiPt->Sumw2();
564
565 fhComplementaryTrackEtaPt = new TH2D("fhComplementaryTrackEtaPt","Complementary #eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
566 fhComplementaryTrackEtaPt->GetXaxis()->SetTitle("#varphi");
567 fhComplementaryTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
568 fhComplementaryTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
569 fhComplementaryTrackEtaPt->Sumw2();
570
62620fff 571 fhTPCEventMult = new TH2D("fhTPCEventMult","TPC Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp,multBins,multLow,multUp);
572 fhTPCEventMult->GetXaxis()->SetTitle(fCentralityTag);
573 fhTPCEventMult->GetYaxis()->SetTitle("Multiplicity");
574 fhTPCEventMult->GetZaxis()->SetTitle("1/N_{Events} dN/dCentdN_{Charged}");
575 fhTPCEventMult->Sumw2();
576
577 fhEMCalTrackEventMult = new TH2D("fhEMCalTrackEventMult","EMCal Track Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp,multBins,multLow,multUp);
578 fhEMCalTrackEventMult->GetXaxis()->SetTitle(fCentralityTag);
579 fhEMCalTrackEventMult->GetYaxis()->SetTitle("Multiplicity");
580 fhEMCalTrackEventMult->GetZaxis()->SetTitle("1/N_{Events} dN/dCentdN_{Neutral}");
581 fhEMCalTrackEventMult->Sumw2();
582
583 fpTPCEventMult = new TProfile("fpTPCEventMult","TPC Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp);
584 fpTPCEventMult->GetXaxis()->SetTitle(fCentralityTag);
585 fpTPCEventMult->GetYaxis()->SetTitle("Multiplicity");
586
587 // QA::2D Energy Density Profiles for Tracks and Clusters
588 fpTrackPtProfile = new TProfile2D("fpTrackPtProfile","2D Profile of track pT density throughout the TPC",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
589 fpTrackPtProfile->GetXaxis()->SetTitle("#eta");
590 fpTrackPtProfile->GetYaxis()->SetTitle("#varphi");
591 fpTrackPtProfile->GetZaxis()->SetTitle("p_{T} density (GeV/Area)");
592
593 flTrack->Add(fhTrackPt);
594 flTrack->Add(fhTrackEta);
595 flTrack->Add(fhTrackPhi);
596 flTrack->Add(fhTrackEtaPhi);
597 flTrack->Add(fhTrackPhiPt);
598 flTrack->Add(fhTrackEtaPt);
62620fff 599 flTrack->Add(fhGlobalTrackPt);
600 flTrack->Add(fhGlobalTrackEta);
601 flTrack->Add(fhGlobalTrackPhi);
602 flTrack->Add(fhGlobalTrackEtaPhi);
603 flTrack->Add(fhGlobalTrackPhiPt);
604 flTrack->Add(fhGlobalTrackEtaPt);
62620fff 605 flTrack->Add(fhComplementaryTrackPt);
606 flTrack->Add(fhComplementaryTrackEta);
607 flTrack->Add(fhComplementaryTrackPhi);
608 flTrack->Add(fhComplementaryTrackEtaPhi);
609 flTrack->Add(fhComplementaryTrackPhiPt);
610 flTrack->Add(fhComplementaryTrackEtaPt);
62620fff 611 flTrack->Add(fhTPCEventMult);
612 flTrack->Add(fhEMCalTrackEventMult);
613 flTrack->Add(fpTPCEventMult);
614 flTrack->Add(fpTrackPtProfile);
615 fOutput->Add(flTrack);
616 }
c54b626a 617
62620fff 618 if (fClusterQA==kTRUE)
619 {
620 flCluster = new TList();
621 flCluster->SetName("ClusterQA");
622
623 fhClusterPt = new TH1D("fhClusterPt","p_{T} distribution of clusters in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
624 fhClusterPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
625 fhClusterPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
626 fhClusterPt->Sumw2();
627
628 fhClusterPhi = new TH1D("fhClusterPhi","#varphi distribution of clusters in event",TCBins,fTPCPhiMin,fTPCPhiMax);
629 fhClusterPhi->GetXaxis()->SetTitle("#varphi");
630 fhClusterPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
631 fhClusterPhi->Sumw2();
632
633 fhClusterEta = new TH1D("fhClusterEta","#eta distribution of clusters in event",TCBins,fTPCEtaMin,fTPCEtaMax);
634 fhClusterEta->GetXaxis()->SetTitle("#eta");
635 fhClusterEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
636 fhClusterEta->Sumw2();
637
638 fhClusterEtaPhi = new TH2D("fhClusterEtaPhi","#eta-#varphi distribution of clusters in event",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
639 fhClusterEtaPhi->GetXaxis()->SetTitle("#eta");
640 fhClusterEtaPhi->GetYaxis()->SetTitle("#varphi");
641 fhClusterEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
642 fhClusterEtaPhi->Sumw2();
643
644 fhClusterPhiPt = new TH2D("fhClusterPhiPt","#varphi-p_{T} distribution of clusters in event",TCBins,fEMCalPhiMin,fEMCalPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
645 fhClusterPhiPt->GetXaxis()->SetTitle("#varphi");
646 fhClusterPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
647 fhClusterPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
648 fhClusterPhiPt->Sumw2();
649
650 fhClusterEtaPt = new TH2D("fhClusterEtaPt","#eta-p_{T} distribution of clusters in event",TCBins,fEMCalEtaMin,fEMCalEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
651 fhClusterEtaPt->GetXaxis()->SetTitle("#varphi");
652 fhClusterEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
653 fhClusterEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
654 fhClusterEtaPt->Sumw2();
2d2100d5 655
62620fff 656 fhEMCalEventMult = new TH2D("fhEMCalEventMult","EMCal Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp,multBins,multLow,multUp);
657 fhEMCalEventMult->GetXaxis()->SetTitle(fCentralityTag);
658 fhEMCalEventMult->GetYaxis()->SetTitle("Multiplicity");
659 fhEMCalEventMult->GetZaxis()->SetTitle("1/N_{Events} dN/dCentdN_{Neutral}");
660 fhEMCalEventMult->Sumw2();
661
662 fpEMCalEventMult = new TProfile("fpEMCalEventMult","EMCal Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp);
663 fpEMCalEventMult->GetXaxis()->SetTitle(fCentralityTag);
664 fpEMCalEventMult->GetYaxis()->SetTitle("Multiplicity");
665
666 fpClusterPtProfile = new TProfile2D("fpClusterPtProfile","2D Profile of cluster pT density throughout the EMCal",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
667 fpClusterPtProfile->GetXaxis()->SetTitle("#eta");
668 fpClusterPtProfile->GetYaxis()->SetTitle("#varphi");
669 fpClusterPtProfile->GetZaxis()->SetTitle("p_{T} density (GeV/Area)");
670
671 fhEMCalCellCounts = new TH1D("fhEMCalCellCounts","Distribtuion of cluster counts across the EMCal",fnEMCalCells,1,fnEMCalCells);
672 fhEMCalCellCounts->GetXaxis()->SetTitle("Absoulute Cell Id");
673 fhEMCalCellCounts->GetYaxis()->SetTitle("Counts per Event");
674 fhEMCalCellCounts->Sumw2();
675
676 flCluster->Add(fhClusterPt);
677 flCluster->Add(fhClusterEta);
678 flCluster->Add(fhClusterPhi);
679 flCluster->Add(fhClusterEtaPhi);
680 flCluster->Add(fhClusterPhiPt);
681 flCluster->Add(fhClusterEtaPt);
62620fff 682 flCluster->Add(fhEMCalEventMult);
683 flCluster->Add(fpEMCalEventMult);
684 flCluster->Add(fpClusterPtProfile);
685 flCluster->Add(fhEMCalCellCounts);
686 fOutput->Add(flCluster);
687 }
c6202663 688
62620fff 689 if (fCalculateRhoJet>=0) // Default Rho & Raw Jet Spectra
690 {
691 fEMCalRawJets = new AlipAJetHistos("EMCalRawJets",fCentralityTag);
692
693 fRhoChargedCMSScale = new AlipAJetHistos("RhoChargedCMSScale",fCentralityTag,fDoNEF);
694 fRhoChargedCMSScale->SetSignalTrackPtBias(fSignalTrackBias);
3e43a01f 695
62620fff 696 fOutput->Add(fEMCalRawJets->GetOutputHistos());
697 fOutput->Add(fRhoChargedCMSScale->GetOutputHistos());
698
699 }
700 if (fCalculateRhoJet>=1) // Basic Rho & Raw Jet Spectra
701 {
702 fRhoChargedScale = new AlipAJetHistos("RhoChargedScale",fCentralityTag);
703 fRhoChargedScale->SetSignalTrackPtBias(fSignalTrackBias);
704
705 fOutput->Add(fRhoChargedScale->GetOutputHistos());
706 }
707 if (fCalculateRhoJet>=2) // Basic Rho & Raw Jet Spectra
708 {
709 fTPCRawJets = new AlipAJetHistos("TPCRawJets",fCentralityTag);
710 fRhoFull0 = new AlipAJetHistos("RhoFull0",fCentralityTag);
711 fRhoFull0->SetSignalTrackPtBias(fSignalTrackBias);
712 fRhoFull1 = new AlipAJetHistos("RhoFull1",fCentralityTag);
713 fRhoFull1->SetSignalTrackPtBias(fSignalTrackBias);
714 fRhoFull2 = new AlipAJetHistos("RhoFull2",fCentralityTag);
715 fRhoFull2->SetSignalTrackPtBias(fSignalTrackBias);
716 fRhoFullN = new AlipAJetHistos("RhoFullN",fCentralityTag);
717 fRhoFullN->SetSignalTrackPtBias(fSignalTrackBias);
718 fRhoFullDijet = new AlipAJetHistos("RhoFullDijet",fCentralityTag);
719 fRhoFullDijet->SetSignalTrackPtBias(fSignalTrackBias);
720 fRhoFullkT = new AlipAJetHistos("RhoFullkT",fCentralityTag);
721 fRhoFullkT->SetSignalTrackPtBias(fSignalTrackBias);
722 fRhoFullCMS = new AlipAJetHistos("RhoFullCMS",fCentralityTag);
723 fRhoFullCMS->SetSignalTrackPtBias(fSignalTrackBias);
724 fRhoCharged0 = new AlipAJetHistos("RhoCharged0",fCentralityTag);
725 fRhoCharged0->SetSignalTrackPtBias(fSignalTrackBias);
726 fRhoCharged1 = new AlipAJetHistos("RhoCharged1",fCentralityTag);
727 fRhoCharged1->SetSignalTrackPtBias(fSignalTrackBias);
728 fRhoCharged2 = new AlipAJetHistos("RhoCharged2",fCentralityTag);
729 fRhoCharged2->SetSignalTrackPtBias(fSignalTrackBias);
730 fRhoChargedN = new AlipAJetHistos("RhoChargedN",fCentralityTag);
731 fRhoChargedN->SetSignalTrackPtBias(fSignalTrackBias);
732 fRhoChargedkT = new AlipAJetHistos("RhoChargedkT",fCentralityTag);
733 fRhoChargedkT->SetSignalTrackPtBias(fSignalTrackBias);
734 fRhoChargedkTScale = new AlipAJetHistos("RhoChargedkTScale",fCentralityTag);
735 fRhoChargedkTScale->SetSignalTrackPtBias(fSignalTrackBias);
736 fRhoChargedCMS = new AlipAJetHistos("RhoChargedCMS",fCentralityTag);
737 fRhoChargedCMS->SetSignalTrackPtBias(fSignalTrackBias);
738
739 fOutput->Add(fTPCRawJets->GetOutputHistos());
740 fOutput->Add(fRhoFull0->GetOutputHistos());
741 fOutput->Add(fRhoFull1->GetOutputHistos());
742 fOutput->Add(fRhoFull2->GetOutputHistos());
743 fOutput->Add(fRhoFullN->GetOutputHistos());
744 fOutput->Add(fRhoFullDijet->GetOutputHistos());
745 fOutput->Add(fRhoFullkT->GetOutputHistos());
746 fOutput->Add(fRhoFullCMS->GetOutputHistos());
747 fOutput->Add(fRhoCharged0->GetOutputHistos());
748 fOutput->Add(fRhoCharged1->GetOutputHistos());
749 fOutput->Add(fRhoCharged2->GetOutputHistos());
750 fOutput->Add(fRhoChargedN->GetOutputHistos());
751 fOutput->Add(fRhoChargedkT->GetOutputHistos());
752 fOutput->Add(fRhoChargedkTScale->GetOutputHistos());
753 fOutput->Add(fRhoChargedCMS->GetOutputHistos());
754 }
3e43a01f 755
c54b626a 756 fOutput->Add(fhCentrality);
62620fff 757
ac6a3f1e 758 // Post data for ALL output slots >0 here,
759 // To get at least an empty histogram
760 // 1 is the outputnumber of a certain weg of task 1
761 PostData(1, fOutput);
762}
763
764void AliAnalysisTaskFullpAJets::UserExecOnce()
765{
d812e269 766 // Get the event tracks
767 fOrgTracks = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fTrackName));
ac6a3f1e 768
d812e269 769 // Get the event caloclusters
770 fOrgClusters = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fClusName));
ac6a3f1e 771
772 // Get charged jets
d812e269 773 fmyKTChargedJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fkTChargedName));
774 fmyAKTChargedJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fAkTChargedName));
78246241 775
ac6a3f1e 776 // Get the full jets
d812e269 777 fmyKTFullJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fkTFullName));
778 fmyAKTFullJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fAkTFullName));
779
ac6a3f1e 780 fIsInitialized=kTRUE;
781}
782//________________________________________________________________________
783void AliAnalysisTaskFullpAJets::UserExec(Option_t *)
784{
785 if (fIsInitialized==kFALSE)
786 {
787 UserExecOnce();
788 }
789
790 // Get pointer to reconstructed event
08b981da 791 fEvent = InputEvent();
792 if (!fEvent)
ac6a3f1e 793 {
794 AliError("Pointer == 0, this can not happen!");
795 return;
796 }
797
08b981da 798 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(fEvent);
799 AliAODEvent* aod = dynamic_cast<AliAODEvent*>(fEvent);
800
801 fRecoUtil = new AliEMCALRecoUtils();
802 fEMCALGeometry = AliEMCALGeometry::GetInstance();
ac6a3f1e 803
804 if (esd)
805 {
c6202663 806 fEventCentrality=esd->GetCentrality()->GetCentralityPercentile(fCentralityTag);
ac6a3f1e 807
808 if (esd->GetPrimaryVertex()->GetNContributors()<1 || (TMath::Abs(esd->GetPrimaryVertex()->GetZ())>fVertexWindow))
809 {
810 return;
811 }
812 if (TMath::Sqrt(TMath::Power(esd->GetPrimaryVertex()->GetX(),2)+TMath::Power(esd->GetPrimaryVertex()->GetY(),2))>fVertexMaxR)
813 {
814 return;
815 }
816
8daeee93 817 esd->GetPrimaryVertex()->GetXYZ(fVertex);
08b981da 818 fCells = (AliVCaloCells*) esd->GetEMCALCells();
819 fnCaloClusters = esd->GetNumberOfCaloClusters();
ac6a3f1e 820 }
821 else if (aod)
822 {
c6202663 823 fEventCentrality=aod->GetCentrality()->GetCentralityPercentile(fCentralityTag);
ac6a3f1e 824
825 if (aod->GetPrimaryVertex()->GetNContributors()<1 || (TMath::Abs(aod->GetPrimaryVertex()->GetZ())>fVertexWindow))
826 {
827 return;
828 }
829 if (TMath::Sqrt(TMath::Power(aod->GetPrimaryVertex()->GetX(),2)+TMath::Power(aod->GetPrimaryVertex()->GetY(),2))>fVertexMaxR)
830 {
831 return;
832 }
833
8daeee93 834 aod->GetPrimaryVertex()->GetXYZ(fVertex);
08b981da 835 fCells = (AliVCaloCells*) aod->GetEMCALCells();
836 fnCaloClusters = aod->GetNumberOfCaloClusters();
ac6a3f1e 837 }
838 else
839 {
840 AliError("Cannot get AOD/ESD event. Rejecting Event");
841 return;
842 }
843
844 // Make sure Centrality isn't exactly 100% (to avoid bin filling errors in profile plots. Make it 99.99
845 if (fEventCentrality>99.99)
846 {
847 fEventCentrality=99.99;
848 }
c54b626a 849 fhCentrality->Fill(fEventCentrality);
ac6a3f1e 850
c6202663 851 TrackCuts();
ac6a3f1e 852 // Reject any event that doesn't have any tracks, i.e. TPC is off
853 if (fnTracks<1)
854 {
25322962
ML
855 if (fTrackQA==kTRUE)
856 {
857 fhTPCEventMult->Fill(fEventCentrality,0.0);
858 fpTPCEventMult->Fill(fEventCentrality,0.0);
859 fhEMCalTrackEventMult->Fill(fEventCentrality,0.0);
860 }
ac6a3f1e 861 AliWarning("No PicoTracks, Rejecting Event");
862 return;
863 }
d812e269 864
c6202663 865 ClusterCuts();
ac6a3f1e 866 if (fnClusters<1)
867 {
868 AliInfo("No Corrected CaloClusters, using only charged jets");
869
62620fff 870 if (fTrackQA==kTRUE)
871 {
872 TrackHisto();
873 }
ac6a3f1e 874 InitChargedJets();
c6202663 875 GenerateTPCRandomConesPt();
cf074128 876
25322962
ML
877 if (fClusterQA==kTRUE)
878 {
879 fhEMCalEventMult->Fill(fEventCentrality,0.0);
880 fpEMCalEventMult->Fill(fEventCentrality,0.0);
881 }
882
c6202663 883 // Rho's
62620fff 884 if (fCalculateRhoJet>=2)
885 {
886 EstimateChargedRho0();
887 EstimateChargedRho1();
888 EstimateChargedRho2();
889 EstimateChargedRhoN();
890 EstimateChargedRhokT();
891 EstimateChargedRhoCMS();
892 }
c6202663 893
c6202663 894 DeleteJetData(kFALSE);
ac6a3f1e 895
896 fnEventsCharged++;
c6202663 897
898 PostData(1, fOutput);
ac6a3f1e 899 return;
900 }
d812e269 901
62620fff 902 if (fTrackQA==kTRUE)
903 {
904 TrackHisto();
905 }
906 if (fClusterQA==kTRUE)
907 {
908 ClusterHisto();
909 }
ac6a3f1e 910
911 // Prep the jets
912 InitChargedJets();
913 InitFullJets();
c6202663 914 GenerateTPCRandomConesPt();
915 GenerateEMCalRandomConesPt();
916
62620fff 917 if (fCalculateRhoJet>=0)
ac6a3f1e 918 {
62620fff 919 EstimateChargedRhoCMSScale();
7acc3e04 920 }
62620fff 921 if (fCalculateRhoJet>=1)
922 {
923 EstimateChargedRhoScale();
924 }
925 if (fCalculateRhoJet>=2)
926 {
927 EstimateChargedRho0();
928 EstimateChargedRho1();
929 EstimateChargedRho2();
930 EstimateChargedRhoN();
931 EstimateChargedRhokT();
932 EstimateChargedRhoCMS();
933
934 EstimateFullRho0();
935 EstimateFullRho1();
936 EstimateFullRho2();
937 EstimateFullRhoN();
938 EstimateFullRhokT();
939 EstimateFullRhoCMS();
940
941 EstimateChargedRhokTScale();
942
943 // Dijet
944 if (IsDiJetEvent()==kTRUE)
945 {
946 EstimateFullRhoDijet();
947 }
948 }
949
ac6a3f1e 950 // Delete Dynamic Arrays
c6202663 951 DeleteJetData(kTRUE);
08b981da 952 delete fRecoUtil;
ac6a3f1e 953 fnEvents++;
954
955 PostData(1, fOutput);
956}
957
958//________________________________________________________________________
959void AliAnalysisTaskFullpAJets::Terminate(Option_t *) //specify what you want to have done
960{
961 // Called once at the end of the query. Done nothing here.
ac6a3f1e 962}
963
964/////////////////////////////////////////////////////////////////////////////////////////
965///////////////// User Defined Sub_Routines ///////////////////////////////////////
966/////////////////////////////////////////////////////////////////////////////////////////
967
c6202663 968void AliAnalysisTaskFullpAJets::TrackCuts()
969{
970 // Fill a TObjArray with the tracks from a TClonesArray which grabs the picotracks.
971 Int_t i;
972
973 fmyTracks = new TObjArray();
974 for (i=0;i<fOrgTracks->GetEntries();i++)
975 {
976 AliVTrack* vtrack = (AliVTrack*) fOrgTracks->At(i);
977 if (vtrack->Pt()>=fTrackMinPt)
978 {
979 fmyTracks->Add(vtrack);
980 }
981 }
982 fnTracks = fmyTracks->GetEntries();
983}
984
985void AliAnalysisTaskFullpAJets::ClusterCuts()
986{
987 // Fill a TObjArray with the clusters from a TClonesArray which grabs the caloclusterscorr.
988 Int_t i;
989
990 fmyClusters = new TObjArray();
62620fff 991 TLorentzVector *cluster_vec = new TLorentzVector;
992
20f2d13a 993 if(fOrgClusters)
c6202663 994 {
20f2d13a 995 for (i=0;i<fOrgClusters->GetEntries();i++)
c6202663 996 {
20f2d13a 997 AliVCluster* vcluster = (AliVCluster*) fOrgClusters->At(i);
8daeee93 998 vcluster->GetMomentum(*cluster_vec,fVertex);
20f2d13a 999
36cb7ae2 1000 if (cluster_vec->Pt()>=fClusterMinPt && vcluster->IsEMCAL()==kTRUE)
20f2d13a 1001 {
1002 fmyClusters->Add(vcluster);
1003 }
c6202663 1004 }
c6202663 1005 }
1006 fnClusters = fmyClusters->GetEntries();
62620fff 1007 delete cluster_vec;
c6202663 1008}
1009
ac6a3f1e 1010void AliAnalysisTaskFullpAJets::TrackHisto()
1011{
1012 // Fill track histograms: Phi,Eta,Pt
1013 Int_t i,j;
1014 Int_t TCBins=100;
1015 TH2D *hdummypT= new TH2D("hdummypT","",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax); //!
1016
1017 for (i=0;i<fnTracks;i++)
1018 {
62620fff 1019 AliPicoTrack* vtrack = (AliPicoTrack*) fmyTracks->At(i);
ac6a3f1e 1020 fhTrackPt->Fill(vtrack->Pt());
1021 fhTrackEta->Fill(vtrack->Eta());
1022 fhTrackPhi->Fill(vtrack->Phi());
1023 fhTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
24a61909 1024 fhTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
1025 fhTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
24a61909 1026
1027 // Fill Associated Track Distributions for AOD QA Productions
1028 // Global Tracks
1029 if (vtrack->GetTrackType()==0)
1030 {
1031 fhGlobalTrackPt->Fill(vtrack->Pt());
1032 fhGlobalTrackEta->Fill(vtrack->Eta());
1033 fhGlobalTrackPhi->Fill(vtrack->Phi());
1034 fhGlobalTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
1035 fhGlobalTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
1036 fhGlobalTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
24a61909 1037 }
1038 // Complementary Tracks
1039 else if (vtrack->GetTrackType()==1)
1040 {
1041 fhComplementaryTrackPt->Fill(vtrack->Pt());
1042 fhComplementaryTrackEta->Fill(vtrack->Eta());
1043 fhComplementaryTrackPhi->Fill(vtrack->Phi());
1044 fhComplementaryTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
1045 fhComplementaryTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
1046 fhComplementaryTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
24a61909 1047 }
ac6a3f1e 1048 hdummypT->Fill(vtrack->Eta(),vtrack->Phi(),vtrack->Pt());
1049 }
1050 for (i=1;i<=TCBins;i++)
1051 {
1052 for (j=1;j<=TCBins;j++)
1053 {
1054 fpTrackPtProfile->Fill(hdummypT->GetXaxis()->GetBinCenter(i),hdummypT->GetYaxis()->GetBinCenter(j),fTPCArea*TMath::Power(TCBins,-2)*hdummypT->GetBinContent(i,j));
1055 }
1056 }
1057 delete hdummypT;
1058}
1059
1060void AliAnalysisTaskFullpAJets::ClusterHisto()
1061{
1062 // Fill cluster histograms: Phi,Eta,Pt
1063 Int_t i,j;
1064 Int_t TCBins=100;
1065 TH2D *hdummypT= new TH2D("hdummypT","",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax); //!
ac6a3f1e 1066 Int_t myCellID=-2;
62620fff 1067 TLorentzVector *cluster_vec = new TLorentzVector;
ac6a3f1e 1068
1069 for (i=0;i<fnClusters;i++)
1070 {
1071 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
8daeee93 1072 vcluster->GetMomentum(*cluster_vec,fVertex);
ac6a3f1e 1073
1074 fhClusterPt->Fill(cluster_vec->Pt());
1075 fhClusterEta->Fill(cluster_vec->Eta());
1076 fhClusterPhi->Fill(cluster_vec->Phi());
1077 fhClusterEtaPhi->Fill(cluster_vec->Eta(),cluster_vec->Phi());
24a61909 1078 fhClusterPhiPt->Fill(cluster_vec->Phi(),cluster_vec->Pt());
1079 fhClusterEtaPt->Fill(cluster_vec->Eta(),cluster_vec->Pt());
ac6a3f1e 1080 hdummypT->Fill(cluster_vec->Eta(),cluster_vec->Phi(),cluster_vec->Pt());
08b981da 1081 fEMCALGeometry->GetAbsCellIdFromEtaPhi(cluster_vec->Eta(),cluster_vec->Phi(),myCellID);
ac6a3f1e 1082 fhEMCalCellCounts->Fill(myCellID);
ac6a3f1e 1083 }
1084 for (i=1;i<=TCBins;i++)
1085 {
1086 for (j=1;j<=TCBins;j++)
1087 {
1088 fpClusterPtProfile->Fill(hdummypT->GetXaxis()->GetBinCenter(i),hdummypT->GetYaxis()->GetBinCenter(j),fEMCalArea*TMath::Power(TCBins,-2)*hdummypT->GetBinContent(i,j));
1089 }
1090 }
ac6a3f1e 1091 delete hdummypT;
62620fff 1092 delete cluster_vec;
ac6a3f1e 1093}
1094
c6202663 1095void AliAnalysisTaskFullpAJets::InitChargedJets()
1096{
1097 // Preliminary Jet Placement and Selection Cuts
1098 Int_t i;
1099
1100 fnAKTChargedJets = fmyAKTChargedJets->GetEntries();
1101 fnKTChargedJets = fmyKTChargedJets->GetEntries();
1102
1103 fTPCJet = new AlipAJetData("fTPCJet",kFALSE,fnAKTChargedJets);
1104 fTPCFullJet = new AlipAJetData("fTPCFullJet",kFALSE,fnAKTChargedJets);
1105 fTPCOnlyJet = new AlipAJetData("fTPCOnlyJet",kFALSE,fnAKTChargedJets);
8daeee93 1106 fTPCJetUnbiased = new AlipAJetData("fTPCJetUnbiased",kFALSE,fnAKTChargedJets);
c6202663 1107
1108 fTPCJet->SetSignalCut(fTPCJetThreshold);
1109 fTPCJet->SetAreaCutFraction(fJetAreaCutFrac);
1110 fTPCJet->SetJetR(fJetR);
3e43a01f 1111 fTPCJet->SetSignalTrackPtBias(fSignalTrackBias);
c6202663 1112 fTPCFullJet->SetSignalCut(fTPCJetThreshold);
1113 fTPCFullJet->SetAreaCutFraction(fJetAreaCutFrac);
1114 fTPCFullJet->SetJetR(fJetR);
3e43a01f 1115 fTPCFullJet->SetSignalTrackPtBias(fSignalTrackBias);
c6202663 1116 fTPCOnlyJet->SetSignalCut(fTPCJetThreshold);
1117 fTPCOnlyJet->SetAreaCutFraction(fJetAreaCutFrac);
1118 fTPCOnlyJet->SetJetR(fJetR);
3e43a01f 1119 fTPCOnlyJet->SetSignalTrackPtBias(fSignalTrackBias);
8daeee93 1120 fTPCJetUnbiased->SetSignalCut(fTPCJetThreshold);
1121 fTPCJetUnbiased->SetAreaCutFraction(fJetAreaCutFrac);
1122 fTPCJetUnbiased->SetJetR(fJetR);
1123 fTPCJetUnbiased->SetSignalTrackPtBias(kFALSE);
c6202663 1124
1125 // Initialize Jet Data
1126 for (i=0;i<fnAKTChargedJets;i++)
1127 {
1128 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(i);
1129
1130 fTPCJet->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kFALSE),i);
1131 fTPCFullJet->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kTRUE),i);
1132 fTPCOnlyJet->SetIsJetInArray(IsInTPCFull(fJetR,myJet->Phi(),myJet->Eta()),i);
8daeee93 1133 fTPCJetUnbiased->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kFALSE),i);
c6202663 1134 }
1135 fTPCJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1136 fTPCFullJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1137 fTPCOnlyJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
8daeee93 1138 fTPCJetUnbiased->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
c6202663 1139
1140 // kT Jets
1141 fTPCkTFullJet = new AlipAJetData("fTPCkTFullJet",kFALSE,fnKTChargedJets);
1142 fTPCkTFullJet->SetSignalCut(fTPCJetThreshold);
1143 fTPCkTFullJet->SetAreaCutFraction(0.25*fJetAreaCutFrac);
1144 fTPCkTFullJet->SetJetR(fJetR);
1145
1146 for (i=0;i<fnKTChargedJets;i++)
1147 {
1148 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(i);
1149 fTPCkTFullJet->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kTRUE),i);
1150 }
1151 fTPCkTFullJet->InitializeJetData(fmyKTChargedJets,fnKTChargedJets);
1152
1153 // Raw Charged Jet Spectra
62620fff 1154 if (fCalculateRhoJet>=2)
1155 {
1156 fTPCRawJets->FillBSJS(fEventCentrality,0.0,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1157 }
c6202663 1158}
1159
1160void AliAnalysisTaskFullpAJets::InitFullJets()
1161{
1162 // Preliminary Jet Placement and Selection Cuts
1163 Int_t i;
1164
1165 fnAKTFullJets = fmyAKTFullJets->GetEntries();
1166 fnKTFullJets = fmyKTFullJets->GetEntries();
1167
1168 fEMCalJet = new AlipAJetData("fEMCalJet",kTRUE,fnAKTFullJets);
1169 fEMCalFullJet = new AlipAJetData("fEMCalFullJet",kTRUE,fnAKTFullJets);
1170 fEMCalPartJet = new AlipAJetData("fEMCalPartJet",kTRUE,fnAKTFullJets);
8daeee93 1171 fEMCalPartJetUnbiased = new AlipAJetData("fEMCalPartJetUnbiased",kTRUE,fnAKTFullJets);
c6202663 1172
1173 fEMCalJet->SetSignalCut(fEMCalJetThreshold);
1174 fEMCalJet->SetAreaCutFraction(fJetAreaCutFrac);
1175 fEMCalJet->SetJetR(fJetR);
91d0893e 1176 fEMCalJet->SetNEF(fNEFSignalJetCut);
3e43a01f 1177 fEMCalJet->SetSignalTrackPtBias(fSignalTrackBias);
c6202663 1178 fEMCalFullJet->SetSignalCut(fEMCalJetThreshold);
1179 fEMCalFullJet->SetAreaCutFraction(fJetAreaCutFrac);
1180 fEMCalFullJet->SetJetR(fJetR);
91d0893e 1181 fEMCalFullJet->SetNEF(fNEFSignalJetCut);
3e43a01f 1182 fEMCalFullJet->SetSignalTrackPtBias(fSignalTrackBias);
c6202663 1183 fEMCalPartJet->SetSignalCut(fEMCalJetThreshold);
1184 fEMCalPartJet->SetAreaCutFraction(fJetAreaCutFrac);
1185 fEMCalPartJet->SetJetR(fJetR);
91d0893e 1186 fEMCalPartJet->SetNEF(fNEFSignalJetCut);
3e43a01f 1187 fEMCalPartJet->SetSignalTrackPtBias(fSignalTrackBias);
8daeee93 1188 fEMCalPartJetUnbiased->SetSignalCut(fEMCalJetThreshold);
1189 fEMCalPartJetUnbiased->SetAreaCutFraction(fJetAreaCutFrac);
1190 fEMCalPartJetUnbiased->SetJetR(fJetR);
1191 fEMCalPartJetUnbiased->SetNEF(1.0);
1192 fEMCalPartJetUnbiased->SetSignalTrackPtBias(kFALSE);
c6202663 1193
1194 // Initialize Jet Data
1195 for (i=0;i<fnAKTFullJets;i++)
1196 {
1197 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(i);
1198
1199 fEMCalJet->SetIsJetInArray(IsInEMCal(myJet->Phi(),myJet->Eta()),i);
1200 fEMCalFullJet->SetIsJetInArray(IsInEMCalFull(fJetR,myJet->Phi(),myJet->Eta()),i);
1201 fEMCalPartJet->SetIsJetInArray(IsInEMCalPart(fJetR,myJet->Phi(),myJet->Eta()),i);
8daeee93 1202 fEMCalPartJetUnbiased->SetIsJetInArray(IsInEMCalPart(fJetR,myJet->Phi(),myJet->Eta()),i);
c6202663 1203 }
1204 fEMCalJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1205 fEMCalFullJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1206 fEMCalPartJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
8daeee93 1207 fEMCalPartJetUnbiased->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
c6202663 1208
1209 // kT Jets
1210 fEMCalkTFullJet = new AlipAJetData("fEMCalkTFullJet",kTRUE,fnKTFullJets);
1211 fEMCalkTFullJet->SetSignalCut(fEMCalJetThreshold);
1212 fEMCalkTFullJet->SetAreaCutFraction(0.25*fJetAreaCutFrac);
1213 fEMCalkTFullJet->SetJetR(fJetR);
91d0893e 1214 fEMCalkTFullJet->SetNEF(fNEFSignalJetCut);
3e43a01f 1215 fEMCalkTFullJet->SetSignalTrackPtBias(fSignalTrackBias);
c6202663 1216
1217 for (i=0;i<fnKTFullJets;i++)
1218 {
1219 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(i);
1220 fEMCalkTFullJet->SetIsJetInArray(IsInEMCalFull(fJetR,myJet->Phi(),myJet->Eta()),i);
1221 }
1222 fEMCalkTFullJet->InitializeJetData(fmyKTFullJets,fnKTFullJets);
1223
1224 // Raw Full Jet Spectra
1225 fEMCalRawJets->FillBSJS(fEventCentrality,0.0,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
1226}
1227
c6202663 1228void AliAnalysisTaskFullpAJets::GenerateTPCRandomConesPt()
ac6a3f1e 1229{
1230 Int_t i,j;
1231 Double_t E_tracks_total=0.;
ac6a3f1e 1232 TRandom3 u(time(NULL));
1233
c6202663 1234 Double_t Eta_Center=0.5*(fTPCEtaMin+fTPCEtaMax);
1235 Double_t Phi_Center=0.5*(fTPCPhiMin+fTPCPhiMax);
ac6a3f1e 1236 Int_t event_mult=0;
3e43a01f 1237 Int_t event_track_mult=0;
ac6a3f1e 1238 Int_t clus_mult=0;
1239
c6202663 1240 for (i=0;i<fnBckgClusters;i++)
1241 {
1242 fTPCRCBckgFluc[i]=0.0;
1243 fTPCRCBckgFlucSignal[i]=0.0;
7acc3e04 1244 fTPCRCBckgFlucNColl[i]=0.0;
c6202663 1245 }
1246
ac6a3f1e 1247 TLorentzVector *dummy= new TLorentzVector;
c6202663 1248 TLorentzVector *temp_jet= new TLorentzVector;
62620fff 1249 TLorentzVector *track_vec = new TLorentzVector;
1250
c6202663 1251 // First, consider the RC with no spatial restrictions
ac6a3f1e 1252 for (j=0;j<fnBckgClusters;j++)
1253 {
ac6a3f1e 1254 E_tracks_total=0.;
ac6a3f1e 1255
c6202663 1256 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
ac6a3f1e 1257 // Loop over all tracks
1258 for (i=0;i<fnTracks;i++)
1259 {
1260 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
c6202663 1261 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
ac6a3f1e 1262 {
ac6a3f1e 1263 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1264 if (dummy->DeltaR(*track_vec)<fJetR)
1265 {
ac6a3f1e 1266 E_tracks_total+=vtrack->Pt();
1267 }
ac6a3f1e 1268 }
1269 }
c6202663 1270 fTPCRCBckgFlucSignal[j]=E_tracks_total;
1271 }
1272
1273 // Now, consider the RC where the vertex of RC is at least 2R away from the leading signal
1274 E_tracks_total=0.0;
8daeee93 1275 if (fTPCJetUnbiased->GetLeadingPt()<0.0)
c6202663 1276 {
1277 temp_jet->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1278 }
1279 else
1280 {
8daeee93 1281 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetLeadingIndex());
c6202663 1282 myJet->GetMom(*temp_jet);
1283 }
1284
1285 for (j=0;j<fnBckgClusters;j++)
1286 {
1287 event_mult=0;
3e43a01f 1288 event_track_mult=0;
c6202663 1289 clus_mult=0;
1290 E_tracks_total=0.;
ac6a3f1e 1291
c6202663 1292 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1293 while (temp_jet->DeltaR(*dummy)<fJetR)
ac6a3f1e 1294 {
c6202663 1295 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
ac6a3f1e 1296 }
c6202663 1297 // Loop over all tracks
1298 for (i=0;i<fnTracks;i++)
ac6a3f1e 1299 {
c6202663 1300 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1301 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1302 {
1303 event_mult++;
3e43a01f 1304 if (IsInEMCal(vtrack->Phi(),vtrack->Eta()==kTRUE))
1305 {
1306 event_track_mult++;
1307 }
c6202663 1308 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1309 if (dummy->DeltaR(*track_vec)<fJetR)
1310 {
1311 clus_mult++;
1312 E_tracks_total+=vtrack->Pt();
1313 }
c6202663 1314 }
ac6a3f1e 1315 }
c6202663 1316 fTPCRCBckgFluc[j]=E_tracks_total;
ac6a3f1e 1317 }
62620fff 1318 if (fTrackQA==kTRUE)
1319 {
1320 fhTPCEventMult->Fill(fEventCentrality,event_mult);
1321 fpTPCEventMult->Fill(fEventCentrality,event_mult);
1322 fhEMCalTrackEventMult->Fill(fEventCentrality,event_track_mult);
1323 }
1324 if (fCalculateRhoJet>=2)
1325 {
1326 fTPCRawJets->FillDeltaPt(fEventCentrality,0.0,fJetR,fTPCRCBckgFluc,1);
1327 }
ac6a3f1e 1328
7acc3e04 1329 // For the case of partial exclusion, merely allow a superposition of full and no exclusion with probability p=1/Ncoll
1330 Double_t exclusion_prob;
1331 for (j=0;j<fnBckgClusters;j++)
1332 {
1333 exclusion_prob = u.Uniform(0,1);
1334 if (exclusion_prob<(1/fNColl))
1335 {
1336 fTPCRCBckgFlucNColl[j]=fTPCRCBckgFlucSignal[j];
1337 }
1338 else
1339 {
1340 fTPCRCBckgFlucNColl[j]=fTPCRCBckgFluc[j];
1341 }
1342 }
1343
ac6a3f1e 1344 delete dummy;
c6202663 1345 delete temp_jet;
62620fff 1346 delete track_vec;
ac6a3f1e 1347}
1348
c6202663 1349void AliAnalysisTaskFullpAJets::GenerateEMCalRandomConesPt()
ac6a3f1e 1350{
78246241 1351 Int_t i,j;
c6202663 1352 Double_t E_tracks_total=0.;
1353 Double_t E_caloclusters_total=0.;
1354 TRandom3 u(time(NULL));
ac6a3f1e 1355
c6202663 1356 Double_t Eta_Center=0.5*(fEMCalEtaMin+fEMCalEtaMax);
1357 Double_t Phi_Center=0.5*(fEMCalPhiMin+fEMCalPhiMax);
1358 Int_t event_mult=0;
1359 Int_t clus_mult=0;
ac6a3f1e 1360
c6202663 1361 for (i=0;i<fnBckgClusters;i++)
ac6a3f1e 1362 {
c6202663 1363 fEMCalRCBckgFluc[i]=0.0;
1364 fEMCalRCBckgFlucSignal[i]=0.0;
7acc3e04 1365 fEMCalRCBckgFlucNColl[i]=0.0;
ac6a3f1e 1366 }
78246241 1367
c6202663 1368 TLorentzVector *dummy= new TLorentzVector;
1369 TLorentzVector *temp_jet= new TLorentzVector;
62620fff 1370 TLorentzVector *track_vec = new TLorentzVector;
1371 TLorentzVector *cluster_vec = new TLorentzVector;
1372
c6202663 1373 // First, consider the RC with no spatial restrictions
1374 for (j=0;j<fnBckgClusters;j++)
78246241 1375 {
c6202663 1376 E_tracks_total=0.;
1377 E_caloclusters_total=0.;
1378
1379 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1380 // Loop over all tracks
1381 for (i=0;i<fnTracks;i++)
78246241 1382 {
c6202663 1383 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1384 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
78246241 1385 {
c6202663 1386 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1387 if (dummy->DeltaR(*track_vec)<fJetR)
78246241 1388 {
c6202663 1389 E_tracks_total+=vtrack->Pt();
78246241 1390 }
78246241 1391 }
1392 }
78246241 1393
c6202663 1394 // Loop over all caloclusters
1395 for (i=0;i<fnClusters;i++)
78246241 1396 {
c6202663 1397 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
8daeee93 1398 vcluster->GetMomentum(*cluster_vec,fVertex);
c6202663 1399 if (dummy->DeltaR(*cluster_vec)<fJetR)
1400 {
1401 clus_mult++;
1402 E_caloclusters_total+=vcluster->E();
1403 }
78246241 1404 }
c6202663 1405 fEMCalRCBckgFlucSignal[j]=E_tracks_total+E_caloclusters_total;
78246241 1406 }
c6202663 1407
1408 // Now, consider the RC where the vertex of RC is at least 2R away from the leading signal
1409 E_tracks_total=0.;
1410 E_caloclusters_total=0.;
8daeee93 1411 if (fEMCalPartJetUnbiased->GetLeadingPt()<0.0)
78246241 1412 {
c6202663 1413 temp_jet->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
78246241 1414 }
c6202663 1415 else
78246241 1416 {
8daeee93 1417 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
c6202663 1418 myJet->GetMom(*temp_jet);
78246241 1419 }
1420
c6202663 1421 for (j=0;j<fnBckgClusters;j++)
78246241 1422 {
c6202663 1423 event_mult=0;
1424 clus_mult=0;
1425 E_tracks_total=0.;
1426 E_caloclusters_total=0.;
1427
1428 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1429 while (temp_jet->DeltaR(*dummy)<fJetR)
1430 {
1431 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1432 }
1433 // Loop over all tracks
1434 for (i=0;i<fnTracks;i++)
1435 {
1436 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1437 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
1438 {
1439 event_mult++;
c6202663 1440 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1441 if (dummy->DeltaR(*track_vec)<fJetR)
1442 {
1443 clus_mult++;
1444 E_tracks_total+=vtrack->Pt();
1445 }
c6202663 1446 }
1447 }
1448
1449 // Loop over all caloclusters
1450 for (i=0;i<fnClusters;i++)
1451 {
1452 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
8daeee93 1453 vcluster->GetMomentum(*cluster_vec,fVertex);
c6202663 1454 event_mult++;
1455 if (dummy->DeltaR(*cluster_vec)<fJetR)
1456 {
1457 clus_mult++;
1458 E_caloclusters_total+=vcluster->E();
1459 }
c6202663 1460 }
1461 fEMCalRCBckgFluc[j]=E_tracks_total+E_caloclusters_total;
78246241 1462 }
62620fff 1463 if (fClusterQA==kTRUE)
1464 {
1465 fhEMCalEventMult->Fill(fEventCentrality,event_mult);
1466 fpEMCalEventMult->Fill(fEventCentrality,event_mult);
1467 }
c6202663 1468 fEMCalRawJets->FillDeltaPt(fEventCentrality,0.0,fJetR,fEMCalRCBckgFluc,1);
1469
7acc3e04 1470 // For the case of partial exclusion, merely allow a superposition of full and no exclusion with probability p=1/Ncoll
1471 Double_t exclusion_prob;
1472 for (j=0;j<fnBckgClusters;j++)
1473 {
1474 exclusion_prob = u.Uniform(0,1);
1475 if (exclusion_prob<(1/fNColl))
1476 {
1477 fEMCalRCBckgFlucNColl[j]=fEMCalRCBckgFlucSignal[j];
1478 }
1479 else
1480 {
1481 fEMCalRCBckgFlucNColl[j]=fEMCalRCBckgFluc[j];
1482 }
1483 }
1484
c6202663 1485 delete dummy;
1486 delete temp_jet;
62620fff 1487 delete track_vec;
1488 delete cluster_vec;
ac6a3f1e 1489}
1490
c6202663 1491// Charged Rho's
1492void AliAnalysisTaskFullpAJets::EstimateChargedRho0()
ac6a3f1e 1493{
ac6a3f1e 1494 Int_t i;
c6202663 1495 Double_t E_tracks_total=0.0;
1496 Double_t TPC_rho=0.;
ac6a3f1e 1497
c6202663 1498 // Loop over all tracks
1499 for (i=0;i<fnTracks;i++)
1500 {
1501 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1502 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1503 {
1504 E_tracks_total+=vtrack->Pt();
1505 }
1506 }
ac6a3f1e 1507
c6202663 1508 // Calculate the mean Background density
1509 TPC_rho=E_tracks_total/fTPCArea;
1510 fRhoCharged=TPC_rho;
ac6a3f1e 1511
c6202663 1512 // Fill Histograms
1513 fRhoCharged0->FillRho(fEventCentrality,TPC_rho);
1514 fRhoCharged0->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCJet->GetJets(),fTPCJet->GetTotalJets());
1515 fRhoCharged0->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1516 fRhoCharged0->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
7acc3e04 1517 fRhoCharged0->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
c6202663 1518 fRhoCharged0->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1519 fRhoCharged0->FillLeadingJetPtRho(fTPCJet->GetLeadingPt(),TPC_rho);
ac6a3f1e 1520
c6202663 1521}
ac6a3f1e 1522
c6202663 1523void AliAnalysisTaskFullpAJets::EstimateChargedRho1()
1524{
1525 Int_t i;
1526 Double_t E_tracks_total=0.0;
1527 Double_t TPC_rho=0.;
1528
62620fff 1529 TLorentzVector *temp_jet= new TLorentzVector;
1530 TLorentzVector *track_vec = new TLorentzVector;
1531
8daeee93 1532 if (fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold)
ac6a3f1e 1533 {
c6202663 1534 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
c6202663 1535 myJet->GetMom(*temp_jet);
ac6a3f1e 1536
c6202663 1537 // Loop over all tracks
1538 for (i=0;i<fnTracks;i++)
1539 {
1540 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1541 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1542 {
c6202663 1543 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1544 if (temp_jet->DeltaR(*track_vec)>fJetRForRho)
1545 {
1546 E_tracks_total+=vtrack->Pt();
1547 }
c6202663 1548 }
1549 }
ac6a3f1e 1550
c6202663 1551 // Calculate the mean Background density
1552 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myJet->Eta()));
1553 }
1554 else // i.e. No signal jets -> same as total background density
1555 {
1556 // Loop over all tracks
1557 for (i=0;i<fnTracks;i++)
ac6a3f1e 1558 {
c6202663 1559 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1560 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
ac6a3f1e 1561 {
c6202663 1562 E_tracks_total+=vtrack->Pt();
ac6a3f1e 1563 }
c6202663 1564 }
1565 // Calculate the mean Background density
1566 TPC_rho=E_tracks_total/fTPCArea;
1567 }
62620fff 1568 delete track_vec;
1569 delete temp_jet;
1570
c6202663 1571 // Fill histograms
1572 fRhoCharged1->FillRho(fEventCentrality,TPC_rho);
1573 fRhoCharged1->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1574 fRhoCharged1->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1575 fRhoCharged1->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
7acc3e04 1576 fRhoCharged1->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
c6202663 1577 fRhoCharged1->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1578 fRhoCharged1->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
1579}
1580
1581void AliAnalysisTaskFullpAJets::EstimateChargedRho2()
1582{
1583 Int_t i;
1584 Double_t E_tracks_total=0.0;
1585 Double_t TPC_rho=0.;
62620fff 1586
1587 TLorentzVector *temp_jet1= new TLorentzVector;
1588 TLorentzVector *temp_jet2= new TLorentzVector;
1589 TLorentzVector *track_vec = new TLorentzVector;
1590
8daeee93 1591 if ((fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJetUnbiased->GetSubLeadingPt()>=fTPCJetThreshold))
c6202663 1592 {
1593 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
c6202663 1594 myhJet->GetMom(*temp_jet1);
1595
1596 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
c6202663 1597 myJet->GetMom(*temp_jet2);
1598
1599 // Loop over all tracks
1600 for (i=0;i<fnTracks;i++)
1601 {
1602 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1603 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
ac6a3f1e 1604 {
c6202663 1605 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1606 if ((temp_jet1->DeltaR(*track_vec)>fJetRForRho) && (temp_jet2->DeltaR(*track_vec)>fJetRForRho))
c54b626a 1607 {
c6202663 1608 E_tracks_total+=vtrack->Pt();
c54b626a 1609 }
c6202663 1610 }
1611 }
c6202663 1612
1613 // Calculate the mean Background density
1614 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myhJet->Eta())-AreaWithinTPC(fJetR,myJet->Eta()));
1615 }
8daeee93 1616 else if (fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold)
c6202663 1617 {
1618 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
62620fff 1619 myJet->GetMom(*temp_jet1);
c6202663 1620
1621 // Loop over all tracks
1622 for (i=0;i<fnTracks;i++)
1623 {
1624 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1625 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1626 {
c6202663 1627 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
62620fff 1628 if (temp_jet1->DeltaR(*track_vec)>fJetRForRho)
ac6a3f1e 1629 {
c6202663 1630 E_tracks_total+=vtrack->Pt();
ac6a3f1e 1631 }
c6202663 1632 }
1633 }
c6202663 1634
1635 // Calculate the mean Background density
1636 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myJet->Eta()));
1637 }
1638 else // i.e. No signal jets -> same as total background density
1639 {
1640 // Loop over all tracks
1641 for (i=0;i<fnTracks;i++)
1642 {
1643 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1644 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1645 {
1646 E_tracks_total+=vtrack->Pt();
1647 }
1648 }
1649
1650 // Calculate the mean Background density
1651 TPC_rho=E_tracks_total/fTPCArea;
1652 }
62620fff 1653 delete temp_jet1;
1654 delete temp_jet2;
1655 delete track_vec;
1656
c6202663 1657 // Fill histograms
1658 fRhoCharged2->FillRho(fEventCentrality,TPC_rho);
1659 fRhoCharged2->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1660 fRhoCharged2->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1661 fRhoCharged2->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
7acc3e04 1662 fRhoCharged2->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
c6202663 1663 fRhoCharged2->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1664 fRhoCharged2->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
1665}
e864d416 1666
c6202663 1667void AliAnalysisTaskFullpAJets::EstimateChargedRhoN()
1668{
1669 Int_t i,j;
1670 Bool_t track_away_from_jet;
1671 Double_t E_tracks_total=0.0;
1672 Double_t TPC_rho=0.0;
1673 Double_t jet_area_total=0.0;
1674
62620fff 1675 TLorentzVector *jet_vec= new TLorentzVector;
1676 TLorentzVector *track_vec = new TLorentzVector;
1677
c6202663 1678 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
1679 for (i=0;i<fnTracks;i++)
1680 {
1681 // First, check if track is in the EMCal!!
1682 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
1683 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1684 {
8daeee93 1685 if (fTPCJetUnbiased->GetTotalSignalJets()<1)
c6202663 1686 {
1687 E_tracks_total+=vtrack->Pt();
1688 }
1689 else
1690 {
1691 track_away_from_jet=kTRUE;
1692 j=0;
c6202663 1693 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
8daeee93 1694 while (track_away_from_jet==kTRUE && j<fTPCJetUnbiased->GetTotalSignalJets())
ac6a3f1e 1695 {
8daeee93 1696 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(j));
c6202663 1697 myJet->GetMom(*jet_vec);
1698 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
1699 {
1700 track_away_from_jet=kFALSE;
1701 }
c6202663 1702 j++;
ac6a3f1e 1703 }
c6202663 1704 if (track_away_from_jet==kTRUE)
ac6a3f1e 1705 {
c6202663 1706 E_tracks_total+=vtrack->Pt();
ac6a3f1e 1707 }
1708 }
1709 }
c6202663 1710 }
1711
1712 // Determine area of all Jets that are within the EMCal
8daeee93 1713 if (fTPCJetUnbiased->GetTotalSignalJets()==0)
c6202663 1714 {
1715 jet_area_total=0.0;
1716 }
1717 else
1718 {
8daeee93 1719 for (i=0;i<fTPCJetUnbiased->GetTotalSignalJets();i++)
c6202663 1720 {
8daeee93 1721 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(i));
c6202663 1722 jet_area_total+=AreaWithinTPC(fJetR,myJet->Eta());
1723 }
1724 }
62620fff 1725 delete jet_vec;
1726 delete track_vec;
1727
c6202663 1728 // Calculate Rho
1729 TPC_rho = E_tracks_total/(fTPCArea-jet_area_total);
1730
1731 // Fill Histogram
1732 fRhoChargedN->FillRho(fEventCentrality,TPC_rho);
1733 fRhoChargedN->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1734 fRhoChargedN->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1735 fRhoChargedN->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
7acc3e04 1736 fRhoChargedN->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
c6202663 1737 fRhoChargedN->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1738 fRhoChargedN->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
e864d416 1739
c6202663 1740}
e864d416 1741
c6202663 1742void AliAnalysisTaskFullpAJets::EstimateChargedRhoScale()
1743{
1744 Int_t i,j;
1745 Bool_t track_away_from_jet;
1746 Double_t E_tracks_total=0.0;
1747 Double_t TPC_rho=0.0;
1748 Double_t jet_area_total=0.0;
1749
62620fff 1750 TLorentzVector *jet_vec= new TLorentzVector;
1751 TLorentzVector *track_vec = new TLorentzVector;
1752
c6202663 1753 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
1754 for (i=0;i<fnTracks;i++)
1755 {
1756 // First, check if track is in the EMCal!!
1757 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
1758 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
ac6a3f1e 1759 {
8daeee93 1760 if (fTPCJetUnbiased->GetTotalSignalJets()<1)
ac6a3f1e 1761 {
c6202663 1762 E_tracks_total+=vtrack->Pt();
ac6a3f1e 1763 }
c6202663 1764 else
ac6a3f1e 1765 {
c6202663 1766 track_away_from_jet=kTRUE;
1767 j=0;
c6202663 1768 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
8daeee93 1769 while (track_away_from_jet==kTRUE && j<fTPCJetUnbiased->GetTotalSignalJets())
ac6a3f1e 1770 {
8daeee93 1771 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(j));
c6202663 1772 myJet->GetMom(*jet_vec);
1773 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
1774 {
1775 track_away_from_jet=kFALSE;
1776 }
c6202663 1777 j++;
ac6a3f1e 1778 }
c6202663 1779 if (track_away_from_jet==kTRUE)
ac6a3f1e 1780 {
c6202663 1781 E_tracks_total+=vtrack->Pt();
ac6a3f1e 1782 }
1783 }
c6202663 1784 }
1785 }
1786
7acc3e04 1787 // Determine area of all Jets that are within the TPC
8daeee93 1788 if (fTPCJetUnbiased->GetTotalSignalJets()==0)
c6202663 1789 {
1790 jet_area_total=0.0;
1791 }
1792 else
1793 {
8daeee93 1794 for (i=0;i<fTPCJetUnbiased->GetTotalSignalJets();i++)
c6202663 1795 {
8daeee93 1796 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(i));
c6202663 1797 jet_area_total+=AreaWithinTPC(fJetR,myJet->Eta());
1798 }
1799 }
62620fff 1800 delete jet_vec;
1801 delete track_vec;
1802
c6202663 1803 // Calculate Rho
1804 TPC_rho = E_tracks_total/(fTPCArea-jet_area_total);
1805 TPC_rho*=fScaleFactor;
1806
1807 // Fill Histogram
1808 fRhoChargedScale->FillRho(fEventCentrality,TPC_rho);
1809 fRhoChargedScale->FillBSJS(fEventCentrality,TPC_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
1810 fRhoChargedScale->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFluc,1);
1811 fRhoChargedScale->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFlucSignal,1);
7acc3e04 1812 fRhoChargedScale->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFlucNColl,1);
c6202663 1813 fRhoChargedScale->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1814 fRhoChargedScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),TPC_rho);
e864d416 1815 fRhoChargedScale->FillMiscJetStats(fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fOrgTracks,fOrgClusters);
c6202663 1816
e864d416 1817}
62620fff 1818
c6202663 1819void AliAnalysisTaskFullpAJets::EstimateChargedRhokT()
1820{
1821 Int_t i;
1822 Double_t kTRho = 0.0;
1823 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1824 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1825
1826 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
1827 {
1828 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
1829 pTArray[i]=myJet->Pt();
1830 RhoArray[i]=myJet->Pt()/myJet->Area();
1831 }
1832
1833 if (fTPCkTFullJet->GetTotalJets()>=2)
1834 {
1835 kTRho=MedianRhokT(pTArray,RhoArray,fTPCkTFullJet->GetTotalJets());
1836
1837 fRhoChargedkT->FillRho(fEventCentrality,kTRho);
1838 fRhoChargedkT->FillBSJS(fEventCentrality,kTRho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1839 fRhoChargedkT->FillDeltaPt(fEventCentrality,kTRho,fJetR,fTPCRCBckgFluc,1);
1840 fRhoChargedkT->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucSignal,1);
7acc3e04 1841 fRhoChargedkT->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucNColl,1);
c6202663 1842 fRhoChargedkT->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
1843 fRhoChargedkT->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),kTRho);
1844 }
1845 delete [] RhoArray;
1846 delete [] pTArray;
1847}
1848
1849void AliAnalysisTaskFullpAJets::EstimateChargedRhokTScale()
1850{
1851 Int_t i;
1852 Double_t kTRho = 0.0;
1853 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1854 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1855
1856 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
1857 {
1858 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
1859 pTArray[i]=myJet->Pt();
1860 RhoArray[i]=myJet->Pt()/myJet->Area();
1861 }
1862
1863 if (fTPCkTFullJet->GetTotalJets()>=2)
1864 {
1865 kTRho=MedianRhokT(pTArray,RhoArray,fTPCkTFullJet->GetTotalJets());
1866 kTRho*=fScaleFactor;
1867
1868 fRhoChargedkTScale->FillRho(fEventCentrality,kTRho);
1869 fRhoChargedkTScale->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
1870 fRhoChargedkTScale->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
1871 fRhoChargedkTScale->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
7acc3e04 1872 fRhoChargedkTScale->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
c6202663 1873 fRhoChargedkTScale->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
1874 fRhoChargedkTScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
1875 }
1876 delete [] RhoArray;
1877 delete [] pTArray;
1878}
1879
1880void AliAnalysisTaskFullpAJets::EstimateChargedRhoCMS()
1881{
1882 Int_t i,k;
1883 Double_t kTRho = 0.0;
1884 Double_t CMSTotalkTArea = 0.0;
1885 Double_t CMSTrackArea = 0.0;
1886 Double_t CMSCorrectionFactor = 1.0;
1887 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1888 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1889
1890 k=0;
1891 if ((fTPCJet->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJet->GetSubLeadingPt()>=fTPCJetThreshold))
1892 {
1893 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1894 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
1895
1896 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
1897 {
1898 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
ac6a3f1e 1899
c6202663 1900 CMSTotalkTArea+=myJet->Area();
1901 if (myJet->GetNumberOfTracks()>0)
1902 {
1903 CMSTrackArea+=myJet->Area();
1904 }
1905 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kFALSE)
ac6a3f1e 1906 {
c6202663 1907 pTArray[k]=myJet->Pt();
1908 RhoArray[k]=myJet->Pt()/myJet->Area();
1909 k++;
ac6a3f1e 1910 }
1911 }
c6202663 1912 if (k>0)
ac6a3f1e 1913 {
c6202663 1914 kTRho=MedianRhokT(pTArray,RhoArray,k);
ac6a3f1e 1915 }
c6202663 1916 else
ac6a3f1e 1917 {
c6202663 1918 kTRho=0.0;
ac6a3f1e 1919 }
1920 }
c6202663 1921 else if (fTPCJet->GetLeadingPt()>=fTPCJetThreshold)
ac6a3f1e 1922 {
c6202663 1923 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
ac6a3f1e 1924
c6202663 1925 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
ac6a3f1e 1926 {
c6202663 1927 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
1928
1929 CMSTotalkTArea+=myJet->Area();
1930 if (myJet->GetNumberOfTracks()>0)
1931 {
1932 CMSTrackArea+=myJet->Area();
1933 }
1934 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE)
1935 {
1936 pTArray[k]=myJet->Pt();
1937 RhoArray[k]=myJet->Pt()/myJet->Area();
1938 k++;
1939 }
1940 }
1941 if (k>0)
1942 {
1943 kTRho=MedianRhokT(pTArray,RhoArray,k);
1944 }
1945 else
1946 {
1947 kTRho=0.0;
ac6a3f1e 1948 }
1949 }
c6202663 1950 else
78246241 1951 {
c6202663 1952 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
1953 {
1954 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
1955
1956 CMSTotalkTArea+=myJet->Area();
1957 if (myJet->GetNumberOfTracks()>0)
1958 {
1959 CMSTrackArea+=myJet->Area();
1960 }
1961 pTArray[k]=myJet->Pt();
1962 RhoArray[k]=myJet->Pt()/myJet->Area();
1963 k++;
1964 }
1965 if (k>0)
1966 {
1967 kTRho=MedianRhokT(pTArray,RhoArray,k);
1968 }
1969 else
1970 {
1971 kTRho=0.0;
1972 }
78246241 1973 }
c6202663 1974 // Scale CMS Rho by Correction factor
1975 if (CMSTotalkTArea==0.0)
ac6a3f1e 1976 {
c6202663 1977 CMSCorrectionFactor = 1.0;
ac6a3f1e 1978 }
c6202663 1979 else
ac6a3f1e 1980 {
c6202663 1981 //CMSCorrectionFactor = CMSTrackArea/CMSTotalkTArea;
1982 CMSCorrectionFactor = CMSTrackArea/(fTPCPhiTotal*(fTPCEtaTotal-2*fJetR)); // The total physical area should be reduced by the eta cut due to looping over only fully contained kT jets within the TPC
1983 }
1984 kTRho*=CMSCorrectionFactor;
1985 fRhoChargedCMS->FillRho(fEventCentrality,kTRho);
1986 fRhoChargedCMS->FillBSJS(fEventCentrality,kTRho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1987 fRhoChargedCMS->FillDeltaPt(fEventCentrality,kTRho,fJetR,fTPCRCBckgFluc,1);
1988 fRhoChargedCMS->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucSignal,1);
7acc3e04 1989 fRhoChargedCMS->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucNColl,1);
c6202663 1990 fRhoChargedCMS->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
1991 fRhoChargedCMS->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),kTRho);
1992 delete [] RhoArray;
1993 delete [] pTArray;
1994}
62620fff 1995
c6202663 1996void AliAnalysisTaskFullpAJets::EstimateChargedRhoCMSScale()
1997{
1998 Int_t i,k;
1999 Double_t kTRho = 0.0;
2000 Double_t CMSTotalkTArea = 0.0;
2001 Double_t CMSTrackArea = 0.0;
2002 Double_t CMSCorrectionFactor = 1.0;
2003 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2004 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2005
2006 k=0;
2007 if ((fTPCJet->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJet->GetSubLeadingPt()>=fTPCJetThreshold))
2008 {
2009 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
2010 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
2011
2012 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2013 {
2014 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2015
2016 CMSTotalkTArea+=myJet->Area();
2017 if (myJet->GetNumberOfTracks()>0)
2018 {
2019 CMSTrackArea+=myJet->Area();
2020 }
2021 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kFALSE)
2022 {
2023 pTArray[k]=myJet->Pt();
2024 RhoArray[k]=myJet->Pt()/myJet->Area();
2025 k++;
2026 }
2027 }
2028 if (k>0)
2029 {
2030 kTRho=MedianRhokT(pTArray,RhoArray,k);
2031 }
2032 else
2033 {
2034 kTRho=0.0;
2035 }
2036 }
2037 else if (fTPCJet->GetLeadingPt()>=fTPCJetThreshold)
2038 {
2039 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
2040
2041 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2042 {
2043 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2044
2045 CMSTotalkTArea+=myJet->Area();
2046 if (myJet->GetNumberOfTracks()>0)
2047 {
2048 CMSTrackArea+=myJet->Area();
2049 }
2050 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE)
2051 {
2052 pTArray[k]=myJet->Pt();
2053 RhoArray[k]=myJet->Pt()/myJet->Area();
2054 k++;
2055 }
2056 }
2057 if (k>0)
2058 {
2059 kTRho=MedianRhokT(pTArray,RhoArray,k);
2060 }
2061 else
2062 {
2063 kTRho=0.0;
2064 }
2065 }
2066 else
ac6a3f1e 2067 {
c6202663 2068 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2069 {
2070 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2071
2072 CMSTotalkTArea+=myJet->Area();
2073 if (myJet->GetNumberOfTracks()>0)
2074 {
2075 CMSTrackArea+=myJet->Area();
2076 }
2077 pTArray[k]=myJet->Pt();
2078 RhoArray[k]=myJet->Pt()/myJet->Area();
2079 k++;
2080 }
2081 if (k>0)
78246241 2082 {
c6202663 2083 kTRho=MedianRhokT(pTArray,RhoArray,k);
78246241 2084 }
c6202663 2085 else
c54b626a 2086 {
c6202663 2087 kTRho=0.0;
c54b626a 2088 }
ac6a3f1e 2089 }
c6202663 2090 kTRho*=fScaleFactor;
2091 // Scale CMS Rho by Correction factor
2092 if (CMSTotalkTArea==0.0)
2093 {
2094 CMSCorrectionFactor = 1.0;
2095 }
2096 else
2097 {
c6202663 2098 CMSCorrectionFactor = CMSTrackArea/(fTPCPhiTotal*(fTPCEtaTotal-2*fJetR)); // The total physical area should be reduced by the eta cut due to looping over only fully contained kT jets within the TPC
2099 }
2100 kTRho*=CMSCorrectionFactor;
2101
2102 fRhoChargedCMSScale->FillRho(fEventCentrality,kTRho);
2103 fRhoChargedCMSScale->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2104 fRhoChargedCMSScale->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2105 fRhoChargedCMSScale->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
7acc3e04 2106 fRhoChargedCMSScale->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
c6202663 2107 fRhoChargedCMSScale->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2108 fRhoChargedCMSScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
08b981da 2109 fRhoChargedCMSScale->DoNEFAnalysis(fNEFSignalJetCut,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fmyClusters,fOrgClusters,fEvent,fEMCALGeometry,fRecoUtil,fCells);
e864d416 2110 fRhoChargedCMSScale->FillMiscJetStats(fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fOrgTracks,fOrgClusters);
2111
c6202663 2112 delete [] RhoArray;
2113 delete [] pTArray;
ac6a3f1e 2114}
62620fff 2115
c6202663 2116// Full Rho's
2117void AliAnalysisTaskFullpAJets::EstimateFullRho0()
ac6a3f1e 2118{
2119 Int_t i;
c6202663 2120 Double_t E_tracks_total=0.0;
2121 Double_t E_caloclusters_total=0.0;
2122 Double_t EMCal_rho=0.0;
ac6a3f1e 2123
62620fff 2124 TLorentzVector *cluster_vec = new TLorentzVector;
2125
ac6a3f1e 2126 // Loop over all tracks
2127 for (i=0;i<fnTracks;i++)
2128 {
2129 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2130 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2131 {
2132 E_tracks_total+=vtrack->Pt();
2133 }
2134 }
2135
2136 // Loop over all caloclusters
2137 for (i=0;i<fnClusters;i++)
2138 {
2139 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
8daeee93 2140 vcluster->GetMomentum(*cluster_vec,fVertex);
c6202663 2141 E_caloclusters_total+=cluster_vec->Pt();
ac6a3f1e 2142 }
62620fff 2143 delete cluster_vec;
2144
ac6a3f1e 2145 // Calculate the mean Background density
2146 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
c6202663 2147 fRhoFull=EMCal_rho;
ac6a3f1e 2148
c6202663 2149 // Fill Histograms
c6202663 2150 fRhoFull0->FillRho(fEventCentrality,EMCal_rho);
2151 fRhoFull0->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2152 fRhoFull0->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2153 fRhoFull0->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
7acc3e04 2154 fRhoFull0->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
c6202663 2155 fRhoFull0->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2156 fRhoFull0->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
ac6a3f1e 2157}
2158
c6202663 2159void AliAnalysisTaskFullpAJets::EstimateFullRho1()
ac6a3f1e 2160{
2161 Int_t i;
c6202663 2162 Double_t E_tracks_total=0.0;
2163 Double_t E_caloclusters_total=0.0;
2164 Double_t EMCal_rho=0.0;
ac6a3f1e 2165
62620fff 2166 TLorentzVector *temp_jet= new TLorentzVector;
2167 TLorentzVector *track_vec = new TLorentzVector;
2168 TLorentzVector *cluster_vec = new TLorentzVector;
2169
8daeee93 2170 if (fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold)
ac6a3f1e 2171 {
8daeee93 2172 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
ac6a3f1e 2173 myJet->GetMom(*temp_jet);
2174
2175 // Loop over all tracks
2176 for (i=0;i<fnTracks;i++)
2177 {
2178 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2179 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2180 {
ac6a3f1e 2181 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
c6202663 2182 if (temp_jet->DeltaR(*track_vec)>fJetRForRho)
ac6a3f1e 2183 {
2184 E_tracks_total+=vtrack->Pt();
2185 }
ac6a3f1e 2186 }
2187 }
2188
2189 // Loop over all caloclusters
2190 for (i=0;i<fnClusters;i++)
2191 {
2192 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
8daeee93 2193 vcluster->GetMomentum(*cluster_vec,fVertex);
c6202663 2194 if (temp_jet->DeltaR(*cluster_vec)>fJetRForRho)
ac6a3f1e 2195 {
2196 E_caloclusters_total+=vcluster->E();
2197 }
ac6a3f1e 2198 }
ac6a3f1e 2199 // Calculate the mean Background density
c6202663 2200 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
ac6a3f1e 2201 }
c6202663 2202 else // i.e. No signal jets -> same as total background density
ac6a3f1e 2203 {
2204 // Loop over all tracks
2205 for (i=0;i<fnTracks;i++)
2206 {
2207 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2208 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2209 {
2210 E_tracks_total+=vtrack->Pt();
2211 }
2212 }
2213
2214 // Loop over all caloclusters
2215 for (i=0;i<fnClusters;i++)
2216 {
2217 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2218 E_caloclusters_total+=vcluster->E();
2219 }
2220 // Calculate the mean Background density
2221 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2222 }
62620fff 2223 delete temp_jet;
2224 delete track_vec;
2225 delete cluster_vec;
2226
c6202663 2227 // Fill histograms
2228 fRhoFull1->FillRho(fEventCentrality,EMCal_rho);
2229 fRhoFull1->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2230 fRhoFull1->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2231 fRhoFull1->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
7acc3e04 2232 fRhoFull1->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
c6202663 2233 fRhoFull1->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2234 fRhoFull1->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
ac6a3f1e 2235}
2236
c6202663 2237void AliAnalysisTaskFullpAJets::EstimateFullRho2()
ac6a3f1e 2238{
2239 Int_t i;
c6202663 2240 Double_t E_tracks_total=0.0;
2241 Double_t E_caloclusters_total=0.0;
2242 Double_t EMCal_rho=0.0;
2243
62620fff 2244 TLorentzVector *temp_jet1 = new TLorentzVector;
2245 TLorentzVector *temp_jet2 = new TLorentzVector;
2246 TLorentzVector *track_vec = new TLorentzVector;
2247 TLorentzVector *cluster_vec = new TLorentzVector;
2248
8daeee93 2249 if ((fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold) && (fEMCalPartJetUnbiased->GetSubLeadingPt()>=fEMCalJetThreshold))
ac6a3f1e 2250 {
8daeee93 2251 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
c6202663 2252 myhJet->GetMom(*temp_jet1);
2253
8daeee93 2254 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSubLeadingIndex());
c6202663 2255 myJet->GetMom(*temp_jet2);
2256
2257 // Loop over all tracks
2258 for (i=0;i<fnTracks;i++)
2259 {
2260 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2261 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2262 {
c6202663 2263 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2264 if ((temp_jet1->DeltaR(*track_vec)>fJetRForRho) && (temp_jet2->DeltaR(*track_vec)>fJetRForRho))
2265 {
2266 E_tracks_total+=vtrack->Pt();
2267 }
c6202663 2268 }
2269 }
2270
2271 // Loop over all caloclusters
2272 for (i=0;i<fnClusters;i++)
2273 {
2274 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
8daeee93 2275 vcluster->GetMomentum(*cluster_vec,fVertex);
c6202663 2276 if ((temp_jet1->DeltaR(*cluster_vec)>fJetRForRho) && (temp_jet2->DeltaR(*cluster_vec)>fJetRForRho))
2277 {
2278 E_caloclusters_total+=vcluster->E();
2279 }
c6202663 2280 }
62620fff 2281
c6202663 2282 // Calculate the mean Background density
2283 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myhJet->Phi(),myhJet->Eta())-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
2284 }
8daeee93 2285 else if (fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold)
c6202663 2286 {
8daeee93 2287 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
62620fff 2288 myJet->GetMom(*temp_jet1);
ac6a3f1e 2289
c6202663 2290 // Loop over all tracks
2291 for (i=0;i<fnTracks;i++)
ac6a3f1e 2292 {
c6202663 2293 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2294 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
ac6a3f1e 2295 {
c6202663 2296 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
62620fff 2297 if (temp_jet1->DeltaR(*track_vec)>fJetRForRho)
ac6a3f1e 2298 {
c6202663 2299 E_tracks_total+=vtrack->Pt();
ac6a3f1e 2300 }
c6202663 2301 }
2302 }
2303
2304 // Loop over all caloclusters
2305 for (i=0;i<fnClusters;i++)
2306 {
2307 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
8daeee93 2308 vcluster->GetMomentum(*cluster_vec,fVertex);
62620fff 2309 if (temp_jet1->DeltaR(*cluster_vec)>fJetRForRho)
c6202663 2310 {
2311 E_caloclusters_total+=vcluster->E();
ac6a3f1e 2312 }
2313 }
c6202663 2314 // Calculate the mean Background density
2315 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
2316 }
2317 else // i.e. No signal jets -> same as total background density
2318 {
2319 // Loop over all tracks
2320 for (i=0;i<fnTracks;i++)
2321 {
2322 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2323 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2324 {
2325 E_tracks_total+=vtrack->Pt();
2326 }
2327 }
2328
2329 // Loop over all caloclusters
2330 for (i=0;i<fnClusters;i++)
2331 {
2332 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2333 E_caloclusters_total+=vcluster->E();
2334 }
2335 // Calculate the mean Background density
2336 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
ac6a3f1e 2337 }
62620fff 2338 delete temp_jet1;
2339 delete temp_jet2;
2340 delete track_vec;
2341 delete cluster_vec;
2342
c6202663 2343 // Fill histograms
2344 fRhoFull2->FillRho(fEventCentrality,EMCal_rho);
2345 fRhoFull2->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2346 fRhoFull2->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2347 fRhoFull2->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
7acc3e04 2348 fRhoFull2->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
c6202663 2349 fRhoFull2->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2350 fRhoFull2->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
ac6a3f1e 2351}
2352
c6202663 2353void AliAnalysisTaskFullpAJets::EstimateFullRhoN()
ac6a3f1e 2354{
2355 Int_t i,j;
2356 Bool_t track_away_from_jet;
c6202663 2357 Bool_t cluster_away_from_jet;
2358 Double_t E_tracks_total=0.0;
2359 Double_t E_caloclusters_total=0.0;
2360 Double_t EMCal_rho=0.0;
2361 Double_t jet_area_total=0.0;
ac6a3f1e 2362
62620fff 2363 TLorentzVector *jet_vec= new TLorentzVector;
2364 TLorentzVector *track_vec = new TLorentzVector;
2365 TLorentzVector *cluster_vec = new TLorentzVector;
2366
ac6a3f1e 2367 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
ac6a3f1e 2368 for (i=0;i<fnTracks;i++)
2369 {
2370 // First, check if track is in the EMCal!!
c6202663 2371 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
ac6a3f1e 2372 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2373 {
8daeee93 2374 if (fEMCalPartJetUnbiased->GetTotalSignalJets()<1)
ac6a3f1e 2375 {
2376 E_tracks_total+=vtrack->Pt();
2377 }
2378 else
2379 {
2380 track_away_from_jet=kTRUE;
2381 j=0;
ac6a3f1e 2382 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
8daeee93 2383 while (track_away_from_jet==kTRUE && j<fEMCalPartJetUnbiased->GetTotalSignalJets())
ac6a3f1e 2384 {
8daeee93 2385 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(j));
ac6a3f1e 2386 myJet->GetMom(*jet_vec);
c6202663 2387 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
ac6a3f1e 2388 {
2389 track_away_from_jet=kFALSE;
2390 }
ac6a3f1e 2391 j++;
2392 }
2393 if (track_away_from_jet==kTRUE)
2394 {
2395 E_tracks_total+=vtrack->Pt();
2396 }
ac6a3f1e 2397 }
2398 }
2399 }
2400
2401 // Next, sum all CaloClusters within the EMCal (obviously all clusters must be within EMCal!!) that are away from jet(s) above Pt Threshold
ac6a3f1e 2402 for (i=0;i<fnClusters;i++)
2403 {
c6202663 2404 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2405 if (fEMCalPartJet->GetTotalSignalJets()<1)
ac6a3f1e 2406 {
2407 E_caloclusters_total+=vcluster->E();
2408 }
2409 else
2410 {
2411 cluster_away_from_jet=kTRUE;
2412 j=0;
2413
8daeee93 2414 vcluster->GetMomentum(*cluster_vec,fVertex);
2415 while (cluster_away_from_jet==kTRUE && j<fEMCalPartJetUnbiased->GetTotalSignalJets())
ac6a3f1e 2416 {
8daeee93 2417 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(j));
ac6a3f1e 2418 myJet->GetMom(*jet_vec);
c6202663 2419 if (cluster_vec->DeltaR(*jet_vec)<=fJetRForRho)
ac6a3f1e 2420 {
2421 cluster_away_from_jet=kFALSE;
2422 }
ac6a3f1e 2423 j++;
2424 }
2425 if (cluster_away_from_jet==kTRUE)
2426 {
2427 E_caloclusters_total+=vcluster->E();
2428 }
ac6a3f1e 2429 }
2430 }
2431
2432 // Determine area of all Jets that are within the EMCal
c6202663 2433 if (fEMCalPartJet->GetTotalSignalJets()==0)
ac6a3f1e 2434 {
c6202663 2435 jet_area_total=0.0;
ac6a3f1e 2436 }
2437 else
2438 {
8daeee93 2439 for (i=0;i<fEMCalPartJetUnbiased->GetTotalSignalJets();i++)
ac6a3f1e 2440 {
8daeee93 2441 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(i));
ac6a3f1e 2442 jet_area_total+=AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta());
2443 }
2444 }
62620fff 2445 delete jet_vec;
2446 delete track_vec;
2447 delete cluster_vec;
2448
ac6a3f1e 2449 // Calculate Rho
2450 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-jet_area_total);
ac6a3f1e 2451
c6202663 2452 // Fill Histogram
2453 fRhoFullN->FillRho(fEventCentrality,EMCal_rho);
2454 fRhoFullN->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2455 fRhoFullN->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2456 fRhoFullN->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
7acc3e04 2457 fRhoFullN->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
c6202663 2458 fRhoFullN->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2459 fRhoFullN->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
ac6a3f1e 2460}
2461
c6202663 2462void AliAnalysisTaskFullpAJets::EstimateFullRhoDijet()
ac6a3f1e 2463{
78246241 2464 Int_t i;
78246241 2465 Double_t E_tracks_total=0.0;
2466 Double_t E_caloclusters_total=0.0;
2467 Double_t EMCal_rho=0.0;
78246241 2468
2469 // Loop over all tracks
ac6a3f1e 2470 for (i=0;i<fnTracks;i++)
2471 {
78246241 2472 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
ac6a3f1e 2473 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2474 {
78246241 2475 E_tracks_total+=vtrack->Pt();
ac6a3f1e 2476 }
2477 }
2478
78246241 2479 // Loop over all caloclusters
ac6a3f1e 2480 for (i=0;i<fnClusters;i++)
2481 {
78246241 2482 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2483 E_caloclusters_total+=vcluster->E();
ac6a3f1e 2484 }
2485
78246241 2486 // Calculate the mean Background density
2487 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
ac6a3f1e 2488
c6202663 2489 // Fill Histograms
2490 fRhoFullDijet->FillRho(fEventCentrality,EMCal_rho);
2491 fRhoFullDijet->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2492 fRhoFullDijet->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2493 fRhoFullDijet->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
7acc3e04 2494 fRhoFullDijet->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
c6202663 2495 fRhoFullDijet->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2496 fRhoFullDijet->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2497}
2498
2499void AliAnalysisTaskFullpAJets::EstimateFullRhokT()
2500{
2501 Int_t i;
2502 Double_t kTRho = 0.0;
2503 Double_t *pTArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2504 Double_t *RhoArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2505
2506 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2507 {
2508 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2509 pTArray[i]=myJet->Pt();
2510 RhoArray[i]=myJet->Pt()/myJet->Area();
2511 }
ac6a3f1e 2512
c6202663 2513 if (fEMCalkTFullJet->GetTotalJets()>0)
ac6a3f1e 2514 {
c6202663 2515 kTRho=MedianRhokT(pTArray,RhoArray,fEMCalkTFullJet->GetTotalJets());
ac6a3f1e 2516 }
c6202663 2517 else
2518 {
2519 kTRho=0.0;
2520 }
2521 fRhoFullkT->FillRho(fEventCentrality,kTRho);
2522 fRhoFullkT->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2523 fRhoFullkT->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2524 fRhoFullkT->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
7acc3e04 2525 fRhoFullkT->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
c6202663 2526 fRhoFullkT->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2527 fRhoFullkT->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2528 delete [] RhoArray;
2529 delete [] pTArray;
ac6a3f1e 2530}
2531
c6202663 2532void AliAnalysisTaskFullpAJets::EstimateFullRhoCMS()
ac6a3f1e 2533{
c6202663 2534 Int_t i,k;
2535 Double_t kTRho = 0.0;
2536 Double_t CMSTotalkTArea = 0.0;
2537 Double_t CMSParticleArea = 0.0;
2538 Double_t CMSCorrectionFactor = 1.0;
2539 Double_t *pTArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2540 Double_t *RhoArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2541
2542 k=0;
2543 if ((fEMCalPartJet->GetLeadingPt()>=fEMCalJetThreshold) && (fEMCalPartJet->GetSubLeadingPt()>=fEMCalJetThreshold))
2544 {
2545 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJet->GetLeadingIndex());
2546 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJet->GetSubLeadingIndex());
78246241 2547
c6202663 2548 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
78246241 2549 {
c6202663 2550 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2551
2552 CMSTotalkTArea+=myJet->Area();
2553 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
2554 {
2555 CMSParticleArea+=myJet->Area();
2556 }
2557 if (IsJetOverlap(myJet,myJet1,kTRUE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kTRUE)
2558 {
2559 pTArray[k]=myJet->Pt();
2560 RhoArray[k]=myJet->Pt()/myJet->Area();
2561 k++;
2562 }
78246241 2563 }
c6202663 2564 if (k>0)
ac6a3f1e 2565 {
c6202663 2566 kTRho=MedianRhokT(pTArray,RhoArray,k);
ac6a3f1e 2567 }
2568 else
2569 {
c6202663 2570 kTRho=0.0;
2571 }
2572 }
2573 else if (fEMCalJet->GetLeadingPt()>=fEMCalJetThreshold)
2574 {
2575 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalJet->GetLeadingIndex());
2576
2577 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2578 {
2579 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2580
2581 CMSTotalkTArea+=myJet->Area();
2582 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
ac6a3f1e 2583 {
c6202663 2584 CMSParticleArea+=myJet->Area();
ac6a3f1e 2585 }
c6202663 2586 if (IsJetOverlap(myJet,myJet1,kTRUE)==kFALSE)
ac6a3f1e 2587 {
c6202663 2588 pTArray[k]=myJet->Pt();
2589 RhoArray[k]=myJet->Pt()/myJet->Area();
2590 k++;
ac6a3f1e 2591 }
ac6a3f1e 2592 }
c6202663 2593 if (k>0)
ac6a3f1e 2594 {
c6202663 2595 kTRho=MedianRhokT(pTArray,RhoArray,k);
2596 }
2597 else
2598 {
2599 kTRho=0.0;
ac6a3f1e 2600 }
2601 }
c6202663 2602 else
ac6a3f1e 2603 {
c6202663 2604 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
ac6a3f1e 2605 {
c6202663 2606 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2607
2608 CMSTotalkTArea+=myJet->Area();
2609 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
ac6a3f1e 2610 {
c6202663 2611 CMSParticleArea+=myJet->Area();
ac6a3f1e 2612 }
c6202663 2613 pTArray[k]=myJet->Pt();
2614 RhoArray[k]=myJet->Pt()/myJet->Area();
2615 k++;
2616 }
2617 if (k>0)
2618 {
2619 kTRho=MedianRhokT(pTArray,RhoArray,k);
2620 }
2621 else
2622 {
2623 kTRho=0.0;
ac6a3f1e 2624 }
2625 }
c6202663 2626 // Scale CMS Rho by Correction factor
2627 if (CMSTotalkTArea==0.0)
78246241 2628 {
c6202663 2629 CMSCorrectionFactor = 1.0;
78246241 2630 }
c6202663 2631 else
78246241 2632 {
c6202663 2633 //CMSCorrectionFactor = CMSTrackArea/CMSTotalkTArea;
2634 CMSCorrectionFactor = CMSParticleArea/((fEMCalPhiTotal-2*fJetR)*(fEMCalEtaTotal-2*fJetR)); // The total physical area should be reduced by the eta & phi cuts due to looping over only fully contained kT jets within the EMCal
78246241 2635 }
c6202663 2636 kTRho*=CMSCorrectionFactor;
78246241 2637
c6202663 2638 fRhoFullCMS->FillRho(fEventCentrality,kTRho);
2639 fRhoFullCMS->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2640 fRhoFullCMS->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2641 fRhoFullCMS->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
7acc3e04 2642 fRhoFullCMS->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
c6202663 2643 fRhoFullCMS->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2644 fRhoFullCMS->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2645 delete [] RhoArray;
2646 delete [] pTArray;
78246241 2647}
62620fff 2648
c6202663 2649void AliAnalysisTaskFullpAJets::DeleteJetData(Bool_t EMCalOn)
ac6a3f1e 2650{
c6202663 2651 delete fmyTracks;
2652 delete fTPCJet;
2653 delete fTPCFullJet;
2654 delete fTPCOnlyJet;
2655 delete fTPCkTFullJet;
ac6a3f1e 2656 if (EMCalOn==kTRUE)
2657 {
c6202663 2658 delete fmyClusters;
2659 delete fEMCalJet;
2660 delete fEMCalFullJet;
2661 delete fEMCalPartJet;
2662 delete fEMCalkTFullJet;
ac6a3f1e 2663 }
2664}
2665
2666/////////////////////////////////////////////////////////////////////////////////////////
2667///////////////// User Defined Functions ///////////////////////////////////////
2668/////////////////////////////////////////////////////////////////////////////////////////
2669
2670Bool_t AliAnalysisTaskFullpAJets::IsDiJetEvent()
2671{
78246241 2672 // Determine if event contains a di-jet within the detector. Uses charged jets.
2673 // Requires the delta phi of the jets to be 180 +/- 15 degrees.
2674 // Requires both jets to be outside of the EMCal
2675 // Requires both jets to be signal jets
2676
ac6a3f1e 2677 const Double_t dijet_delta_phi=(180/360.)*2*TMath::Pi();
2678 const Double_t dijet_phi_acceptance=0.5*(30/360.)*2*TMath::Pi(); //Input the total acceptance within the paraenthesis to be +/- dijet_phi_acceptance
78246241 2679 Double_t dummy_phi=0.0;
c6202663 2680
2681 if (fTPCOnlyJet->GetTotalSignalJets()>1)
2682 {
2683 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCOnlyJet->GetLeadingIndex());
2684 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCOnlyJet->GetSubLeadingIndex());
2685 dummy_phi=TMath::Min(TMath::Abs(myhJet->Phi()-myJet->Phi()),2*TMath::Pi()-TMath::Abs(myhJet->Phi()-myJet->Phi()));
2686 if (dummy_phi>(dijet_delta_phi-dijet_phi_acceptance))
2687 {
2688 fnDiJetEvents++;
2689 return kTRUE;
ac6a3f1e 2690 }
2691 }
2692 return kFALSE;
2693}
2694
2695Bool_t AliAnalysisTaskFullpAJets::InsideRect(Double_t phi,Double_t phi_min,Double_t phi_max,Double_t eta,Double_t eta_min,Double_t eta_max)
2696{
2697 if (phi>phi_min && phi<phi_max)
2698 {
2699 if (eta>eta_min && eta<eta_max)
2700 {
2701 return kTRUE;
2702 }
2703 }
2704 return kFALSE;
2705}
2706
2707Bool_t AliAnalysisTaskFullpAJets::IsInEMCal(Double_t phi,Double_t eta)
2708{
2709 return InsideRect(phi,fEMCalPhiMin,fEMCalPhiMax,eta,fEMCalEtaMin,fEMCalEtaMax);
2710}
2711
2712Bool_t AliAnalysisTaskFullpAJets::IsInEMCalFull(Double_t r,Double_t phi,Double_t eta)
2713{
2714 return InsideRect(phi,fEMCalPhiMin+r,fEMCalPhiMax-r,eta,fEMCalEtaMin+r,fEMCalEtaMax-r);
2715}
2716
2717Bool_t AliAnalysisTaskFullpAJets::IsInEMCalPart(Double_t r,Double_t phi,Double_t eta)
2718{
2719 return InsideRect(phi,fEMCalPhiMin-r,fEMCalPhiMax+r,eta,fEMCalEtaMin-r,fEMCalEtaMax+r);
2720}
2721
2722Bool_t AliAnalysisTaskFullpAJets::IsInTPCFull(Double_t r,Double_t phi,Double_t eta)
2723{
2724 Bool_t in_EMCal= InsideRect(phi,fEMCalPhiMin-r,fEMCalPhiMax+r,eta,fEMCalEtaMin-r,fEMCalEtaMax+r);
2725 Bool_t in_TPC= InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin+r,fTPCEtaMax-r);
2726
2727 if (in_EMCal==kFALSE && in_TPC==kTRUE)
2728 {
2729 return kTRUE;
2730 }
2731 return kFALSE;
2732}
2733
2734Bool_t AliAnalysisTaskFullpAJets::IsInTPC(Double_t r,Double_t phi,Double_t eta,Bool_t Complete)
2735{
2736 if (Complete==kTRUE)
2737 {
2738 return InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin+r,fTPCEtaMax-r);
2739 }
2740 return InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin,fTPCEtaMax);
2741}
2742
c6202663 2743Bool_t AliAnalysisTaskFullpAJets::IsJetOverlap(AliEmcalJet *jet1,AliEmcalJet *jet2,Bool_t EMCalOn)
2744{
2745 Int_t i,j;
2746 Int_t jetTrack1=0;
2747 Int_t jetTrack2=0;
2748 Int_t jetCluster1=0;
2749 Int_t jetCluster2=0;
2750
2751 for (i=0;i<jet1->GetNumberOfTracks();i++)
2752 {
2753 jetTrack1=jet1->TrackAt(i);
2754 for (j=0;j<jet2->GetNumberOfTracks();j++)
2755 {
2756 jetTrack2=jet2->TrackAt(j);
2757 if (jetTrack1 == jetTrack2)
2758 {
2759 return kTRUE;
2760 }
2761 }
2762 }
2763 if (EMCalOn == kTRUE)
2764 {
2765 for (i=0;i<jet1->GetNumberOfClusters();i++)
2766 {
2767 jetCluster1=jet1->ClusterAt(i);
2768 for (j=0;j<jet2->GetNumberOfClusters();j++)
2769 {
2770 jetCluster2=jet2->ClusterAt(j);
2771 if (jetCluster1 == jetCluster2)
2772 {
2773 return kTRUE;
2774 }
2775 }
2776 }
2777 }
2778 return kFALSE;
2779}
2780
ac6a3f1e 2781Double_t AliAnalysisTaskFullpAJets::AreaWithinTPC(Double_t r,Double_t eta)
2782{
2783 Double_t z;
2784 if (eta<(fTPCEtaMin+r))
2785 {
2786 z=eta-fTPCEtaMin;
2787 }
2788 else if(eta>(fTPCEtaMax-r))
2789 {
2790 z=fTPCEtaMax-eta;
2791 }
2792 else
2793 {
2794 z=r;
2795 }
2796 return r*r*TMath::Pi()-AreaEdge(r,z);
2797}
2798
2799Double_t AliAnalysisTaskFullpAJets::AreaWithinEMCal(Double_t r,Double_t phi,Double_t eta)
2800{
2801 Double_t x,y;
2802
2803 if (phi<(fEMCalPhiMin-r) || phi>(fEMCalPhiMax+r))
2804 {
2805 x=-r;
2806 }
2807 else if (phi<(fEMCalPhiMin+r))
2808 {
2809 x=phi-fEMCalPhiMin;
2810 }
2811 else if (phi>(fEMCalPhiMin+r) && phi<(fEMCalPhiMax-r))
2812 {
2813 x=r;
2814 }
2815 else
2816 {
2817 x=fEMCalPhiMax-phi;
2818 }
2819
2820 if (eta<(fEMCalEtaMin-r) || eta>(fEMCalEtaMax+r))
2821 {
2822 y=-r;
2823 }
2824 else if (eta<(fEMCalEtaMin+r))
2825 {
2826 y=eta-fEMCalEtaMin;
2827 }
2828 else if (eta>(fEMCalEtaMin+r) && eta<(fEMCalEtaMax-r))
2829 {
2830 y=r;
2831 }
2832 else
2833 {
2834 y=fEMCalEtaMax-eta;
2835 }
2836
2837 if (x>=0 && y>=0)
2838 {
2839 if (TMath::Sqrt(x*x+y*y)>=r)
2840 {
2841 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y);
2842 }
2843 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y)+AreaOverlap(r,x,y);
2844 }
2845 else if ((x>=r && y<0) || (y>=r && x<0))
2846 {
2847 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y);
2848 }
2849 else if (x>0 && x<r && y<0)
2850 {
2851 Double_t a=TMath::Sqrt(r*r-x*x);
2852 Double_t b=TMath::Sqrt(r*r-y*y);
2853 if ((x-b)>0)
2854 {
2855 return r*r*TMath::ASin(b/r)+y*b;
2856 }
2857 else
2858 {
2859 return 0.5*x*a+0.5*r*r*TMath::ASin(x/r)+0.5*y*b+x*y+0.5*r*r*TMath::ASin(b/r);
2860 }
2861 }
2862 else if (y>0 && y<r && x<0)
2863 {
2864 Double_t a=TMath::Sqrt(r*r-x*x);
2865 Double_t b=TMath::Sqrt(r*r-y*y);
2866 if ((y-a)>0)
2867 {
2868 return r*r*TMath::ASin(a/r)+x*a;
2869 }
2870 else
2871 {
2872 return 0.5*y*b+0.5*r*r*TMath::ASin(y/r)+0.5*x*a+x*y+0.5*r*r*TMath::ASin(a/r);
2873 }
2874 }
2875 else
2876 {
2877 Double_t a=TMath::Sqrt(r*r-x*x);
2878 Double_t b=TMath::Sqrt(r*r-y*y);
2879 if ((x+b)<0)
2880 {
2881 return 0;
2882 }
2883 else
2884 {
2885 return 0.5*x*a+0.5*r*r*TMath::ASin(x/r)+0.5*y*b+x*y+0.5*r*r*TMath::ASin(b/r);
2886 }
2887 }
2888}
2889
2890Double_t AliAnalysisTaskFullpAJets::AreaEdge(Double_t r,Double_t z)
2891{
2892 Double_t a=TMath::Sqrt(r*r-z*z);
2893 return r*r*TMath::ASin(a/r)-a*z;
2894}
2895
2896Double_t AliAnalysisTaskFullpAJets::AreaOverlap(Double_t r,Double_t x,Double_t y)
2897{
2898 Double_t a=TMath::Sqrt(r*r-x*x);
2899 Double_t b=TMath::Sqrt(r*r-y*y);
2900 return x*y-0.5*(x*a+y*b)+0.5*r*r*(TMath::ASin(b/r)-TMath::ASin(x/r));
2901}
2902
2903Double_t AliAnalysisTaskFullpAJets::TransverseArea(Double_t r,Double_t psi0,Double_t phi,Double_t eta)
2904{
c6202663 2905 Double_t area_left=0;
2906 Double_t area_right=0;
2907 Double_t eta_a=0;
2908 Double_t eta_b=0;
2909 Double_t eta_up=0;
2910 Double_t eta_down=0;
ac6a3f1e 2911
2912 Double_t u=eta-fEMCalEtaMin;
2913 Double_t v=fEMCalEtaMax-eta;
2914
2915 Double_t phi1=phi+u*TMath::Tan(psi0);
2916 Double_t phi2=phi-u*TMath::Tan(psi0);
2917 Double_t phi3=phi+v*TMath::Tan(psi0);
2918 Double_t phi4=phi-v*TMath::Tan(psi0);
2919
2920 //Calculate the Left side area
2921 if (phi1>=fEMCalPhiMax)
2922 {
2923 eta_a=eta-u*((fEMCalPhiMax-phi)/(phi1-phi));
2924 }
2925 if (phi2<=fEMCalPhiMin)
2926 {
2927 eta_b=eta-u*((phi-fEMCalPhiMin)/(phi-phi2));
2928 }
2929
2930 if ((phi1>=fEMCalPhiMax) && (phi2<=fEMCalPhiMin))
2931 {
2932 eta_up=TMath::Max(eta_a,eta_b);
2933 eta_down=TMath::Min(eta_a,eta_b);
2934
2935 area_left=(eta_down-fEMCalEtaMin)*fEMCalPhiTotal + 0.5*(fEMCalPhiTotal+2*(eta-eta_up)*TMath::Tan(psi0))*(eta_up-eta_down) + (eta-eta_up+r)*TMath::Tan(psi0)*(eta-eta_up-r);
2936 }
2937 else if (phi1>=fEMCalPhiMax)
2938 {
2939 area_left=0.5*(fEMCalPhiMax-phi2+2*(eta-eta_a)*TMath::Tan(psi0))*(eta_a-fEMCalEtaMin) + (eta-eta_a+r)*TMath::Tan(psi0)*(eta-eta_a-r);
2940 }
2941 else if (phi2<=fEMCalPhiMin)
2942 {
2943 area_left=0.5*(phi1-fEMCalPhiMin+2*(eta-eta_b)*TMath::Tan(psi0))*(eta_b-fEMCalEtaMin) + (eta-eta_b+r)*TMath::Tan(psi0)*(eta-eta_b-r);
2944 }
2945 else
2946 {
2947 area_left=0.5*(phi1-phi2+2*r*TMath::Tan(psi0))*(u-r);
2948 }
2949
c6202663 2950 // Calculate the Right side area
ac6a3f1e 2951 if (phi3>=fEMCalPhiMax)
2952 {
2953 eta_a=eta+v*((fEMCalPhiMax-phi)/(phi3-phi));
2954 }
2955 if (phi4<=fEMCalPhiMin)
2956 {
2957 eta_b=eta+v*((phi-fEMCalPhiMin)/(phi-phi4));
2958 }
2959
2960 if ((phi3>=fEMCalPhiMax) && (phi4<=fEMCalPhiMin))
2961 {
2962 eta_up=TMath::Max(eta_a,eta_b);
2963 eta_down=TMath::Min(eta_a,eta_b);
2964
2965 area_right=(fEMCalEtaMax-eta_up)*fEMCalPhiTotal + 0.5*(fEMCalPhiTotal+2*(eta_down-eta)*TMath::Tan(psi0))*(eta_down-eta_up) + (eta_down-eta+r)*TMath::Tan(psi0)*(eta_up-eta-r);
2966 }
2967 else if (phi3>=fEMCalPhiMax)
2968 {
2969 area_right=0.5*(fEMCalPhiMax-phi4+2*(eta_a-eta)*TMath::Tan(psi0))*(fEMCalEtaMax-eta_a) + (eta_a-eta+r)*TMath::Tan(psi0)*(eta_a-eta-r);
2970 }
2971 else if (phi4<=fEMCalPhiMin)
2972 {
2973 area_right=0.5*(phi3-fEMCalPhiMin+2*(eta_b-eta)*TMath::Tan(psi0))*(fEMCalEtaMax-eta_b) + (eta_b-eta+r)*TMath::Tan(psi0)*(eta_b-eta-r);
2974 }
2975 else
2976 {
2977 area_right=0.5*(phi3-phi4+2*r*TMath::Tan(psi0))*(v-r);
2978 }
2979 return area_left+area_right;
2980}
c6202663 2981
2982Double_t AliAnalysisTaskFullpAJets::MedianRhokT(Double_t *pTkTEntries, Double_t *RhokTEntries, Int_t nEntries)
2983{
2984 // This function is used to calculate the median Rho kT value. The procedure is:
2985 // - Order the kT cluster array from highest rho value to lowest
2986 // - Exclude highest rho kT cluster
2987 // - Return the median rho value of the remaining subset
2988
2989 // Sort Array
2990 const Double_t rho_min=-9.9999E+99;
2991 Int_t j,k;
2992 Double_t w[nEntries]; // Used for sorting
2993 Double_t smax=rho_min;
2994 Int_t sindex=-1;
2995
2996 Double_t pTmax=0.0;
2997 Int_t pTmaxID=-1;
2998
2999 for (j=0;j<nEntries;j++)
3000 {
3001 w[j]=0.0;
3002 }
3003
3004 for (j=0;j<nEntries;j++)
3005 {
3006 if (pTkTEntries[j]>pTmax)
3007 {
3008 pTmax=pTkTEntries[j];
3009 pTmaxID=j;
3010 }
3011 }
3012
3013 for (j=0;j<nEntries;j++)
3014 {
3015 for (k=0;k<nEntries;k++)
3016 {
3017 if (RhokTEntries[k]>smax)
3018 {
3019 smax=RhokTEntries[k];
3020 sindex=k;
3021 }
3022 }
3023 w[j]=smax;
3024 RhokTEntries[sindex]=rho_min;
3025 smax=rho_min;
3026 sindex=-1;
3027 }
3028 return w[nEntries/2];
3029}
3030
3031
3032// AlipAJetData Class Member Defs
3033// Constructors
d812e269 3034AliAnalysisTaskFullpAJets::AlipAJetData::AlipAJetData() :
3035
3036 fName(0),
3037 fIsJetsFull(0),
3038 fnTotal(0),
3039 fnJets(0),
3040 fnJetsSC(0),
3041 fJetR(0),
3042 fSignalPt(0),
3043 fAreaCutFrac(0.6),
3e43a01f 3044 fNEF(1.0),
3045 fSignalTrackBias(0),
d812e269 3046 fPtMaxIndex(0),
3047 fPtMax(0),
3048 fPtSubLeadingIndex(0),
3049 fPtSubLeading(0),
3050 fJetsIndex(0),
3051 fJetsSCIndex(0),
20f2d13a 3052 fIsJetInArray(0),
3053 fJetMaxChargedPt(0)
c6202663 3054{
3055 fnTotal=0;
3056 // Dummy constructor ALWAYS needed for I/O.
3057}
3058
d812e269 3059AliAnalysisTaskFullpAJets::AlipAJetData::AlipAJetData(const char *name, Bool_t isFull, Int_t nEntries) :
3060
3061 fName(0),
3062 fIsJetsFull(0),
3063 fnTotal(0),
3064 fnJets(0),
3065 fnJetsSC(0),
3066 fJetR(0),
3067 fSignalPt(0),
3068 fAreaCutFrac(0.6),
3e43a01f 3069 fNEF(1.0),
3070 fSignalTrackBias(0),
d812e269 3071 fPtMaxIndex(0),
3072 fPtMax(0),
3073 fPtSubLeadingIndex(0),
3074 fPtSubLeading(0),
3075 fJetsIndex(0),
3076 fJetsSCIndex(0),
20f2d13a 3077 fIsJetInArray(0),
3078 fJetMaxChargedPt(0)
c6202663 3079{
3080 SetName(name);
3081 SetIsJetsFull(isFull);
3082 SetTotalEntries(nEntries);
3083 SetLeading(0,-9.99E+099);
3084 SetSubLeading(0,-9.99E+099);
3085 SetSignalCut(0);
3086 SetAreaCutFraction(0.6);
d812e269 3087 SetJetR(fJetR);
3e43a01f 3088 SetSignalTrackPtBias(0);
c6202663 3089}
3090
3091// Destructor
3092AliAnalysisTaskFullpAJets::AlipAJetData::~AlipAJetData()
3093{
3094 if (fnTotal!=0)
3095 {
3096 SetName("");
3097 SetIsJetsFull(kFALSE);
3098 SetTotalEntries(0);
3099 SetTotalJets(0);
3100 SetTotalSignalJets(0);
3101 SetLeading(0,0);
3102 SetSubLeading(0,0);
3103 SetSignalCut(0);
3104 SetAreaCutFraction(0);
3105 SetJetR(0);
91d0893e 3106 SetNEF(0);
3e43a01f 3107 SetSignalTrackPtBias(kFALSE);
c6202663 3108
3109 delete [] fJetsIndex;
3110 delete [] fJetsSCIndex;
3111 delete [] fIsJetInArray;
20f2d13a 3112 delete [] fJetMaxChargedPt;
c6202663 3113 }
3114}
3115
3116// User Defined Sub-Routines
3117void AliAnalysisTaskFullpAJets::AlipAJetData::InitializeJetData(TClonesArray *jetList, Int_t nEntries)
3118{
3119 Int_t i=0;
3120 Int_t k=0;
3121 Int_t l=0;
3122 Double_t AreaThreshold = fAreaCutFrac*TMath::Pi()*TMath::Power(fJetR,2);
3123
3124 // Initialize Jet Data
3125 for (i=0;i<nEntries;i++)
3126 {
3127 AliEmcalJet *myJet =(AliEmcalJet*) jetList->At(i);
3128
3129 if (fIsJetInArray[i]==kTRUE && myJet->Area()>AreaThreshold)
3130 {
3131 SetJetIndex(i,k);
3132 if (myJet->Pt()>fPtMax)
3133 {
3134 SetSubLeading(fPtMaxIndex,fPtMax);
3135 SetLeading(i,myJet->Pt());
3136 }
3137 else if (myJet->Pt()>fPtSubLeading)
3138 {
20f2d13a 3139 SetSubLeading(i,myJet->Pt());
c6202663 3140 }
91d0893e 3141 // require leading charged constituent to have a pT greater then the signal threshold & Jet NEF to be less then the Signal Jet NEF cut
20f2d13a 3142 fJetMaxChargedPt[i] = myJet->MaxTrackPt();
8daeee93 3143 if (fSignalTrackBias==kTRUE)
3144 {
3145 if (fJetMaxChargedPt[i]>=fSignalPt && myJet->NEF()<=fNEF)
3146 {
3147 SetSignalJetIndex(i,l);
3148 l++;
3149 }
3150 }
3151 else
c6202663 3152 {
8daeee93 3153 if (myJet->Pt()>=fSignalPt && myJet->NEF()<=fNEF)
3154 {
3155 SetSignalJetIndex(i,l);
3156 l++;
3157 }
c6202663 3158 }
3159 k++;
3160 }
3161 }
3162 SetTotalJets(k);
3163 SetTotalSignalJets(l);
3164}
3165
3166// Setters
3167void AliAnalysisTaskFullpAJets::AlipAJetData::SetName(const char *name)
3168{
3169 fName = name;
3170}
3171
3172void AliAnalysisTaskFullpAJets::AlipAJetData::SetIsJetsFull(Bool_t isFull)
3173{
3174 fIsJetsFull = isFull;
3175}
3176
3177void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalEntries(Int_t nEntries)
3178{
3179 fnTotal = nEntries;
3180 fJetsIndex = new Int_t[fnTotal];
3181 fJetsSCIndex = new Int_t[fnTotal];
3182 fIsJetInArray = new Bool_t[fnTotal];
20f2d13a 3183 fJetMaxChargedPt = new Double_t[fnTotal];
c6202663 3184}
3185
3186void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalJets(Int_t nJets)
3187{
3188 fnJets = nJets;
3189}
3190
3191void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalSignalJets(Int_t nSignalJets)
3192{
3193 fnJetsSC = nSignalJets;
3194}
3195
3196void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalCut(Double_t Pt)
3197{
3198 fSignalPt = Pt;
3199}
3200
3201void AliAnalysisTaskFullpAJets::AlipAJetData::SetLeading(Int_t index, Double_t Pt)
3202{
3203 fPtMaxIndex = index;
3204 fPtMax = Pt;
3205}
3206
3207void AliAnalysisTaskFullpAJets::AlipAJetData::SetSubLeading(Int_t index, Double_t Pt)
3208{
3209 fPtSubLeadingIndex = index;
3210 fPtSubLeading = Pt;
3211}
3212
3213void AliAnalysisTaskFullpAJets::AlipAJetData::SetJetIndex(Int_t index, Int_t At)
3214{
3215 fJetsIndex[At] = index;
3216}
3217
3218void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalJetIndex(Int_t index, Int_t At)
3219{
3220 fJetsSCIndex[At] = index;
3221}
3222
3223void AliAnalysisTaskFullpAJets::AlipAJetData::SetIsJetInArray(Bool_t isInArray, Int_t At)
3224{
3225 fIsJetInArray[At] = isInArray;
3226}
3227
3228void AliAnalysisTaskFullpAJets::AlipAJetData::SetAreaCutFraction(Double_t areaFraction)
3229{
3230 fAreaCutFrac = areaFraction;
3231}
3232
3233void AliAnalysisTaskFullpAJets::AlipAJetData::SetJetR(Double_t jetR)
3234{
3235 fJetR = jetR;
3236}
3237
91d0893e 3238void AliAnalysisTaskFullpAJets::AlipAJetData::SetNEF(Double_t nef)
3239{
3240 fNEF = nef;
3241}
3242
8daeee93 3243void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalTrackPtBias(Bool_t chargedBias)
3244{
3245 fSignalTrackBias = chargedBias;
3246}
3247
c6202663 3248// Getters
3249Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalEntries()
3250{
3251 return fnTotal;
3252}
3253
3254Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalJets()
3255{
3256 return fnJets;
3257}
3258
3259Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalSignalJets()
3260{
3261 return fnJetsSC;
3262}
3263
3264Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSignalCut()
3265{
3266 return fSignalPt;
3267}
3268
3269Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetLeadingIndex()
3270{
3271 return fPtMaxIndex;
3272}
3273
3274Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetLeadingPt()
3275{
3276 return fPtMax;
3277}
3278
3279Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSubLeadingIndex()
3280{
3281 return fPtSubLeadingIndex;
3282}
3283
3284Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSubLeadingPt()
3285{
3286 return fPtSubLeading;
3287}
3288
3289Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetJetIndex(Int_t At)
3290{
3291 return fJetsIndex[At];
3292}
3293
3294Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSignalJetIndex(Int_t At)
3295{
3296 return fJetsSCIndex[At];
3297}
3298
3299Bool_t AliAnalysisTaskFullpAJets::AlipAJetData::GetIsJetInArray(Int_t At)
3300{
3301 return fIsJetInArray[At];
3302}
3303
20f2d13a 3304Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetJetMaxChargedPt(Int_t At)
3305{
3306 return fJetMaxChargedPt[At];
3307}
c6202663 3308
91d0893e 3309Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetNEF()
3310{
3311 return fNEF;
3312}
3313
c6202663 3314// AlipAJetHistos Class Member Defs
3315// Constructors
d812e269 3316AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos() :
3317
3318 fOutput(0),
3319
3320 fh020Rho(0),
3321 fh80100Rho(0),
3322 fhRho(0),
3323 fhRhoCen(0),
3324 fh020BSPt(0),
3325 fh80100BSPt(0),
3326 fhBSPt(0),
3327 fhBSPtCen(0),
3328 fh020BSPtSignal(0),
3329 fh80100BSPtSignal(0),
3330 fhBSPtSignal(0),
3331 fhBSPtCenSignal(0),
3332 fh020DeltaPt(0),
3333 fh80100DeltaPt(0),
3334 fhDeltaPt(0),
3335 fhDeltaPtCen(0),
3336 fh020DeltaPtSignal(0),
3337 fh80100DeltaPtSignal(0),
3338 fhDeltaPtSignal(0),
3339 fhDeltaPtCenSignal(0),
7acc3e04 3340 fh020DeltaPtNColl(0),
3341 fh80100DeltaPtNColl(0),
3342 fhDeltaPtNColl(0),
3343 fhDeltaPtCenNColl(0),
d812e269 3344 fh020BckgFlucPt(0),
3345 fh80100BckgFlucPt(0),
3346 fhBckgFlucPt(0),
3347 fhBckgFlucPtCen(0),
3348
3349 fpRho(0),
3350 fpLJetRho(0),
e864d416 3351 fhJetPtArea(0),
2d2100d5
MV
3352 fhJetConstituentPt(0),
3353 fhJetTracksPt(0),
3354 fhJetClustersPt(0),
3355 fhJetConstituentCounts(0),
3356 fhJetTracksCounts(0),
3357 fhJetClustersCounts(0),
8daeee93 3358 fNEFOutput(0),
8daeee93 3359 fhClusterShapeAll(0),
36cb7ae2 3360 fhClusterPtCellAll(0),
d812e269 3361 fName(0),
3362 fCentralityTag(0),
3363 fCentralityBins(0),
3364 fCentralityLow(0),
3365 fCentralityUp(0),
3366 fPtBins(0),
3367 fPtLow(0),
3368 fPtUp(0),
3369 fRhoPtBins(0),
3370 fRhoPtLow(0),
3371 fRhoPtUp(0),
3372 fDeltaPtBins(0),
3373 fDeltaPtLow(0),
3374 fDeltaPtUp(0),
3375 fBckgFlucPtBins(0),
3376 fBckgFlucPtLow(0),
3377 fBckgFlucPtUp(0),
3378 fLJetPtBins(0),
3379 fLJetPtLow(0),
7acc3e04 3380 fLJetPtUp(0),
20f2d13a 3381 fRhoValue(0),
3382 fLChargedTrackPtBins(0),
3383 fLChargedTrackPtLow(0),
91d0893e 3384 fLChargedTrackPtUp(0),
8daeee93 3385 fDoNEFQAPlots(0),
3e43a01f 3386 fSignalTrackBias(0),
91d0893e 3387 fNEFBins(0),
3388 fNEFLow(0),
8daeee93 3389 fNEFUp(0),
2d2100d5
MV
3390 fnDimJet(0),
3391 fnDimCluster(0),
8daeee93 3392 fEMCalPhiMin(1.39626),
3393 fEMCalPhiMax(3.26377),
3394 fEMCalEtaMin(-0.7),
3395 fEMCalEtaMax(0.7)
3396
c6202663 3397{
3398 // Dummy constructor ALWAYS needed for I/O.
3399}
3400
d812e269 3401AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos(const char *name) :
3402
3403 fOutput(0),
3404
3405 fh020Rho(0),
3406 fh80100Rho(0),
3407 fhRho(0),
3408 fhRhoCen(0),
3409 fh020BSPt(0),
3410 fh80100BSPt(0),
3411 fhBSPt(0),
3412 fhBSPtCen(0),
3413 fh020BSPtSignal(0),
3414 fh80100BSPtSignal(0),
3415 fhBSPtSignal(0),
3416 fhBSPtCenSignal(0),
3417 fh020DeltaPt(0),
3418 fh80100DeltaPt(0),
3419 fhDeltaPt(0),
3420 fhDeltaPtCen(0),
3421 fh020DeltaPtSignal(0),
3422 fh80100DeltaPtSignal(0),
3423 fhDeltaPtSignal(0),
3424 fhDeltaPtCenSignal(0),
7acc3e04 3425 fh020DeltaPtNColl(0),
3426 fh80100DeltaPtNColl(0),
3427 fhDeltaPtNColl(0),
3428 fhDeltaPtCenNColl(0),
d812e269 3429 fh020BckgFlucPt(0),
3430 fh80100BckgFlucPt(0),
3431 fhBckgFlucPt(0),
3432 fhBckgFlucPtCen(0),
3433
3434 fpRho(0),
3435 fpLJetRho(0),
e864d416 3436 fhJetPtArea(0),
2d2100d5
MV
3437 fhJetConstituentPt(0),
3438 fhJetTracksPt(0),
3439 fhJetClustersPt(0),
3440 fhJetConstituentCounts(0),
3441 fhJetTracksCounts(0),
3442 fhJetClustersCounts(0),
8daeee93 3443 fNEFOutput(0),
8daeee93 3444 fhClusterShapeAll(0),
36cb7ae2 3445 fhClusterPtCellAll(0),
d812e269 3446 fName(0),
3447 fCentralityTag(0),
3448 fCentralityBins(0),
3449 fCentralityLow(0),
3450 fCentralityUp(0),
3451 fPtBins(0),
3452 fPtLow(0),
3453 fPtUp(0),
3454 fRhoPtBins(0),
3455 fRhoPtLow(0),
3456 fRhoPtUp(0),
3457 fDeltaPtBins(0),
3458 fDeltaPtLow(0),
3459 fDeltaPtUp(0),
3460 fBckgFlucPtBins(0),
3461 fBckgFlucPtLow(0),
3462 fBckgFlucPtUp(0),
3463 fLJetPtBins(0),
3464 fLJetPtLow(0),
7acc3e04 3465 fLJetPtUp(0),
20f2d13a 3466 fRhoValue(0),
3467 fLChargedTrackPtBins(0),
3468 fLChargedTrackPtLow(0),
91d0893e 3469 fLChargedTrackPtUp(0),
8daeee93 3470 fDoNEFQAPlots(0),
3e43a01f 3471 fSignalTrackBias(0),
91d0893e 3472 fNEFBins(0),
3473 fNEFLow(0),
8daeee93 3474 fNEFUp(0),
2d2100d5
MV
3475 fnDimJet(0),
3476 fnDimCluster(0),
8daeee93 3477 fEMCalPhiMin(1.39626),
3478 fEMCalPhiMax(3.26377),
3479 fEMCalEtaMin(-0.7),
3480 fEMCalEtaMax(0.7)
91d0893e 3481
c6202663 3482{
3483 SetName(name);
3484 SetCentralityTag("V0A");
3485 SetCentralityRange(100,0,100);
3486 SetPtRange(250,-50,200);
3487 SetRhoPtRange(500,0,50);
3488 SetDeltaPtRange(200,-100,100);
3489 SetBackgroundFluctuationsPtRange(100,0,100);
3490 SetLeadingJetPtRange(200,0,200);
20f2d13a 3491 SetLeadingChargedTrackPtRange(100,0,100);
91d0893e 3492 SetNEFRange(100,0,1);
8daeee93 3493 DoNEFQAPlots(kFALSE);
c6202663 3494
3495 Init();
3496}
3497
8daeee93 3498AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos(const char *name, const char *centag, Bool_t doNEF) :
d812e269 3499
3500 fOutput(0),
3501
3502 fh020Rho(0),
3503 fh80100Rho(0),
3504 fhRho(0),
3505 fhRhoCen(0),
3506 fh020BSPt(0),
3507 fh80100BSPt(0),
3508 fhBSPt(0),
3509 fhBSPtCen(0),
3510 fh020BSPtSignal(0),
3511 fh80100BSPtSignal(0),
3512 fhBSPtSignal(0),
3513 fhBSPtCenSignal(0),
3514 fh020DeltaPt(0),
3515 fh80100DeltaPt(0),
3516 fhDeltaPt(0),
3517 fhDeltaPtCen(0),
3518 fh020DeltaPtSignal(0),
3519 fh80100DeltaPtSignal(0),
3520 fhDeltaPtSignal(0),
3521 fhDeltaPtCenSignal(0),
7acc3e04 3522 fh020DeltaPtNColl(0),
3523 fh80100DeltaPtNColl(0),
3524 fhDeltaPtNColl(0),
3525 fhDeltaPtCenNColl(0),
d812e269 3526 fh020BckgFlucPt(0),
3527 fh80100BckgFlucPt(0),
3528 fhBckgFlucPt(0),
3529 fhBckgFlucPtCen(0),
3530
3531 fpRho(0),
3532 fpLJetRho(0),
e864d416 3533 fhJetPtArea(0),
2d2100d5
MV
3534 fhJetConstituentPt(0),
3535 fhJetTracksPt(0),
3536 fhJetClustersPt(0),
3537 fhJetConstituentCounts(0),
3538 fhJetTracksCounts(0),
3539 fhJetClustersCounts(0),
8daeee93 3540 fNEFOutput(0),
8daeee93 3541 fhClusterShapeAll(0),
36cb7ae2 3542 fhClusterPtCellAll(0),
d812e269 3543 fName(0),
3544 fCentralityTag(0),
3545 fCentralityBins(0),
3546 fCentralityLow(0),
3547 fCentralityUp(0),
3548 fPtBins(0),
3549 fPtLow(0),
3550 fPtUp(0),
3551 fRhoPtBins(0),
3552 fRhoPtLow(0),
3553 fRhoPtUp(0),
3554 fDeltaPtBins(0),
3555 fDeltaPtLow(0),
3556 fDeltaPtUp(0),
3557 fBckgFlucPtBins(0),
3558 fBckgFlucPtLow(0),
3559 fBckgFlucPtUp(0),
3560 fLJetPtBins(0),
3561 fLJetPtLow(0),
7acc3e04 3562 fLJetPtUp(0),
20f2d13a 3563 fRhoValue(0),
3564 fLChargedTrackPtBins(0),
3565 fLChargedTrackPtLow(0),
91d0893e 3566 fLChargedTrackPtUp(0),
8daeee93 3567 fDoNEFQAPlots(0),
3e43a01f 3568 fSignalTrackBias(0),
91d0893e 3569 fNEFBins(0),
3570 fNEFLow(0),
8daeee93 3571 fNEFUp(0),
2d2100d5
MV
3572 fnDimJet(0),
3573 fnDimCluster(0),
8daeee93 3574 fEMCalPhiMin(1.39626),
3575 fEMCalPhiMax(3.26377),
3576 fEMCalEtaMin(-0.7),
3577 fEMCalEtaMax(0.7)
91d0893e 3578
c6202663 3579{
3580 SetName(name);
3581 SetCentralityTag(centag);
3582 SetCentralityRange(100,0,100);
3583 SetPtRange(250,-50,200);
3584 SetRhoPtRange(500,0,50);
3585 SetDeltaPtRange(200,-100,100);
3586 SetBackgroundFluctuationsPtRange(100,0,100);
3587 SetLeadingJetPtRange(200,0,200);
20f2d13a 3588 SetLeadingChargedTrackPtRange(100,0,100);
91d0893e 3589 SetNEFRange(100,0,1);
8daeee93 3590 DoNEFQAPlots(doNEF);
3591
c6202663 3592 Init();
3593}
3594
3595// Destructor
3596AliAnalysisTaskFullpAJets::AlipAJetHistos::~AlipAJetHistos()
3597{
3598 if (fOutput)
3599 {
3600 delete fOutput;
3601 }
3602}
3603
3604void AliAnalysisTaskFullpAJets::AlipAJetHistos::Init()
3605{
2d2100d5 3606 Int_t i;
8daeee93 3607 // Initialize Private Variables
2d2100d5 3608 Int_t TCBins = 100;
8daeee93 3609 fEMCalPhiMin=(80/(double)360)*2*TMath::Pi();
3610 fEMCalPhiMax=(187/(double)360)*2*TMath::Pi();
3611 fEMCalEtaMin=-0.7;
3612 fEMCalEtaMax=0.7;
3613
c6202663 3614 fOutput = new TList();
3615 fOutput->SetOwner();
3616 fOutput->SetName(fName);
3617
3618 TString RhoString="";
3619 TString PtString="";
3620 TString DeltaPtString="";
3621 TString BckgFlucPtString="";
3622 TString CentralityString;
62620fff 3623 CentralityString = Form("Centrality (%s) ",fCentralityTag);
c6202663 3624
3625 // Rho Spectral Plots
3626 RhoString = Form("%d-%d Centrality, Rho Spectrum",0,20);
3627 fh020Rho = new TH1D("fh020Rho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
3628 fh020Rho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
3629 fh020Rho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
3630 fh020Rho->Sumw2();
3631
3632 RhoString = Form("%d-%d Centrality, Rho Spectrum",80,100);
3633 fh80100Rho = new TH1D("fh80100Rho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
3634 fh80100Rho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
3635 fh80100Rho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
3636 fh80100Rho->Sumw2();
3637
3638 RhoString = Form("%d-%d Centrality, Rho Spectrum",0,100);
3639 fhRho = new TH1D("fhRho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
3640 fhRho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
3641 fhRho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
3642 fhRho->Sumw2();
3643
3644 RhoString = "Rho Spectrum vs Centrality";
3645 fhRhoCen = new TH2D("fhRhoCen",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3646 fhRhoCen->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
08b981da 3647 fhRhoCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
c6202663 3648 fhRhoCen->GetZaxis()->SetTitle("1/N_{Events} dN/d#rho");
3649 fhRhoCen->Sumw2();
3650
3651 // Background Subtracted Plots
3652 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",0,20);
3653 fh020BSPt = new TH1D("fh020BSPt",PtString,fPtBins,fPtLow,fPtUp);
3654 fh020BSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
85b11075 3655 fh020BSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
c6202663 3656 fh020BSPt->Sumw2();
3657
3658 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",80,100);
3659 fh80100BSPt = new TH1D("fh80100BSPt",PtString,fPtBins,fPtLow,fPtUp);
3660 fh80100BSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
85b11075 3661 fh80100BSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
c6202663 3662 fh80100BSPt->Sumw2();
3663
3664 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",0,100);
3665 fhBSPt = new TH1D("fhBSPt",PtString,fPtBins,fPtLow,fPtUp);
3666 fhBSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
85b11075 3667 fhBSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
c6202663 3668 fhBSPt->Sumw2();
3669
3670 PtString = "Background Subtracted Jet Spectrum vs Centrality";
3671 fhBSPtCen = new TH2D("fhBSPtCen",PtString,fPtBins,fPtLow,fPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3672 fhBSPtCen->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
08b981da 3673 fhBSPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
85b11075 3674 fhBSPtCen->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
c6202663 3675 fhBSPtCen->Sumw2();
62620fff 3676
c6202663 3677 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",0,20);
3678 fh020BSPtSignal = new TH1D("fh020BSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
3679 fh020BSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
85b11075 3680 fh020BSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
c6202663 3681 fh020BSPtSignal->Sumw2();
3682
3683 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",80,100);
3684 fh80100BSPtSignal = new TH1D("fh80100BSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
3685 fh80100BSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
85b11075 3686 fh80100BSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
c6202663 3687 fh80100BSPtSignal->Sumw2();
3688
3689 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",0,100);
3690 fhBSPtSignal = new TH1D("fhBSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
3691 fhBSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
85b11075 3692 fhBSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
c6202663 3693 fhBSPtSignal->Sumw2();
3694
3695 PtString = "Background Subtracted Signal Jet Spectrum vs Centrality";
3696 fhBSPtCenSignal = new TH2D("fhBSPtCenSignal",PtString,fPtBins,fPtLow,fPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3697 fhBSPtCenSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
08b981da 3698 fhBSPtCenSignal->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
85b11075 3699 fhBSPtCenSignal->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
c6202663 3700 fhBSPtCenSignal->Sumw2();
3701
3702 // Delta Pt Plots with RC at least 2R away from Leading Signal
3703 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
3704 fh020DeltaPt = new TH1D("fh020DeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3705 fh020DeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3706 fh020DeltaPt->GetYaxis()->SetTitle("Probability Density");
3707 fh020DeltaPt->Sumw2();
3708
3709 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
3710 fh80100DeltaPt = new TH1D("fh80100DeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3711 fh80100DeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3712 fh80100DeltaPt->GetYaxis()->SetTitle("Probability Density");
3713 fh80100DeltaPt->Sumw2();
3714
3715 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
3716 fhDeltaPt = new TH1D("fhDeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3717 fhDeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3718 fhDeltaPt->GetYaxis()->SetTitle("Probability Density");
3719 fhDeltaPt->Sumw2();
3720
3721 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
3722 fhDeltaPtCen = new TH2D("fhDeltaPtCen",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3723 fhDeltaPtCen->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
08b981da 3724 fhDeltaPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
c6202663 3725 fhDeltaPtCen->GetZaxis()->SetTitle("Probability Density");
3726 fhDeltaPtCen->Sumw2();
3727
3728 // Delta Pt Plots with no spatial restrictions on RC
3729 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
3730 fh020DeltaPtSignal = new TH1D("fh020DeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3731 fh020DeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3732 fh020DeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
3733 fh020DeltaPtSignal->Sumw2();
3734
3735 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
3736 fh80100DeltaPtSignal = new TH1D("fh80100DeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3737 fh80100DeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3738 fh80100DeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
3739 fh80100DeltaPtSignal->Sumw2();
3740
3741 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
3742 fhDeltaPtSignal = new TH1D("fhDeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3743 fhDeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3744 fhDeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
3745 fhDeltaPtSignal->Sumw2();
3746
3747 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
3748 fhDeltaPtCenSignal = new TH2D("fhDeltaPtCenSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3749 fhDeltaPtCenSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
08b981da 3750 fhDeltaPtCenSignal->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
c6202663 3751 fhDeltaPtCenSignal->GetZaxis()->SetTitle("Probability Density");
3752 fhDeltaPtCenSignal->Sumw2();
7acc3e04 3753
3754 // Delta Pt Plots with NColl restrictions on RC
3755 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
3756 fh020DeltaPtNColl = new TH1D("fh020DeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3757 fh020DeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3758 fh020DeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
3759 fh020DeltaPtNColl->Sumw2();
3760
3761 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
3762 fh80100DeltaPtNColl = new TH1D("fh80100DeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3763 fh80100DeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3764 fh80100DeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
3765 fh80100DeltaPtNColl->Sumw2();
c6202663 3766
7acc3e04 3767 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
3768 fhDeltaPtNColl = new TH1D("fhDeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3769 fhDeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3770 fhDeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
3771 fhDeltaPtNColl->Sumw2();
3772
3773 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
3774 fhDeltaPtCenNColl = new TH2D("fhDeltaPtCenNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3775 fhDeltaPtCenNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
08b981da 3776 fhDeltaPtCenNColl->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
7acc3e04 3777 fhDeltaPtCenNColl->GetZaxis()->SetTitle("Probability Density");
3778 fhDeltaPtCenNColl->Sumw2();
3779
c6202663 3780 // Background Fluctuations Pt Plots
3781 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",0,20);
3782 fh020BckgFlucPt = new TH1D("fh020BckgFlucPt",PtString,fPtBins,fPtLow,fPtUp);
3783 fh020BckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
85b11075 3784 fh020BckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
c6202663 3785 fh020BckgFlucPt->Sumw2();
3786
3787 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",80,100);
3788 fh80100BckgFlucPt = new TH1D("fh80100BckgFlucPt",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp);
3789 fh80100BckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
85b11075 3790 fh80100BckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
c6202663 3791 fh80100BckgFlucPt->Sumw2();
3792
3793 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",0,100);
3794 fhBckgFlucPt = new TH1D("fhBckgFlucPt",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp);
3795 fhBckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
85b11075 3796 fhBckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
c6202663 3797 fhBckgFlucPt->Sumw2();
3798
3799 BckgFlucPtString = "Background Fluctuation p_{T} Spectrum vs Centrality";
3800 fhBckgFlucPtCen = new TH2D("fhBckgFlucPtCen",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3801 fhBckgFlucPtCen->GetXaxis()->SetTitle("#p_{T} (GeV/c)");
08b981da 3802 fhBckgFlucPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
85b11075 3803 fhBckgFlucPtCen->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
c6202663 3804 fhBckgFlucPtCen->Sumw2();
3805
3806 // Background Density vs Centrality Profile
3807 RhoString = "Background Density vs Centrality";
3808 fpRho = new TProfile("fpRho",RhoString,fCentralityBins,fCentralityLow,fCentralityUp);
08b981da 3809 fpRho->GetXaxis()->SetTitle(Form("%s",CentralityString.Data()));
c6202663 3810 fpRho->GetYaxis()->SetTitle("p_{T}/Area (GeV/c)");
3811
3812 // Background Density vs Leading Jet Profile
3813 fpLJetRho = new TProfile("fpLJetRho","#rho vs Leading Jet p_{T}",fLJetPtBins,fLJetPtLow,fLJetPtUp);
3814 fpLJetRho->GetXaxis()->SetTitle("Leading Jet p_{T}");
3815 fpLJetRho->GetYaxis()->SetTitle("p_{T}/Area (GeV/c)");
8daeee93 3816
e864d416 3817 // Jet pT vs Area
3818 Int_t JetPtAreaBins=200;
3819 Double_t JetPtAreaLow=0.0;
3820 Double_t JetPtAreaUp=2.0;
3821
3822 fhJetPtArea = new TH2D("fhJetPtArea","Jet Area Distribution",fPtBins,fPtLow,fPtUp,JetPtAreaBins,JetPtAreaLow,JetPtAreaUp);
3823 fhJetPtArea->GetXaxis()->SetTitle("p_{T} (GeV/c)");
3824 fhJetPtArea->GetYaxis()->SetTitle("A_{jet}");
3825 fhJetPtArea->GetZaxis()->SetTitle("1/N_{Events} dN/dA_{jet}dp_{T}");
3826 fhJetPtArea->Sumw2();
3827
2d2100d5
MV
3828 // Jet pT vs Constituent pT
3829 fhJetConstituentPt = new TH2D("fhJetConstituentPt","Jet constituents p_{T} distribution",fPtBins,fPtLow,fPtUp,10*fPtBins,fPtLow,fPtUp);
3830 fhJetConstituentPt->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
3831 fhJetConstituentPt->GetYaxis()->SetTitle("Constituent p_{T} (GeV/c)");
3832 fhJetConstituentPt->Sumw2();
3833
3834 fhJetTracksPt = new TH2D("fhJetTracksPt","Jet constituents Tracks p_{T} distribution",fPtBins,fPtLow,fPtUp,10*fPtBins,fPtLow,fPtUp);
3835 fhJetTracksPt->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
3836 fhJetTracksPt->GetYaxis()->SetTitle("Constituent Track p_{T} (GeV/c)");
3837 fhJetTracksPt->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dp_{T,track}");
3838 fhJetTracksPt->Sumw2();
3839
3840 fhJetClustersPt = new TH2D("fhJetClustersPt","Jet constituents Clusters p_{T} distribution",fPtBins,fPtLow,fPtUp,10*fPtBins,fPtLow,fPtUp);
3841 fhJetClustersPt->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
3842 fhJetClustersPt->GetYaxis()->SetTitle("Constituent Cluster p_{T} (GeV/c)");
3843 fhJetClustersPt->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dp_{T,cluster}");
3844 fhJetClustersPt->Sumw2();
3845
3846 // Jet pT vs Constituent Counts
3847 fhJetConstituentCounts = new TH2D("fhJetConstituentCounts","Jet constituents distribution",fPtBins,fPtLow,fPtUp,TCBins,0,(Double_t)TCBins);
3848 fhJetConstituentCounts->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
3849 fhJetConstituentCounts->GetYaxis()->SetTitle("Constituent Count");
3850 fhJetConstituentCounts->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dN_{constituent}");
3851 fhJetConstituentCounts->Sumw2();
3852
3853 fhJetTracksCounts = new TH2D("fhJetTracksCounts","Jet constituents Tracks distribution",fPtBins,fPtLow,fPtUp,TCBins,0,(Double_t)TCBins);
3854 fhJetTracksCounts->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
3855 fhJetTracksCounts->GetYaxis()->SetTitle("Constituent Track Count");
3856 fhJetTracksCounts->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dN_{track}");
3857 fhJetTracksCounts->Sumw2();
3858
3859 fhJetClustersCounts = new TH2D("fhJetClustersCounts","Jet constituents Clusters distribution",fPtBins,fPtLow,fPtUp,TCBins,0,(Double_t)TCBins);
3860 fhJetClustersCounts->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
3861 fhJetClustersCounts->GetYaxis()->SetTitle("Constituent Cluster Count");
3862 fhJetClustersCounts->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dN_{cluster}");
3863 fhJetClustersCounts->Sumw2();
3864
8daeee93 3865 // Neutral Energy Fraction Histograms & QA
3866 if (fDoNEFQAPlots==kTRUE)
3867 {
3868 fNEFOutput = new TList();
3869 fNEFOutput->SetOwner();
3870 fNEFOutput->SetName("ListNEFQAPlots");
3871
2d2100d5
MV
3872 SetNEFJetDimensions(8); // Order: nef,Jet Pt,Eta,Phi,Centrality,Constituent mult,Charged mult, Neutral mult
3873 SetNEFClusterDimensions(10); // Order: nef,Jet Pt,Eta,Phi,Centrality,F_Cross,z_leading,t_cell,deltat_cell,Cell Count
3874
3875 Int_t dimJetBins[fnDimJet];
3876 Double_t dimJetLow[fnDimJet];
3877 Double_t dimJetUp[fnDimJet];
3878
3879 Int_t dimClusterBins[fnDimCluster];
3880 Double_t dimClusterLow[fnDimCluster];
3881 Double_t dimClusterUp[fnDimCluster];
3882
3883 // Establish dimensinality bin counts and bounds
3884 // NEF
3885 dimJetBins[0] = dimClusterBins[0] = fNEFBins;
3886 dimJetLow[0] = dimClusterLow[0] = fNEFLow;
3887 dimJetUp[0] = dimClusterUp[0] = fNEFUp;
3888
3889 // Jet Pt
3890 dimJetBins[1] = dimClusterBins[1] = fPtBins;
3891 dimJetLow[1] = dimClusterLow[1] = fPtLow;
3892 dimJetUp[1] = dimClusterUp[1] = fPtUp;
3893
3894 // Eta-Phi
3895 dimJetBins[2] = dimJetBins[3] = dimClusterBins[2] = dimClusterBins[3] = TCBins;
3896 dimJetLow[2] = dimClusterLow[2] = fEMCalEtaMin;
3897 dimJetUp[2] = dimClusterUp[2] = fEMCalEtaMax;
3898 dimJetLow[3] = dimClusterLow[3] = fEMCalPhiMin;
3899 dimJetUp[3] = dimClusterUp[3] = fEMCalPhiMax;
3900
3901 // Centrality
3902 dimJetBins[4] = dimClusterBins[4] = fCentralityBins;
3903 dimJetLow[4] = dimClusterLow[4] = fCentralityLow;
3904 dimJetUp[4] = dimClusterUp[4] = fCentralityUp;
3905
3906 // Jets Constituent Multiplicity Info {Total,Charged,Neutral}
3907 for (i=5;i<8;i)
3908 {
3909 dimJetBins[i] = TCBins;
3910 dimJetLow[i] = 0.0;
3911 dimJetUp[i] = (Double_t)TCBins;
3912 }
3913
3914 // Cluster F_Cross
3915 dimClusterBins[5] = TCBins;
3916 dimClusterLow[5] = 0.0;
3917 dimClusterUp[5] = 1.0;
3918
3919 // Cluster z_leading
3920 dimClusterBins[6] = TCBins;
3921 dimClusterLow[6] = 0.0;
3922 dimClusterUp[6] = 1.0;
3923
3924 // Cluster t_cell
3925 dimClusterBins[7] = 400;
3926 dimClusterLow[7] = -2e-07;
3927 dimClusterUp[7] = 2e-07;
3928
3929 // Cluster delta t_cell
3930 dimClusterBins[8] = 100;
3931 dimClusterLow[8] = 0.0;
3932 dimClusterUp[8] = 1e-07;
3933
3934 // Cluster Cell Count
3935 dimClusterBins[9] = TCBins;
3936 dimClusterLow[9] = 0.0;
3937 dimClusterUp[9] = 100.0;
3938
3939 fhJetNEFInfo = new THnSparseD("fhJetNEFInfo","Jet NEF Information Histogram",fnDimJet,dimJetBins,dimJetLow,dimJetUp);
3940 fhJetNEFInfo->Sumw2();
3941 fhJetNEFSignalInfo = new THnSparseD("fhJetNEFSignalInfo","Signal Jet NEF Information Histogram",fnDimJet,dimJetBins,dimJetLow,dimJetUp);
3942 fhJetNEFSignalInfo->Sumw2();
3943
3944 fhClusterNEFInfo = new THnSparseD("fhClusterNEFInfo","Jet NEF Cluster Information Histogram",fnDimCluster,dimClusterBins,dimClusterLow,dimClusterUp);
3945 fhClusterNEFInfo->Sumw2();
3946 fhClusterNEFSignalInfo = new THnSparseD("fhClusterNEFSignalInfo","Signal Jet NEF Cluster Information Histogram",fnDimCluster,dimClusterBins,dimClusterLow,dimClusterUp);
3947 fhClusterNEFSignalInfo->Sumw2();
8daeee93 3948
8daeee93 3949 // Cluster Shape QA
3950 fhClusterShapeAll = new TH1D("fhClusterShapeAll","Cluster Shape of all CaloClustersCorr",10*TCBins,0,10*TCBins);
3951 fhClusterShapeAll->GetXaxis()->SetTitle("Cells");
3952 fhClusterShapeAll->GetYaxis()->SetTitle("1/N_{Events} dN/dCells");
3953 fhClusterShapeAll->Sumw2();
36cb7ae2 3954
3955 fhClusterPtCellAll = new TH2D("fhClusterPtCellAll","Cluster p_{T} vs Cluster Shape of all CaloClustersCorr",fPtBins,fPtLow,fPtUp,10*TCBins,0,10*TCBins);
3956 fhClusterPtCellAll->GetXaxis()->SetTitle("p_{T} (GeV/c)");
3957 fhClusterPtCellAll->GetYaxis()->SetTitle("Cells");
3958 fhClusterPtCellAll->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}dCells");
3959 fhClusterPtCellAll->Sumw2();
85b11075 3960
2d2100d5
MV
3961 fNEFOutput->Add(fhJetNEFInfo);
3962 fNEFOutput->Add(fhJetNEFSignalInfo);
3963 fNEFOutput->Add(fhClusterNEFInfo);
3964 fNEFOutput->Add(fhClusterNEFSignalInfo);
8daeee93 3965 fNEFOutput->Add(fhClusterShapeAll);
36cb7ae2 3966 fNEFOutput->Add(fhClusterPtCellAll);
2d2100d5 3967 fOutput->Add(fNEFOutput);
8daeee93 3968 }
c6202663 3969
3970 // Add Histos & Profiles to List
3971 fOutput->Add(fh020Rho);
3972 fOutput->Add(fh80100Rho);
3973 fOutput->Add(fhRho);
3974 fOutput->Add(fhRhoCen);
3975 fOutput->Add(fh020BSPt);
3976 fOutput->Add(fh80100BSPt);
3977 fOutput->Add(fhBSPt);
3978 fOutput->Add(fhBSPtCen);
3979 fOutput->Add(fh020BSPtSignal);
3980 fOutput->Add(fh80100BSPtSignal);
3981 fOutput->Add(fhBSPtSignal);
3982 fOutput->Add(fhBSPtCenSignal);
3983 fOutput->Add(fh020DeltaPt);
3984 fOutput->Add(fh80100DeltaPt);
3985 fOutput->Add(fhDeltaPt);
3986 fOutput->Add(fhDeltaPtCen);
3987 fOutput->Add(fh020DeltaPtSignal);
3988 fOutput->Add(fh80100DeltaPtSignal);
3989 fOutput->Add(fhDeltaPtSignal);
3990 fOutput->Add(fhDeltaPtCenSignal);
7acc3e04 3991 fOutput->Add(fh020DeltaPtNColl);
3992 fOutput->Add(fh80100DeltaPtNColl);
3993 fOutput->Add(fhDeltaPtNColl);
3994 fOutput->Add(fhDeltaPtCenNColl);
c6202663 3995 fOutput->Add(fh020BckgFlucPt);
3996 fOutput->Add(fh80100BckgFlucPt);
3997 fOutput->Add(fhBckgFlucPt);
3998 fOutput->Add(fhBckgFlucPtCen);
3999 fOutput->Add(fpRho);
4000 fOutput->Add(fpLJetRho);
e864d416 4001 fOutput->Add(fhJetPtArea);
2d2100d5
MV
4002 fOutput->Add(fhJetConstituentPt);
4003 fOutput->Add(fhJetTracksPt);
4004 fOutput->Add(fhJetClustersPt);
4005 fOutput->Add(fhJetConstituentCounts);
4006 fOutput->Add(fhJetTracksCounts);
4007 fOutput->Add(fhJetClustersCounts);
c6202663 4008}
4009
4010void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetName(const char *name)
4011{
4012 fName = name;
4013}
4014
4015void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetCentralityTag(const char *name)
4016{
4017 fCentralityTag = name;
4018}
4019
4020void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetCentralityRange(Int_t bins, Double_t low, Double_t up)
4021{
4022 fCentralityBins=bins;
4023 fCentralityLow=low;
4024 fCentralityUp=up;
4025}
4026
4027void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetPtRange(Int_t bins, Double_t low, Double_t up)
4028{
4029 fPtBins=bins;
4030 fPtLow=low;
4031 fPtUp=up;
4032}
4033
4034void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetRhoPtRange(Int_t bins, Double_t low, Double_t up)
4035{
4036 fRhoPtBins=bins;
4037 fRhoPtLow=low;
4038 fRhoPtUp=up;
4039}
4040
4041void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetDeltaPtRange(Int_t bins, Double_t low, Double_t up)
4042{
4043 fDeltaPtBins=bins;
4044 fDeltaPtLow=low;
4045 fDeltaPtUp=up;
4046}
4047
4048void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetBackgroundFluctuationsPtRange(Int_t bins, Double_t low, Double_t up)
4049{
4050 fBckgFlucPtBins=bins;
4051 fBckgFlucPtLow=low;
4052 fBckgFlucPtUp=up;
4053}
4054
4055void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetLeadingJetPtRange(Int_t bins, Double_t low, Double_t up)
4056{
4057 fLJetPtBins=bins;
4058 fLJetPtLow=low;
4059 fLJetPtUp=up;
4060}
4061
20f2d13a 4062void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetLeadingChargedTrackPtRange(Int_t bins, Double_t low, Double_t up)
4063{
4064 fLChargedTrackPtBins=bins;
4065 fLChargedTrackPtLow=low;
4066 fLChargedTrackPtUp=up;
4067}
4068
91d0893e 4069void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetNEFRange(Int_t bins, Double_t low, Double_t up)
4070{
4071 fNEFBins=bins;
4072 fNEFLow=low;
4073 fNEFUp=up;
4074}
4075
3e43a01f 4076void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetSignalTrackPtBias(Bool_t chargedBias)
4077{
4078 fSignalTrackBias = chargedBias;
4079}
4080
2d2100d5
MV
4081void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetNEFJetDimensions(Int_t n)
4082{
4083 fnDimJet = n;
4084}
4085
4086void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetNEFClusterDimensions(Int_t n)
4087{
4088 fnDimCluster = n;
4089}
4090
c6202663 4091void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillRho(Double_t eventCentrality, Double_t rho)
4092{
7acc3e04 4093 fRhoValue = rho;
4094
c6202663 4095 fhRho->Fill(rho);
4096 fhRhoCen->Fill(rho,eventCentrality);
4097 fpRho->Fill(eventCentrality,rho);
4098
4099 if (eventCentrality<=20)
4100 {
4101 fh020Rho->Fill(rho);
4102 }
4103 else if (eventCentrality>=80)
4104 {
4105 fh80100Rho->Fill(rho);
4106 }
4107}
4108
4109void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillBSJS(Double_t eventCentrality, Double_t rho, Double_t signalCut, TClonesArray *jetList, Int_t *indexJetList, Int_t nIndexJetList)
4110{
4111 Int_t i;
4112 Double_t tempPt=0.0;
20f2d13a 4113 Double_t tempChargedHighPt=0.0;
c6202663 4114
4115 for (i=0;i<nIndexJetList;i++)
4116 {
4117 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
4118 tempPt=myJet->Pt()-rho*myJet->Area();
20f2d13a 4119 tempChargedHighPt = myJet->MaxTrackPt();
91d0893e 4120
c6202663 4121 fhBSPt->Fill(tempPt);
4122 fhBSPtCen->Fill(tempPt,eventCentrality);
4123 if (eventCentrality<=20)
4124 {
4125 fh020BSPt->Fill(tempPt);
4126 }
4127 else if (eventCentrality>=80)
4128 {
4129 fh80100BSPt->Fill(tempPt);
4130 }
3e43a01f 4131 if (fSignalTrackBias==kTRUE)
c6202663 4132 {
3e43a01f 4133 if (tempChargedHighPt>=signalCut)
c6202663 4134 {
3e43a01f 4135 fhBSPtSignal->Fill(tempPt);
4136 fhBSPtCenSignal->Fill(tempPt,eventCentrality);
4137 if (eventCentrality<=20)
4138 {
4139 fh020BSPtSignal->Fill(tempPt);
4140 }
4141 else if (eventCentrality>=80)
4142 {
4143 fh80100BSPtSignal->Fill(tempPt);
4144 }
c6202663 4145 }
3e43a01f 4146 }
4147 else
4148 {
4149 if (tempPt>=signalCut)
c6202663 4150 {
3e43a01f 4151 fhBSPtSignal->Fill(tempPt);
4152 fhBSPtCenSignal->Fill(tempPt,eventCentrality);
4153 if (eventCentrality<=20)
4154 {
4155 fh020BSPtSignal->Fill(tempPt);
4156 }
4157 else if (eventCentrality>=80)
4158 {
4159 fh80100BSPtSignal->Fill(tempPt);
4160 }
c6202663 4161 }
4162 }
4163 tempPt=0.0;
20f2d13a 4164 tempChargedHighPt=0.0;
c6202663 4165 }
4166}
4167
4168void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPt(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4169{
4170 Int_t i;
4171 Double_t tempPt=0.0;
4172
4173 for (i=0;i<nRC;i++)
4174 {
4175 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4176 fhDeltaPt->Fill(tempPt);
4177 fhDeltaPtCen->Fill(tempPt,eventCentrality);
4178 if (eventCentrality<=20)
4179 {
4180 fh020DeltaPt->Fill(tempPt);
4181 }
4182 else if (eventCentrality>=80)
4183 {
4184 fh80100DeltaPt->Fill(tempPt);
4185 }
4186 tempPt=0.0;
4187 }
4188}
4189
4190void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPtSignal(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4191{
4192 Int_t i;
4193 Double_t tempPt=0.0;
4194
4195 for (i=0;i<nRC;i++)
4196 {
4197 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4198 fhDeltaPtSignal->Fill(tempPt);
4199 fhDeltaPtCenSignal->Fill(tempPt,eventCentrality);
4200 if (eventCentrality<=20)
4201 {
4202 fh020DeltaPtSignal->Fill(tempPt);
4203 }
4204 else if (eventCentrality>=80)
4205 {
4206 fh80100DeltaPtSignal->Fill(tempPt);
4207 }
4208 tempPt=0.0;
4209 }
4210}
4211
7acc3e04 4212void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPtNColl(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4213{
4214 Int_t i;
4215 Double_t tempPt=0.0;
4216
4217 for (i=0;i<nRC;i++)
4218 {
4219 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4220 fhDeltaPtNColl->Fill(tempPt);
4221 fhDeltaPtCenNColl->Fill(tempPt,eventCentrality);
4222 if (eventCentrality<=20)
4223 {
4224 fh020DeltaPtNColl->Fill(tempPt);
4225 }
4226 else if (eventCentrality>=80)
4227 {
4228 fh80100DeltaPtNColl->Fill(tempPt);
4229 }
4230 tempPt=0.0;
4231 }
4232}
4233
c6202663 4234void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillBackgroundFluctuations(Double_t eventCentrality, Double_t rho, Double_t jetRadius)
4235{
4236 Double_t tempPt=0.0;
4237
4238 tempPt=rho*TMath::Power(jetRadius,2);
4239 fhBckgFlucPt->Fill(tempPt);
4240 fhBckgFlucPtCen->Fill(tempPt,eventCentrality);
4241 if (eventCentrality<=20)
4242 {
4243 fh020BckgFlucPt->Fill(tempPt);
4244 }
4245 else if (eventCentrality>=80)
4246 {
4247 fh80100BckgFlucPt->Fill(tempPt);
4248 }
4249}
4250
4251void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillLeadingJetPtRho(Double_t jetPt, Double_t rho)
4252{
4253 fpLJetRho->Fill(jetPt,rho);
4254}
4255
8daeee93 4256void AliAnalysisTaskFullpAJets::AlipAJetHistos::DoNEFQAPlots(Bool_t doNEFAna)
4257{
4258 fDoNEFQAPlots = doNEFAna;
4259}
4260
08b981da 4261void AliAnalysisTaskFullpAJets::AlipAJetHistos::DoNEFAnalysis(Double_t nefCut, Double_t signalCut, TClonesArray *jetList, Int_t *indexJetList, Int_t nIndexJetList, TObjArray *clusterList, TClonesArray *orgClusterList, AliVEvent *event, AliEMCALGeometry *geometry, AliEMCALRecoUtils *recoUtils, AliVCaloCells *cells)
8daeee93 4262{
4263 if (fDoNEFQAPlots==kFALSE)
4264 {
4265 return;
4266 }
4267
85b11075 4268 Int_t i,j,k;
2d2100d5
MV
4269
4270 Double_t valJet[fnDimJet];
4271 Double_t valCluster[fnDimJet];
4272 for (i=0;i<fnDimJet;i)
4273 {
4274 valJet[i]=0.0;
4275 valCluster[i]=0.0;
4276 }
4277
8daeee93 4278 Double_t nef=0.0;
2d2100d5 4279 Double_t jetPt=0.0;
8daeee93 4280 Double_t tempChargedHighPt=0.0;
4281 Double_t eta=0.0;
4282 Double_t phi=0.0;
4283 Int_t totalMult=0;
2d2100d5 4284 Int_t chargedMult=0;
8daeee93 4285 Int_t neutralMult=0;
08b981da 4286 Int_t iSupMod = -1, absId = -1, ieta = -1, iphi = -1;
4287 Bool_t shared = kFALSE;
36cb7ae2 4288
08b981da 4289 Double_t zLeading=0.0;
4290 Double_t eSeed=0.0;
4291 Double_t tCell=0.0;
4292 Double_t eCross=0.0;
4293 Double_t FCross=0.0;
8daeee93 4294
85b11075 4295 Double_t lowTime=9.99e99;
4296 Double_t upTime=-9.99e99;
4297 Int_t tempCellID=0;
4298 Double_t tempCellTime=0.0;
4299
cf074128 4300 Double_t event_centrality = event->GetCentrality()->GetCentralityPercentile(fCentralityTag);
2d2100d5 4301 valJet[4] = valCluster[4] = event_centrality;
cf074128 4302
8daeee93 4303 // First, do Jet QA
4304 for (i=0;i<nIndexJetList;i++)
4305 {
4306 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
4307 tempChargedHighPt = myJet->MaxTrackPt();
4308 nef=myJet->NEF();
2d2100d5 4309 jetPt=myJet->Pt();
8daeee93 4310 eta=myJet->Eta();
4311 phi=myJet->Phi();
4312 totalMult=myJet->GetNumberOfConstituents();
2d2100d5 4313 chargedMult = myJet->GetNumberOfTracks();
8daeee93 4314 neutralMult=myJet->GetNumberOfClusters();
08b981da 4315 zLeading=myJet->MaxClusterPt()/myJet->Pt();
8daeee93 4316
2d2100d5
MV
4317 valJet[0] = valCluster[0] = nef;
4318 valJet[1] = valCluster[1] = jetPt;
4319 valJet[2] = valCluster[2] = eta;
4320 valJet[3] = valCluster[3] = phi;
4321
4322 valJet[5] = totalMult;
4323 valJet[6] = chargedMult;
4324 valJet[7] = neutralMult;
4325
4326 valCluster[6] = zLeading;
4327
4328 fhJetNEFInfo->Fill(valJet);
4329
4330 if (fSignalTrackBias==kTRUE)
4331 {
4332 if (tempChargedHighPt>=signalCut && nef<=nefCut)
4333 {
4334 fhJetNEFSignalInfo->Fill(valJet);
4335 }
4336 }
4337 else
4338 {
4339 if (jetPt>=signalCut && nef<=nefCut)
4340 {
4341 fhJetNEFSignalInfo->Fill(valJet);
4342 }
4343 }
08b981da 4344
4345 for (j=0;j<neutralMult;j++)
4346 {
4347 AliVCluster* vcluster = (AliVCluster*) orgClusterList->At(myJet->ClusterAt(j));
4348 recoUtils->GetMaxEnergyCell(geometry,cells,vcluster,absId,iSupMod,ieta,iphi,shared);
36cb7ae2 4349 eSeed = cells->GetCellAmplitude(absId);
08b981da 4350 tCell = cells->GetCellTime(absId);
4351 eCross = recoUtils->GetECross(absId,tCell,cells,event->GetBunchCrossNumber());
4352 FCross = 1 - eCross/eSeed;
2d2100d5 4353
85b11075 4354 // Obtain Delta t of Cluster
4355 lowTime=9.99e99;
4356 upTime=-9.99e99;
4357 for (k=0;k<vcluster->GetNCells();k++)
4358 {
4359 tempCellID=vcluster->GetCellAbsId(k);
4360 tempCellTime=cells->GetCellTime(tempCellID);
4361 if (tempCellTime>upTime)
4362 {
4363 upTime=tempCellTime;
4364 }
4365 if (tempCellTime<lowTime)
4366 {
4367 lowTime=tempCellTime;
4368 }
4369 }
08b981da 4370
2d2100d5
MV
4371 valCluster[5] = FCross;
4372 valCluster[7] = tCell;
4373 valCluster[8] = upTime-lowTime;
4374 valCluster[9] = vcluster->GetNCells();
4375
4376 fhClusterNEFInfo->Fill(valCluster);
4377 if (fSignalTrackBias==kTRUE)
4378 {
4379 if (tempChargedHighPt>=signalCut && nef<=nefCut)
3e43a01f 4380 {
2d2100d5 4381 fhClusterNEFSignalInfo->Fill(valCluster);
3e43a01f 4382 }
4383 }
2d2100d5 4384 else
3e43a01f 4385 {
2d2100d5 4386 if (myJet->Pt()>=signalCut && nef<=nefCut)
3e43a01f 4387 {
2d2100d5 4388 fhClusterNEFSignalInfo->Fill(valCluster);
3e43a01f 4389 }
8daeee93 4390 }
2d2100d5
MV
4391 tempCellID=0;
4392 tempCellTime=0.0;
4393 eSeed=0.0;
4394 tCell=0.0;
4395 eCross=0.0;
4396 FCross=0.0;
4397 iSupMod=-1,absId=-1,ieta=-1,iphi=-1;
8daeee93 4398 }
4399 nef=0.0;
2d2100d5 4400 jetPt=0.0;
8daeee93 4401 tempChargedHighPt=0.0;
4402 eta=0.0;
4403 phi=0.0;
4404 totalMult=0;
4405 neutralMult=0;
2d2100d5 4406 chargedMult=0;
08b981da 4407 zLeading=0.0;
8daeee93 4408 }
4409
4410 // Now do Cluster QA
4411 // Finally, Cluster QA
4412 for (i=0;i<clusterList->GetEntries();i++)
4413 {
4414 AliVCluster *vcluster = (AliVCluster*) clusterList->At(i);
4415 fhClusterShapeAll->Fill(vcluster->GetNCells());
36cb7ae2 4416 fhClusterPtCellAll->Fill(vcluster->E(),vcluster->GetNCells());
8daeee93 4417 }
4418}
4419
e864d416 4420void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillMiscJetStats(TClonesArray *jetList, Int_t *indexJetList, Int_t nIndexJetList, TClonesArray *trackList, TClonesArray *clusterList)
4421{
4422 Int_t i,j;
4423
4424 for (i=0;i<nIndexJetList;i++)
4425 {
4426 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
4427
4428 fhJetPtArea->Fill(myJet->Pt(),myJet->Area());
2d2100d5
MV
4429 fhJetConstituentCounts->Fill(myJet->Pt(),myJet->GetNumberOfConstituents());
4430 fhJetTracksCounts->Fill(myJet->Pt(),myJet->GetNumberOfTracks());
4431 fhJetClustersCounts->Fill(myJet->Pt(),myJet->GetNumberOfClusters());
e864d416 4432 for (j=0;j<myJet->GetNumberOfTracks();j++)
4433 {
4434 AliVTrack *vtrack = (AliVTrack*) myJet->TrackAt(j,trackList);
4435 fhJetConstituentPt->Fill(myJet->Pt(),vtrack->Pt());
2d2100d5 4436 fhJetTracksPt->Fill(myJet->Pt(),vtrack->Pt());
e864d416 4437 }
4438 for (j=0;j<myJet->GetNumberOfClusters();j++)
4439 {
4440 AliVCluster *vcluster = (AliVCluster*) myJet->ClusterAt(j,clusterList);
4441 fhJetConstituentPt->Fill(myJet->Pt(),vcluster->E());
4442 }
4443 }
4444}
4445
8daeee93 4446TList* AliAnalysisTaskFullpAJets::AlipAJetHistos::GetOutputHistos()
4447{
4448 return fOutput;
4449}
4450
7acc3e04 4451Double_t AliAnalysisTaskFullpAJets::AlipAJetHistos::GetRho()
4452{
4453 return fRhoValue;
4454}
4455