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