]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/UserTasks/AliAnalysisTaskJetProtonCorr.cxx
Commit from Raphaelle: AddTaskTRD for pileup rejection in CPass.
[u/mrichter/AliRoot.git] / PWGJE / UserTasks / AliAnalysisTaskJetProtonCorr.cxx
index 04cd5b4543914b5236adc2b5cc3b6865b4ffcd5c..86311d93677d73a8cf951c4d7bb8dfcad052c35d 100644 (file)
@@ -84,6 +84,7 @@ AliAnalysisTaskJetProtonCorr::AliAnalysisTaskJetProtonCorr(const char *name) :
   fCutsPrimAss(0x0),
   fCutsTwoTrackEff(0.02),
   fAssFilterMask(1 << 10),
+  fRequirePID(kTRUE),
   fTrgJetEtaMax(0.45),
   fHadEtaMax(0.8),
   fTrgPartPtMin(6.),
@@ -96,6 +97,9 @@ AliAnalysisTaskJetProtonCorr::AliAnalysisTaskJetProtonCorr(const char *name) :
   fAssPartPtMin(2.),
   fAssPartPtMax(4.),
   fTrgAngleToEvPlane(TMath::Pi() / 4.),
+  fToyMeanNoPart(1.),
+  fToyRadius(.8),
+  fToySmearPhi(.2),
   fTrgJetPhiModCent(new TF1("jetphimodcent", "1 + 2 * [0] * cos(2*x)", 0., 2 * TMath::Pi())),
   fTrgJetPhiModSemi(new TF1("jetphimodsemi", "1 + 2 * [0] * cos(2*x)", 0., 2 * TMath::Pi())),
   fTrgHadPhiModCent(new TF1("hadphimodcent", "1 + 2 * [0] * cos(2*x)", 0., 2 * TMath::Pi())),
@@ -151,7 +155,6 @@ AliAnalysisTaskJetProtonCorr::AliAnalysisTaskJetProtonCorr(const char *name) :
     fCutsPrimAss->SetRequireSigmaToVertex(kFALSE);
 
     fCutsPrimAss->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
-
   }
 
   fCutsPrimAss->SetEtaRange(-fHadEtaMax, fHadEtaMax);
@@ -188,16 +191,13 @@ AliAnalysisTaskJetProtonCorr::AliAnalysisTaskJetProtonCorr(const char *name) :
   const Int_t trackDepth = 10000; // number of tracks to maintain in mixing buffer
   const Float_t trackDepthFraction = 0.1;
   const Int_t targetEvents = 1;
-  // for (Int_t iTrg = 0; iTrg < kTrgLast; ++iTrg) {
-    for (Int_t iAss = 0; iAss <= kAssProt; ++iAss) {
-      GetPoolMgr((Ass_t) iAss) =
-       new AliEventPoolManager(poolSize, trackDepth,
-                               nCentralityBins, centralityBins,
-                               nVertexBins, vertexBins);
-                               // nPsiBins, psiBins);
-      GetPoolMgr((Ass_t) iAss)->SetTargetValues(trackDepth, trackDepthFraction, targetEvents);
-    }
-  // }
+  for (Int_t iAss = 0; iAss <= kAssProt; ++iAss) {
+    GetPoolMgr((Ass_t) iAss) =
+      new AliEventPoolManager(poolSize, trackDepth,
+                             nCentralityBins, centralityBins,
+                             nVertexBins, vertexBins);
+    GetPoolMgr((Ass_t) iAss)->SetTargetValues(trackDepth, trackDepthFraction, targetEvents);
+  }
 
   fHistCorr = new AliHistCorr*[kEvLast*kCorrLast*kClLast];
 
@@ -274,165 +274,165 @@ void AliAnalysisTaskJetProtonCorr::UserCreateOutputObjects()
               100, 0., 100.,
               100, 0., 2500.);
 
-  AddHistogram(ID(kHistSignalTPC), "TPC dE/dx;p (GeV/c);dE/dx (arb. units)",
+  AddHistogram(ID(kHistSignalTPC), "TPC dE/dx;p (GeV/#it{c});dE/dx (arb. units)",
               100, 0., 10., 200, 0., 300.);
-  AddHistogram(ID(kHistSignalTOF), "TOF time of flight;p_{T} (GeV/c);t (ns)",
+  AddHistogram(ID(kHistSignalTOF), "TOF time of flight;p_{T} (GeV/#it{c});t (ns)",
               100, 0., 10., 200, 0., 50.);
-  AddHistogram(ID(kHistBetaTOF), "TOF beta;p (GeV/c); #beta",
+  AddHistogram(ID(kHistBetaTOF), "TOF beta;p (GeV/#it{c}); #beta",
               100, 0., 10.,
               100, 0., 1.);
 
-  AddHistogram(ID(kHistDeltaTPC), "TPC dE/dx;p (GeV/c);dE/dx (arb. units)",
+  AddHistogram(ID(kHistDeltaTPC), "TPC dE/dx;p (GeV/#it{c});dE/dx (arb. units)",
               100, 0., 10., 200, -100., 100.);
-  AddHistogram(ID(kHistDeltaTPCSemi), "TPC dE/dx;p (GeV/c);dE/dx (arb. units)",
+  AddHistogram(ID(kHistDeltaTPCSemi), "TPC dE/dx;p (GeV/#it{c});dE/dx (arb. units)",
               100, 0., 10., 200, -100., 100.);
-  AddHistogram(ID(kHistDeltaTOF), "TOF time of flight;p (GeV/c);t (ns)",
+  AddHistogram(ID(kHistDeltaTOF), "TOF time of flight;p (GeV/#it{c});t (ns)",
               100, 0., 10., 200, -2., 2.);
-  AddHistogram(ID(kHistDeltaTOFSemi), "TOF time of flight;p (GeV/c);t (ns)",
+  AddHistogram(ID(kHistDeltaTOFSemi), "TOF time of flight;p (GeV/#it{c});t (ns)",
               100, 0., 10., 200, -2., 2.);
 
   // Nsigma templates - central
-  AddHistogram(ID(kHistNsigmaTPCe), "TPC N_{#sigma,p} - e hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTPCe), "TPC N_{#sigma,p} - e hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               100, -25., 25.);
-  AddHistogram(ID(kHistNsigmaTPCmu), "TPC N_{#sigma,p} - #mu hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTPCmu), "TPC N_{#sigma,p} - #mu hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               100, -25., 25.);
-  AddHistogram(ID(kHistNsigmaTPCpi), "TPC N_{#sigma,p} - #pi hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTPCpi), "TPC N_{#sigma,p} - #pi hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               100, -25., 25.);
-  AddHistogram(ID(kHistNsigmaTPCk), "TPC N_{#sigma,p} - K hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTPCk), "TPC N_{#sigma,p} - K hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               100, -25., 25.);
-  AddHistogram(ID(kHistNsigmaTPCp), "TPC N_{#sigma,p} - p hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTPCp), "TPC N_{#sigma,p} - p hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               100, -25., 25.);
-  AddHistogram(ID(kHistNsigmaTPCd), "TPC N_{#sigma,p} - d hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTPCd), "TPC N_{#sigma,p} - d hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               100, -25., 25.);
-  AddHistogram(ID(kHistNsigmaTPCe_e), "TPC N_{#sigma,p} - e hypothesis (id. e);p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTPCe_e), "TPC N_{#sigma,p} - e hypothesis (id. e);p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               100, -25., 25.);
 
-  AddHistogram(ID(kHistNsigmaTOFe), "TOF N_{#sigma,p} - e hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTOFe), "TOF N_{#sigma,p} - e hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTOFmu), "TOF N_{#sigma,p} - #mu hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTOFmu), "TOF N_{#sigma,p} - #mu hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTOFpi), "TOF N_{#sigma,p} - #pi hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTOFpi), "TOF N_{#sigma,p} - #pi hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTOFk), "TOF N_{#sigma,p} - K hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTOFk), "TOF N_{#sigma,p} - K hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTOFp), "TOF N_{#sigma,p} - p hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTOFp), "TOF N_{#sigma,p} - p hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTOFd), "TOF N_{#sigma,p} - d hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTOFd), "TOF N_{#sigma,p} - d hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTOFmismatch), "TOF N_{#sigma,p} - mismatch;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTOFmismatch), "TOF N_{#sigma,p} - mismatch;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               200, -100., 100.);
 
   // Nsigma templates - semi-central
-  AddHistogram(ID(kHistNsigmaTPCeSemi), "TPC N_{#sigma,p} - e hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTPCeSemi), "TPC N_{#sigma,p} - e hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               100, -25., 25.);
-  AddHistogram(ID(kHistNsigmaTPCmuSemi), "TPC N_{#sigma,p} - #mu hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTPCmuSemi), "TPC N_{#sigma,p} - #mu hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               100, -25., 25.);
-  AddHistogram(ID(kHistNsigmaTPCpiSemi), "TPC N_{#sigma,p} - #pi hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTPCpiSemi), "TPC N_{#sigma,p} - #pi hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               100, -25., 25.);
-  AddHistogram(ID(kHistNsigmaTPCkSemi), "TPC N_{#sigma,p} - K hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTPCkSemi), "TPC N_{#sigma,p} - K hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               100, -25., 25.);
-  AddHistogram(ID(kHistNsigmaTPCpSemi), "TPC N_{#sigma,p} - p hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTPCpSemi), "TPC N_{#sigma,p} - p hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               100, -25., 25.);
-  AddHistogram(ID(kHistNsigmaTPCdSemi), "TPC N_{#sigma,p} - d hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTPCdSemi), "TPC N_{#sigma,p} - d hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               100, -25., 25.);
-  AddHistogram(ID(kHistNsigmaTPCe_eSemi), "TPC N_{#sigma,p} - e hypothesis (id. e);p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTPCe_eSemi), "TPC N_{#sigma,p} - e hypothesis (id. e);p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               100, -25., 25.);
 
-  AddHistogram(ID(kHistNsigmaTOFeSemi), "TOF N_{#sigma,p} - e hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTOFeSemi), "TOF N_{#sigma,p} - e hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTOFmuSemi), "TOF N_{#sigma,p} - #mu hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTOFmuSemi), "TOF N_{#sigma,p} - #mu hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTOFpiSemi), "TOF N_{#sigma,p} - #pi hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTOFpiSemi), "TOF N_{#sigma,p} - #pi hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTOFkSemi), "TOF N_{#sigma,p} - K hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTOFkSemi), "TOF N_{#sigma,p} - K hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTOFpSemi), "TOF N_{#sigma,p} - p hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTOFpSemi), "TOF N_{#sigma,p} - p hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTOFdSemi), "TOF N_{#sigma,p} - d hypothesis;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTOFdSemi), "TOF N_{#sigma,p} - d hypothesis;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTOFmismatchSemi), "TOF N_{#sigma,p} - mismatch;p (GeV/c);N_{#sigma,p}",
+  AddHistogram(ID(kHistNsigmaTOFmismatchSemi), "TOF N_{#sigma,p} - mismatch;p (GeV/#it{c});N_{#sigma,p}",
               100, 0., 10.,
               200, -100., 100.);
 
   // delta templates
-  AddHistogram(ID(kHistDeltaTOFe), "TOF #Delta;p (GeV/c);t (ns)",
+  AddHistogram(ID(kHistDeltaTOFe), "TOF #Delta;p (GeV/#it{c});t (ns)",
               100, 0., 10., 200, -2., 2.);
-  AddHistogram(ID(kHistDeltaTOFmu), "TOF #Delta;p (GeV/c);t (ns)",
+  AddHistogram(ID(kHistDeltaTOFmu), "TOF #Delta;p (GeV/#it{c});t (ns)",
               100, 0., 10., 200, -2., 2.);
-  AddHistogram(ID(kHistDeltaTOFpi), "TOF #Delta;p (GeV/c);t (ns)",
+  AddHistogram(ID(kHistDeltaTOFpi), "TOF #Delta;p (GeV/#it{c});t (ns)",
               100, 0., 10., 200, -2., 2.);
-  AddHistogram(ID(kHistDeltaTOFk), "TOF #Delta;p (GeV/c);t (ns)",
+  AddHistogram(ID(kHistDeltaTOFk), "TOF #Delta;p (GeV/#it{c});t (ns)",
               100, 0., 10., 200, -2., 2.);
-  AddHistogram(ID(kHistDeltaTOFp), "TOF #Delta;p (GeV/c);t (ns)",
+  AddHistogram(ID(kHistDeltaTOFp), "TOF #Delta;p (GeV/#it{c});t (ns)",
               100, 0., 10., 200, -2., 2.);
-  AddHistogram(ID(kHistDeltaTOFd), "TOF #Delta;p (GeV/c);t (ns)",
+  AddHistogram(ID(kHistDeltaTOFd), "TOF #Delta;p (GeV/#it{c});t (ns)",
               100, 0., 10., 200, -2., 2.);
 
-  AddHistogram(ID(kHistDeltaTOFeSemi), "TOF #Delta;p (GeV/c);t (ns)",
+  AddHistogram(ID(kHistDeltaTOFeSemi), "TOF #Delta;p (GeV/#it{c});t (ns)",
               100, 0., 10., 200, -2., 2.);
-  AddHistogram(ID(kHistDeltaTOFmuSemi), "TOF #Delta;p (GeV/c);t (ns)",
+  AddHistogram(ID(kHistDeltaTOFmuSemi), "TOF #Delta;p (GeV/#it{c});t (ns)",
               100, 0., 10., 200, -2., 2.);
-  AddHistogram(ID(kHistDeltaTOFpiSemi), "TOF #Delta;p (GeV/c);t (ns)",
+  AddHistogram(ID(kHistDeltaTOFpiSemi), "TOF #Delta;p (GeV/#it{c});t (ns)",
               100, 0., 10., 200, -2., 2.);
-  AddHistogram(ID(kHistDeltaTOFkSemi), "TOF #Delta;p (GeV/c);t (ns)",
+  AddHistogram(ID(kHistDeltaTOFkSemi), "TOF #Delta;p (GeV/#it{c});t (ns)",
               100, 0., 10., 200, -2., 2.);
-  AddHistogram(ID(kHistDeltaTOFpSemi), "TOF #Delta;p (GeV/c);t (ns)",
+  AddHistogram(ID(kHistDeltaTOFpSemi), "TOF #Delta;p (GeV/#it{c});t (ns)",
               100, 0., 10., 200, -2., 2.);
-  AddHistogram(ID(kHistDeltaTOFdSemi), "TOF #Delta;p (GeV/c);t (ns)",
+  AddHistogram(ID(kHistDeltaTOFdSemi), "TOF #Delta;p (GeV/#it{c});t (ns)",
               100, 0., 10., 200, -2., 2.);
 
   // sigma comparisons
-  // AddHistogram(ID(kHistExpSigmaTOFe), "TOF time of flight;p (GeV/c);t (ns)",
+  // AddHistogram(ID(kHistExpSigmaTOFe), "TOF time of flight;p (GeV/#it{c});t (ns)",
   //          100, 0., 10., 200, 0., .25);
-  // AddHistogram(ID(kHistExpSigmaTOFmu), "TOF time of flight;p (GeV/c);t (ns)",
+  // AddHistogram(ID(kHistExpSigmaTOFmu), "TOF time of flight;p (GeV/#it{c});t (ns)",
   //          100, 0., 10., 200, 0., .25);
-  // AddHistogram(ID(kHistExpSigmaTOFpi), "TOF time of flight;p (GeV/c);t (ns)",
+  // AddHistogram(ID(kHistExpSigmaTOFpi), "TOF time of flight;p (GeV/#it{c});t (ns)",
   //          100, 0., 10., 200, 0., .25);
-  // AddHistogram(ID(kHistExpSigmaTOFk), "TOF time of flight;p (GeV/c);t (ns)",
+  // AddHistogram(ID(kHistExpSigmaTOFk), "TOF time of flight;p (GeV/#it{c});t (ns)",
   //          100, 0., 10., 200, 0., .25);
-  // AddHistogram(ID(kHistExpSigmaTOFp), "TOF time of flight;p (GeV/c);t (ns)",
+  // AddHistogram(ID(kHistExpSigmaTOFp), "TOF time of flight;p (GeV/#it{c});t (ns)",
   //          100, 0., 10., 200, 0., .25);
-  // AddHistogram(ID(kHistExpSigmaTOFd), "TOF time of flight;p (GeV/c);t (ns)",
+  // AddHistogram(ID(kHistExpSigmaTOFd), "TOF time of flight;p (GeV/#it{c});t (ns)",
   //          100, 0., 10., 200, 0., .25);
 
-  // AddHistogram(ID(kHistExpSigmaTOFeSemi), "TOF time of flight;p (GeV/c);t (ns)",
+  // AddHistogram(ID(kHistExpSigmaTOFeSemi), "TOF time of flight;p (GeV/#it{c});t (ns)",
   //          100, 0., 10., 200, 0., .25);
-  // AddHistogram(ID(kHistExpSigmaTOFmuSemi), "TOF time of flight;p (GeV/c);t (ns)",
+  // AddHistogram(ID(kHistExpSigmaTOFmuSemi), "TOF time of flight;p (GeV/#it{c});t (ns)",
   //          100, 0., 10., 200, 0., .25);
-  // AddHistogram(ID(kHistExpSigmaTOFpiSemi), "TOF time of flight;p (GeV/c);t (ns)",
+  // AddHistogram(ID(kHistExpSigmaTOFpiSemi), "TOF time of flight;p (GeV/#it{c});t (ns)",
   //          100, 0., 10., 200, 0., .25);
-  // AddHistogram(ID(kHistExpSigmaTOFkSemi), "TOF time of flight;p (GeV/c);t (ns)",
+  // AddHistogram(ID(kHistExpSigmaTOFkSemi), "TOF time of flight;p (GeV/#it{c});t (ns)",
   //          100, 0., 10., 200, 0., .25);
-  // AddHistogram(ID(kHistExpSigmaTOFpSemi), "TOF time of flight;p (GeV/c);t (ns)",
+  // AddHistogram(ID(kHistExpSigmaTOFpSemi), "TOF time of flight;p (GeV/#it{c});t (ns)",
   //          100, 0., 10., 200, 0., .25);
-  // AddHistogram(ID(kHistExpSigmaTOFdSemi), "TOF time of flight;p (GeV/c);t (ns)",
+  // AddHistogram(ID(kHistExpSigmaTOFdSemi), "TOF time of flight;p (GeV/#it{c});t (ns)",
   //          100, 0., 10., 200, 0., .25);
 
   // AddHistogram(ID(kHistCmpSigmaTOFe), "#sigma comparison;exp #sigma;template #sigma",
@@ -462,39 +462,89 @@ void AliAnalysisTaskJetProtonCorr::UserCreateOutputObjects()
   //          200, 0., .25, 200, 0., .25);
 
   // Nsigma distributions
-  AddHistogram(ID(kHistNsigmaTPCTOF), "N_{#sigma,p} TPC-TOF;p (GeV/c);N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+  AddHistogram(ID(kHistNsigmaTPCTOF), "N_{#sigma,p} TPC-TOF;p (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
                100, 0., 10.,
                100, -25., 25.,
                200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTPCTOFPt), "N_{#sigma,p} TPC-TOF;p_{T} (GeV/c);N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+  AddHistogram(ID(kHistNsigmaTPCTOFPt), "N_{#sigma,p} TPC-TOF;p_{T} (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
                100, 0., 10.,
                100, -25., 25.,
                200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTPCTOFUsed), "N_{#sigma,p} TPC-TOF;p (GeV/c);N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+  AddHistogram(ID(kHistNsigmaTPCTOFUsed), "N_{#sigma,p} TPC-TOF;p (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
                100, 0., 10.,
                100, -25., 25.,
                200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTPCTOFUsedCentral), "N_{#sigma,p} TPC-TOF (central);p (GeV/c);N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+  AddHistogram(ID(kHistNsigmaTPCTOFUsedCentral), "N_{#sigma,p} TPC-TOF (central);p (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
                100, 0., 10.,
                100, -25., 25.,
                200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTPCTOFUsedSemiCentral), "N_{#sigma,p} TPC-TOF (semi-central);p (GeV/c);N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+  AddHistogram(ID(kHistNsigmaTPCTOFUsedSemiCentral), "N_{#sigma,p} TPC-TOF (semi-central);p (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
                100, 0., 10.,
                100, -25., 25.,
                200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTPCTOFUsedPt), "N_{#sigma,p} TPC-TOF;p_{T} (GeV/c);N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+  AddHistogram(ID(kHistNsigmaTPCTOFUsedPt), "N_{#sigma,p} TPC-TOF;p_{T} (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
                50, 0., 10.,
                100, -25., 25.,
                200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTPCTOFUsedPtCentral), "N_{#sigma,p} TPC-TOF;p_{T} (GeV/c);N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+  AddHistogram(ID(kHistNsigmaTPCTOFUsedPtCentral), "N_{#sigma,p} TPC-TOF;p_{T} (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
                50, 0., 10.,
                100, -25., 25.,
                200, -100., 100.);
-  AddHistogram(ID(kHistNsigmaTPCTOFUsedPtSemiCentral), "N_{#sigma,p} TPC-TOF;p_{T} (GeV/c);N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+  AddHistogram(ID(kHistNsigmaTPCTOFUsedPtSemiCentral), "N_{#sigma,p} TPC-TOF;p_{T} (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
                50, 0., 10.,
                100, -25., 25.,
                200, -100., 100.);
 
+  AddHistogram(ID(kHistNsigmaTPCTOFUsedCentralMCe), "N_{#sigma,p} TPC-TOF (central, MC e);p (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+               100, 0., 10.,
+               100, -25., 25.,
+               200, -100., 100.);
+  AddHistogram(ID(kHistNsigmaTPCTOFUsedCentralMCmu), "N_{#sigma,p} TPC-TOF (central, MC #mu);p (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+               100, 0., 10.,
+               100, -25., 25.,
+               200, -100., 100.);
+  AddHistogram(ID(kHistNsigmaTPCTOFUsedCentralMCpi), "N_{#sigma,p} TPC-TOF (central, MC pi);p (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+               100, 0., 10.,
+               100, -25., 25.,
+               200, -100., 100.);
+  AddHistogram(ID(kHistNsigmaTPCTOFUsedCentralMCk), "N_{#sigma,p} TPC-TOF (central, MC K);p (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+               100, 0., 10.,
+               100, -25., 25.,
+               200, -100., 100.);
+  AddHistogram(ID(kHistNsigmaTPCTOFUsedCentralMCp), "N_{#sigma,p} TPC-TOF (central, MC p);p (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+               100, 0., 10.,
+               100, -25., 25.,
+               200, -100., 100.);
+  AddHistogram(ID(kHistNsigmaTPCTOFUsedCentralMCd), "N_{#sigma,p} TPC-TOF (central, MC d);p (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+               100, 0., 10.,
+               100, -25., 25.,
+               200, -100., 100.);
+
+  AddHistogram(ID(kHistNsigmaTPCTOFUsedSemiCentralMCe), "N_{#sigma,p} TPC-TOF (semi-central, MC e);p (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+               100, 0., 10.,
+               100, -25., 25.,
+               200, -100., 100.);
+  AddHistogram(ID(kHistNsigmaTPCTOFUsedSemiCentralMCmu), "N_{#sigma,p} TPC-TOF (semi-central, MC #mu);p (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+               100, 0., 10.,
+               100, -25., 25.,
+               200, -100., 100.);
+  AddHistogram(ID(kHistNsigmaTPCTOFUsedSemiCentralMCpi), "N_{#sigma,p} TPC-TOF (semi-central, MC pi);p (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+               100, 0., 10.,
+               100, -25., 25.,
+               200, -100., 100.);
+  AddHistogram(ID(kHistNsigmaTPCTOFUsedSemiCentralMCk), "N_{#sigma,p} TPC-TOF (semi-central, MC K);p (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+               100, 0., 10.,
+               100, -25., 25.,
+               200, -100., 100.);
+  AddHistogram(ID(kHistNsigmaTPCTOFUsedSemiCentralMCp), "N_{#sigma,p} TPC-TOF (semi-central, MC p);p (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+               100, 0., 10.,
+               100, -25., 25.,
+               200, -100., 100.);
+  AddHistogram(ID(kHistNsigmaTPCTOFUsedSemiCentralMCd), "N_{#sigma,p} TPC-TOF (semi-central, MC d);p (GeV/#it{c});N_{#sigma,p}^{TPC};N_{#sigma,p}^{TOF}",
+               100, 0., 10.,
+               100, -25., 25.,
+               200, -100., 100.);
+
   AddHistogram(ID(kHistEvPlane), "default event plane;#Psi;counts",
                100, -0. * TMath::Pi(), 1. * TMath::Pi());
   AddHistogram(ID(kHistEvPlaneUsed), "default event plane;#Psi;counts",
@@ -520,9 +570,9 @@ void AliAnalysisTaskJetProtonCorr::UserCreateOutputObjects()
                100, -0. * TMath::Pi(), 1. * TMath::Pi(),
               kClLast, -.5, kClLast-.5);
 
-  AddHistogram(ID(kHistJetPtCentral), "jet spectrum - central;p_{T}^{jet,ch};counts",
+  AddHistogram(ID(kHistJetPtCentral), "jet spectrum - central;p_{T}^{jet,ch} (GeV/#it{c});counts",
                40, 0., 200.);
-  AddHistogram(ID(kHistJetPtSemi), "jet spectrum - semi-peripheral;p_{T}^{jet,ch};counts",
+  AddHistogram(ID(kHistJetPtSemi), "jet spectrum - semi-peripheral;p_{T}^{jet,ch} (GeV/#it{c});counts",
                40, 0., 200.);
 
   AddHistogram(ID(kHistEtaPhiTrgHad), "trg had;#varphi;#eta",
@@ -540,39 +590,45 @@ void AliAnalysisTaskJetProtonCorr::UserCreateOutputObjects()
 
   AddHistogram(ID(kHistPhiTrgJetEvPlane), "trg jet;#varphi - #Psi_{ev};centrality",
               100, -0. * TMath::Pi(), 2. * TMath::Pi(),
-              100., 0., 100.);
+              100, 0., 100.);
   AddHistogram(ID(kHistPhiTrgHadEvPlane), "trg had;#varphi - #Psi_{ev};centrality",
               100, -0. * TMath::Pi(), 2. * TMath::Pi(),
-              100., 0., 100.);
+              100, 0., 100.);
+  AddHistogram(ID(kHistPhiRndTrgJetEvPlane), "rnd trg jet;#varphi - #Psi_{ev};centrality",
+              100, -0. * TMath::Pi(), 2. * TMath::Pi(),
+              100, 0., 100.);
+  AddHistogram(ID(kHistPhiRndTrgHadEvPlane), "rnd trg had;#varphi - #Psi_{ev};centrality",
+              100, -0. * TMath::Pi(), 2. * TMath::Pi(),
+              100, 0., 100.);
   AddHistogram(ID(kHistPhiAssHadEvPlane), "ass had;#varphi - #Psi_{ev};centrality",
               100, -0. * TMath::Pi(), 2. * TMath::Pi(),
-              100., 0., 100.);
+              100, 0., 100.);
   AddHistogram(ID(kHistPhiAssProtEvPlane), "ass prot;#varphi - #Psi_{ev};centrality",
               100, -0. * TMath::Pi(), 2. * TMath::Pi(),
-              100., 0., 100.);
+              100, 0., 100.);
   AddHistogram(ID(kHistPhiAssHadVsEvPlane), "ass had;#Psi_{ev};#varphi;centrality",
               100, -0. * TMath::Pi(), 1. * TMath::Pi(),
               100, -0. * TMath::Pi(), 2. * TMath::Pi(),
-              100., 0., 100.);
+              100, 0., 100.);
 
   AddHistogram(ID(kHistPhiTrgJetEvPlane3), "trg jet;#varphi - #Psi_{ev};centrality",
               100, -0. * TMath::Pi(), 2. * TMath::Pi(),
-              100., 0., 100.);
+              100, 0., 100.);
   AddHistogram(ID(kHistPhiTrgHadEvPlane3), "trg had;#varphi - #Psi_{ev};centrality",
               100, -0. * TMath::Pi(), 2. * TMath::Pi(),
-              100., 0., 100.);
+              100, 0., 100.);
   AddHistogram(ID(kHistPhiAssHadEvPlane3), "ass had;#varphi - #Psi_{ev};centrality",
               100, -0. * TMath::Pi(), 2. * TMath::Pi(),
-              100., 0., 100.);
+              100, 0., 100.);
   AddHistogram(ID(kHistPhiAssProtEvPlane3), "ass prot;#varphi - #Psi_{ev};centrality",
               100, -0. * TMath::Pi(), 2. * TMath::Pi(),
-              100., 0., 100.);
+              100, 0., 100.);
 
   for (Int_t iCorr = 0; iCorr < kCorrLast; ++iCorr) {
     for (Int_t iCl = 0; iCl < kClLast; ++iCl) {
       for (Int_t iEv = 0; iEv < kEvLast; ++iEv) {
        // we don't need the mixed event histograms for the embedded excess particles
-       if ((iCorr > kCorrRndHadProt) && (iEv == kEvMix))
+       if ((iCorr > kCorrRndJetProt) && (iEv == kEvMix))
          continue;
 
        GetHistCorr((CorrType_t) iCorr, (Class_t) iCl, (Ev_t) iEv) =
@@ -695,6 +751,7 @@ void AliAnalysisTaskJetProtonCorr::UserExec(Option_t * /* option */)
     TObjArray trgArray[kTrgLast];
     TObjArray assArray[kAssLast];
 
+    // prepare TOF response
     TF1 fTOFsignal("fTOFsignal", &AliAnalysisTaskJetProtonCorr::TOFsignal, -2440., 2440., 4);
     fTOFsignal.SetParameter(0, 1.);
     fTOFsignal.SetParameter(1, 0.);
@@ -764,10 +821,20 @@ void AliAnalysisTaskJetProtonCorr::UserExec(Option_t * /* option */)
                 trk->Pt(),
                 fPIDResponse->NumberOfSigmasTPC(trk, AliPID::kProton),
                 fPIDResponse->NumberOfSigmasTOF(trk, AliPID::kProton));
+         if (fMCEvent) {
+           if (AliMCParticle *mcPart = (AliMCParticle*) fMCEvent->GetTrack(TMath::Abs(trk->GetLabel()))) {
+             for (Int_t iParticle = 0; iParticle <= AliPID::kDeuteron; ++iParticle) {
+               if (TMath::Abs(mcPart->Particle()->GetPdgCode()) == AliPID::ParticleCode(iParticle))
+                 FillH3(kHistNsigmaTPCTOFUsedCentralMCe,
+                        trk->P(),
+                        fPIDResponse->NumberOfSigmasTPC(trk, AliPID::kProton),
+                        fPIDResponse->NumberOfSigmasTOF(trk, AliPID::kProton),
+                        1., iParticle);
+             }
+           }
+         }
        }
        if (IsClass(kClSemiCentral)) {
-         if (IsProton(trk))
-           FillH1(kHistEtaPhiAssProt, trk->Phi(), trk->Eta());
          FillH3(kHistNsigmaTPCTOFUsedSemiCentral,
                 trk->P(),
                 fPIDResponse->NumberOfSigmasTPC(trk, AliPID::kProton),
@@ -776,6 +843,18 @@ void AliAnalysisTaskJetProtonCorr::UserExec(Option_t * /* option */)
                 trk->Pt(),
                 fPIDResponse->NumberOfSigmasTPC(trk, AliPID::kProton),
                 fPIDResponse->NumberOfSigmasTOF(trk, AliPID::kProton));
+         if (fMCEvent) {
+           if (AliMCParticle *mcPart = (AliMCParticle*) fMCEvent->GetTrack(TMath::Abs(trk->GetLabel()))) {
+             for (Int_t iParticle = 0; iParticle <= AliPID::kDeuteron; ++iParticle) {
+               if (TMath::Abs(mcPart->Particle()->GetPdgCode()) == AliPID::ParticleCode(iParticle))
+                 FillH3(kHistNsigmaTPCTOFUsedSemiCentralMCe,
+                        trk->P(),
+                        fPIDResponse->NumberOfSigmasTPC(trk, AliPID::kProton),
+                        fPIDResponse->NumberOfSigmasTOF(trk, AliPID::kProton),
+                        1., iParticle);
+             }
+           }
+         }
        }
        if (IsProton(trk)) {
          assArray[kAssProt].Add(trk);
@@ -785,9 +864,14 @@ void AliAnalysisTaskJetProtonCorr::UserExec(Option_t * /* option */)
        }
 
        // template generation
-       Double_t deltaTPC;
-       fPIDResponse->GetSignalDelta(AliPIDResponse::kTPC, trk, AliPID::kProton, deltaTPC);
        if (fPIDResponse->CheckPIDStatus(AliPIDResponse::kTPC, trk) == AliPIDResponse::kDetPidOk) {
+         Double_t deltaTPC;
+         fPIDResponse->GetSignalDelta(AliPIDResponse::kTPC, trk, AliPID::kProton, deltaTPC);
+         if (IsClass(kClCentral))
+           FillH2(kHistDeltaTPC, trk->P(), deltaTPC);
+         if (IsClass(kClSemiCentral))
+           FillH2(kHistDeltaTPCSemi, trk->P(), deltaTPC);
+
          Double_t expTPC = fPIDResponse->GetTPCResponse().GetExpectedSignal(trk, AliPID::kProton, AliTPCPIDResponse::kdEdxDefault, corrEta, corrMult);
          Double_t expSigmaTPC = fPIDResponse->GetTPCResponse().GetExpectedSigma(trk, AliPID::kProton, AliTPCPIDResponse::kdEdxDefault, corrEta, corrMult);
 
@@ -797,20 +881,17 @@ void AliAnalysisTaskJetProtonCorr::UserExec(Option_t * /* option */)
            Double_t expSigmaTPCx = fPIDResponse->GetTPCResponse().GetExpectedSigma(trk, AliPID::EParticleType(iParticle), AliTPCPIDResponse::kdEdxDefault, corrEta, corrMult);
            Double_t rndTPCx = gRandom->Gaus(expTPCx, expSigmaTPCx);
 
-           if(IsClass(kClCentral)) {
+           if(IsClass(kClCentral))
              FillH2(kHistNsigmaTPCe, trk->P(), (rndTPCx-expTPC)/expSigmaTPC, 1., iParticle);
-             FillH2(kHistDeltaTPC, trk->P(), deltaTPC);
-           }
-           if(IsClass(kClSemiCentral)) {
+           if(IsClass(kClSemiCentral))
              FillH2(kHistNsigmaTPCeSemi, trk->P(), (rndTPCx-expTPC)/expSigmaTPC, 1., iParticle);
-             FillH2(kHistDeltaTPCSemi, trk->P(), deltaTPC);
-           }
          }
        }
 
-       Double_t deltaTOF;
-       fPIDResponse->GetSignalDelta(AliPIDResponse::kTOF, trk, AliPID::kProton, deltaTOF);
        if (fPIDResponse->CheckPIDStatus(AliPIDResponse::kTOF, trk) == AliPIDResponse::kDetPidOk) {
+         Double_t deltaTOF;
+         fPIDResponse->GetSignalDelta(AliPIDResponse::kTOF, trk, AliPID::kProton, deltaTOF);
+
          AliTOFPIDResponse &tofResponse = fPIDResponse->GetTOFResponse();
 
          Float_t p = trk->P();
@@ -1023,10 +1104,10 @@ Bool_t AliAnalysisTaskJetProtonCorr::DetectTriggers()
 
   AliVEvent::EOfflineTriggerTypes physSel =
     (AliVEvent::EOfflineTriggerTypes) ((AliInputEventHandler*) (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
-  TString trgClasses = InputEvent()->GetFiredTriggerClasses();
+  // TString trgClasses = InputEvent()->GetFiredTriggerClasses();
 
   // physics selection
-  if (physSel & (AliVEvent::kAnyINT | AliVEvent::kCentral | AliVEvent::kSemiCentral))
+  if (physSel & (AliVEvent::kMB | AliVEvent::kCentral | AliVEvent::kSemiCentral))
     MarkTrigger(kTriggerInt);
 
   return kTRUE;
@@ -1146,7 +1227,7 @@ Bool_t AliAnalysisTaskJetProtonCorr::PrepareEvent()
     const Int_t nTracksAODAss = fAODEvent->GetNumberOfTracks();
     for (Int_t iTrack = 0; iTrack < nTracksAODAss; ++iTrack) {
       AliAODTrack *trk = fAODEvent->GetTrack(iTrack);
-      if (trk->TestFilterMask(fAssFilterMask))
+      if (trk->TestFilterBit(fAssFilterMask))
         fPrimTrackArrayAss->Add(trk);
     }
 
@@ -1198,6 +1279,9 @@ Bool_t AliAnalysisTaskJetProtonCorr::PrepareEvent()
 
 Bool_t AliAnalysisTaskJetProtonCorr::AcceptTrigger(const AliVTrack *trg)
 {
+  if (TMath::Abs(trg->Eta()) > fHadEtaMax)
+    return kFALSE;
+
   // check pt interval
   Bool_t acceptPt =
     (trg->Pt() >= fTrgPartPtMin) &&
@@ -1302,19 +1386,28 @@ Bool_t AliAnalysisTaskJetProtonCorr::AcceptTrigger(const AliAODJet *trg)
 
 Bool_t AliAnalysisTaskJetProtonCorr::AcceptAssoc(const AliVTrack *trk) const
 {
-  if ((trk->Pt() > fAssPartPtMin) && (trk->Pt() < fAssPartPtMax) &&
-      (fPIDResponse->CheckPIDStatus(AliPIDResponse::kTPC, trk) == AliPIDResponse::kDetPidOk) &&
-      (fPIDResponse->CheckPIDStatus(AliPIDResponse::kTOF, trk) == AliPIDResponse::kDetPidOk))
-    if ((trk->GetTPCsignalN() >= 60.) &&
-       (trk->GetTPCsignal() >= 10) &&
-       (TMath::Abs(trk->Eta()) < .9))
+  if ((trk->Pt() > fAssPartPtMin) && (trk->Pt() < fAssPartPtMax) && (TMath::Abs(trk->Eta()) < fHadEtaMax))
+    if (fRequirePID) {
+      if ((fPIDResponse->CheckPIDStatus(AliPIDResponse::kTPC, trk) == AliPIDResponse::kDetPidOk) &&
+         (fPIDResponse->CheckPIDStatus(AliPIDResponse::kTOF, trk) == AliPIDResponse::kDetPidOk) && 
+         (trk->GetTPCsignalN() >= 60.) && (trk->GetTPCsignal() >= 10))
+       return kTRUE;
+      else
+       return kFALSE;
+    }
+    else
       return kTRUE;
-
-  return kFALSE;
+  else
+    return kFALSE;
 }
 
 Bool_t AliAnalysisTaskJetProtonCorr::IsProton(const AliVTrack *trk) const
 {
+  if ((fPIDResponse->CheckPIDStatus(AliPIDResponse::kTPC, trk) != AliPIDResponse::kDetPidOk) ||
+      (fPIDResponse->CheckPIDStatus(AliPIDResponse::kTOF, trk) != AliPIDResponse::kDetPidOk) || 
+      (trk->GetTPCsignalN() < 60.) || (trk->GetTPCsignal() < 10))
+    return kFALSE;
+
   Double_t nSigmaProtonTPC = fPIDResponse->NumberOfSigmasTPC(trk, AliPID::kProton);
   Double_t nSigmaProtonTOF = fPIDResponse->NumberOfSigmasTOF(trk, AliPID::kProton);
 
@@ -1472,6 +1565,12 @@ Bool_t AliAnalysisTaskJetProtonCorr::Correlate(CorrType_t corr, Class_t cl, Ev_t
 Bool_t AliAnalysisTaskJetProtonCorr::Correlate(Trg_t trg, Ass_t ass, Class_t cl, Ev_t ev,
                                               TCollection *trgArray, TCollection *assArray, Float_t weight)
 {
+  if ((trg < 0) || (trg > kTrgJetRnd))
+    AliFatal(Form("wrong request for correlation with trigger: %d", trg));
+
+  if ((ass < 0) || (ass > kAssProt))
+    AliFatal(Form("wrong request for correlation with associate: %d", ass));
+
   CorrType_t corr = (CorrType_t) (2 * trg + ass);
 
   return Correlate(corr, cl, ev, trgArray, assArray, weight);
@@ -1487,24 +1586,27 @@ Bool_t AliAnalysisTaskJetProtonCorr::GenerateRandom(TCollection *trgJetArray,
 {
   // generate random direction
 
-  Float_t meanNoPart = 10;
-  Int_t nPart = gRandom->Poisson(meanNoPart);
+  const Int_t nPart = gRandom->Poisson(fToyMeanNoPart);
 
-  Float_t trgJetEta = gRandom->Uniform(-.5, .5);
+  Float_t trgJetEta = gRandom->Uniform(-fTrgJetEtaMax, fTrgJetEtaMax);
   Float_t trgJetPhi = 0.;
-  if (IsClass(kClSemiCentral)) {
-    do {
-      trgJetPhi = fTrgJetPhiModSemi->GetRandom();
-    } while (!AcceptAngleToEvPlane(trgJetPhi, 0));
-  }
-  else {
-    trgJetPhi = fTrgJetPhiModCent->GetRandom();
-  }
-  trgJetPhi += fEventPlaneAngle;
-  if (trgJetPhi < 0.)
-    trgJetPhi += 2. * TMath::Pi();
-  else if (trgJetPhi > 2. * TMath::Pi())
-    trgJetPhi -= 2. * TMath::Pi();
+  do {
+    trgJetPhi = IsClass(kClSemiCentral) ?
+      fTrgJetPhiModSemi->GetRandom() :
+      fTrgJetPhiModCent->GetRandom();
+
+    trgJetPhi += fEventPlaneAngle;
+    if (trgJetPhi < 0.)
+      trgJetPhi += 2. * TMath::Pi();
+    else if (trgJetPhi > 2. * TMath::Pi())
+      trgJetPhi -= 2. * TMath::Pi();
+
+    Float_t phiRel = trgJetPhi- fEventPlaneAngle;
+    if (phiRel < 0.)
+      phiRel += 2. * TMath::Pi();
+    FillH2(kHistPhiRndTrgJetEvPlane, phiRel, fCentrality);
+  } while (IsClass(kClSemiCentral) &&
+          !AcceptAngleToEvPlane(trgJetPhi, GetEventPlaneAngle()));
 
   // generate one trigger particle
   TLorentzVector *trgJet = new TLorentzVector();
@@ -1512,14 +1614,14 @@ Bool_t AliAnalysisTaskJetProtonCorr::GenerateRandom(TCollection *trgJetArray,
   trgJetArray->Add(trgJet);
 
   // generate direction for away side
-  Float_t trgJetEtaAway = gRandom->Uniform(-.9, .9);
-  Float_t trgJetPhiAway = trgJetPhi + TMath::Pi() + gRandom->Gaus(0., .2);
+  Float_t trgJetEtaAway = gRandom->Uniform(-fHadEtaMax, fHadEtaMax);
+  Float_t trgJetPhiAway = trgJetPhi + TMath::Pi() + gRandom->Gaus(0., fToySmearPhi);
 
   // generate associated particles
   // with proton/hadron ratio observed in this event
   for (Int_t iPart = 0; iPart < nPart; ++iPart) {
     Float_t deltaEta, deltaPhi;
-    const Float_t r = .8;
+    const Float_t r = fToyRadius;
     do {
       deltaEta = gRandom->Uniform(-r, r);
       deltaPhi = gRandom->Uniform(-r, r);
@@ -1528,13 +1630,13 @@ Bool_t AliAnalysisTaskJetProtonCorr::GenerateRandom(TCollection *trgJetArray,
     TLorentzVector *assPart = new TLorentzVector();
     Float_t eta = trgJetEtaAway + deltaEta;
     Float_t phi = trgJetPhiAway + deltaPhi;
-    if (eta > .9) {
+    if (TMath::Abs(eta) > fHadEtaMax) {
       delete assPart;
       continue;
     }
-    if (phi < 0.)
+    while (phi < 0.)
       phi += 2. * TMath::Pi();
-    else if (phi > 2. * TMath::Pi())
+    while (phi > 2. * TMath::Pi())
       phi -= 2. * TMath::Pi();
     assPart->SetPtEtaPhiM(3., eta, phi, .14);
     assHadJetArray->Add(assPart);
@@ -1543,21 +1645,25 @@ Bool_t AliAnalysisTaskJetProtonCorr::GenerateRandom(TCollection *trgJetArray,
   }
 
   // trigger hadron
-  Float_t trgHadEta = gRandom->Uniform(-.9, .9);
+  Float_t trgHadEta = gRandom->Uniform(-fHadEtaMax, fHadEtaMax);
   Float_t trgHadPhi = 0.;
-  if (IsClass(kClSemiCentral)) {
-    do {
-      trgHadPhi = fTrgHadPhiModSemi->GetRandom();
-    } while (!AcceptAngleToEvPlane(trgHadPhi, 0));
-  }
-  else {
-    trgHadPhi = fTrgHadPhiModCent->GetRandom();
-  }
-  trgHadPhi += fEventPlaneAngle;
-  if (trgHadPhi < 0.)
-    trgHadPhi += 2. * TMath::Pi();
-  else if (trgHadPhi > 2. * TMath::Pi())
-    trgHadPhi -= 2. * TMath::Pi();
+  do {
+    trgHadPhi = IsClass(kClSemiCentral) ?
+      fTrgHadPhiModSemi->GetRandom() :
+      fTrgHadPhiModCent->GetRandom();
+
+    trgHadPhi += fEventPlaneAngle;
+    if (trgHadPhi < 0.)
+      trgHadPhi += 2. * TMath::Pi();
+    else if (trgHadPhi > 2. * TMath::Pi())
+      trgHadPhi -= 2. * TMath::Pi();
+
+    Float_t phiRel = trgHadPhi - fEventPlaneAngle;
+    if (phiRel < 0.)
+      phiRel += 2. * TMath::Pi();
+    FillH2(kHistPhiRndTrgHadEvPlane, phiRel, fCentrality);
+  } while (IsClass(kClSemiCentral) &&
+          !AcceptAngleToEvPlane(trgHadPhi, GetEventPlaneAngle()));
 
   // generate one trigger particle
   TLorentzVector *trgHad = new TLorentzVector();
@@ -1565,14 +1671,14 @@ Bool_t AliAnalysisTaskJetProtonCorr::GenerateRandom(TCollection *trgJetArray,
   trgHadArray->Add(trgHad);
 
   // generate direction for away side
-  Float_t trgHadEtaAway = gRandom->Uniform(-.9, .9);
-  Float_t trgHadPhiAway = trgHadPhi + TMath::Pi() + gRandom->Gaus(0., .2);
+  Float_t trgHadEtaAway = gRandom->Uniform(-fHadEtaMax, fHadEtaMax);
+  Float_t trgHadPhiAway = trgHadPhi + TMath::Pi() + gRandom->Gaus(0., fToySmearPhi);
 
   // generate associated particles
   // with proton/hadron ratio observed in this event
   for (Int_t iPart = 0; iPart < nPart; ++iPart) {
     Float_t deltaEta, deltaPhi;
-    const Float_t r = .8;
+    const Float_t r = fToyRadius;
     do {
       deltaEta = gRandom->Uniform(-r, r);
       deltaPhi = gRandom->Uniform(-r, r);
@@ -1581,13 +1687,13 @@ Bool_t AliAnalysisTaskJetProtonCorr::GenerateRandom(TCollection *trgJetArray,
     TLorentzVector *assPart = new TLorentzVector();
     Float_t eta = trgHadEtaAway + deltaEta;
     Float_t phi = trgHadPhiAway + deltaPhi;
-    if (eta > .9) {
+    if (TMath::Abs(eta) > fHadEtaMax) {
       delete assPart;
       continue;
     }
-    if (phi < 0.)
+    while (phi < 0.)
       phi += 2. * TMath::Pi();
-    else if (phi > 2. * TMath::Pi())
+    while (phi > 2. * TMath::Pi())
       phi -= 2. * TMath::Pi();
     assPart->SetPtEtaPhiM(3., eta, phi, .14);
     assHadHadArray->Add(assPart);
@@ -1619,15 +1725,16 @@ TObjArray* AliAnalysisTaskJetProtonCorr::CloneTracks(TObjArray* tracks) const
 
   Int_t nTracks = tracks->GetEntriesFast();
   for (Int_t i = 0; i < nTracks; i++) {
-    // tracksClone->Add(new AliDPhiBasicParticle(particle->Eta(), particle->Phi(), particle->Pt(), particle->Charge()));
-
     // WARNING: TObject::Clone() is very!!! expensive, unusable
     // tracksClone->Add(particle->Clone());
 
-    if (AliESDtrack* esdTrack = dynamic_cast<AliESDtrack*> (tracks->At(i)))
-      tracksClone->Add(new AliESDtrack(*esdTrack));
-    else if (AliAODTrack* aodTrack = dynamic_cast<AliAODTrack*> (tracks->At(i)))
-      tracksClone->Add(new AliAODTrack(*aodTrack));
+    // if (AliESDtrack* esdTrack = dynamic_cast<AliESDtrack*> (tracks->At(i)))
+    //   tracksClone->Add(new AliESDtrack(*esdTrack));
+    // else if (AliAODTrack* aodTrack = dynamic_cast<AliAODTrack*> (tracks->At(i)))
+    //   tracksClone->Add(new AliAODTrack(*aodTrack));
+
+    if (const AliVTrack *track = dynamic_cast<const AliVTrack*> (tracks->At(i)))
+      tracksClone->Add(new AliPartCorr(*track));
   }
 
   return tracksClone;
@@ -1642,44 +1749,47 @@ AliAnalysisTaskJetProtonCorr::AliHistCorr::AliHistCorr(TString name, TList *outp
   fHistCorrEtaPhi(0x0),
   fHistCorrAvgEtaPhi(0x0),
   fHistCorrTrgEtaPhi(0x0),
-  fHistCorrAssEtaPhi(0x0)
+  fHistCorrAssEtaPhi(0x0),
+  fHistDphiLo(-TMath::Pi() / 2.),
+  fHistDphiNbins(120),
+  fHistDetaNbins(120)
 {
   // ctor
 
   fHistStat = new TH1F(Form("%s_stat", name.Data()), "statistics",
                       1, .5, 1.5);
 
-  fHistCorrPhi = new TH1F(Form("%s_phi", name.Data()), ";#Delta #phi",
-                         100, -2.*TMath::Pi(), 2.*TMath::Pi());
+  fHistCorrPhi = new TH1F(Form("%s_phi", name.Data()), ";#Delta#phi",
+                         fHistDphiNbins, fHistDphiLo, 2.*TMath::Pi() + fHistDphiLo);
   fHistCorrPhi->Sumw2();
-  fHistCorrPhi2 = new TH2F(Form("%s_phi2", name.Data()), ";#phi_{trg};#phi_{ass}",
-                         100, 0.*TMath::Pi(), 2.*TMath::Pi(),
-                         100, 0.*TMath::Pi(), 2.*TMath::Pi());
-  fHistCorrPhi2->Sumw2();
+  // fHistCorrPhi2 = new TH2F(Form("%s_phi2", name.Data()), ";#phi_{trg};#phi_{ass}",
+  //                     120, 0.*TMath::Pi(), 2.*TMath::Pi(),
+  //                     120, 0.*TMath::Pi(), 2.*TMath::Pi());
+  // fHistCorrPhi2->Sumw2();
   fHistCorrEtaPhi = new TH2F(Form("%s_etaphi", name.Data()), ";#Delta#phi;#Delta#eta",
-                            100, -1., 2*TMath::Pi()-1.,
-                            100, -2., 2.);
+                            fHistDphiNbins, fHistDphiLo, 2*TMath::Pi() + fHistDphiLo,
+                            fHistDetaNbins, -2., 2.);
   fHistCorrEtaPhi->Sumw2();
-  fHistCorrAvgEtaPhi = new TH2F(Form("%s_avgetaphi", name.Data()), ";#Delta#phi;avg #eta",
-                               100, -1., 2*TMath::Pi()-1.,
-                               100, -2., 2.);
-  fHistCorrAvgEtaPhi->Sumw2();
-  fHistCorrTrgEtaPhi = new TH2F(Form("%s_trg_etaphi", name.Data()), ";#varphi;#eta",
-                               100, 0., 2*TMath::Pi(),
-                               100, -1., 1.);
-  fHistCorrTrgEtaPhi->Sumw2();
-  fHistCorrAssEtaPhi = new TH2F(Form("%s_ass_etaphi", name.Data()), ";#varphi;#eta",
-                               100, 0., 2*TMath::Pi(),
-                               100, -1., 1.);
-  fHistCorrAssEtaPhi->Sumw2();
+  // fHistCorrAvgEtaPhi = new TH2F(Form("%s_avgetaphi", name.Data()), ";#Delta#phi;avg #eta",
+  //                           fHistDphiNbins, fHistDphiLo, 2*TMath::Pi() + fHistDphiLo,
+  //                           fHistDetaNbins, -2., 2.);
+  // fHistCorrAvgEtaPhi->Sumw2();
+  // fHistCorrTrgEtaPhi = new TH2F(Form("%s_trg_etaphi", name.Data()), ";#varphi;#eta",
+  //                           120, 0., 2*TMath::Pi(),
+  //                           120, -1., 1.);
+  // fHistCorrTrgEtaPhi->Sumw2();
+  // fHistCorrAssEtaPhi = new TH2F(Form("%s_ass_etaphi", name.Data()), ";#varphi;#eta",
+  //                           120, 0., 2*TMath::Pi(),
+  //                           120, -1., 1.);
+  // fHistCorrAssEtaPhi->Sumw2();
 
   fOutputList->Add(fHistStat);
   fOutputList->Add(fHistCorrPhi);
-  fOutputList->Add(fHistCorrPhi2);
+  // fOutputList->Add(fHistCorrPhi2);
   fOutputList->Add(fHistCorrEtaPhi);
-  fOutputList->Add(fHistCorrAvgEtaPhi);
-  fOutputList->Add(fHistCorrTrgEtaPhi);
-  fOutputList->Add(fHistCorrAssEtaPhi);
+  // fOutputList->Add(fHistCorrAvgEtaPhi);
+  // fOutputList->Add(fHistCorrTrgEtaPhi);
+  // fOutputList->Add(fHistCorrAssEtaPhi);
 }
 
 AliAnalysisTaskJetProtonCorr::AliHistCorr::~AliHistCorr()
@@ -1694,15 +1804,17 @@ void AliAnalysisTaskJetProtonCorr::AliHistCorr::Fill(AliVParticle *trgPart, AliV
   Float_t deltaEta = assPart->Eta() - trgPart->Eta();
   Float_t avgEta = (assPart->Eta() + trgPart->Eta()) / 2.;
   Float_t deltaPhi = assPart->Phi() - trgPart->Phi();
-  if (deltaPhi > (2.*TMath::Pi()-1.))
+  while (deltaPhi > (2.*TMath::Pi() + fHistDphiLo))
     deltaPhi -= 2. * TMath::Pi();
-  else if (deltaPhi < -1.)
+  while (deltaPhi < fHistDphiLo)
     deltaPhi += 2. * TMath::Pi();
 
   fHistCorrPhi->Fill(deltaPhi, weight);
-  fHistCorrPhi2->Fill(trgPart->Phi(), assPart->Phi(), weight);
+  if (fHistCorrPhi2)
+    fHistCorrPhi2->Fill(trgPart->Phi(), assPart->Phi(), weight);
   fHistCorrEtaPhi->Fill(deltaPhi, deltaEta, weight);
-  fHistCorrAvgEtaPhi->Fill(deltaPhi, avgEta, weight);
+  if (fHistCorrAvgEtaPhi)
+    fHistCorrAvgEtaPhi->Fill(deltaPhi, avgEta, weight);
 }
 
 void AliAnalysisTaskJetProtonCorr::AliHistCorr::Fill(TLorentzVector *trgPart, AliVParticle *assPart, Float_t weight)
@@ -1712,18 +1824,21 @@ void AliAnalysisTaskJetProtonCorr::AliHistCorr::Fill(TLorentzVector *trgPart, Al
   Float_t deltaEta = assPart->Eta() - trgPart->Eta();
   Float_t avgEta = (assPart->Eta() + trgPart->Eta()) / 2.;
   Float_t deltaPhi = assPart->Phi() - trgPart->Phi();
-  if (deltaPhi > (2.*TMath::Pi()-1.))
+  while (deltaPhi > (2.*TMath::Pi() + fHistDphiLo))
     deltaPhi -= 2. * TMath::Pi();
-  else if (deltaPhi < -1.)
+  while (deltaPhi < fHistDphiLo)
     deltaPhi += 2. * TMath::Pi();
 
   fHistCorrPhi->Fill(deltaPhi, weight);
-  Float_t trgPhi = trgPart->Phi();
-  if (trgPhi < 0)
-    trgPhi += 2. * TMath::Pi();
-  fHistCorrPhi2->Fill(trgPhi, assPart->Phi(), weight);
+  if (fHistCorrPhi2) {
+    Float_t trgPhi = trgPart->Phi();
+    if (trgPhi < 0)
+      trgPhi += 2. * TMath::Pi();
+    fHistCorrPhi2->Fill(trgPhi, assPart->Phi(), weight);
+  }
   fHistCorrEtaPhi->Fill(deltaPhi, deltaEta, weight);
-  fHistCorrAvgEtaPhi->Fill(deltaPhi, avgEta, weight);
+  if (fHistCorrAvgEtaPhi)
+    fHistCorrAvgEtaPhi->Fill(deltaPhi, avgEta, weight);
 }
 
 void AliAnalysisTaskJetProtonCorr::AliHistCorr::Fill(TLorentzVector *trgPart, TLorentzVector *assPart, Float_t weight)
@@ -1733,21 +1848,24 @@ void AliAnalysisTaskJetProtonCorr::AliHistCorr::Fill(TLorentzVector *trgPart, TL
   Float_t deltaEta = assPart->Eta() - trgPart->Eta();
   Float_t avgEta = (assPart->Eta() + trgPart->Eta()) / 2.;
   Float_t deltaPhi = assPart->Phi() - trgPart->Phi();
-  if (deltaPhi > (2.*TMath::Pi()-1.))
+  if (deltaPhi > (2.*TMath::Pi() + fHistDphiLo))
     deltaPhi -= 2. * TMath::Pi();
-  else if (deltaPhi < -1.)
+  else if (deltaPhi < fHistDphiLo)
     deltaPhi += 2. * TMath::Pi();
 
   fHistCorrPhi->Fill(deltaPhi, weight);
-  Float_t trgPhi = trgPart->Phi();
-  if (trgPhi < 0)
-    trgPhi += 2. * TMath::Pi();
-  Float_t assPhi = assPart->Phi();
-  if (assPhi < 0)
-    assPhi += 2. * TMath::Pi();
-  fHistCorrPhi2->Fill(trgPhi, assPhi, weight);
+  if (fHistCorrPhi2) {
+    Float_t trgPhi = trgPart->Phi();
+    if (trgPhi < 0)
+      trgPhi += 2. * TMath::Pi();
+    Float_t assPhi = assPart->Phi();
+    if (assPhi < 0)
+      assPhi += 2. * TMath::Pi();
+    fHistCorrPhi2->Fill(trgPhi, assPhi, weight);
+  }
   fHistCorrEtaPhi->Fill(deltaPhi, deltaEta, weight);
-  fHistCorrAvgEtaPhi->Fill(deltaPhi, avgEta, weight);
+  if (fHistCorrAvgEtaPhi)
+    fHistCorrAvgEtaPhi->Fill(deltaPhi, avgEta, weight);
 }
 
 // ----- histogram management -----