]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskSAQA.cxx
fix warnings
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskSAQA.cxx
index f599a9e748ace092a4cce8a746ed941e081813fb..3353ab6bd6e28554e961831d16d407eb27413de1 100644 (file)
@@ -42,6 +42,9 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA() :
   fCentMethod2(""),
   fCentMethod3(""),
   fDoV0QA(0),
+  fDoEPQA(0),
+  fDoLeadingObjectPosition(0),
+  fMaxCellsInCluster(30),
   fCent2(0),
   fCent3(0),
   fVZERO(0),
@@ -53,6 +56,7 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA() :
   fHistNCellsEnergy(0),
   fHistFcrossEnergy(0),
   fHistClusTimeEnergy(0),
+  fHistClusEnergyMinusCellEnergy(0),
   fHistCellsAbsIdEnergy(0),
   fHistChVSneCells(0),
   fHistChVSneClus(0),
@@ -72,6 +76,7 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA() :
     fHistDeltaPhiPt[i] = 0;
     fHistDeltaPtvsPt[i] = 0;
     fHistClusPhiEtaEnergy[i] = 0;
+    fHistClusDeltaPhiEPEnergy[i] = 0;
     fHistClusMCEnergyFraction[i] = 0;
     fHistJetsPhiEta[i] = 0;
     fHistJetsPtArea[i] = 0;
@@ -89,6 +94,9 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA(const char *name) :
   fCentMethod2(""),
   fCentMethod3(""),
   fDoV0QA(0),
+  fDoEPQA(0),
+  fDoLeadingObjectPosition(0),
+  fMaxCellsInCluster(30),
   fCent2(0),
   fCent3(0),
   fVZERO(0),
@@ -100,6 +108,7 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA(const char *name) :
   fHistNCellsEnergy(0),
   fHistFcrossEnergy(0),
   fHistClusTimeEnergy(0),
+  fHistClusEnergyMinusCellEnergy(0),
   fHistCellsAbsIdEnergy(0),
   fHistChVSneCells(0),
   fHistChVSneClus(0),
@@ -119,6 +128,7 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA(const char *name) :
     fHistDeltaPhiPt[i] = 0;
     fHistDeltaPtvsPt[i] = 0;
     fHistClusPhiEtaEnergy[i] = 0;
+    fHistClusDeltaPhiEPEnergy[i] = 0;
     fHistClusMCEnergyFraction[i] = 0;
     fHistJetsPhiEta[i] = 0;
     fHistJetsPtArea[i] = 0;
@@ -140,7 +150,7 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
 
   AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
 
-  if (!fTracksName.IsNull()) {
+  if (fParticleCollArray.GetEntriesFast()>0) {
     if (!fParticleLevel && fIsMC) {
       fHistTrNegativeLabels = new TH1F("fHistTrNegativeLabels","fHistTrNegativeLabels", 500, 0, 1);
       fHistTrNegativeLabels->GetXaxis()->SetTitle("% of negative labels");
@@ -162,7 +172,7 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
     for (Int_t i = 0; i < fNcentBins; i++) {
       for (Int_t j = 0; j < nlabels; j++) {
        histname = Form("fHistTrPhiEtaPt_%d_%d",i,j);
-       fHistTrPhiEtaPt[i][j] = new TH3F(histname,histname, 100, -1, 1, 201, 0, TMath::Pi() * 2.01, fNbins, fMinBinPt, fMaxBinPt);
+       fHistTrPhiEtaPt[i][j] = new TH3F(histname,histname, 100, -1, 1, 101, 0, TMath::Pi() * 2.02, fNbins, fMinBinPt, fMaxBinPt);
        fHistTrPhiEtaPt[i][j]->GetXaxis()->SetTitle("#eta");
        fHistTrPhiEtaPt[i][j]->GetYaxis()->SetTitle("#phi");
        fHistTrPhiEtaPt[i][j]->GetZaxis()->SetTitle("p_{T} (GeV/c)");
@@ -172,7 +182,7 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
       if (!fParticleLevel) {
        if (fIsMC) {
          histname = Form("fHistTrPhiEtaZeroLab_%d",i);
-         fHistTrPhiEtaZeroLab[i] = new TH2F(histname,histname, 100, -1, 1, 201, 0, TMath::Pi() * 2.01);
+         fHistTrPhiEtaZeroLab[i] = new TH2F(histname,histname, 100, -1, 1, 101, 0, TMath::Pi() * 2.02);
          fHistTrPhiEtaZeroLab[i]->GetXaxis()->SetTitle("#eta");
          fHistTrPhiEtaZeroLab[i]->GetYaxis()->SetTitle("#phi");
          fHistTrPhiEtaZeroLab[i]->GetZaxis()->SetTitle("counts");
@@ -186,7 +196,7 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
        }
        
        histname = Form("fHistTrEmcPhiEta_%d",i);
-       fHistTrEmcPhiEta[i] = new TH2F(histname,histname, 100, -1, 1, 201, 0, TMath::Pi() * 2.01);
+       fHistTrEmcPhiEta[i] = new TH2F(histname,histname, 100, -1, 1, 101, 0, TMath::Pi() * 2.02);
        fHistTrEmcPhiEta[i]->GetXaxis()->SetTitle("#eta");
        fHistTrEmcPhiEta[i]->GetYaxis()->SetTitle("#phi");
        fOutput->Add(fHistTrEmcPhiEta[i]);
@@ -198,7 +208,7 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
        fOutput->Add(fHistTrEmcPt[i]);
        
        histname = Form("fHistTrPhiEtaNonProp_%d",i);
-       fHistTrPhiEtaNonProp[i] = new TH2F(histname,histname, 100, -1, 1, 201, 0, TMath::Pi() * 2.01);
+       fHistTrPhiEtaNonProp[i] = new TH2F(histname,histname, 100, -1, 1, 101, 0, TMath::Pi() * 2.02);
        fHistTrPhiEtaNonProp[i]->GetXaxis()->SetTitle("#eta");
        fHistTrPhiEtaNonProp[i]->GetYaxis()->SetTitle("#phi");
        fOutput->Add(fHistTrPhiEtaNonProp[i]);
@@ -225,23 +235,31 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
        fHistDeltaPtvsPt[i] = new TH2F(histname,histname, fNbins, fMinBinPt, fMaxBinPt, fNbins, -fMaxBinPt/2, fMaxBinPt/2);
        fHistDeltaPtvsPt[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
        fHistDeltaPtvsPt[i]->GetYaxis()->SetTitle("#deltap_{T} (GeV/c)");
+       fHistDeltaPtvsPt[i]->GetZaxis()->SetTitle("counts");
        fOutput->Add(fHistDeltaPtvsPt[i]);
       }
     }
   }
 
-  if (!fCaloName.IsNull()) {
+  if (fClusterCollArray.GetEntriesFast()>0) {
     TString histname;
 
     for (Int_t i = 0; i < fNcentBins; i++) {
       histname = "fHistClusPhiEtaEnergy_";
       histname += i;
-      fHistClusPhiEtaEnergy[i] = new TH3F(histname, histname, 100, -1.2, 1.2, 201, 0, TMath::Pi() * 2.01, fNbins, fMinBinPt, fMaxBinPt);
+      fHistClusPhiEtaEnergy[i] = new TH3F(histname, histname, 100, -1, 1, 101, 0, TMath::Pi() * 2.02, fNbins, fMinBinPt, fMaxBinPt);
       fHistClusPhiEtaEnergy[i]->GetXaxis()->SetTitle("#eta");
       fHistClusPhiEtaEnergy[i]->GetYaxis()->SetTitle("#phi");
       fHistClusPhiEtaEnergy[i]->GetZaxis()->SetTitle("E_{cluster} (GeV)");
       fOutput->Add(fHistClusPhiEtaEnergy[i]);
 
+      histname = "fHistClusDeltaPhiEPEnergy_";
+      histname += i;
+      fHistClusDeltaPhiEPEnergy[i] = new TH2F(histname, histname, fNbins, fMinBinPt, fMaxBinPt, 100, 0, TMath::Pi());
+      fHistClusDeltaPhiEPEnergy[i]->GetXaxis()->SetTitle("E_{cluster} (GeV)");
+      fHistClusDeltaPhiEPEnergy[i]->GetYaxis()->SetTitle("#phi_{cluster} - #psi_{RP}");
+      fOutput->Add(fHistClusDeltaPhiEPEnergy[i]);
+
       if (fIsEmbedded) {
        histname = "fHistClusMCEnergyFraction_";
        histname += i;
@@ -257,15 +275,23 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
     fHistClusTimeEnergy->GetYaxis()->SetTitle("Time");
     fOutput->Add(fHistClusTimeEnergy);
 
-    fHistNCellsEnergy = new TH2F("fHistNCellsEnergy","Number of cells vs. energy of clusters", fNbins, fMinBinPt, fMaxBinPt, 30, 0, 30);
+    Int_t nbins = fMaxCellsInCluster;
+    while (nbins > fNbins) nbins /= 2;
+    fHistNCellsEnergy = new TH2F("fHistNCellsEnergy","Number of cells vs. energy of clusters", fNbins, fMinBinPt, fMaxBinPt, nbins, -0.5, fMaxCellsInCluster-0.5);
     fHistNCellsEnergy->GetXaxis()->SetTitle("E_{cluster} (GeV)");
     fHistNCellsEnergy->GetYaxis()->SetTitle("N_{cells}");
-    fOutput->Add(fHistNCellsEnergy); 
+    fOutput->Add(fHistNCellsEnergy);
 
     fHistFcrossEnergy = new TH2F("fHistFcrossEnergy","fHistFcrossEnergy", fNbins, fMinBinPt, fMaxBinPt, 200, -3.5, 1.5);
     fHistFcrossEnergy->GetXaxis()->SetTitle("E_{cluster} (GeV)");
     fHistFcrossEnergy->GetYaxis()->SetTitle("F_{cross}");
     fOutput->Add(fHistFcrossEnergy); 
+
+    fHistClusEnergyMinusCellEnergy = new TH2F("fHistClusEnergyMinusCellEnergy","fHistClusEnergyMinusCellEnergy", 
+                                             fNbins, fMinBinPt, fMaxBinPt, fNbins, -fMaxBinPt/2, fMaxBinPt/2);
+    fHistClusEnergyMinusCellEnergy->GetXaxis()->SetTitle("E_{cluster} (GeV)");
+    fHistClusEnergyMinusCellEnergy->GetYaxis()->SetTitle("E_{cluster} - #Sigma_{i}E_{cell,i} (GeV)");
+    fOutput->Add(fHistClusEnergyMinusCellEnergy); 
      
     fHistCellsAbsIdEnergy = new TH2F("fHistCellsAbsIdEnergy","fHistCellsAbsIdEnergy", 11600,0,11599,(Int_t)(fNbins / 2), fMinBinPt, fMaxBinPt / 2);
     fHistCellsAbsIdEnergy->GetXaxis()->SetTitle("cell abs. Id");
@@ -292,14 +318,14 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
     fOutput->Add(fHistChVSneCorrCells);
   }
        
-  if (!fJetsName.IsNull()) {
+  if (fJetCollArray.GetEntriesFast()>0) {
 
     TString histname;
 
     for (Int_t i = 0; i < fNcentBins; i++) {
       histname = "fHistJetsPhiEta_";
       histname += i;
-      fHistJetsPhiEta[i] = new TH2F(histname.Data(), histname.Data(), 100, -1.2, 1.2, 201, 0, TMath::Pi() * 2.01);
+      fHistJetsPhiEta[i] = new TH2F(histname.Data(), histname.Data(), 100, -1, 1, 101, 0, TMath::Pi() * 2.02);
       fHistJetsPhiEta[i]->GetXaxis()->SetTitle("#eta");
       fHistJetsPhiEta[i]->GetYaxis()->SetTitle("#phi");
       fHistJetsPhiEta[i]->GetZaxis()->SetTitle("counts");
@@ -307,7 +333,7 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
 
       histname = "fHistJetsPtArea_";
       histname += i;
-      fHistJetsPtArea[i] = new TH2F(histname.Data(), histname.Data(), (Int_t)(fNbins * 2.5), fMinBinPt, fMaxBinPt * 2.5, 30, 0, fJetRadius * fJetRadius * TMath::Pi() * 3);
+      fHistJetsPtArea[i] = new TH2F(histname.Data(), histname.Data(), (Int_t)(fNbins * 2.5), fMinBinPt, fMaxBinPt * 2.5, 50, 0, 1.5);
       fHistJetsPtArea[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
       fHistJetsPtArea[i]->GetYaxis()->SetTitle("area");
       fOutput->Add(fHistJetsPtArea[i]);
@@ -315,10 +341,10 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
   }
   
   Int_t dim = 0;
-  TString title[10];
-  Int_t nbins[10] = {0};
-  Double_t min[10] = {0};
-  Double_t max[10] = {0};
+  TString title[20];
+  Int_t nbins[20] = {0};
+  Double_t min[20] = {0};
+  Double_t max[20] = {0};
   
   if (fForceBeamType != AliAnalysisTaskEmcal::kpp) {
     title[dim] = "Centrality %";
@@ -343,7 +369,7 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
       dim++;
     }
     
-    if (fDoV0QA) {
+    if (fDoV0QA==1) {
       title[dim] = "V0A total multiplicity";
       nbins[dim] = 200;
       min[dim] = 0;
@@ -356,6 +382,13 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
       max[dim] = 20000;
       dim++;
     }
+    else if (fDoV0QA==2) {
+      title[dim] = "V0A+V0C total multiplicity";
+      nbins[dim] = 300;
+      min[dim] = 0;
+      max[dim] = 30000;
+      dim++;
+    }
 
     if (!fRhoName.IsNull()) {
       title[dim] = "#rho (GeV/c)";
@@ -364,38 +397,106 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
       max[dim] = 400;
       dim++;
     }
+
+    if (fDoEPQA) {
+      title[dim] = "#psi_{RP}";
+      nbins[dim] = 200;
+      min[dim] = -TMath::Pi();
+      max[dim] = TMath::Pi();
+      dim++;
+    }
   }
 
-  if (!fTracksName.IsNull()) {
+  if (fParticleCollArray.GetEntriesFast()>0) {
     title[dim] = "No. of tracks";
-    nbins[dim] = 6000;
+    nbins[dim] = 3000;
     min[dim] = -0.5;
     max[dim] = 6000-0.5;
     dim++;
+
+    title[dim] = "p_{T,track}^{leading} (GeV/c)";
+    nbins[dim] = fNbins;
+    min[dim] = fMinBinPt;
+    max[dim] = fMaxBinPt;
+    dim++;
+
+    if (fDoLeadingObjectPosition) {
+      title[dim] = "#eta_{track}^{leading}";
+      nbins[dim] = 100;
+      min[dim] = -1;
+      max[dim] = 1;
+      dim++;
+
+      title[dim] = "#phi_{track}^{leading}";
+      nbins[dim] = 101;
+      min[dim] = 0;
+      max[dim] = TMath::Pi() * 2.02;
+      dim++;
+    }
   }
 
-  if (!fCaloName.IsNull()) {
+  if (fClusterCollArray.GetEntriesFast()>0) {
     title[dim] = "No. of clusters";
-    nbins[dim] = 4000;
+    nbins[dim] = 2000;
     min[dim] = 0;
     max[dim] = 4000-0.5;
     dim++;
+
+    title[dim] = "E_{cluster}^{leading} (GeV)";
+    nbins[dim] = fNbins;
+    min[dim] = fMinBinPt;
+    max[dim] = fMaxBinPt;
+    dim++;
+
+    if (fDoLeadingObjectPosition) {
+      title[dim] = "#eta_{cluster}^{leading}";
+      nbins[dim] = 100;
+      min[dim] = -1;
+      max[dim] = 1;
+      dim++;
+
+      title[dim] = "#phi_{cluster}^{leading}";
+      nbins[dim] = 101;
+      min[dim] = 0;
+      max[dim] = TMath::Pi() * 2.02;
+      dim++;
+    }
   }
 
   if (!fCaloCellsName.IsNull()) {
     title[dim] = "No. of cells";
-    nbins[dim] = 6000;
+    nbins[dim] = 3000;
     min[dim] = 0;
     max[dim] = 6000-0.5;
     dim++;
   }
 
-  if (!fJetsName.IsNull()) {
+  if (fJetCollArray.GetEntriesFast()>0) {
     title[dim] = "No. of jets";
     nbins[dim] = 200;
     min[dim] = 0;
     max[dim] = 200-0.5;
     dim++;
+
+    title[dim] = "p_{T,jet}^{leading} (GeV/c)";
+    nbins[dim] = fNbins;
+    min[dim] = fMinBinPt;
+    max[dim] = fMaxBinPt;
+    dim++;
+
+    if (fDoLeadingObjectPosition) {
+      title[dim] = "#eta_{jet}^{leading}";
+      nbins[dim] = 100;
+      min[dim] = -1;
+      max[dim] = 1;
+      dim++;
+
+      title[dim] = "#phi_{jet}^{leading}";
+      nbins[dim] = 101;
+      min[dim] = 0;
+      max[dim] = TMath::Pi() * 2.02;
+      dim++;
+    }
   }
 
   fHistEventQA = new THnSparseF("fHistEventQA","fHistEventQA",dim,nbins,min,max);
@@ -462,16 +563,46 @@ Bool_t AliAnalysisTaskSAQA::FillHistograms()
   Int_t nclusters = 0;
   Int_t ncells = 0;
   Int_t njets = 0;
+
+  Float_t leadingClusE = 0;
+  Float_t leadingClusEta = 0;
+  Float_t leadingClusPhi = 0;
+
+  Float_t leadingTrackPt = 0;
+  Float_t leadingTrackEta = 0;
+  Float_t leadingTrackPhi = 0;
+
+  Float_t leadingJetPt = 0;
+  Float_t leadingJetEta = 0;
+  Float_t leadingJetPhi = 0;
     
   if (fTracks) {
-    ntracks = DoTrackLoop(trackSum);
+    AliVParticle *leadingTrack = 0;
+
+    ntracks = DoTrackLoop(trackSum, leadingTrack);
     AliDebug(2,Form("%d tracks found in the event", ntracks));
+
+    if (leadingTrack) {
+      leadingTrackPt = leadingTrack->Pt();
+      leadingTrackEta = leadingTrack->Eta();
+      leadingTrackPhi = leadingTrack->Phi();
+    }
   } 
 
   if (fCaloClusters) {
-    nclusters = DoClusterLoop(clusSum);
+    AliVCluster  *leadingClus = 0;
+
+    nclusters = DoClusterLoop(clusSum, leadingClus);
     AliDebug(2,Form("%d clusters found in the event", nclusters));
 
+    if (leadingClus) {
+      TLorentzVector leadingClusVect;
+      leadingClus->GetMomentum(leadingClusVect, fVertex);
+      leadingClusE = leadingClus->E();
+      leadingClusEta = leadingClusVect.Eta();
+      leadingClusPhi = leadingClusVect.Phi();
+    }
+
     fHistChVSneClus->Fill(clusSum, trackSum);
   }
   
@@ -484,19 +615,35 @@ Bool_t AliAnalysisTaskSAQA::FillHistograms()
   }
 
   if (fJets) {
-    njets = DoJetLoop();
+    AliEmcalJet  *leadingJet = 0;
+
+    njets = DoJetLoop(leadingJet);
     AliDebug(2,Form("%d jets found in the event", njets));
+
+    if (leadingJet) {
+      leadingJetPt = leadingJet->Pt();
+      leadingJetEta = leadingJet->Eta();
+      leadingJetPhi = leadingJet->Phi();
+    }
   }
 
-  FillEventQAHisto(fCent, fCent2, fCent3, fV0ATotMult, fV0CTotMult, fRhoVal, ntracks, nclusters, ncells, njets);
+  FillEventQAHisto(fCent, fCent2, fCent3, fV0ATotMult, fV0CTotMult, fEPV0, fRhoVal, 
+                  ntracks, nclusters, ncells, njets, 
+                  leadingTrackPt, leadingTrackEta, leadingTrackPhi, 
+                  leadingClusE, leadingClusEta, leadingClusPhi, 
+                  leadingJetPt, leadingJetEta, leadingJetPhi);
 
   return kTRUE;
 }
 
 //________________________________________________________________________
-void AliAnalysisTaskSAQA::FillEventQAHisto(Float_t cent, Float_t cent2, Float_t cent3, Float_t v0a, Float_t v0c, Float_t rho, Int_t ntracks, Int_t nclusters, Int_t ncells, Int_t njets)
+void AliAnalysisTaskSAQA::FillEventQAHisto(Float_t cent, Float_t cent2, Float_t cent3, Float_t v0a, Float_t v0c, 
+                                          Float_t ep, Float_t rho, Int_t ntracks, Int_t nclusters, Int_t ncells, Int_t njets, 
+                                          Float_t maxTrackPt, Float_t maxTrackEta, Float_t maxTrackPhi,
+                                          Float_t maxClusterE, Float_t maxClusterEta, Float_t maxClusterPhi,
+                                          Float_t maxJetPt, Float_t maxJetEta, Float_t maxJetPhi)
 {
-  Double_t contents[10]={0};
+  Double_t contents[20]={0};
 
   for (Int_t i = 0; i < fHistEventQA->GetNdimensions(); i++) {
     TString title(fHistEventQA->GetAxis(i)->GetTitle());
@@ -510,6 +657,10 @@ void AliAnalysisTaskSAQA::FillEventQAHisto(Float_t cent, Float_t cent2, Float_t
       contents[i] = v0a;
     else if (title=="V0C total multiplicity")
       contents[i] = v0c;
+    else if (title=="V0A+V0C total multiplicity")
+      contents[i] = v0a+v0c;
+    else if (title=="#psi_{RP}")
+      contents[i] = ep;
     else if (title=="#rho (GeV/c)")
       contents[i] = rho;
     else if (title=="No. of tracks")
@@ -520,6 +671,24 @@ void AliAnalysisTaskSAQA::FillEventQAHisto(Float_t cent, Float_t cent2, Float_t
       contents[i] = ncells;
     else if (title=="No. of jets")
       contents[i] = njets;
+    else if (title=="p_{T,track}^{leading} (GeV/c)")
+      contents[i] = maxTrackPt;
+    else if (title=="#eta_{track}^{leading}")
+      contents[i] = maxTrackEta;
+    else if (title=="#phi_{track}^{leading}")
+      contents[i] = maxTrackPhi;
+    else if (title=="E_{cluster}^{leading} (GeV)")
+      contents[i] = maxClusterE;
+    else if (title=="#eta_{cluster}^{leading}")
+      contents[i] = maxClusterEta;
+    else if (title=="#phi_{cluster}^{leading}")
+      contents[i] = maxClusterPhi;
+    else if (title=="p_{T,jet}^{leading} (GeV/c)")
+      contents[i] = maxJetPt;
+    else if (title=="#eta_{jet}^{leading}")
+      contents[i] = maxJetEta;
+    else if (title=="#phi_{jet}^{leading}")
+      contents[i] = maxJetPhi;
     else 
       AliWarning(Form("Unable to fill dimension %s!",title.Data()));
   }
@@ -552,6 +721,15 @@ Int_t AliAnalysisTaskSAQA::DoCellLoop(Float_t &sum, Float_t &sum_cut)
   return ncells;
 }
 
+//________________________________________________________________________
+Double_t AliAnalysisTaskSAQA::GetCellEnergySum(AliVCluster *cluster, AliVCaloCells *cells)
+{
+  Double_t sum = 0;
+  for (Int_t i = 0; i < cluster->GetNCells(); i++) 
+    sum += cells->GetCellAmplitude(cluster->GetCellAbsId(i));
+  return sum;
+}
+
 //________________________________________________________________________
 Double_t AliAnalysisTaskSAQA::GetFcross(AliVCluster *cluster, AliVCaloCells *cells)
 {
@@ -612,7 +790,7 @@ Double_t AliAnalysisTaskSAQA::GetFcross(AliVCluster *cluster, AliVCaloCells *cel
 }
 
 //________________________________________________________________________
-Int_t AliAnalysisTaskSAQA::DoClusterLoop(Float_t &sum)
+Int_t AliAnalysisTaskSAQA::DoClusterLoop(Float_t &sum, AliVCluster* &leading)
 {
   // Do cluster loop.
 
@@ -624,6 +802,7 @@ Int_t AliAnalysisTaskSAQA::DoClusterLoop(Float_t &sum)
   AliVCaloCells *cells = InputEvent()->GetEMCALCells();
 
   sum = 0;
+  leading = 0;
 
   // Cluster loop
   const Int_t nclusters = fCaloClusters->GetEntriesFast();
@@ -640,16 +819,25 @@ Int_t AliAnalysisTaskSAQA::DoClusterLoop(Float_t &sum)
 
     sum += cluster->E();
 
+    if (!leading || leading->E() < cluster->E()) leading = cluster;
+
     TLorentzVector nPart;
     cluster->GetMomentum(nPart, fVertex);
 
     fHistClusPhiEtaEnergy[fCentBin]->Fill(nPart.Eta(), nPart.Phi(), cluster->E());
+
+    Double_t ep = nPart.Phi() - fEPV0;
+    while (ep < 0) ep += TMath::Pi();
+    while (ep >= TMath::Pi()) ep -= TMath::Pi();
+    fHistClusDeltaPhiEPEnergy[fCentBin]->Fill(cluster->E(), ep);
+
     fHistNCellsEnergy->Fill(cluster->E(), cluster->GetNCells());
 
     fHistClusTimeEnergy->Fill(cluster->E(), cluster->GetTOF());
 
-    if (cells)
-      fHistFcrossEnergy->Fill(cluster->E(), GetFcross(cluster, cells));
+    if (cells) fHistFcrossEnergy->Fill(cluster->E(), GetFcross(cluster, cells));
+
+    if (cells) fHistClusEnergyMinusCellEnergy->Fill(cluster->E(), cluster->E() - GetCellEnergySum(cluster,cells));
 
     if (fHistClusMCEnergyFraction[fCentBin])
       fHistClusMCEnergyFraction[fCentBin]->Fill(cluster->GetMCEnergyFraction());
@@ -661,7 +849,7 @@ Int_t AliAnalysisTaskSAQA::DoClusterLoop(Float_t &sum)
 }
 
 //________________________________________________________________________
-Int_t AliAnalysisTaskSAQA::DoTrackLoop(Float_t &sum)
+Int_t AliAnalysisTaskSAQA::DoTrackLoop(Float_t &sum, AliVParticle* &leading)
 {
   // Do track loop.
 
@@ -671,6 +859,7 @@ Int_t AliAnalysisTaskSAQA::DoTrackLoop(Float_t &sum)
   Int_t nAccTracks = 0;
 
   sum = 0;
+  leading = 0;
 
   const Int_t ntracks = fTracks->GetEntriesFast();
   Int_t neg = 0;
@@ -692,6 +881,8 @@ Int_t AliAnalysisTaskSAQA::DoTrackLoop(Float_t &sum)
 
     sum += track->P();
 
+    if (!leading || leading->Pt() < track->Pt()) leading = track;
+
     if (fParticleLevel) {
       fHistTrPhiEtaPt[fCentBin][0]->Fill(track->Eta(), track->Phi(), track->Pt());
     }
@@ -752,7 +943,7 @@ Int_t AliAnalysisTaskSAQA::DoTrackLoop(Float_t &sum)
 }
 
 //________________________________________________________________________
-Int_t AliAnalysisTaskSAQA::DoJetLoop()
+Int_t AliAnalysisTaskSAQA::DoJetLoop(AliEmcalJet* &leading)
 {
   // Do jet loop.
 
@@ -761,6 +952,8 @@ Int_t AliAnalysisTaskSAQA::DoJetLoop()
 
   Int_t nAccJets = 0;
 
+  leading = 0;
+
   Int_t njets = fJets->GetEntriesFast();
 
   for (Int_t ij = 0; ij < njets; ij++) {
@@ -775,6 +968,8 @@ Int_t AliAnalysisTaskSAQA::DoJetLoop()
     if (!AcceptJet(jet))
       continue;
 
+    if (!leading || leading->Pt() < jet->Pt()) leading = jet;
+
     nAccJets++;
 
     fHistJetsPhiEta[fCentBin]->Fill(jet->Eta(), jet->Phi());