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