]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskSAQA.cxx
temporary patch to catch undermined runnumbers
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskSAQA.cxx
index f8f839e4ef36e66ade8055ce6f7b6972e69dd698..3353ab6bd6e28554e961831d16d407eb27413de1 100644 (file)
@@ -35,7 +35,7 @@ ClassImp(AliAnalysisTaskSAQA)
 
 //________________________________________________________________________
 AliAnalysisTaskSAQA::AliAnalysisTaskSAQA() : 
-  AliAnalysisTaskEmcalJetDev("AliAnalysisTaskSAQA", kTRUE),
+  AliAnalysisTaskEmcalJet("AliAnalysisTaskSAQA", kTRUE),
   fCellEnergyCut(0.1),
   fParticleLevel(kFALSE),
   fIsMC(kFALSE),
@@ -43,6 +43,7 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA() :
   fCentMethod3(""),
   fDoV0QA(0),
   fDoEPQA(0),
+  fDoLeadingObjectPosition(0),
   fMaxCellsInCluster(30),
   fCent2(0),
   fCent3(0),
@@ -55,6 +56,7 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA() :
   fHistNCellsEnergy(0),
   fHistFcrossEnergy(0),
   fHistClusTimeEnergy(0),
+  fHistClusEnergyMinusCellEnergy(0),
   fHistCellsAbsIdEnergy(0),
   fHistChVSneCells(0),
   fHistChVSneClus(0),
@@ -72,8 +74,9 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA() :
     fHistTrPtNonProp[i] = 0;
     fHistDeltaEtaPt[i] = 0;
     fHistDeltaPhiPt[i] = 0;
-    fHistDeltaPtvsPtvsMass[i] = 0;
+    fHistDeltaPtvsPt[i] = 0;
     fHistClusPhiEtaEnergy[i] = 0;
+    fHistClusDeltaPhiEPEnergy[i] = 0;
     fHistClusMCEnergyFraction[i] = 0;
     fHistJetsPhiEta[i] = 0;
     fHistJetsPtArea[i] = 0;
@@ -84,7 +87,7 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA() :
 
 //________________________________________________________________________
 AliAnalysisTaskSAQA::AliAnalysisTaskSAQA(const char *name) : 
-  AliAnalysisTaskEmcalJetDev(name, kTRUE),
+  AliAnalysisTaskEmcalJet(name, kTRUE),
   fCellEnergyCut(0.1),
   fParticleLevel(kFALSE),
   fIsMC(kFALSE),
@@ -92,6 +95,7 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA(const char *name) :
   fCentMethod3(""),
   fDoV0QA(0),
   fDoEPQA(0),
+  fDoLeadingObjectPosition(0),
   fMaxCellsInCluster(30),
   fCent2(0),
   fCent3(0),
@@ -104,6 +108,7 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA(const char *name) :
   fHistNCellsEnergy(0),
   fHistFcrossEnergy(0),
   fHistClusTimeEnergy(0),
+  fHistClusEnergyMinusCellEnergy(0),
   fHistCellsAbsIdEnergy(0),
   fHistChVSneCells(0),
   fHistChVSneClus(0),
@@ -121,8 +126,9 @@ AliAnalysisTaskSAQA::AliAnalysisTaskSAQA(const char *name) :
     fHistTrPtNonProp[i] = 0;
     fHistDeltaEtaPt[i] = 0;
     fHistDeltaPhiPt[i] = 0;
-    fHistDeltaPtvsPtvsMass[i] = 0;
+    fHistDeltaPtvsPt[i] = 0;
     fHistClusPhiEtaEnergy[i] = 0;
+    fHistClusDeltaPhiEPEnergy[i] = 0;
     fHistClusMCEnergyFraction[i] = 0;
     fHistJetsPhiEta[i] = 0;
     fHistJetsPtArea[i] = 0;
@@ -142,7 +148,7 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
 {
   // Create histograms
 
-  AliAnalysisTaskEmcalJetDev::UserCreateOutputObjects();
+  AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
 
   if (fParticleCollArray.GetEntriesFast()>0) {
     if (!fParticleLevel && fIsMC) {
@@ -166,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)");
@@ -176,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");
@@ -190,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]);
@@ -202,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,12 +231,12 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
        fHistDeltaPhiPt[i]->GetYaxis()->SetTitle("#delta#phi");
        fOutput->Add(fHistDeltaPhiPt[i]);
        
-       histname = Form("fHistDeltaPtvsPtvsMass_%d",i);
-       fHistDeltaPtvsPtvsMass[i] = new TH3F(histname,histname, fNbins, fMinBinPt, fMaxBinPt, fNbins, -fMaxBinPt/2, fMaxBinPt/2, 30, 0, 3);
-       fHistDeltaPtvsPtvsMass[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
-       fHistDeltaPtvsPtvsMass[i]->GetYaxis()->SetTitle("#deltap_{T} (GeV/c)");
-       fHistDeltaPtvsPtvsMass[i]->GetZaxis()->SetTitle("mass (GeV/c^{2})");
-       fOutput->Add(fHistDeltaPtvsPtvsMass[i]);
+       histname = Form("fHistDeltaPtvsPt_%d",i);
+       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]);
       }
     }
   }
@@ -241,12 +247,19 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
     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;
@@ -273,6 +286,12 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
     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");
@@ -306,7 +325,7 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
     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");
@@ -327,7 +346,7 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
   Double_t min[20] = {0};
   Double_t max[20] = {0};
   
-  if (fForceBeamType != AliAnalysisTaskEmcalDev::kpp) {
+  if (fForceBeamType != AliAnalysisTaskEmcal::kpp) {
     title[dim] = "Centrality %";
     nbins[dim] = 101;
     min[dim] = 0;
@@ -400,6 +419,20 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
     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 (fClusterCollArray.GetEntriesFast()>0) {
@@ -414,6 +447,20 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
     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()) {
@@ -436,6 +483,20 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
     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);
@@ -449,7 +510,7 @@ void AliAnalysisTaskSAQA::UserCreateOutputObjects()
 //________________________________________________________________________
 void AliAnalysisTaskSAQA::ExecOnce()
 {
-  AliAnalysisTaskEmcalJetDev::ExecOnce();
+  AliAnalysisTaskEmcalJet::ExecOnce();
   
   if (fDoV0QA) {
     fVZERO = InputEvent()->GetVZEROData();
@@ -464,7 +525,7 @@ Bool_t AliAnalysisTaskSAQA::RetrieveEventObjects()
 {
   // Retrieve event objects.
 
-  if (!AliAnalysisTaskEmcalJetDev::RetrieveEventObjects())
+  if (!AliAnalysisTaskEmcalJet::RetrieveEventObjects())
     return kFALSE;
 
   if (!fCentMethod2.IsNull() || !fCentMethod3.IsNull()) {
@@ -503,19 +564,45 @@ Bool_t AliAnalysisTaskSAQA::FillHistograms()
   Int_t ncells = 0;
   Int_t njets = 0;
 
-  Float_t leadingTrack = 0;
-  Float_t leadingClus = 0;
-  Float_t leadingJet = 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) {
+    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) {
+    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);
   }
   
@@ -528,11 +615,23 @@ Bool_t AliAnalysisTaskSAQA::FillHistograms()
   }
 
   if (fJets) {
+    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, fEPV0, fRhoVal, ntracks, nclusters, ncells, njets, leadingTrack, leadingClus, leadingJet);
+  FillEventQAHisto(fCent, fCent2, fCent3, fV0ATotMult, fV0CTotMult, fEPV0, fRhoVal, 
+                  ntracks, nclusters, ncells, njets, 
+                  leadingTrackPt, leadingTrackEta, leadingTrackPhi, 
+                  leadingClusE, leadingClusEta, leadingClusPhi, 
+                  leadingJetPt, leadingJetEta, leadingJetPhi);
 
   return kTRUE;
 }
@@ -540,7 +639,9 @@ Bool_t AliAnalysisTaskSAQA::FillHistograms()
 //________________________________________________________________________
 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 maxtrack, Float_t maxcluster, Float_t maxjet)
+                                          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[20]={0};
 
@@ -571,11 +672,23 @@ void AliAnalysisTaskSAQA::FillEventQAHisto(Float_t cent, Float_t cent2, Float_t
     else if (title=="No. of jets")
       contents[i] = njets;
     else if (title=="p_{T,track}^{leading} (GeV/c)")
-      contents[i] = maxtrack;
+      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] = maxcluster;
+      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] = maxjet;
+      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()));
   }
@@ -608,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)
 {
@@ -668,7 +790,7 @@ Double_t AliAnalysisTaskSAQA::GetFcross(AliVCluster *cluster, AliVCaloCells *cel
 }
 
 //________________________________________________________________________
-Int_t AliAnalysisTaskSAQA::DoClusterLoop(Float_t &sum, Float_t &leading)
+Int_t AliAnalysisTaskSAQA::DoClusterLoop(Float_t &sum, AliVCluster* &leading)
 {
   // Do cluster loop.
 
@@ -697,18 +819,25 @@ Int_t AliAnalysisTaskSAQA::DoClusterLoop(Float_t &sum, Float_t &leading)
 
     sum += cluster->E();
 
-    if (leading < cluster->E()) leading = 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());
@@ -720,7 +849,7 @@ Int_t AliAnalysisTaskSAQA::DoClusterLoop(Float_t &sum, Float_t &leading)
 }
 
 //________________________________________________________________________
-Int_t AliAnalysisTaskSAQA::DoTrackLoop(Float_t &sum, Float_t &leading)
+Int_t AliAnalysisTaskSAQA::DoTrackLoop(Float_t &sum, AliVParticle* &leading)
 {
   // Do track loop.
 
@@ -752,7 +881,7 @@ Int_t AliAnalysisTaskSAQA::DoTrackLoop(Float_t &sum, Float_t &leading)
 
     sum += track->P();
 
-    if (leading < track->Pt()) leading = track->P();
+    if (!leading || leading->Pt() < track->Pt()) leading = track;
 
     if (fParticleLevel) {
       fHistTrPhiEtaPt[fCentBin][0]->Fill(track->Eta(), track->Phi(), track->Pt());
@@ -800,8 +929,8 @@ Int_t AliAnalysisTaskSAQA::DoTrackLoop(Float_t &sum, Float_t &leading)
       fHistDeltaEtaPt[fCentBin]->Fill(vtrack->Pt(), vtrack->Eta() - vtrack->GetTrackEtaOnEMCal());
     if (fHistDeltaPhiPt[fCentBin])
       fHistDeltaPhiPt[fCentBin]->Fill(vtrack->Pt(), vtrack->Phi() - vtrack->GetTrackPhiOnEMCal());
-    if (fHistDeltaPtvsPtvsMass[fCentBin])
-      fHistDeltaPtvsPtvsMass[fCentBin]->Fill(vtrack->Pt(), vtrack->Pt() - vtrack->GetTrackPtOnEMCal(), vtrack->M());
+    if (fHistDeltaPtvsPt[fCentBin])
+      fHistDeltaPtvsPt[fCentBin]->Fill(vtrack->Pt(), vtrack->Pt() - vtrack->GetTrackPtOnEMCal());
   }
 
   if (fHistTrNegativeLabels)
@@ -814,7 +943,7 @@ Int_t AliAnalysisTaskSAQA::DoTrackLoop(Float_t &sum, Float_t &leading)
 }
 
 //________________________________________________________________________
-Int_t AliAnalysisTaskSAQA::DoJetLoop(Float_t &leading)
+Int_t AliAnalysisTaskSAQA::DoJetLoop(AliEmcalJet* &leading)
 {
   // Do jet loop.
 
@@ -839,7 +968,7 @@ Int_t AliAnalysisTaskSAQA::DoJetLoop(Float_t &leading)
     if (!AcceptJet(jet))
       continue;
 
-    if (leading < jet->Pt()) leading = jet->Pt();
+    if (!leading || leading->Pt() < jet->Pt()) leading = jet;
 
     nAccJets++;