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