]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetMassBkg.cxx
Charged jets (pPb): Improved trackcut analysis
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskEmcalJetMassBkg.cxx
index a29db4cb8eaccda4802cf76e0b2e7bb40d2b90c3..9583e9b61cb0f4bebd24a29cda76de70fab8963b 100644 (file)
@@ -51,13 +51,21 @@ AliAnalysisTaskEmcalJetMassBkg::AliAnalysisTaskEmcalJetMassBkg() :
   fTracksCont(0),
   fCaloClustersCont(0),
   fh2PtVsMassRC(0),
-  fpPtVsMassRC(0),
   fh2PtVsMassRCExLJDPhi(0),
-  fpPtVsMassRCExLJ(0),
   fh2PtVsMassPerpConeLJ(0),
-  fpPtVsMassPerpConeLJ(0),
   fh2PtVsMassPerpConeTJ(0),
+  fh2PtVsERC(0),
+  fh2PtVsERCExLJDPhi(0),
+  fh2PtVsEPerpConeLJ(0),
+  fh2PtVsEPerpConeTJ(0),
+  fpPtVsMassRC(0),
+  fpPtVsMassRCExLJ(0),
+  fpPtVsMassPerpConeLJ(0),
   fpPtVsMassPerpConeTJ(0),
+  fh2EtaVsMassRC(0),
+  fh2EtaVsMassRCExLJ(0),
+  fh2EtaVsMassPerpConeLJ(0),
+  fh2EtaVsMassPerpConeTJ(0),
   fh2CentVsMassRC(0),
   fh2CentVsMassRCExLJ(0),
   fh2CentVsMassPerpConeLJ(0),
@@ -82,23 +90,45 @@ AliAnalysisTaskEmcalJetMassBkg::AliAnalysisTaskEmcalJetMassBkg() :
   // Default constructor.
 
   fh2PtVsMassRC            = new TH2F*[fNcentBins];
-  fpPtVsMassRC             = new TProfile*[fNcentBins];
   fh2PtVsMassRCExLJDPhi    = new TH3F*[fNcentBins];
-  fpPtVsMassRCExLJ         = new TProfile*[fNcentBins];
   fh2PtVsMassPerpConeLJ    = new TH2F*[fNcentBins];
-  fpPtVsMassPerpConeLJ     = new TProfile*[fNcentBins];
   fh2PtVsMassPerpConeTJ    = new TH2F*[fNcentBins];
+
+  fh2PtVsERC               = new TH2F*[fNcentBins];
+  fh2PtVsERCExLJDPhi       = new TH3F*[fNcentBins];
+  fh2PtVsEPerpConeLJ       = new TH2F*[fNcentBins];
+  fh2PtVsEPerpConeTJ       = new TH2F*[fNcentBins];
+
+  fpPtVsMassRC             = new TProfile*[fNcentBins];
+  fpPtVsMassRCExLJ         = new TProfile*[fNcentBins];
+  fpPtVsMassPerpConeLJ     = new TProfile*[fNcentBins];
   fpPtVsMassPerpConeTJ     = new TProfile*[fNcentBins];
 
+  fh2EtaVsMassRC            = new TH2F*[fNcentBins];
+  fh2EtaVsMassRCExLJ        = new TH2F*[fNcentBins];
+  fh2EtaVsMassPerpConeLJ    = new TH2F*[fNcentBins];
+  fh2EtaVsMassPerpConeTJ    = new TH2F*[fNcentBins];
+
   for (Int_t i = 0; i < fNcentBins; i++) {
     fh2PtVsMassRC[i]             = 0;
-    fpPtVsMassRC[i]              = 0;
     fh2PtVsMassRCExLJDPhi[i]     = 0;
-    fpPtVsMassRCExLJ[i]          = 0;
     fh2PtVsMassPerpConeLJ[i]     = 0;
-    fpPtVsMassPerpConeLJ[i]      = 0;
     fh2PtVsMassPerpConeTJ[i]     = 0;
+
+    fh2PtVsERC[i]                = 0;
+    fh2PtVsERCExLJDPhi[i]        = 0;
+    fh2PtVsEPerpConeLJ[i]        = 0;
+    fh2PtVsEPerpConeTJ[i]        = 0;
+
+    fpPtVsMassRC[i]              = 0;
+    fpPtVsMassRCExLJ[i]          = 0;
+    fpPtVsMassPerpConeLJ[i]      = 0;
     fpPtVsMassPerpConeTJ[i]      = 0;
+
+    fh2EtaVsMassRC[i]             = 0;
+    fh2EtaVsMassRCExLJ[i]         = 0;
+    fh2EtaVsMassPerpConeLJ[i]     = 0;
+    fh2EtaVsMassPerpConeTJ[i]     = 0;
   }
 
   SetMakeGeneralHistograms(kTRUE);
@@ -120,13 +150,21 @@ AliAnalysisTaskEmcalJetMassBkg::AliAnalysisTaskEmcalJetMassBkg(const char *name)
   fTracksCont(0),
   fCaloClustersCont(0),
   fh2PtVsMassRC(0),
-  fpPtVsMassRC(0),
   fh2PtVsMassRCExLJDPhi(0),
-  fpPtVsMassRCExLJ(0),
   fh2PtVsMassPerpConeLJ(0),
-  fpPtVsMassPerpConeLJ(0),
   fh2PtVsMassPerpConeTJ(0),
+  fh2PtVsERC(0),
+  fh2PtVsERCExLJDPhi(0),
+  fh2PtVsEPerpConeLJ(0),
+  fh2PtVsEPerpConeTJ(0),
+  fpPtVsMassRC(0),
+  fpPtVsMassRCExLJ(0),
+  fpPtVsMassPerpConeLJ(0),
   fpPtVsMassPerpConeTJ(0),
+  fh2EtaVsMassRC(0),
+  fh2EtaVsMassRCExLJ(0),
+  fh2EtaVsMassPerpConeLJ(0),
+  fh2EtaVsMassPerpConeTJ(0),
   fh2CentVsMassRC(0),
   fh2CentVsMassRCExLJ(0),
   fh2CentVsMassPerpConeLJ(0),
@@ -151,23 +189,45 @@ AliAnalysisTaskEmcalJetMassBkg::AliAnalysisTaskEmcalJetMassBkg(const char *name)
   // Standard constructor.
 
   fh2PtVsMassRC            = new TH2F*[fNcentBins];
-  fpPtVsMassRC             = new TProfile*[fNcentBins];
   fh2PtVsMassRCExLJDPhi    = new TH3F*[fNcentBins];
-  fpPtVsMassRCExLJ         = new TProfile*[fNcentBins];
   fh2PtVsMassPerpConeLJ    = new TH2F*[fNcentBins];
-  fpPtVsMassPerpConeLJ     = new TProfile*[fNcentBins];
   fh2PtVsMassPerpConeTJ    = new TH2F*[fNcentBins];
+
+  fh2PtVsERC               = new TH2F*[fNcentBins];
+  fh2PtVsERCExLJDPhi       = new TH3F*[fNcentBins];
+  fh2PtVsEPerpConeLJ       = new TH2F*[fNcentBins];
+  fh2PtVsEPerpConeTJ       = new TH2F*[fNcentBins];
+
+  fpPtVsMassRC             = new TProfile*[fNcentBins];
+  fpPtVsMassRCExLJ         = new TProfile*[fNcentBins];
+  fpPtVsMassPerpConeLJ     = new TProfile*[fNcentBins];
   fpPtVsMassPerpConeTJ     = new TProfile*[fNcentBins];
 
+  fh2EtaVsMassRC            = new TH2F*[fNcentBins];
+  fh2EtaVsMassRCExLJ        = new TH2F*[fNcentBins];
+  fh2EtaVsMassPerpConeLJ    = new TH2F*[fNcentBins];
+  fh2EtaVsMassPerpConeTJ    = new TH2F*[fNcentBins];
+
   for (Int_t i = 0; i < fNcentBins; i++) {
-    fh2PtVsMassRC[i]              = 0;
-    fpPtVsMassRC[i]               = 0;
-    fh2PtVsMassRCExLJDPhi[i]      = 0;
-    fpPtVsMassRCExLJ[i]           = 0;
-    fh2PtVsMassPerpConeLJ[i]       = 0;
-    fpPtVsMassPerpConeLJ[i]        = 0;
-    fh2PtVsMassPerpConeTJ[i]       = 0;
-    fpPtVsMassPerpConeTJ[i]        = 0;
+    fh2PtVsMassRC[i]             = 0;
+    fh2PtVsMassRCExLJDPhi[i]     = 0;
+    fh2PtVsMassPerpConeLJ[i]     = 0;
+    fh2PtVsMassPerpConeTJ[i]     = 0;
+
+    fh2PtVsERC[i]                = 0;
+    fh2PtVsERCExLJDPhi[i]        = 0;
+    fh2PtVsEPerpConeLJ[i]        = 0;
+    fh2PtVsEPerpConeTJ[i]        = 0;
+
+    fpPtVsMassRC[i]              = 0;
+    fpPtVsMassRCExLJ[i]          = 0;
+    fpPtVsMassPerpConeLJ[i]      = 0;
+    fpPtVsMassPerpConeTJ[i]      = 0;
+
+    fh2EtaVsMassRC[i]             = 0;
+    fh2EtaVsMassRCExLJ[i]         = 0;
+    fh2EtaVsMassPerpConeLJ[i]     = 0;
+    fh2EtaVsMassPerpConeTJ[i]     = 0;
   }
 
   SetMakeGeneralHistograms(kTRUE);
@@ -197,6 +257,18 @@ void AliAnalysisTaskEmcalJetMassBkg::UserCreateOutputObjects()
   const Double_t minPt = -50.;
   const Double_t maxPt = 200.;
 
+  const Int_t nBinsE  = 250;
+  const Double_t minE = -50.;
+  const Double_t maxE = 200.;
+
+  const Int_t nBinsM  = 150;
+  const Double_t minM = -50.;
+  const Double_t maxM = 100.;
+
+  const Int_t nBinsEta  = 100;
+  const Double_t minEta = -1.;
+  const Double_t maxEta =  1.;
+
   const Int_t nBinsCent  = 100;
   const Double_t minCent = 0.;
   const Double_t maxCent = 100.;
@@ -205,64 +277,64 @@ void AliAnalysisTaskEmcalJetMassBkg::UserCreateOutputObjects()
   const Double_t minMult = 0.;
   const Double_t maxMult = 4000.;
 
-  fh2CentVsMassRC = new TH2F("fh2CentVsMassRC","fh2CentVsMassRC;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsPt,minPt,maxPt);
+  fh2CentVsMassRC = new TH2F("fh2CentVsMassRC","fh2CentVsMassRC;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsM,minM,maxM);
   fOutput->Add(fh2CentVsMassRC);  
 
-  fh2CentVsMassRCExLJ = new TH2F("fh2CentVsMassRCExLJ","fh2CentVsMassRCExLJ;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsPt,minPt,maxPt);
+  fh2CentVsMassRCExLJ = new TH2F("fh2CentVsMassRCExLJ","fh2CentVsMassRCExLJ;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsM,minM,maxM);
   fOutput->Add(fh2CentVsMassRCExLJ);  
 
-  fh2CentVsMassPerpConeLJ = new TH2F("fh2CentVsMassPerpConeLJ","fh2CentVsMassPerpConeLJ;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsPt,minPt,maxPt);
+  fh2CentVsMassPerpConeLJ = new TH2F("fh2CentVsMassPerpConeLJ","fh2CentVsMassPerpConeLJ;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsM,minM,maxM);
   fOutput->Add(fh2CentVsMassPerpConeLJ);  
 
-  fh2CentVsMassPerpConeTJ = new TH2F("fh2CentVsMassPerpConeTJ","fh2CentVsMassPerpConeTJ;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsPt,minPt,maxPt);
+  fh2CentVsMassPerpConeTJ = new TH2F("fh2CentVsMassPerpConeTJ","fh2CentVsMassPerpConeTJ;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsM,minM,maxM);
   fOutput->Add(fh2CentVsMassPerpConeTJ); 
 
-  fh2MultVsMassRC = new TH2F("fh2MultVsMassRC","fh2MultVsMassRC;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsPt,minPt,maxPt);
+  fh2MultVsMassRC = new TH2F("fh2MultVsMassRC","fh2MultVsMassRC;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsM,minM,maxM);
   fOutput->Add(fh2MultVsMassRC);  
 
-  fh2MultVsMassRCExLJ = new TH2F("fh2MultVsMassRCExLJ","fh2MultVsMassRCExLJ;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsPt,minPt,maxPt);
+  fh2MultVsMassRCExLJ = new TH2F("fh2MultVsMassRCExLJ","fh2MultVsMassRCExLJ;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsM,minM,maxM);
   fOutput->Add(fh2MultVsMassRCExLJ);  
 
-  fh2MultVsMassPerpConeLJ = new TH2F("fh2MultVsMassPerpConeLJ","fh2MultVsMassPerpConeLJ;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsPt,minPt,maxPt);
+  fh2MultVsMassPerpConeLJ = new TH2F("fh2MultVsMassPerpConeLJ","fh2MultVsMassPerpConeLJ;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsM,minM,maxM);
   fOutput->Add(fh2MultVsMassPerpConeLJ);  
 
-  fh2MultVsMassPerpConeTJ = new TH2F("fh2MultVsMassPerpConeTJ","fh2MultVsMassPerpConeTJ;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsPt,minPt,maxPt);
+  fh2MultVsMassPerpConeTJ = new TH2F("fh2MultVsMassPerpConeTJ","fh2MultVsMassPerpConeTJ;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsM,minM,maxM);
   fOutput->Add(fh2MultVsMassPerpConeTJ); 
 
-  fh2CentVsMedianMassRC = new TH2F("fh2CentVsMedianMassRC","fh2CentVsMedianMassRC;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsPt,minPt,maxPt);
+  fh2CentVsMedianMassRC = new TH2F("fh2CentVsMedianMassRC","fh2CentVsMedianMassRC;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsM,minM,maxM);
   fOutput->Add(fh2CentVsMedianMassRC);  
 
-  fh2CentVsMedianMassRCExLJ = new TH2F("fh2CentVsMedianMassRCExLJ","fh2CentVsMedianMassRCExLJ;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsPt,minPt,maxPt);
+  fh2CentVsMedianMassRCExLJ = new TH2F("fh2CentVsMedianMassRCExLJ","fh2CentVsMedianMassRCExLJ;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsM,minM,maxM);
   fOutput->Add(fh2CentVsMedianMassRCExLJ);  
 
-  fh2MultVsMedianMassRC = new TH2F("fh2MultVsMedianMassRC","fh2MultVsMedianMassRC;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsPt,minPt,maxPt);
+  fh2MultVsMedianMassRC = new TH2F("fh2MultVsMedianMassRC","fh2MultVsMedianMassRC;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsM,minM,maxM);
   fOutput->Add(fh2MultVsMedianMassRC);  
 
-  fh2MultVsMedianMassRCExLJ = new TH2F("fh2MultVsMedianMassRCExLJ","fh2MultVsMedianMassRCExLJ;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsPt,minPt,maxPt);
+  fh2MultVsMedianMassRCExLJ = new TH2F("fh2MultVsMedianMassRCExLJ","fh2MultVsMedianMassRCExLJ;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsM,minM,maxM);
   fOutput->Add(fh2MultVsMedianMassRCExLJ);  
 
-  fh2CentVsMeanMassRC = new TH2F("fh2CentVsMeanMassRC","fh2CentVsMeanMassRC;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsPt,minPt,maxPt);
+  fh2CentVsMeanMassRC = new TH2F("fh2CentVsMeanMassRC","fh2CentVsMeanMassRC;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsM,minM,maxM);
   fOutput->Add(fh2CentVsMeanMassRC);  
 
-  fh2CentVsMeanMassRCExLJ = new TH2F("fh2CentVsMeanMassRCExLJ","fh2CentVsMeanMassRCExLJ;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsPt,minPt,maxPt);
+  fh2CentVsMeanMassRCExLJ = new TH2F("fh2CentVsMeanMassRCExLJ","fh2CentVsMeanMassRCExLJ;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsM,minM,maxM);
   fOutput->Add(fh2CentVsMeanMassRCExLJ);  
 
-  fh2MultVsMeanMassRC = new TH2F("fh2MultVsMeanMassRC","fh2MultVsMeanMassRC;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsPt,minPt,maxPt);
+  fh2MultVsMeanMassRC = new TH2F("fh2MultVsMeanMassRC","fh2MultVsMeanMassRC;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsM,minM,maxM);
   fOutput->Add(fh2MultVsMeanMassRC);  
 
-  fh2MultVsMeanMassRCExLJ = new TH2F("fh2MultVsMeanMassRCExLJ","fh2MultVsMeanMassRCExLJ;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsPt,minPt,maxPt);
+  fh2MultVsMeanMassRCExLJ = new TH2F("fh2MultVsMeanMassRCExLJ","fh2MultVsMeanMassRCExLJ;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsM,minM,maxM);
   fOutput->Add(fh2MultVsMeanMassRCExLJ);  
 
-  fh2CentVsMedianMassPerAreaRC = new TH2F("fh2CentVsMedianMassPerAreaRC","fh2CentVsMedianMassPerAreaRC;cent;#it{M}_{RC}/A",nBinsCent,minCent,maxCent,nBinsPt,minPt,maxPt);
+  fh2CentVsMedianMassPerAreaRC = new TH2F("fh2CentVsMedianMassPerAreaRC","fh2CentVsMedianMassPerAreaRC;cent;#it{M}_{RC}/A",nBinsCent,minCent,maxCent,nBinsM,minM,maxM);
   fOutput->Add(fh2CentVsMedianMassPerAreaRC);  
 
-  fh2CentVsMedianMassPerAreaRCExLJ = new TH2F("fh2CentVsMedianMassPerAreaRCExLJ","fh2CentVsMedianMassPerAreaRCExLJ;cent;#it{M}_{RC}/A",nBinsCent,minCent,maxCent,nBinsPt,minPt,maxPt);
+  fh2CentVsMedianMassPerAreaRCExLJ = new TH2F("fh2CentVsMedianMassPerAreaRCExLJ","fh2CentVsMedianMassPerAreaRCExLJ;cent;#it{M}_{RC}/A",nBinsCent,minCent,maxCent,nBinsM,minM,maxM);
   fOutput->Add(fh2CentVsMedianMassPerAreaRCExLJ);  
 
-  fh2MultVsMedianMassPerAreaRC = new TH2F("fh2MultVsMedianMassPerAreaRC","fh2MultVsMedianMassPerAreaRC;#it{N}_{track};#it{M}_{RC}/A",nBinsMult,minMult,maxMult,nBinsPt,minPt,maxPt);
+  fh2MultVsMedianMassPerAreaRC = new TH2F("fh2MultVsMedianMassPerAreaRC","fh2MultVsMedianMassPerAreaRC;#it{N}_{track};#it{M}_{RC}/A",nBinsMult,minMult,maxMult,nBinsM,minM,maxM);
   fOutput->Add(fh2MultVsMedianMassPerAreaRC);  
 
-  fh2MultVsMedianMassPerAreaRCExLJ = new TH2F("fh2MultVsMedianMassPerAreaRCExLJ","fh2MultVsMedianMassPerAreaRCExLJ;#it{N}_{track};#it{M}_{RC}/A",nBinsMult,minMult,maxMult,nBinsPt,minPt,maxPt);
+  fh2MultVsMedianMassPerAreaRCExLJ = new TH2F("fh2MultVsMedianMassPerAreaRCExLJ","fh2MultVsMedianMassPerAreaRCExLJ;#it{N}_{track};#it{M}_{RC}/A",nBinsMult,minMult,maxMult,nBinsM,minM,maxM);
   fOutput->Add(fh2MultVsMedianMassPerAreaRCExLJ);  
 
   TString histName = "";
@@ -270,39 +342,79 @@ void AliAnalysisTaskEmcalJetMassBkg::UserCreateOutputObjects()
   for (Int_t i = 0; i < fNcentBins; i++) {
     histName = TString::Format("fh2PtVsMassRC_%d",i);
     histTitle = TString::Format("%s;#it{p}_{T,RC};#it{M}_{RC}",histName.Data());
-    fh2PtVsMassRC[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsPt,minPt,maxPt);
+    fh2PtVsMassRC[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsM,minM,maxM);
     fOutput->Add(fh2PtVsMassRC[i]);
 
-    histName = TString::Format("fpPtVsMassRC_%d",i);
-    histTitle = TString::Format("%s;#it{p}_{T,RC};Avg #it{M}_{RC}",histName.Data());
-    fpPtVsMassRC[i] = new TProfile(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt);
-    fOutput->Add(fpPtVsMassRC[i]);
-
     histName = TString::Format("fh2PtVsMassRCExLJDPhi_%d",i);
     histTitle = TString::Format("%s;#it{p}_{T,RC};#it{M}_{RC}",histName.Data());
     fh2PtVsMassRCExLJDPhi[i] = new TH3F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsPt,minPt,maxPt,72,-0.5*TMath::Pi(),1.5*TMath::Pi());
     fOutput->Add(fh2PtVsMassRCExLJDPhi[i]);
 
+    histName = TString::Format("fh2PtVsMassPerpConeLJ_%d",i);
+    histTitle = TString::Format("%s;#it{p}_{T,PerpConeLJ};#it{M}_{PerpConeLJ}",histName.Data());
+    fh2PtVsMassPerpConeLJ[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsM,minM,maxM);
+    fOutput->Add(fh2PtVsMassPerpConeLJ[i]);
+
+    histName = TString::Format("fh2PtVsMassPerpConeTJ_%d",i);
+    histTitle = TString::Format("%s;#it{p}_{T,PerpConeTJ};#it{M}_{PerpConeTJ}",histName.Data());
+    fh2PtVsMassPerpConeTJ[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsM,minM,maxM);
+    fOutput->Add(fh2PtVsMassPerpConeTJ[i]);
+    //
+    histName = TString::Format("fh2PtVsERC_%d",i);
+    histTitle = TString::Format("%s;#it{p}_{T,RC};#it{M}_{RC}",histName.Data());
+    fh2PtVsERC[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsE,minE,maxE);
+    fOutput->Add(fh2PtVsERC[i]);
+
+    histName = TString::Format("fh2PtVsERCExLJDPhi_%d",i);
+    histTitle = TString::Format("%s;#it{p}_{T,RC};#it{M}_{RC}",histName.Data());
+    fh2PtVsERCExLJDPhi[i] = new TH3F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsPt,minPt,maxPt,72,-0.5*TMath::Pi(),1.5*TMath::Pi());
+    fOutput->Add(fh2PtVsERCExLJDPhi[i]);
+
+    histName = TString::Format("fh2PtVsEPerpConeLJ_%d",i);
+    histTitle = TString::Format("%s;#it{p}_{T,PerpConeLJ};#it{M}_{PerpConeLJ}",histName.Data());
+    fh2PtVsEPerpConeLJ[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsE,minE,maxE);
+    fOutput->Add(fh2PtVsEPerpConeLJ[i]);
+
+    histName = TString::Format("fh2PtVsEPerpConeTJ_%d",i);
+    histTitle = TString::Format("%s;#it{p}_{T,PerpConeTJ};#it{M}_{PerpConeTJ}",histName.Data());
+    fh2PtVsEPerpConeTJ[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsE,minE,maxE);
+    fOutput->Add(fh2PtVsEPerpConeTJ[i]);
+    //
+    histName = TString::Format("fh2EtaVsMassRC_%d",i);
+    histTitle = TString::Format("%s;#eta_{RC};#it{M}_{RC}",histName.Data());
+    fh2EtaVsMassRC[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsEta,minEta,maxEta,nBinsM,minM,maxM);
+    fOutput->Add(fh2EtaVsMassRC[i]);
+
+    histName = TString::Format("fh2EtaVsMassRCExLJ_%d",i);
+    histTitle = TString::Format("%s;#eta_{RC};#it{M}_{RC}",histName.Data());
+    fh2EtaVsMassRCExLJ[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsEta,minEta,maxEta,nBinsM,minM,maxM);
+    fOutput->Add(fh2EtaVsMassRCExLJ[i]);
+
+    histName = TString::Format("fh2EtaVsMassPerpConeLJ_%d",i);
+    histTitle = TString::Format("%s;#eta_{PerpConeLJ};#it{M}_{PerpConeLJ}",histName.Data());
+    fh2EtaVsMassPerpConeLJ[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsEta,minEta,maxEta,nBinsM,minM,maxM);
+    fOutput->Add(fh2EtaVsMassPerpConeLJ[i]);
+
+    histName = TString::Format("fh2EtaVsMassPerpConeTJ_%d",i);
+    histTitle = TString::Format("%s;#eta_{PerpConeTJ};#it{M}_{PerpConeTJ}",histName.Data());
+    fh2EtaVsMassPerpConeTJ[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsEta,minEta,maxEta,nBinsM,minM,maxM);
+    fOutput->Add(fh2EtaVsMassPerpConeTJ[i]);
+
+    histName = TString::Format("fpPtVsMassRC_%d",i);
+    histTitle = TString::Format("%s;#it{p}_{T,RC};Avg #it{M}_{RC}",histName.Data());
+    fpPtVsMassRC[i] = new TProfile(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt);
+    fOutput->Add(fpPtVsMassRC[i]);
+
     histName = TString::Format("fpPtVsMassRCExLJ_%d",i);
     histTitle = TString::Format("%s;#it{p}_{T,RC};Avg #it{M}_{RC}",histName.Data());
     fpPtVsMassRCExLJ[i] = new TProfile(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt);
     fOutput->Add(fpPtVsMassRCExLJ[i]);
 
-    histName = TString::Format("fh2PtVsMassPerpConeLJ_%d",i);
-    histTitle = TString::Format("%s;#it{p}_{T,PerpConeLJ};#it{M}_{PerpConeLJ}",histName.Data());
-    fh2PtVsMassPerpConeLJ[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsPt,minPt,maxPt);
-    fOutput->Add(fh2PtVsMassPerpConeLJ[i]);
-
     histName = TString::Format("fpPtVsMassPerpConeLJ_%d",i);
     histTitle = TString::Format("%s;#it{p}_{T,RC};Avg #it{M}_{RC}",histName.Data());
     fpPtVsMassPerpConeLJ[i] = new TProfile(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt);
     fOutput->Add(fpPtVsMassPerpConeLJ[i]);
 
-    histName = TString::Format("fh2PtVsMassPerpConeTJ_%d",i);
-    histTitle = TString::Format("%s;#it{p}_{T,PerpConeTJ};#it{M}_{PerpConeTJ}",histName.Data());
-    fh2PtVsMassPerpConeTJ[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsPt,minPt,maxPt);
-    fOutput->Add(fh2PtVsMassPerpConeTJ[i]);
-
     histName = TString::Format("fpPtVsMassPerpConeTJ_%d",i);
     histTitle = TString::Format("%s;#it{p}_{T,RC};Avg #it{M}_{RC}",histName.Data());
     fpPtVsMassPerpConeTJ[i] = new TProfile(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt);
@@ -350,10 +462,10 @@ Bool_t AliAnalysisTaskEmcalJetMassBkg::FillHistograms()
     jet = fJetsCont->GetLeadingJet("rho");
   
   TLorentzVector lvRC(0.,0.,0.,0.);
+  TLorentzVector lvRCS(0.,0.,0.,0.);
   Float_t RCpt = 0;
   Float_t RCeta = 0;
   Float_t RCphi = 0;
-  Float_t RCmass = 0.;  
 
   static Double_t massvecRC[999];
   static Double_t massPerAreavecRC[999];
@@ -371,15 +483,17 @@ Bool_t AliAnalysisTaskEmcalJetMassBkg::FillHistograms()
     RCeta = 0;
     RCphi = 0;
     GetRandomCone(lvRC,RCpt, RCeta, RCphi, fTracksCont, fCaloClustersCont, 0);
-    RCmass = lvRC.M();
     if (RCpt > 0) {
-      fh2PtVsMassRC[fCentBin]->Fill(RCpt - rho*rcArea,RCmass);
-      fpPtVsMassRC[fCentBin]->Fill(RCpt - rho*rcArea,RCmass);
-      fh2CentVsMassRC->Fill(fCent,RCmass);
-      fh2MultVsMassRC->Fill(trackMult,RCmass);
-
-      massvecRC[nRCAcc] = RCmass;
-      massPerAreavecRC[nRCAcc] = RCmass/rcArea;
+      lvRCS = GetSubtractedVector(lvRC.Pt(),lvRC.Eta(),lvRC.Phi(),lvRC.E());
+      fh2PtVsMassRC[fCentBin]->Fill(RCpt-rho*rcArea,lvRCS.M());
+      fh2PtVsERC[fCentBin]->Fill(RCpt-rho*rcArea,lvRCS.E());
+      fpPtVsMassRC[fCentBin]->Fill(RCpt-rho*rcArea,lvRCS.M());
+      fh2EtaVsMassRC[fCentBin]->Fill(lvRCS.Eta(),lvRCS.M());
+      fh2CentVsMassRC->Fill(fCent,lvRCS.M());
+      fh2MultVsMassRC->Fill(trackMult,lvRCS.M());
+
+      massvecRC[nRCAcc] = lvRCS.M();
+      massPerAreavecRC[nRCAcc] = massvecRC[nRCAcc]/rcArea;
       ++nRCAcc;
     }
 
@@ -390,18 +504,20 @@ Bool_t AliAnalysisTaskEmcalJetMassBkg::FillHistograms()
       RCeta = 0;
       RCphi = 0;
       GetRandomCone(lvRC,RCpt, RCeta, RCphi, fTracksCont, fCaloClustersCont, jet);
-      RCmass = lvRC.M();
       if (RCpt > 0 && jet) {
+       lvRCS = GetSubtractedVector(lvRC.Pt(),lvRC.Eta(),lvRC.Phi(),lvRC.E());
        Float_t dphi = RCphi - jet->Phi();
        if (dphi > 1.5*TMath::Pi()) dphi -= TMath::Pi() * 2;
        if (dphi < -0.5*TMath::Pi()) dphi += TMath::Pi() * 2;
-       fh2PtVsMassRCExLJDPhi[fCentBin]->Fill(RCpt - rho*rcArea,RCmass,dphi);
-       fpPtVsMassRCExLJ[fCentBin]->Fill(RCpt - rho*rcArea,RCmass);
-       fh2CentVsMassRCExLJ->Fill(fCent,RCmass);
-       fh2MultVsMassRCExLJ->Fill(trackMult,RCmass);
-
-       massvecRCExLJ[nRCExLJAcc] = RCmass;
-       massPerAreavecRCExLJ[nRCExLJAcc] = RCmass/rcArea;
+       fh2PtVsMassRCExLJDPhi[fCentBin]->Fill(RCpt-rho*rcArea,lvRCS.M(),dphi);
+       fh2PtVsERCExLJDPhi[fCentBin]->Fill(RCpt-rho*rcArea,lvRCS.E(),dphi);
+       fpPtVsMassRCExLJ[fCentBin]->Fill(RCpt-rho*rcArea,lvRCS.M());
+       fh2EtaVsMassRCExLJ[fCentBin]->Fill(lvRCS.Eta(),lvRCS.M());
+       fh2CentVsMassRCExLJ->Fill(fCent,lvRCS.M());
+       fh2MultVsMassRCExLJ->Fill(trackMult,lvRCS.M());
+
+       massvecRCExLJ[nRCExLJAcc] = lvRCS.M();
+       massPerAreavecRCExLJ[nRCExLJAcc] = lvRCS.M()/rcArea;
        ++nRCExLJAcc;
       }
     }
@@ -441,18 +557,20 @@ Bool_t AliAnalysisTaskEmcalJetMassBkg::FillHistograms()
   if(fJetsCont && jet) {
     //cone perpendicular to leading jet
     TLorentzVector lvPC(0.,0.,0.,0.);
+    TLorentzVector lvPCS(0.,0.,0.,0.);
     Float_t PCpt = 0;
     Float_t PCeta = 0;
     Float_t PCphi = 0;
-    Float_t PCmass = 0.;  
     if(jet) {
       GetPerpCone(lvPC,PCpt, PCeta, PCphi, fTracksCont, fCaloClustersCont, jet);
-      PCmass = lvPC.M();
       if(PCpt>0.) {
-       fh2PtVsMassPerpConeLJ[fCentBin]->Fill(PCpt-rho*rcArea,PCmass);
-       fpPtVsMassPerpConeLJ[fCentBin]->Fill(PCpt-rho*rcArea,PCmass);
-       fh2CentVsMassPerpConeLJ->Fill(fCent,PCmass);
-       fh2MultVsMassPerpConeLJ->Fill(trackMult,PCmass);
+       lvPCS = GetSubtractedVector(lvPC.Pt(),lvPC.Eta(),lvPC.Phi(),lvPC.E());
+       fh2PtVsMassPerpConeLJ[fCentBin]->Fill(PCpt-rho*rcArea,lvPCS.M());
+       fh2PtVsEPerpConeLJ[fCentBin]->Fill(PCpt-rho*rcArea,lvPCS.E());
+       fpPtVsMassPerpConeLJ[fCentBin]->Fill(PCpt-rho*rcArea,lvPCS.M());
+       fh2EtaVsMassPerpConeLJ[fCentBin]->Fill(lvPCS.Eta(),lvPCS.M());
+       fh2CentVsMassPerpConeLJ->Fill(fCent,lvPCS.M());
+       fh2MultVsMassPerpConeLJ->Fill(trackMult,lvPCS.M());
       }
     }
     //cone perpendicular to all tagged jets
@@ -468,12 +586,14 @@ Bool_t AliAnalysisTaskEmcalJetMassBkg::FillHistograms()
       PCeta = 0;
       PCphi = 0;
       GetPerpCone(lvPC,PCpt, PCeta, PCphi, fTracksCont, fCaloClustersCont, jet);
-      PCmass = lvPC.M();
       if(PCpt>0.) {
-       fh2PtVsMassPerpConeTJ[fCentBin]->Fill(PCpt-rho*rcArea,PCmass);
-       fpPtVsMassPerpConeTJ[fCentBin]->Fill(PCpt-rho*rcArea,PCmass);
-       fh2CentVsMassPerpConeTJ->Fill(fCent,PCmass);
-       fh2MultVsMassPerpConeTJ->Fill(trackMult,PCmass);
+       lvPCS = GetSubtractedVector(lvPC.Pt(),lvPC.Eta(),lvPC.Phi(),lvPC.E());
+       fh2PtVsMassPerpConeTJ[fCentBin]->Fill(PCpt-rho*rcArea,lvPCS.M());
+       fh2PtVsEPerpConeTJ[fCentBin]->Fill(PCpt-rho*rcArea,lvPCS.E());
+       fpPtVsMassPerpConeTJ[fCentBin]->Fill(PCpt-rho*rcArea,lvPCS.M());
+       fh2EtaVsMassPerpConeTJ[fCentBin]->Fill(lvPCS.Eta(),lvPCS.M());
+       fh2CentVsMassPerpConeTJ->Fill(fCent,lvPCS.M());
+       fh2MultVsMassPerpConeTJ->Fill(trackMult,lvPCS.M());
       }
     }//jet loop
   }
@@ -662,6 +782,28 @@ void AliAnalysisTaskEmcalJetMassBkg::ExecOnce() {
 
 }
 
+  //________________________________________________________________________
+TLorentzVector AliAnalysisTaskEmcalJetMassBkg::GetBkgVector(Double_t eta, Double_t phi, AliJetContainer *cont) {
+  //get background vector
+
+  Double_t rho  = cont->GetRhoVal();
+  Double_t rhom = cont->GetRhoMassVal();
+  TLorentzVector vpB(0.,0.,0.,0.);
+  Double_t aRC = TMath::Pi()*fConeRadius*fConeRadius;
+  vpB.SetPxPyPzE(rho*TMath::Cos(phi)*aRC,rho*TMath::Sin(phi)*aRC,(rho+rhom)*TMath::SinH(eta)*aRC,(rho+rhom)*TMath::CosH(eta)*aRC);
+  return vpB;
+}
+
+//________________________________________________________________________
+TLorentzVector AliAnalysisTaskEmcalJetMassBkg::GetSubtractedVector(Double_t pt, Double_t eta, Double_t phi, Double_t e) {
+  //get subtracted vector
+  TLorentzVector vpS;
+  AliJetContainer *jetCont = GetJetContainer(fContainerBase);
+  TLorentzVector vpBkg = GetBkgVector(eta,phi,jetCont);
+  vpS.SetPxPyPzE(pt*TMath::Cos(phi)-vpBkg.Px(),pt*TMath::Sin(phi)-vpBkg.Py(),pt*TMath::SinH(eta)-vpBkg.Pz(),e-vpBkg.E());
+  return vpS;
+}
+
 //________________________________________________________________________
 Bool_t AliAnalysisTaskEmcalJetMassBkg::RetrieveEventObjects() {
   //