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