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),
67 fhGlobalTrackEtaPhi(0),
68 fhGlobalTrackPhiPt(0),
69 fhGlobalTrackEtaPt(0),
70 fhComplementaryTrackEtaPhi(0),
71 fhComplementaryTrackPhiPt(0),
72 fhComplementaryTrackEtaPt(0),
77 fhJetConstituentPt(0),
81 fhGlobalTrackEtaPhiPt(0),
82 fhComplementaryTrackEtaPhiPt(0),
90 fpJetAbsEtaProfile(0),
91 fpChargedJetRProfile(0),
95 fpClusterPtProfile(0),
97 fpChargedJetEDProfile(0),
115 fRhoChargedkTScale(0),
117 fRhoChargedCMSScale(0),
127 fEMCalPartJetUnbiased(0),
139 fEMCalPhiMin(1.39626),
140 fEMCalPhiMax(3.26377),
141 fEMCalPhiTotal(1.86750),
148 fTPCPhiTotal(6.28319),
154 fParticlePtUp(200.0),
155 fParticlePtBins(200),
158 fJetAreaCutFrac(0.6),
159 fJetAreaThreshold(0.30159),
165 fNEFSignalJetCut(0.9),
166 fCentralityTag("V0A"),
174 fEtaProfileLow(-0.7),
179 fEDProfilePtBins(100),
182 fEDProfileEtaBins(4),
183 fEDProfileEtaLow(-0.2),
184 fEDProfileEtaUp(0.2),
194 fEMCalJetThreshold(5),
206 fmyAKTChargedJets(0),
213 fEMCalRCBckgFlucSignal(0),
214 fTPCRCBckgFlucSignal(0),
215 fEMCalRCBckgFlucNColl(0),
216 fTPCRCBckgFlucNColl(0)
218 // Dummy constructor ALWAYS needed for I/O.
219 fpJetEtaProfile = new TProfile *[14];
220 fpJetAbsEtaProfile = new TProfile *[14];
221 fpChargedJetRProfile = new TProfile *[8];
222 fpJetRProfile= new TProfile *[4];
223 fpChargedJetEDProfile= new TProfile3D *[10];
224 fpJetEDProfile= new TProfile3D *[10];
225 fVertex[0]=0.0,fVertex[1]=0.0,fVertex[2]=0.0;
228 //________________________________________________________________________
229 AliAnalysisTaskFullpAJets::AliAnalysisTaskFullpAJets(const char *name) :
230 AliAnalysisTaskSE(name),
239 fhComplementaryTrackPt(0),
240 fhComplementaryTrackEta(0),
241 fhComplementaryTrackPhi(0),
246 fhEMCalCellCounts(0),
253 fhGlobalTrackEtaPhi(0),
254 fhGlobalTrackPhiPt(0),
255 fhGlobalTrackEtaPt(0),
256 fhComplementaryTrackEtaPhi(0),
257 fhComplementaryTrackPhiPt(0),
258 fhComplementaryTrackEtaPt(0),
263 fhJetConstituentPt(0),
267 fhGlobalTrackEtaPhiPt(0),
268 fhComplementaryTrackEtaPhiPt(0),
269 fhClusterEtaPhiPt(0),
276 fpJetAbsEtaProfile(0),
277 fpChargedJetRProfile(0),
281 fpClusterPtProfile(0),
283 fpChargedJetEDProfile(0),
301 fRhoChargedkTScale(0),
303 fRhoChargedCMSScale(0),
313 fEMCalPartJetUnbiased(0),
325 fEMCalPhiMin(1.39626),
326 fEMCalPhiMax(3.26377),
327 fEMCalPhiTotal(1.86750),
334 fTPCPhiTotal(6.28319),
340 fParticlePtUp(200.0),
341 fParticlePtBins(2000),
344 fJetAreaCutFrac(0.6),
345 fJetAreaThreshold(0.30159),
351 fNEFSignalJetCut(0.9),
352 fCentralityTag("V0A"),
360 fEtaProfileLow(-0.7),
365 fEDProfilePtBins(100),
368 fEDProfileEtaBins(4),
369 fEDProfileEtaLow(-0.2),
370 fEDProfileEtaUp(0.2),
380 fEMCalJetThreshold(5),
392 fmyAKTChargedJets(0),
399 fEMCalRCBckgFlucSignal(0),
400 fTPCRCBckgFlucSignal(0),
401 fEMCalRCBckgFlucNColl(0),
402 fTPCRCBckgFlucNColl(0)
405 // Define input and output slots here (never in the dummy constructor)
406 // Input slot #0 works with a TChain - it is connected to the default input container
407 // Output slot #1 writes into a TH1 container
408 fpJetEtaProfile = new TProfile *[14];
409 fpJetAbsEtaProfile = new TProfile *[14];
410 fpChargedJetRProfile = new TProfile *[8];
411 fpJetRProfile = new TProfile *[4];
412 fpChargedJetEDProfile= new TProfile3D *[10];
413 fpJetEDProfile= new TProfile3D *[10];
414 fVertex[0]=0.0,fVertex[1]=0.0,fVertex[2]=0.0;
416 DefineOutput(1,TList::Class()); // for output list
419 //________________________________________________________________________
420 AliAnalysisTaskFullpAJets::~AliAnalysisTaskFullpAJets()
422 // Destructor. Clean-up the output list, but not the histograms that are put inside
423 // (the list is owner and will clean-up these histograms). Protect in PROOF case.
424 if (fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode())
430 //________________________________________________________________________
431 void AliAnalysisTaskFullpAJets::UserCreateOutputObjects()
434 // Called once (on the worker node)
435 fIsInitialized=kFALSE;
436 fOutput = new TList();
437 fOutput->SetOwner(); // IMPORTANT!
439 // Initialize Global Variables
444 // fRJET=4 -> fJetR=0.4 && fRJET=25 -> fJetR=0.25, but for writing files, should be 4 and 25 respectively
447 fJetR=(Double_t)fRJET/100.0;
451 fJetR=(Double_t)fRJET/10.0;
455 fEMCalPhiMin=(80/(double)360)*2*TMath::Pi();
456 fEMCalPhiMax=(187/(double)360)*2*TMath::Pi();
457 fEMCalPhiTotal= fEMCalPhiMax-fEMCalPhiMin;
460 fEMCalEtaTotal=fEMCalEtaMax-fEMCalEtaMin;
461 fEMCalArea=fEMCalPhiTotal*fEMCalEtaTotal;
463 fTPCPhiMin=(0/(double)360)*2*TMath::Pi();
464 fTPCPhiMax=(360/(double)360)*2*TMath::Pi();
465 fTPCPhiTotal= fTPCPhiMax-fTPCPhiMin;
468 fTPCEtaTotal=fTPCEtaMax-fTPCEtaMin;
469 fTPCArea=fTPCPhiTotal*fTPCEtaTotal;
473 fParticlePtBins=Int_t(fParticlePtUp-fParticlePtLow);
478 Int_t CentralityBinMult=10;
480 fJetAreaCutFrac =0.6; // Fudge factor for selecting on jets with threshold Area or higher
481 fJetAreaThreshold=fJetAreaCutFrac*TMath::Pi()*fJetR*fJetR;
482 fTPCJetThreshold=5.0; // Threshold required for an Anti-kT Charged jet to be considered a "true" jet in TPC
483 fEMCalJetThreshold=5.0; // Threshold required for an Anti-kT Charged+Neutral jet to be considered a "true" jet in EMCal
488 fEMCalRCBckgFluc = new Double_t[fnBckgClusters];
489 fTPCRCBckgFluc = new Double_t[fnBckgClusters];
490 fEMCalRCBckgFlucSignal = new Double_t[fnBckgClusters];
491 fTPCRCBckgFlucSignal = new Double_t[fnBckgClusters];
492 fEMCalRCBckgFlucNColl = new Double_t[fnBckgClusters];
493 fTPCRCBckgFlucNColl = new Double_t[fnBckgClusters];
494 for (Int_t i=0;i<fnBckgClusters;i++)
496 fEMCalRCBckgFluc[i]=0.0;
497 fTPCRCBckgFluc[i]=0.0;
498 fEMCalRCBckgFlucSignal[i]=0.0;
499 fTPCRCBckgFlucSignal[i]=0.0;
500 fEMCalRCBckgFlucNColl[i]=0.0;
501 fTPCRCBckgFlucNColl[i]=0.0;
504 fnEMCalCells=12288; // sMods 1-10 have 24x48 cells, sMods 11&12 have 8x48 cells...
507 Int_t JetPtBins = 200;
508 Double_t JetPtLow = 0.0;
509 Double_t JetPtUp = 200.0;
515 fhTrackPt = new TH1D("fhTrackPt","p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
516 fhTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
517 fhTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
520 fhTrackPhi = new TH1D("fhTrackPhi","#phi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
521 fhTrackPhi->GetXaxis()->SetTitle("#phi");
522 fhTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#phi");
525 fhTrackEta = new TH1D("fhTrackEta","#eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
526 fhTrackEta->GetXaxis()->SetTitle("#eta");
527 fhTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
530 fhTrackEtaPhi = new TH2D("fhTrackEtaPhi","#eta-#phi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
531 fhTrackEtaPhi->GetXaxis()->SetTitle("#eta");
532 fhTrackEtaPhi->GetYaxis()->SetTitle("#phi");
533 fhTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#phi");
534 fhTrackEtaPhi->Sumw2();
536 fhTrackPhiPt = new TH2D("fhTrackPhiPt","#phi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
537 fhTrackPhiPt->GetXaxis()->SetTitle("#phi");
538 fhTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
539 fhTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#phidp_{T}");
540 fhTrackPhiPt->Sumw2();
542 fhTrackEtaPt = new TH2D("fhTrackEtaPt","#eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
543 fhTrackEtaPt->GetXaxis()->SetTitle("#phi");
544 fhTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
545 fhTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
546 fhTrackEtaPt->Sumw2();
548 fhTrackEtaPhiPt = new TH3D("fhTrackEtaPhiPt","#eta-#phi-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
549 fhTrackEtaPhiPt->GetXaxis()->SetTitle("#eta");
550 fhTrackEtaPhiPt->GetYaxis()->SetTitle("#phi");
551 fhTrackEtaPhiPt->GetZaxis()->SetTitle("p_{T} (GeV/c)");
552 fhTrackEtaPhiPt->Sumw2();
555 fhGlobalTrackPt = new TH1D("fhGlobalTrackPt","Global p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
556 fhGlobalTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
557 fhGlobalTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
558 fhGlobalTrackPt->Sumw2();
560 fhGlobalTrackPhi = new TH1D("fhGlobalTrackPhi","Global #phi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
561 fhGlobalTrackPhi->GetXaxis()->SetTitle("#phi");
562 fhGlobalTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#phi");
563 fhGlobalTrackPhi->Sumw2();
565 fhGlobalTrackEta = new TH1D("fhGlobalTrackEta","Global #eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
566 fhGlobalTrackEta->GetXaxis()->SetTitle("#eta");
567 fhGlobalTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
568 fhGlobalTrackEta->Sumw2();
570 fhGlobalTrackEtaPhi = new TH2D("fhGlobalTrackEtaPhi","Global #eta-#phi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
571 fhGlobalTrackEtaPhi->GetXaxis()->SetTitle("#eta");
572 fhGlobalTrackEtaPhi->GetYaxis()->SetTitle("#phi");
573 fhGlobalTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#phi");
574 fhGlobalTrackEtaPhi->Sumw2();
576 fhGlobalTrackPhiPt = new TH2D("fhGlobalTrackPhiPt","Global #phi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
577 fhGlobalTrackPhiPt->GetXaxis()->SetTitle("#phi");
578 fhGlobalTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
579 fhGlobalTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#phidp_{T}");
580 fhGlobalTrackPhiPt->Sumw2();
582 fhGlobalTrackEtaPt = new TH2D("fhGlobalTrackEtaPt","Global #eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
583 fhGlobalTrackEtaPt->GetXaxis()->SetTitle("#phi");
584 fhGlobalTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
585 fhGlobalTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
586 fhGlobalTrackEtaPt->Sumw2();
588 fhGlobalTrackEtaPhiPt = new TH3D("fhGlobalTrackEtaPhiPt","Global #eta-#phi-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
589 fhGlobalTrackEtaPhiPt->GetXaxis()->SetTitle("#eta");
590 fhGlobalTrackEtaPhiPt->GetYaxis()->SetTitle("#phi");
591 fhGlobalTrackEtaPhiPt->GetZaxis()->SetTitle("p_{T} (GeV/c)");
592 fhGlobalTrackEtaPhiPt->Sumw2();
594 // Complementary Tracks
595 fhComplementaryTrackPt = new TH1D("fhComplementaryTrackPt","Complementary p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
596 fhComplementaryTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
597 fhComplementaryTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
598 fhComplementaryTrackPt->Sumw2();
600 fhComplementaryTrackPhi = new TH1D("fhComplementaryTrackPhi","Complementary #phi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
601 fhComplementaryTrackPhi->GetXaxis()->SetTitle("#phi");
602 fhComplementaryTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#phi");
603 fhComplementaryTrackPhi->Sumw2();
605 fhComplementaryTrackEta = new TH1D("fhComplementaryTrackEta","Complementary #eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
606 fhComplementaryTrackEta->GetXaxis()->SetTitle("#eta");
607 fhComplementaryTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
608 fhComplementaryTrackEta->Sumw2();
610 fhComplementaryTrackEtaPhi = new TH2D("fhComplementaryTrackEtaPhi","Complementary #eta-#phi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
611 fhComplementaryTrackEtaPhi->GetXaxis()->SetTitle("#eta");
612 fhComplementaryTrackEtaPhi->GetYaxis()->SetTitle("#phi");
613 fhComplementaryTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#phi");
614 fhComplementaryTrackEtaPhi->Sumw2();
616 fhComplementaryTrackPhiPt = new TH2D("fhComplementaryTrackPhiPt","Complementary #phi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
617 fhComplementaryTrackPhiPt->GetXaxis()->SetTitle("#phi");
618 fhComplementaryTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
619 fhComplementaryTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#phidp_{T}");
620 fhComplementaryTrackPhiPt->Sumw2();
622 fhComplementaryTrackEtaPt = new TH2D("fhComplementaryTrackEtaPt","Complementary #eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
623 fhComplementaryTrackEtaPt->GetXaxis()->SetTitle("#phi");
624 fhComplementaryTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
625 fhComplementaryTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
626 fhComplementaryTrackEtaPt->Sumw2();
628 fhComplementaryTrackEtaPhiPt = new TH3D("fhComplementaryTrackEtaPhiPt","Complementary #eta-#phi-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
629 fhComplementaryTrackEtaPhiPt->GetXaxis()->SetTitle("#eta");
630 fhComplementaryTrackEtaPhiPt->GetYaxis()->SetTitle("#phi");
631 fhComplementaryTrackEtaPhiPt->GetZaxis()->SetTitle("p_{T} (GeV/c)");
632 fhComplementaryTrackEtaPhiPt->Sumw2();
634 // Corrected Calo Clusters
635 fhClusterPt = new TH1D("fhClusterPt","p_{T} distribution of clusters in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
636 fhClusterPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
637 fhClusterPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
638 fhClusterPt->Sumw2();
640 fhClusterPhi = new TH1D("fhClusterPhi","#phi distribution of clusters in event",TCBins,fTPCPhiMin,fTPCPhiMax);
641 fhClusterPhi->GetXaxis()->SetTitle("#phi");
642 fhClusterPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#phi");
643 fhClusterPhi->Sumw2();
645 fhClusterEta = new TH1D("fhClusterEta","#eta distribution of clusters in event",TCBins,fTPCEtaMin,fTPCEtaMax);
646 fhClusterEta->GetXaxis()->SetTitle("#eta");
647 fhClusterEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
648 fhClusterEta->Sumw2();
650 fhClusterEtaPhi = new TH2D("fhClusterEtaPhi","#eta-#phi distribution of clusters in event",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
651 fhClusterEtaPhi->GetXaxis()->SetTitle("#eta");
652 fhClusterEtaPhi->GetYaxis()->SetTitle("#phi");
653 fhClusterEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#phi");
654 fhClusterEtaPhi->Sumw2();
656 fhClusterPhiPt = new TH2D("fhClusterPhiPt","#phi-p_{T} distribution of clusters in event",TCBins,fEMCalPhiMin,fEMCalPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
657 fhClusterPhiPt->GetXaxis()->SetTitle("#phi");
658 fhClusterPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
659 fhClusterPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#phidp_{T}");
660 fhClusterPhiPt->Sumw2();
662 fhClusterEtaPt = new TH2D("fhClusterEtaPt","#eta-p_{T} distribution of clusters in event",TCBins,fEMCalEtaMin,fEMCalEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
663 fhClusterEtaPt->GetXaxis()->SetTitle("#phi");
664 fhClusterEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
665 fhClusterEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
666 fhClusterEtaPt->Sumw2();
668 fhClusterEtaPhiPt = new TH3D("fhClusterEtaPhiPt","#eta-#phi-p_{T} distribution of clusters in event",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
669 fhClusterEtaPhiPt->GetXaxis()->SetTitle("#eta");
670 fhClusterEtaPhiPt->GetYaxis()->SetTitle("#phi");
671 fhClusterEtaPhiPt->GetZaxis()->SetTitle("p_{T} (GeV/c)");
672 fhClusterEtaPhiPt->Sumw2();
674 fhCentrality = new TH1D("fhCentrality","Event Centrality Distribution",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
675 fhCentrality->GetXaxis()->SetTitle(fCentralityTag);
676 fhCentrality->GetYaxis()->SetTitle("1/N_{Events}");
677 fhCentrality->Sumw2();
679 fhJetConstituentPt= new TH2D("fhJetConstituentPt","Jet constituents p_{T} distribution",JetPtBins, JetPtLow, JetPtUp,10*fParticlePtBins,fParticlePtLow, fParticlePtUp);
680 fhJetConstituentPt->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
681 fhJetConstituentPt->GetYaxis()->SetTitle("Constituent p_{T} (GeV/c)");
682 fhJetConstituentPt->Sumw2();
684 fhEMCalCellCounts = new TH1D("fhEMCalCellCounts","Distribtuion of cluster counts across the EMCal",fnEMCalCells,1,fnEMCalCells);
685 fhEMCalCellCounts->GetXaxis()->SetTitle("Absoulute Cell Id");
686 fhEMCalCellCounts->GetYaxis()->SetTitle("Counts per Event");
687 fhEMCalCellCounts->Sumw2();
690 Int_t RhoBins = 1000;
691 Double_t RhoPtMin = -50.0;
692 Double_t RhoPtMax = 50.0;
694 fhDeltaRhoN = new TH1D("fhDeltaRhoN","0-100% #delta#rho_{N} = #rho_{N}^{TPC+EMCal} - #rho_{N}^{TPC+Scale}",RhoBins,RhoPtMin,RhoPtMax);
695 fhDeltaRhoN->GetXaxis()->SetTitle("#delta#rho (GeV)");
696 fhDeltaRhoN->GetYaxis()->SetTitle("Counts");
697 fhDeltaRhoN->Sumw2();
699 fhDeltaRhoCMS = new TH1D("fhDeltaRhoCMS","0-100% #delta#rho_{CMS} = #rho_{CMS}^{TPC+EMCal} - #rho_{CMS}^{TPC+Scale}",RhoBins,RhoPtMin,RhoPtMax);
700 fhDeltaRhoCMS->GetXaxis()->SetTitle("#delta#rho (GeV)");
701 fhDeltaRhoCMS->GetYaxis()->SetTitle("Counts");
702 fhDeltaRhoCMS->Sumw2();
704 // Jet Area vs pT Distribution
705 Int_t JetPtAreaBins=200;
706 Double_t JetPtAreaLow=0.0;
707 Double_t JetPtAreaUp=2.0;
713 fhJetPtArea = new TH2D("fhJetPtArea","Jet Area Distribution",JetPtBins, JetPtLow,JetPtUp,JetPtAreaBins,JetPtAreaLow,JetPtAreaUp);
714 fhJetPtArea->GetXaxis()->SetTitle("p_{T} (GeV/c)");
715 fhJetPtArea->GetYaxis()->SetTitle("A_{jet}");
716 fhJetPtArea->GetZaxis()->SetTitle("1/N_{Events} dN/dA_{jet}dp_{T}");
717 fhJetPtArea->Sumw2();
719 fhRhoScale = new TH2D("fhRhoScale","Scaling Factor",SFBins,SFLow,SFUp,CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp);
720 fhRhoScale->GetXaxis()->SetTitle("Scale Factor");
721 fhRhoScale->GetYaxis()->SetTitle("Centrality");
722 fhRhoScale->GetZaxis()->SetTitle("Counts");
726 fpEMCalEventMult = new TProfile("fpEMCalEventMult","EMCal Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp);
727 fpEMCalEventMult->GetXaxis()->SetTitle(fCentralityTag);
728 fpEMCalEventMult->GetYaxis()->SetTitle("Multiplicity");
730 fpTPCEventMult = new TProfile("fpTPCEventMult","TPC Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp);
731 fpTPCEventMult->GetXaxis()->SetTitle(fCentralityTag);
732 fpTPCEventMult->GetYaxis()->SetTitle("Multiplicity");
734 fpRhoScale = new TProfile("fpRhoScale","Scaling Factor Profile vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp);
735 fpRhoScale->GetXaxis()->SetTitle(fCentralityTag);
736 fpRhoScale->GetYaxis()->SetTitle("Scale Factor");
738 // QA::2D Energy Density Profiles for Tracks and Clusters
739 fpTrackPtProfile = new TProfile2D("fpTrackPtProfile","2D Profile of track pT density throughout the TPC",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
740 fpTrackPtProfile->GetXaxis()->SetTitle("#eta");
741 fpTrackPtProfile->GetYaxis()->SetTitle("#phi");
742 fpTrackPtProfile->GetZaxis()->SetTitle("p_{T} density (GeV/Area)");
744 fpClusterPtProfile = new TProfile2D("fpClusterPtProfile","2D Profile of cluster pT density throughout the EMCal",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
745 fpClusterPtProfile->GetXaxis()->SetTitle("#eta");
746 fpClusterPtProfile->GetYaxis()->SetTitle("#phi");
747 fpClusterPtProfile->GetZaxis()->SetTitle("p_{T} density (GeV/Area)");
749 TString temp_name="";
750 TString title_name="";
756 for (Int_t i=0;i<14;i++)
758 temp_name=Form("fpJetEtaProfile%d",i);
759 title_name=Form("Jet Energy Density #eta Profile for ALL p_{T}, 0-20 Centrality, and eta=%g to %g",(i-7)/10.,(i-6)/10.);
761 fpJetEtaProfile[i]= new TProfile(temp_name,title_name,fEtaProfileBins,fEtaProfileLow,fEtaProfileUp);
762 fpJetEtaProfile[i]->GetXaxis()->SetTitle("#eta");
763 fpJetEtaProfile[i]->GetYaxis()->SetTitle("p_{T}/Area (GeV/c)");
764 fOutput->Add(fpJetEtaProfile[i]);
768 temp_name=Form("fpJetAbsEtaProfile%d",i);
769 title_name=Form("Jet Energy Density #Delta #eta Profile for ALL p_{T}, 0-20 Centrality, and eta=%g to %g",(i-7)/10.,(i-6)/10.);
771 fpJetAbsEtaProfile[i]= new TProfile(temp_name,title_name,fEtaProfileBins,0,2*fEtaProfileUp);
772 fpJetAbsEtaProfile[i]->GetXaxis()->SetTitle("#Delta#eta");
773 fpJetAbsEtaProfile[i]->GetYaxis()->SetTitle("p_{T}/Area (GeV/c)");
774 fOutput->Add(fpJetAbsEtaProfile[i]);
782 fEDProfilePtBins=100;
784 fEDProfilePtUp=100.0;
786 fEDProfileEtaLow=-0.2;
789 for (Int_t i=0;i<8;i++)
791 temp_name=Form("fpChargedJetRProfile%d",i);
792 title_name=Form("Charged Jet Energy Density Radius Profile for ALL p_{T}, 0-20 Centrality, and eta=%g to %g",(i-4)/10.,(i-3)/10.);
794 fpChargedJetRProfile[i]= new TProfile(temp_name,title_name,fEDProfileRBins,fEDProfileRLow,fEDProfileRUp);
795 fpChargedJetRProfile[i]->GetXaxis()->SetTitle("Radius");
796 fpChargedJetRProfile[i]->GetYaxis()->SetTitle("p_{T}/Area (GeV/c)");
797 fOutput->Add(fpChargedJetRProfile[i]);
802 for (Int_t i=0;i<4;i++)
804 temp_name=Form("fpJetRProfile%d",i);
805 title_name=Form("Jet Energy Density Radius Profile for ALL p_{T}, 0-20 Centrality, and eta=%g to %g",(i-2)/10.,(i-1)/10.);
807 fpJetRProfile[i]= new TProfile(temp_name,title_name,fEDProfileRBins,fEDProfileRLow,fEDProfileRUp);
808 fpJetRProfile[i]->GetXaxis()->SetTitle("Radius");
809 fpJetRProfile[i]->GetYaxis()->SetTitle("p_{T}/Area (GeV/c)");
810 fOutput->Add(fpJetRProfile[i]);
815 for (Int_t i=0;i<10;i++)
817 temp_name=Form("fpChargedJetEDProfile%d0",i);
818 title_name=Form("Charged Jet Energy Density Profile for %d0-%d0 Centrality",i,i+1);
820 fpChargedJetEDProfile[i]= new TProfile3D(temp_name,title_name,fEDProfilePtBins,fEDProfilePtLow,fEDProfilePtUp,fEDProfileEtaBins+4,fEDProfileEtaLow-0.2,fEDProfileEtaUp+0.2,fEDProfileRBins,fEDProfileRLow,fEDProfileRUp);
821 fpChargedJetEDProfile[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
822 fpChargedJetEDProfile[i]->GetYaxis()->SetTitle("Pseudorapidity");
823 fpChargedJetEDProfile[i]->GetZaxis()->SetTitle("Radius");
824 fOutput->Add(fpChargedJetEDProfile[i]);
828 temp_name=Form("fpJetEDProfile%d0",i);
829 title_name=Form("Jet Energy Density Profile for %d0-%d0 Centrality",i,i+1);
831 fpJetEDProfile[i]= new TProfile3D(temp_name,title_name,fEDProfilePtBins,fEDProfilePtLow,fEDProfilePtUp,fEDProfileEtaBins,fEDProfileEtaLow,fEDProfileEtaUp,fEDProfileRBins,fEDProfileRLow,fEDProfileRUp);
832 fpJetEDProfile[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
833 fpJetEDProfile[i]->GetYaxis()->SetTitle("Pseudorapidity");
834 fpJetEDProfile[i]->GetZaxis()->SetTitle("Radius");
835 fOutput->Add(fpJetEDProfile[i]);
840 fTPCRawJets = new AlipAJetHistos("TPCRawJets",fCentralityTag);
841 fEMCalRawJets = new AlipAJetHistos("EMCalRawJets",fCentralityTag);
843 fRhoFull0 = new AlipAJetHistos("RhoFull0",fCentralityTag);
844 fRhoFull1 = new AlipAJetHistos("RhoFull1",fCentralityTag);
845 fRhoFull2 = new AlipAJetHistos("RhoFull2",fCentralityTag);
846 fRhoFullN = new AlipAJetHistos("RhoFullN",fCentralityTag);
847 fRhoFullDijet = new AlipAJetHistos("RhoFullDijet",fCentralityTag);
848 fRhoFullkT = new AlipAJetHistos("RhoFullkT",fCentralityTag);
849 fRhoFullCMS = new AlipAJetHistos("RhoFullCMS",fCentralityTag);
851 fRhoCharged0 = new AlipAJetHistos("RhoCharged0",fCentralityTag);
852 fRhoCharged1 = new AlipAJetHistos("RhoCharged1",fCentralityTag);
853 fRhoCharged2 = new AlipAJetHistos("RhoCharged2",fCentralityTag);
854 fRhoChargedN = new AlipAJetHistos("RhoChargedN",fCentralityTag);
855 fRhoChargedkT = new AlipAJetHistos("RhoChargedkT",fCentralityTag);
856 fRhoChargedScale = new AlipAJetHistos("RhoChargedScale",fCentralityTag);
857 fRhoChargedkTScale = new AlipAJetHistos("RhoChargedkTScale",fCentralityTag);
858 fRhoChargedCMS = new AlipAJetHistos("RhoChargedCMS",fCentralityTag);
859 fRhoChargedCMSScale = new AlipAJetHistos("RhoChargedCMSScale",fCentralityTag,kTRUE);
861 fOutput->Add(fhTrackPt);
862 fOutput->Add(fhTrackEta);
863 fOutput->Add(fhTrackPhi);
864 fOutput->Add(fhTrackEtaPhi);
865 fOutput->Add(fhTrackPhiPt);
866 fOutput->Add(fhTrackEtaPt);
867 fOutput->Add(fhTrackEtaPhiPt);
868 fOutput->Add(fhGlobalTrackPt);
869 fOutput->Add(fhGlobalTrackEta);
870 fOutput->Add(fhGlobalTrackPhi);
871 fOutput->Add(fhGlobalTrackEtaPhi);
872 fOutput->Add(fhGlobalTrackPhiPt);
873 fOutput->Add(fhGlobalTrackEtaPt);
874 fOutput->Add(fhGlobalTrackEtaPhiPt);
875 fOutput->Add(fhComplementaryTrackPt);
876 fOutput->Add(fhComplementaryTrackEta);
877 fOutput->Add(fhComplementaryTrackPhi);
878 fOutput->Add(fhComplementaryTrackEtaPhi);
879 fOutput->Add(fhComplementaryTrackPhiPt);
880 fOutput->Add(fhComplementaryTrackEtaPt);
881 fOutput->Add(fhComplementaryTrackEtaPhiPt);
882 fOutput->Add(fhClusterPt);
883 fOutput->Add(fhClusterEta);
884 fOutput->Add(fhClusterPhi);
885 fOutput->Add(fhClusterEtaPhi);
886 fOutput->Add(fhClusterPhiPt);
887 fOutput->Add(fhClusterEtaPt);
888 fOutput->Add(fhClusterEtaPhiPt);
889 fOutput->Add(fhCentrality);
890 fOutput->Add(fhEMCalCellCounts);
891 fOutput->Add(fhDeltaRhoN);
892 fOutput->Add(fhDeltaRhoCMS);
893 fOutput->Add(fhJetPtArea);
894 fOutput->Add(fhJetConstituentPt);
895 fOutput->Add(fhRhoScale);
897 fOutput->Add(fpTPCEventMult);
898 fOutput->Add(fpEMCalEventMult);
899 fOutput->Add(fpRhoScale);
901 fOutput->Add(fpTrackPtProfile);
902 fOutput->Add(fpClusterPtProfile);
904 fOutput->Add(fTPCRawJets->GetOutputHistos());
905 fOutput->Add(fEMCalRawJets->GetOutputHistos());
907 fOutput->Add(fRhoFull0->GetOutputHistos());
908 fOutput->Add(fRhoFull1->GetOutputHistos());
909 fOutput->Add(fRhoFull2->GetOutputHistos());
910 fOutput->Add(fRhoFullN->GetOutputHistos());
911 fOutput->Add(fRhoFullDijet->GetOutputHistos());
912 fOutput->Add(fRhoFullkT->GetOutputHistos());
913 fOutput->Add(fRhoFullCMS->GetOutputHistos());
914 fOutput->Add(fRhoCharged0->GetOutputHistos());
915 fOutput->Add(fRhoCharged1->GetOutputHistos());
916 fOutput->Add(fRhoCharged2->GetOutputHistos());
917 fOutput->Add(fRhoChargedN->GetOutputHistos());
918 fOutput->Add(fRhoChargedkT->GetOutputHistos());
919 fOutput->Add(fRhoChargedScale->GetOutputHistos());
920 fOutput->Add(fRhoChargedkTScale->GetOutputHistos());
921 fOutput->Add(fRhoChargedCMS->GetOutputHistos());
922 fOutput->Add(fRhoChargedCMSScale->GetOutputHistos());
924 // Post data for ALL output slots >0 here,
925 // To get at least an empty histogram
926 // 1 is the outputnumber of a certain weg of task 1
927 PostData(1, fOutput);
930 void AliAnalysisTaskFullpAJets::UserExecOnce()
932 // Get the event tracks
933 fOrgTracks = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fTrackName));
935 // Get the event caloclusters
936 fOrgClusters = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fClusName));
939 fmyKTChargedJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fkTChargedName));
940 fmyAKTChargedJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fAkTChargedName));
943 fmyKTFullJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fkTFullName));
944 fmyAKTFullJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fAkTFullName));
946 fIsInitialized=kTRUE;
948 //________________________________________________________________________
949 void AliAnalysisTaskFullpAJets::UserExec(Option_t *)
951 if (fIsInitialized==kFALSE)
956 // Get pointer to reconstructed event
957 fEvent = InputEvent();
960 AliError("Pointer == 0, this can not happen!");
964 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(fEvent);
965 AliAODEvent* aod = dynamic_cast<AliAODEvent*>(fEvent);
967 fRecoUtil = new AliEMCALRecoUtils();
968 fEMCALGeometry = AliEMCALGeometry::GetInstance();
972 fEventCentrality=esd->GetCentrality()->GetCentralityPercentile(fCentralityTag);
974 if (esd->GetPrimaryVertex()->GetNContributors()<1 || (TMath::Abs(esd->GetPrimaryVertex()->GetZ())>fVertexWindow))
978 if (TMath::Sqrt(TMath::Power(esd->GetPrimaryVertex()->GetX(),2)+TMath::Power(esd->GetPrimaryVertex()->GetY(),2))>fVertexMaxR)
983 esd->GetPrimaryVertex()->GetXYZ(fVertex);
984 fCells = (AliVCaloCells*) esd->GetEMCALCells();
985 fnCaloClusters = esd->GetNumberOfCaloClusters();
989 fEventCentrality=aod->GetCentrality()->GetCentralityPercentile(fCentralityTag);
991 if (aod->GetPrimaryVertex()->GetNContributors()<1 || (TMath::Abs(aod->GetPrimaryVertex()->GetZ())>fVertexWindow))
995 if (TMath::Sqrt(TMath::Power(aod->GetPrimaryVertex()->GetX(),2)+TMath::Power(aod->GetPrimaryVertex()->GetY(),2))>fVertexMaxR)
1000 aod->GetPrimaryVertex()->GetXYZ(fVertex);
1001 fCells = (AliVCaloCells*) aod->GetEMCALCells();
1002 fnCaloClusters = aod->GetNumberOfCaloClusters();
1006 AliError("Cannot get AOD/ESD event. Rejecting Event");
1010 // Make sure Centrality isn't exactly 100% (to avoid bin filling errors in profile plots. Make it 99.99
1011 if (fEventCentrality>99.99)
1013 fEventCentrality=99.99;
1015 fhCentrality->Fill(fEventCentrality);
1018 // Reject any event that doesn't have any tracks, i.e. TPC is off
1021 AliWarning("No PicoTracks, Rejecting Event");
1028 AliInfo("No Corrected CaloClusters, using only charged jets");
1032 GenerateTPCRandomConesPt();
1035 EstimateChargedRho0();
1036 EstimateChargedRho1();
1037 EstimateChargedRho2();
1038 EstimateChargedRhoN();
1039 EstimateChargedRhokT();
1040 EstimateChargedRhoCMS();
1042 JetPtChargedProfile();
1043 DeleteJetData(kFALSE);
1047 PostData(1, fOutput);
1058 GenerateTPCRandomConesPt();
1059 GenerateEMCalRandomConesPt();
1062 EstimateChargedRho0();
1063 EstimateChargedRho1();
1064 EstimateChargedRho2();
1065 EstimateChargedRhoN();
1066 EstimateChargedRhokT();
1067 EstimateChargedRhoCMS();
1073 EstimateFullRhokT();
1074 EstimateFullRhoCMS();
1076 EstimateChargedRhoScale();
1077 EstimateChargedRhokTScale();
1078 EstimateChargedRhoCMSScale();
1081 if (IsDiJetEvent()==kTRUE)
1083 EstimateFullRhoDijet();
1086 // Compute Jet Energy Density Profile
1087 JetPtChargedProfile();
1091 // Compute differences between TPC+EMCal Rho to TPC&Scaled Rho
1092 if (fRhoChargedScale->GetRho()>0 && fRhoFullN->GetRho()>0)
1094 fhDeltaRhoN->Fill(fRhoFullN->GetRho()-fRhoChargedScale->GetRho());
1096 if (fRhoChargedCMSScale->GetRho()>0 && fRhoFullCMS->GetRho()>0)
1098 fhDeltaRhoCMS->Fill(fRhoFullCMS->GetRho()-fRhoChargedCMSScale->GetRho());
1101 // Delete Dynamic Arrays
1102 DeleteJetData(kTRUE);
1106 PostData(1, fOutput);
1109 //________________________________________________________________________
1110 void AliAnalysisTaskFullpAJets::Terminate(Option_t *) //specify what you want to have done
1112 // Called once at the end of the query. Done nothing here.
1115 /////////////////////////////////////////////////////////////////////////////////////////
1116 ///////////////// User Defined Sub_Routines ///////////////////////////////////////
1117 /////////////////////////////////////////////////////////////////////////////////////////
1119 void AliAnalysisTaskFullpAJets::TrackCuts()
1121 // Fill a TObjArray with the tracks from a TClonesArray which grabs the picotracks.
1124 fmyTracks = new TObjArray();
1125 for (i=0;i<fOrgTracks->GetEntries();i++)
1127 AliVTrack* vtrack = (AliVTrack*) fOrgTracks->At(i);
1128 if (vtrack->Pt()>=fTrackMinPt)
1130 fmyTracks->Add(vtrack);
1133 fnTracks = fmyTracks->GetEntries();
1136 void AliAnalysisTaskFullpAJets::ClusterCuts()
1138 // Fill a TObjArray with the clusters from a TClonesArray which grabs the caloclusterscorr.
1141 fmyClusters = new TObjArray();
1144 for (i=0;i<fOrgClusters->GetEntries();i++)
1146 AliVCluster* vcluster = (AliVCluster*) fOrgClusters->At(i);
1147 TLorentzVector *cluster_vec = new TLorentzVector;
1148 vcluster->GetMomentum(*cluster_vec,fVertex);
1150 if (cluster_vec->Pt()>=fClusterMinPt && vcluster->IsEMCAL()==kTRUE)
1152 fmyClusters->Add(vcluster);
1158 fnClusters = fmyClusters->GetEntries();
1161 void AliAnalysisTaskFullpAJets::TrackHisto()
1163 // Fill track histograms: Phi,Eta,Pt
1166 TH2D *hdummypT= new TH2D("hdummypT","",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax); //!
1168 for (i=0;i<fnTracks;i++)
1170 AliPicoTrack* vtrack =(AliPicoTrack*) fmyTracks->At(i);
1171 fhTrackPt->Fill(vtrack->Pt());
1172 fhTrackEta->Fill(vtrack->Eta());
1173 fhTrackPhi->Fill(vtrack->Phi());
1174 fhTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
1175 fhTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
1176 fhTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
1177 fhTrackEtaPhiPt->Fill(vtrack->Eta(),vtrack->Phi(),vtrack->Pt());
1179 // Fill Associated Track Distributions for AOD QA Productions
1181 if (vtrack->GetTrackType()==0)
1183 fhGlobalTrackPt->Fill(vtrack->Pt());
1184 fhGlobalTrackEta->Fill(vtrack->Eta());
1185 fhGlobalTrackPhi->Fill(vtrack->Phi());
1186 fhGlobalTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
1187 fhGlobalTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
1188 fhGlobalTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
1189 fhGlobalTrackEtaPhiPt->Fill(vtrack->Eta(),vtrack->Phi(),vtrack->Pt());
1191 // Complementary Tracks
1192 else if (vtrack->GetTrackType()==1)
1194 fhComplementaryTrackPt->Fill(vtrack->Pt());
1195 fhComplementaryTrackEta->Fill(vtrack->Eta());
1196 fhComplementaryTrackPhi->Fill(vtrack->Phi());
1197 fhComplementaryTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
1198 fhComplementaryTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
1199 fhComplementaryTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
1200 fhComplementaryTrackEtaPhiPt->Fill(vtrack->Eta(),vtrack->Phi(),vtrack->Pt());
1203 hdummypT->Fill(vtrack->Eta(),vtrack->Phi(),vtrack->Pt());
1205 for (i=1;i<=TCBins;i++)
1207 for (j=1;j<=TCBins;j++)
1209 fpTrackPtProfile->Fill(hdummypT->GetXaxis()->GetBinCenter(i),hdummypT->GetYaxis()->GetBinCenter(j),fTPCArea*TMath::Power(TCBins,-2)*hdummypT->GetBinContent(i,j));
1215 void AliAnalysisTaskFullpAJets::ClusterHisto()
1217 // Fill cluster histograms: Phi,Eta,Pt
1220 TH2D *hdummypT= new TH2D("hdummypT","",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax); //!
1223 for (i=0;i<fnClusters;i++)
1225 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
1226 TLorentzVector *cluster_vec = new TLorentzVector;
1227 vcluster->GetMomentum(*cluster_vec,fVertex);
1229 fhClusterPt->Fill(cluster_vec->Pt());
1230 fhClusterEta->Fill(cluster_vec->Eta());
1231 fhClusterPhi->Fill(cluster_vec->Phi());
1232 fhClusterEtaPhi->Fill(cluster_vec->Eta(),cluster_vec->Phi());
1233 fhClusterPhiPt->Fill(cluster_vec->Phi(),cluster_vec->Pt());
1234 fhClusterEtaPt->Fill(cluster_vec->Eta(),cluster_vec->Pt());
1235 fhClusterEtaPhiPt->Fill(cluster_vec->Eta(),cluster_vec->Phi(),cluster_vec->Pt());
1236 hdummypT->Fill(cluster_vec->Eta(),cluster_vec->Phi(),cluster_vec->Pt());
1237 fEMCALGeometry->GetAbsCellIdFromEtaPhi(cluster_vec->Eta(),cluster_vec->Phi(),myCellID);
1238 fhEMCalCellCounts->Fill(myCellID);
1241 for (i=1;i<=TCBins;i++)
1243 for (j=1;j<=TCBins;j++)
1245 fpClusterPtProfile->Fill(hdummypT->GetXaxis()->GetBinCenter(i),hdummypT->GetYaxis()->GetBinCenter(j),fEMCalArea*TMath::Power(TCBins,-2)*hdummypT->GetBinContent(i,j));
1251 void AliAnalysisTaskFullpAJets::InitChargedJets()
1253 // Preliminary Jet Placement and Selection Cuts
1256 fnAKTChargedJets = fmyAKTChargedJets->GetEntries();
1257 fnKTChargedJets = fmyKTChargedJets->GetEntries();
1259 fTPCJet = new AlipAJetData("fTPCJet",kFALSE,fnAKTChargedJets);
1260 fTPCFullJet = new AlipAJetData("fTPCFullJet",kFALSE,fnAKTChargedJets);
1261 fTPCOnlyJet = new AlipAJetData("fTPCOnlyJet",kFALSE,fnAKTChargedJets);
1262 fTPCJetUnbiased = new AlipAJetData("fTPCJetUnbiased",kFALSE,fnAKTChargedJets);
1264 fTPCJet->SetSignalCut(fTPCJetThreshold);
1265 fTPCJet->SetAreaCutFraction(fJetAreaCutFrac);
1266 fTPCJet->SetJetR(fJetR);
1267 fTPCFullJet->SetSignalCut(fTPCJetThreshold);
1268 fTPCFullJet->SetAreaCutFraction(fJetAreaCutFrac);
1269 fTPCFullJet->SetJetR(fJetR);
1270 fTPCOnlyJet->SetSignalCut(fTPCJetThreshold);
1271 fTPCOnlyJet->SetAreaCutFraction(fJetAreaCutFrac);
1272 fTPCOnlyJet->SetJetR(fJetR);
1273 fTPCJetUnbiased->SetSignalCut(fTPCJetThreshold);
1274 fTPCJetUnbiased->SetAreaCutFraction(fJetAreaCutFrac);
1275 fTPCJetUnbiased->SetJetR(fJetR);
1276 fTPCJetUnbiased->SetSignalTrackPtBias(kFALSE);
1278 // Initialize Jet Data
1279 for (i=0;i<fnAKTChargedJets;i++)
1281 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(i);
1283 fTPCJet->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kFALSE),i);
1284 fTPCFullJet->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kTRUE),i);
1285 fTPCOnlyJet->SetIsJetInArray(IsInTPCFull(fJetR,myJet->Phi(),myJet->Eta()),i);
1286 fTPCJetUnbiased->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kFALSE),i);
1288 fTPCJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1289 fTPCFullJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1290 fTPCOnlyJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1291 fTPCJetUnbiased->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1294 fTPCkTFullJet = new AlipAJetData("fTPCkTFullJet",kFALSE,fnKTChargedJets);
1295 fTPCkTFullJet->SetSignalCut(fTPCJetThreshold);
1296 fTPCkTFullJet->SetAreaCutFraction(0.25*fJetAreaCutFrac);
1297 fTPCkTFullJet->SetJetR(fJetR);
1299 for (i=0;i<fnKTChargedJets;i++)
1301 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(i);
1302 fTPCkTFullJet->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kTRUE),i);
1304 fTPCkTFullJet->InitializeJetData(fmyKTChargedJets,fnKTChargedJets);
1306 // Raw Charged Jet Spectra
1307 fTPCRawJets->FillBSJS(fEventCentrality,0.0,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1310 void AliAnalysisTaskFullpAJets::InitFullJets()
1312 // Preliminary Jet Placement and Selection Cuts
1315 fnAKTFullJets = fmyAKTFullJets->GetEntries();
1316 fnKTFullJets = fmyKTFullJets->GetEntries();
1318 fEMCalJet = new AlipAJetData("fEMCalJet",kTRUE,fnAKTFullJets);
1319 fEMCalFullJet = new AlipAJetData("fEMCalFullJet",kTRUE,fnAKTFullJets);
1320 fEMCalPartJet = new AlipAJetData("fEMCalPartJet",kTRUE,fnAKTFullJets);
1321 fEMCalPartJetUnbiased = new AlipAJetData("fEMCalPartJetUnbiased",kTRUE,fnAKTFullJets);
1323 fEMCalJet->SetSignalCut(fEMCalJetThreshold);
1324 fEMCalJet->SetAreaCutFraction(fJetAreaCutFrac);
1325 fEMCalJet->SetJetR(fJetR);
1326 fEMCalJet->SetNEF(fNEFSignalJetCut);
1327 fEMCalJet->SetSignalTrackPtBias(kTRUE);
1328 fEMCalFullJet->SetSignalCut(fEMCalJetThreshold);
1329 fEMCalFullJet->SetAreaCutFraction(fJetAreaCutFrac);
1330 fEMCalFullJet->SetJetR(fJetR);
1331 fEMCalFullJet->SetNEF(fNEFSignalJetCut);
1332 fEMCalFullJet->SetSignalTrackPtBias(kTRUE);
1333 fEMCalPartJet->SetSignalCut(fEMCalJetThreshold);
1334 fEMCalPartJet->SetAreaCutFraction(fJetAreaCutFrac);
1335 fEMCalPartJet->SetJetR(fJetR);
1336 fEMCalPartJet->SetNEF(fNEFSignalJetCut);
1337 fEMCalPartJet->SetSignalTrackPtBias(kTRUE);
1338 fEMCalPartJetUnbiased->SetSignalCut(fEMCalJetThreshold);
1339 fEMCalPartJetUnbiased->SetAreaCutFraction(fJetAreaCutFrac);
1340 fEMCalPartJetUnbiased->SetJetR(fJetR);
1341 fEMCalPartJetUnbiased->SetNEF(1.0);
1342 fEMCalPartJetUnbiased->SetSignalTrackPtBias(kFALSE);
1344 // Initialize Jet Data
1345 for (i=0;i<fnAKTFullJets;i++)
1347 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(i);
1349 fEMCalJet->SetIsJetInArray(IsInEMCal(myJet->Phi(),myJet->Eta()),i);
1350 fEMCalFullJet->SetIsJetInArray(IsInEMCalFull(fJetR,myJet->Phi(),myJet->Eta()),i);
1351 fEMCalPartJet->SetIsJetInArray(IsInEMCalPart(fJetR,myJet->Phi(),myJet->Eta()),i);
1352 fEMCalPartJetUnbiased->SetIsJetInArray(IsInEMCalPart(fJetR,myJet->Phi(),myJet->Eta()),i);
1354 fEMCalJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1355 fEMCalFullJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1356 fEMCalPartJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1357 fEMCalPartJetUnbiased->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1360 fEMCalkTFullJet = new AlipAJetData("fEMCalkTFullJet",kTRUE,fnKTFullJets);
1361 fEMCalkTFullJet->SetSignalCut(fEMCalJetThreshold);
1362 fEMCalkTFullJet->SetAreaCutFraction(0.25*fJetAreaCutFrac);
1363 fEMCalkTFullJet->SetJetR(fJetR);
1364 fEMCalkTFullJet->SetNEF(fNEFSignalJetCut);
1365 fEMCalkTFullJet->SetSignalTrackPtBias(kTRUE);
1367 for (i=0;i<fnKTFullJets;i++)
1369 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(i);
1370 fEMCalkTFullJet->SetIsJetInArray(IsInEMCalFull(fJetR,myJet->Phi(),myJet->Eta()),i);
1372 fEMCalkTFullJet->InitializeJetData(fmyKTFullJets,fnKTFullJets);
1374 // Raw Full Jet Spectra
1375 fEMCalRawJets->FillBSJS(fEventCentrality,0.0,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
1378 void AliAnalysisTaskFullpAJets::JetPtArea()
1382 for (i=0;i<fEMCalFullJet->GetTotalJets();i++)
1384 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTFullJets->At(fEMCalFullJet->GetJetIndex(i));
1385 fhJetPtArea->Fill(myJet->Pt(),myJet->Area());
1389 void AliAnalysisTaskFullpAJets::GenerateTPCRandomConesPt()
1392 Double_t E_tracks_total=0.;
1393 TRandom3 u(time(NULL));
1395 Double_t Eta_Center=0.5*(fTPCEtaMin+fTPCEtaMax);
1396 Double_t Phi_Center=0.5*(fTPCPhiMin+fTPCPhiMax);
1400 for (i=0;i<fnBckgClusters;i++)
1402 fTPCRCBckgFluc[i]=0.0;
1403 fTPCRCBckgFlucSignal[i]=0.0;
1404 fTPCRCBckgFlucNColl[i]=0.0;
1407 TLorentzVector *dummy= new TLorentzVector;
1408 TLorentzVector *temp_jet= new TLorentzVector;
1410 // First, consider the RC with no spatial restrictions
1411 for (j=0;j<fnBckgClusters;j++)
1415 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1416 // Loop over all tracks
1417 for (i=0;i<fnTracks;i++)
1419 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1420 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1422 TLorentzVector *track_vec = new TLorentzVector;
1423 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1424 if (dummy->DeltaR(*track_vec)<fJetR)
1426 E_tracks_total+=vtrack->Pt();
1431 fTPCRCBckgFlucSignal[j]=E_tracks_total;
1434 // Now, consider the RC where the vertex of RC is at least 2R away from the leading signal
1436 if (fTPCJetUnbiased->GetLeadingPt()<0.0)
1438 temp_jet->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1442 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetLeadingIndex());
1443 myJet->GetMom(*temp_jet);
1446 for (j=0;j<fnBckgClusters;j++)
1452 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1453 while (temp_jet->DeltaR(*dummy)<fJetR)
1455 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1457 // Loop over all tracks
1458 for (i=0;i<fnTracks;i++)
1460 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1461 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1464 TLorentzVector *track_vec = new TLorentzVector;
1465 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1466 if (dummy->DeltaR(*track_vec)<fJetR)
1469 E_tracks_total+=vtrack->Pt();
1474 fTPCRCBckgFluc[j]=E_tracks_total;
1476 fpTPCEventMult->Fill(fEventCentrality,event_mult);
1477 fTPCRawJets->FillDeltaPt(fEventCentrality,0.0,fJetR,fTPCRCBckgFluc,1);
1479 // For the case of partial exclusion, merely allow a superposition of full and no exclusion with probability p=1/Ncoll
1480 Double_t exclusion_prob;
1481 for (j=0;j<fnBckgClusters;j++)
1483 exclusion_prob = u.Uniform(0,1);
1484 if (exclusion_prob<(1/fNColl))
1486 fTPCRCBckgFlucNColl[j]=fTPCRCBckgFlucSignal[j];
1490 fTPCRCBckgFlucNColl[j]=fTPCRCBckgFluc[j];
1498 void AliAnalysisTaskFullpAJets::GenerateEMCalRandomConesPt()
1501 Double_t E_tracks_total=0.;
1502 Double_t E_caloclusters_total=0.;
1503 TRandom3 u(time(NULL));
1505 Double_t Eta_Center=0.5*(fEMCalEtaMin+fEMCalEtaMax);
1506 Double_t Phi_Center=0.5*(fEMCalPhiMin+fEMCalPhiMax);
1510 for (i=0;i<fnBckgClusters;i++)
1512 fEMCalRCBckgFluc[i]=0.0;
1513 fEMCalRCBckgFlucSignal[i]=0.0;
1514 fEMCalRCBckgFlucNColl[i]=0.0;
1517 TLorentzVector *dummy= new TLorentzVector;
1518 TLorentzVector *temp_jet= new TLorentzVector;
1520 // First, consider the RC with no spatial restrictions
1521 for (j=0;j<fnBckgClusters;j++)
1524 E_caloclusters_total=0.;
1526 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1527 // Loop over all tracks
1528 for (i=0;i<fnTracks;i++)
1530 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1531 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
1533 TLorentzVector *track_vec = new TLorentzVector;
1534 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1535 if (dummy->DeltaR(*track_vec)<fJetR)
1537 E_tracks_total+=vtrack->Pt();
1543 // Loop over all caloclusters
1544 for (i=0;i<fnClusters;i++)
1546 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
1547 TLorentzVector *cluster_vec = new TLorentzVector;
1548 vcluster->GetMomentum(*cluster_vec,fVertex);
1549 if (dummy->DeltaR(*cluster_vec)<fJetR)
1552 E_caloclusters_total+=vcluster->E();
1556 fEMCalRCBckgFlucSignal[j]=E_tracks_total+E_caloclusters_total;
1559 // Now, consider the RC where the vertex of RC is at least 2R away from the leading signal
1561 E_caloclusters_total=0.;
1562 if (fEMCalPartJetUnbiased->GetLeadingPt()<0.0)
1564 temp_jet->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1568 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
1569 myJet->GetMom(*temp_jet);
1572 for (j=0;j<fnBckgClusters;j++)
1577 E_caloclusters_total=0.;
1579 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1580 while (temp_jet->DeltaR(*dummy)<fJetR)
1582 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1584 // Loop over all tracks
1585 for (i=0;i<fnTracks;i++)
1587 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1588 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
1591 TLorentzVector *track_vec = new TLorentzVector;
1592 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1593 if (dummy->DeltaR(*track_vec)<fJetR)
1596 E_tracks_total+=vtrack->Pt();
1602 // Loop over all caloclusters
1603 for (i=0;i<fnClusters;i++)
1605 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
1606 TLorentzVector *cluster_vec = new TLorentzVector;
1607 vcluster->GetMomentum(*cluster_vec,fVertex);
1609 if (dummy->DeltaR(*cluster_vec)<fJetR)
1612 E_caloclusters_total+=vcluster->E();
1616 fEMCalRCBckgFluc[j]=E_tracks_total+E_caloclusters_total;
1618 fpEMCalEventMult->Fill(fEventCentrality,event_mult);
1619 fEMCalRawJets->FillDeltaPt(fEventCentrality,0.0,fJetR,fEMCalRCBckgFluc,1);
1621 // For the case of partial exclusion, merely allow a superposition of full and no exclusion with probability p=1/Ncoll
1622 Double_t exclusion_prob;
1623 for (j=0;j<fnBckgClusters;j++)
1625 exclusion_prob = u.Uniform(0,1);
1626 if (exclusion_prob<(1/fNColl))
1628 fEMCalRCBckgFlucNColl[j]=fEMCalRCBckgFlucSignal[j];
1632 fEMCalRCBckgFlucNColl[j]=fEMCalRCBckgFluc[j];
1641 void AliAnalysisTaskFullpAJets::EstimateChargedRho0()
1644 Double_t E_tracks_total=0.0;
1645 Double_t TPC_rho=0.;
1647 // Loop over all tracks
1648 for (i=0;i<fnTracks;i++)
1650 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1651 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1653 E_tracks_total+=vtrack->Pt();
1657 // Calculate the mean Background density
1658 TPC_rho=E_tracks_total/fTPCArea;
1659 fRhoCharged=TPC_rho;
1662 fRhoCharged0->FillRho(fEventCentrality,TPC_rho);
1663 fRhoCharged0->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCJet->GetJets(),fTPCJet->GetTotalJets());
1664 fRhoCharged0->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1665 fRhoCharged0->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1666 fRhoCharged0->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1667 fRhoCharged0->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1668 fRhoCharged0->FillLeadingJetPtRho(fTPCJet->GetLeadingPt(),TPC_rho);
1672 void AliAnalysisTaskFullpAJets::EstimateChargedRho1()
1675 Double_t E_tracks_total=0.0;
1676 Double_t TPC_rho=0.;
1678 if (fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold)
1680 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1681 TLorentzVector *temp_jet= new TLorentzVector;
1682 myJet->GetMom(*temp_jet);
1684 // Loop over all tracks
1685 for (i=0;i<fnTracks;i++)
1687 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1688 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1690 TLorentzVector *track_vec = new TLorentzVector;
1691 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1692 if (temp_jet->DeltaR(*track_vec)>fJetRForRho)
1694 E_tracks_total+=vtrack->Pt();
1701 // Calculate the mean Background density
1702 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myJet->Eta()));
1704 else // i.e. No signal jets -> same as total background density
1706 // Loop over all tracks
1707 for (i=0;i<fnTracks;i++)
1709 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1710 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1712 E_tracks_total+=vtrack->Pt();
1715 // Calculate the mean Background density
1716 TPC_rho=E_tracks_total/fTPCArea;
1720 fRhoCharged1->FillRho(fEventCentrality,TPC_rho);
1721 fRhoCharged1->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1722 fRhoCharged1->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1723 fRhoCharged1->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1724 fRhoCharged1->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1725 fRhoCharged1->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1726 fRhoCharged1->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
1729 void AliAnalysisTaskFullpAJets::EstimateChargedRho2()
1732 Double_t E_tracks_total=0.0;
1733 Double_t TPC_rho=0.;
1735 if ((fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJetUnbiased->GetSubLeadingPt()>=fTPCJetThreshold))
1737 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1738 TLorentzVector *temp_jet1= new TLorentzVector;
1739 myhJet->GetMom(*temp_jet1);
1741 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
1742 TLorentzVector *temp_jet2= new TLorentzVector;
1743 myJet->GetMom(*temp_jet2);
1745 // Loop over all tracks
1746 for (i=0;i<fnTracks;i++)
1748 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1749 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1751 TLorentzVector *track_vec = new TLorentzVector;
1752 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1753 if ((temp_jet1->DeltaR(*track_vec)>fJetRForRho) && (temp_jet2->DeltaR(*track_vec)>fJetRForRho))
1755 E_tracks_total+=vtrack->Pt();
1763 // Calculate the mean Background density
1764 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myhJet->Eta())-AreaWithinTPC(fJetR,myJet->Eta()));
1766 else if (fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold)
1768 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1769 TLorentzVector *temp_jet= new TLorentzVector;
1770 myJet->GetMom(*temp_jet);
1772 // Loop over all tracks
1773 for (i=0;i<fnTracks;i++)
1775 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1776 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1778 TLorentzVector *track_vec = new TLorentzVector;
1779 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1780 if (temp_jet->DeltaR(*track_vec)>fJetRForRho)
1782 E_tracks_total+=vtrack->Pt();
1789 // Calculate the mean Background density
1790 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myJet->Eta()));
1792 else // i.e. No signal jets -> same as total background density
1794 // Loop over all tracks
1795 for (i=0;i<fnTracks;i++)
1797 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1798 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1800 E_tracks_total+=vtrack->Pt();
1804 // Calculate the mean Background density
1805 TPC_rho=E_tracks_total/fTPCArea;
1809 fRhoCharged2->FillRho(fEventCentrality,TPC_rho);
1810 fRhoCharged2->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1811 fRhoCharged2->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1812 fRhoCharged2->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1813 fRhoCharged2->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1814 fRhoCharged2->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1815 fRhoCharged2->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
1818 void AliAnalysisTaskFullpAJets::EstimateChargedRhoN()
1821 Bool_t track_away_from_jet;
1822 Double_t E_tracks_total=0.0;
1823 Double_t TPC_rho=0.0;
1824 Double_t jet_area_total=0.0;
1826 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
1827 for (i=0;i<fnTracks;i++)
1829 // First, check if track is in the EMCal!!
1830 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
1831 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1833 if (fTPCJetUnbiased->GetTotalSignalJets()<1)
1835 E_tracks_total+=vtrack->Pt();
1839 track_away_from_jet=kTRUE;
1841 TLorentzVector *track_vec = new TLorentzVector;
1842 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1843 while (track_away_from_jet==kTRUE && j<fTPCJetUnbiased->GetTotalSignalJets())
1845 TLorentzVector *jet_vec= new TLorentzVector;
1846 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(j));
1847 myJet->GetMom(*jet_vec);
1848 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
1850 track_away_from_jet=kFALSE;
1855 if (track_away_from_jet==kTRUE)
1857 E_tracks_total+=vtrack->Pt();
1864 // Determine area of all Jets that are within the EMCal
1865 if (fTPCJetUnbiased->GetTotalSignalJets()==0)
1871 for (i=0;i<fTPCJetUnbiased->GetTotalSignalJets();i++)
1873 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(i));
1874 jet_area_total+=AreaWithinTPC(fJetR,myJet->Eta());
1879 TPC_rho = E_tracks_total/(fTPCArea-jet_area_total);
1882 fRhoChargedN->FillRho(fEventCentrality,TPC_rho);
1883 fRhoChargedN->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1884 fRhoChargedN->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1885 fRhoChargedN->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1886 fRhoChargedN->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1887 fRhoChargedN->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1888 fRhoChargedN->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
1891 void AliAnalysisTaskFullpAJets::EstimateChargedRhoScale()
1894 Bool_t track_away_from_jet;
1895 Double_t E_tracks_total=0.0;
1896 Double_t TPC_rho=0.0;
1897 Double_t jet_area_total=0.0;
1899 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
1900 for (i=0;i<fnTracks;i++)
1902 // First, check if track is in the EMCal!!
1903 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
1904 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1906 if (fTPCJetUnbiased->GetTotalSignalJets()<1)
1908 E_tracks_total+=vtrack->Pt();
1912 track_away_from_jet=kTRUE;
1914 TLorentzVector *track_vec = new TLorentzVector;
1915 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1916 while (track_away_from_jet==kTRUE && j<fTPCJetUnbiased->GetTotalSignalJets())
1918 TLorentzVector *jet_vec= new TLorentzVector;
1919 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(j));
1920 myJet->GetMom(*jet_vec);
1921 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
1923 track_away_from_jet=kFALSE;
1928 if (track_away_from_jet==kTRUE)
1930 E_tracks_total+=vtrack->Pt();
1937 // Determine area of all Jets that are within the TPC
1938 if (fTPCJetUnbiased->GetTotalSignalJets()==0)
1944 for (i=0;i<fTPCJetUnbiased->GetTotalSignalJets();i++)
1946 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(i));
1947 jet_area_total+=AreaWithinTPC(fJetR,myJet->Eta());
1952 TPC_rho = E_tracks_total/(fTPCArea-jet_area_total);
1953 TPC_rho*=fScaleFactor;
1956 fRhoChargedScale->FillRho(fEventCentrality,TPC_rho);
1957 fRhoChargedScale->FillBSJS(fEventCentrality,TPC_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
1958 fRhoChargedScale->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFluc,1);
1959 fRhoChargedScale->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFlucSignal,1);
1960 fRhoChargedScale->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFlucNColl,1);
1961 fRhoChargedScale->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1962 fRhoChargedScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),TPC_rho);
1965 void AliAnalysisTaskFullpAJets::EstimateChargedRhokT()
1968 Double_t kTRho = 0.0;
1969 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1970 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1972 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
1974 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
1975 pTArray[i]=myJet->Pt();
1976 RhoArray[i]=myJet->Pt()/myJet->Area();
1979 if (fTPCkTFullJet->GetTotalJets()>=2)
1981 kTRho=MedianRhokT(pTArray,RhoArray,fTPCkTFullJet->GetTotalJets());
1983 fRhoChargedkT->FillRho(fEventCentrality,kTRho);
1984 fRhoChargedkT->FillBSJS(fEventCentrality,kTRho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1985 fRhoChargedkT->FillDeltaPt(fEventCentrality,kTRho,fJetR,fTPCRCBckgFluc,1);
1986 fRhoChargedkT->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucSignal,1);
1987 fRhoChargedkT->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucNColl,1);
1988 fRhoChargedkT->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
1989 fRhoChargedkT->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),kTRho);
1995 void AliAnalysisTaskFullpAJets::EstimateChargedRhokTScale()
1998 Double_t kTRho = 0.0;
1999 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2000 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2002 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2004 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2005 pTArray[i]=myJet->Pt();
2006 RhoArray[i]=myJet->Pt()/myJet->Area();
2009 if (fTPCkTFullJet->GetTotalJets()>=2)
2011 kTRho=MedianRhokT(pTArray,RhoArray,fTPCkTFullJet->GetTotalJets());
2012 kTRho*=fScaleFactor;
2014 fRhoChargedkTScale->FillRho(fEventCentrality,kTRho);
2015 fRhoChargedkTScale->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2016 fRhoChargedkTScale->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2017 fRhoChargedkTScale->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2018 fRhoChargedkTScale->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2019 fRhoChargedkTScale->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2020 fRhoChargedkTScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2026 void AliAnalysisTaskFullpAJets::EstimateChargedRhoCMS()
2029 Double_t kTRho = 0.0;
2030 Double_t CMSTotalkTArea = 0.0;
2031 Double_t CMSTrackArea = 0.0;
2032 Double_t CMSCorrectionFactor = 1.0;
2033 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2034 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2037 if ((fTPCJet->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJet->GetSubLeadingPt()>=fTPCJetThreshold))
2039 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
2040 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
2042 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2044 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2046 CMSTotalkTArea+=myJet->Area();
2047 if (myJet->GetNumberOfTracks()>0)
2049 CMSTrackArea+=myJet->Area();
2051 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kFALSE)
2053 pTArray[k]=myJet->Pt();
2054 RhoArray[k]=myJet->Pt()/myJet->Area();
2060 kTRho=MedianRhokT(pTArray,RhoArray,k);
2067 else if (fTPCJet->GetLeadingPt()>=fTPCJetThreshold)
2069 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
2071 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2073 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2075 CMSTotalkTArea+=myJet->Area();
2076 if (myJet->GetNumberOfTracks()>0)
2078 CMSTrackArea+=myJet->Area();
2080 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE)
2082 pTArray[k]=myJet->Pt();
2083 RhoArray[k]=myJet->Pt()/myJet->Area();
2089 kTRho=MedianRhokT(pTArray,RhoArray,k);
2098 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2100 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2102 CMSTotalkTArea+=myJet->Area();
2103 if (myJet->GetNumberOfTracks()>0)
2105 CMSTrackArea+=myJet->Area();
2107 pTArray[k]=myJet->Pt();
2108 RhoArray[k]=myJet->Pt()/myJet->Area();
2113 kTRho=MedianRhokT(pTArray,RhoArray,k);
2120 // Scale CMS Rho by Correction factor
2121 if (CMSTotalkTArea==0.0)
2123 CMSCorrectionFactor = 1.0;
2127 //CMSCorrectionFactor = CMSTrackArea/CMSTotalkTArea;
2128 CMSCorrectionFactor = CMSTrackArea/(fTPCPhiTotal*(fTPCEtaTotal-2*fJetR)); // The total physical area should be reduced by the eta cut due to looping over only fully contained kT jets within the TPC
2130 kTRho*=CMSCorrectionFactor;
2131 fRhoChargedCMS->FillRho(fEventCentrality,kTRho);
2132 fRhoChargedCMS->FillBSJS(fEventCentrality,kTRho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
2133 fRhoChargedCMS->FillDeltaPt(fEventCentrality,kTRho,fJetR,fTPCRCBckgFluc,1);
2134 fRhoChargedCMS->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucSignal,1);
2135 fRhoChargedCMS->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucNColl,1);
2136 fRhoChargedCMS->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2137 fRhoChargedCMS->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),kTRho);
2142 void AliAnalysisTaskFullpAJets::EstimateChargedRhoCMSScale()
2145 Double_t kTRho = 0.0;
2146 Double_t CMSTotalkTArea = 0.0;
2147 Double_t CMSTrackArea = 0.0;
2148 Double_t CMSCorrectionFactor = 1.0;
2149 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2150 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2153 if ((fTPCJet->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJet->GetSubLeadingPt()>=fTPCJetThreshold))
2155 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
2156 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
2158 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2160 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2162 CMSTotalkTArea+=myJet->Area();
2163 if (myJet->GetNumberOfTracks()>0)
2165 CMSTrackArea+=myJet->Area();
2167 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kFALSE)
2169 pTArray[k]=myJet->Pt();
2170 RhoArray[k]=myJet->Pt()/myJet->Area();
2176 kTRho=MedianRhokT(pTArray,RhoArray,k);
2183 else if (fTPCJet->GetLeadingPt()>=fTPCJetThreshold)
2185 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
2187 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2189 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2191 CMSTotalkTArea+=myJet->Area();
2192 if (myJet->GetNumberOfTracks()>0)
2194 CMSTrackArea+=myJet->Area();
2196 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE)
2198 pTArray[k]=myJet->Pt();
2199 RhoArray[k]=myJet->Pt()/myJet->Area();
2205 kTRho=MedianRhokT(pTArray,RhoArray,k);
2214 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2216 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2218 CMSTotalkTArea+=myJet->Area();
2219 if (myJet->GetNumberOfTracks()>0)
2221 CMSTrackArea+=myJet->Area();
2223 pTArray[k]=myJet->Pt();
2224 RhoArray[k]=myJet->Pt()/myJet->Area();
2229 kTRho=MedianRhokT(pTArray,RhoArray,k);
2236 kTRho*=fScaleFactor;
2237 // Scale CMS Rho by Correction factor
2238 if (CMSTotalkTArea==0.0)
2240 CMSCorrectionFactor = 1.0;
2244 //CMSCorrectionFactor = CMSTrackArea/CMSTotalkTArea;
2245 CMSCorrectionFactor = CMSTrackArea/(fTPCPhiTotal*(fTPCEtaTotal-2*fJetR)); // The total physical area should be reduced by the eta cut due to looping over only fully contained kT jets within the TPC
2247 kTRho*=CMSCorrectionFactor;
2249 fRhoChargedCMSScale->FillRho(fEventCentrality,kTRho);
2250 fRhoChargedCMSScale->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2251 fRhoChargedCMSScale->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2252 fRhoChargedCMSScale->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2253 fRhoChargedCMSScale->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2254 fRhoChargedCMSScale->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2255 fRhoChargedCMSScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2256 fRhoChargedCMSScale->DoNEFAnalysis(fNEFSignalJetCut,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fmyClusters,fOrgClusters,fEvent,fEMCALGeometry,fRecoUtil,fCells);
2262 void AliAnalysisTaskFullpAJets::EstimateFullRho0()
2265 Double_t E_tracks_total=0.0;
2266 Double_t E_caloclusters_total=0.0;
2267 Double_t EMCal_rho=0.0;
2269 // Loop over all tracks
2270 for (i=0;i<fnTracks;i++)
2272 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2273 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2275 E_tracks_total+=vtrack->Pt();
2279 // Loop over all caloclusters
2280 for (i=0;i<fnClusters;i++)
2282 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2283 TLorentzVector *cluster_vec = new TLorentzVector;
2284 vcluster->GetMomentum(*cluster_vec,fVertex);
2285 E_caloclusters_total+=cluster_vec->Pt();
2286 //E_caloclusters_total+=0.5*cluster_vec->Pt();
2289 // Calculate the mean Background density
2290 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2296 fpRhoScale->Fill(fEventCentrality,fRhoFull/fRhoCharged);
2297 fhRhoScale->Fill(fRhoFull/fRhoCharged,fEventCentrality);
2300 fRhoFull0->FillRho(fEventCentrality,EMCal_rho);
2301 fRhoFull0->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2302 fRhoFull0->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2303 fRhoFull0->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2304 fRhoFull0->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2305 fRhoFull0->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2306 fRhoFull0->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2309 void AliAnalysisTaskFullpAJets::EstimateFullRho1()
2312 Double_t E_tracks_total=0.0;
2313 Double_t E_caloclusters_total=0.0;
2314 Double_t EMCal_rho=0.0;
2316 if (fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold)
2318 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
2319 TLorentzVector *temp_jet= new TLorentzVector;
2320 myJet->GetMom(*temp_jet);
2322 // Loop over all tracks
2323 for (i=0;i<fnTracks;i++)
2325 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2326 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2328 TLorentzVector *track_vec = new TLorentzVector;
2329 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2330 if (temp_jet->DeltaR(*track_vec)>fJetRForRho)
2332 E_tracks_total+=vtrack->Pt();
2338 // Loop over all caloclusters
2339 for (i=0;i<fnClusters;i++)
2341 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2342 TLorentzVector *cluster_vec = new TLorentzVector;
2343 vcluster->GetMomentum(*cluster_vec,fVertex);
2344 if (temp_jet->DeltaR(*cluster_vec)>fJetRForRho)
2346 E_caloclusters_total+=vcluster->E();
2351 // Calculate the mean Background density
2352 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
2354 else // i.e. No signal jets -> same as total background density
2356 // Loop over all tracks
2357 for (i=0;i<fnTracks;i++)
2359 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2360 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2362 E_tracks_total+=vtrack->Pt();
2366 // Loop over all caloclusters
2367 for (i=0;i<fnClusters;i++)
2369 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2370 E_caloclusters_total+=vcluster->E();
2372 // Calculate the mean Background density
2373 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2377 fRhoFull1->FillRho(fEventCentrality,EMCal_rho);
2378 fRhoFull1->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2379 fRhoFull1->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2380 fRhoFull1->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2381 fRhoFull1->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2382 fRhoFull1->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2383 fRhoFull1->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2386 void AliAnalysisTaskFullpAJets::EstimateFullRho2()
2389 Double_t E_tracks_total=0.0;
2390 Double_t E_caloclusters_total=0.0;
2391 Double_t EMCal_rho=0.0;
2393 if ((fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold) && (fEMCalPartJetUnbiased->GetSubLeadingPt()>=fEMCalJetThreshold))
2395 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
2396 TLorentzVector *temp_jet1 = new TLorentzVector;
2397 myhJet->GetMom(*temp_jet1);
2399 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSubLeadingIndex());
2400 TLorentzVector *temp_jet2 = new TLorentzVector;
2401 myJet->GetMom(*temp_jet2);
2403 // Loop over all tracks
2404 for (i=0;i<fnTracks;i++)
2406 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2407 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2409 TLorentzVector *track_vec = new TLorentzVector;
2410 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2411 if ((temp_jet1->DeltaR(*track_vec)>fJetRForRho) && (temp_jet2->DeltaR(*track_vec)>fJetRForRho))
2413 E_tracks_total+=vtrack->Pt();
2419 // Loop over all caloclusters
2420 for (i=0;i<fnClusters;i++)
2422 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2423 TLorentzVector *cluster_vec = new TLorentzVector;
2424 vcluster->GetMomentum(*cluster_vec,fVertex);
2425 if ((temp_jet1->DeltaR(*cluster_vec)>fJetRForRho) && (temp_jet2->DeltaR(*cluster_vec)>fJetRForRho))
2427 E_caloclusters_total+=vcluster->E();
2434 // Calculate the mean Background density
2435 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myhJet->Phi(),myhJet->Eta())-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
2437 else if (fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold)
2439 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
2440 TLorentzVector *temp_jet= new TLorentzVector;
2441 myJet->GetMom(*temp_jet);
2443 // Loop over all tracks
2444 for (i=0;i<fnTracks;i++)
2446 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2447 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2449 TLorentzVector *track_vec = new TLorentzVector;
2450 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2451 if (temp_jet->DeltaR(*track_vec)>fJetRForRho)
2453 E_tracks_total+=vtrack->Pt();
2459 // Loop over all caloclusters
2460 for (i=0;i<fnClusters;i++)
2462 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2463 TLorentzVector *cluster_vec = new TLorentzVector;
2464 vcluster->GetMomentum(*cluster_vec,fVertex);
2465 if (temp_jet->DeltaR(*cluster_vec)>fJetRForRho)
2467 E_caloclusters_total+=vcluster->E();
2472 // Calculate the mean Background density
2473 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
2475 else // i.e. No signal jets -> same as total background density
2477 // Loop over all tracks
2478 for (i=0;i<fnTracks;i++)
2480 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2481 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2483 E_tracks_total+=vtrack->Pt();
2487 // Loop over all caloclusters
2488 for (i=0;i<fnClusters;i++)
2490 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2491 E_caloclusters_total+=vcluster->E();
2493 // Calculate the mean Background density
2494 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2498 fRhoFull2->FillRho(fEventCentrality,EMCal_rho);
2499 fRhoFull2->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2500 fRhoFull2->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2501 fRhoFull2->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2502 fRhoFull2->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2503 fRhoFull2->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2504 fRhoFull2->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2507 void AliAnalysisTaskFullpAJets::EstimateFullRhoN()
2510 Bool_t track_away_from_jet;
2511 Bool_t cluster_away_from_jet;
2512 Double_t E_tracks_total=0.0;
2513 Double_t E_caloclusters_total=0.0;
2514 Double_t EMCal_rho=0.0;
2515 Double_t jet_area_total=0.0;
2517 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
2518 for (i=0;i<fnTracks;i++)
2520 // First, check if track is in the EMCal!!
2521 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
2522 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2524 if (fEMCalPartJetUnbiased->GetTotalSignalJets()<1)
2526 E_tracks_total+=vtrack->Pt();
2530 track_away_from_jet=kTRUE;
2532 TLorentzVector *track_vec = new TLorentzVector;
2533 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2534 while (track_away_from_jet==kTRUE && j<fEMCalPartJetUnbiased->GetTotalSignalJets())
2536 TLorentzVector *jet_vec= new TLorentzVector;
2537 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(j));
2538 myJet->GetMom(*jet_vec);
2539 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
2541 track_away_from_jet=kFALSE;
2546 if (track_away_from_jet==kTRUE)
2548 E_tracks_total+=vtrack->Pt();
2555 // Next, sum all CaloClusters within the EMCal (obviously all clusters must be within EMCal!!) that are away from jet(s) above Pt Threshold
2556 for (i=0;i<fnClusters;i++)
2558 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2559 if (fEMCalPartJet->GetTotalSignalJets()<1)
2561 E_caloclusters_total+=vcluster->E();
2565 cluster_away_from_jet=kTRUE;
2568 TLorentzVector *cluster_vec = new TLorentzVector;
2569 vcluster->GetMomentum(*cluster_vec,fVertex);
2570 while (cluster_away_from_jet==kTRUE && j<fEMCalPartJetUnbiased->GetTotalSignalJets())
2572 TLorentzVector *jet_vec= new TLorentzVector;
2573 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(j));
2574 myJet->GetMom(*jet_vec);
2575 if (cluster_vec->DeltaR(*jet_vec)<=fJetRForRho)
2577 cluster_away_from_jet=kFALSE;
2582 if (cluster_away_from_jet==kTRUE)
2584 E_caloclusters_total+=vcluster->E();
2590 // Determine area of all Jets that are within the EMCal
2591 if (fEMCalPartJet->GetTotalSignalJets()==0)
2597 for (i=0;i<fEMCalPartJetUnbiased->GetTotalSignalJets();i++)
2599 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(i));
2600 jet_area_total+=AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta());
2605 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-jet_area_total);
2608 fRhoFullN->FillRho(fEventCentrality,EMCal_rho);
2609 fRhoFullN->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2610 fRhoFullN->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2611 fRhoFullN->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2612 fRhoFullN->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2613 fRhoFullN->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2614 fRhoFullN->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2617 void AliAnalysisTaskFullpAJets::EstimateFullRhoDijet()
2620 Double_t E_tracks_total=0.0;
2621 Double_t E_caloclusters_total=0.0;
2622 Double_t EMCal_rho=0.0;
2624 // Loop over all tracks
2625 for (i=0;i<fnTracks;i++)
2627 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2628 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2630 E_tracks_total+=vtrack->Pt();
2634 // Loop over all caloclusters
2635 for (i=0;i<fnClusters;i++)
2637 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2638 E_caloclusters_total+=vcluster->E();
2641 // Calculate the mean Background density
2642 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2645 fRhoFullDijet->FillRho(fEventCentrality,EMCal_rho);
2646 fRhoFullDijet->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2647 fRhoFullDijet->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2648 fRhoFullDijet->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2649 fRhoFullDijet->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2650 fRhoFullDijet->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2651 fRhoFullDijet->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2654 void AliAnalysisTaskFullpAJets::EstimateFullRhokT()
2657 Double_t kTRho = 0.0;
2658 Double_t *pTArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2659 Double_t *RhoArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2661 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2663 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2664 pTArray[i]=myJet->Pt();
2665 RhoArray[i]=myJet->Pt()/myJet->Area();
2668 if (fEMCalkTFullJet->GetTotalJets()>0)
2670 kTRho=MedianRhokT(pTArray,RhoArray,fEMCalkTFullJet->GetTotalJets());
2676 fRhoFullkT->FillRho(fEventCentrality,kTRho);
2677 fRhoFullkT->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2678 fRhoFullkT->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2679 fRhoFullkT->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2680 fRhoFullkT->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2681 fRhoFullkT->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2682 fRhoFullkT->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2687 void AliAnalysisTaskFullpAJets::EstimateFullRhoCMS()
2690 Double_t kTRho = 0.0;
2691 Double_t CMSTotalkTArea = 0.0;
2692 Double_t CMSParticleArea = 0.0;
2693 Double_t CMSCorrectionFactor = 1.0;
2694 Double_t *pTArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2695 Double_t *RhoArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2698 if ((fEMCalPartJet->GetLeadingPt()>=fEMCalJetThreshold) && (fEMCalPartJet->GetSubLeadingPt()>=fEMCalJetThreshold))
2700 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJet->GetLeadingIndex());
2701 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJet->GetSubLeadingIndex());
2703 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2705 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2707 CMSTotalkTArea+=myJet->Area();
2708 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
2710 CMSParticleArea+=myJet->Area();
2712 if (IsJetOverlap(myJet,myJet1,kTRUE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kTRUE)
2714 pTArray[k]=myJet->Pt();
2715 RhoArray[k]=myJet->Pt()/myJet->Area();
2721 kTRho=MedianRhokT(pTArray,RhoArray,k);
2728 else if (fEMCalJet->GetLeadingPt()>=fEMCalJetThreshold)
2730 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalJet->GetLeadingIndex());
2732 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2734 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2736 CMSTotalkTArea+=myJet->Area();
2737 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
2739 CMSParticleArea+=myJet->Area();
2741 if (IsJetOverlap(myJet,myJet1,kTRUE)==kFALSE)
2743 pTArray[k]=myJet->Pt();
2744 RhoArray[k]=myJet->Pt()/myJet->Area();
2750 kTRho=MedianRhokT(pTArray,RhoArray,k);
2759 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2761 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2763 CMSTotalkTArea+=myJet->Area();
2764 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
2766 CMSParticleArea+=myJet->Area();
2768 pTArray[k]=myJet->Pt();
2769 RhoArray[k]=myJet->Pt()/myJet->Area();
2774 kTRho=MedianRhokT(pTArray,RhoArray,k);
2781 // Scale CMS Rho by Correction factor
2782 if (CMSTotalkTArea==0.0)
2784 CMSCorrectionFactor = 1.0;
2788 //CMSCorrectionFactor = CMSTrackArea/CMSTotalkTArea;
2789 CMSCorrectionFactor = CMSParticleArea/((fEMCalPhiTotal-2*fJetR)*(fEMCalEtaTotal-2*fJetR)); // The total physical area should be reduced by the eta & phi cuts due to looping over only fully contained kT jets within the EMCal
2791 kTRho*=CMSCorrectionFactor;
2793 fRhoFullCMS->FillRho(fEventCentrality,kTRho);
2794 fRhoFullCMS->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2795 fRhoFullCMS->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2796 fRhoFullCMS->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2797 fRhoFullCMS->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2798 fRhoFullCMS->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2799 fRhoFullCMS->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2804 void AliAnalysisTaskFullpAJets::JetPtChargedProfile()
2808 Double_t ED_pT[fEDProfileRBins];
2810 for (i=0;i<fTPCFullJet->GetTotalSignalJets();i++)
2812 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCFullJet->GetSignalJetIndex(i));
2813 if (InsideRect(myJet->Phi(),fTPCPhiMin,fTPCPhiMax,myJet->Eta(),fTPCEtaMin+fEDProfileRUp,fTPCEtaMax-fEDProfileRUp)==kTRUE)
2815 for (j=0;j<fEDProfileRBins;j++)
2819 TLorentzVector *jet_vec= new TLorentzVector;
2820 myJet->GetMom(*jet_vec);
2821 // Sum all tracks in concentric rings around jet vertex
2822 for (j=0;j<fnTracks;j++)
2824 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(j);
2825 TLorentzVector *track_vec = new TLorentzVector;
2826 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2827 delta_R=jet_vec->DeltaR(*track_vec);
2828 if (delta_R<=fEDProfileRUp)
2830 ED_pT[TMath::FloorNint((fEDProfileRBins/fEDProfileRUp)*delta_R)]+=vtrack->Pt();
2835 for (j=0;j<fEDProfileRBins;j++)
2837 ED_pT[j]/=TMath::Pi()*TMath::Power((fEDProfileRUp/fEDProfileRBins),2)*(2*j+1);
2838 fpChargedJetEDProfile[TMath::FloorNint(fEventCentrality/10.)]->Fill(myJet->Pt(),myJet->Eta(),(fEDProfileRUp/fEDProfileRBins)*j,ED_pT[j]);
2839 if (fEventCentrality<=20)
2841 fpChargedJetRProfile[4+TMath::FloorNint(myJet->Eta()*10.)]->Fill((fEDProfileRUp/fEDProfileRBins)*j,ED_pT[j]);
2849 void AliAnalysisTaskFullpAJets::JetPtFullProfile()
2853 Double_t ED_pT[fEDProfileRBins];
2855 for (i=0;i<fEMCalFullJet->GetTotalSignalJets();i++)
2857 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTFullJets->At(fEMCalFullJet->GetSignalJetIndex(i));
2858 if (InsideRect(myJet->Phi(),fEMCalPhiMin+fEDProfileRUp,fEMCalPhiMax-fEDProfileRUp,myJet->Eta(),fEMCalEtaMin+fEDProfileRUp,fEMCalEtaMax-fEDProfileRUp)==kTRUE)
2860 for (j=0;j<fEDProfileRBins;j++)
2864 TLorentzVector *jet_vec= new TLorentzVector;
2865 myJet->GetMom(*jet_vec);
2866 // Sum all tracks in concentric rings around jet vertex
2867 for (j=0;j<fnTracks;j++)
2869 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(j);
2870 TLorentzVector *track_vec = new TLorentzVector;
2871 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2872 delta_R=jet_vec->DeltaR(*track_vec);
2873 if (delta_R<=fEDProfileRUp)
2875 ED_pT[TMath::FloorNint((fEDProfileRBins/fEDProfileRUp)*delta_R)]+=vtrack->Pt();
2880 // Sum all clusters in concentric rings around jet vertex
2881 for (j=0;j<fnClusters;j++)
2883 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(j);
2884 TLorentzVector *cluster_vec = new TLorentzVector;
2885 vcluster->GetMomentum(*cluster_vec,fVertex);
2886 delta_R=jet_vec->DeltaR(*cluster_vec);
2887 if (delta_R<=fEDProfileRUp)
2889 ED_pT[TMath::FloorNint((fEDProfileRBins/fEDProfileRUp)*delta_R)]+=vcluster->E();
2894 for (j=0;j<fEDProfileRBins;j++)
2896 ED_pT[j]/=TMath::Pi()*TMath::Power((fEDProfileRUp/fEDProfileRBins),2)*(2*j+1);
2897 fpJetEDProfile[TMath::FloorNint(fEventCentrality/10.)]->Fill(myJet->Pt(),myJet->Eta(),(fEDProfileRUp/fEDProfileRBins)*j,ED_pT[j]);
2898 // Fill profile if a "most" central event (0-20%)
2899 if (fEventCentrality<=20)
2901 fpJetRProfile[2+TMath::FloorNint(myJet->Eta()*10.)]->Fill((fEDProfileRUp/fEDProfileRBins)*j,ED_pT[j]);
2906 // Fill constituent histogram
2907 for (j=0;j<myJet->GetNumberOfTracks();j++)
2909 AliVTrack* vtrack = (AliVTrack*) fOrgTracks->At(myJet->TrackAt(j));
2910 fhJetConstituentPt->Fill(myJet->Pt(),vtrack->Pt());
2913 for (j=0;j<myJet->GetNumberOfClusters();j++)
2915 AliVCluster* vcluster = (AliVCluster*) fOrgClusters->At(myJet->ClusterAt(j));
2916 TLorentzVector *cluster_vec = new TLorentzVector;
2917 vcluster->GetMomentum(*cluster_vec,fVertex);
2918 fhJetConstituentPt->Fill(myJet->Pt(),cluster_vec->Pt());
2925 void AliAnalysisTaskFullpAJets::JetPtEtaProfile()
2930 Double_t Eta_pT[fEtaProfileBins];
2931 Double_t Eta_abs_pT[Int_t(0.5*fEtaProfileBins)];
2933 for (i=0;i<fEMCalFullJet->GetTotalSignalJets();i++)
2935 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTFullJets->At(fEMCalFullJet->GetSignalJetIndex(i));
2936 if (IsInEMCal(myJet->Phi(),myJet->Eta())==kTRUE)
2938 for (j=0;j<fEtaProfileBins;j++)
2944 // Sum all tracks in strips of eta away from the jet vertex
2945 for (j=0;j<fnTracks;j++)
2947 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(j);
2949 delta_eta=TMath::Abs(vtrack->Eta()-myJet->Eta());
2950 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2952 Eta_pT[Int_t(0.5*fEtaProfileBins)+TMath::FloorNint(10*eta)]+=vtrack->Pt();
2953 Eta_abs_pT[TMath::FloorNint(10*delta_eta)]+=vtrack->Pt();
2957 // Sum all clusters in strips of eta away from the jet vertex
2958 for (j=0;j<fnClusters;j++)
2960 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(j);
2961 TLorentzVector *cluster_vec = new TLorentzVector;
2962 vcluster->GetMomentum(*cluster_vec,fVertex);
2963 eta=cluster_vec->Eta();
2964 delta_eta=TMath::Abs(cluster_vec->Eta()-myJet->Eta());
2965 Eta_pT[Int_t(0.5*fEtaProfileBins)+TMath::FloorNint(10*eta)]+=vcluster->E();
2966 Eta_abs_pT[TMath::FloorNint(10*delta_eta)]+=vcluster->E();
2970 for (j=0;j<fEtaProfileBins;j++)
2972 Eta_pT[j]/=0.1*fEMCalPhiTotal;
2973 // Fill profile if a "most" central event (0-20%)
2974 if (j<(10*(fEMCalEtaMax-TMath::Abs(myJet->Eta()))))
2976 Eta_abs_pT[j]/=0.2*fEMCalPhiTotal;
2980 Eta_abs_pT[j]/=0.1*fEMCalPhiTotal;
2982 // Fill profile if a "most" central event (0-20%)
2983 if (fEventCentrality<=20)
2985 fpJetAbsEtaProfile[7+TMath::FloorNint(myJet->Eta()*10.)]->Fill(0.1*j,Eta_abs_pT[j]);
2986 fpJetEtaProfile[7+TMath::FloorNint(myJet->Eta()*10.)]->Fill(0.1*(j-7),Eta_pT[j]);
2993 void AliAnalysisTaskFullpAJets::DeleteJetData(Bool_t EMCalOn)
2999 delete fTPCkTFullJet;
3004 delete fEMCalFullJet;
3005 delete fEMCalPartJet;
3006 delete fEMCalkTFullJet;
3010 /////////////////////////////////////////////////////////////////////////////////////////
3011 ///////////////// User Defined Functions ///////////////////////////////////////
3012 /////////////////////////////////////////////////////////////////////////////////////////
3014 Bool_t AliAnalysisTaskFullpAJets::IsDiJetEvent()
3016 // Determine if event contains a di-jet within the detector. Uses charged jets.
3017 // Requires the delta phi of the jets to be 180 +/- 15 degrees.
3018 // Requires both jets to be outside of the EMCal
3019 // Requires both jets to be signal jets
3021 const Double_t dijet_delta_phi=(180/360.)*2*TMath::Pi();
3022 const Double_t dijet_phi_acceptance=0.5*(30/360.)*2*TMath::Pi(); //Input the total acceptance within the paraenthesis to be +/- dijet_phi_acceptance
3023 Double_t dummy_phi=0.0;
3025 if (fTPCOnlyJet->GetTotalSignalJets()>1)
3027 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCOnlyJet->GetLeadingIndex());
3028 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCOnlyJet->GetSubLeadingIndex());
3029 dummy_phi=TMath::Min(TMath::Abs(myhJet->Phi()-myJet->Phi()),2*TMath::Pi()-TMath::Abs(myhJet->Phi()-myJet->Phi()));
3030 if (dummy_phi>(dijet_delta_phi-dijet_phi_acceptance))
3039 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)
3041 if (phi>phi_min && phi<phi_max)
3043 if (eta>eta_min && eta<eta_max)
3051 Bool_t AliAnalysisTaskFullpAJets::IsInEMCal(Double_t phi,Double_t eta)
3053 return InsideRect(phi,fEMCalPhiMin,fEMCalPhiMax,eta,fEMCalEtaMin,fEMCalEtaMax);
3056 Bool_t AliAnalysisTaskFullpAJets::IsInEMCalFull(Double_t r,Double_t phi,Double_t eta)
3058 return InsideRect(phi,fEMCalPhiMin+r,fEMCalPhiMax-r,eta,fEMCalEtaMin+r,fEMCalEtaMax-r);
3061 Bool_t AliAnalysisTaskFullpAJets::IsInEMCalPart(Double_t r,Double_t phi,Double_t eta)
3063 return InsideRect(phi,fEMCalPhiMin-r,fEMCalPhiMax+r,eta,fEMCalEtaMin-r,fEMCalEtaMax+r);
3066 Bool_t AliAnalysisTaskFullpAJets::IsInTPCFull(Double_t r,Double_t phi,Double_t eta)
3068 Bool_t in_EMCal= InsideRect(phi,fEMCalPhiMin-r,fEMCalPhiMax+r,eta,fEMCalEtaMin-r,fEMCalEtaMax+r);
3069 Bool_t in_TPC= InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin+r,fTPCEtaMax-r);
3071 if (in_EMCal==kFALSE && in_TPC==kTRUE)
3078 Bool_t AliAnalysisTaskFullpAJets::IsInTPC(Double_t r,Double_t phi,Double_t eta,Bool_t Complete)
3080 if (Complete==kTRUE)
3082 return InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin+r,fTPCEtaMax-r);
3084 return InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin,fTPCEtaMax);
3087 Bool_t AliAnalysisTaskFullpAJets::IsJetOverlap(AliEmcalJet *jet1,AliEmcalJet *jet2,Bool_t EMCalOn)
3092 Int_t jetCluster1=0;
3093 Int_t jetCluster2=0;
3095 for (i=0;i<jet1->GetNumberOfTracks();i++)
3097 jetTrack1=jet1->TrackAt(i);
3098 for (j=0;j<jet2->GetNumberOfTracks();j++)
3100 jetTrack2=jet2->TrackAt(j);
3101 if (jetTrack1 == jetTrack2)
3107 if (EMCalOn == kTRUE)
3109 for (i=0;i<jet1->GetNumberOfClusters();i++)
3111 jetCluster1=jet1->ClusterAt(i);
3112 for (j=0;j<jet2->GetNumberOfClusters();j++)
3114 jetCluster2=jet2->ClusterAt(j);
3115 if (jetCluster1 == jetCluster2)
3125 Double_t AliAnalysisTaskFullpAJets::AreaWithinTPC(Double_t r,Double_t eta)
3128 if (eta<(fTPCEtaMin+r))
3132 else if(eta>(fTPCEtaMax-r))
3140 return r*r*TMath::Pi()-AreaEdge(r,z);
3143 Double_t AliAnalysisTaskFullpAJets::AreaWithinEMCal(Double_t r,Double_t phi,Double_t eta)
3147 if (phi<(fEMCalPhiMin-r) || phi>(fEMCalPhiMax+r))
3151 else if (phi<(fEMCalPhiMin+r))
3155 else if (phi>(fEMCalPhiMin+r) && phi<(fEMCalPhiMax-r))
3164 if (eta<(fEMCalEtaMin-r) || eta>(fEMCalEtaMax+r))
3168 else if (eta<(fEMCalEtaMin+r))
3172 else if (eta>(fEMCalEtaMin+r) && eta<(fEMCalEtaMax-r))
3183 if (TMath::Sqrt(x*x+y*y)>=r)
3185 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y);
3187 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y)+AreaOverlap(r,x,y);
3189 else if ((x>=r && y<0) || (y>=r && x<0))
3191 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y);
3193 else if (x>0 && x<r && y<0)
3195 Double_t a=TMath::Sqrt(r*r-x*x);
3196 Double_t b=TMath::Sqrt(r*r-y*y);
3199 return r*r*TMath::ASin(b/r)+y*b;
3203 return 0.5*x*a+0.5*r*r*TMath::ASin(x/r)+0.5*y*b+x*y+0.5*r*r*TMath::ASin(b/r);
3206 else if (y>0 && y<r && x<0)
3208 Double_t a=TMath::Sqrt(r*r-x*x);
3209 Double_t b=TMath::Sqrt(r*r-y*y);
3212 return r*r*TMath::ASin(a/r)+x*a;
3216 return 0.5*y*b+0.5*r*r*TMath::ASin(y/r)+0.5*x*a+x*y+0.5*r*r*TMath::ASin(a/r);
3221 Double_t a=TMath::Sqrt(r*r-x*x);
3222 Double_t b=TMath::Sqrt(r*r-y*y);
3229 return 0.5*x*a+0.5*r*r*TMath::ASin(x/r)+0.5*y*b+x*y+0.5*r*r*TMath::ASin(b/r);
3234 Double_t AliAnalysisTaskFullpAJets::AreaEdge(Double_t r,Double_t z)
3236 Double_t a=TMath::Sqrt(r*r-z*z);
3237 return r*r*TMath::ASin(a/r)-a*z;
3240 Double_t AliAnalysisTaskFullpAJets::AreaOverlap(Double_t r,Double_t x,Double_t y)
3242 Double_t a=TMath::Sqrt(r*r-x*x);
3243 Double_t b=TMath::Sqrt(r*r-y*y);
3244 return x*y-0.5*(x*a+y*b)+0.5*r*r*(TMath::ASin(b/r)-TMath::ASin(x/r));
3247 Double_t AliAnalysisTaskFullpAJets::TransverseArea(Double_t r,Double_t psi0,Double_t phi,Double_t eta)
3249 Double_t area_left=0;
3250 Double_t area_right=0;
3254 Double_t eta_down=0;
3256 Double_t u=eta-fEMCalEtaMin;
3257 Double_t v=fEMCalEtaMax-eta;
3259 Double_t phi1=phi+u*TMath::Tan(psi0);
3260 Double_t phi2=phi-u*TMath::Tan(psi0);
3261 Double_t phi3=phi+v*TMath::Tan(psi0);
3262 Double_t phi4=phi-v*TMath::Tan(psi0);
3264 //Calculate the Left side area
3265 if (phi1>=fEMCalPhiMax)
3267 eta_a=eta-u*((fEMCalPhiMax-phi)/(phi1-phi));
3269 if (phi2<=fEMCalPhiMin)
3271 eta_b=eta-u*((phi-fEMCalPhiMin)/(phi-phi2));
3274 if ((phi1>=fEMCalPhiMax) && (phi2<=fEMCalPhiMin))
3276 eta_up=TMath::Max(eta_a,eta_b);
3277 eta_down=TMath::Min(eta_a,eta_b);
3279 area_left=(eta_down-fEMCalEtaMin)*fEMCalPhiTotal + 0.5*(fEMCalPhiTotal+2*(eta-eta_up)*TMath::Tan(psi0))*(eta_up-eta_down) + (eta-eta_up+r)*TMath::Tan(psi0)*(eta-eta_up-r);
3281 else if (phi1>=fEMCalPhiMax)
3283 area_left=0.5*(fEMCalPhiMax-phi2+2*(eta-eta_a)*TMath::Tan(psi0))*(eta_a-fEMCalEtaMin) + (eta-eta_a+r)*TMath::Tan(psi0)*(eta-eta_a-r);
3285 else if (phi2<=fEMCalPhiMin)
3287 area_left=0.5*(phi1-fEMCalPhiMin+2*(eta-eta_b)*TMath::Tan(psi0))*(eta_b-fEMCalEtaMin) + (eta-eta_b+r)*TMath::Tan(psi0)*(eta-eta_b-r);
3291 area_left=0.5*(phi1-phi2+2*r*TMath::Tan(psi0))*(u-r);
3294 // Calculate the Right side area
3295 if (phi3>=fEMCalPhiMax)
3297 eta_a=eta+v*((fEMCalPhiMax-phi)/(phi3-phi));
3299 if (phi4<=fEMCalPhiMin)
3301 eta_b=eta+v*((phi-fEMCalPhiMin)/(phi-phi4));
3304 if ((phi3>=fEMCalPhiMax) && (phi4<=fEMCalPhiMin))
3306 eta_up=TMath::Max(eta_a,eta_b);
3307 eta_down=TMath::Min(eta_a,eta_b);
3309 area_right=(fEMCalEtaMax-eta_up)*fEMCalPhiTotal + 0.5*(fEMCalPhiTotal+2*(eta_down-eta)*TMath::Tan(psi0))*(eta_down-eta_up) + (eta_down-eta+r)*TMath::Tan(psi0)*(eta_up-eta-r);
3311 else if (phi3>=fEMCalPhiMax)
3313 area_right=0.5*(fEMCalPhiMax-phi4+2*(eta_a-eta)*TMath::Tan(psi0))*(fEMCalEtaMax-eta_a) + (eta_a-eta+r)*TMath::Tan(psi0)*(eta_a-eta-r);
3315 else if (phi4<=fEMCalPhiMin)
3317 area_right=0.5*(phi3-fEMCalPhiMin+2*(eta_b-eta)*TMath::Tan(psi0))*(fEMCalEtaMax-eta_b) + (eta_b-eta+r)*TMath::Tan(psi0)*(eta_b-eta-r);
3321 area_right=0.5*(phi3-phi4+2*r*TMath::Tan(psi0))*(v-r);
3323 return area_left+area_right;
3326 Double_t AliAnalysisTaskFullpAJets::MedianRhokT(Double_t *pTkTEntries, Double_t *RhokTEntries, Int_t nEntries)
3328 // This function is used to calculate the median Rho kT value. The procedure is:
3329 // - Order the kT cluster array from highest rho value to lowest
3330 // - Exclude highest rho kT cluster
3331 // - Return the median rho value of the remaining subset
3334 const Double_t rho_min=-9.9999E+99;
3336 Double_t w[nEntries]; // Used for sorting
3337 Double_t smax=rho_min;
3343 for (j=0;j<nEntries;j++)
3348 for (j=0;j<nEntries;j++)
3350 if (pTkTEntries[j]>pTmax)
3352 pTmax=pTkTEntries[j];
3357 for (j=0;j<nEntries;j++)
3359 for (k=0;k<nEntries;k++)
3361 if (RhokTEntries[k]>smax)
3363 smax=RhokTEntries[k];
3368 RhokTEntries[sindex]=rho_min;
3372 return w[nEntries/2];
3376 // AlipAJetData Class Member Defs
3378 AliAnalysisTaskFullpAJets::AlipAJetData::AlipAJetData() :
3389 fSignalTrackBias(1),
3392 fPtSubLeadingIndex(0),
3400 // Dummy constructor ALWAYS needed for I/O.
3403 AliAnalysisTaskFullpAJets::AlipAJetData::AlipAJetData(const char *name, Bool_t isFull, Int_t nEntries) :
3414 fSignalTrackBias(1),
3417 fPtSubLeadingIndex(0),
3425 SetIsJetsFull(isFull);
3426 SetTotalEntries(nEntries);
3427 SetLeading(0,-9.99E+099);
3428 SetSubLeading(0,-9.99E+099);
3430 SetAreaCutFraction(0.6);
3432 SetSignalTrackPtBias(1);
3436 AliAnalysisTaskFullpAJets::AlipAJetData::~AlipAJetData()
3441 SetIsJetsFull(kFALSE);
3444 SetTotalSignalJets(0);
3448 SetAreaCutFraction(0);
3451 SetSignalTrackPtBias(kTRUE);
3453 delete [] fJetsIndex;
3454 delete [] fJetsSCIndex;
3455 delete [] fIsJetInArray;
3456 delete [] fJetMaxChargedPt;
3460 // User Defined Sub-Routines
3461 void AliAnalysisTaskFullpAJets::AlipAJetData::InitializeJetData(TClonesArray *jetList, Int_t nEntries)
3466 Double_t AreaThreshold = fAreaCutFrac*TMath::Pi()*TMath::Power(fJetR,2);
3468 // Initialize Jet Data
3469 for (i=0;i<nEntries;i++)
3471 AliEmcalJet *myJet =(AliEmcalJet*) jetList->At(i);
3473 if (fIsJetInArray[i]==kTRUE && myJet->Area()>AreaThreshold)
3476 if (myJet->Pt()>fPtMax)
3478 SetSubLeading(fPtMaxIndex,fPtMax);
3479 SetLeading(i,myJet->Pt());
3481 else if (myJet->Pt()>fPtSubLeading)
3483 SetSubLeading(i,myJet->Pt());
3485 // require leading charged constituent to have a pT greater then the signal threshold & Jet NEF to be less then the Signal Jet NEF cut
3486 fJetMaxChargedPt[i] = myJet->MaxTrackPt();
3487 if (fSignalTrackBias==kTRUE)
3489 if (fJetMaxChargedPt[i]>=fSignalPt && myJet->NEF()<=fNEF)
3491 SetSignalJetIndex(i,l);
3497 if (myJet->Pt()>=fSignalPt && myJet->NEF()<=fNEF)
3499 SetSignalJetIndex(i,l);
3507 SetTotalSignalJets(l);
3511 void AliAnalysisTaskFullpAJets::AlipAJetData::SetName(const char *name)
3516 void AliAnalysisTaskFullpAJets::AlipAJetData::SetIsJetsFull(Bool_t isFull)
3518 fIsJetsFull = isFull;
3521 void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalEntries(Int_t nEntries)
3524 fJetsIndex = new Int_t[fnTotal];
3525 fJetsSCIndex = new Int_t[fnTotal];
3526 fIsJetInArray = new Bool_t[fnTotal];
3527 fJetMaxChargedPt = new Double_t[fnTotal];
3530 void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalJets(Int_t nJets)
3535 void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalSignalJets(Int_t nSignalJets)
3537 fnJetsSC = nSignalJets;
3540 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalCut(Double_t Pt)
3545 void AliAnalysisTaskFullpAJets::AlipAJetData::SetLeading(Int_t index, Double_t Pt)
3547 fPtMaxIndex = index;
3551 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSubLeading(Int_t index, Double_t Pt)
3553 fPtSubLeadingIndex = index;
3557 void AliAnalysisTaskFullpAJets::AlipAJetData::SetJetIndex(Int_t index, Int_t At)
3559 fJetsIndex[At] = index;
3562 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalJetIndex(Int_t index, Int_t At)
3564 fJetsSCIndex[At] = index;
3567 void AliAnalysisTaskFullpAJets::AlipAJetData::SetIsJetInArray(Bool_t isInArray, Int_t At)
3569 fIsJetInArray[At] = isInArray;
3572 void AliAnalysisTaskFullpAJets::AlipAJetData::SetAreaCutFraction(Double_t areaFraction)
3574 fAreaCutFrac = areaFraction;
3577 void AliAnalysisTaskFullpAJets::AlipAJetData::SetJetR(Double_t jetR)
3582 void AliAnalysisTaskFullpAJets::AlipAJetData::SetNEF(Double_t nef)
3587 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalTrackPtBias(Bool_t chargedBias)
3589 fSignalTrackBias = chargedBias;
3593 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalEntries()
3598 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalJets()
3603 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalSignalJets()
3608 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSignalCut()
3613 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetLeadingIndex()
3618 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetLeadingPt()
3623 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSubLeadingIndex()
3625 return fPtSubLeadingIndex;
3628 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSubLeadingPt()
3630 return fPtSubLeading;
3633 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetJetIndex(Int_t At)
3635 return fJetsIndex[At];
3638 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSignalJetIndex(Int_t At)
3640 return fJetsSCIndex[At];
3643 Bool_t AliAnalysisTaskFullpAJets::AlipAJetData::GetIsJetInArray(Int_t At)
3645 return fIsJetInArray[At];
3648 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetJetMaxChargedPt(Int_t At)
3650 return fJetMaxChargedPt[At];
3653 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetNEF()
3658 // AlipAJetHistos Class Member Defs
3660 AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos() :
3672 /* fhBSPtCenLCT(0),*/
3674 fh80100BSPtSignal(0),
3681 fh020DeltaPtSignal(0),
3682 fh80100DeltaPtSignal(0),
3684 fhDeltaPtCenSignal(0),
3685 fh020DeltaPtNColl(0),
3686 fh80100DeltaPtNColl(0),
3688 fhDeltaPtCenNColl(0),
3690 fh80100BckgFlucPt(0),
3702 fhNEFEtaPhiSignal(0),
3705 fhNEFTotalMultSignal(0),
3706 fhNEFNeutralMult(0),
3707 fhNEFNeutralMultSignal(0),
3708 fhClusterShapeAll(0),
3709 fhClusterPtCellAll(0),
3710 fhNEFJetPtFCross(0),
3711 fhNEFZLeadingFCross(0),
3734 fLChargedTrackPtBins(0),
3735 fLChargedTrackPtLow(0),
3736 fLChargedTrackPtUp(0),
3741 fEMCalPhiMin(1.39626),
3742 fEMCalPhiMax(3.26377),
3747 // Dummy constructor ALWAYS needed for I/O.
3750 AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos(const char *name) :
3762 /* fhBSPtCenLCT(0),*/
3764 fh80100BSPtSignal(0),
3771 fh020DeltaPtSignal(0),
3772 fh80100DeltaPtSignal(0),
3774 fhDeltaPtCenSignal(0),
3775 fh020DeltaPtNColl(0),
3776 fh80100DeltaPtNColl(0),
3778 fhDeltaPtCenNColl(0),
3780 fh80100BckgFlucPt(0),
3792 fhNEFEtaPhiSignal(0),
3795 fhNEFTotalMultSignal(0),
3796 fhNEFNeutralMult(0),
3797 fhNEFNeutralMultSignal(0),
3798 fhClusterShapeAll(0),
3799 fhClusterPtCellAll(0),
3800 fhNEFJetPtFCross(0),
3801 fhNEFZLeadingFCross(0),
3824 fLChargedTrackPtBins(0),
3825 fLChargedTrackPtLow(0),
3826 fLChargedTrackPtUp(0),
3831 fEMCalPhiMin(1.39626),
3832 fEMCalPhiMax(3.26377),
3838 SetCentralityTag("V0A");
3839 SetCentralityRange(100,0,100);
3840 SetPtRange(250,-50,200);
3841 SetRhoPtRange(500,0,50);
3842 SetDeltaPtRange(200,-100,100);
3843 SetBackgroundFluctuationsPtRange(100,0,100);
3844 SetLeadingJetPtRange(200,0,200);
3845 SetLeadingChargedTrackPtRange(100,0,100);
3846 SetNEFRange(100,0,1);
3847 DoNEFQAPlots(kFALSE);
3852 AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos(const char *name, const char *centag, Bool_t doNEF) :
3864 /* fhBSPtCenLCT(0),*/
3866 fh80100BSPtSignal(0),
3873 fh020DeltaPtSignal(0),
3874 fh80100DeltaPtSignal(0),
3876 fhDeltaPtCenSignal(0),
3877 fh020DeltaPtNColl(0),
3878 fh80100DeltaPtNColl(0),
3880 fhDeltaPtCenNColl(0),
3882 fh80100BckgFlucPt(0),
3894 fhNEFEtaPhiSignal(0),
3897 fhNEFTotalMultSignal(0),
3898 fhNEFNeutralMult(0),
3899 fhNEFNeutralMultSignal(0),
3900 fhClusterShapeAll(0),
3901 fhClusterPtCellAll(0),
3902 fhNEFJetPtFCross(0),
3903 fhNEFZLeadingFCross(0),
3926 fLChargedTrackPtBins(0),
3927 fLChargedTrackPtLow(0),
3928 fLChargedTrackPtUp(0),
3933 fEMCalPhiMin(1.39626),
3934 fEMCalPhiMax(3.26377),
3940 SetCentralityTag(centag);
3941 SetCentralityRange(100,0,100);
3942 SetPtRange(250,-50,200);
3943 SetRhoPtRange(500,0,50);
3944 SetDeltaPtRange(200,-100,100);
3945 SetBackgroundFluctuationsPtRange(100,0,100);
3946 SetLeadingJetPtRange(200,0,200);
3947 SetLeadingChargedTrackPtRange(100,0,100);
3948 SetNEFRange(100,0,1);
3949 DoNEFQAPlots(doNEF);
3955 AliAnalysisTaskFullpAJets::AlipAJetHistos::~AlipAJetHistos()
3963 void AliAnalysisTaskFullpAJets::AlipAJetHistos::Init()
3965 // Initialize Private Variables
3966 fEMCalPhiMin=(80/(double)360)*2*TMath::Pi();
3967 fEMCalPhiMax=(187/(double)360)*2*TMath::Pi();
3971 fOutput = new TList();
3972 fOutput->SetOwner();
3973 fOutput->SetName(fName);
3975 TString RhoString="";
3976 TString PtString="";
3977 TString DeltaPtString="";
3978 TString BckgFlucPtString="";
3979 TString CentralityString;
3980 CentralityString = Form("Centrality (%s)",fCentralityTag);
3982 // Rho Spectral Plots
3983 RhoString = Form("%d-%d Centrality, Rho Spectrum",0,20);
3984 fh020Rho = new TH1D("fh020Rho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
3985 fh020Rho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
3986 fh020Rho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
3989 RhoString = Form("%d-%d Centrality, Rho Spectrum",80,100);
3990 fh80100Rho = new TH1D("fh80100Rho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
3991 fh80100Rho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
3992 fh80100Rho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
3993 fh80100Rho->Sumw2();
3995 RhoString = Form("%d-%d Centrality, Rho Spectrum",0,100);
3996 fhRho = new TH1D("fhRho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
3997 fhRho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
3998 fhRho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
4001 RhoString = "Rho Spectrum vs Centrality";
4002 fhRhoCen = new TH2D("fhRhoCen",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4003 fhRhoCen->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
4004 fhRhoCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4005 fhRhoCen->GetZaxis()->SetTitle("1/N_{Events} dN/d#rho");
4008 // Background Subtracted Plots
4009 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",0,20);
4010 fh020BSPt = new TH1D("fh020BSPt",PtString,fPtBins,fPtLow,fPtUp);
4011 fh020BSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4012 fh020BSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#phi");
4015 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",80,100);
4016 fh80100BSPt = new TH1D("fh80100BSPt",PtString,fPtBins,fPtLow,fPtUp);
4017 fh80100BSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4018 fh80100BSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#phi");
4019 fh80100BSPt->Sumw2();
4021 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",0,100);
4022 fhBSPt = new TH1D("fhBSPt",PtString,fPtBins,fPtLow,fPtUp);
4023 fhBSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4024 fhBSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#phi");
4027 PtString = "Background Subtracted Jet Spectrum vs Centrality";
4028 fhBSPtCen = new TH2D("fhBSPtCen",PtString,fPtBins,fPtLow,fPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4029 fhBSPtCen->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4030 fhBSPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4031 fhBSPtCen->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#phi");
4034 PtString = "Background Subtracted Jet Spectrum vs Centrality vs Leading Charge Track p_{T}";
4035 fhBSPtCenLCT = new TH3D("fhBSPtCenLCT",PtString,fPtBins,fPtLow,fPtUp,fCentralityBins,fCentralityLow,fCentralityUp,fLChargedTrackPtBins,fLChargedTrackPtLow,fLChargedTrackPtUp);
4036 fhBSPtCenLCT->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4037 fhBSPtCenLCT->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4038 fhBSPtCenLCT->GetZaxis()->SetTitle("Leading Charged Track p_{T} (GeV/c)");
4039 fhBSPtCenLCT->Sumw2();
4041 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",0,20);
4042 fh020BSPtSignal = new TH1D("fh020BSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
4043 fh020BSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4044 fh020BSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#phi");
4045 fh020BSPtSignal->Sumw2();
4047 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",80,100);
4048 fh80100BSPtSignal = new TH1D("fh80100BSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
4049 fh80100BSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4050 fh80100BSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#phi");
4051 fh80100BSPtSignal->Sumw2();
4053 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",0,100);
4054 fhBSPtSignal = new TH1D("fhBSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
4055 fhBSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4056 fhBSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#phi");
4057 fhBSPtSignal->Sumw2();
4059 PtString = "Background Subtracted Signal Jet Spectrum vs Centrality";
4060 fhBSPtCenSignal = new TH2D("fhBSPtCenSignal",PtString,fPtBins,fPtLow,fPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4061 fhBSPtCenSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4062 fhBSPtCenSignal->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4063 fhBSPtCenSignal->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#phi");
4064 fhBSPtCenSignal->Sumw2();
4066 // Delta Pt Plots with RC at least 2R away from Leading Signal
4067 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
4068 fh020DeltaPt = new TH1D("fh020DeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4069 fh020DeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4070 fh020DeltaPt->GetYaxis()->SetTitle("Probability Density");
4071 fh020DeltaPt->Sumw2();
4073 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
4074 fh80100DeltaPt = new TH1D("fh80100DeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4075 fh80100DeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4076 fh80100DeltaPt->GetYaxis()->SetTitle("Probability Density");
4077 fh80100DeltaPt->Sumw2();
4079 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
4080 fhDeltaPt = new TH1D("fhDeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4081 fhDeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4082 fhDeltaPt->GetYaxis()->SetTitle("Probability Density");
4085 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
4086 fhDeltaPtCen = new TH2D("fhDeltaPtCen",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4087 fhDeltaPtCen->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4088 fhDeltaPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4089 fhDeltaPtCen->GetZaxis()->SetTitle("Probability Density");
4090 fhDeltaPtCen->Sumw2();
4092 // Delta Pt Plots with no spatial restrictions on RC
4093 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
4094 fh020DeltaPtSignal = new TH1D("fh020DeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4095 fh020DeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4096 fh020DeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
4097 fh020DeltaPtSignal->Sumw2();
4099 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
4100 fh80100DeltaPtSignal = new TH1D("fh80100DeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4101 fh80100DeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4102 fh80100DeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
4103 fh80100DeltaPtSignal->Sumw2();
4105 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
4106 fhDeltaPtSignal = new TH1D("fhDeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4107 fhDeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4108 fhDeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
4109 fhDeltaPtSignal->Sumw2();
4111 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
4112 fhDeltaPtCenSignal = new TH2D("fhDeltaPtCenSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4113 fhDeltaPtCenSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4114 fhDeltaPtCenSignal->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4115 fhDeltaPtCenSignal->GetZaxis()->SetTitle("Probability Density");
4116 fhDeltaPtCenSignal->Sumw2();
4118 // Delta Pt Plots with NColl restrictions on RC
4119 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
4120 fh020DeltaPtNColl = new TH1D("fh020DeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4121 fh020DeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4122 fh020DeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
4123 fh020DeltaPtNColl->Sumw2();
4125 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
4126 fh80100DeltaPtNColl = new TH1D("fh80100DeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4127 fh80100DeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4128 fh80100DeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
4129 fh80100DeltaPtNColl->Sumw2();
4131 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
4132 fhDeltaPtNColl = new TH1D("fhDeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4133 fhDeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4134 fhDeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
4135 fhDeltaPtNColl->Sumw2();
4137 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
4138 fhDeltaPtCenNColl = new TH2D("fhDeltaPtCenNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4139 fhDeltaPtCenNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4140 fhDeltaPtCenNColl->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4141 fhDeltaPtCenNColl->GetZaxis()->SetTitle("Probability Density");
4142 fhDeltaPtCenNColl->Sumw2();
4144 // Background Fluctuations Pt Plots
4145 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",0,20);
4146 fh020BckgFlucPt = new TH1D("fh020BckgFlucPt",PtString,fPtBins,fPtLow,fPtUp);
4147 fh020BckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
4148 fh020BckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#phi");
4149 fh020BckgFlucPt->Sumw2();
4151 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",80,100);
4152 fh80100BckgFlucPt = new TH1D("fh80100BckgFlucPt",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp);
4153 fh80100BckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
4154 fh80100BckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#phi");
4155 fh80100BckgFlucPt->Sumw2();
4157 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",0,100);
4158 fhBckgFlucPt = new TH1D("fhBckgFlucPt",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp);
4159 fhBckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
4160 fhBckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#phi");
4161 fhBckgFlucPt->Sumw2();
4163 BckgFlucPtString = "Background Fluctuation p_{T} Spectrum vs Centrality";
4164 fhBckgFlucPtCen = new TH2D("fhBckgFlucPtCen",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4165 fhBckgFlucPtCen->GetXaxis()->SetTitle("#p_{T} (GeV/c)");
4166 fhBckgFlucPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4167 fhBckgFlucPtCen->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#phi");
4168 fhBckgFlucPtCen->Sumw2();
4170 // Background Density vs Centrality Profile
4171 RhoString = "Background Density vs Centrality";
4172 fpRho = new TProfile("fpRho",RhoString,fCentralityBins,fCentralityLow,fCentralityUp);
4173 fpRho->GetXaxis()->SetTitle(Form("%s",CentralityString.Data()));
4174 fpRho->GetYaxis()->SetTitle("p_{T}/Area (GeV/c)");
4176 // Background Density vs Leading Jet Profile
4177 fpLJetRho = new TProfile("fpLJetRho","#rho vs Leading Jet p_{T}",fLJetPtBins,fLJetPtLow,fLJetPtUp);
4178 fpLJetRho->GetXaxis()->SetTitle("Leading Jet p_{T}");
4179 fpLJetRho->GetYaxis()->SetTitle("p_{T}/Area (GeV/c)");
4181 // Neutral Energy Fraction Histograms & QA
4182 if (fDoNEFQAPlots==kTRUE)
4184 fNEFOutput = new TList();
4185 fNEFOutput->SetOwner();
4186 fNEFOutput->SetName("ListNEFQAPlots");
4189 fhNEF = new TH1D("fhNEF","Neutral Energy Fraction of All Jets",fNEFBins,fNEFLow,fNEFUp);
4190 fhNEF->GetXaxis()->SetTitle("NEF");
4191 fhNEF->GetYaxis()->SetTitle("1/N_{Events} dN/dNEF");
4194 fhNEFSignal = new TH1D("fhNEFSignal","Neutral Energy Fraction of Signal Jets",fNEFBins,fNEFLow,fNEFUp);
4195 fhNEFSignal->GetXaxis()->SetTitle("NEF");
4196 fhNEFSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dNEF");
4197 fhNEFSignal->Sumw2();
4199 fhNEFJetPt = new TH2D("fhNEFJetPt","Neutral Energy Fraction vs p_{T}^{jet}",fNEFBins,fNEFLow,fNEFUp,fPtBins,fPtLow,fPtUp);
4200 fhNEFJetPt->GetXaxis()->SetTitle("NEF");
4201 fhNEFJetPt->GetYaxis()->SetTitle("p_{T}^{jet} (GeV/c)");
4202 fhNEFJetPt->GetZaxis()->SetTitle("1/N_{Events} dN/dNEFdp_{T}");
4203 fhNEFJetPt->Sumw2();
4205 // Eta-Phi Dependence
4206 fhNEFEtaPhi = new TH2D("fhNEFEtaPhi","Neutral Energy Fraction #eta-#phi",TCBins, fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
4207 fhNEFEtaPhi->GetXaxis()->SetTitle("#eta");
4208 fhNEFEtaPhi->GetYaxis()->SetTitle("#phi");
4209 fhNEFEtaPhi->GetZaxis()->SetTitle("1/N{Events} dN/d#etad#phi");
4210 fhNEFEtaPhi->Sumw2();
4212 fhNEFEtaPhiSignal = new TH2D("fhNEFEtaPhiSignal","Neutral Energy Fraction #eta-#phi of Signal Jets",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
4213 fhNEFEtaPhiSignal->GetXaxis()->SetTitle("#eta");
4214 fhNEFEtaPhiSignal->GetYaxis()->SetTitle("#phi");
4215 fhNEFEtaPhiSignal->GetZaxis()->SetTitle("1/N{Events} dN/d#etad#phi");
4216 fhNEFEtaPhiSignal->Sumw2();
4218 fhEtaPhiNEF = new TH3D("fhEtaPhiNEF","Neutral Energy Fraction #eta-#phi",TCBins, fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax,fNEFBins,fNEFLow,fNEFUp);
4219 fhEtaPhiNEF->GetXaxis()->SetTitle("#eta");
4220 fhEtaPhiNEF->GetYaxis()->SetTitle("#phi");
4221 fhEtaPhiNEF->GetZaxis()->SetTitle("NEF");
4222 fhEtaPhiNEF->Sumw2();
4224 // Multiplicity Dependence
4225 fhNEFTotalMult = new TH2D("fhNEFTotalMult","Total Multiplicity Distribution of Constituents",fNEFBins,fNEFLow,fNEFUp,TCBins,0,(Double_t)TCBins);
4226 fhNEFTotalMult->GetXaxis()->SetTitle("NEF");
4227 fhNEFTotalMult->GetYaxis()->SetTitle("Multiplicity");
4228 fhNEFTotalMult->GetZaxis()->SetTitle("1/N_{Events} dN/dNEFdM");
4229 fhNEFTotalMult->Sumw2();
4231 fhNEFTotalMultSignal = new TH2D("fhNEFTotalMultSignal","Total Multiplicity Distribution of Constituents of Signal Jets",fNEFBins,fNEFLow,fNEFUp,TCBins,0,(Double_t)TCBins);
4232 fhNEFTotalMultSignal->GetXaxis()->SetTitle("NEF");
4233 fhNEFTotalMultSignal->GetYaxis()->SetTitle("Multiplicity");
4234 fhNEFTotalMultSignal->GetZaxis()->SetTitle("1/N_{Events} dN/dNEFdM");
4235 fhNEFTotalMultSignal->Sumw2();
4237 fhNEFNeutralMult = new TH2D("fhNEFNeutralMult","Neutral Multiplicity Distribution of Constituents",fNEFBins,fNEFLow,fNEFUp,TCBins,0,(Double_t)TCBins);
4238 fhNEFNeutralMult->GetXaxis()->SetTitle("NEF");
4239 fhNEFNeutralMult->GetYaxis()->SetTitle("Multiplicity");
4240 fhNEFNeutralMult->GetZaxis()->SetTitle("1/N_{Events} dN/dNEFdM");
4241 fhNEFNeutralMult->Sumw2();
4243 fhNEFNeutralMultSignal = new TH2D("fhNEFNeutralMultSignal","Neutral Multiplicity Distribution of Constituents of Signal Jets",fNEFBins,fNEFLow,fNEFUp,TCBins,0,(Double_t)TCBins);
4244 fhNEFNeutralMultSignal->GetXaxis()->SetTitle("NEF");
4245 fhNEFNeutralMultSignal->GetYaxis()->SetTitle("Multiplicity");
4246 fhNEFNeutralMultSignal->GetZaxis()->SetTitle("1/N_{Events} dN/dNEFdM");
4247 fhNEFNeutralMultSignal->Sumw2();
4250 fhClusterShapeAll = new TH1D("fhClusterShapeAll","Cluster Shape of all CaloClustersCorr",10*TCBins,0,10*TCBins);
4251 fhClusterShapeAll->GetXaxis()->SetTitle("Cells");
4252 fhClusterShapeAll->GetYaxis()->SetTitle("1/N_{Events} dN/dCells");
4253 fhClusterShapeAll->Sumw2();
4255 fhClusterPtCellAll = new TH2D("fhClusterPtCellAll","Cluster p_{T} vs Cluster Shape of all CaloClustersCorr",fPtBins,fPtLow,fPtUp,10*TCBins,0,10*TCBins);
4256 fhClusterPtCellAll->GetXaxis()->SetTitle("p_{T} (GeV/c)");
4257 fhClusterPtCellAll->GetYaxis()->SetTitle("Cells");
4258 fhClusterPtCellAll->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}dCells");
4259 fhClusterPtCellAll->Sumw2();
4261 fhNEFJetPtFCross = new TH3D("fhNEFJetPtFCross","NEF vs p_{T}^{jet} vs F_{Cross}",fNEFBins,fNEFLow,fNEFUp,fPtBins,fPtLow,fPtUp,TCBins,0,1.0);
4262 fhNEFJetPtFCross->GetXaxis()->SetTitle("NEF");
4263 fhNEFJetPtFCross->GetYaxis()->SetTitle("p_{T}^{jet} (GeV/c)");
4264 fhNEFJetPtFCross->GetZaxis()->SetTitle("F_{Cross}");
4265 fhNEFJetPtFCross->Sumw2();
4267 fhNEFZLeadingFCross = new TH3D("fhNEFZLeadingFCross","NEF vs z_{Leading} vs F_{Cross}",fNEFBins,fNEFLow,fNEFUp,TCBins,0,1.0,TCBins,0,1.0);
4268 fhNEFZLeadingFCross->GetXaxis()->SetTitle("NEF");
4269 fhNEFZLeadingFCross->GetYaxis()->SetTitle("z_{Leading}");
4270 fhNEFZLeadingFCross->GetZaxis()->SetTitle("F_{Cross}");
4271 fhNEFZLeadingFCross->Sumw2();
4273 fNEFOutput->Add(fhNEF);
4274 fNEFOutput->Add(fhNEFSignal);
4275 fNEFOutput->Add(fhNEFJetPt);
4276 fNEFOutput->Add(fhNEFEtaPhi);
4277 fNEFOutput->Add(fhNEFEtaPhiSignal);
4278 fNEFOutput->Add(fhEtaPhiNEF);
4279 fNEFOutput->Add(fhNEFTotalMult);
4280 fNEFOutput->Add(fhNEFTotalMultSignal);
4281 fNEFOutput->Add(fhNEFNeutralMult);
4282 fNEFOutput->Add(fhNEFNeutralMultSignal);
4283 fNEFOutput->Add(fhClusterShapeAll);
4284 fNEFOutput->Add(fhClusterPtCellAll);
4285 fNEFOutput->Add(fhNEFJetPtFCross);
4286 fNEFOutput->Add(fhNEFZLeadingFCross);
4287 fOutput->Add(fNEFOutput);
4290 // Add Histos & Profiles to List
4291 fOutput->Add(fh020Rho);
4292 fOutput->Add(fh80100Rho);
4293 fOutput->Add(fhRho);
4294 fOutput->Add(fhRhoCen);
4295 fOutput->Add(fh020BSPt);
4296 fOutput->Add(fh80100BSPt);
4297 fOutput->Add(fhBSPt);
4298 fOutput->Add(fhBSPtCen);
4299 //fOutput->Add(fhBSPtCenLCT);
4300 fOutput->Add(fh020BSPtSignal);
4301 fOutput->Add(fh80100BSPtSignal);
4302 fOutput->Add(fhBSPtSignal);
4303 fOutput->Add(fhBSPtCenSignal);
4304 fOutput->Add(fh020DeltaPt);
4305 fOutput->Add(fh80100DeltaPt);
4306 fOutput->Add(fhDeltaPt);
4307 fOutput->Add(fhDeltaPtCen);
4308 fOutput->Add(fh020DeltaPtSignal);
4309 fOutput->Add(fh80100DeltaPtSignal);
4310 fOutput->Add(fhDeltaPtSignal);
4311 fOutput->Add(fhDeltaPtCenSignal);
4312 fOutput->Add(fh020DeltaPtNColl);
4313 fOutput->Add(fh80100DeltaPtNColl);
4314 fOutput->Add(fhDeltaPtNColl);
4315 fOutput->Add(fhDeltaPtCenNColl);
4316 fOutput->Add(fh020BckgFlucPt);
4317 fOutput->Add(fh80100BckgFlucPt);
4318 fOutput->Add(fhBckgFlucPt);
4319 fOutput->Add(fhBckgFlucPtCen);
4320 fOutput->Add(fpRho);
4321 fOutput->Add(fpLJetRho);
4324 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetName(const char *name)
4329 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetCentralityTag(const char *name)
4331 fCentralityTag = name;
4334 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetCentralityRange(Int_t bins, Double_t low, Double_t up)
4336 fCentralityBins=bins;
4341 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetPtRange(Int_t bins, Double_t low, Double_t up)
4348 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetRhoPtRange(Int_t bins, Double_t low, Double_t up)
4355 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetDeltaPtRange(Int_t bins, Double_t low, Double_t up)
4362 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetBackgroundFluctuationsPtRange(Int_t bins, Double_t low, Double_t up)
4364 fBckgFlucPtBins=bins;
4369 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetLeadingJetPtRange(Int_t bins, Double_t low, Double_t up)
4376 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetLeadingChargedTrackPtRange(Int_t bins, Double_t low, Double_t up)
4378 fLChargedTrackPtBins=bins;
4379 fLChargedTrackPtLow=low;
4380 fLChargedTrackPtUp=up;
4383 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetNEFRange(Int_t bins, Double_t low, Double_t up)
4390 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillRho(Double_t eventCentrality, Double_t rho)
4395 fhRhoCen->Fill(rho,eventCentrality);
4396 fpRho->Fill(eventCentrality,rho);
4398 if (eventCentrality<=20)
4400 fh020Rho->Fill(rho);
4402 else if (eventCentrality>=80)
4404 fh80100Rho->Fill(rho);
4408 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillBSJS(Double_t eventCentrality, Double_t rho, Double_t signalCut, TClonesArray *jetList, Int_t *indexJetList, Int_t nIndexJetList)
4411 Double_t tempPt=0.0;
4412 Double_t tempChargedHighPt=0.0;
4414 for (i=0;i<nIndexJetList;i++)
4416 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
4417 tempPt=myJet->Pt()-rho*myJet->Area();
4418 tempChargedHighPt = myJet->MaxTrackPt();
4420 fhBSPt->Fill(tempPt);
4421 fhBSPtCen->Fill(tempPt,eventCentrality);
4422 //fhBSPtCenLCT->Fill(tempPt,eventCentrality,tempChargedHighPt);
4423 if (eventCentrality<=20)
4425 fh020BSPt->Fill(tempPt);
4427 else if (eventCentrality>=80)
4429 fh80100BSPt->Fill(tempPt);
4431 if (tempChargedHighPt>=signalCut)
4433 fhBSPtSignal->Fill(tempPt);
4434 fhBSPtCenSignal->Fill(tempPt,eventCentrality);
4435 if (eventCentrality<=20)
4437 fh020BSPtSignal->Fill(tempPt);
4439 else if (eventCentrality>=80)
4441 fh80100BSPtSignal->Fill(tempPt);
4445 tempChargedHighPt=0.0;
4449 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPt(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4452 Double_t tempPt=0.0;
4456 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4457 fhDeltaPt->Fill(tempPt);
4458 fhDeltaPtCen->Fill(tempPt,eventCentrality);
4459 if (eventCentrality<=20)
4461 fh020DeltaPt->Fill(tempPt);
4463 else if (eventCentrality>=80)
4465 fh80100DeltaPt->Fill(tempPt);
4471 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPtSignal(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4474 Double_t tempPt=0.0;
4478 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4479 fhDeltaPtSignal->Fill(tempPt);
4480 fhDeltaPtCenSignal->Fill(tempPt,eventCentrality);
4481 if (eventCentrality<=20)
4483 fh020DeltaPtSignal->Fill(tempPt);
4485 else if (eventCentrality>=80)
4487 fh80100DeltaPtSignal->Fill(tempPt);
4493 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPtNColl(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4496 Double_t tempPt=0.0;
4500 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4501 fhDeltaPtNColl->Fill(tempPt);
4502 fhDeltaPtCenNColl->Fill(tempPt,eventCentrality);
4503 if (eventCentrality<=20)
4505 fh020DeltaPtNColl->Fill(tempPt);
4507 else if (eventCentrality>=80)
4509 fh80100DeltaPtNColl->Fill(tempPt);
4515 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillBackgroundFluctuations(Double_t eventCentrality, Double_t rho, Double_t jetRadius)
4517 Double_t tempPt=0.0;
4519 tempPt=rho*TMath::Power(jetRadius,2);
4520 fhBckgFlucPt->Fill(tempPt);
4521 fhBckgFlucPtCen->Fill(tempPt,eventCentrality);
4522 if (eventCentrality<=20)
4524 fh020BckgFlucPt->Fill(tempPt);
4526 else if (eventCentrality>=80)
4528 fh80100BckgFlucPt->Fill(tempPt);
4532 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillLeadingJetPtRho(Double_t jetPt, Double_t rho)
4534 fpLJetRho->Fill(jetPt,rho);
4537 void AliAnalysisTaskFullpAJets::AlipAJetHistos::DoNEFQAPlots(Bool_t doNEFAna)
4539 fDoNEFQAPlots = doNEFAna;
4542 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)
4544 if (fDoNEFQAPlots==kFALSE)
4551 Double_t tempChargedHighPt=0.0;
4555 Int_t neutralMult=0;
4556 Int_t iSupMod = -1, absId = -1, ieta = -1, iphi = -1;
4557 Bool_t shared = kFALSE;
4559 Double_t zLeading=0.0;
4562 Double_t eCross=0.0;
4563 Double_t FCross=0.0;
4566 for (i=0;i<nIndexJetList;i++)
4568 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
4569 tempChargedHighPt = myJet->MaxTrackPt();
4573 totalMult=myJet->GetNumberOfConstituents();
4574 neutralMult=myJet->GetNumberOfClusters();
4575 zLeading=myJet->MaxClusterPt()/myJet->Pt();
4578 fhNEFJetPt->Fill(nef,myJet->Pt());
4579 fhNEFEtaPhi->Fill(eta,phi);
4580 fhEtaPhiNEF->Fill(eta,phi,nef);
4581 fhNEFTotalMult->Fill(nef,totalMult);
4582 fhNEFNeutralMult->Fill(nef,neutralMult);
4584 for (j=0;j<neutralMult;j++)
4586 AliVCluster* vcluster = (AliVCluster*) orgClusterList->At(myJet->ClusterAt(j));
4587 recoUtils->GetMaxEnergyCell(geometry,cells,vcluster,absId,iSupMod,ieta,iphi,shared);
4588 eSeed = cells->GetCellAmplitude(absId);
4589 tCell = cells->GetCellTime(absId);
4590 eCross = recoUtils->GetECross(absId,tCell,cells,event->GetBunchCrossNumber());
4591 FCross = 1 - eCross/eSeed;
4593 fhNEFJetPtFCross->Fill(nef,myJet->Pt(),FCross);
4594 fhNEFZLeadingFCross->Fill(nef,zLeading,FCross);
4600 iSupMod=-1,absId=-1,ieta=-1,iphi=-1;
4603 if (tempChargedHighPt>=signalCut)
4607 fhNEFSignal->Fill(nef);
4608 fhNEFEtaPhiSignal->Fill(eta,phi);
4609 fhNEFTotalMultSignal->Fill(nef,totalMult);
4610 fhNEFNeutralMultSignal->Fill(nef,neutralMult);
4614 tempChargedHighPt=0.0;
4622 // Now do Cluster QA
4623 // Finally, Cluster QA
4624 for (i=0;i<clusterList->GetEntries();i++)
4626 AliVCluster *vcluster = (AliVCluster*) clusterList->At(i);
4627 fhClusterShapeAll->Fill(vcluster->GetNCells());
4628 fhClusterPtCellAll->Fill(vcluster->E(),vcluster->GetNCells());
4632 TList* AliAnalysisTaskFullpAJets::AlipAJetHistos::GetOutputHistos()
4637 Double_t AliAnalysisTaskFullpAJets::AlipAJetHistos::GetRho()