1 #include "AliAnalysisTaskFullpAJets.h"
13 #include <TLorentzVector.h>
15 #include <TProfile2D.h>
16 #include <TProfile3D.h>
19 #include <TClonesArray.h>
20 #include <TObjArray.h>
22 #include "AliAnalysisTaskSE.h"
23 #include "AliAnalysisManager.h"
25 #include "AliESDtrackCuts.h"
26 #include "AliESDEvent.h"
27 #include "AliESDInputHandler.h"
28 #include "AliAODEvent.h"
29 #include "AliVEvent.h"
30 #include "AliMCEvent.h"
31 #include "AliVTrack.h"
32 #include "AliVCluster.h"
33 #include "AliEmcalJet.h"
34 #include "AliEMCALGeometry.h"
35 #include "AliEMCALRecoUtils.h"
36 #include "AliVCaloCells.h"
37 #include "AliPicoTrack.h"
40 ClassImp(AliAnalysisTaskFullpAJets)
42 //________________________________________________________________________
43 AliAnalysisTaskFullpAJets::AliAnalysisTaskFullpAJets() :
53 fhComplementaryTrackPt(0),
54 fhComplementaryTrackEta(0),
55 fhComplementaryTrackPhi(0),
65 fhGlobalTrackEtaPhi(0),
66 fhGlobalTrackPhiPt(0),
67 fhGlobalTrackEtaPt(0),
68 fhComplementaryTrackEtaPhi(0),
69 fhComplementaryTrackPhiPt(0),
70 fhComplementaryTrackEtaPt(0),
77 fhGlobalTrackEtaPhiPt(0),
78 fhComplementaryTrackEtaPhiPt(0),
86 fpClusterPtProfile(0),
102 //fRhoChargedkTScale(0),
105 fRhoChargedCMSScale(0),
115 fEMCalPartJetUnbiased(0),
128 fEMCalPhiMin(1.39626),
129 fEMCalPhiMax(3.26377),
130 fEMCalPhiTotal(1.86750),
137 fTPCPhiTotal(6.28319),
143 fParticlePtUp(200.0),
144 fParticlePtBins(200),
147 fJetAreaCutFrac(0.6),
148 fJetAreaThreshold(0.30159),
154 fNEFSignalJetCut(0.9),
155 fCentralityTag("V0A"),
171 fEMCalJetThreshold(5),
183 fmyAKTChargedJets(0),
190 fEMCalRCBckgFlucSignal(0),
191 fTPCRCBckgFlucSignal(0),
192 fEMCalRCBckgFlucNColl(0),
193 fTPCRCBckgFlucNColl(0)
195 // Dummy constructor ALWAYS needed for I/O.
196 fVertex[0]=0.0,fVertex[1]=0.0,fVertex[2]=0.0;
199 //________________________________________________________________________
200 AliAnalysisTaskFullpAJets::AliAnalysisTaskFullpAJets(const char *name) :
201 AliAnalysisTaskSE(name),
210 fhComplementaryTrackPt(0),
211 fhComplementaryTrackEta(0),
212 fhComplementaryTrackPhi(0),
217 fhEMCalCellCounts(0),
222 fhGlobalTrackEtaPhi(0),
223 fhGlobalTrackPhiPt(0),
224 fhGlobalTrackEtaPt(0),
225 fhComplementaryTrackEtaPhi(0),
226 fhComplementaryTrackPhiPt(0),
227 fhComplementaryTrackEtaPt(0),
234 fhGlobalTrackEtaPhiPt(0),
235 fhComplementaryTrackEtaPhiPt(0),
236 fhClusterEtaPhiPt(0),
243 fpClusterPtProfile(0),
259 //fRhoChargedkTScale(0),
262 fRhoChargedCMSScale(0),
272 fEMCalPartJetUnbiased(0),
285 fEMCalPhiMin(1.39626),
286 fEMCalPhiMax(3.26377),
287 fEMCalPhiTotal(1.86750),
294 fTPCPhiTotal(6.28319),
300 fParticlePtUp(200.0),
301 fParticlePtBins(2000),
304 fJetAreaCutFrac(0.6),
305 fJetAreaThreshold(0.30159),
311 fNEFSignalJetCut(0.9),
312 fCentralityTag("V0A"),
328 fEMCalJetThreshold(5),
340 fmyAKTChargedJets(0),
347 fEMCalRCBckgFlucSignal(0),
348 fTPCRCBckgFlucSignal(0),
349 fEMCalRCBckgFlucNColl(0),
350 fTPCRCBckgFlucNColl(0)
353 // Define input and output slots here (never in the dummy constructor)
354 // Input slot #0 works with a TChain - it is connected to the default input container
355 // Output slot #1 writes into a TH1 container
356 fVertex[0]=0.0,fVertex[1]=0.0,fVertex[2]=0.0;
358 DefineOutput(1,TList::Class()); // for output list
361 //________________________________________________________________________
362 AliAnalysisTaskFullpAJets::~AliAnalysisTaskFullpAJets()
364 // Destructor. Clean-up the output list, but not the histograms that are put inside
365 // (the list is owner and will clean-up these histograms). Protect in PROOF case.
366 if (fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode())
372 //________________________________________________________________________
373 void AliAnalysisTaskFullpAJets::UserCreateOutputObjects()
376 // Called once (on the worker node)
377 fIsInitialized=kFALSE;
378 fOutput = new TList();
379 fOutput->SetOwner(); // IMPORTANT!
381 // Initialize Global Variables
386 // fRJET=4 -> fJetR=0.4 && fRJET=25 -> fJetR=0.25, but for writing files, should be 4 and 25 respectively
389 fJetR=(Double_t)fRJET/100.0;
393 fJetR=(Double_t)fRJET/10.0;
397 fEMCalPhiMin=(80/(double)360)*2*TMath::Pi();
398 fEMCalPhiMax=(187/(double)360)*2*TMath::Pi();
399 fEMCalPhiTotal= fEMCalPhiMax-fEMCalPhiMin;
402 fEMCalEtaTotal=fEMCalEtaMax-fEMCalEtaMin;
403 fEMCalArea=fEMCalPhiTotal*fEMCalEtaTotal;
405 fTPCPhiMin=(0/(double)360)*2*TMath::Pi();
406 fTPCPhiMax=(360/(double)360)*2*TMath::Pi();
407 fTPCPhiTotal= fTPCPhiMax-fTPCPhiMin;
410 fTPCEtaTotal=fTPCEtaMax-fTPCEtaMin;
411 fTPCArea=fTPCPhiTotal*fTPCEtaTotal;
415 fParticlePtBins=Int_t(fParticlePtUp-fParticlePtLow);
420 Int_t CentralityBinMult=10;
422 fJetAreaCutFrac =0.6; // Fudge factor for selecting on jets with threshold Area or higher
423 fJetAreaThreshold=fJetAreaCutFrac*TMath::Pi()*fJetR*fJetR;
424 fTPCJetThreshold=5.0; // Threshold required for an Anti-kT Charged jet to be considered a "true" jet in TPC
425 fEMCalJetThreshold=5.0; // Threshold required for an Anti-kT Charged+Neutral jet to be considered a "true" jet in EMCal
430 fEMCalRCBckgFluc = new Double_t[fnBckgClusters];
431 fTPCRCBckgFluc = new Double_t[fnBckgClusters];
432 fEMCalRCBckgFlucSignal = new Double_t[fnBckgClusters];
433 fTPCRCBckgFlucSignal = new Double_t[fnBckgClusters];
434 fEMCalRCBckgFlucNColl = new Double_t[fnBckgClusters];
435 fTPCRCBckgFlucNColl = new Double_t[fnBckgClusters];
436 for (Int_t i=0;i<fnBckgClusters;i++)
438 fEMCalRCBckgFluc[i]=0.0;
439 fTPCRCBckgFluc[i]=0.0;
440 fEMCalRCBckgFlucSignal[i]=0.0;
441 fTPCRCBckgFlucSignal[i]=0.0;
442 fEMCalRCBckgFlucNColl[i]=0.0;
443 fTPCRCBckgFlucNColl[i]=0.0;
446 fnEMCalCells=12288; // sMods 1-10 have 24x48 cells, sMods 11&12 have 8x48 cells...
453 fhTrackPt = new TH1D("fhTrackPt","p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
454 fhTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
455 fhTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
458 fhTrackPhi = new TH1D("fhTrackPhi","#varphi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
459 fhTrackPhi->GetXaxis()->SetTitle("#varphi");
460 fhTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
463 fhTrackEta = new TH1D("fhTrackEta","#eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
464 fhTrackEta->GetXaxis()->SetTitle("#eta");
465 fhTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
468 fhTrackEtaPhi = new TH2D("fhTrackEtaPhi","#eta-#varphi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
469 fhTrackEtaPhi->GetXaxis()->SetTitle("#eta");
470 fhTrackEtaPhi->GetYaxis()->SetTitle("#varphi");
471 fhTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
472 fhTrackEtaPhi->Sumw2();
474 fhTrackPhiPt = new TH2D("fhTrackPhiPt","#varphi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
475 fhTrackPhiPt->GetXaxis()->SetTitle("#varphi");
476 fhTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
477 fhTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
478 fhTrackPhiPt->Sumw2();
480 fhTrackEtaPt = new TH2D("fhTrackEtaPt","#eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
481 fhTrackEtaPt->GetXaxis()->SetTitle("#varphi");
482 fhTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
483 fhTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
484 fhTrackEtaPt->Sumw2();
486 fhTrackEtaPhiPt = new TH3D("fhTrackEtaPhiPt","#eta-#varphi-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
487 fhTrackEtaPhiPt->GetXaxis()->SetTitle("#eta");
488 fhTrackEtaPhiPt->GetYaxis()->SetTitle("#varphi");
489 fhTrackEtaPhiPt->GetZaxis()->SetTitle("p_{T} (GeV/c)");
490 fhTrackEtaPhiPt->Sumw2();
493 fhGlobalTrackPt = new TH1D("fhGlobalTrackPt","Global p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
494 fhGlobalTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
495 fhGlobalTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
496 fhGlobalTrackPt->Sumw2();
498 fhGlobalTrackPhi = new TH1D("fhGlobalTrackPhi","Global #varphi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
499 fhGlobalTrackPhi->GetXaxis()->SetTitle("#varphi");
500 fhGlobalTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
501 fhGlobalTrackPhi->Sumw2();
503 fhGlobalTrackEta = new TH1D("fhGlobalTrackEta","Global #eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
504 fhGlobalTrackEta->GetXaxis()->SetTitle("#eta");
505 fhGlobalTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
506 fhGlobalTrackEta->Sumw2();
508 fhGlobalTrackEtaPhi = new TH2D("fhGlobalTrackEtaPhi","Global #eta-#varphi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
509 fhGlobalTrackEtaPhi->GetXaxis()->SetTitle("#eta");
510 fhGlobalTrackEtaPhi->GetYaxis()->SetTitle("#varphi");
511 fhGlobalTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
512 fhGlobalTrackEtaPhi->Sumw2();
514 fhGlobalTrackPhiPt = new TH2D("fhGlobalTrackPhiPt","Global #varphi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
515 fhGlobalTrackPhiPt->GetXaxis()->SetTitle("#varphi");
516 fhGlobalTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
517 fhGlobalTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
518 fhGlobalTrackPhiPt->Sumw2();
520 fhGlobalTrackEtaPt = new TH2D("fhGlobalTrackEtaPt","Global #eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
521 fhGlobalTrackEtaPt->GetXaxis()->SetTitle("#varphi");
522 fhGlobalTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
523 fhGlobalTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
524 fhGlobalTrackEtaPt->Sumw2();
526 fhGlobalTrackEtaPhiPt = new TH3D("fhGlobalTrackEtaPhiPt","Global #eta-#varphi-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
527 fhGlobalTrackEtaPhiPt->GetXaxis()->SetTitle("#eta");
528 fhGlobalTrackEtaPhiPt->GetYaxis()->SetTitle("#varphi");
529 fhGlobalTrackEtaPhiPt->GetZaxis()->SetTitle("p_{T} (GeV/c)");
530 fhGlobalTrackEtaPhiPt->Sumw2();
532 // Complementary Tracks
533 fhComplementaryTrackPt = new TH1D("fhComplementaryTrackPt","Complementary p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
534 fhComplementaryTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
535 fhComplementaryTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
536 fhComplementaryTrackPt->Sumw2();
538 fhComplementaryTrackPhi = new TH1D("fhComplementaryTrackPhi","Complementary #varphi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
539 fhComplementaryTrackPhi->GetXaxis()->SetTitle("#varphi");
540 fhComplementaryTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
541 fhComplementaryTrackPhi->Sumw2();
543 fhComplementaryTrackEta = new TH1D("fhComplementaryTrackEta","Complementary #eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
544 fhComplementaryTrackEta->GetXaxis()->SetTitle("#eta");
545 fhComplementaryTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
546 fhComplementaryTrackEta->Sumw2();
548 fhComplementaryTrackEtaPhi = new TH2D("fhComplementaryTrackEtaPhi","Complementary #eta-#varphi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
549 fhComplementaryTrackEtaPhi->GetXaxis()->SetTitle("#eta");
550 fhComplementaryTrackEtaPhi->GetYaxis()->SetTitle("#varphi");
551 fhComplementaryTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
552 fhComplementaryTrackEtaPhi->Sumw2();
554 fhComplementaryTrackPhiPt = new TH2D("fhComplementaryTrackPhiPt","Complementary #varphi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
555 fhComplementaryTrackPhiPt->GetXaxis()->SetTitle("#varphi");
556 fhComplementaryTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
557 fhComplementaryTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
558 fhComplementaryTrackPhiPt->Sumw2();
560 fhComplementaryTrackEtaPt = new TH2D("fhComplementaryTrackEtaPt","Complementary #eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
561 fhComplementaryTrackEtaPt->GetXaxis()->SetTitle("#varphi");
562 fhComplementaryTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
563 fhComplementaryTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
564 fhComplementaryTrackEtaPt->Sumw2();
566 fhComplementaryTrackEtaPhiPt = new TH3D("fhComplementaryTrackEtaPhiPt","Complementary #eta-#varphi-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
567 fhComplementaryTrackEtaPhiPt->GetXaxis()->SetTitle("#eta");
568 fhComplementaryTrackEtaPhiPt->GetYaxis()->SetTitle("#varphi");
569 fhComplementaryTrackEtaPhiPt->GetZaxis()->SetTitle("p_{T} (GeV/c)");
570 fhComplementaryTrackEtaPhiPt->Sumw2();
572 // Corrected Calo Clusters
573 fhClusterPt = new TH1D("fhClusterPt","p_{T} distribution of clusters in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
574 fhClusterPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
575 fhClusterPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
576 fhClusterPt->Sumw2();
578 fhClusterPhi = new TH1D("fhClusterPhi","#varphi distribution of clusters in event",TCBins,fTPCPhiMin,fTPCPhiMax);
579 fhClusterPhi->GetXaxis()->SetTitle("#varphi");
580 fhClusterPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
581 fhClusterPhi->Sumw2();
583 fhClusterEta = new TH1D("fhClusterEta","#eta distribution of clusters in event",TCBins,fTPCEtaMin,fTPCEtaMax);
584 fhClusterEta->GetXaxis()->SetTitle("#eta");
585 fhClusterEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
586 fhClusterEta->Sumw2();
588 fhClusterEtaPhi = new TH2D("fhClusterEtaPhi","#eta-#varphi distribution of clusters in event",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
589 fhClusterEtaPhi->GetXaxis()->SetTitle("#eta");
590 fhClusterEtaPhi->GetYaxis()->SetTitle("#varphi");
591 fhClusterEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
592 fhClusterEtaPhi->Sumw2();
594 fhClusterPhiPt = new TH2D("fhClusterPhiPt","#varphi-p_{T} distribution of clusters in event",TCBins,fEMCalPhiMin,fEMCalPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
595 fhClusterPhiPt->GetXaxis()->SetTitle("#varphi");
596 fhClusterPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
597 fhClusterPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
598 fhClusterPhiPt->Sumw2();
600 fhClusterEtaPt = new TH2D("fhClusterEtaPt","#eta-p_{T} distribution of clusters in event",TCBins,fEMCalEtaMin,fEMCalEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
601 fhClusterEtaPt->GetXaxis()->SetTitle("#varphi");
602 fhClusterEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
603 fhClusterEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
604 fhClusterEtaPt->Sumw2();
606 fhClusterEtaPhiPt = new TH3D("fhClusterEtaPhiPt","#eta-#varphi-p_{T} distribution of clusters in event",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
607 fhClusterEtaPhiPt->GetXaxis()->SetTitle("#eta");
608 fhClusterEtaPhiPt->GetYaxis()->SetTitle("#varphi");
609 fhClusterEtaPhiPt->GetZaxis()->SetTitle("p_{T} (GeV/c)");
610 fhClusterEtaPhiPt->Sumw2();
612 fhCentrality = new TH1D("fhCentrality","Event Centrality Distribution",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
613 fhCentrality->GetXaxis()->SetTitle(fCentralityTag);
614 fhCentrality->GetYaxis()->SetTitle("1/N_{Events}");
615 fhCentrality->Sumw2();
617 fhEMCalCellCounts = new TH1D("fhEMCalCellCounts","Distribtuion of cluster counts across the EMCal",fnEMCalCells,1,fnEMCalCells);
618 fhEMCalCellCounts->GetXaxis()->SetTitle("Absoulute Cell Id");
619 fhEMCalCellCounts->GetYaxis()->SetTitle("Counts per Event");
620 fhEMCalCellCounts->Sumw2();
626 fhRhoScale = new TH2D("fhRhoScale","Scaling Factor",SFBins,SFLow,SFUp,CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp);
627 fhRhoScale->GetXaxis()->SetTitle("Scale Factor");
628 fhRhoScale->GetYaxis()->SetTitle("Centrality");
629 fhRhoScale->GetZaxis()->SetTitle("Counts");
633 fpEMCalEventMult = new TProfile("fpEMCalEventMult","EMCal Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp);
634 fpEMCalEventMult->GetXaxis()->SetTitle(fCentralityTag);
635 fpEMCalEventMult->GetYaxis()->SetTitle("Multiplicity");
637 fpTPCEventMult = new TProfile("fpTPCEventMult","TPC Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp);
638 fpTPCEventMult->GetXaxis()->SetTitle(fCentralityTag);
639 fpTPCEventMult->GetYaxis()->SetTitle("Multiplicity");
641 fpRhoScale = new TProfile("fpRhoScale","Scaling Factor Profile vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp);
642 fpRhoScale->GetXaxis()->SetTitle(fCentralityTag);
643 fpRhoScale->GetYaxis()->SetTitle("Scale Factor");
645 // QA::2D Energy Density Profiles for Tracks and Clusters
646 fpTrackPtProfile = new TProfile2D("fpTrackPtProfile","2D Profile of track pT density throughout the TPC",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
647 fpTrackPtProfile->GetXaxis()->SetTitle("#eta");
648 fpTrackPtProfile->GetYaxis()->SetTitle("#varphi");
649 fpTrackPtProfile->GetZaxis()->SetTitle("p_{T} density (GeV/Area)");
651 fpClusterPtProfile = new TProfile2D("fpClusterPtProfile","2D Profile of cluster pT density throughout the EMCal",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
652 fpClusterPtProfile->GetXaxis()->SetTitle("#eta");
653 fpClusterPtProfile->GetYaxis()->SetTitle("#varphi");
654 fpClusterPtProfile->GetZaxis()->SetTitle("p_{T} density (GeV/Area)");
656 fTPCRawJets = new AlipAJetHistos("TPCRawJets",fCentralityTag);
657 fEMCalRawJets = new AlipAJetHistos("EMCalRawJets",fCentralityTag);
660 fRhoFull0 = new AlipAJetHistos("RhoFull0",fCentralityTag);
661 fRhoFull1 = new AlipAJetHistos("RhoFull1",fCentralityTag);
662 fRhoFull2 = new AlipAJetHistos("RhoFull2",fCentralityTag);
663 fRhoFullN = new AlipAJetHistos("RhoFullN",fCentralityTag);
664 fRhoFullDijet = new AlipAJetHistos("RhoFullDijet",fCentralityTag);
665 fRhoFullkT = new AlipAJetHistos("RhoFullkT",fCentralityTag);
666 fRhoFullCMS = new AlipAJetHistos("RhoFullCMS",fCentralityTag);
667 fRhoCharged0 = new AlipAJetHistos("RhoCharged0",fCentralityTag);
668 fRhoCharged1 = new AlipAJetHistos("RhoCharged1",fCentralityTag);
669 fRhoCharged2 = new AlipAJetHistos("RhoCharged2",fCentralityTag);
670 fRhoChargedN = new AlipAJetHistos("RhoChargedN",fCentralityTag);
671 fRhoChargedkT = new AlipAJetHistos("RhoChargedkT",fCentralityTag);
672 fRhoChargedkTScale = new AlipAJetHistos("RhoChargedkTScale",fCentralityTag);
673 fRhoChargedCMS = new AlipAJetHistos("RhoChargedCMS",fCentralityTag);
675 fRhoChargedScale = new AlipAJetHistos("RhoChargedScale",fCentralityTag);
676 fRhoChargedCMSScale = new AlipAJetHistos("RhoChargedCMSScale",fCentralityTag,fDoNEF);
678 fOutput->Add(fhTrackPt);
679 fOutput->Add(fhTrackEta);
680 fOutput->Add(fhTrackPhi);
681 fOutput->Add(fhTrackEtaPhi);
682 fOutput->Add(fhTrackPhiPt);
683 fOutput->Add(fhTrackEtaPt);
684 fOutput->Add(fhTrackEtaPhiPt);
685 fOutput->Add(fhGlobalTrackPt);
686 fOutput->Add(fhGlobalTrackEta);
687 fOutput->Add(fhGlobalTrackPhi);
688 fOutput->Add(fhGlobalTrackEtaPhi);
689 fOutput->Add(fhGlobalTrackPhiPt);
690 fOutput->Add(fhGlobalTrackEtaPt);
691 fOutput->Add(fhGlobalTrackEtaPhiPt);
692 fOutput->Add(fhComplementaryTrackPt);
693 fOutput->Add(fhComplementaryTrackEta);
694 fOutput->Add(fhComplementaryTrackPhi);
695 fOutput->Add(fhComplementaryTrackEtaPhi);
696 fOutput->Add(fhComplementaryTrackPhiPt);
697 fOutput->Add(fhComplementaryTrackEtaPt);
698 fOutput->Add(fhComplementaryTrackEtaPhiPt);
699 fOutput->Add(fhClusterPt);
700 fOutput->Add(fhClusterEta);
701 fOutput->Add(fhClusterPhi);
702 fOutput->Add(fhClusterEtaPhi);
703 fOutput->Add(fhClusterPhiPt);
704 fOutput->Add(fhClusterEtaPt);
705 fOutput->Add(fhClusterEtaPhiPt);
706 fOutput->Add(fhCentrality);
707 fOutput->Add(fhEMCalCellCounts);
708 fOutput->Add(fhRhoScale);
710 fOutput->Add(fpTPCEventMult);
711 fOutput->Add(fpEMCalEventMult);
712 fOutput->Add(fpRhoScale);
714 fOutput->Add(fpTrackPtProfile);
715 fOutput->Add(fpClusterPtProfile);
717 fOutput->Add(fTPCRawJets->GetOutputHistos());
718 fOutput->Add(fEMCalRawJets->GetOutputHistos());
721 fOutput->Add(fRhoFull0->GetOutputHistos());
722 fOutput->Add(fRhoFull1->GetOutputHistos());
723 fOutput->Add(fRhoFull2->GetOutputHistos());
724 fOutput->Add(fRhoFullN->GetOutputHistos());
725 fOutput->Add(fRhoFullDijet->GetOutputHistos());
726 fOutput->Add(fRhoFullkT->GetOutputHistos());
727 fOutput->Add(fRhoFullCMS->GetOutputHistos());
728 fOutput->Add(fRhoCharged0->GetOutputHistos());
729 fOutput->Add(fRhoCharged1->GetOutputHistos());
730 fOutput->Add(fRhoCharged2->GetOutputHistos());
731 fOutput->Add(fRhoChargedN->GetOutputHistos());
732 fOutput->Add(fRhoChargedkT->GetOutputHistos());
733 fOutput->Add(fRhoChargedkTScale->GetOutputHistos());
734 fOutput->Add(fRhoChargedCMS->GetOutputHistos());
736 fOutput->Add(fRhoChargedScale->GetOutputHistos());
737 fOutput->Add(fRhoChargedCMSScale->GetOutputHistos());
739 // Post data for ALL output slots >0 here,
740 // To get at least an empty histogram
741 // 1 is the outputnumber of a certain weg of task 1
742 PostData(1, fOutput);
745 void AliAnalysisTaskFullpAJets::UserExecOnce()
747 // Get the event tracks
748 fOrgTracks = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fTrackName));
750 // Get the event caloclusters
751 fOrgClusters = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fClusName));
754 fmyKTChargedJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fkTChargedName));
755 fmyAKTChargedJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fAkTChargedName));
758 fmyKTFullJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fkTFullName));
759 fmyAKTFullJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fAkTFullName));
761 fIsInitialized=kTRUE;
763 //________________________________________________________________________
764 void AliAnalysisTaskFullpAJets::UserExec(Option_t *)
766 if (fIsInitialized==kFALSE)
771 // Get pointer to reconstructed event
772 fEvent = InputEvent();
775 AliError("Pointer == 0, this can not happen!");
779 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(fEvent);
780 AliAODEvent* aod = dynamic_cast<AliAODEvent*>(fEvent);
782 fRecoUtil = new AliEMCALRecoUtils();
783 fEMCALGeometry = AliEMCALGeometry::GetInstance();
787 fEventCentrality=esd->GetCentrality()->GetCentralityPercentile(fCentralityTag);
789 if (esd->GetPrimaryVertex()->GetNContributors()<1 || (TMath::Abs(esd->GetPrimaryVertex()->GetZ())>fVertexWindow))
793 if (TMath::Sqrt(TMath::Power(esd->GetPrimaryVertex()->GetX(),2)+TMath::Power(esd->GetPrimaryVertex()->GetY(),2))>fVertexMaxR)
798 esd->GetPrimaryVertex()->GetXYZ(fVertex);
799 fCells = (AliVCaloCells*) esd->GetEMCALCells();
800 fnCaloClusters = esd->GetNumberOfCaloClusters();
804 fEventCentrality=aod->GetCentrality()->GetCentralityPercentile(fCentralityTag);
806 if (aod->GetPrimaryVertex()->GetNContributors()<1 || (TMath::Abs(aod->GetPrimaryVertex()->GetZ())>fVertexWindow))
810 if (TMath::Sqrt(TMath::Power(aod->GetPrimaryVertex()->GetX(),2)+TMath::Power(aod->GetPrimaryVertex()->GetY(),2))>fVertexMaxR)
815 aod->GetPrimaryVertex()->GetXYZ(fVertex);
816 fCells = (AliVCaloCells*) aod->GetEMCALCells();
817 fnCaloClusters = aod->GetNumberOfCaloClusters();
821 AliError("Cannot get AOD/ESD event. Rejecting Event");
825 // Make sure Centrality isn't exactly 100% (to avoid bin filling errors in profile plots. Make it 99.99
826 if (fEventCentrality>99.99)
828 fEventCentrality=99.99;
830 fhCentrality->Fill(fEventCentrality);
833 // Reject any event that doesn't have any tracks, i.e. TPC is off
836 AliWarning("No PicoTracks, Rejecting Event");
843 AliInfo("No Corrected CaloClusters, using only charged jets");
847 GenerateTPCRandomConesPt();
851 EstimateChargedRho0();
852 EstimateChargedRho1();
853 EstimateChargedRho2();
854 EstimateChargedRhoN();
855 EstimateChargedRhokT();
856 EstimateChargedRhoCMS();
859 DeleteJetData(kFALSE);
863 PostData(1, fOutput);
873 GenerateTPCRandomConesPt();
874 GenerateEMCalRandomConesPt();
878 EstimateChargedRho0();
879 EstimateChargedRho1();
880 EstimateChargedRho2();
881 EstimateChargedRhoN();
882 EstimateChargedRhokT();
883 EstimateChargedRhoCMS();
892 EstimateFullRhoCMS();
894 EstimateChargedRhokTScale();
896 EstimateChargedRhoScale();
897 EstimateChargedRhoCMSScale();
900 if (IsDiJetEvent()==kTRUE)
902 //EstimateFullRhoDijet();
905 // Delete Dynamic Arrays
906 DeleteJetData(kTRUE);
910 PostData(1, fOutput);
913 //________________________________________________________________________
914 void AliAnalysisTaskFullpAJets::Terminate(Option_t *) //specify what you want to have done
916 // Called once at the end of the query. Done nothing here.
919 /////////////////////////////////////////////////////////////////////////////////////////
920 ///////////////// User Defined Sub_Routines ///////////////////////////////////////
921 /////////////////////////////////////////////////////////////////////////////////////////
923 void AliAnalysisTaskFullpAJets::TrackCuts()
925 // Fill a TObjArray with the tracks from a TClonesArray which grabs the picotracks.
928 fmyTracks = new TObjArray();
929 for (i=0;i<fOrgTracks->GetEntries();i++)
931 AliVTrack* vtrack = (AliVTrack*) fOrgTracks->At(i);
932 if (vtrack->Pt()>=fTrackMinPt)
934 fmyTracks->Add(vtrack);
937 fnTracks = fmyTracks->GetEntries();
940 void AliAnalysisTaskFullpAJets::ClusterCuts()
942 // Fill a TObjArray with the clusters from a TClonesArray which grabs the caloclusterscorr.
945 fmyClusters = new TObjArray();
948 for (i=0;i<fOrgClusters->GetEntries();i++)
950 AliVCluster* vcluster = (AliVCluster*) fOrgClusters->At(i);
951 TLorentzVector *cluster_vec = new TLorentzVector;
952 vcluster->GetMomentum(*cluster_vec,fVertex);
954 if (cluster_vec->Pt()>=fClusterMinPt && vcluster->IsEMCAL()==kTRUE)
956 fmyClusters->Add(vcluster);
962 fnClusters = fmyClusters->GetEntries();
965 void AliAnalysisTaskFullpAJets::TrackHisto()
967 // Fill track histograms: Phi,Eta,Pt
970 TH2D *hdummypT= new TH2D("hdummypT","",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax); //!
972 for (i=0;i<fnTracks;i++)
974 AliPicoTrack* vtrack =(AliPicoTrack*) fmyTracks->At(i);
975 fhTrackPt->Fill(vtrack->Pt());
976 fhTrackEta->Fill(vtrack->Eta());
977 fhTrackPhi->Fill(vtrack->Phi());
978 fhTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
979 fhTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
980 fhTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
981 fhTrackEtaPhiPt->Fill(vtrack->Eta(),vtrack->Phi(),vtrack->Pt());
983 // Fill Associated Track Distributions for AOD QA Productions
985 if (vtrack->GetTrackType()==0)
987 fhGlobalTrackPt->Fill(vtrack->Pt());
988 fhGlobalTrackEta->Fill(vtrack->Eta());
989 fhGlobalTrackPhi->Fill(vtrack->Phi());
990 fhGlobalTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
991 fhGlobalTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
992 fhGlobalTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
993 fhGlobalTrackEtaPhiPt->Fill(vtrack->Eta(),vtrack->Phi(),vtrack->Pt());
995 // Complementary Tracks
996 else if (vtrack->GetTrackType()==1)
998 fhComplementaryTrackPt->Fill(vtrack->Pt());
999 fhComplementaryTrackEta->Fill(vtrack->Eta());
1000 fhComplementaryTrackPhi->Fill(vtrack->Phi());
1001 fhComplementaryTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
1002 fhComplementaryTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
1003 fhComplementaryTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
1004 fhComplementaryTrackEtaPhiPt->Fill(vtrack->Eta(),vtrack->Phi(),vtrack->Pt());
1007 hdummypT->Fill(vtrack->Eta(),vtrack->Phi(),vtrack->Pt());
1009 for (i=1;i<=TCBins;i++)
1011 for (j=1;j<=TCBins;j++)
1013 fpTrackPtProfile->Fill(hdummypT->GetXaxis()->GetBinCenter(i),hdummypT->GetYaxis()->GetBinCenter(j),fTPCArea*TMath::Power(TCBins,-2)*hdummypT->GetBinContent(i,j));
1019 void AliAnalysisTaskFullpAJets::ClusterHisto()
1021 // Fill cluster histograms: Phi,Eta,Pt
1024 TH2D *hdummypT= new TH2D("hdummypT","",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax); //!
1027 for (i=0;i<fnClusters;i++)
1029 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
1030 TLorentzVector *cluster_vec = new TLorentzVector;
1031 vcluster->GetMomentum(*cluster_vec,fVertex);
1033 fhClusterPt->Fill(cluster_vec->Pt());
1034 fhClusterEta->Fill(cluster_vec->Eta());
1035 fhClusterPhi->Fill(cluster_vec->Phi());
1036 fhClusterEtaPhi->Fill(cluster_vec->Eta(),cluster_vec->Phi());
1037 fhClusterPhiPt->Fill(cluster_vec->Phi(),cluster_vec->Pt());
1038 fhClusterEtaPt->Fill(cluster_vec->Eta(),cluster_vec->Pt());
1039 fhClusterEtaPhiPt->Fill(cluster_vec->Eta(),cluster_vec->Phi(),cluster_vec->Pt());
1040 hdummypT->Fill(cluster_vec->Eta(),cluster_vec->Phi(),cluster_vec->Pt());
1041 fEMCALGeometry->GetAbsCellIdFromEtaPhi(cluster_vec->Eta(),cluster_vec->Phi(),myCellID);
1042 fhEMCalCellCounts->Fill(myCellID);
1045 for (i=1;i<=TCBins;i++)
1047 for (j=1;j<=TCBins;j++)
1049 fpClusterPtProfile->Fill(hdummypT->GetXaxis()->GetBinCenter(i),hdummypT->GetYaxis()->GetBinCenter(j),fEMCalArea*TMath::Power(TCBins,-2)*hdummypT->GetBinContent(i,j));
1055 void AliAnalysisTaskFullpAJets::InitChargedJets()
1057 // Preliminary Jet Placement and Selection Cuts
1060 fnAKTChargedJets = fmyAKTChargedJets->GetEntries();
1061 fnKTChargedJets = fmyKTChargedJets->GetEntries();
1063 fTPCJet = new AlipAJetData("fTPCJet",kFALSE,fnAKTChargedJets);
1064 fTPCFullJet = new AlipAJetData("fTPCFullJet",kFALSE,fnAKTChargedJets);
1065 fTPCOnlyJet = new AlipAJetData("fTPCOnlyJet",kFALSE,fnAKTChargedJets);
1066 fTPCJetUnbiased = new AlipAJetData("fTPCJetUnbiased",kFALSE,fnAKTChargedJets);
1068 fTPCJet->SetSignalCut(fTPCJetThreshold);
1069 fTPCJet->SetAreaCutFraction(fJetAreaCutFrac);
1070 fTPCJet->SetJetR(fJetR);
1071 fTPCFullJet->SetSignalCut(fTPCJetThreshold);
1072 fTPCFullJet->SetAreaCutFraction(fJetAreaCutFrac);
1073 fTPCFullJet->SetJetR(fJetR);
1074 fTPCOnlyJet->SetSignalCut(fTPCJetThreshold);
1075 fTPCOnlyJet->SetAreaCutFraction(fJetAreaCutFrac);
1076 fTPCOnlyJet->SetJetR(fJetR);
1077 fTPCJetUnbiased->SetSignalCut(fTPCJetThreshold);
1078 fTPCJetUnbiased->SetAreaCutFraction(fJetAreaCutFrac);
1079 fTPCJetUnbiased->SetJetR(fJetR);
1080 fTPCJetUnbiased->SetSignalTrackPtBias(kFALSE);
1082 // Initialize Jet Data
1083 for (i=0;i<fnAKTChargedJets;i++)
1085 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(i);
1087 fTPCJet->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kFALSE),i);
1088 fTPCFullJet->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kTRUE),i);
1089 fTPCOnlyJet->SetIsJetInArray(IsInTPCFull(fJetR,myJet->Phi(),myJet->Eta()),i);
1090 fTPCJetUnbiased->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kFALSE),i);
1092 fTPCJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1093 fTPCFullJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1094 fTPCOnlyJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1095 fTPCJetUnbiased->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1098 fTPCkTFullJet = new AlipAJetData("fTPCkTFullJet",kFALSE,fnKTChargedJets);
1099 fTPCkTFullJet->SetSignalCut(fTPCJetThreshold);
1100 fTPCkTFullJet->SetAreaCutFraction(0.25*fJetAreaCutFrac);
1101 fTPCkTFullJet->SetJetR(fJetR);
1103 for (i=0;i<fnKTChargedJets;i++)
1105 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(i);
1106 fTPCkTFullJet->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kTRUE),i);
1108 fTPCkTFullJet->InitializeJetData(fmyKTChargedJets,fnKTChargedJets);
1110 // Raw Charged Jet Spectra
1111 fTPCRawJets->FillBSJS(fEventCentrality,0.0,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1114 void AliAnalysisTaskFullpAJets::InitFullJets()
1116 // Preliminary Jet Placement and Selection Cuts
1119 fnAKTFullJets = fmyAKTFullJets->GetEntries();
1120 fnKTFullJets = fmyKTFullJets->GetEntries();
1122 fEMCalJet = new AlipAJetData("fEMCalJet",kTRUE,fnAKTFullJets);
1123 fEMCalFullJet = new AlipAJetData("fEMCalFullJet",kTRUE,fnAKTFullJets);
1124 fEMCalPartJet = new AlipAJetData("fEMCalPartJet",kTRUE,fnAKTFullJets);
1125 fEMCalPartJetUnbiased = new AlipAJetData("fEMCalPartJetUnbiased",kTRUE,fnAKTFullJets);
1127 fEMCalJet->SetSignalCut(fEMCalJetThreshold);
1128 fEMCalJet->SetAreaCutFraction(fJetAreaCutFrac);
1129 fEMCalJet->SetJetR(fJetR);
1130 fEMCalJet->SetNEF(fNEFSignalJetCut);
1131 fEMCalJet->SetSignalTrackPtBias(kTRUE);
1132 fEMCalFullJet->SetSignalCut(fEMCalJetThreshold);
1133 fEMCalFullJet->SetAreaCutFraction(fJetAreaCutFrac);
1134 fEMCalFullJet->SetJetR(fJetR);
1135 fEMCalFullJet->SetNEF(fNEFSignalJetCut);
1136 fEMCalFullJet->SetSignalTrackPtBias(kTRUE);
1137 fEMCalPartJet->SetSignalCut(fEMCalJetThreshold);
1138 fEMCalPartJet->SetAreaCutFraction(fJetAreaCutFrac);
1139 fEMCalPartJet->SetJetR(fJetR);
1140 fEMCalPartJet->SetNEF(fNEFSignalJetCut);
1141 fEMCalPartJet->SetSignalTrackPtBias(kTRUE);
1142 fEMCalPartJetUnbiased->SetSignalCut(fEMCalJetThreshold);
1143 fEMCalPartJetUnbiased->SetAreaCutFraction(fJetAreaCutFrac);
1144 fEMCalPartJetUnbiased->SetJetR(fJetR);
1145 fEMCalPartJetUnbiased->SetNEF(1.0);
1146 fEMCalPartJetUnbiased->SetSignalTrackPtBias(kFALSE);
1148 // Initialize Jet Data
1149 for (i=0;i<fnAKTFullJets;i++)
1151 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(i);
1153 fEMCalJet->SetIsJetInArray(IsInEMCal(myJet->Phi(),myJet->Eta()),i);
1154 fEMCalFullJet->SetIsJetInArray(IsInEMCalFull(fJetR,myJet->Phi(),myJet->Eta()),i);
1155 fEMCalPartJet->SetIsJetInArray(IsInEMCalPart(fJetR,myJet->Phi(),myJet->Eta()),i);
1156 fEMCalPartJetUnbiased->SetIsJetInArray(IsInEMCalPart(fJetR,myJet->Phi(),myJet->Eta()),i);
1158 fEMCalJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1159 fEMCalFullJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1160 fEMCalPartJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1161 fEMCalPartJetUnbiased->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1164 fEMCalkTFullJet = new AlipAJetData("fEMCalkTFullJet",kTRUE,fnKTFullJets);
1165 fEMCalkTFullJet->SetSignalCut(fEMCalJetThreshold);
1166 fEMCalkTFullJet->SetAreaCutFraction(0.25*fJetAreaCutFrac);
1167 fEMCalkTFullJet->SetJetR(fJetR);
1168 fEMCalkTFullJet->SetNEF(fNEFSignalJetCut);
1169 fEMCalkTFullJet->SetSignalTrackPtBias(kTRUE);
1171 for (i=0;i<fnKTFullJets;i++)
1173 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(i);
1174 fEMCalkTFullJet->SetIsJetInArray(IsInEMCalFull(fJetR,myJet->Phi(),myJet->Eta()),i);
1176 fEMCalkTFullJet->InitializeJetData(fmyKTFullJets,fnKTFullJets);
1178 // Raw Full Jet Spectra
1179 fEMCalRawJets->FillBSJS(fEventCentrality,0.0,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
1182 void AliAnalysisTaskFullpAJets::GenerateTPCRandomConesPt()
1185 Double_t E_tracks_total=0.;
1186 TRandom3 u(time(NULL));
1188 Double_t Eta_Center=0.5*(fTPCEtaMin+fTPCEtaMax);
1189 Double_t Phi_Center=0.5*(fTPCPhiMin+fTPCPhiMax);
1193 for (i=0;i<fnBckgClusters;i++)
1195 fTPCRCBckgFluc[i]=0.0;
1196 fTPCRCBckgFlucSignal[i]=0.0;
1197 fTPCRCBckgFlucNColl[i]=0.0;
1200 TLorentzVector *dummy= new TLorentzVector;
1201 TLorentzVector *temp_jet= new TLorentzVector;
1203 // First, consider the RC with no spatial restrictions
1204 for (j=0;j<fnBckgClusters;j++)
1208 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1209 // Loop over all tracks
1210 for (i=0;i<fnTracks;i++)
1212 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1213 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1215 TLorentzVector *track_vec = new TLorentzVector;
1216 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1217 if (dummy->DeltaR(*track_vec)<fJetR)
1219 E_tracks_total+=vtrack->Pt();
1224 fTPCRCBckgFlucSignal[j]=E_tracks_total;
1227 // Now, consider the RC where the vertex of RC is at least 2R away from the leading signal
1229 if (fTPCJetUnbiased->GetLeadingPt()<0.0)
1231 temp_jet->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1235 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetLeadingIndex());
1236 myJet->GetMom(*temp_jet);
1239 for (j=0;j<fnBckgClusters;j++)
1245 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1246 while (temp_jet->DeltaR(*dummy)<fJetR)
1248 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1250 // Loop over all tracks
1251 for (i=0;i<fnTracks;i++)
1253 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1254 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1257 TLorentzVector *track_vec = new TLorentzVector;
1258 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1259 if (dummy->DeltaR(*track_vec)<fJetR)
1262 E_tracks_total+=vtrack->Pt();
1267 fTPCRCBckgFluc[j]=E_tracks_total;
1269 fpTPCEventMult->Fill(fEventCentrality,event_mult);
1270 fTPCRawJets->FillDeltaPt(fEventCentrality,0.0,fJetR,fTPCRCBckgFluc,1);
1272 // For the case of partial exclusion, merely allow a superposition of full and no exclusion with probability p=1/Ncoll
1273 Double_t exclusion_prob;
1274 for (j=0;j<fnBckgClusters;j++)
1276 exclusion_prob = u.Uniform(0,1);
1277 if (exclusion_prob<(1/fNColl))
1279 fTPCRCBckgFlucNColl[j]=fTPCRCBckgFlucSignal[j];
1283 fTPCRCBckgFlucNColl[j]=fTPCRCBckgFluc[j];
1291 void AliAnalysisTaskFullpAJets::GenerateEMCalRandomConesPt()
1294 Double_t E_tracks_total=0.;
1295 Double_t E_caloclusters_total=0.;
1296 TRandom3 u(time(NULL));
1298 Double_t Eta_Center=0.5*(fEMCalEtaMin+fEMCalEtaMax);
1299 Double_t Phi_Center=0.5*(fEMCalPhiMin+fEMCalPhiMax);
1303 for (i=0;i<fnBckgClusters;i++)
1305 fEMCalRCBckgFluc[i]=0.0;
1306 fEMCalRCBckgFlucSignal[i]=0.0;
1307 fEMCalRCBckgFlucNColl[i]=0.0;
1310 TLorentzVector *dummy= new TLorentzVector;
1311 TLorentzVector *temp_jet= new TLorentzVector;
1313 // First, consider the RC with no spatial restrictions
1314 for (j=0;j<fnBckgClusters;j++)
1317 E_caloclusters_total=0.;
1319 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1320 // Loop over all tracks
1321 for (i=0;i<fnTracks;i++)
1323 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1324 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
1326 TLorentzVector *track_vec = new TLorentzVector;
1327 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1328 if (dummy->DeltaR(*track_vec)<fJetR)
1330 E_tracks_total+=vtrack->Pt();
1336 // Loop over all caloclusters
1337 for (i=0;i<fnClusters;i++)
1339 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
1340 TLorentzVector *cluster_vec = new TLorentzVector;
1341 vcluster->GetMomentum(*cluster_vec,fVertex);
1342 if (dummy->DeltaR(*cluster_vec)<fJetR)
1345 E_caloclusters_total+=vcluster->E();
1349 fEMCalRCBckgFlucSignal[j]=E_tracks_total+E_caloclusters_total;
1352 // Now, consider the RC where the vertex of RC is at least 2R away from the leading signal
1354 E_caloclusters_total=0.;
1355 if (fEMCalPartJetUnbiased->GetLeadingPt()<0.0)
1357 temp_jet->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1361 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
1362 myJet->GetMom(*temp_jet);
1365 for (j=0;j<fnBckgClusters;j++)
1370 E_caloclusters_total=0.;
1372 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1373 while (temp_jet->DeltaR(*dummy)<fJetR)
1375 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1377 // Loop over all tracks
1378 for (i=0;i<fnTracks;i++)
1380 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1381 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
1384 TLorentzVector *track_vec = new TLorentzVector;
1385 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1386 if (dummy->DeltaR(*track_vec)<fJetR)
1389 E_tracks_total+=vtrack->Pt();
1395 // Loop over all caloclusters
1396 for (i=0;i<fnClusters;i++)
1398 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
1399 TLorentzVector *cluster_vec = new TLorentzVector;
1400 vcluster->GetMomentum(*cluster_vec,fVertex);
1402 if (dummy->DeltaR(*cluster_vec)<fJetR)
1405 E_caloclusters_total+=vcluster->E();
1409 fEMCalRCBckgFluc[j]=E_tracks_total+E_caloclusters_total;
1411 fpEMCalEventMult->Fill(fEventCentrality,event_mult);
1412 fEMCalRawJets->FillDeltaPt(fEventCentrality,0.0,fJetR,fEMCalRCBckgFluc,1);
1414 // For the case of partial exclusion, merely allow a superposition of full and no exclusion with probability p=1/Ncoll
1415 Double_t exclusion_prob;
1416 for (j=0;j<fnBckgClusters;j++)
1418 exclusion_prob = u.Uniform(0,1);
1419 if (exclusion_prob<(1/fNColl))
1421 fEMCalRCBckgFlucNColl[j]=fEMCalRCBckgFlucSignal[j];
1425 fEMCalRCBckgFlucNColl[j]=fEMCalRCBckgFluc[j];
1435 void AliAnalysisTaskFullpAJets::EstimateChargedRho0()
1438 Double_t E_tracks_total=0.0;
1439 Double_t TPC_rho=0.;
1441 // Loop over all tracks
1442 for (i=0;i<fnTracks;i++)
1444 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1445 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1447 E_tracks_total+=vtrack->Pt();
1451 // Calculate the mean Background density
1452 TPC_rho=E_tracks_total/fTPCArea;
1453 fRhoCharged=TPC_rho;
1456 fRhoCharged0->FillRho(fEventCentrality,TPC_rho);
1457 fRhoCharged0->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCJet->GetJets(),fTPCJet->GetTotalJets());
1458 fRhoCharged0->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1459 fRhoCharged0->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1460 fRhoCharged0->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1461 fRhoCharged0->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1462 fRhoCharged0->FillLeadingJetPtRho(fTPCJet->GetLeadingPt(),TPC_rho);
1466 void AliAnalysisTaskFullpAJets::EstimateChargedRho1()
1469 Double_t E_tracks_total=0.0;
1470 Double_t TPC_rho=0.;
1472 if (fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold)
1474 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1475 TLorentzVector *temp_jet= new TLorentzVector;
1476 myJet->GetMom(*temp_jet);
1478 // Loop over all tracks
1479 for (i=0;i<fnTracks;i++)
1481 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1482 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1484 TLorentzVector *track_vec = new TLorentzVector;
1485 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1486 if (temp_jet->DeltaR(*track_vec)>fJetRForRho)
1488 E_tracks_total+=vtrack->Pt();
1495 // Calculate the mean Background density
1496 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myJet->Eta()));
1498 else // i.e. No signal jets -> same as total background density
1500 // Loop over all tracks
1501 for (i=0;i<fnTracks;i++)
1503 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1504 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1506 E_tracks_total+=vtrack->Pt();
1509 // Calculate the mean Background density
1510 TPC_rho=E_tracks_total/fTPCArea;
1514 fRhoCharged1->FillRho(fEventCentrality,TPC_rho);
1515 fRhoCharged1->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1516 fRhoCharged1->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1517 fRhoCharged1->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1518 fRhoCharged1->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1519 fRhoCharged1->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1520 fRhoCharged1->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
1523 void AliAnalysisTaskFullpAJets::EstimateChargedRho2()
1526 Double_t E_tracks_total=0.0;
1527 Double_t TPC_rho=0.;
1529 if ((fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJetUnbiased->GetSubLeadingPt()>=fTPCJetThreshold))
1531 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1532 TLorentzVector *temp_jet1= new TLorentzVector;
1533 myhJet->GetMom(*temp_jet1);
1535 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
1536 TLorentzVector *temp_jet2= new TLorentzVector;
1537 myJet->GetMom(*temp_jet2);
1539 // Loop over all tracks
1540 for (i=0;i<fnTracks;i++)
1542 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1543 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1545 TLorentzVector *track_vec = new TLorentzVector;
1546 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1547 if ((temp_jet1->DeltaR(*track_vec)>fJetRForRho) && (temp_jet2->DeltaR(*track_vec)>fJetRForRho))
1549 E_tracks_total+=vtrack->Pt();
1557 // Calculate the mean Background density
1558 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myhJet->Eta())-AreaWithinTPC(fJetR,myJet->Eta()));
1560 else if (fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold)
1562 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1563 TLorentzVector *temp_jet= new TLorentzVector;
1564 myJet->GetMom(*temp_jet);
1566 // Loop over all tracks
1567 for (i=0;i<fnTracks;i++)
1569 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1570 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1572 TLorentzVector *track_vec = new TLorentzVector;
1573 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1574 if (temp_jet->DeltaR(*track_vec)>fJetRForRho)
1576 E_tracks_total+=vtrack->Pt();
1583 // Calculate the mean Background density
1584 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myJet->Eta()));
1586 else // i.e. No signal jets -> same as total background density
1588 // Loop over all tracks
1589 for (i=0;i<fnTracks;i++)
1591 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1592 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1594 E_tracks_total+=vtrack->Pt();
1598 // Calculate the mean Background density
1599 TPC_rho=E_tracks_total/fTPCArea;
1603 fRhoCharged2->FillRho(fEventCentrality,TPC_rho);
1604 fRhoCharged2->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1605 fRhoCharged2->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1606 fRhoCharged2->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1607 fRhoCharged2->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1608 fRhoCharged2->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1609 fRhoCharged2->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
1612 void AliAnalysisTaskFullpAJets::EstimateChargedRhoN()
1615 Bool_t track_away_from_jet;
1616 Double_t E_tracks_total=0.0;
1617 Double_t TPC_rho=0.0;
1618 Double_t jet_area_total=0.0;
1620 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
1621 for (i=0;i<fnTracks;i++)
1623 // First, check if track is in the EMCal!!
1624 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
1625 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1627 if (fTPCJetUnbiased->GetTotalSignalJets()<1)
1629 E_tracks_total+=vtrack->Pt();
1633 track_away_from_jet=kTRUE;
1635 TLorentzVector *track_vec = new TLorentzVector;
1636 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1637 while (track_away_from_jet==kTRUE && j<fTPCJetUnbiased->GetTotalSignalJets())
1639 TLorentzVector *jet_vec= new TLorentzVector;
1640 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(j));
1641 myJet->GetMom(*jet_vec);
1642 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
1644 track_away_from_jet=kFALSE;
1649 if (track_away_from_jet==kTRUE)
1651 E_tracks_total+=vtrack->Pt();
1658 // Determine area of all Jets that are within the EMCal
1659 if (fTPCJetUnbiased->GetTotalSignalJets()==0)
1665 for (i=0;i<fTPCJetUnbiased->GetTotalSignalJets();i++)
1667 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(i));
1668 jet_area_total+=AreaWithinTPC(fJetR,myJet->Eta());
1673 TPC_rho = E_tracks_total/(fTPCArea-jet_area_total);
1676 fRhoChargedN->FillRho(fEventCentrality,TPC_rho);
1677 fRhoChargedN->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1678 fRhoChargedN->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1679 fRhoChargedN->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1680 fRhoChargedN->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1681 fRhoChargedN->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1682 fRhoChargedN->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
1687 void AliAnalysisTaskFullpAJets::EstimateChargedRhoScale()
1690 Bool_t track_away_from_jet;
1691 Double_t E_tracks_total=0.0;
1692 Double_t TPC_rho=0.0;
1693 Double_t jet_area_total=0.0;
1695 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
1696 for (i=0;i<fnTracks;i++)
1698 // First, check if track is in the EMCal!!
1699 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
1700 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1702 if (fTPCJetUnbiased->GetTotalSignalJets()<1)
1704 E_tracks_total+=vtrack->Pt();
1708 track_away_from_jet=kTRUE;
1710 TLorentzVector *track_vec = new TLorentzVector;
1711 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1712 while (track_away_from_jet==kTRUE && j<fTPCJetUnbiased->GetTotalSignalJets())
1714 TLorentzVector *jet_vec= new TLorentzVector;
1715 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(j));
1716 myJet->GetMom(*jet_vec);
1717 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
1719 track_away_from_jet=kFALSE;
1724 if (track_away_from_jet==kTRUE)
1726 E_tracks_total+=vtrack->Pt();
1733 // Determine area of all Jets that are within the TPC
1734 if (fTPCJetUnbiased->GetTotalSignalJets()==0)
1740 for (i=0;i<fTPCJetUnbiased->GetTotalSignalJets();i++)
1742 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(i));
1743 jet_area_total+=AreaWithinTPC(fJetR,myJet->Eta());
1748 TPC_rho = E_tracks_total/(fTPCArea-jet_area_total);
1749 TPC_rho*=fScaleFactor;
1752 fRhoChargedScale->FillRho(fEventCentrality,TPC_rho);
1753 fRhoChargedScale->FillBSJS(fEventCentrality,TPC_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
1754 fRhoChargedScale->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFluc,1);
1755 fRhoChargedScale->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFlucSignal,1);
1756 fRhoChargedScale->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFlucNColl,1);
1757 fRhoChargedScale->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1758 fRhoChargedScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),TPC_rho);
1759 fRhoChargedScale->FillMiscJetStats(fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fOrgTracks,fOrgClusters);
1763 void AliAnalysisTaskFullpAJets::EstimateChargedRhokT()
1766 Double_t kTRho = 0.0;
1767 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1768 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1770 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
1772 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
1773 pTArray[i]=myJet->Pt();
1774 RhoArray[i]=myJet->Pt()/myJet->Area();
1777 if (fTPCkTFullJet->GetTotalJets()>=2)
1779 kTRho=MedianRhokT(pTArray,RhoArray,fTPCkTFullJet->GetTotalJets());
1781 fRhoChargedkT->FillRho(fEventCentrality,kTRho);
1782 fRhoChargedkT->FillBSJS(fEventCentrality,kTRho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1783 fRhoChargedkT->FillDeltaPt(fEventCentrality,kTRho,fJetR,fTPCRCBckgFluc,1);
1784 fRhoChargedkT->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucSignal,1);
1785 fRhoChargedkT->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucNColl,1);
1786 fRhoChargedkT->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
1787 fRhoChargedkT->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),kTRho);
1793 void AliAnalysisTaskFullpAJets::EstimateChargedRhokTScale()
1796 Double_t kTRho = 0.0;
1797 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1798 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1800 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
1802 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
1803 pTArray[i]=myJet->Pt();
1804 RhoArray[i]=myJet->Pt()/myJet->Area();
1807 if (fTPCkTFullJet->GetTotalJets()>=2)
1809 kTRho=MedianRhokT(pTArray,RhoArray,fTPCkTFullJet->GetTotalJets());
1810 kTRho*=fScaleFactor;
1812 fRhoChargedkTScale->FillRho(fEventCentrality,kTRho);
1813 fRhoChargedkTScale->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
1814 fRhoChargedkTScale->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
1815 fRhoChargedkTScale->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
1816 fRhoChargedkTScale->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
1817 fRhoChargedkTScale->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
1818 fRhoChargedkTScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
1824 void AliAnalysisTaskFullpAJets::EstimateChargedRhoCMS()
1827 Double_t kTRho = 0.0;
1828 Double_t CMSTotalkTArea = 0.0;
1829 Double_t CMSTrackArea = 0.0;
1830 Double_t CMSCorrectionFactor = 1.0;
1831 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1832 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1835 if ((fTPCJet->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJet->GetSubLeadingPt()>=fTPCJetThreshold))
1837 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1838 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
1840 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
1842 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
1844 CMSTotalkTArea+=myJet->Area();
1845 if (myJet->GetNumberOfTracks()>0)
1847 CMSTrackArea+=myJet->Area();
1849 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kFALSE)
1851 pTArray[k]=myJet->Pt();
1852 RhoArray[k]=myJet->Pt()/myJet->Area();
1858 kTRho=MedianRhokT(pTArray,RhoArray,k);
1865 else if (fTPCJet->GetLeadingPt()>=fTPCJetThreshold)
1867 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1869 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
1871 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
1873 CMSTotalkTArea+=myJet->Area();
1874 if (myJet->GetNumberOfTracks()>0)
1876 CMSTrackArea+=myJet->Area();
1878 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE)
1880 pTArray[k]=myJet->Pt();
1881 RhoArray[k]=myJet->Pt()/myJet->Area();
1887 kTRho=MedianRhokT(pTArray,RhoArray,k);
1896 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
1898 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
1900 CMSTotalkTArea+=myJet->Area();
1901 if (myJet->GetNumberOfTracks()>0)
1903 CMSTrackArea+=myJet->Area();
1905 pTArray[k]=myJet->Pt();
1906 RhoArray[k]=myJet->Pt()/myJet->Area();
1911 kTRho=MedianRhokT(pTArray,RhoArray,k);
1918 // Scale CMS Rho by Correction factor
1919 if (CMSTotalkTArea==0.0)
1921 CMSCorrectionFactor = 1.0;
1925 //CMSCorrectionFactor = CMSTrackArea/CMSTotalkTArea;
1926 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
1928 kTRho*=CMSCorrectionFactor;
1929 fRhoChargedCMS->FillRho(fEventCentrality,kTRho);
1930 fRhoChargedCMS->FillBSJS(fEventCentrality,kTRho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1931 fRhoChargedCMS->FillDeltaPt(fEventCentrality,kTRho,fJetR,fTPCRCBckgFluc,1);
1932 fRhoChargedCMS->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucSignal,1);
1933 fRhoChargedCMS->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucNColl,1);
1934 fRhoChargedCMS->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
1935 fRhoChargedCMS->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),kTRho);
1940 void AliAnalysisTaskFullpAJets::EstimateChargedRhoCMSScale()
1943 Double_t kTRho = 0.0;
1944 Double_t CMSTotalkTArea = 0.0;
1945 Double_t CMSTrackArea = 0.0;
1946 Double_t CMSCorrectionFactor = 1.0;
1947 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1948 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1951 if ((fTPCJet->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJet->GetSubLeadingPt()>=fTPCJetThreshold))
1953 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1954 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
1956 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
1958 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
1960 CMSTotalkTArea+=myJet->Area();
1961 if (myJet->GetNumberOfTracks()>0)
1963 CMSTrackArea+=myJet->Area();
1965 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kFALSE)
1967 pTArray[k]=myJet->Pt();
1968 RhoArray[k]=myJet->Pt()/myJet->Area();
1974 kTRho=MedianRhokT(pTArray,RhoArray,k);
1981 else if (fTPCJet->GetLeadingPt()>=fTPCJetThreshold)
1983 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1985 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
1987 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
1989 CMSTotalkTArea+=myJet->Area();
1990 if (myJet->GetNumberOfTracks()>0)
1992 CMSTrackArea+=myJet->Area();
1994 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE)
1996 pTArray[k]=myJet->Pt();
1997 RhoArray[k]=myJet->Pt()/myJet->Area();
2003 kTRho=MedianRhokT(pTArray,RhoArray,k);
2012 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2014 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2016 CMSTotalkTArea+=myJet->Area();
2017 if (myJet->GetNumberOfTracks()>0)
2019 CMSTrackArea+=myJet->Area();
2021 pTArray[k]=myJet->Pt();
2022 RhoArray[k]=myJet->Pt()/myJet->Area();
2027 kTRho=MedianRhokT(pTArray,RhoArray,k);
2034 kTRho*=fScaleFactor;
2035 // Scale CMS Rho by Correction factor
2036 if (CMSTotalkTArea==0.0)
2038 CMSCorrectionFactor = 1.0;
2042 //CMSCorrectionFactor = CMSTrackArea/CMSTotalkTArea;
2043 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
2045 kTRho*=CMSCorrectionFactor;
2047 fRhoChargedCMSScale->FillRho(fEventCentrality,kTRho);
2048 fRhoChargedCMSScale->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2049 fRhoChargedCMSScale->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2050 fRhoChargedCMSScale->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2051 fRhoChargedCMSScale->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2052 fRhoChargedCMSScale->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2053 fRhoChargedCMSScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2054 fRhoChargedCMSScale->DoNEFAnalysis(fNEFSignalJetCut,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fmyClusters,fOrgClusters,fEvent,fEMCALGeometry,fRecoUtil,fCells);
2055 fRhoChargedCMSScale->FillMiscJetStats(fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fOrgTracks,fOrgClusters);
2062 void AliAnalysisTaskFullpAJets::EstimateFullRho0()
2065 Double_t E_tracks_total=0.0;
2066 Double_t E_caloclusters_total=0.0;
2067 Double_t EMCal_rho=0.0;
2069 // Loop over all tracks
2070 for (i=0;i<fnTracks;i++)
2072 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2073 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2075 E_tracks_total+=vtrack->Pt();
2079 // Loop over all caloclusters
2080 for (i=0;i<fnClusters;i++)
2082 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2083 TLorentzVector *cluster_vec = new TLorentzVector;
2084 vcluster->GetMomentum(*cluster_vec,fVertex);
2085 E_caloclusters_total+=cluster_vec->Pt();
2086 //E_caloclusters_total+=0.5*cluster_vec->Pt();
2089 // Calculate the mean Background density
2090 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2096 fpRhoScale->Fill(fEventCentrality,fRhoFull/fRhoCharged);
2097 fhRhoScale->Fill(fRhoFull/fRhoCharged,fEventCentrality);
2100 fRhoFull0->FillRho(fEventCentrality,EMCal_rho);
2101 fRhoFull0->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2102 fRhoFull0->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2103 fRhoFull0->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2104 fRhoFull0->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2105 fRhoFull0->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2106 fRhoFull0->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2109 void AliAnalysisTaskFullpAJets::EstimateFullRho1()
2112 Double_t E_tracks_total=0.0;
2113 Double_t E_caloclusters_total=0.0;
2114 Double_t EMCal_rho=0.0;
2116 if (fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold)
2118 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
2119 TLorentzVector *temp_jet= new TLorentzVector;
2120 myJet->GetMom(*temp_jet);
2122 // Loop over all tracks
2123 for (i=0;i<fnTracks;i++)
2125 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2126 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2128 TLorentzVector *track_vec = new TLorentzVector;
2129 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2130 if (temp_jet->DeltaR(*track_vec)>fJetRForRho)
2132 E_tracks_total+=vtrack->Pt();
2138 // Loop over all caloclusters
2139 for (i=0;i<fnClusters;i++)
2141 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2142 TLorentzVector *cluster_vec = new TLorentzVector;
2143 vcluster->GetMomentum(*cluster_vec,fVertex);
2144 if (temp_jet->DeltaR(*cluster_vec)>fJetRForRho)
2146 E_caloclusters_total+=vcluster->E();
2151 // Calculate the mean Background density
2152 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
2154 else // i.e. No signal jets -> same as total background density
2156 // Loop over all tracks
2157 for (i=0;i<fnTracks;i++)
2159 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2160 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2162 E_tracks_total+=vtrack->Pt();
2166 // Loop over all caloclusters
2167 for (i=0;i<fnClusters;i++)
2169 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2170 E_caloclusters_total+=vcluster->E();
2172 // Calculate the mean Background density
2173 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2177 fRhoFull1->FillRho(fEventCentrality,EMCal_rho);
2178 fRhoFull1->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2179 fRhoFull1->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2180 fRhoFull1->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2181 fRhoFull1->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2182 fRhoFull1->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2183 fRhoFull1->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2186 void AliAnalysisTaskFullpAJets::EstimateFullRho2()
2189 Double_t E_tracks_total=0.0;
2190 Double_t E_caloclusters_total=0.0;
2191 Double_t EMCal_rho=0.0;
2193 if ((fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold) && (fEMCalPartJetUnbiased->GetSubLeadingPt()>=fEMCalJetThreshold))
2195 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
2196 TLorentzVector *temp_jet1 = new TLorentzVector;
2197 myhJet->GetMom(*temp_jet1);
2199 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSubLeadingIndex());
2200 TLorentzVector *temp_jet2 = new TLorentzVector;
2201 myJet->GetMom(*temp_jet2);
2203 // Loop over all tracks
2204 for (i=0;i<fnTracks;i++)
2206 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2207 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2209 TLorentzVector *track_vec = new TLorentzVector;
2210 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2211 if ((temp_jet1->DeltaR(*track_vec)>fJetRForRho) && (temp_jet2->DeltaR(*track_vec)>fJetRForRho))
2213 E_tracks_total+=vtrack->Pt();
2219 // Loop over all caloclusters
2220 for (i=0;i<fnClusters;i++)
2222 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2223 TLorentzVector *cluster_vec = new TLorentzVector;
2224 vcluster->GetMomentum(*cluster_vec,fVertex);
2225 if ((temp_jet1->DeltaR(*cluster_vec)>fJetRForRho) && (temp_jet2->DeltaR(*cluster_vec)>fJetRForRho))
2227 E_caloclusters_total+=vcluster->E();
2234 // Calculate the mean Background density
2235 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myhJet->Phi(),myhJet->Eta())-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
2237 else if (fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold)
2239 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
2240 TLorentzVector *temp_jet= new TLorentzVector;
2241 myJet->GetMom(*temp_jet);
2243 // Loop over all tracks
2244 for (i=0;i<fnTracks;i++)
2246 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2247 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2249 TLorentzVector *track_vec = new TLorentzVector;
2250 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2251 if (temp_jet->DeltaR(*track_vec)>fJetRForRho)
2253 E_tracks_total+=vtrack->Pt();
2259 // Loop over all caloclusters
2260 for (i=0;i<fnClusters;i++)
2262 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2263 TLorentzVector *cluster_vec = new TLorentzVector;
2264 vcluster->GetMomentum(*cluster_vec,fVertex);
2265 if (temp_jet->DeltaR(*cluster_vec)>fJetRForRho)
2267 E_caloclusters_total+=vcluster->E();
2272 // Calculate the mean Background density
2273 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
2275 else // i.e. No signal jets -> same as total background density
2277 // Loop over all tracks
2278 for (i=0;i<fnTracks;i++)
2280 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2281 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2283 E_tracks_total+=vtrack->Pt();
2287 // Loop over all caloclusters
2288 for (i=0;i<fnClusters;i++)
2290 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2291 E_caloclusters_total+=vcluster->E();
2293 // Calculate the mean Background density
2294 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2298 fRhoFull2->FillRho(fEventCentrality,EMCal_rho);
2299 fRhoFull2->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2300 fRhoFull2->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2301 fRhoFull2->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2302 fRhoFull2->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2303 fRhoFull2->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2304 fRhoFull2->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2307 void AliAnalysisTaskFullpAJets::EstimateFullRhoN()
2310 Bool_t track_away_from_jet;
2311 Bool_t cluster_away_from_jet;
2312 Double_t E_tracks_total=0.0;
2313 Double_t E_caloclusters_total=0.0;
2314 Double_t EMCal_rho=0.0;
2315 Double_t jet_area_total=0.0;
2317 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
2318 for (i=0;i<fnTracks;i++)
2320 // First, check if track is in the EMCal!!
2321 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
2322 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2324 if (fEMCalPartJetUnbiased->GetTotalSignalJets()<1)
2326 E_tracks_total+=vtrack->Pt();
2330 track_away_from_jet=kTRUE;
2332 TLorentzVector *track_vec = new TLorentzVector;
2333 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2334 while (track_away_from_jet==kTRUE && j<fEMCalPartJetUnbiased->GetTotalSignalJets())
2336 TLorentzVector *jet_vec= new TLorentzVector;
2337 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(j));
2338 myJet->GetMom(*jet_vec);
2339 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
2341 track_away_from_jet=kFALSE;
2346 if (track_away_from_jet==kTRUE)
2348 E_tracks_total+=vtrack->Pt();
2355 // Next, sum all CaloClusters within the EMCal (obviously all clusters must be within EMCal!!) that are away from jet(s) above Pt Threshold
2356 for (i=0;i<fnClusters;i++)
2358 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2359 if (fEMCalPartJet->GetTotalSignalJets()<1)
2361 E_caloclusters_total+=vcluster->E();
2365 cluster_away_from_jet=kTRUE;
2368 TLorentzVector *cluster_vec = new TLorentzVector;
2369 vcluster->GetMomentum(*cluster_vec,fVertex);
2370 while (cluster_away_from_jet==kTRUE && j<fEMCalPartJetUnbiased->GetTotalSignalJets())
2372 TLorentzVector *jet_vec= new TLorentzVector;
2373 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(j));
2374 myJet->GetMom(*jet_vec);
2375 if (cluster_vec->DeltaR(*jet_vec)<=fJetRForRho)
2377 cluster_away_from_jet=kFALSE;
2382 if (cluster_away_from_jet==kTRUE)
2384 E_caloclusters_total+=vcluster->E();
2390 // Determine area of all Jets that are within the EMCal
2391 if (fEMCalPartJet->GetTotalSignalJets()==0)
2397 for (i=0;i<fEMCalPartJetUnbiased->GetTotalSignalJets();i++)
2399 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(i));
2400 jet_area_total+=AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta());
2405 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-jet_area_total);
2408 fRhoFullN->FillRho(fEventCentrality,EMCal_rho);
2409 fRhoFullN->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2410 fRhoFullN->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2411 fRhoFullN->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2412 fRhoFullN->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2413 fRhoFullN->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2414 fRhoFullN->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2417 void AliAnalysisTaskFullpAJets::EstimateFullRhoDijet()
2420 Double_t E_tracks_total=0.0;
2421 Double_t E_caloclusters_total=0.0;
2422 Double_t EMCal_rho=0.0;
2424 // Loop over all tracks
2425 for (i=0;i<fnTracks;i++)
2427 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2428 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2430 E_tracks_total+=vtrack->Pt();
2434 // Loop over all caloclusters
2435 for (i=0;i<fnClusters;i++)
2437 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2438 E_caloclusters_total+=vcluster->E();
2441 // Calculate the mean Background density
2442 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2445 fRhoFullDijet->FillRho(fEventCentrality,EMCal_rho);
2446 fRhoFullDijet->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2447 fRhoFullDijet->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2448 fRhoFullDijet->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2449 fRhoFullDijet->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2450 fRhoFullDijet->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2451 fRhoFullDijet->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2454 void AliAnalysisTaskFullpAJets::EstimateFullRhokT()
2457 Double_t kTRho = 0.0;
2458 Double_t *pTArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2459 Double_t *RhoArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2461 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2463 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2464 pTArray[i]=myJet->Pt();
2465 RhoArray[i]=myJet->Pt()/myJet->Area();
2468 if (fEMCalkTFullJet->GetTotalJets()>0)
2470 kTRho=MedianRhokT(pTArray,RhoArray,fEMCalkTFullJet->GetTotalJets());
2476 fRhoFullkT->FillRho(fEventCentrality,kTRho);
2477 fRhoFullkT->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2478 fRhoFullkT->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2479 fRhoFullkT->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2480 fRhoFullkT->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2481 fRhoFullkT->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2482 fRhoFullkT->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2487 void AliAnalysisTaskFullpAJets::EstimateFullRhoCMS()
2490 Double_t kTRho = 0.0;
2491 Double_t CMSTotalkTArea = 0.0;
2492 Double_t CMSParticleArea = 0.0;
2493 Double_t CMSCorrectionFactor = 1.0;
2494 Double_t *pTArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2495 Double_t *RhoArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2498 if ((fEMCalPartJet->GetLeadingPt()>=fEMCalJetThreshold) && (fEMCalPartJet->GetSubLeadingPt()>=fEMCalJetThreshold))
2500 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJet->GetLeadingIndex());
2501 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJet->GetSubLeadingIndex());
2503 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2505 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2507 CMSTotalkTArea+=myJet->Area();
2508 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
2510 CMSParticleArea+=myJet->Area();
2512 if (IsJetOverlap(myJet,myJet1,kTRUE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kTRUE)
2514 pTArray[k]=myJet->Pt();
2515 RhoArray[k]=myJet->Pt()/myJet->Area();
2521 kTRho=MedianRhokT(pTArray,RhoArray,k);
2528 else if (fEMCalJet->GetLeadingPt()>=fEMCalJetThreshold)
2530 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalJet->GetLeadingIndex());
2532 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2534 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2536 CMSTotalkTArea+=myJet->Area();
2537 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
2539 CMSParticleArea+=myJet->Area();
2541 if (IsJetOverlap(myJet,myJet1,kTRUE)==kFALSE)
2543 pTArray[k]=myJet->Pt();
2544 RhoArray[k]=myJet->Pt()/myJet->Area();
2550 kTRho=MedianRhokT(pTArray,RhoArray,k);
2559 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2561 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2563 CMSTotalkTArea+=myJet->Area();
2564 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
2566 CMSParticleArea+=myJet->Area();
2568 pTArray[k]=myJet->Pt();
2569 RhoArray[k]=myJet->Pt()/myJet->Area();
2574 kTRho=MedianRhokT(pTArray,RhoArray,k);
2581 // Scale CMS Rho by Correction factor
2582 if (CMSTotalkTArea==0.0)
2584 CMSCorrectionFactor = 1.0;
2588 //CMSCorrectionFactor = CMSTrackArea/CMSTotalkTArea;
2589 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
2591 kTRho*=CMSCorrectionFactor;
2593 fRhoFullCMS->FillRho(fEventCentrality,kTRho);
2594 fRhoFullCMS->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2595 fRhoFullCMS->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2596 fRhoFullCMS->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2597 fRhoFullCMS->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2598 fRhoFullCMS->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2599 fRhoFullCMS->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2604 void AliAnalysisTaskFullpAJets::DeleteJetData(Bool_t EMCalOn)
2610 delete fTPCkTFullJet;
2615 delete fEMCalFullJet;
2616 delete fEMCalPartJet;
2617 delete fEMCalkTFullJet;
2621 /////////////////////////////////////////////////////////////////////////////////////////
2622 ///////////////// User Defined Functions ///////////////////////////////////////
2623 /////////////////////////////////////////////////////////////////////////////////////////
2625 Bool_t AliAnalysisTaskFullpAJets::IsDiJetEvent()
2627 // Determine if event contains a di-jet within the detector. Uses charged jets.
2628 // Requires the delta phi of the jets to be 180 +/- 15 degrees.
2629 // Requires both jets to be outside of the EMCal
2630 // Requires both jets to be signal jets
2632 const Double_t dijet_delta_phi=(180/360.)*2*TMath::Pi();
2633 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
2634 Double_t dummy_phi=0.0;
2636 if (fTPCOnlyJet->GetTotalSignalJets()>1)
2638 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCOnlyJet->GetLeadingIndex());
2639 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCOnlyJet->GetSubLeadingIndex());
2640 dummy_phi=TMath::Min(TMath::Abs(myhJet->Phi()-myJet->Phi()),2*TMath::Pi()-TMath::Abs(myhJet->Phi()-myJet->Phi()));
2641 if (dummy_phi>(dijet_delta_phi-dijet_phi_acceptance))
2650 Bool_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)
2652 if (phi>phi_min && phi<phi_max)
2654 if (eta>eta_min && eta<eta_max)
2662 Bool_t AliAnalysisTaskFullpAJets::IsInEMCal(Double_t phi,Double_t eta)
2664 return InsideRect(phi,fEMCalPhiMin,fEMCalPhiMax,eta,fEMCalEtaMin,fEMCalEtaMax);
2667 Bool_t AliAnalysisTaskFullpAJets::IsInEMCalFull(Double_t r,Double_t phi,Double_t eta)
2669 return InsideRect(phi,fEMCalPhiMin+r,fEMCalPhiMax-r,eta,fEMCalEtaMin+r,fEMCalEtaMax-r);
2672 Bool_t AliAnalysisTaskFullpAJets::IsInEMCalPart(Double_t r,Double_t phi,Double_t eta)
2674 return InsideRect(phi,fEMCalPhiMin-r,fEMCalPhiMax+r,eta,fEMCalEtaMin-r,fEMCalEtaMax+r);
2677 Bool_t AliAnalysisTaskFullpAJets::IsInTPCFull(Double_t r,Double_t phi,Double_t eta)
2679 Bool_t in_EMCal= InsideRect(phi,fEMCalPhiMin-r,fEMCalPhiMax+r,eta,fEMCalEtaMin-r,fEMCalEtaMax+r);
2680 Bool_t in_TPC= InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin+r,fTPCEtaMax-r);
2682 if (in_EMCal==kFALSE && in_TPC==kTRUE)
2689 Bool_t AliAnalysisTaskFullpAJets::IsInTPC(Double_t r,Double_t phi,Double_t eta,Bool_t Complete)
2691 if (Complete==kTRUE)
2693 return InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin+r,fTPCEtaMax-r);
2695 return InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin,fTPCEtaMax);
2698 Bool_t AliAnalysisTaskFullpAJets::IsJetOverlap(AliEmcalJet *jet1,AliEmcalJet *jet2,Bool_t EMCalOn)
2703 Int_t jetCluster1=0;
2704 Int_t jetCluster2=0;
2706 for (i=0;i<jet1->GetNumberOfTracks();i++)
2708 jetTrack1=jet1->TrackAt(i);
2709 for (j=0;j<jet2->GetNumberOfTracks();j++)
2711 jetTrack2=jet2->TrackAt(j);
2712 if (jetTrack1 == jetTrack2)
2718 if (EMCalOn == kTRUE)
2720 for (i=0;i<jet1->GetNumberOfClusters();i++)
2722 jetCluster1=jet1->ClusterAt(i);
2723 for (j=0;j<jet2->GetNumberOfClusters();j++)
2725 jetCluster2=jet2->ClusterAt(j);
2726 if (jetCluster1 == jetCluster2)
2736 Double_t AliAnalysisTaskFullpAJets::AreaWithinTPC(Double_t r,Double_t eta)
2739 if (eta<(fTPCEtaMin+r))
2743 else if(eta>(fTPCEtaMax-r))
2751 return r*r*TMath::Pi()-AreaEdge(r,z);
2754 Double_t AliAnalysisTaskFullpAJets::AreaWithinEMCal(Double_t r,Double_t phi,Double_t eta)
2758 if (phi<(fEMCalPhiMin-r) || phi>(fEMCalPhiMax+r))
2762 else if (phi<(fEMCalPhiMin+r))
2766 else if (phi>(fEMCalPhiMin+r) && phi<(fEMCalPhiMax-r))
2775 if (eta<(fEMCalEtaMin-r) || eta>(fEMCalEtaMax+r))
2779 else if (eta<(fEMCalEtaMin+r))
2783 else if (eta>(fEMCalEtaMin+r) && eta<(fEMCalEtaMax-r))
2794 if (TMath::Sqrt(x*x+y*y)>=r)
2796 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y);
2798 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y)+AreaOverlap(r,x,y);
2800 else if ((x>=r && y<0) || (y>=r && x<0))
2802 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y);
2804 else if (x>0 && x<r && y<0)
2806 Double_t a=TMath::Sqrt(r*r-x*x);
2807 Double_t b=TMath::Sqrt(r*r-y*y);
2810 return r*r*TMath::ASin(b/r)+y*b;
2814 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);
2817 else if (y>0 && y<r && x<0)
2819 Double_t a=TMath::Sqrt(r*r-x*x);
2820 Double_t b=TMath::Sqrt(r*r-y*y);
2823 return r*r*TMath::ASin(a/r)+x*a;
2827 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);
2832 Double_t a=TMath::Sqrt(r*r-x*x);
2833 Double_t b=TMath::Sqrt(r*r-y*y);
2840 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);
2845 Double_t AliAnalysisTaskFullpAJets::AreaEdge(Double_t r,Double_t z)
2847 Double_t a=TMath::Sqrt(r*r-z*z);
2848 return r*r*TMath::ASin(a/r)-a*z;
2851 Double_t AliAnalysisTaskFullpAJets::AreaOverlap(Double_t r,Double_t x,Double_t y)
2853 Double_t a=TMath::Sqrt(r*r-x*x);
2854 Double_t b=TMath::Sqrt(r*r-y*y);
2855 return x*y-0.5*(x*a+y*b)+0.5*r*r*(TMath::ASin(b/r)-TMath::ASin(x/r));
2858 Double_t AliAnalysisTaskFullpAJets::TransverseArea(Double_t r,Double_t psi0,Double_t phi,Double_t eta)
2860 Double_t area_left=0;
2861 Double_t area_right=0;
2865 Double_t eta_down=0;
2867 Double_t u=eta-fEMCalEtaMin;
2868 Double_t v=fEMCalEtaMax-eta;
2870 Double_t phi1=phi+u*TMath::Tan(psi0);
2871 Double_t phi2=phi-u*TMath::Tan(psi0);
2872 Double_t phi3=phi+v*TMath::Tan(psi0);
2873 Double_t phi4=phi-v*TMath::Tan(psi0);
2875 //Calculate the Left side area
2876 if (phi1>=fEMCalPhiMax)
2878 eta_a=eta-u*((fEMCalPhiMax-phi)/(phi1-phi));
2880 if (phi2<=fEMCalPhiMin)
2882 eta_b=eta-u*((phi-fEMCalPhiMin)/(phi-phi2));
2885 if ((phi1>=fEMCalPhiMax) && (phi2<=fEMCalPhiMin))
2887 eta_up=TMath::Max(eta_a,eta_b);
2888 eta_down=TMath::Min(eta_a,eta_b);
2890 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);
2892 else if (phi1>=fEMCalPhiMax)
2894 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);
2896 else if (phi2<=fEMCalPhiMin)
2898 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);
2902 area_left=0.5*(phi1-phi2+2*r*TMath::Tan(psi0))*(u-r);
2905 // Calculate the Right side area
2906 if (phi3>=fEMCalPhiMax)
2908 eta_a=eta+v*((fEMCalPhiMax-phi)/(phi3-phi));
2910 if (phi4<=fEMCalPhiMin)
2912 eta_b=eta+v*((phi-fEMCalPhiMin)/(phi-phi4));
2915 if ((phi3>=fEMCalPhiMax) && (phi4<=fEMCalPhiMin))
2917 eta_up=TMath::Max(eta_a,eta_b);
2918 eta_down=TMath::Min(eta_a,eta_b);
2920 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);
2922 else if (phi3>=fEMCalPhiMax)
2924 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);
2926 else if (phi4<=fEMCalPhiMin)
2928 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);
2932 area_right=0.5*(phi3-phi4+2*r*TMath::Tan(psi0))*(v-r);
2934 return area_left+area_right;
2937 Double_t AliAnalysisTaskFullpAJets::MedianRhokT(Double_t *pTkTEntries, Double_t *RhokTEntries, Int_t nEntries)
2939 // This function is used to calculate the median Rho kT value. The procedure is:
2940 // - Order the kT cluster array from highest rho value to lowest
2941 // - Exclude highest rho kT cluster
2942 // - Return the median rho value of the remaining subset
2945 const Double_t rho_min=-9.9999E+99;
2947 Double_t w[nEntries]; // Used for sorting
2948 Double_t smax=rho_min;
2954 for (j=0;j<nEntries;j++)
2959 for (j=0;j<nEntries;j++)
2961 if (pTkTEntries[j]>pTmax)
2963 pTmax=pTkTEntries[j];
2968 for (j=0;j<nEntries;j++)
2970 for (k=0;k<nEntries;k++)
2972 if (RhokTEntries[k]>smax)
2974 smax=RhokTEntries[k];
2979 RhokTEntries[sindex]=rho_min;
2983 return w[nEntries/2];
2987 // AlipAJetData Class Member Defs
2989 AliAnalysisTaskFullpAJets::AlipAJetData::AlipAJetData() :
3000 fSignalTrackBias(1),
3003 fPtSubLeadingIndex(0),
3011 // Dummy constructor ALWAYS needed for I/O.
3014 AliAnalysisTaskFullpAJets::AlipAJetData::AlipAJetData(const char *name, Bool_t isFull, Int_t nEntries) :
3025 fSignalTrackBias(1),
3028 fPtSubLeadingIndex(0),
3036 SetIsJetsFull(isFull);
3037 SetTotalEntries(nEntries);
3038 SetLeading(0,-9.99E+099);
3039 SetSubLeading(0,-9.99E+099);
3041 SetAreaCutFraction(0.6);
3043 SetSignalTrackPtBias(1);
3047 AliAnalysisTaskFullpAJets::AlipAJetData::~AlipAJetData()
3052 SetIsJetsFull(kFALSE);
3055 SetTotalSignalJets(0);
3059 SetAreaCutFraction(0);
3062 SetSignalTrackPtBias(kTRUE);
3064 delete [] fJetsIndex;
3065 delete [] fJetsSCIndex;
3066 delete [] fIsJetInArray;
3067 delete [] fJetMaxChargedPt;
3071 // User Defined Sub-Routines
3072 void AliAnalysisTaskFullpAJets::AlipAJetData::InitializeJetData(TClonesArray *jetList, Int_t nEntries)
3077 Double_t AreaThreshold = fAreaCutFrac*TMath::Pi()*TMath::Power(fJetR,2);
3079 // Initialize Jet Data
3080 for (i=0;i<nEntries;i++)
3082 AliEmcalJet *myJet =(AliEmcalJet*) jetList->At(i);
3084 if (fIsJetInArray[i]==kTRUE && myJet->Area()>AreaThreshold)
3087 if (myJet->Pt()>fPtMax)
3089 SetSubLeading(fPtMaxIndex,fPtMax);
3090 SetLeading(i,myJet->Pt());
3092 else if (myJet->Pt()>fPtSubLeading)
3094 SetSubLeading(i,myJet->Pt());
3096 // require leading charged constituent to have a pT greater then the signal threshold & Jet NEF to be less then the Signal Jet NEF cut
3097 fJetMaxChargedPt[i] = myJet->MaxTrackPt();
3098 if (fSignalTrackBias==kTRUE)
3100 if (fJetMaxChargedPt[i]>=fSignalPt && myJet->NEF()<=fNEF)
3102 SetSignalJetIndex(i,l);
3108 if (myJet->Pt()>=fSignalPt && myJet->NEF()<=fNEF)
3110 SetSignalJetIndex(i,l);
3118 SetTotalSignalJets(l);
3122 void AliAnalysisTaskFullpAJets::AlipAJetData::SetName(const char *name)
3127 void AliAnalysisTaskFullpAJets::AlipAJetData::SetIsJetsFull(Bool_t isFull)
3129 fIsJetsFull = isFull;
3132 void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalEntries(Int_t nEntries)
3135 fJetsIndex = new Int_t[fnTotal];
3136 fJetsSCIndex = new Int_t[fnTotal];
3137 fIsJetInArray = new Bool_t[fnTotal];
3138 fJetMaxChargedPt = new Double_t[fnTotal];
3141 void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalJets(Int_t nJets)
3146 void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalSignalJets(Int_t nSignalJets)
3148 fnJetsSC = nSignalJets;
3151 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalCut(Double_t Pt)
3156 void AliAnalysisTaskFullpAJets::AlipAJetData::SetLeading(Int_t index, Double_t Pt)
3158 fPtMaxIndex = index;
3162 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSubLeading(Int_t index, Double_t Pt)
3164 fPtSubLeadingIndex = index;
3168 void AliAnalysisTaskFullpAJets::AlipAJetData::SetJetIndex(Int_t index, Int_t At)
3170 fJetsIndex[At] = index;
3173 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalJetIndex(Int_t index, Int_t At)
3175 fJetsSCIndex[At] = index;
3178 void AliAnalysisTaskFullpAJets::AlipAJetData::SetIsJetInArray(Bool_t isInArray, Int_t At)
3180 fIsJetInArray[At] = isInArray;
3183 void AliAnalysisTaskFullpAJets::AlipAJetData::SetAreaCutFraction(Double_t areaFraction)
3185 fAreaCutFrac = areaFraction;
3188 void AliAnalysisTaskFullpAJets::AlipAJetData::SetJetR(Double_t jetR)
3193 void AliAnalysisTaskFullpAJets::AlipAJetData::SetNEF(Double_t nef)
3198 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalTrackPtBias(Bool_t chargedBias)
3200 fSignalTrackBias = chargedBias;
3204 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalEntries()
3209 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalJets()
3214 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalSignalJets()
3219 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSignalCut()
3224 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetLeadingIndex()
3229 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetLeadingPt()
3234 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSubLeadingIndex()
3236 return fPtSubLeadingIndex;
3239 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSubLeadingPt()
3241 return fPtSubLeading;
3244 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetJetIndex(Int_t At)
3246 return fJetsIndex[At];
3249 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSignalJetIndex(Int_t At)
3251 return fJetsSCIndex[At];
3254 Bool_t AliAnalysisTaskFullpAJets::AlipAJetData::GetIsJetInArray(Int_t At)
3256 return fIsJetInArray[At];
3259 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetJetMaxChargedPt(Int_t At)
3261 return fJetMaxChargedPt[At];
3264 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetNEF()
3269 // AlipAJetHistos Class Member Defs
3271 AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos() :
3283 /* fhBSPtCenLCT(0),*/
3285 fh80100BSPtSignal(0),
3292 fh020DeltaPtSignal(0),
3293 fh80100DeltaPtSignal(0),
3295 fhDeltaPtCenSignal(0),
3296 fh020DeltaPtNColl(0),
3297 fh80100DeltaPtNColl(0),
3299 fhDeltaPtCenNColl(0),
3301 fh80100BckgFlucPt(0),
3307 fhJetConstituentPt(0),
3314 fhNEFJetPtSignal(0),
3316 fhNEFEtaPhiSignal(0),
3319 fhNEFTotalMultSignal(0),
3320 fhNEFNeutralMult(0),
3321 fhNEFNeutralMultSignal(0),
3322 fhClusterShapeAll(0),
3323 fhClusterPtCellAll(0),
3324 fhNEFJetPtFCross(0),
3325 fhNEFZLeadingFCross(0),
3326 fhNEFTimeCellCount(0),
3327 fhNEFTimeDeltaTime(0),
3350 fLChargedTrackPtBins(0),
3351 fLChargedTrackPtLow(0),
3352 fLChargedTrackPtUp(0),
3357 fEMCalPhiMin(1.39626),
3358 fEMCalPhiMax(3.26377),
3363 // Dummy constructor ALWAYS needed for I/O.
3366 AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos(const char *name) :
3378 /* fhBSPtCenLCT(0),*/
3380 fh80100BSPtSignal(0),
3387 fh020DeltaPtSignal(0),
3388 fh80100DeltaPtSignal(0),
3390 fhDeltaPtCenSignal(0),
3391 fh020DeltaPtNColl(0),
3392 fh80100DeltaPtNColl(0),
3394 fhDeltaPtCenNColl(0),
3396 fh80100BckgFlucPt(0),
3402 fhJetConstituentPt(0),
3409 fhNEFJetPtSignal(0),
3411 fhNEFEtaPhiSignal(0),
3414 fhNEFTotalMultSignal(0),
3415 fhNEFNeutralMult(0),
3416 fhNEFNeutralMultSignal(0),
3417 fhClusterShapeAll(0),
3418 fhClusterPtCellAll(0),
3419 fhNEFJetPtFCross(0),
3420 fhNEFZLeadingFCross(0),
3421 fhNEFTimeCellCount(0),
3422 fhNEFTimeDeltaTime(0),
3445 fLChargedTrackPtBins(0),
3446 fLChargedTrackPtLow(0),
3447 fLChargedTrackPtUp(0),
3452 fEMCalPhiMin(1.39626),
3453 fEMCalPhiMax(3.26377),
3459 SetCentralityTag("V0A");
3460 SetCentralityRange(100,0,100);
3461 SetPtRange(250,-50,200);
3462 SetRhoPtRange(500,0,50);
3463 SetDeltaPtRange(200,-100,100);
3464 SetBackgroundFluctuationsPtRange(100,0,100);
3465 SetLeadingJetPtRange(200,0,200);
3466 SetLeadingChargedTrackPtRange(100,0,100);
3467 SetNEFRange(100,0,1);
3468 DoNEFQAPlots(kFALSE);
3473 AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos(const char *name, const char *centag, Bool_t doNEF) :
3485 /* fhBSPtCenLCT(0),*/
3487 fh80100BSPtSignal(0),
3494 fh020DeltaPtSignal(0),
3495 fh80100DeltaPtSignal(0),
3497 fhDeltaPtCenSignal(0),
3498 fh020DeltaPtNColl(0),
3499 fh80100DeltaPtNColl(0),
3501 fhDeltaPtCenNColl(0),
3503 fh80100BckgFlucPt(0),
3509 fhJetConstituentPt(0),
3516 fhNEFJetPtSignal(0),
3518 fhNEFEtaPhiSignal(0),
3521 fhNEFTotalMultSignal(0),
3522 fhNEFNeutralMult(0),
3523 fhNEFNeutralMultSignal(0),
3524 fhClusterShapeAll(0),
3525 fhClusterPtCellAll(0),
3526 fhNEFJetPtFCross(0),
3527 fhNEFZLeadingFCross(0),
3528 fhNEFTimeCellCount(0),
3529 fhNEFTimeDeltaTime(0),
3552 fLChargedTrackPtBins(0),
3553 fLChargedTrackPtLow(0),
3554 fLChargedTrackPtUp(0),
3559 fEMCalPhiMin(1.39626),
3560 fEMCalPhiMax(3.26377),
3566 SetCentralityTag(centag);
3567 SetCentralityRange(100,0,100);
3568 SetPtRange(250,-50,200);
3569 SetRhoPtRange(500,0,50);
3570 SetDeltaPtRange(200,-100,100);
3571 SetBackgroundFluctuationsPtRange(100,0,100);
3572 SetLeadingJetPtRange(200,0,200);
3573 SetLeadingChargedTrackPtRange(100,0,100);
3574 SetNEFRange(100,0,1);
3575 DoNEFQAPlots(doNEF);
3581 AliAnalysisTaskFullpAJets::AlipAJetHistos::~AlipAJetHistos()
3589 void AliAnalysisTaskFullpAJets::AlipAJetHistos::Init()
3591 // Initialize Private Variables
3592 fEMCalPhiMin=(80/(double)360)*2*TMath::Pi();
3593 fEMCalPhiMax=(187/(double)360)*2*TMath::Pi();
3597 fOutput = new TList();
3598 fOutput->SetOwner();
3599 fOutput->SetName(fName);
3601 TString RhoString="";
3602 TString PtString="";
3603 TString DeltaPtString="";
3604 TString BckgFlucPtString="";
3605 TString CentralityString;
3606 CentralityString = Form("Centrality (%s)",fCentralityTag);
3608 // Rho Spectral Plots
3609 RhoString = Form("%d-%d Centrality, Rho Spectrum",0,20);
3610 fh020Rho = new TH1D("fh020Rho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
3611 fh020Rho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
3612 fh020Rho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
3615 RhoString = Form("%d-%d Centrality, Rho Spectrum",80,100);
3616 fh80100Rho = new TH1D("fh80100Rho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
3617 fh80100Rho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
3618 fh80100Rho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
3619 fh80100Rho->Sumw2();
3621 RhoString = Form("%d-%d Centrality, Rho Spectrum",0,100);
3622 fhRho = new TH1D("fhRho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
3623 fhRho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
3624 fhRho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
3627 RhoString = "Rho Spectrum vs Centrality";
3628 fhRhoCen = new TH2D("fhRhoCen",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3629 fhRhoCen->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
3630 fhRhoCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
3631 fhRhoCen->GetZaxis()->SetTitle("1/N_{Events} dN/d#rho");
3634 // Background Subtracted Plots
3635 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",0,20);
3636 fh020BSPt = new TH1D("fh020BSPt",PtString,fPtBins,fPtLow,fPtUp);
3637 fh020BSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
3638 fh020BSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3641 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",80,100);
3642 fh80100BSPt = new TH1D("fh80100BSPt",PtString,fPtBins,fPtLow,fPtUp);
3643 fh80100BSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
3644 fh80100BSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3645 fh80100BSPt->Sumw2();
3647 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",0,100);
3648 fhBSPt = new TH1D("fhBSPt",PtString,fPtBins,fPtLow,fPtUp);
3649 fhBSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
3650 fhBSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3653 PtString = "Background Subtracted Jet Spectrum vs Centrality";
3654 fhBSPtCen = new TH2D("fhBSPtCen",PtString,fPtBins,fPtLow,fPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3655 fhBSPtCen->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
3656 fhBSPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
3657 fhBSPtCen->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3660 PtString = "Background Subtracted Jet Spectrum vs Centrality vs Leading Charge Track p_{T}";
3661 fhBSPtCenLCT = new TH3D("fhBSPtCenLCT",PtString,fPtBins,fPtLow,fPtUp,fCentralityBins,fCentralityLow,fCentralityUp,fLChargedTrackPtBins,fLChargedTrackPtLow,fLChargedTrackPtUp);
3662 fhBSPtCenLCT->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
3663 fhBSPtCenLCT->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
3664 fhBSPtCenLCT->GetZaxis()->SetTitle("Leading Charged Track p_{T} (GeV/c)");
3665 fhBSPtCenLCT->Sumw2();
3667 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",0,20);
3668 fh020BSPtSignal = new TH1D("fh020BSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
3669 fh020BSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
3670 fh020BSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3671 fh020BSPtSignal->Sumw2();
3673 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",80,100);
3674 fh80100BSPtSignal = new TH1D("fh80100BSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
3675 fh80100BSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
3676 fh80100BSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3677 fh80100BSPtSignal->Sumw2();
3679 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",0,100);
3680 fhBSPtSignal = new TH1D("fhBSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
3681 fhBSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
3682 fhBSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3683 fhBSPtSignal->Sumw2();
3685 PtString = "Background Subtracted Signal Jet Spectrum vs Centrality";
3686 fhBSPtCenSignal = new TH2D("fhBSPtCenSignal",PtString,fPtBins,fPtLow,fPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3687 fhBSPtCenSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
3688 fhBSPtCenSignal->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
3689 fhBSPtCenSignal->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3690 fhBSPtCenSignal->Sumw2();
3692 // Delta Pt Plots with RC at least 2R away from Leading Signal
3693 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
3694 fh020DeltaPt = new TH1D("fh020DeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3695 fh020DeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3696 fh020DeltaPt->GetYaxis()->SetTitle("Probability Density");
3697 fh020DeltaPt->Sumw2();
3699 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
3700 fh80100DeltaPt = new TH1D("fh80100DeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3701 fh80100DeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3702 fh80100DeltaPt->GetYaxis()->SetTitle("Probability Density");
3703 fh80100DeltaPt->Sumw2();
3705 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
3706 fhDeltaPt = new TH1D("fhDeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3707 fhDeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3708 fhDeltaPt->GetYaxis()->SetTitle("Probability Density");
3711 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
3712 fhDeltaPtCen = new TH2D("fhDeltaPtCen",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3713 fhDeltaPtCen->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3714 fhDeltaPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
3715 fhDeltaPtCen->GetZaxis()->SetTitle("Probability Density");
3716 fhDeltaPtCen->Sumw2();
3718 // Delta Pt Plots with no spatial restrictions on RC
3719 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
3720 fh020DeltaPtSignal = new TH1D("fh020DeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3721 fh020DeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3722 fh020DeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
3723 fh020DeltaPtSignal->Sumw2();
3725 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
3726 fh80100DeltaPtSignal = new TH1D("fh80100DeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3727 fh80100DeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3728 fh80100DeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
3729 fh80100DeltaPtSignal->Sumw2();
3731 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
3732 fhDeltaPtSignal = new TH1D("fhDeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3733 fhDeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3734 fhDeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
3735 fhDeltaPtSignal->Sumw2();
3737 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
3738 fhDeltaPtCenSignal = new TH2D("fhDeltaPtCenSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3739 fhDeltaPtCenSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3740 fhDeltaPtCenSignal->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
3741 fhDeltaPtCenSignal->GetZaxis()->SetTitle("Probability Density");
3742 fhDeltaPtCenSignal->Sumw2();
3744 // Delta Pt Plots with NColl restrictions on RC
3745 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
3746 fh020DeltaPtNColl = new TH1D("fh020DeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3747 fh020DeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3748 fh020DeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
3749 fh020DeltaPtNColl->Sumw2();
3751 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
3752 fh80100DeltaPtNColl = new TH1D("fh80100DeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3753 fh80100DeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3754 fh80100DeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
3755 fh80100DeltaPtNColl->Sumw2();
3757 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
3758 fhDeltaPtNColl = new TH1D("fhDeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3759 fhDeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3760 fhDeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
3761 fhDeltaPtNColl->Sumw2();
3763 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
3764 fhDeltaPtCenNColl = new TH2D("fhDeltaPtCenNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3765 fhDeltaPtCenNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3766 fhDeltaPtCenNColl->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
3767 fhDeltaPtCenNColl->GetZaxis()->SetTitle("Probability Density");
3768 fhDeltaPtCenNColl->Sumw2();
3770 // Background Fluctuations Pt Plots
3771 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",0,20);
3772 fh020BckgFlucPt = new TH1D("fh020BckgFlucPt",PtString,fPtBins,fPtLow,fPtUp);
3773 fh020BckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
3774 fh020BckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3775 fh020BckgFlucPt->Sumw2();
3777 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",80,100);
3778 fh80100BckgFlucPt = new TH1D("fh80100BckgFlucPt",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp);
3779 fh80100BckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
3780 fh80100BckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3781 fh80100BckgFlucPt->Sumw2();
3783 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",0,100);
3784 fhBckgFlucPt = new TH1D("fhBckgFlucPt",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp);
3785 fhBckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
3786 fhBckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3787 fhBckgFlucPt->Sumw2();
3789 BckgFlucPtString = "Background Fluctuation p_{T} Spectrum vs Centrality";
3790 fhBckgFlucPtCen = new TH2D("fhBckgFlucPtCen",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3791 fhBckgFlucPtCen->GetXaxis()->SetTitle("#p_{T} (GeV/c)");
3792 fhBckgFlucPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
3793 fhBckgFlucPtCen->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3794 fhBckgFlucPtCen->Sumw2();
3796 // Background Density vs Centrality Profile
3797 RhoString = "Background Density vs Centrality";
3798 fpRho = new TProfile("fpRho",RhoString,fCentralityBins,fCentralityLow,fCentralityUp);
3799 fpRho->GetXaxis()->SetTitle(Form("%s",CentralityString.Data()));
3800 fpRho->GetYaxis()->SetTitle("p_{T}/Area (GeV/c)");
3802 // Background Density vs Leading Jet Profile
3803 fpLJetRho = new TProfile("fpLJetRho","#rho vs Leading Jet p_{T}",fLJetPtBins,fLJetPtLow,fLJetPtUp);
3804 fpLJetRho->GetXaxis()->SetTitle("Leading Jet p_{T}");
3805 fpLJetRho->GetYaxis()->SetTitle("p_{T}/Area (GeV/c)");
3807 // Jet pT vs Constituent pT
3808 fhJetConstituentPt = new TH2D("fhJetConstituentPt","Jet constituents p_{T} distribution",fPtBins,fPtLow,fPtUp,10*fPtBins,fPtLow,fPtUp);
3809 fhJetConstituentPt->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
3810 fhJetConstituentPt->GetYaxis()->SetTitle("Constituent p_{T} (GeV/c)");
3811 fhJetConstituentPt->Sumw2();
3814 Int_t JetPtAreaBins=200;
3815 Double_t JetPtAreaLow=0.0;
3816 Double_t JetPtAreaUp=2.0;
3818 fhJetPtArea = new TH2D("fhJetPtArea","Jet Area Distribution",fPtBins,fPtLow,fPtUp,JetPtAreaBins,JetPtAreaLow,JetPtAreaUp);
3819 fhJetPtArea->GetXaxis()->SetTitle("p_{T} (GeV/c)");
3820 fhJetPtArea->GetYaxis()->SetTitle("A_{jet}");
3821 fhJetPtArea->GetZaxis()->SetTitle("1/N_{Events} dN/dA_{jet}dp_{T}");
3822 fhJetPtArea->Sumw2();
3824 // Neutral Energy Fraction Histograms & QA
3825 if (fDoNEFQAPlots==kTRUE)
3827 fNEFOutput = new TList();
3828 fNEFOutput->SetOwner();
3829 fNEFOutput->SetName("ListNEFQAPlots");
3832 fhNEF = new TH1D("fhNEF","Neutral Energy Fraction of All Jets",fNEFBins,fNEFLow,fNEFUp);
3833 fhNEF->GetXaxis()->SetTitle("NEF");
3834 fhNEF->GetYaxis()->SetTitle("1/N_{Events} dN/dNEF");
3837 fhNEFSignal = new TH1D("fhNEFSignal","Neutral Energy Fraction of Signal Jets",fNEFBins,fNEFLow,fNEFUp);
3838 fhNEFSignal->GetXaxis()->SetTitle("NEF");
3839 fhNEFSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dNEF");
3840 fhNEFSignal->Sumw2();
3842 fhNEFJetPt = new TH2D("fhNEFJetPt","Neutral Energy Fraction vs p_{T}^{jet}",fNEFBins,fNEFLow,fNEFUp,fPtBins,fPtLow,fPtUp);
3843 fhNEFJetPt->GetXaxis()->SetTitle("NEF");
3844 fhNEFJetPt->GetYaxis()->SetTitle("p_{T}^{jet} (GeV/c)");
3845 fhNEFJetPt->GetZaxis()->SetTitle("1/N_{Events} dN/dNEFdp_{T}");
3846 fhNEFJetPt->Sumw2();
3848 fhNEFJetPtSignal = new TH2D("fhNEFJetPtSignal","Neutral Energy Fraction vs p_{T}^{jet}",fNEFBins,fNEFLow,fNEFUp,fPtBins,fPtLow,fPtUp);
3849 fhNEFJetPtSignal->GetXaxis()->SetTitle("NEF");
3850 fhNEFJetPtSignal->GetYaxis()->SetTitle("p_{T}^{jet} (GeV/c)");
3851 fhNEFJetPtSignal->GetZaxis()->SetTitle("1/N_{Events} dN/dNEFdp_{T}");
3852 fhNEFJetPtSignal->Sumw2();
3854 // Eta-Phi Dependence
3855 fhNEFEtaPhi = new TH2D("fhNEFEtaPhi","Neutral Energy Fraction #eta-#varphi",TCBins, fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
3856 fhNEFEtaPhi->GetXaxis()->SetTitle("#eta");
3857 fhNEFEtaPhi->GetYaxis()->SetTitle("#varphi");
3858 fhNEFEtaPhi->GetZaxis()->SetTitle("1/N{Events} dN/d#etad#varphi");
3859 fhNEFEtaPhi->Sumw2();
3861 fhNEFEtaPhiSignal = new TH2D("fhNEFEtaPhiSignal","Neutral Energy Fraction #eta-#varphi of Signal Jets",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
3862 fhNEFEtaPhiSignal->GetXaxis()->SetTitle("#eta");
3863 fhNEFEtaPhiSignal->GetYaxis()->SetTitle("#varphi");
3864 fhNEFEtaPhiSignal->GetZaxis()->SetTitle("1/N{Events} dN/d#etad#varphi");
3865 fhNEFEtaPhiSignal->Sumw2();
3867 fhEtaPhiNEF = new TH3D("fhEtaPhiNEF","Neutral Energy Fraction #eta-#varphi",TCBins, fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax,fNEFBins,fNEFLow,fNEFUp);
3868 fhEtaPhiNEF->GetXaxis()->SetTitle("#eta");
3869 fhEtaPhiNEF->GetYaxis()->SetTitle("#varphi");
3870 fhEtaPhiNEF->GetZaxis()->SetTitle("NEF");
3871 fhEtaPhiNEF->Sumw2();
3873 // Multiplicity Dependence
3874 fhNEFTotalMult = new TH2D("fhNEFTotalMult","Total Multiplicity Distribution of Constituents",fNEFBins,fNEFLow,fNEFUp,TCBins,0,(Double_t)TCBins);
3875 fhNEFTotalMult->GetXaxis()->SetTitle("NEF");
3876 fhNEFTotalMult->GetYaxis()->SetTitle("Multiplicity");
3877 fhNEFTotalMult->GetZaxis()->SetTitle("1/N_{Events} dN/dNEFdM");
3878 fhNEFTotalMult->Sumw2();
3880 fhNEFTotalMultSignal = new TH2D("fhNEFTotalMultSignal","Total Multiplicity Distribution of Constituents of Signal Jets",fNEFBins,fNEFLow,fNEFUp,TCBins,0,(Double_t)TCBins);
3881 fhNEFTotalMultSignal->GetXaxis()->SetTitle("NEF");
3882 fhNEFTotalMultSignal->GetYaxis()->SetTitle("Multiplicity");
3883 fhNEFTotalMultSignal->GetZaxis()->SetTitle("1/N_{Events} dN/dNEFdM");
3884 fhNEFTotalMultSignal->Sumw2();
3886 fhNEFNeutralMult = new TH2D("fhNEFNeutralMult","Neutral Multiplicity Distribution of Constituents",fNEFBins,fNEFLow,fNEFUp,TCBins,0,(Double_t)TCBins);
3887 fhNEFNeutralMult->GetXaxis()->SetTitle("NEF");
3888 fhNEFNeutralMult->GetYaxis()->SetTitle("Multiplicity");
3889 fhNEFNeutralMult->GetZaxis()->SetTitle("1/N_{Events} dN/dNEFdM");
3890 fhNEFNeutralMult->Sumw2();
3892 fhNEFNeutralMultSignal = new TH2D("fhNEFNeutralMultSignal","Neutral Multiplicity Distribution of Constituents of Signal Jets",fNEFBins,fNEFLow,fNEFUp,TCBins,0,(Double_t)TCBins);
3893 fhNEFNeutralMultSignal->GetXaxis()->SetTitle("NEF");
3894 fhNEFNeutralMultSignal->GetYaxis()->SetTitle("Multiplicity");
3895 fhNEFNeutralMultSignal->GetZaxis()->SetTitle("1/N_{Events} dN/dNEFdM");
3896 fhNEFNeutralMultSignal->Sumw2();
3899 fhClusterShapeAll = new TH1D("fhClusterShapeAll","Cluster Shape of all CaloClustersCorr",10*TCBins,0,10*TCBins);
3900 fhClusterShapeAll->GetXaxis()->SetTitle("Cells");
3901 fhClusterShapeAll->GetYaxis()->SetTitle("1/N_{Events} dN/dCells");
3902 fhClusterShapeAll->Sumw2();
3904 fhClusterPtCellAll = new TH2D("fhClusterPtCellAll","Cluster p_{T} vs Cluster Shape of all CaloClustersCorr",fPtBins,fPtLow,fPtUp,10*TCBins,0,10*TCBins);
3905 fhClusterPtCellAll->GetXaxis()->SetTitle("p_{T} (GeV/c)");
3906 fhClusterPtCellAll->GetYaxis()->SetTitle("Cells");
3907 fhClusterPtCellAll->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}dCells");
3908 fhClusterPtCellAll->Sumw2();
3910 fhNEFJetPtFCross = new TH3D("fhNEFJetPtFCross","NEF vs p_{T}^{jet} vs F_{Cross}",fNEFBins,fNEFLow,fNEFUp,fPtBins,fPtLow,fPtUp,TCBins,0,1.0);
3911 fhNEFJetPtFCross->GetXaxis()->SetTitle("NEF");
3912 fhNEFJetPtFCross->GetYaxis()->SetTitle("p_{T}^{jet} (GeV/c)");
3913 fhNEFJetPtFCross->GetZaxis()->SetTitle("F_{Cross}");
3914 fhNEFJetPtFCross->Sumw2();
3916 fhNEFZLeadingFCross = new TH3D("fhNEFZLeadingFCross","NEF vs z_{Leading} vs F_{Cross}",fNEFBins,fNEFLow,fNEFUp,TCBins,0,1.0,TCBins,0,1.0);
3917 fhNEFZLeadingFCross->GetXaxis()->SetTitle("NEF");
3918 fhNEFZLeadingFCross->GetYaxis()->SetTitle("z_{Leading}");
3919 fhNEFZLeadingFCross->GetZaxis()->SetTitle("F_{Cross}");
3920 fhNEFZLeadingFCross->Sumw2();
3922 fhNEFTimeCellCount = new TH3D("fhNEFTimeCellCount","NEF vs t_{cell} vs Cell Count",fNEFBins,fNEFLow,fNEFUp,400,-2e-07,2e-07,TCBins,0,100);
3923 fhNEFTimeCellCount->GetXaxis()->SetTitle("NEF");
3924 fhNEFTimeCellCount->GetYaxis()->SetTitle("t_{cell} (s)");
3925 fhNEFTimeCellCount->GetZaxis()->SetTitle("Cell Count");
3926 fhNEFTimeCellCount->Sumw2();
3928 fhNEFTimeDeltaTime = new TH3D("fhNEFTimeDeltaTime","NEF vs t_{cell} vs #Deltat",fNEFBins,fNEFLow,fNEFUp,400,-2e-07,2e-06,TCBins,0,1e-07);
3929 fhNEFTimeDeltaTime->GetXaxis()->SetTitle("NEF");
3930 fhNEFTimeDeltaTime->GetYaxis()->SetTitle("t_{cell} (s)");
3931 fhNEFTimeDeltaTime->GetZaxis()->SetTitle("#Deltat");
3932 fhNEFTimeDeltaTime->Sumw2();
3934 fNEFOutput->Add(fhNEF);
3935 fNEFOutput->Add(fhNEFSignal);
3936 fNEFOutput->Add(fhNEFJetPt);
3937 fNEFOutput->Add(fhNEFJetPtSignal);
3938 fNEFOutput->Add(fhNEFEtaPhi);
3939 fNEFOutput->Add(fhNEFEtaPhiSignal);
3940 fNEFOutput->Add(fhEtaPhiNEF);
3941 fNEFOutput->Add(fhNEFTotalMult);
3942 fNEFOutput->Add(fhNEFTotalMultSignal);
3943 fNEFOutput->Add(fhNEFNeutralMult);
3944 fNEFOutput->Add(fhNEFNeutralMultSignal);
3945 fNEFOutput->Add(fhClusterShapeAll);
3946 fNEFOutput->Add(fhClusterPtCellAll);
3947 fNEFOutput->Add(fhNEFJetPtFCross);
3948 fNEFOutput->Add(fhNEFZLeadingFCross);
3949 fNEFOutput->Add(fhNEFTimeCellCount);
3950 fNEFOutput->Add(fhNEFTimeDeltaTime);
3951 fOutput->Add(fNEFOutput);
3954 // Add Histos & Profiles to List
3955 fOutput->Add(fh020Rho);
3956 fOutput->Add(fh80100Rho);
3957 fOutput->Add(fhRho);
3958 fOutput->Add(fhRhoCen);
3959 fOutput->Add(fh020BSPt);
3960 fOutput->Add(fh80100BSPt);
3961 fOutput->Add(fhBSPt);
3962 fOutput->Add(fhBSPtCen);
3963 //fOutput->Add(fhBSPtCenLCT);
3964 fOutput->Add(fh020BSPtSignal);
3965 fOutput->Add(fh80100BSPtSignal);
3966 fOutput->Add(fhBSPtSignal);
3967 fOutput->Add(fhBSPtCenSignal);
3968 fOutput->Add(fh020DeltaPt);
3969 fOutput->Add(fh80100DeltaPt);
3970 fOutput->Add(fhDeltaPt);
3971 fOutput->Add(fhDeltaPtCen);
3972 fOutput->Add(fh020DeltaPtSignal);
3973 fOutput->Add(fh80100DeltaPtSignal);
3974 fOutput->Add(fhDeltaPtSignal);
3975 fOutput->Add(fhDeltaPtCenSignal);
3976 fOutput->Add(fh020DeltaPtNColl);
3977 fOutput->Add(fh80100DeltaPtNColl);
3978 fOutput->Add(fhDeltaPtNColl);
3979 fOutput->Add(fhDeltaPtCenNColl);
3980 fOutput->Add(fh020BckgFlucPt);
3981 fOutput->Add(fh80100BckgFlucPt);
3982 fOutput->Add(fhBckgFlucPt);
3983 fOutput->Add(fhBckgFlucPtCen);
3984 fOutput->Add(fpRho);
3985 fOutput->Add(fpLJetRho);
3986 fOutput->Add(fhJetConstituentPt);
3987 fOutput->Add(fhJetPtArea);
3990 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetName(const char *name)
3995 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetCentralityTag(const char *name)
3997 fCentralityTag = name;
4000 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetCentralityRange(Int_t bins, Double_t low, Double_t up)
4002 fCentralityBins=bins;
4007 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetPtRange(Int_t bins, Double_t low, Double_t up)
4014 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetRhoPtRange(Int_t bins, Double_t low, Double_t up)
4021 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetDeltaPtRange(Int_t bins, Double_t low, Double_t up)
4028 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetBackgroundFluctuationsPtRange(Int_t bins, Double_t low, Double_t up)
4030 fBckgFlucPtBins=bins;
4035 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetLeadingJetPtRange(Int_t bins, Double_t low, Double_t up)
4042 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetLeadingChargedTrackPtRange(Int_t bins, Double_t low, Double_t up)
4044 fLChargedTrackPtBins=bins;
4045 fLChargedTrackPtLow=low;
4046 fLChargedTrackPtUp=up;
4049 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetNEFRange(Int_t bins, Double_t low, Double_t up)
4056 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillRho(Double_t eventCentrality, Double_t rho)
4061 fhRhoCen->Fill(rho,eventCentrality);
4062 fpRho->Fill(eventCentrality,rho);
4064 if (eventCentrality<=20)
4066 fh020Rho->Fill(rho);
4068 else if (eventCentrality>=80)
4070 fh80100Rho->Fill(rho);
4074 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillBSJS(Double_t eventCentrality, Double_t rho, Double_t signalCut, TClonesArray *jetList, Int_t *indexJetList, Int_t nIndexJetList)
4077 Double_t tempPt=0.0;
4078 Double_t tempChargedHighPt=0.0;
4080 for (i=0;i<nIndexJetList;i++)
4082 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
4083 tempPt=myJet->Pt()-rho*myJet->Area();
4084 tempChargedHighPt = myJet->MaxTrackPt();
4086 fhBSPt->Fill(tempPt);
4087 fhBSPtCen->Fill(tempPt,eventCentrality);
4088 //fhBSPtCenLCT->Fill(tempPt,eventCentrality,tempChargedHighPt);
4089 if (eventCentrality<=20)
4091 fh020BSPt->Fill(tempPt);
4093 else if (eventCentrality>=80)
4095 fh80100BSPt->Fill(tempPt);
4097 if (tempChargedHighPt>=signalCut)
4099 fhBSPtSignal->Fill(tempPt);
4100 fhBSPtCenSignal->Fill(tempPt,eventCentrality);
4101 if (eventCentrality<=20)
4103 fh020BSPtSignal->Fill(tempPt);
4105 else if (eventCentrality>=80)
4107 fh80100BSPtSignal->Fill(tempPt);
4111 tempChargedHighPt=0.0;
4115 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPt(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4118 Double_t tempPt=0.0;
4122 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4123 fhDeltaPt->Fill(tempPt);
4124 fhDeltaPtCen->Fill(tempPt,eventCentrality);
4125 if (eventCentrality<=20)
4127 fh020DeltaPt->Fill(tempPt);
4129 else if (eventCentrality>=80)
4131 fh80100DeltaPt->Fill(tempPt);
4137 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPtSignal(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4140 Double_t tempPt=0.0;
4144 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4145 fhDeltaPtSignal->Fill(tempPt);
4146 fhDeltaPtCenSignal->Fill(tempPt,eventCentrality);
4147 if (eventCentrality<=20)
4149 fh020DeltaPtSignal->Fill(tempPt);
4151 else if (eventCentrality>=80)
4153 fh80100DeltaPtSignal->Fill(tempPt);
4159 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPtNColl(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4162 Double_t tempPt=0.0;
4166 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4167 fhDeltaPtNColl->Fill(tempPt);
4168 fhDeltaPtCenNColl->Fill(tempPt,eventCentrality);
4169 if (eventCentrality<=20)
4171 fh020DeltaPtNColl->Fill(tempPt);
4173 else if (eventCentrality>=80)
4175 fh80100DeltaPtNColl->Fill(tempPt);
4181 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillBackgroundFluctuations(Double_t eventCentrality, Double_t rho, Double_t jetRadius)
4183 Double_t tempPt=0.0;
4185 tempPt=rho*TMath::Power(jetRadius,2);
4186 fhBckgFlucPt->Fill(tempPt);
4187 fhBckgFlucPtCen->Fill(tempPt,eventCentrality);
4188 if (eventCentrality<=20)
4190 fh020BckgFlucPt->Fill(tempPt);
4192 else if (eventCentrality>=80)
4194 fh80100BckgFlucPt->Fill(tempPt);
4198 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillLeadingJetPtRho(Double_t jetPt, Double_t rho)
4200 fpLJetRho->Fill(jetPt,rho);
4203 void AliAnalysisTaskFullpAJets::AlipAJetHistos::DoNEFQAPlots(Bool_t doNEFAna)
4205 fDoNEFQAPlots = doNEFAna;
4208 void 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)
4210 if (fDoNEFQAPlots==kFALSE)
4217 Double_t tempChargedHighPt=0.0;
4221 Int_t neutralMult=0;
4222 Int_t iSupMod = -1, absId = -1, ieta = -1, iphi = -1;
4223 Bool_t shared = kFALSE;
4225 Double_t zLeading=0.0;
4228 Double_t eCross=0.0;
4229 Double_t FCross=0.0;
4231 Double_t lowTime=9.99e99;
4232 Double_t upTime=-9.99e99;
4234 Double_t tempCellTime=0.0;
4237 for (i=0;i<nIndexJetList;i++)
4239 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
4240 tempChargedHighPt = myJet->MaxTrackPt();
4244 totalMult=myJet->GetNumberOfConstituents();
4245 neutralMult=myJet->GetNumberOfClusters();
4246 zLeading=myJet->MaxClusterPt()/myJet->Pt();
4249 fhNEFJetPt->Fill(nef,myJet->Pt());
4250 fhNEFEtaPhi->Fill(eta,phi);
4251 fhEtaPhiNEF->Fill(eta,phi,nef);
4252 fhNEFTotalMult->Fill(nef,totalMult);
4253 fhNEFNeutralMult->Fill(nef,neutralMult);
4255 for (j=0;j<neutralMult;j++)
4257 AliVCluster* vcluster = (AliVCluster*) orgClusterList->At(myJet->ClusterAt(j));
4258 recoUtils->GetMaxEnergyCell(geometry,cells,vcluster,absId,iSupMod,ieta,iphi,shared);
4259 eSeed = cells->GetCellAmplitude(absId);
4260 tCell = cells->GetCellTime(absId);
4261 eCross = recoUtils->GetECross(absId,tCell,cells,event->GetBunchCrossNumber());
4262 FCross = 1 - eCross/eSeed;
4264 fhNEFJetPtFCross->Fill(nef,myJet->Pt(),FCross);
4265 fhNEFZLeadingFCross->Fill(nef,zLeading,FCross);
4266 fhNEFTimeCellCount->Fill(nef,tCell,vcluster->GetNCells());
4268 // Obtain Delta t of Cluster
4271 for (k=0;k<vcluster->GetNCells();k++)
4273 tempCellID=vcluster->GetCellAbsId(k);
4274 tempCellTime=cells->GetCellTime(tempCellID);
4275 if (tempCellTime>upTime)
4277 upTime=tempCellTime;
4279 if (tempCellTime<lowTime)
4281 lowTime=tempCellTime;
4284 fhNEFTimeDeltaTime->Fill(nef,tCell,upTime-lowTime);
4292 iSupMod=-1,absId=-1,ieta=-1,iphi=-1;
4295 if (tempChargedHighPt>=signalCut)
4299 fhNEFSignal->Fill(nef);
4300 fhNEFJetPtSignal->Fill(nef,myJet->Pt());
4301 fhNEFEtaPhiSignal->Fill(eta,phi);
4302 fhNEFTotalMultSignal->Fill(nef,totalMult);
4303 fhNEFNeutralMultSignal->Fill(nef,neutralMult);
4307 tempChargedHighPt=0.0;
4315 // Now do Cluster QA
4316 // Finally, Cluster QA
4317 for (i=0;i<clusterList->GetEntries();i++)
4319 AliVCluster *vcluster = (AliVCluster*) clusterList->At(i);
4320 fhClusterShapeAll->Fill(vcluster->GetNCells());
4321 fhClusterPtCellAll->Fill(vcluster->E(),vcluster->GetNCells());
4325 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillMiscJetStats(TClonesArray *jetList, Int_t *indexJetList, Int_t nIndexJetList, TClonesArray *trackList, TClonesArray *clusterList)
4329 for (i=0;i<nIndexJetList;i++)
4331 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
4333 fhJetPtArea->Fill(myJet->Pt(),myJet->Area());
4334 for (j=0;j<myJet->GetNumberOfTracks();j++)
4336 AliVTrack *vtrack = (AliVTrack*) myJet->TrackAt(j,trackList);
4337 fhJetConstituentPt->Fill(myJet->Pt(),vtrack->Pt());
4339 for (j=0;j<myJet->GetNumberOfClusters();j++)
4341 AliVCluster *vcluster = (AliVCluster*) myJet->ClusterAt(j,clusterList);
4342 fhJetConstituentPt->Fill(myJet->Pt(),vcluster->E());
4347 TList* AliAnalysisTaskFullpAJets::AlipAJetHistos::GetOutputHistos()
4352 Double_t AliAnalysisTaskFullpAJets::AlipAJetHistos::GetRho()