]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
modifications to run in centrality and multilicity bins (M.Knichel and J.Gronefeld)
authorjotwinow <jotwinow@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 14 Jun 2013 14:05:35 +0000 (14:05 +0000)
committerjotwinow <jotwinow@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 14 Jun 2013 14:05:35 +0000 (14:05 +0000)
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPt.cxx
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPt.h
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtAnalysis.cxx
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtAnalysis.h
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtAnalysispPb.cxx
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtAnalysispPb.h
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtHelper.cxx
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtHelper.h
PWGLF/SPECTRA/ChargedHadrons/dNdPt/macros/CreatedNdPtTrackCuts.C

index 0c89d07ea2d1d6d0488b579650d9ee4f9b370e48..32259b42ccf61ef860fd9bc3296696c06b4d3c90 100644 (file)
@@ -12,7 +12,7 @@
  * about the suitability of this software for any purpose. It is          *\r
  * provided "as is" without express or implied warranty.                  *\r
  **************************************************************************/\r
- // last change: 2011-04-04 by M.Knichel\r
+ // last change: 2013-06-13 by M.Knichel\r
 \r
 #include "AliESDtrackCuts.h"  \r
 #include "AlidNdPtEventCuts.h"\r
@@ -30,7 +30,9 @@ AlidNdPt::AlidNdPt(): TNamed()
 , fdNdPtEventCuts(0)\r
 , fdNdPtAcceptanceCuts(0)\r
 , fdNdPtRecAcceptanceCuts(0)\r
+, fMultAcceptanceCuts(0)\r
 , fEsdTrackCuts(0)\r
+, fMultTrackCuts(0)\r
 , fUseMCInfo(kFALSE)\r
 , fAnalysisMode(AlidNdPtHelper::kTPC) \r
 , fTrigger(AliTriggerAnalysis::kMB1) \r
@@ -50,7 +52,9 @@ AlidNdPt::AlidNdPt(Char_t* name, Char_t* title): TNamed(name,title)
 , fdNdPtEventCuts(0)\r
 , fdNdPtAcceptanceCuts(0)\r
 , fdNdPtRecAcceptanceCuts(0)\r
+, fMultAcceptanceCuts(0)\r
 , fEsdTrackCuts(0)\r
+, fMultTrackCuts(0)\r
 , fUseMCInfo(kFALSE)\r
 , fAnalysisMode(AlidNdPtHelper::kTPC) \r
 , fTrigger(AliTriggerAnalysis::kMB1) \r
@@ -69,7 +73,9 @@ AlidNdPt::AlidNdPt(const AlidNdPt&): TNamed()
 , fdNdPtEventCuts(0)\r
 , fdNdPtAcceptanceCuts(0)\r
 , fdNdPtRecAcceptanceCuts(0)\r
+, fMultAcceptanceCuts(0)\r
 , fEsdTrackCuts(0)\r
+, fMultTrackCuts(0)\r
 , fUseMCInfo(kFALSE)\r
 , fAnalysisMode(AlidNdPtHelper::kTPC) \r
 , fTrigger(AliTriggerAnalysis::kMB1) \r
@@ -95,8 +101,10 @@ AlidNdPt::~AlidNdPt() {
   // destructor\r
   if(fdNdPtEventCuts) delete fdNdPtEventCuts; fdNdPtEventCuts=NULL; \r
   if(fdNdPtAcceptanceCuts) delete fdNdPtAcceptanceCuts; fdNdPtAcceptanceCuts=NULL;\r
+  if(fMultAcceptanceCuts) delete fMultAcceptanceCuts; fMultAcceptanceCuts=NULL;\r
   if(fdNdPtRecAcceptanceCuts) delete fdNdPtRecAcceptanceCuts; fdNdPtRecAcceptanceCuts=NULL;  \r
   if(fEsdTrackCuts) delete fEsdTrackCuts; fEsdTrackCuts=NULL;\r
+  if(fMultTrackCuts) delete fMultTrackCuts; fMultTrackCuts=NULL;\r
   if(fPhysicsSelection) delete fPhysicsSelection; fPhysicsSelection=NULL;\r
   if(fdNdPtBackgroundCuts) delete fdNdPtBackgroundCuts; fdNdPtBackgroundCuts=NULL;\r
 }\r
index 0b506e631cac38152a9d1b775b2a510b4328dc9b..1caf3756acb760cb81b5f75398a4d11fa6348bfd 100644 (file)
@@ -5,7 +5,7 @@
 // Abstract class for dNdPt analysis. All dNdPt components should derive from it.   
 // 
 // Author: J.Otwinowski 03/11/2008 
-// last change: 2011-04-04 by M.Knichel
+// last change: 2011-06-13 by M.Knichel
 //------------------------------------------------------------------------------
 
 class AliESDEvent; 
@@ -46,9 +46,11 @@ public:
 
   //
   void SetEventCuts(AlidNdPtEventCuts* const cuts)              { fdNdPtEventCuts = cuts; }
-  void SetAcceptanceCuts(AlidNdPtAcceptanceCuts* const cuts)    { fdNdPtAcceptanceCuts = cuts; }
+  void SetAcceptanceCuts(AlidNdPtAcceptanceCuts* const cuts)    { fdNdPtAcceptanceCuts = cuts; }  
   void SetRecAcceptanceCuts(AlidNdPtAcceptanceCuts* const cuts) { fdNdPtRecAcceptanceCuts = cuts; }
+  void SetMultAcceptanceCuts(AlidNdPtAcceptanceCuts* const cuts){ fMultAcceptanceCuts = cuts; }  
   void SetTrackCuts(AliESDtrackCuts* const cuts)                { fEsdTrackCuts = cuts; }
+  void SetMultTrackCuts(AliESDtrackCuts* const cuts)            { fMultTrackCuts = cuts; }
   void SetUseMCInfo(const Bool_t info)                          { fUseMCInfo = info; }
   void SetAnalysisMode(const AlidNdPtHelper::AnalysisMode mode) { fAnalysisMode = mode; }
   void SetTrigger(const AliTriggerAnalysis::Trigger trigger)    { fTrigger = trigger; }
@@ -59,8 +61,10 @@ public:
 
   AlidNdPtEventCuts* GetEventCuts() const                       { return fdNdPtEventCuts; }
   AlidNdPtAcceptanceCuts* GetAcceptanceCuts() const             { return fdNdPtAcceptanceCuts; }
-  AlidNdPtAcceptanceCuts* GetRecAcceptanceCuts() const          { return fdNdPtRecAcceptanceCuts; }  
+  AlidNdPtAcceptanceCuts* GetMultAcceptanceCuts() const         { return (fMultAcceptanceCuts) ? fMultAcceptanceCuts : fdNdPtAcceptanceCuts; }
+  AlidNdPtAcceptanceCuts* GetRecAcceptanceCuts() const          { return fdNdPtRecAcceptanceCuts; }    
   AliESDtrackCuts* GetTrackCuts() const                         { return fEsdTrackCuts; }
+  AliESDtrackCuts* GetMultTrackCuts() const                     { return (fMultTrackCuts) ? fMultTrackCuts: fEsdTrackCuts; }  
   Bool_t IsUseMCInfo() const                                    { return fUseMCInfo; }
   AlidNdPtHelper::AnalysisMode GetAnalysisMode() const          { return fAnalysisMode; }
   AliTriggerAnalysis::Trigger GetTrigger() const                { return fTrigger; }
@@ -91,7 +95,9 @@ private:
   AlidNdPtEventCuts      *fdNdPtEventCuts;      // event cuts
   AlidNdPtAcceptanceCuts *fdNdPtAcceptanceCuts; // acceptance cuts  
   AlidNdPtAcceptanceCuts *fdNdPtRecAcceptanceCuts; // additional recontruction acceptance cuts (not used for MC truth)
+  AlidNdPtAcceptanceCuts *fMultAcceptanceCuts; // acceptance cuts for multiplicity estimator
   AliESDtrackCuts *fEsdTrackCuts;               // esd track cuts
+  AliESDtrackCuts *fMultTrackCuts;               // esd track cuts for multiplicity estimator
 
   Bool_t fUseMCInfo;                            // use MC information
   AlidNdPtHelper::AnalysisMode fAnalysisMode;   // analysis mode TPC only, TPC + ITS
@@ -107,7 +113,7 @@ private:
 
   UInt_t fTriggerMask;    // trigger mask
 
-  ClassDef(AlidNdPt,5);
+  ClassDef(AlidNdPt,6);
 };
 
 #endif
index 2cd82e54c9cf5fefbbfc21f67a036003b6181820..0e15ef195f2739557b643dae9c627e4089ad1a09 100644 (file)
 // - control histograms\r
 //\r
 // Author: J.Otwinowski 04/11/2008 \r
-// last change: 2011-04-04 by M.Knichel\r
+// last change: 2013-06-13 by M.Knichel\r
+//\r
+// meaning of different multiplicities:\r
+// multRec      : number of reconstructed tracks, after AcceptanceCuts and TrackCuts\r
+// multRecMult  : number of reconstructed tracks, after MultAcceptanceCuts and MultTrackCuts\r
+// multMB       : number of contributers to vertex\r
+// multTrueMC   : MC true mult, after MultAcceptanceCuts\r
+// mutlAll      : number of ESD tracks\r
+// mutlAcc      : number of ESD tracks after AcceptanceCuts\r
 //------------------------------------------------------------------------------\r
 \r
 #include "TH1.h"\r
@@ -142,6 +150,7 @@ ClassImp(AlidNdPtAnalysis)
   fRecEventHist(0),\r
   fRecTrackHist(0),\r
   fEventCount(0),\r
+  fMCPrimTrackHist(0),\r
 \r
   // Candle event histogram\r
   fRecCandleEventMatrix(0),\r
@@ -256,6 +265,7 @@ AlidNdPtAnalysis::AlidNdPtAnalysis(Char_t* name, Char_t* title): AlidNdPt(name,t
   fRecEventHist(0),\r
   fRecTrackHist(0),\r
   fEventCount(0),\r
+  fMCPrimTrackHist(0),\r
 \r
   // Candle event histogram\r
   fRecCandleEventMatrix(0),\r
@@ -371,6 +381,7 @@ AlidNdPtAnalysis::~AlidNdPtAnalysis() {
   if(fRecEventHist) delete fRecEventHist; fRecEventHist=0; \r
   if(fRecTrackHist) delete fRecTrackHist; fRecTrackHist=0; \r
   if(fEventCount) delete fEventCount; fEventCount=0;\r
+  if(fMCPrimTrackHist) delete fMCPrimTrackHist; fMCPrimTrackHist=0;\r
 \r
   //\r
   if(fAnalysisFolder) delete fAnalysisFolder; fAnalysisFolder=0;\r
@@ -386,23 +397,21 @@ AlidNdPtAnalysis::~AlidNdPtAnalysis() {
 void AlidNdPtAnalysis::Init()\r
 {\r
     //define default binning\r
-    Double_t binsMultDefault[28] = {-0.5, 0.5 , 1.5 , 2.5 , 3.5 , 4.5 , 5.5 , 6.5 , 7.5 , 8.5,\r
-                                     9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5,\r
-                                    19.5,20.5, 21.5, 22.5, 23.5, 24.5, 29.5, 149.5};\r
+    Double_t binsMultDefault[15] = {-0.5, 0.5 , 1.5 , 2.5 , 3.5 , 4.5 , 5.5 , 6.5 , 7.5 , 8.5, 9.5, 10.5, 20.5, 50.5, 150.5};\r
     Double_t binsPtDefault[69] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0,4.5,5.0,5.5,6.0,6.5,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0};\r
     Double_t binsPtCorrDefault[37] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,3.0,4.0,50.0};    \r
     Double_t binsEtaDefault[31] = {-1.5,-1.4,-1.3,-1.2,-1.1,-1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,-0.2,-0.1,0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5};\r
     Double_t binsZvDefault[13] = {-30.,-25.,-20.,-15.,-10.,-5.,0.,5.,10.,15.,20.,25.,30.};\r
 \r
    // if no binning is set, use the default\r
-   if (!fBinsMult)   { SetBinsMult(27,binsMultDefault); }\r
+   if (!fBinsMult)   { SetBinsMult(14,binsMultDefault); }\r
    if (!fBinsPt)     { SetBinsPt(68,binsPtDefault); }\r
    if (!fBinsPtCorr) { SetBinsPtCorr(36,binsPtCorrDefault); }\r
    if (!fBinsEta)    { SetBinsEta(30,binsEtaDefault); }\r
    if (!fBinsZv)     { SetBinsZv(12,binsZvDefault); }   \r
   \r
   //Int_t binsTrackMatrix[3]={zvNbins,ptNbins,etaNbins};\r
-  Int_t binsTrackEventCorrMatrix[3]={fZvNbins,fPtCorrNbins,fEtaNbins};\r
+  Int_t binsTrackEventCorrMatrix[4]={fZvNbins,fPtCorrNbins,fEtaNbins,fMultNbins};\r
 \r
   //\r
   // Generic histograms to be corrected\r
@@ -423,7 +432,7 @@ void AlidNdPtAnalysis::Init()
  // Double_t minTrackHist[4]={-25.,0.,-1.5,-0.5}; \r
  // Double_t maxTrackHist[4]={25.,50.,1.5,149.5}; \r
 \r
-  fRecTrackHist = new THnSparseF("fRecTrackHist","Zv:pT:eta:multRec",4,binsTrackHist); //,minTrackHist,maxTrackHist);\r
+  fRecTrackHist = new THnSparseF("fRecTrackHist","Zv:pT:eta:multRecMult",4,binsTrackHist); //,minTrackHist,maxTrackHist);\r
   fRecTrackHist->SetBinEdges(0,fBinsZv);\r
   fRecTrackHist->SetBinEdges(1,fBinsPt);\r
   fRecTrackHist->SetBinEdges(2,fBinsEta);\r
@@ -431,21 +440,36 @@ void AlidNdPtAnalysis::Init()
   fRecTrackHist->GetAxis(0)->SetTitle("Zv (cm)");\r
   fRecTrackHist->GetAxis(1)->SetTitle("p_{T} (GeV/c)");\r
   fRecTrackHist->GetAxis(2)->SetTitle("#eta");\r
-  fRecTrackHist->GetAxis(3)->SetTitle("multiplicity MB");\r
+  fRecTrackHist->GetAxis(3)->SetTitle("multiplicity (multCuts)");\r
   fRecTrackHist->Sumw2();\r
 \r
+    Int_t binsMCPrimTrackHist[4]={fZvNbins,fPtNbins,fEtaNbins,fMultNbins};\r
+ // Double_t minTrackHist[4]={-25.,0.,-1.5,-0.5}; \r
+ // Double_t maxTrackHist[4]={25.,50.,1.5,149.5}; \r
+\r
+  fMCPrimTrackHist = new THnSparseF("fMCPrimTrackHist","Zv:mcpT:mceta:multTrueMC",4,binsMCPrimTrackHist); \r
+  fMCPrimTrackHist->SetBinEdges(0,fBinsZv);\r
+  fMCPrimTrackHist->SetBinEdges(1,fBinsPt);\r
+  fMCPrimTrackHist->SetBinEdges(2,fBinsEta);\r
+  fMCPrimTrackHist->SetBinEdges(3,fBinsMult);\r
+  fMCPrimTrackHist->GetAxis(0)->SetTitle("Zv (cm)");\r
+  fMCPrimTrackHist->GetAxis(1)->SetTitle("MC p_{T} (GeV/c)");\r
+  fMCPrimTrackHist->GetAxis(2)->SetTitle("#eta (MC)");\r
+  fMCPrimTrackHist->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
+  fMCPrimTrackHist->Sumw2();  \r
+\r
   //\r
   // rec. vs MC correlation matrices\r
   //\r
   Int_t binsMultTrueEventMatrix[3]={fMultNbins,fMultNbins,fMultNbins};\r
 //   Double_t minMultTrueEventMatrix[3]={-0.5,-0.5,-0.5}; \r
 //   Double_t maxMultTrueEventMatrix[3]={149.5,149.5,149.5}; \r
-  fEventMultCorrelationMatrix = new THnSparseF("fEventMultCorrelationMatrix","mult:true_mult:multMB",3,binsMultTrueEventMatrix); //,minMultTrueEventMatrix,maxMultTrueEventMatrix);\r
+  fEventMultCorrelationMatrix = new THnSparseF("fEventMultCorrelationMatrix","multRecMult:multTrueMC:multMB",3,binsMultTrueEventMatrix); //,minMultTrueEventMatrix,maxMultTrueEventMatrix);\r
   fEventMultCorrelationMatrix->SetBinEdges(0,fBinsMult);\r
   fEventMultCorrelationMatrix->SetBinEdges(1,fBinsMult);\r
   fEventMultCorrelationMatrix->SetBinEdges(2,fBinsMult);\r
-  fEventMultCorrelationMatrix->GetAxis(0)->SetTitle("track multiplicity");\r
-  fEventMultCorrelationMatrix->GetAxis(1)->SetTitle("true multiplicity");\r
+  fEventMultCorrelationMatrix->GetAxis(0)->SetTitle("multiplicity (multCuts)");\r
+  fEventMultCorrelationMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fEventMultCorrelationMatrix->GetAxis(2)->SetTitle("MB multiplicity");\r
   fEventMultCorrelationMatrix->Sumw2();\r
   \r
@@ -466,260 +490,290 @@ void AlidNdPtAnalysis::Init()
 //   Double_t minEventMatrix[2]={-25.,-0.5}; \r
 //   Double_t maxEventMatrix[2]={25.,149.5}; \r
 \r
-  fGenEventMatrix = new THnSparseF("fGenEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fGenEventMatrix = new THnSparseF("fGenEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fGenEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenEventMatrix->SetBinEdges(1,fBinsMult);\r
   fGenEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fGenEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fGenEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fGenEventMatrix->Sumw2();\r
   \r
-  fGenSDEventMatrix = new THnSparseF("fGenSDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fGenSDEventMatrix = new THnSparseF("fGenSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fGenSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenSDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fGenSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fGenSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fGenSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fGenSDEventMatrix->Sumw2();\r
   \r
-  fGenDDEventMatrix = new THnSparseF("fGenDDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fGenDDEventMatrix = new THnSparseF("fGenDDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fGenDDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenDDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fGenDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fGenDDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fGenDDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fGenDDEventMatrix->Sumw2();\r
   \r
-  fGenNDEventMatrix = new THnSparseF("fGenNDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fGenNDEventMatrix = new THnSparseF("fGenNDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fGenNDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenNDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fGenNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fGenNDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fGenNDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fGenNDEventMatrix->Sumw2();\r
 \r
-  fGenNSDEventMatrix = new THnSparseF("fGenNSDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fGenNSDEventMatrix = new THnSparseF("fGenNSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fGenNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenNSDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fGenNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fGenNSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fGenNSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fGenNSDEventMatrix->Sumw2();\r
 \r
   //\r
-  fTriggerEventMatrix = new THnSparseF("fTriggerEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fTriggerEventMatrix = new THnSparseF("fTriggerEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fTriggerEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerEventMatrix->SetBinEdges(1,fBinsMult);\r
   fTriggerEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fTriggerEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fTriggerEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fTriggerEventMatrix->Sumw2();\r
 \r
-  fTriggerSDEventMatrix = new THnSparseF("fTriggerSDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fTriggerSDEventMatrix = new THnSparseF("fTriggerSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fTriggerSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerSDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fTriggerSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fTriggerSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fTriggerSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fTriggerSDEventMatrix->Sumw2();\r
   \r
-  fTriggerDDEventMatrix = new THnSparseF("fTriggerDDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fTriggerDDEventMatrix = new THnSparseF("fTriggerDDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fTriggerDDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerDDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fTriggerDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fTriggerDDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fTriggerDDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fTriggerDDEventMatrix->Sumw2();\r
   \r
-  fTriggerNDEventMatrix = new THnSparseF("fTriggerNDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fTriggerNDEventMatrix = new THnSparseF("fTriggerNDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fTriggerNDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerNDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fTriggerNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fTriggerNDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fTriggerNDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fTriggerNDEventMatrix->Sumw2();\r
  \r
-  fTriggerNSDEventMatrix = new THnSparseF("fTriggerNSDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fTriggerNSDEventMatrix = new THnSparseF("fTriggerNSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fTriggerNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerNSDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fTriggerNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fTriggerNSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fTriggerNSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fTriggerNSDEventMatrix->Sumw2();\r
  \r
   //\r
-  fRecEventMatrix = new THnSparseF("fRecEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fRecEventMatrix = new THnSparseF("fRecEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fRecEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecEventMatrix->SetBinEdges(1,fBinsMult);\r
   fRecEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fRecEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fRecEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fRecEventMatrix->Sumw2();\r
 \r
-  fRecSDEventMatrix = new THnSparseF("fRecSDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fRecSDEventMatrix = new THnSparseF("fRecSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fRecSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecSDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fRecSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fRecSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fRecSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fRecSDEventMatrix->Sumw2();\r
   \r
-  fRecDDEventMatrix = new THnSparseF("fRecDDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fRecDDEventMatrix = new THnSparseF("fRecDDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fRecDDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecDDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fRecDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fRecDDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fRecDDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fRecDDEventMatrix->Sumw2();\r
   \r
-  fRecNDEventMatrix = new THnSparseF("fRecNDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fRecNDEventMatrix = new THnSparseF("fRecNDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fRecNDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecNDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fRecNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fRecNDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fRecNDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fRecNDEventMatrix->Sumw2();\r
  \r
-  fRecNSDEventMatrix = new THnSparseF("fRecNSDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fRecNSDEventMatrix = new THnSparseF("fRecNSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fRecNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecNSDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fRecNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fRecNSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fRecNSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fRecNSDEventMatrix->Sumw2();\r
 \r
-  fRecCandleEventMatrix = new THnSparseF("fRecCandleEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fRecCandleEventMatrix = new THnSparseF("fRecCandleEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fRecCandleEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecCandleEventMatrix->SetBinEdges(1,fBinsMult);\r
   fRecCandleEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fRecCandleEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fRecCandleEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fRecCandleEventMatrix->Sumw2();\r
 \r
   // \r
   // track to event corrections\r
   //\r
 \r
-  fGenTrackEventMatrix = new THnSparseF("fGenTrackEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fGenTrackEventMatrix = new THnSparseF("fGenTrackEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fGenTrackEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenTrackEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fGenTrackEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fGenTrackEventMatrix->SetBinEdges(3,fBinsMult);\r
   fGenTrackEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fGenTrackEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fGenTrackEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fGenTrackEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fGenTrackEventMatrix->Sumw2();\r
 \r
-  fGenTrackSDEventMatrix = new THnSparseF("fGenTrackSDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fGenTrackSDEventMatrix = new THnSparseF("fGenTrackSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fGenTrackSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenTrackSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fGenTrackSDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fGenTrackSDEventMatrix->SetBinEdges(3,fBinsMult);\r
   fGenTrackSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fGenTrackSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fGenTrackSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fGenTrackSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fGenTrackSDEventMatrix->Sumw2();\r
 \r
-  fGenTrackDDEventMatrix = new THnSparseF("fGenTrackDDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fGenTrackDDEventMatrix = new THnSparseF("fGenTrackDDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fGenTrackDDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenTrackDDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fGenTrackDDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fGenTrackDDEventMatrix->SetBinEdges(3,fBinsMult);\r
   fGenTrackDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fGenTrackDDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fGenTrackDDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fGenTrackDDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fGenTrackDDEventMatrix->Sumw2();\r
 \r
-  fGenTrackNDEventMatrix = new THnSparseF("fGenTrackNDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fGenTrackNDEventMatrix = new THnSparseF("fGenTrackNDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fGenTrackNDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenTrackNDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fGenTrackNDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fGenTrackNDEventMatrix->SetBinEdges(3,fBinsMult);\r
   fGenTrackNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fGenTrackNDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fGenTrackNDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fGenTrackNDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fGenTrackNDEventMatrix->Sumw2();\r
 \r
-  fGenTrackNSDEventMatrix = new THnSparseF("fGenTrackNSDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fGenTrackNSDEventMatrix = new THnSparseF("fGenTrackNSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fGenTrackNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenTrackNSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fGenTrackNSDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fGenTrackNSDEventMatrix->SetBinEdges(3,fBinsMult);\r
   fGenTrackNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fGenTrackNSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fGenTrackNSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fGenTrackNSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fGenTrackNSDEventMatrix->Sumw2();\r
 \r
 \r
   //\r
-  fTriggerTrackEventMatrix = new THnSparseF("fTriggerTrackEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fTriggerTrackEventMatrix = new THnSparseF("fTriggerTrackEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fTriggerTrackEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerTrackEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fTriggerTrackEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fTriggerTrackEventMatrix->SetBinEdges(3,fBinsMult);\r
   fTriggerTrackEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fTriggerTrackEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fTriggerTrackEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fTriggerTrackEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fTriggerTrackEventMatrix->Sumw2();\r
 \r
-  fTriggerTrackSDEventMatrix = new THnSparseF("fTriggerTrackSDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fTriggerTrackSDEventMatrix = new THnSparseF("fTriggerTrackSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fTriggerTrackSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerTrackSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fTriggerTrackSDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fTriggerTrackSDEventMatrix->SetBinEdges(3,fBinsMult);\r
   fTriggerTrackSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fTriggerTrackSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fTriggerTrackSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fTriggerTrackSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fTriggerTrackSDEventMatrix->Sumw2();\r
 \r
-  fTriggerTrackDDEventMatrix = new THnSparseF("fTriggerTrackDDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fTriggerTrackDDEventMatrix = new THnSparseF("fTriggerTrackDDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fTriggerTrackDDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerTrackDDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fTriggerTrackDDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fTriggerTrackDDEventMatrix->SetBinEdges(3,fBinsMult);\r
   fTriggerTrackDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fTriggerTrackDDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fTriggerTrackDDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fTriggerTrackDDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fTriggerTrackDDEventMatrix->Sumw2();\r
 \r
-  fTriggerTrackNDEventMatrix = new THnSparseF("fTriggerTrackNDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fTriggerTrackNDEventMatrix = new THnSparseF("fTriggerTrackNDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fTriggerTrackNDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerTrackNDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fTriggerTrackNDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fTriggerTrackNDEventMatrix->SetBinEdges(3,fBinsMult);\r
   fTriggerTrackNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fTriggerTrackNDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fTriggerTrackNDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fTriggerTrackNDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fTriggerTrackNDEventMatrix->Sumw2();\r
 \r
-  fTriggerTrackNSDEventMatrix = new THnSparseF("fTriggerTrackNSDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fTriggerTrackNSDEventMatrix = new THnSparseF("fTriggerTrackNSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fTriggerTrackNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerTrackNSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fTriggerTrackNSDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fTriggerTrackNSDEventMatrix->SetBinEdges(3,fBinsMult);\r
   fTriggerTrackNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fTriggerTrackNSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fTriggerTrackNSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fTriggerTrackNSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fTriggerTrackNSDEventMatrix->Sumw2();\r
 \r
   //\r
-  fRecTrackEventMatrix = new THnSparseF("fRecTrackEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fRecTrackEventMatrix = new THnSparseF("fRecTrackEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fRecTrackEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecTrackEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fRecTrackEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fRecTrackEventMatrix->SetBinEdges(3,fBinsMult);\r
   fRecTrackEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fRecTrackEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fRecTrackEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fRecTrackEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fRecTrackEventMatrix->Sumw2();\r
 \r
-  fRecTrackSDEventMatrix = new THnSparseF("fRecTrackSDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fRecTrackSDEventMatrix = new THnSparseF("fRecTrackSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fRecTrackSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecTrackSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fRecTrackSDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fRecTrackSDEventMatrix->SetBinEdges(3,fBinsMult);\r
   fRecTrackSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fRecTrackSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fRecTrackSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fRecTrackSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fRecTrackSDEventMatrix->Sumw2();\r
 \r
-  fRecTrackDDEventMatrix = new THnSparseF("fRecTrackDDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fRecTrackDDEventMatrix = new THnSparseF("fRecTrackDDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fRecTrackDDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecTrackDDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fRecTrackDDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fRecTrackDDEventMatrix->SetBinEdges(3,fBinsMult);\r
   fRecTrackDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fRecTrackDDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fRecTrackDDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fRecTrackDDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fRecTrackDDEventMatrix->Sumw2();\r
 \r
-  fRecTrackNDEventMatrix = new THnSparseF("fRecTrackNDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fRecTrackNDEventMatrix = new THnSparseF("fRecTrackNDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fRecTrackNDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecTrackNDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fRecTrackNDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fRecTrackNDEventMatrix->SetBinEdges(3,fBinsMult);\r
   fRecTrackNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fRecTrackNDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fRecTrackNDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fRecTrackNDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fRecTrackNDEventMatrix->Sumw2();\r
 \r
-  fRecTrackNSDEventMatrix = new THnSparseF("fRecTrackNSDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fRecTrackNSDEventMatrix = new THnSparseF("fRecTrackNSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fRecTrackNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecTrackNSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fRecTrackNSDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fRecTrackNSDEventMatrix->SetBinEdges(3,fBinsMult);\r
   fRecTrackNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fRecTrackNSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fRecTrackNSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fRecTrackNSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fRecTrackNSDEventMatrix->Sumw2();\r
 \r
   //\r
@@ -822,13 +876,13 @@ void AlidNdPtAnalysis::Init()
 //   Double_t minRecEventHist2[3]={-25.,-0.5,-0.5}; \r
 //   Double_t maxRecEventHist2[3]={25.,149.5,149.5}; \r
   \r
-  fRecEventHist2 = new THnSparseF("fRecEventHist2","Zv:multMB:mult",3,binsRecEventHist2); //,minRecEventHist2,maxRecEventHist2);\r
+  fRecEventHist2 = new THnSparseF("fRecEventHist2","Zv:multMB:multRecMult",3,binsRecEventHist2); //,minRecEventHist2,maxRecEventHist2);\r
   fRecEventHist2->SetBinEdges(0,fBinsZv);\r
   fRecEventHist2->SetBinEdges(1,fBinsMult);\r
   fRecEventHist2->SetBinEdges(2,fBinsMult);\r
   fRecEventHist2->GetAxis(0)->SetTitle("Zv (cm)");\r
   fRecEventHist2->GetAxis(1)->SetTitle("multiplicity MB");\r
-  fRecEventHist2->GetAxis(2)->SetTitle("multiplicity");\r
+  fRecEventHist2->GetAxis(2)->SetTitle("multiplicity (multCuts)");\r
   fRecEventHist2->Sumw2();\r
 \r
   //\r
@@ -848,19 +902,19 @@ void AlidNdPtAnalysis::Init()
   Double_t minRecMCEventHist2[3]={-10.0*kFact,-10.0*kFact,0.0}; \r
   Double_t maxRecMCEventHist2[3]={10.0*kFact,10.0*kFact,149.50}; \r
 \r
-  fRecMCEventHist2 = new THnSparseF("fRecMCEventHist2","Xv-mcXv:Zv-mcZv:mult",3,binsRecMCEventHist2,minRecMCEventHist2,maxRecMCEventHist2);\r
+  fRecMCEventHist2 = new THnSparseF("fRecMCEventHist2","Xv-mcXv:Zv-mcZv:multMB",3,binsRecMCEventHist2,minRecMCEventHist2,maxRecMCEventHist2);\r
   fRecMCEventHist2->SetBinEdges(2,fBinsMult);  \r
   fRecMCEventHist2->GetAxis(0)->SetTitle("Xv-mcXv (cm)");\r
   fRecMCEventHist2->GetAxis(1)->SetTitle("Zv-mcZv (cm)");\r
-  fRecMCEventHist2->GetAxis(2)->SetTitle("multiplicity");\r
+  fRecMCEventHist2->GetAxis(2)->SetTitle("multiplicity MB");\r
   fRecMCEventHist2->Sumw2();\r
 \r
   Int_t binsRecMCEventHist3[2]={fMultNbins,5};\r
   Double_t minRecMCEventHist3[2]={-0.5,0.0}; \r
   Double_t maxRecMCEventHist3[2]={149.50,5.0}; \r
-  fRecMCEventHist3 = new THnSparseF("fRecMCEventHist3","mult:EventType (ND, DD, SD)",2,binsRecMCEventHist3,minRecMCEventHist3,maxRecMCEventHist3);\r
+  fRecMCEventHist3 = new THnSparseF("fRecMCEventHist3","multRecMult:EventType (ND, DD, SD)",2,binsRecMCEventHist3,minRecMCEventHist3,maxRecMCEventHist3);\r
   fRecMCEventHist3->SetBinEdges(0,fBinsMult);    \r
-  fRecMCEventHist3->GetAxis(0)->SetTitle("multiplicity");\r
+  fRecMCEventHist3->GetAxis(0)->SetTitle("multiplicity (multCuts)");\r
   fRecMCEventHist3->GetAxis(1)->SetTitle("EventType");\r
   fRecMCEventHist3->Sumw2();\r
 \r
@@ -1033,6 +1087,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
   AlidNdPtEventCuts *evtCuts = GetEventCuts(); \r
   AlidNdPtAcceptanceCuts *accCuts = GetAcceptanceCuts(); \r
   AliESDtrackCuts *esdTrackCuts = GetTrackCuts(); \r
+  AlidNdPtAcceptanceCuts *multAccCuts = GetMultAcceptanceCuts(); \r
 \r
   if(!evtCuts || !accCuts  || !esdTrackCuts) {\r
     AliDebug(AliLog::kError, "cuts not available");\r
@@ -1135,7 +1190,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
 \r
     // multipliticy of all MC primary tracks\r
     // in Zv, pt and eta ranges)\r
-    multMCTrueTracks = AlidNdPtHelper::GetMCTrueTrackMult(mcEvent,evtCuts,accCuts);\r
+   multMCTrueTracks = AlidNdPtHelper::GetMCTrueTrackMult(mcEvent,evtCuts,multAccCuts);\r
 \r
   } // end bUseMC\r
 \r
@@ -1218,6 +1273,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
 \r
 \r
   // check event cuts\r
+  Int_t multRecMult=0;\r
   if(isEventOK && isEventTriggered && isEventSelected)\r
   {\r
     // get all charged tracks\r
@@ -1229,7 +1285,6 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
     \r
 \r
     // calculate mult of reconstructed tracks\r
-    Int_t multRecTemp=0;\r
     for(Int_t i=0; i<entries;++i) \r
     {\r
       AliESDtrack *track = (AliESDtrack*)allChargedTracks->At(i);\r
@@ -1245,9 +1300,9 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
       if(GetParticleMode() == AlidNdPtHelper::kMinus && track->Charge() > 0) \r
         continue;\r
 \r
-      if(esdTrackCuts->AcceptTrack(track)) \r
+      if(GetMultTrackCuts()->AcceptTrack(track)) \r
       {\r
-          if(accCuts->AcceptTrack(track)) multRecTemp++;\r
+          if(GetMultAcceptanceCuts()->AcceptTrack(track)) multRecMult++;\r
       }  \r
     }\r
 \r
@@ -1269,7 +1324,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
       if(GetParticleMode() == AlidNdPtHelper::kMinus && track->Charge() > 0) \r
         continue;\r
 \r
-      FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kAllTracks, multRecTemp); \r
+      FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kAllTracks, multRecMult); \r
       labelsAll[multAll] = TMath::Abs(track->GetLabel());\r
       multAll++;\r
      \r
@@ -1374,7 +1429,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
             track->Set(cParam.GetX(),cParam.GetAlpha(),cParam.GetParameter(),cParam.GetCovariance());\r
 \r
              if(accCuts->AcceptTrack(track)) {\r
-               FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kRecTracks,multRecTemp); \r
+               FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kRecTracks,multRecMult); \r
               labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
               multRec++;\r
             }  \r
@@ -1382,7 +1437,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
           else {\r
              if(accCuts->AcceptTrack(track)) \r
             {\r
-               FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kRecTracks,multRecTemp); \r
+               FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kRecTracks,multRecMult); \r
               labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
               multRec++;\r
             }\r
@@ -1397,7 +1452,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
      Double_t vRecEventHist1[3] = {vtxESD->GetXv(),vtxESD->GetYv(),vtxESD->GetZv()};\r
      fRecEventHist1->Fill(vRecEventHist1);\r
 \r
-     Double_t vRecEventHist2[3] = {vtxESD->GetZv(),multMBTracks,multRec};\r
+     Double_t vRecEventHist2[3] = {vtxESD->GetZv(),multMBTracks,multRecMult};\r
      fRecEventHist2->Fill(vRecEventHist2);\r
 \r
      // \r
@@ -1428,7 +1483,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
        }\r
      }\r
 \r
-     Double_t vMultTrueEventMatrix[3] = { multRec, multMCTrueTracks, multMBTracks};\r
+     Double_t vMultTrueEventMatrix[3] = { multRecMult, multMCTrueTracks, multMBTracks};\r
      if(isEventOK && isEventTriggered) {   \r
        if(TMath::Abs(vtxMC[2]) < 10.0) // both Rec. and corresponding MC events must be accepted\r
          fEventMultCorrelationMatrix->Fill(vMultTrueEventMatrix);\r
@@ -1439,7 +1494,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
      //\r
 \r
      // all inelastic\r
-     Double_t vEventMatrix[2] = {vtxMC[2],multMBTracks};\r
+     Double_t vEventMatrix[2] = {vtxMC[2],multMCTrueTracks};\r
      fGenEventMatrix->Fill(vEventMatrix); \r
      if(isEventTriggered) fTriggerEventMatrix->Fill(vEventMatrix);\r
      if(isEventOK && isEventTriggered) fRecEventMatrix->Fill(vEventMatrix);\r
@@ -1502,7 +1557,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
        // checked accepted\r
        if(accCuts->AcceptTrack(particle)) \r
        {\r
-         Double_t vTrackEventMatrix[3] = {vtxMC[2], particle->Pt(), particle->Eta()}; \r
+         Double_t vTrackEventMatrix[4] = {vtxMC[2], particle->Pt(), particle->Eta(),multMCTrueTracks}; \r
          fGenTrackEventMatrix->Fill(vTrackEventMatrix);\r
 \r
          if(evtType == AliPWG0Helper::kSD) {\r
@@ -1568,7 +1623,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
          Double_t vRecMCEventHist2[3] = {vtxESD->GetXv()-vtxMC[0],vtxESD->GetZv()-vtxMC[2],multMBTracks};\r
          fRecMCEventHist2->Fill(vRecMCEventHist2);\r
 \r
-         Double_t vRecMCEventHist3[2] = {multRec,evtType};\r
+         Double_t vRecMCEventHist3[2] = {multRecMult,evtType};\r
          fRecMCEventHist3->Fill(vRecMCEventHist3);\r
        }\r
 \r
@@ -1609,9 +1664,11 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
          // check accepted\r
          if(accCuts->AcceptTrack(particle)) \r
         {\r
-\r
-           if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetParticleMode()) ) \r
+           if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetParticleMode()) ) { \r
             fGenPrimTrackMatrix->Fill(vTrackMatrix);\r
+            Double_t vMCPrimTrackHist[4] = {vtxMC[2],particle->Pt(),particle->Eta(),multMCTrueTracks}; \r
+            fMCPrimTrackHist->Fill(vMCPrimTrackHist);\r
+           }        \r
 \r
           // fill control histograms\r
            if(fHistogramsOn) \r
@@ -1719,7 +1776,7 @@ void AlidNdPtAnalysis::FillHistograms(TObjArray *const allChargedTracks,Int_t *c
 }\r
 \r
 //_____________________________________________________________________________\r
-void AlidNdPtAnalysis::FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack, const Double_t zv, AlidNdPtHelper::TrackObject trackObj, Int_t multMB)\r
+void AlidNdPtAnalysis::FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack, const Double_t zv, AlidNdPtHelper::TrackObject trackObj, Int_t multRecMult)\r
 {\r
   //\r
   // Fill ESD track and MC histograms \r
@@ -1746,7 +1803,7 @@ void AlidNdPtAnalysis::FillHistograms(AliESDtrack *const esdTrack, AliStack *con
   Double_t values1[3] = {pt,eta,phi};    \r
   fRecTrackHist1[trackObj]->Fill(values1);\r
 \r
-  Double_t values[4] = {zv, pt,eta, multMB};     \r
+  Double_t values[4] = {zv, pt,eta, multRecMult};        \r
   if(trackObj == AlidNdPtHelper::kRecTracks) {\r
     fRecTrackHist->Fill(values);\r
   }\r
@@ -1976,6 +2033,7 @@ Long64_t AlidNdPtAnalysis::Merge(TCollection* const list)
     fMCMultRecTrackHist1->Add(entry->fMCMultRecTrackHist1);\r
     fRecTrackHist2->Add(entry->fRecTrackHist2);\r
     fEventCount->Add(entry->fEventCount);\r
+    fMCPrimTrackHist->Add(entry->fMCPrimTrackHist);\r
 \r
   count++;\r
   }\r
index 36c34695062446210920a61c0b2b81da87ab38b8..67bb4dcb835c2296ba9443b1f636a586bd1a2116 100644 (file)
@@ -5,7 +5,7 @@
 // AlidNdPtAnalysis class used for dNdPt analysis. 
 // 
 // Author: J.Otwinowski 04/11/2008 
-// last change: 2011-04-04 by M.Knichel
+// last change: 2013-06-13 by M.Knichel
 //------------------------------------------------------------------------------
 
 class iostream;
@@ -159,6 +159,7 @@ public :
   //
   THnSparseF *GetRecEventHist() const {return fRecEventHist;} 
   THnSparseF *GetRecTrackHist() const {return fRecTrackHist;} 
+  THnSparseF* GetMCPrimTrackHist() const {return fMCPrimTrackHist;}   
 
 private:
 
@@ -171,7 +172,7 @@ private:
   //
 
   // event rec. track vs true track multiplicity correlation matrix 
-  THnSparseF *fEventMultCorrelationMatrix; //-> mult:mult_true_tracks:multMB
+  THnSparseF *fEventMultCorrelationMatrix; //-> multRecMult:multTrueMC:multMB
 
   // rec. track pt vs true track pt correlation matrix for given eta
   THnSparseF *fTrackPtCorrelationMatrix; //-> Pt:mcPt:mcEta
@@ -181,50 +182,50 @@ private:
   //
 
   // all genertated
-  THnSparseF *fGenEventMatrix; //-> mcZv:multMB (inelastic)
-  THnSparseF *fGenSDEventMatrix; //-> mcZv:multMB (single diffractive)
-  THnSparseF *fGenDDEventMatrix; //-> mcZv:multMB (single diffractive)
-  THnSparseF *fGenNDEventMatrix; //-> mcZv:multMB (non diffractive)
-  THnSparseF *fGenNSDEventMatrix; //-> mcZv:multMB (non single diffractive)
+  THnSparseF *fGenEventMatrix; //-> mcZv:multTrueMC (inelastic)
+  THnSparseF *fGenSDEventMatrix; //-> mcZv:multTrueMC (single diffractive)
+  THnSparseF *fGenDDEventMatrix; //-> mcZv:multTrueMC (single diffractive)
+  THnSparseF *fGenNDEventMatrix; //-> mcZv:multTrueMC (non diffractive)
+  THnSparseF *fGenNSDEventMatrix; //-> mcZv:multTrueMC (non single diffractive)
 
   // trigger bias corrections (fTriggerEventMatrix / fGenEventMatrix)
-  THnSparseF *fTriggerEventMatrix; //-> mcZv:multMB
-  THnSparseF *fTriggerSDEventMatrix; //-> mcZv:multMB
-  THnSparseF *fTriggerDDEventMatrix; //-> mcZv:multMB
-  THnSparseF *fTriggerNDEventMatrix; //-> mcZv:multMB
-  THnSparseF *fTriggerNSDEventMatrix; //-> mcZv:multMB
+  THnSparseF *fTriggerEventMatrix; //-> mcZv:multTrueMC
+  THnSparseF *fTriggerSDEventMatrix; //-> mcZv:multTrueMC
+  THnSparseF *fTriggerDDEventMatrix; //-> mcZv:multTrueMC
+  THnSparseF *fTriggerNDEventMatrix; //-> mcZv:multTrueMC
+  THnSparseF *fTriggerNSDEventMatrix; //-> mcZv:multTrueMC
 
   // event vertex rec. eff correction (fRecEventMatrix / fTriggerEventMatrix)
-  THnSparseF *fRecEventMatrix; //-> mcZv:multMB 
-  THnSparseF *fRecSDEventMatrix; //-> mcZv:multMB
-  THnSparseF *fRecDDEventMatrix; //-> mcZv:multMB
-  THnSparseF *fRecNDEventMatrix; //-> mcZv:multMB
-  THnSparseF *fRecNSDEventMatrix; //-> mcZv:multMB
+  THnSparseF *fRecEventMatrix; //-> mcZv:multTrueMC 
+  THnSparseF *fRecSDEventMatrix; //-> mcZv:multTrueMC
+  THnSparseF *fRecDDEventMatrix; //-> mcZv:multTrueMC
+  THnSparseF *fRecNDEventMatrix; //-> mcZv:multTrueMC
+  THnSparseF *fRecNSDEventMatrix; //-> mcZv:multTrueMC
 
 
   //
   // track-event level correction 
   //
 
-  THnSparseF *fGenTrackEventMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fGenTrackSDEventMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fGenTrackDDEventMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fGenTrackNDEventMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fGenTrackNSDEventMatrix; //-> mcZv:mcPt:mcEta
+  THnSparseF *fGenTrackEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
+  THnSparseF *fGenTrackSDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
+  THnSparseF *fGenTrackDDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
+  THnSparseF *fGenTrackNDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
+  THnSparseF *fGenTrackNSDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
 
   // trigger bias corrections (fTriggerTrackEventMatrix / fGenTrackEventMatrix)
-  THnSparseF *fTriggerTrackEventMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fTriggerTrackSDEventMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fTriggerTrackDDEventMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fTriggerTrackNDEventMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fTriggerTrackNSDEventMatrix; //-> mcZv:mcPt:mcEta
+  THnSparseF *fTriggerTrackEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
+  THnSparseF *fTriggerTrackSDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
+  THnSparseF *fTriggerTrackDDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
+  THnSparseF *fTriggerTrackNDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
+  THnSparseF *fTriggerTrackNSDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
 
   // event vertex rec. corrections (fRecTrackEventMatrix / fTriggerTrackEventMatrix)
-  THnSparseF *fRecTrackEventMatrix; //-> mcZv:Pt:mcEta
-  THnSparseF *fRecTrackSDEventMatrix; //-> mcZv:Pt:mcEta
-  THnSparseF *fRecTrackDDEventMatrix; //-> mcZv:Pt:mcEta
-  THnSparseF *fRecTrackNDEventMatrix; //-> mcZv:Pt:mcEta
-  THnSparseF *fRecTrackNSDEventMatrix; //-> mcZv:Pt:mcEta
+  THnSparseF *fRecTrackEventMatrix; //-> mcZv:Pt:mcEta:multTrueMC
+  THnSparseF *fRecTrackSDEventMatrix; //-> mcZv:Pt:mcEta:multTrueMC
+  THnSparseF *fRecTrackDDEventMatrix; //-> mcZv:Pt:mcEta:multTrueMC
+  THnSparseF *fRecTrackNDEventMatrix; //-> mcZv:Pt:mcEta:multTrueMC
+  THnSparseF *fRecTrackNSDEventMatrix; //-> mcZv:Pt:mcEta:multTrueMC
 
   //
   // track level correction 
@@ -249,10 +250,10 @@ private:
   // THnSparse event histograms
   THnSparseF *fMCEventHist1;  //-> mcXv:mcYv:mcZv
   THnSparseF *fRecEventHist1; //-> Xv:Yv:Zv
-  THnSparseF *fRecEventHist2; //-> Zv:multMB:mult
+  THnSparseF *fRecEventHist2; //-> Zv:multMB:multRecMult
   THnSparseF *fRecMCEventHist1; //-> Xv-mcXv:Yv-mcYv:Zv-mcZv
-  THnSparseF *fRecMCEventHist2; //-> Xv-mcXv:Zv-mcZv:mult
-  THnSparseF *fRecMCEventHist3; //-> mult:EventType (ND, DD, SD)
+  THnSparseF *fRecMCEventHist2; //-> Xv-mcXv:Zv-mcZv:multMB
+  THnSparseF *fRecMCEventHist3; //-> multRecMult:EventType (ND, DD, SD)
 
   // THnSparse track histograms
   // [0] - after charged track selection, [1] - after acceptance cuts, [2] - after esd track cuts
@@ -277,13 +278,14 @@ private:
   // Generic histograms to be corrected
   //
   THnSparseF *fRecEventHist;    //-> Zv:multMB  
-  THnSparseF *fRecTrackHist; //-> Zv:pT:eta:multRec
+  THnSparseF *fRecTrackHist; //-> Zv:pT:eta:multRecMult
   THnSparseF *fEventCount; //-> trig, trig + vertex, selected event
+  THnSparseF *fMCPrimTrackHist; //-> Zv:mcpT:mceta:multTrueMC  
 
   //
   // candle events track corrections
   //
-  THnSparseF *fRecCandleEventMatrix; //-> Zv:multMB
+  THnSparseF *fRecCandleEventMatrix; //-> Zv:multTrueMC
 
   //binning for THNsparse
   Int_t        fMultNbins;
@@ -302,7 +304,7 @@ private:
   AlidNdPtAnalysis(const AlidNdPtAnalysis&); // not implemented
   AlidNdPtAnalysis& operator=(const AlidNdPtAnalysis&); // not implemented
 
-  ClassDef(AlidNdPtAnalysis,6);
+  ClassDef(AlidNdPtAnalysis,7);
 };
 
 #endif
index 803041372474dd17333e53fc58f36f1f9a780fa7..0d81f59bb10419ff60d4fdd4338931e64b331b4c 100644 (file)
 // - generic correction matrices\r
 // - control histograms\r
 //\r
-// Author: J.Otwinowski 04/11/2008 \r
-// last change: 2013-02-05 by M.Knichel\r
+// last change: 2013-06-13 by M.Knichel, J.Gronefeld\r
+//\r
+// meaning of different multiplicities:\r
+// multRec      : number of reconstructed tracks, after AcceptanceCuts and TrackCuts\r
+// multRecMult  : number of reconstructed tracks, after MultAcceptanceCuts and MultTrackCuts\r
+// multMB       : number of contributers to vertex\r
+// multTrueMC   : MC true mult, after MultAcceptanceCuts\r
+// mutlAll      : number of ESD tracks\r
+// mutlAcc      : number of ESD tracks after AcceptanceCuts\r
 //------------------------------------------------------------------------------\r
 \r
 #include "TH1.h"\r
@@ -162,20 +169,25 @@ ClassImp(AlidNdPtAnalysispPb)
   fVCentralityTrack(0),\r
   \r
   fMultNbins(0),\r
+  fMultNbinsTE(0),\r
   fPtNbins(0),\r
   fPtCorrNbins(0),\r
   fEtaNbins(0),\r
   fZvNbins(0),\r
   fMultNedges(0),\r
+  fMultNedgesTE(0),\r
   fPtNedges(0),\r
   fPtCorrNedges(0),\r
   fEtaNedges(0),\r
   fZvNedges(0),\r
   fBinsMult(0),\r
+  fBinsMultTE(0),\r
   fBinsPt(0),\r
   fBinsPtCorr(0),\r
   fBinsEta(0),\r
   fBinsZv(0),\r
+  \r
+  fRapidityShift(-4.65409416218532379e-01),\r
 \r
   fIsInit(kFALSE)  \r
   \r
@@ -295,20 +307,25 @@ AlidNdPtAnalysispPb::AlidNdPtAnalysispPb(Char_t* name, Char_t* title): AlidNdPt(
   fVCentralityTrack(0),  \r
   \r
   fMultNbins(0),\r
+  fMultNbinsTE(0),\r
   fPtNbins(0),\r
   fPtCorrNbins(0),\r
   fEtaNbins(0),\r
   fZvNbins(0),\r
   fMultNedges(0),\r
+  fMultNedgesTE(0),\r
   fPtNedges(0),\r
   fPtCorrNedges(0),\r
   fEtaNedges(0),\r
   fZvNedges(0),\r
   fBinsMult(0),\r
+  fBinsMultTE(0),\r
   fBinsPt(0),\r
   fBinsPtCorr(0),\r
   fBinsEta(0),\r
   fBinsZv(0),\r
+  \r
+  fRapidityShift(-4.65409416218532379e-01),\r
 \r
   fIsInit(kFALSE)  \r
   \r
@@ -458,9 +475,7 @@ Bool_t AlidNdPtAnalysispPb::CanChangeBins()
 void AlidNdPtAnalysispPb::Init()\r
 {\r
     //define default binning\r
-    Double_t binsMultDefault[28] = {-0.5, 0.5 , 1.5 , 2.5 , 3.5 , 4.5 , 5.5 , 6.5 , 7.5 , 8.5,\r
-                                     9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5,\r
-                                    19.5,20.5, 21.5, 22.5, 23.5, 24.5, 29.5, 149.5};\r
+    Double_t binsMultDefault[15] = {-0.5, 0.5 , 1.5 , 2.5 , 3.5 , 4.5 , 5.5 , 6.5 , 7.5 , 8.5, 9.5, 10.5, 20.5, 50.5, 150.5};\r
     Double_t binsPtDefault[69] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0,4.5,5.0,5.5,6.0,6.5,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0};\r
     Double_t binsPtCorrDefault[37] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,3.0,4.0,50.0};    \r
     Double_t binsEtaDefault[31] = {-1.5,-1.4,-1.3,-1.2,-1.1,-1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,-0.2,-0.1,0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5};\r
@@ -469,15 +484,18 @@ void AlidNdPtAnalysispPb::Init()
     Double_t binCentralityDefault[6] = {0.,20.,40.,60.,80.,100.};\r
 \r
    // if no binning is set, use the default\r
-   if (!fBinsMult)        { SetBinsMult(27,binsMultDefault); }\r
+   if (!fBinsMult)        { SetBinsMult(14,binsMultDefault); }\r
+   if (!fBinsMultTE)      { SetBinsMultTE(14,binsMultDefault); }\r
    if (!fBinsPt)          { SetBinsPt(68,binsPtDefault); }\r
    if (!fBinsPtCorr)      { SetBinsPtCorr(36,binsPtCorrDefault); }\r
    if (!fBinsEta)         { SetBinsEta(30,binsEtaDefault); }\r
    if (!fBinsZv)          { SetBinsZv(12,binsZvDefault); }   \r
    if (!fBinsCentrality)  { SetBinsCentrality(5,binCentralityDefault); }   \r
+    \r
+  // Int_t binsTrackMatrix[3]={fZvNbins,fPtCorrNbins,fEtaNbins};\r
+  Int_t binsTrackEventCorrMatrix[4]={fZvNbins,fPtCorrNbins,fEtaNbins,fMultNbinsTE};\r
+  Int_t binsTrackEventCorrMatrixCent[4]={fZvNbins,fPtCorrNbins,fEtaNbins,fCentralityNbins};\r
   \r
-  //Int_t binsTrackMatrix[3]={zvNbins,ptNbins,etaNbins};\r
-  Int_t binsTrackEventCorrMatrix[3]={fZvNbins,fPtCorrNbins,fEtaNbins};\r
 \r
   //\r
   // Generic histograms to be corrected\r
@@ -498,7 +516,7 @@ void AlidNdPtAnalysispPb::Init()
  // Double_t minTrackHist[4]={-25.,0.,-1.5,-0.5}; \r
  // Double_t maxTrackHist[4]={25.,50.,1.5,149.5}; \r
 \r
-  fRecTrackHist = new THnSparseF("fRecTrackHist","Zv:pT:eta:multRec",4,binsTrackHist); //,minTrackHist,maxTrackHist);\r
+  fRecTrackHist = new THnSparseF("fRecTrackHist","Zv:pT:eta:multRecMult",4,binsTrackHist); //,minTrackHist,maxTrackHist);\r
   fRecTrackHist->SetBinEdges(0,fBinsZv);\r
   fRecTrackHist->SetBinEdges(1,fBinsPt);\r
   fRecTrackHist->SetBinEdges(2,fBinsEta);\r
@@ -506,7 +524,7 @@ void AlidNdPtAnalysispPb::Init()
   fRecTrackHist->GetAxis(0)->SetTitle("Zv (cm)");\r
   fRecTrackHist->GetAxis(1)->SetTitle("p_{T} (GeV/c)");\r
   fRecTrackHist->GetAxis(2)->SetTitle("#eta");\r
-  fRecTrackHist->GetAxis(3)->SetTitle("multiplicity MB");\r
+  fRecTrackHist->GetAxis(3)->SetTitle("multiplicity (multCuts)");\r
   fRecTrackHist->Sumw2();\r
   \r
   \r
@@ -514,7 +532,7 @@ void AlidNdPtAnalysispPb::Init()
  // Double_t minTrackHist[4]={-25.,0.,-1.5,-0.5}; \r
  // Double_t maxTrackHist[4]={25.,50.,1.5,149.5}; \r
 \r
-  fMCPrimTrackHist = new THnSparseF("fMCPrimTrackHist","Zv:mcpT:mceta:multTrue",4,binsMCPrimTrackHist); \r
+  fMCPrimTrackHist = new THnSparseF("fMCPrimTrackHist","Zv:mcpT:mceta:multTrueMC",4,binsMCPrimTrackHist); \r
   fMCPrimTrackHist->SetBinEdges(0,fBinsZv);\r
   fMCPrimTrackHist->SetBinEdges(1,fBinsPt);\r
   fMCPrimTrackHist->SetBinEdges(2,fBinsEta);\r
@@ -531,12 +549,12 @@ void AlidNdPtAnalysispPb::Init()
   Int_t binsMultTrueEventMatrix[3]={fMultNbins,fMultNbins,fMultNbins};\r
 //   Double_t minMultTrueEventMatrix[3]={-0.5,-0.5,-0.5}; \r
 //   Double_t maxMultTrueEventMatrix[3]={149.5,149.5,149.5}; \r
-  fEventMultCorrelationMatrix = new THnSparseF("fEventMultCorrelationMatrix","mult:true_mult:multMB",3,binsMultTrueEventMatrix); //,minMultTrueEventMatrix,maxMultTrueEventMatrix);\r
+  fEventMultCorrelationMatrix = new THnSparseF("fEventMultCorrelationMatrix","multRecMult:multTrueMC:multMB",3,binsMultTrueEventMatrix); //,minMultTrueEventMatrix,maxMultTrueEventMatrix);\r
   fEventMultCorrelationMatrix->SetBinEdges(0,fBinsMult);\r
   fEventMultCorrelationMatrix->SetBinEdges(1,fBinsMult);\r
   fEventMultCorrelationMatrix->SetBinEdges(2,fBinsMult);\r
-  fEventMultCorrelationMatrix->GetAxis(0)->SetTitle("track multiplicity");\r
-  fEventMultCorrelationMatrix->GetAxis(1)->SetTitle("true multiplicity");\r
+  fEventMultCorrelationMatrix->GetAxis(0)->SetTitle("multiplicity (multCuts)");\r
+  fEventMultCorrelationMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fEventMultCorrelationMatrix->GetAxis(2)->SetTitle("MB multiplicity");\r
   fEventMultCorrelationMatrix->Sumw2();\r
   \r
@@ -554,265 +572,299 @@ void AlidNdPtAnalysispPb::Init()
   // Efficiency and contamination correction matrices\r
   //\r
   Int_t binsEventMatrix[2]={fZvNbins,fMultNbins};\r
+  Int_t binsEventMatrixCent[3]={fZvNbins,fMultNbins,fCentralityNbins}; \r
 //   Double_t minEventMatrix[2]={-25.,-0.5}; \r
 //   Double_t maxEventMatrix[2]={25.,149.5}; \r
 \r
-  fGenEventMatrix = new THnSparseF("fGenEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fGenEventMatrix = new THnSparseF("fGenEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fGenEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenEventMatrix->SetBinEdges(1,fBinsMult);\r
   fGenEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fGenEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fGenEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fGenEventMatrix->Sumw2();\r
   \r
-  fGenSDEventMatrix = new THnSparseF("fGenSDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fGenSDEventMatrix = new THnSparseF("fGenSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fGenSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenSDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fGenSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fGenSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fGenSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fGenSDEventMatrix->Sumw2();\r
   \r
-  fGenDDEventMatrix = new THnSparseF("fGenDDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fGenDDEventMatrix = new THnSparseF("fGenDDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fGenDDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenDDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fGenDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fGenDDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fGenDDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fGenDDEventMatrix->Sumw2();\r
   \r
-  fGenNDEventMatrix = new THnSparseF("fGenNDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fGenNDEventMatrix = new THnSparseF("fGenNDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fGenNDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenNDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fGenNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fGenNDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fGenNDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fGenNDEventMatrix->Sumw2();\r
 \r
-  fGenNSDEventMatrix = new THnSparseF("fGenNSDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fGenNSDEventMatrix = new THnSparseF("fGenNSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fGenNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenNSDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fGenNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fGenNSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fGenNSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fGenNSDEventMatrix->Sumw2();\r
 \r
   //\r
-  fTriggerEventMatrix = new THnSparseF("fTriggerEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fTriggerEventMatrix = new THnSparseF("fTriggerEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fTriggerEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerEventMatrix->SetBinEdges(1,fBinsMult);\r
   fTriggerEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fTriggerEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fTriggerEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fTriggerEventMatrix->Sumw2();\r
 \r
-  fTriggerSDEventMatrix = new THnSparseF("fTriggerSDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fTriggerSDEventMatrix = new THnSparseF("fTriggerSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fTriggerSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerSDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fTriggerSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fTriggerSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fTriggerSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fTriggerSDEventMatrix->Sumw2();\r
   \r
-  fTriggerDDEventMatrix = new THnSparseF("fTriggerDDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fTriggerDDEventMatrix = new THnSparseF("fTriggerDDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fTriggerDDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerDDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fTriggerDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fTriggerDDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fTriggerDDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fTriggerDDEventMatrix->Sumw2();\r
   \r
-  fTriggerNDEventMatrix = new THnSparseF("fTriggerNDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fTriggerNDEventMatrix = new THnSparseF("fTriggerNDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fTriggerNDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerNDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fTriggerNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fTriggerNDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fTriggerNDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fTriggerNDEventMatrix->Sumw2();\r
  \r
-  fTriggerNSDEventMatrix = new THnSparseF("fTriggerNSDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fTriggerNSDEventMatrix = new THnSparseF("fTriggerNSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fTriggerNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerNSDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fTriggerNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fTriggerNSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fTriggerNSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fTriggerNSDEventMatrix->Sumw2();\r
  \r
   //\r
-  fRecEventMatrix = new THnSparseF("fRecEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fRecEventMatrix = new THnSparseF("fRecEventMatrix","mcZv:multTrueMC:Cent",3,binsEventMatrixCent); //,minEventMatrix,maxEventMatrix);\r
   fRecEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecEventMatrix->SetBinEdges(1,fBinsMult);\r
+  fRecEventMatrix->SetBinEdges(2,fBinsCentrality); \r
   fRecEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fRecEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fRecEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
+  fRecEventMatrix->GetAxis(2)->SetTitle("Centrality");\r
   fRecEventMatrix->Sumw2();\r
 \r
-  fRecSDEventMatrix = new THnSparseF("fRecSDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fRecSDEventMatrix = new THnSparseF("fRecSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fRecSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecSDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fRecSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fRecSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fRecSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fRecSDEventMatrix->Sumw2();\r
   \r
-  fRecDDEventMatrix = new THnSparseF("fRecDDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fRecDDEventMatrix = new THnSparseF("fRecDDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fRecDDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecDDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fRecDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fRecDDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fRecDDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fRecDDEventMatrix->Sumw2();\r
   \r
-  fRecNDEventMatrix = new THnSparseF("fRecNDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fRecNDEventMatrix = new THnSparseF("fRecNDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fRecNDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecNDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fRecNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fRecNDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fRecNDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fRecNDEventMatrix->Sumw2();\r
  \r
-  fRecNSDEventMatrix = new THnSparseF("fRecNSDEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fRecNSDEventMatrix = new THnSparseF("fRecNSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fRecNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecNSDEventMatrix->SetBinEdges(1,fBinsMult);\r
   fRecNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fRecNSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fRecNSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fRecNSDEventMatrix->Sumw2();\r
 \r
-  fRecCandleEventMatrix = new THnSparseF("fRecCandleEventMatrix","mcZv:multMB",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
+  fRecCandleEventMatrix = new THnSparseF("fRecCandleEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
   fRecCandleEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecCandleEventMatrix->SetBinEdges(1,fBinsMult);\r
   fRecCandleEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fRecCandleEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fRecCandleEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
   fRecCandleEventMatrix->Sumw2();\r
 \r
   // \r
   // track to event corrections\r
   //\r
 \r
-  fGenTrackEventMatrix = new THnSparseF("fGenTrackEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fGenTrackEventMatrix = new THnSparseF("fGenTrackEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fGenTrackEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenTrackEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fGenTrackEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fGenTrackEventMatrix->SetBinEdges(3,fBinsMultTE);\r
   fGenTrackEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fGenTrackEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fGenTrackEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fGenTrackEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fGenTrackEventMatrix->Sumw2();\r
 \r
-  fGenTrackSDEventMatrix = new THnSparseF("fGenTrackSDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fGenTrackSDEventMatrix = new THnSparseF("fGenTrackSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fGenTrackSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenTrackSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fGenTrackSDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fGenTrackSDEventMatrix->SetBinEdges(3,fBinsMultTE);\r
   fGenTrackSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fGenTrackSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fGenTrackSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fGenTrackSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fGenTrackSDEventMatrix->Sumw2();\r
 \r
-  fGenTrackDDEventMatrix = new THnSparseF("fGenTrackDDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fGenTrackDDEventMatrix = new THnSparseF("fGenTrackDDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fGenTrackDDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenTrackDDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fGenTrackDDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fGenTrackDDEventMatrix->SetBinEdges(3,fBinsMultTE);\r
   fGenTrackDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fGenTrackDDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fGenTrackDDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fGenTrackDDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fGenTrackDDEventMatrix->Sumw2();\r
 \r
-  fGenTrackNDEventMatrix = new THnSparseF("fGenTrackNDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fGenTrackNDEventMatrix = new THnSparseF("fGenTrackNDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fGenTrackNDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenTrackNDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fGenTrackNDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fGenTrackNDEventMatrix->SetBinEdges(3,fBinsMultTE);\r
   fGenTrackNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fGenTrackNDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fGenTrackNDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fGenTrackNDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fGenTrackNDEventMatrix->Sumw2();\r
 \r
-  fGenTrackNSDEventMatrix = new THnSparseF("fGenTrackNSDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fGenTrackNSDEventMatrix = new THnSparseF("fGenTrackNSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fGenTrackNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fGenTrackNSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fGenTrackNSDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fGenTrackNSDEventMatrix->SetBinEdges(3,fBinsMultTE);\r
   fGenTrackNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fGenTrackNSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fGenTrackNSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fGenTrackNSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fGenTrackNSDEventMatrix->Sumw2();\r
 \r
 \r
   //\r
-  fTriggerTrackEventMatrix = new THnSparseF("fTriggerTrackEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fTriggerTrackEventMatrix = new THnSparseF("fTriggerTrackEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fTriggerTrackEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerTrackEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fTriggerTrackEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fTriggerTrackEventMatrix->SetBinEdges(3,fBinsMultTE);\r
   fTriggerTrackEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fTriggerTrackEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fTriggerTrackEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fTriggerTrackEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fTriggerTrackEventMatrix->Sumw2();\r
 \r
-  fTriggerTrackSDEventMatrix = new THnSparseF("fTriggerTrackSDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fTriggerTrackSDEventMatrix = new THnSparseF("fTriggerTrackSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fTriggerTrackSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerTrackSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fTriggerTrackSDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fTriggerTrackSDEventMatrix->SetBinEdges(3,fBinsMultTE);\r
   fTriggerTrackSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fTriggerTrackSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fTriggerTrackSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fTriggerTrackSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fTriggerTrackSDEventMatrix->Sumw2();\r
 \r
-  fTriggerTrackDDEventMatrix = new THnSparseF("fTriggerTrackDDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fTriggerTrackDDEventMatrix = new THnSparseF("fTriggerTrackDDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fTriggerTrackDDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerTrackDDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fTriggerTrackDDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fTriggerTrackDDEventMatrix->SetBinEdges(3,fBinsMultTE);\r
   fTriggerTrackDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fTriggerTrackDDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fTriggerTrackDDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fTriggerTrackDDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fTriggerTrackDDEventMatrix->Sumw2();\r
 \r
-  fTriggerTrackNDEventMatrix = new THnSparseF("fTriggerTrackNDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fTriggerTrackNDEventMatrix = new THnSparseF("fTriggerTrackNDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fTriggerTrackNDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerTrackNDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fTriggerTrackNDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fTriggerTrackNDEventMatrix->SetBinEdges(3,fBinsMultTE);\r
   fTriggerTrackNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fTriggerTrackNDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fTriggerTrackNDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fTriggerTrackNDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fTriggerTrackNDEventMatrix->Sumw2();\r
 \r
-  fTriggerTrackNSDEventMatrix = new THnSparseF("fTriggerTrackNSDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fTriggerTrackNSDEventMatrix = new THnSparseF("fTriggerTrackNSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fTriggerTrackNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fTriggerTrackNSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fTriggerTrackNSDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fTriggerTrackNSDEventMatrix->SetBinEdges(3,fBinsMultTE);\r
   fTriggerTrackNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fTriggerTrackNSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fTriggerTrackNSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fTriggerTrackNSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fTriggerTrackNSDEventMatrix->Sumw2();\r
 \r
+\r
   //\r
-  fRecTrackEventMatrix = new THnSparseF("fRecTrackEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fRecTrackEventMatrix = new THnSparseF("fRecTrackEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fRecTrackEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecTrackEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fRecTrackEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fRecTrackEventMatrix->SetBinEdges(3,fBinsMultTE);  \r
   fRecTrackEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fRecTrackEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fRecTrackEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fRecTrackEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fRecTrackEventMatrix->Sumw2();\r
 \r
-  fRecTrackSDEventMatrix = new THnSparseF("fRecTrackSDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+\r
+  fRecTrackSDEventMatrix = new THnSparseF("fRecTrackSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fRecTrackSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecTrackSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fRecTrackSDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fRecTrackSDEventMatrix->SetBinEdges(3,fBinsMultTE);\r
   fRecTrackSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fRecTrackSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fRecTrackSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fRecTrackSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fRecTrackSDEventMatrix->Sumw2();\r
 \r
-  fRecTrackDDEventMatrix = new THnSparseF("fRecTrackDDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fRecTrackDDEventMatrix = new THnSparseF("fRecTrackDDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fRecTrackDDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecTrackDDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fRecTrackDDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fRecTrackDDEventMatrix->SetBinEdges(3,fBinsMultTE);\r
   fRecTrackDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fRecTrackDDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fRecTrackDDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fRecTrackDDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fRecTrackDDEventMatrix->Sumw2();\r
 \r
-  fRecTrackNDEventMatrix = new THnSparseF("fRecTrackNDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fRecTrackNDEventMatrix = new THnSparseF("fRecTrackNDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fRecTrackNDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecTrackNDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fRecTrackNDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fRecTrackNDEventMatrix->SetBinEdges(3,fBinsMultTE);\r
   fRecTrackNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fRecTrackNDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fRecTrackNDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fRecTrackNDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fRecTrackNDEventMatrix->Sumw2();\r
 \r
-  fRecTrackNSDEventMatrix = new THnSparseF("fRecTrackNSDEventMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fRecTrackNSDEventMatrix = new THnSparseF("fRecTrackNSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
   fRecTrackNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
   fRecTrackNSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fRecTrackNSDEventMatrix->SetBinEdges(2,fBinsEta);\r
+  fRecTrackNSDEventMatrix->SetBinEdges(3,fBinsMultTE);\r
   fRecTrackNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fRecTrackNSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fRecTrackNSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fRecTrackNSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
   fRecTrackNSDEventMatrix->Sumw2();\r
-\r
   //\r
   // tracks correction matrices\r
   //\r
@@ -828,48 +880,56 @@ void AlidNdPtAnalysispPb::Init()
   fGenTrackMatrix->Sumw2();\r
 \r
   //fGenPrimTrackMatrix = new THnSparseF("fGenPrimTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackMatrix);\r
-  fGenPrimTrackMatrix = new THnSparseF("fGenPrimTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fGenPrimTrackMatrix = new THnSparseF("fGenPrimTrackMatrix","mcZv:mcPt:mcEta:Centrality",4,binsTrackEventCorrMatrixCent);\r
   fGenPrimTrackMatrix->SetBinEdges(0,fBinsZv);\r
   //fGenPrimTrackMatrix->SetBinEdges(1,binsPt);\r
   fGenPrimTrackMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fGenPrimTrackMatrix->SetBinEdges(2,fBinsEta);\r
+  fGenPrimTrackMatrix->SetBinEdges(3,fBinsCentrality);  \r
   fGenPrimTrackMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fGenPrimTrackMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fGenPrimTrackMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fGenPrimTrackMatrix->GetAxis(3)->SetTitle("Centrality");\r
   fGenPrimTrackMatrix->Sumw2();\r
 \r
   //fRecPrimTrackMatrix = new THnSparseF("fRecPrimTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackMatrix);\r
-  fRecPrimTrackMatrix = new THnSparseF("fRecPrimTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fRecPrimTrackMatrix = new THnSparseF("fRecPrimTrackMatrix","mcZv:mcPt:mcEta:Centrality",4,binsTrackEventCorrMatrixCent);\r
   fRecPrimTrackMatrix->SetBinEdges(0,fBinsZv);\r
   //fRecPrimTrackMatrix->SetBinEdges(1,binsPt);\r
   fRecPrimTrackMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fRecPrimTrackMatrix->SetBinEdges(2,fBinsEta);\r
+  fRecPrimTrackMatrix->SetBinEdges(3,fBinsCentrality);  \r
   fRecPrimTrackMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fRecPrimTrackMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
   fRecPrimTrackMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fRecPrimTrackMatrix->GetAxis(3)->SetTitle("Centrality");  \r
   fRecPrimTrackMatrix->Sumw2();\r
 \r
   //\r
   //fRecTrackMatrix = new THnSparseF("fRecTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackMatrix);\r
-  fRecTrackMatrix = new THnSparseF("fRecTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fRecTrackMatrix = new THnSparseF("fRecTrackMatrix","mcZv:mcPt:mcEta:Centrality",4,binsTrackEventCorrMatrixCent);\r
   fRecTrackMatrix->SetBinEdges(0,fBinsZv);\r
   //fRecTrackMatrix->SetBinEdges(1,binsPt);\r
   fRecTrackMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fRecTrackMatrix->SetBinEdges(2,fBinsEta);\r
+  fRecTrackMatrix->SetBinEdges(3,fBinsCentrality);\r
   fRecTrackMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fRecTrackMatrix->GetAxis(1)->SetTitle("Pt (GeV/c)");\r
   fRecTrackMatrix->GetAxis(2)->SetTitle("Eta");\r
+  fRecTrackMatrix->GetAxis(3)->SetTitle("Centrality");\r
   fRecTrackMatrix->Sumw2();\r
 \r
   //fRecSecTrackMatrix = new THnSparseF("fRecSecTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackMatrix);\r
-  fRecSecTrackMatrix = new THnSparseF("fRecSecTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
+  fRecSecTrackMatrix = new THnSparseF("fRecSecTrackMatrix","mcZv:mcPt:mcEta:Centrality",4,binsTrackEventCorrMatrixCent);\r
   fRecSecTrackMatrix->SetBinEdges(0,fBinsZv);\r
   //fRecSecTrackMatrix->SetBinEdges(1,binsPt);\r
   fRecSecTrackMatrix->SetBinEdges(1,fBinsPtCorr);\r
   fRecSecTrackMatrix->SetBinEdges(2,fBinsEta);\r
+  fRecSecTrackMatrix->SetBinEdges(3,fBinsCentrality);  \r
   fRecSecTrackMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
   fRecSecTrackMatrix->GetAxis(1)->SetTitle("Pt (GeV/c)");\r
   fRecSecTrackMatrix->GetAxis(2)->SetTitle("Eta");\r
+  fRecSecTrackMatrix->GetAxis(3)->SetTitle("Centrality"); \r
   fRecSecTrackMatrix->Sumw2();\r
 \r
   //\r
@@ -913,13 +973,13 @@ void AlidNdPtAnalysispPb::Init()
 //   Double_t minRecEventHist2[3]={-25.,-0.5,-0.5}; \r
 //   Double_t maxRecEventHist2[3]={25.,149.5,149.5}; \r
   \r
-  fRecEventHist2 = new THnSparseF("fRecEventHist2","Zv:multMB:mult",3,binsRecEventHist2); //,minRecEventHist2,maxRecEventHist2);\r
+  fRecEventHist2 = new THnSparseF("fRecEventHist2","Zv:multMB:multRecMult",3,binsRecEventHist2); //,minRecEventHist2,maxRecEventHist2);\r
   fRecEventHist2->SetBinEdges(0,fBinsZv);\r
   fRecEventHist2->SetBinEdges(1,fBinsMult);\r
   fRecEventHist2->SetBinEdges(2,fBinsMult);\r
   fRecEventHist2->GetAxis(0)->SetTitle("Zv (cm)");\r
   fRecEventHist2->GetAxis(1)->SetTitle("multiplicity MB");\r
-  fRecEventHist2->GetAxis(2)->SetTitle("multiplicity");\r
+  fRecEventHist2->GetAxis(2)->SetTitle("multiplicity (multCuts)");\r
   fRecEventHist2->Sumw2();\r
 \r
   //\r
@@ -939,19 +999,19 @@ void AlidNdPtAnalysispPb::Init()
   Double_t minRecMCEventHist2[3]={-10.0*kFact,-10.0*kFact,0.0}; \r
   Double_t maxRecMCEventHist2[3]={10.0*kFact,10.0*kFact,149.50}; \r
 \r
-  fRecMCEventHist2 = new THnSparseF("fRecMCEventHist2","Xv-mcXv:Zv-mcZv:mult",3,binsRecMCEventHist2,minRecMCEventHist2,maxRecMCEventHist2);\r
+  fRecMCEventHist2 = new THnSparseF("fRecMCEventHist2","Xv-mcXv:Zv-mcZv:multMB",3,binsRecMCEventHist2,minRecMCEventHist2,maxRecMCEventHist2);\r
   fRecMCEventHist2->SetBinEdges(2,fBinsMult);  \r
   fRecMCEventHist2->GetAxis(0)->SetTitle("Xv-mcXv (cm)");\r
   fRecMCEventHist2->GetAxis(1)->SetTitle("Zv-mcZv (cm)");\r
-  fRecMCEventHist2->GetAxis(2)->SetTitle("multiplicity");\r
+  fRecMCEventHist2->GetAxis(2)->SetTitle("multiplicity MB");\r
   fRecMCEventHist2->Sumw2();\r
 \r
   Int_t binsRecMCEventHist3[2]={fMultNbins,5};\r
   Double_t minRecMCEventHist3[2]={-0.5,0.0}; \r
   Double_t maxRecMCEventHist3[2]={149.50,5.0}; \r
-  fRecMCEventHist3 = new THnSparseF("fRecMCEventHist3","mult:EventType (ND, DD, SD)",2,binsRecMCEventHist3,minRecMCEventHist3,maxRecMCEventHist3);\r
+  fRecMCEventHist3 = new THnSparseF("fRecMCEventHist3","multRecMult:EventType (ND, DD, SD)",2,binsRecMCEventHist3,minRecMCEventHist3,maxRecMCEventHist3);\r
   fRecMCEventHist3->SetBinEdges(0,fBinsMult);    \r
-  fRecMCEventHist3->GetAxis(0)->SetTitle("multiplicity");\r
+  fRecMCEventHist3->GetAxis(0)->SetTitle("multiplicity (multCuts)");\r
   fRecMCEventHist3->GetAxis(1)->SetTitle("EventType");\r
   fRecMCEventHist3->Sumw2();\r
 \r
@@ -1100,9 +1160,9 @@ void AlidNdPtAnalysispPb::Init()
   fEventCount->Sumw2();\r
   \r
   Int_t binsEventMultHist[3]={fMultNbins,fMultNbins,fMultNbins};\r
-  fEventMultHist = new THnSparseF("fEventMultHist","multMB:multRecTemp:multRec",3,binsEventMultHist);\r
+  fEventMultHist = new THnSparseF("fEventMultHist","multMB:multRecMult:multRec",3,binsEventMultHist);\r
   fEventMultHist->GetAxis(0)->SetTitle("multMB");\r
-  fEventMultHist->GetAxis(1)->SetTitle("multRecTemp");\r
+  fEventMultHist->GetAxis(1)->SetTitle("multRecMult");\r
   fEventMultHist->GetAxis(2)->SetTitle("multRec");\r
   fEventMultHist->SetBinEdges(0,fBinsMult);\r
   fEventMultHist->SetBinEdges(1,fBinsMult);\r
@@ -1119,7 +1179,7 @@ void AlidNdPtAnalysispPb::Init()
     //zv:multRec:multMB:cent[n]\r
     Int_t dimsCentralityEventHist = fDimensionsCentralityEstimators + 3;\r
     Int_t* binsCentralityEventHist = new Int_t[dimsCentralityEventHist];\r
-    TString titleCentralityEventHist("zV:multRec:multMB");\r
+    TString titleCentralityEventHist("zV:multRecMult:multMB");\r
     binsCentralityEventHist[0] = fZvNbins;\r
     binsCentralityEventHist[1] = fMultNbins;\r
     binsCentralityEventHist[2] = fMultNbins;\r
@@ -1133,7 +1193,7 @@ void AlidNdPtAnalysispPb::Init()
     fCentralityEventHist->SetBinEdges(1,fBinsMult);\r
     fCentralityEventHist->SetBinEdges(2,fBinsMult);\r
     fCentralityEventHist->GetAxis(0)->SetTitle("Zv (cm)");\r
-    fCentralityEventHist->GetAxis(1)->SetTitle("multRec");\r
+    fCentralityEventHist->GetAxis(1)->SetTitle("multRecMult");\r
     fCentralityEventHist->GetAxis(2)->SetTitle("multMB");\r
     for (Int_t i=1; i<=fDimensionsCentralityEstimators ; i++) { \r
       fCentralityEventHist->SetBinEdges(i+2,fBinsCentrality);\r
@@ -1147,7 +1207,7 @@ void AlidNdPtAnalysispPb::Init()
     //zv:pt:eta:multRec:multMB:cent[n]\r
     Int_t dimsCentralityTrackHist = fDimensionsCentralityEstimators + 5;\r
     Int_t* binsCentralityTrackHist = new Int_t[dimsCentralityTrackHist];\r
-    TString titleCentralityTrackHist("zV:pT:eta:multRec:multMB");\r
+    TString titleCentralityTrackHist("zV:pT:eta:multRecMult:multMB");\r
     binsCentralityTrackHist[0] = fZvNbins;\r
     binsCentralityTrackHist[1] = fPtNbins;\r
     binsCentralityTrackHist[2] = fEtaNbins;\r
@@ -1167,7 +1227,7 @@ void AlidNdPtAnalysispPb::Init()
     fCentralityTrackHist->GetAxis(0)->SetTitle("Zv (cm)");\r
     fCentralityTrackHist->GetAxis(1)->SetTitle("p_{T} (GeV/c)");\r
     fCentralityTrackHist->GetAxis(2)->SetTitle("#eta");\r
-    fCentralityTrackHist->GetAxis(3)->SetTitle("multRec");\r
+    fCentralityTrackHist->GetAxis(3)->SetTitle("multRecMult");\r
     fCentralityTrackHist->GetAxis(4)->SetTitle("multMB");\r
     for (Int_t i=1; i<=fDimensionsCentralityEstimators ; i++) { \r
       fCentralityTrackHist->SetBinEdges(i+4,fBinsCentrality);\r
@@ -1209,6 +1269,7 @@ void AlidNdPtAnalysispPb::Process(AliESDEvent *const esdEvent, AliMCEvent *const
   AlidNdPtEventCuts *evtCuts = GetEventCuts(); \r
   AlidNdPtAcceptanceCuts *accCuts = GetAcceptanceCuts(); \r
   AliESDtrackCuts *esdTrackCuts = GetTrackCuts(); \r
+  AlidNdPtAcceptanceCuts *multAccCuts = GetMultAcceptanceCuts(); \r
 \r
   if(!evtCuts || !accCuts  || !esdTrackCuts) {\r
     AliDebug(AliLog::kError, "cuts not available");\r
@@ -1311,7 +1372,11 @@ void AlidNdPtAnalysispPb::Process(AliESDEvent *const esdEvent, AliMCEvent *const
 \r
     // multipliticy of all MC primary tracks\r
     // in Zv, pt and eta ranges)\r
-    multMCTrueTracks = AlidNdPtHelper::GetMCTrueTrackMult(mcEvent,evtCuts,accCuts);\r
+    if (fRapidityShift == 0) {\r
+      multMCTrueTracks = AlidNdPtHelper::GetMCTrueTrackMult(mcEvent,evtCuts,multAccCuts);\r
+    } else {\r
+      multMCTrueTracks = AlidNdPtHelper::GetMCTrueTrackMult(mcEvent,evtCuts,multAccCuts,fRapidityShift);\r
+    }\r
 \r
   } // end bUseMC\r
 \r
@@ -1411,6 +1476,8 @@ void AlidNdPtAnalysispPb::Process(AliESDEvent *const esdEvent, AliMCEvent *const
 \r
 \r
   // check event cuts\r
+  Int_t multRecMult=0;\r
+  Double_t centralityD = -1;\r
   if(isEventOK && isEventTriggered && isEventSelected)\r
   {\r
     // get all charged tracks\r
@@ -1421,8 +1488,7 @@ void AlidNdPtAnalysispPb::Process(AliESDEvent *const esdEvent, AliMCEvent *const
     //printf("entries %d \n",entries);\r
     \r
 \r
-    // calculate mult of reconstructed tracks\r
-    Int_t multRecTemp=0;\r
+    // calculate mult of reconstructed tracks   \r
     for(Int_t i=0; i<entries;++i) \r
     {\r
       AliESDtrack *track = (AliESDtrack*)allChargedTracks->At(i);\r
@@ -1438,9 +1504,9 @@ void AlidNdPtAnalysispPb::Process(AliESDEvent *const esdEvent, AliMCEvent *const
       if(GetParticleMode() == AlidNdPtHelper::kMinus && track->Charge() > 0) \r
         continue;\r
 \r
-      if(esdTrackCuts->AcceptTrack(track)) \r
+      if(GetMultTrackCuts()->AcceptTrack(track)) \r
       {\r
-          if(accCuts->AcceptTrack(track)) multRecTemp++;\r
+          if(GetMultAcceptanceCuts()->AcceptTrack(track)) { multRecMult++; }\r
       }  \r
     }\r
     \r
@@ -1449,10 +1515,10 @@ void AlidNdPtAnalysispPb::Process(AliESDEvent *const esdEvent, AliMCEvent *const
      // also filles event-related value for fCentralityTrackHist\r
      if (fDimensionsCentralityEstimators > 0) {\r
        fVCentralityEvent[0] = vtxESD->GetZv();\r
-       fVCentralityEvent[1] = multRecTemp;\r
+       fVCentralityEvent[1] = multRecMult;\r
        fVCentralityEvent[2] = multMBTracks;\r
        fVCentralityTrack[0] = vtxESD->GetZv();\r
-       fVCentralityTrack[3] = multRecTemp;\r
+       fVCentralityTrack[3] = multRecMult;\r
        fVCentralityTrack[4] = multMBTracks;\r
        for (Int_t i=1; i<=fDimensionsCentralityEstimators ; i++) {\r
          // centrality determination\r
@@ -1461,6 +1527,7 @@ void AlidNdPtAnalysispPb::Process(AliESDEvent *const esdEvent, AliMCEvent *const
          centralityF = esdCentrality->GetCentralityPercentile(GetCentralityEstimator(i));       \r
          fVCentralityEvent[i+2] = centralityF;\r
          fVCentralityTrack[i+4] = centralityF;\r
+        if (1==i) { centralityD = centralityF; }\r
        }\r
        fCentralityEventHist->Fill(fVCentralityEvent);\r
      }   \r
@@ -1483,7 +1550,7 @@ void AlidNdPtAnalysispPb::Process(AliESDEvent *const esdEvent, AliMCEvent *const
       if(GetParticleMode() == AlidNdPtHelper::kMinus && track->Charge() > 0) \r
         continue;\r
 \r
-      FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kAllTracks, multRecTemp); \r
+      FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kAllTracks, multRecMult); \r
       labelsAll[multAll] = TMath::Abs(track->GetLabel());\r
       multAll++;\r
      \r
@@ -1588,7 +1655,7 @@ void AlidNdPtAnalysispPb::Process(AliESDEvent *const esdEvent, AliMCEvent *const
             track->Set(cParam.GetX(),cParam.GetAlpha(),cParam.GetParameter(),cParam.GetCovariance());\r
 \r
              if(accCuts->AcceptTrack(track)) {\r
-               FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kRecTracks,multRecTemp); \r
+               FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kRecTracks,multRecMult); \r
               labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
               multRec++;\r
             }  \r
@@ -1596,7 +1663,7 @@ void AlidNdPtAnalysispPb::Process(AliESDEvent *const esdEvent, AliMCEvent *const
           else {\r
              if(accCuts->AcceptTrack(track)) \r
             {\r
-               FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kRecTracks,multRecTemp); \r
+               FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kRecTracks,multRecMult); \r
               labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
               multRec++;\r
             }\r
@@ -1611,15 +1678,16 @@ void AlidNdPtAnalysispPb::Process(AliESDEvent *const esdEvent, AliMCEvent *const
      Double_t vRecEventHist1[3] = {vtxESD->GetXv(),vtxESD->GetYv(),vtxESD->GetZv()};\r
      fRecEventHist1->Fill(vRecEventHist1);\r
 \r
-     Double_t vRecEventHist2[3] = {vtxESD->GetZv(),multMBTracks,multRec};\r
+     Double_t vRecEventHist2[3] = {vtxESD->GetZv(),multMBTracks,multRecMult};\r
      fRecEventHist2->Fill(vRecEventHist2);\r
 \r
      // \r
-     Double_t vRecEventHist[2] = {vtxESD->GetZv(),multMBTracks};\r
+     //Double_t vRecEventHist[2] = {vtxESD->GetZv(),multMBTracks};\r
+     Double_t vRecEventHist[3] = {vtxESD->GetZv(),multMBTracks,centralityD};\r
      fRecEventHist->Fill(vRecEventHist);\r
           \r
      // fill fEventMultHist for cross checks\r
-     Double_t vEventMultHist[3] = {multMBTracks,multRecTemp,multRec};\r
+     Double_t vEventMultHist[3] = {multMBTracks,multRecMult,multRec};\r
      fEventMultHist->Fill(vEventMultHist);\r
    } \r
 \r
@@ -1646,7 +1714,7 @@ void AlidNdPtAnalysispPb::Process(AliESDEvent *const esdEvent, AliMCEvent *const
        }\r
      }\r
 \r
-     Double_t vMultTrueEventMatrix[3] = { multRec, multMCTrueTracks, multMBTracks};\r
+     Double_t vMultTrueEventMatrix[3] = { multRecMult, multMCTrueTracks, multMBTracks};\r
      if(isEventOK && isEventTriggered) {   \r
        if(TMath::Abs(vtxMC[2]) < 10.0) // both Rec. and corresponding MC events must be accepted\r
          fEventMultCorrelationMatrix->Fill(vMultTrueEventMatrix);\r
@@ -1657,7 +1725,8 @@ void AlidNdPtAnalysispPb::Process(AliESDEvent *const esdEvent, AliMCEvent *const
      //\r
 \r
      // all inelastic\r
-     Double_t vEventMatrix[2] = {vtxMC[2],multMBTracks};\r
+     //Double_t vEventMatrix[2] = {vtxMC[2],multMBTracks};\r
+     Double_t vEventMatrix[3] = {vtxMC[2],multMCTrueTracks,centralityD};\r
      fGenEventMatrix->Fill(vEventMatrix); \r
      if(isEventTriggered) fTriggerEventMatrix->Fill(vEventMatrix);\r
      if(isEventOK && isEventTriggered) fRecEventMatrix->Fill(vEventMatrix);\r
@@ -1720,7 +1789,8 @@ void AlidNdPtAnalysispPb::Process(AliESDEvent *const esdEvent, AliMCEvent *const
        // checked accepted\r
        if(accCuts->AcceptTrack(particle)) \r
        {\r
-         Double_t vTrackEventMatrix[3] = {vtxMC[2], particle->Pt(), particle->Eta()}; \r
+         //Double_t vTrackEventMatrix[3] = {vtxMC[2], particle->Pt(), particle->Eta()}; \r
+        Double_t vTrackEventMatrix[4] = {vtxMC[2],particle->Pt(),particle->Eta(),multMCTrueTracks}; \r
          fGenTrackEventMatrix->Fill(vTrackEventMatrix);\r
 \r
          if(evtType == AliPWG0Helper::kSD) {\r
@@ -1800,7 +1870,8 @@ void AlidNdPtAnalysispPb::Process(AliESDEvent *const esdEvent, AliMCEvent *const
          if (!particle)\r
          continue;\r
 \r
-         Double_t vTrackMatrix[3] = {vtxMC[2],particle->Pt(),particle->Eta()}; \r
+         //Double_t vTrackMatrix[3] = {vtxMC[2],particle->Pt(),particle->Eta()}; .\r
+         Double_t vTrackMatrix[4] = {vtxMC[2],particle->Pt(),particle->Eta(),centralityD}; \r
 \r
         // all genertated primaries including neutral\r
          //if( iMc < stack->GetNprimary() ) {\r
@@ -1828,11 +1899,11 @@ void AlidNdPtAnalysispPb::Process(AliESDEvent *const esdEvent, AliMCEvent *const
          if(accCuts->AcceptTrack(particle)) \r
         {\r
 \r
-           if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetParticleMode()) ) \r
+           if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetParticleMode()) ) \r
             fGenPrimTrackMatrix->Fill(vTrackMatrix);\r
             Double_t vMCPrimTrackHist[4] = {vtxMC[2],particle->Pt(),particle->Eta(),multMCTrueTracks}; \r
             fMCPrimTrackHist->Fill(vMCPrimTrackHist);\r
-\r
+           }\r
           // fill control histograms\r
            if(fHistogramsOn) \r
             FillHistograms(stack,iMc,AlidNdPtHelper::kAccTracks); \r
@@ -1939,7 +2010,7 @@ void AlidNdPtAnalysispPb::FillHistograms(TObjArray *const allChargedTracks,Int_t
 }\r
 \r
 //_____________________________________________________________________________\r
-void AlidNdPtAnalysispPb::FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack, const Double_t zv, AlidNdPtHelper::TrackObject trackObj, Int_t multMB)\r
+void AlidNdPtAnalysispPb::FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack, const Double_t zv, AlidNdPtHelper::TrackObject trackObj, Int_t multRecMult)\r
 {\r
   //\r
   // Fill ESD track and MC histograms \r
@@ -1966,7 +2037,7 @@ void AlidNdPtAnalysispPb::FillHistograms(AliESDtrack *const esdTrack, AliStack *
   Double_t values1[3] = {pt,eta,phi};    \r
   fRecTrackHist1[trackObj]->Fill(values1);\r
 \r
-  Double_t values[4] = {zv, pt,eta, multMB};     \r
+  Double_t values[4] = {zv, pt,eta, multRecMult};        \r
   if(trackObj == AlidNdPtHelper::kRecTracks) {\r
     fRecTrackHist->Fill(values);\r
   }\r
index c3eedd867af65222e96a0fae133e689b22c9cf32..2b84be2726a1b80ea4bb4fe885a85d43a670c551 100644 (file)
@@ -6,7 +6,7 @@
 // based on AlidNdPtAnalysis class
 // 
 // Author: J.Otwinowski 04/11/2008 
-// last change: 2013-02-05 by M.Knichel
+// last change: 2013-06-13 by M.Knichel, J.Gronefeld
 //------------------------------------------------------------------------------
 
 class iostream;
@@ -67,6 +67,7 @@ public :
   
   // Set binning for Histograms (if not set default binning is used)
   void SetBinsMult(Int_t nbins, Double_t* edges) { if (CanChangeBins()) {  fMultNbins = nbins; fBinsMult = CloneArray(fMultNedges = nbins+1,edges); } }
+  void SetBinsMultTE(Int_t nbins, Double_t* edges) { if (CanChangeBins()) {  fMultNbinsTE = nbins; fBinsMultTE = CloneArray(fMultNedgesTE = nbins+1,edges); } }
   void SetBinsPt(Int_t nbins, Double_t* edges) { if (CanChangeBins()) {  fPtNbins = nbins; fBinsPt = CloneArray(fPtNedges = nbins+1,edges); } }
   void SetBinsPtCorr(Int_t nbins, Double_t* edges) { if (CanChangeBins()) {  fPtCorrNbins = nbins; fBinsPtCorr = CloneArray(fPtCorrNedges = nbins+1,edges); } }
   void SetBinsEta(Int_t nbins, Double_t* edges) { if (CanChangeBins()) {  fEtaNbins = nbins; fBinsEta = CloneArray(fEtaNedges = nbins+1,edges); } }
@@ -80,6 +81,7 @@ public :
   // Getters
   THnSparseF *GetEventMultCorrelationMatrix() const {return fEventMultCorrelationMatrix;}
   THnSparseF *GetTrackPtCorrelationMatrix()   const {return fTrackPtCorrelationMatrix;}
+  
 
   //NOTE: for now in p-Pb ND and NSD are the same, DD is empty!
   //kNSD would have to be added to PWG0Helper, now kND is used to signal NSD!
@@ -177,6 +179,10 @@ public :
   Int_t GetNCentralityEstimators() {return fDimensionsCentralityEstimators;}
   void SetBinsCentrality(Int_t nbins, Double_t* edges) { if (CanChangeBins()) { fCentralityNbins = nbins; fBinsCentrality = CloneArray(fCentralityNedges = nbins+1,edges); } }
   void SetCentralityEstimators(const char* estimators);
+  
+  //rapidity shift getter+setter
+  void SetRapidityShift(Double_t yShift) { fRapidityShift = yShift;}
+  Double_t GetRapidityShift() { return fRapidityShift; }
 
 private:
 
@@ -189,7 +195,7 @@ private:
   //
 
   // event rec. track vs true track multiplicity correlation matrix 
-  THnSparseF *fEventMultCorrelationMatrix; //-> mult:mult_true_tracks:multMB
+  THnSparseF *fEventMultCorrelationMatrix; //-> multRecMult:multTrueMC:multMB
 
   // rec. track pt vs true track pt correlation matrix for given eta
   THnSparseF *fTrackPtCorrelationMatrix; //-> Pt:mcPt:mcEta
@@ -199,50 +205,49 @@ private:
   //
 
   // all genertated
-  THnSparseF *fGenEventMatrix; //-> mcZv:multMB (inelastic)
-  THnSparseF *fGenSDEventMatrix; //-> mcZv:multMB (single diffractive)
-  THnSparseF *fGenDDEventMatrix; //-> mcZv:multMB (single diffractive)
-  THnSparseF *fGenNDEventMatrix; //-> mcZv:multMB (non diffractive)
-  THnSparseF *fGenNSDEventMatrix; //-> mcZv:multMB (non single diffractive)
+  THnSparseF *fGenEventMatrix; //-> mcZv:multTrueMC (inelastic)
+  THnSparseF *fGenSDEventMatrix; //-> mcZv:multTrueMC (single diffractive)
+  THnSparseF *fGenDDEventMatrix; //-> mcZv:multTrueMC (single diffractive)
+  THnSparseF *fGenNDEventMatrix; //-> mcZv:multTrueMC (non diffractive)
+  THnSparseF *fGenNSDEventMatrix; //-> mcZv:multTrueMC (non single diffractive)
 
   // trigger bias corrections (fTriggerEventMatrix / fGenEventMatrix)
-  THnSparseF *fTriggerEventMatrix; //-> mcZv:multMB
-  THnSparseF *fTriggerSDEventMatrix; //-> mcZv:multMB
-  THnSparseF *fTriggerDDEventMatrix; //-> mcZv:multMB
-  THnSparseF *fTriggerNDEventMatrix; //-> mcZv:multMB
-  THnSparseF *fTriggerNSDEventMatrix; //-> mcZv:multMB
+  THnSparseF *fTriggerEventMatrix; //-> mcZv:multTrueMC
+  THnSparseF *fTriggerSDEventMatrix; //-> mcZv:multTrueMC
+  THnSparseF *fTriggerDDEventMatrix; //-> mcZv:multTrueMC
+  THnSparseF *fTriggerNDEventMatrix; //-> mcZv:multTrueMC
+  THnSparseF *fTriggerNSDEventMatrix; //-> mcZv:multTrueMC
 
   // event vertex rec. eff correction (fRecEventMatrix / fTriggerEventMatrix)
-  THnSparseF *fRecEventMatrix; //-> mcZv:multMB 
-  THnSparseF *fRecSDEventMatrix; //-> mcZv:multMB
-  THnSparseF *fRecDDEventMatrix; //-> mcZv:multMB
-  THnSparseF *fRecNDEventMatrix; //-> mcZv:multMB
-  THnSparseF *fRecNSDEventMatrix; //-> mcZv:multMB
-
+  THnSparseF *fRecEventMatrix; //-> mcZv:multTrueMC:Centrality 
+  THnSparseF *fRecSDEventMatrix; //-> mcZv:multTrueMC
+  THnSparseF *fRecDDEventMatrix; //-> mcZv:multTrueMC
+  THnSparseF *fRecNDEventMatrix; //-> mcZv:multTrueMC
+  THnSparseF *fRecNSDEventMatrix; //-> mcZv:multTrueMC
 
   //
-  // track-event level correction 
+  // track-event level correction
   //
 
-  THnSparseF *fGenTrackEventMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fGenTrackSDEventMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fGenTrackDDEventMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fGenTrackNDEventMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fGenTrackNSDEventMatrix; //-> mcZv:mcPt:mcEta
+  THnSparseF *fGenTrackEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
+  THnSparseF *fGenTrackSDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
+  THnSparseF *fGenTrackDDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
+  THnSparseF *fGenTrackNDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
+  THnSparseF *fGenTrackNSDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
 
   // trigger bias corrections (fTriggerTrackEventMatrix / fGenTrackEventMatrix)
-  THnSparseF *fTriggerTrackEventMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fTriggerTrackSDEventMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fTriggerTrackDDEventMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fTriggerTrackNDEventMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fTriggerTrackNSDEventMatrix; //-> mcZv:mcPt:mcEta
+  THnSparseF *fTriggerTrackEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
+  THnSparseF *fTriggerTrackSDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
+  THnSparseF *fTriggerTrackDDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
+  THnSparseF *fTriggerTrackNDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
+  THnSparseF *fTriggerTrackNSDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
 
   // event vertex rec. corrections (fRecTrackEventMatrix / fTriggerTrackEventMatrix)
-  THnSparseF *fRecTrackEventMatrix; //-> mcZv:Pt:mcEta
-  THnSparseF *fRecTrackSDEventMatrix; //-> mcZv:Pt:mcEta
-  THnSparseF *fRecTrackDDEventMatrix; //-> mcZv:Pt:mcEta
-  THnSparseF *fRecTrackNDEventMatrix; //-> mcZv:Pt:mcEta
-  THnSparseF *fRecTrackNSDEventMatrix; //-> mcZv:Pt:mcEta
+  THnSparseF *fRecTrackEventMatrix; //-> mcZv:Pt:mcEta:multTrueMC
+  THnSparseF *fRecTrackSDEventMatrix; //-> mcZv:Pt:mcEta:multTrueMC
+  THnSparseF *fRecTrackDDEventMatrix; //-> mcZv:Pt:mcEta:multTrueMC
+  THnSparseF *fRecTrackNDEventMatrix; //-> mcZv:Pt:mcEta:multTrueMC
+  THnSparseF *fRecTrackNSDEventMatrix; //-> mcZv:Pt:mcEta:multTrueMC
 
   //
   // track level correction 
@@ -250,12 +255,12 @@ private:
 
   // track rec. efficiency correction (fRecPrimTrackMatrix / fGenPrimTrackMatrix)
   THnSparseF *fGenTrackMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fGenPrimTrackMatrix; //-> mcZv:mcPt:mcEta
-  THnSparseF *fRecPrimTrackMatrix; //-> mcZv:mcPt:mcEta
+  THnSparseF *fGenPrimTrackMatrix; //-> mcZv:mcPt:mcEta:Centrality 
+  THnSparseF *fRecPrimTrackMatrix; //-> mcZv:mcPt:mcEta:Centrality 
 
   // secondary track contamination correction (fRecSecTrackMatrix / fRecTrackMatrix)
-  THnSparseF *fRecTrackMatrix;    //-> mcZv:mcPt:mcEta
-  THnSparseF *fRecSecTrackMatrix; //-> mcZv:mcPt:mcEta
+  THnSparseF *fRecTrackMatrix;    //-> mcZv:mcPt:mcEta:Centrality 
+  THnSparseF *fRecSecTrackMatrix; //-> mcZv:mcPt:mcEta:Centrality 
 
   // multiple rec. track corrections (fRecMultTrackMatrix / fRecTrackMatrix)
   THnSparseF *fRecMultTrackMatrix; //-> mcZv:Pt:mcEta
@@ -267,10 +272,10 @@ private:
   // THnSparse event histograms
   THnSparseF *fMCEventHist1;  //-> mcXv:mcYv:mcZv
   THnSparseF *fRecEventHist1; //-> Xv:Yv:Zv
-  THnSparseF *fRecEventHist2; //-> Zv:multMB:mult
+  THnSparseF *fRecEventHist2; //-> Zv:multMB:multRecMult
   THnSparseF *fRecMCEventHist1; //-> Xv-mcXv:Yv-mcYv:Zv-mcZv
-  THnSparseF *fRecMCEventHist2; //-> Xv-mcXv:Zv-mcZv:mult
-  THnSparseF *fRecMCEventHist3; //-> mult:EventType (ND, DD, SD)
+  THnSparseF *fRecMCEventHist2; //-> Xv-mcXv:Zv-mcZv:multMB
+  THnSparseF *fRecMCEventHist3; //-> multRec:EventType (ND, DD, SD)
 
   // THnSparse track histograms
   // [0] - after charged track selection, [1] - after acceptance cuts, [2] - after esd track cuts
@@ -295,10 +300,10 @@ private:
   // Generic histograms to be corrected
   //
   THnSparseF *fRecEventHist;    //-> Zv:multMB  
-  THnSparseF *fRecTrackHist; //-> Zv:pT:eta:multRec  
+  THnSparseF *fRecTrackHist; //-> Zv:pT:eta:multRecMult  
   THnSparseF *fEventCount; //-> trig, trig + vertex, selected event
-  THnSparseF *fEventMultHist; // event multiplicities multMB:multRecTemp:multRec
-  THnSparseF *fMCPrimTrackHist; //-> Zv:mcpT:mceta:multtrue
+  THnSparseF *fEventMultHist; // event multiplicities multMB:multRecMult:multRec
+  THnSparseF *fMCPrimTrackHist; //-> Zv:mcpT:mceta:multTrueMC
 
   //
   // candle events track corrections
@@ -306,8 +311,8 @@ private:
   THnSparseF *fRecCandleEventMatrix; // Zv:multMB
 
   // centrality test histograms  
-  THnSparseF *fCentralityEventHist; // rec event hist with centrality zv:multRec:multMB:cent:...
-  THnSparseF *fCentralityTrackHist; // rec track hist with centrality zv:pt:eta:multRec:multMB:cent:...  
+  THnSparseF *fCentralityEventHist; // rec event hist with centrality zv:multRecMult:multMB:cent:...
+  THnSparseF *fCentralityTrackHist; // rec track hist with centrality zv:pt:eta:multRecMult:multMB:cent:...  
   TObjArray *fCentralityEstimatorsList; // TObjArray with TObjStrings containing cent. estimators
   Int_t fDimensionsCentralityEstimators;  // number of centrality estimators: if 0 hists are not filled
   Int_t fCentralityNbins;  // number of centrality bins (common for all estimators)
@@ -321,21 +326,26 @@ private:
 
   //binning for THNsparse
   Int_t fMultNbins;
+  Int_t fMultNbinsTE;
   Int_t fPtNbins;
   Int_t fPtCorrNbins; 
   Int_t fEtaNbins;
   Int_t fZvNbins;
   Int_t fMultNedges;   // fMultNbins+1 uses for streaming dynamic array
+  Int_t fMultNedgesTE; // fMultNbinsTE+1 uses for streaming dynamic array
   Int_t fPtNedges;     // fPtNbins+1 uses for streaming dynamic array  
   Int_t fPtCorrNedges; // fCentralityNbins+1 uses for streaming dynamic array  
   Int_t fEtaNedges;    // fEtaNbins+1 uses for streaming dynamic array
   Int_t fZvNedges;     // fZvNbins+1 uses for streaming dynamic array    
   Double_t *fBinsMult;   //[fMultNedges]
+  Double_t *fBinsMultTE; //[fMultNedgesTE]
   Double_t *fBinsPt;     //[fPtNedges]
   Double_t *fBinsPtCorr; //[fPtCorrNedges]
   Double_t *fBinsEta;    //[fEtaNedges]
   Double_t *fBinsZv;     //[fZvNedges]
   
+  Double_t fRapidityShift; //y shift CMS vs. LAB
+  
   Bool_t fIsInit;
   
   // generic function to change binning
@@ -344,7 +354,7 @@ private:
   AlidNdPtAnalysispPb(const AlidNdPtAnalysispPb&); // not implemented
   AlidNdPtAnalysispPb& operator=(const AlidNdPtAnalysispPb&); // not implemented
 
-  ClassDef(AlidNdPtAnalysispPb,3);
+  ClassDef(AlidNdPtAnalysispPb,5);
 };
 
 #endif
index 43f7a1b2419e8b25a9c40ad1232bf6994fc75e96..d44172de03d70478bb9e4b4db70021cf79e28118 100644 (file)
@@ -20,7 +20,7 @@
 //
 // Origin: Jan Fiete Grosse-Oetringhaus
 // Modified and Extended: Jacek Otwinowski 19/11/2009
-// last change: 2013-02-05 by M.Knichel
+// last change: 2013-06-13 by M.Knichel
 // 
 
 #include <TROOT.h>
@@ -1062,6 +1062,57 @@ Int_t AlidNdPtHelper::GetMCTrueTrackMult(AliMCEvent *const mcEvent, AlidNdPtEven
   Bool_t isEventOK = evtCuts->AcceptMCEvent(mcEvent);
   if(!isEventOK) return 0; 
 
+  Int_t nPart  = stack->GetNtrack();
+  for (Int_t iMc = 0; iMc < nPart; ++iMc) 
+  {
+     TParticle* particle = stack->Particle(iMc);
+     if (!particle)
+     continue;
+
+     // only charged particles
+     if(!particle->GetPDG()) continue;
+     Double_t charge = particle->GetPDG()->Charge()/3.;
+     if (TMath::Abs(charge) < 0.001)
+     continue;
+      
+     // physical primary
+     Bool_t prim = stack->IsPhysicalPrimary(iMc);
+     if(!prim) continue;
+
+     // checked accepted including pt cut
+     //if(accCuts->AcceptTrack(particle)) 
+     if( particle->Eta() > accCuts->GetMinEta() && particle->Eta() < accCuts->GetMaxEta() && particle->Pt() > accCuts->GetMinPt() && particle->Pt() < accCuts->GetMaxPt() ) 
+        
+     {
+       mult++;
+     }
+  }
+
+return mult;  
+}
+
+//_____________________________________________________________________________
+Int_t AlidNdPtHelper::GetMCTrueTrackMult(AliMCEvent *const mcEvent, AlidNdPtEventCuts *const evtCuts, AlidNdPtAcceptanceCuts *const accCuts, Double_t yShift)
+{
+  //
+  // calculate mc event true track multiplicity
+  //
+  if(!mcEvent) return 0;
+
+  AliStack* stack = 0;
+  Int_t mult = 0;
+
+  // MC particle stack
+  stack = mcEvent->Stack();
+  if (!stack) return 0;
+
+  //
+  //printf("minZv %f, maxZv %f \n", evtCuts->GetMinZv(), evtCuts->GetMaxZv());
+  //
+
+  Bool_t isEventOK = evtCuts->AcceptMCEvent(mcEvent);
+  if(!isEventOK) return 0; 
+
   Int_t nPart  = stack->GetNtrack();
   for (Int_t iMc = 0; iMc < nPart; ++iMc) 
   {
@@ -1081,7 +1132,15 @@ Int_t AlidNdPtHelper::GetMCTrueTrackMult(AliMCEvent *const mcEvent, AlidNdPtEven
 
      // checked accepted without pt cut
      //if(accCuts->AcceptTrack(particle)) 
-     if( particle->Eta() > accCuts->GetMinEta() && particle->Eta() < accCuts->GetMaxEta() ) 
+     if (TMath::Abs(particle->Eta()) > 100.) continue;
+  
+     Double_t etacms = TMath::ASinH((TMath::CosH(yShift)*TMath::SinH(particle->Eta())) - (TMath::SinH(yShift)*particle->Energy()/particle->Pt()));
+     Double_t minetacms = accCuts->GetMinEta()-yShift;
+     Double_t maxetacms = accCuts->GetMaxEta()-yShift;
+
+     // checked accepted including pt cut
+     //if(accCuts->AcceptTrack(particle)) 
+     if( etacms > minetacms && etacms < maxetacms && particle->Pt() > accCuts->GetMinPt() && particle->Pt() < accCuts->GetMaxPt() )
      {
        mult++;
      }
@@ -1233,7 +1292,7 @@ THnSparse* AlidNdPtHelper::GenerateCorrMatrix(THnSparse *const hist1, const THnS
 // generate correction matrix
 if(!hist1 || !hist2) return 0; 
 
-THnSparse *h =(THnSparse*)hist1->Clone(name);;
+THnSparse *h =(THnSparse*)hist1->Clone(name);
 h->Divide(hist1,hist2,1,1,"B");
 
 return h;
index b7eaedf05aa553358a2d4791bdceafca75788c93..fa405ca5f11b4478f9a5875f2705a65e2cd51310 100644 (file)
@@ -6,7 +6,7 @@
 //
 // Origin: Jan Fiete Grosse-Oetringhaus
 // Modified and Extended: Jacek Otwinowski 19/11/2009
-// last change: 2013-02-05 by M.Knichel
+// last change: 2013-06-13 by M.Knichel
 //
 
 #include <TObject.h>
@@ -80,7 +80,8 @@ class AlidNdPtHelper : public TObject
 
     static Int_t GetSPDMBTrackMult(const AliESDEvent* const esdEvent, Float_t deltaThetaCut =0.025, Float_t deltaPhiCut = 0.08);
     static Int_t GetSPDMBPrimTrackMult(const AliESDEvent* const esdEvent, AliStack *const  stack, Float_t deltaThetaCut =0.025, Float_t deltaPhiCut = 0.08);
-    static Int_t GetMCTrueTrackMult(AliMCEvent *const mcEvent, AlidNdPtEventCuts *const evtCuts, AlidNdPtAcceptanceCuts *const accCuts);
+    static Int_t GetMCTrueTrackMult(AliMCEvent *const mcEvent, AlidNdPtEventCuts *const evtCuts, AlidNdPtAcceptanceCuts *const accCuts);    
+    static Int_t GetMCTrueTrackMult(AliMCEvent *const mcEvent, AlidNdPtEventCuts *const evtCuts, AlidNdPtAcceptanceCuts *const accCuts, Double_t yShift);    
 
     static AliESDtrack* GetTPCOnlyTrackSPDvtx(const AliESDEvent* const esdEvent, Int_t iTrack, Bool_t bUpdate);
     static AliESDtrack* GetTPCOnlyTrackTrackSPDvtx(const AliESDEvent* const esdEvent, Int_t iTrack, Bool_t bUpdate);
@@ -123,7 +124,7 @@ class AlidNdPtHelper : public TObject
     static AliPWG0Helper::MCProcessType GetEventProcessTypePA(AliHeader* aHeader, Bool_t adebug = kFALSE);
     static AliPWG0Helper::MCProcessType GetDPMjetEventProcessTypePA(AliGenEventHeader* aHeader, Bool_t adebug = kFALSE);
 
-    ClassDef(AlidNdPtHelper, 2);
+    ClassDef(AlidNdPtHelper, 3);
 
   private:
     AlidNdPtHelper(const AlidNdPtHelper&);
index aad6c592d1ffa55777788b142ce906f025cbe126..2ec39c764c96f4f1ec220b2e97141fb31c3acab3 100644 (file)
@@ -2,9 +2,8 @@
 
 // this macro creates the track and event cuts used in this analysis
 
-// last modified: 2012-02-06 
+// last modified: 2013-06-13 
 // m.l.knichel@gsi.de
-// added cut modes 2000-2222 for cut studies
 
 
 AliESDtrackCuts* CreatedNdPtTrackCuts(Int_t cutMode=1, Bool_t fieldOn = kTRUE, Bool_t hists = kTRUE)
@@ -623,7 +622,39 @@ AliESDtrackCuts* CreatedNdPtTrackCuts(Int_t cutMode=1, Bool_t fieldOn = kTRUE, B
 
     TString tag = "TPC-only tracking (2011)";
   }  
-  
+
+  // TPC multiplicity cuts (test 2013)
+  if (cutMode == 203) 
+  {
+    // beta cuts (still under investigation)
+    //minNClustersTPC = 50;
+    Float_t minNCrossedRowsTPC = 80; 
+    Float_t minRatioCrossedRowsOverFindableClustersTPC = 0.8; 
+    Float_t maxFractionSharedTPCCluster = 0.4;    
+    maxChi2PerClusterTPC = 4.0;
+    maxDCAtoVertexXY = 2.4; // cm
+    maxDCAtoVertexZ  = 3.2; // cm
+    minPt=0.0;
+    maxPt=1.e10;
+
+    esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
+    esdTrackCuts->SetRequireTPCRefit(kFALSE);
+    esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
+    //esdTrackCuts->SetMinNClustersTPC(minNClustersTPC);
+    
+    esdTrackCuts->SetMinNCrossedRowsTPC(minNCrossedRowsTPC);
+    esdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(minRatioCrossedRowsOverFindableClustersTPC);
+    esdTrackCuts->SetMaxChi2PerClusterTPC(maxChi2PerClusterTPC);
+    esdTrackCuts->SetMaxFractionSharedTPCClusters(maxFractionSharedTPCCluster);
+    
+    esdTrackCuts->SetMaxDCAToVertexXY(maxDCAtoVertexXY);
+    esdTrackCuts->SetMaxDCAToVertexZ(maxDCAtoVertexZ);
+    esdTrackCuts->SetDCAToVertex2D(kTRUE);
+    esdTrackCuts->SetPtRange(minPt,maxPt);
+
+    TString tag = "TPC Multiplicity Cuts (2013)";
+  }  
+
 
   //
   // systematic errors DCA cut studies
@@ -1316,6 +1347,52 @@ AliESDtrackCuts* CreatedNdPtTrackCuts(Int_t cutMode=1, Bool_t fieldOn = kTRUE, B
 
     TString tag = "TPC+ITS combine tracking + DCAr(pt) (2011)";
   }
+  
+// TPC+ITS combine tracking + DCAr(pt) (2011)
+  if (cutMode == 222) 
+  {
+    //Int_t    minclsTPC=70;
+    Float_t minNCrossedRowsTPC = 120; 
+    Float_t minRatioCrossedRowsOverFindableClustersTPC = 0.8; 
+    Float_t maxFractionSharedTPCCluster = 0.4;
+    Double_t maxchi2perTPCcl=4.;
+    Double_t maxdcazITSTPC=2.0;
+
+    //
+    // TPC
+    //
+    esdTrackCuts->SetRequireTPCRefit(kTRUE);
+    esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
+    
+    //esdTrackCuts->SetMinNClustersTPC(minclsTPC);
+    esdTrackCuts->SetMinNCrossedRowsTPC(minNCrossedRowsTPC);
+    esdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(minRatioCrossedRowsOverFindableClustersTPC);
+    esdTrackCuts->SetMaxChi2PerClusterTPC(maxchi2perTPCcl);
+    esdTrackCuts->SetMaxFractionSharedTPCClusters(maxFractionSharedTPCCluster);
+    //
+    // ITS
+    //
+    esdTrackCuts->SetRequireITSRefit(kTRUE);
+    esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
+    esdTrackCuts->SetMaxChi2PerClusterITS(36.);
+    //
+    // primary selection
+    //
+    esdTrackCuts->SetDCAToVertex2D(kFALSE);
+    esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
+    esdTrackCuts->SetMaxDCAToVertexZ(maxdcazITSTPC);
+
+    // DCArphi parametrization (LHC10c pass2)
+    // 7*(0.0026+0.0050/pt^1.01)
+    esdTrackCuts->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");
+    
+    // tpcc cut
+    esdTrackCuts->SetMaxChi2TPCConstrainedGlobal(36.);    
+
+    TString tag = "TPC+ITS combine tracking + DCAr(pt) + Chi2TPCcc + Chi2ITS";
+  }  
+  
+  
 
   // TPC-tracks + SPD point + ITS refit + DCAr(pt) 4-sigma
   if (cutMode == 75) 
@@ -1777,10 +1854,10 @@ AliESDtrackCuts* CreatedNdPtTrackCuts(Int_t cutMode=1, Bool_t fieldOn = kTRUE, B
 
     TString tag = "TPC refit + Kink rejection required - for cut studies";
   }
-  
+
+
   // TPC+ITS combine tracking + DCAr(pt) (2011)
-  // used for step-by-step cut studies!
-  if ((cutMode >= 2000) && (cutMode <= 2222))
+  if ((cutMode >= 2000) && (cutMode <= 2100))
   {
     //Int_t    minclsTPC=70;
     Float_t minNCrossedRowsTPC = 120; 
@@ -1824,10 +1901,104 @@ AliESDtrackCuts* CreatedNdPtTrackCuts(Int_t cutMode=1, Bool_t fieldOn = kTRUE, B
     if (cutMode >= 2014) { esdTrackCuts->SetMaxChi2TPCConstrainedGlobal(36.); }
 
     TString tag = "for cut/efficiency studies)";
-  }  
+  }
+  
+  if ((cutMode >= 3000) && (cutMode <= 3100))
+  {
+    //Int_t    minclsTPC=70;
+    Float_t minNCrossedRowsTPC = 120; 
+    Float_t minRatioCrossedRowsOverFindableClustersTPC = 0.8; 
+    Float_t maxFractionSharedTPCCluster = 0.4;
+    Double_t maxchi2perTPCcl=4.;
+    Double_t maxdcazITSTPC=2.0;
+    Double_t maxdaczTPC=3.0;
+    Double_t maxdcaxyTPC=3.0;
+
+    //
+    // TPC
+    //
+    if (cutMode >= 3001) { esdTrackCuts->SetRequireTPCRefit(kTRUE); }
+    
+    if (cutMode >= 3002) { esdTrackCuts->SetMaxChi2PerClusterTPC(maxchi2perTPCcl); }    
+    if (cutMode >= 3003) { esdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(minRatioCrossedRowsOverFindableClustersTPC); }
+    if (cutMode >= 3004) { esdTrackCuts->SetMinNCrossedRowsTPC(minNCrossedRowsTPC); }        
+    if (cutMode >= 3005) { esdTrackCuts->SetMaxFractionSharedTPCClusters(maxFractionSharedTPCCluster); }
+    if (cutMode >= 3006) { esdTrackCuts->SetMaxDCAToVertexZ(maxdaczTPC); }
+    if (cutMode >= 3007) { esdTrackCuts->SetMaxDCAToVertexXY(maxdcaxyTPC); }
+    //
+    // ITS
+    //
+    if (cutMode >= 3008) { esdTrackCuts->SetRequireITSRefit(kTRUE); }
+    if (cutMode >= 3009) { esdTrackCuts->SetMaxChi2PerClusterITS(36.); }
+    if (cutMode >= 3010) { esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny); }    
+    //
+    // primary selection
+    //
+    esdTrackCuts->SetDCAToVertex2D(kFALSE);
+    esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
+    if (cutMode >= 3011) { esdTrackCuts->SetMaxDCAToVertexZ(maxdcazITSTPC); }
 
+    // DCArphi parametrization (LHC10c pass2)
+    // 7*(0.0026+0.0050/pt^1.01)
+    if (cutMode >= 3012) { esdTrackCuts->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01"); }
+    if (cutMode >= 3013) { esdTrackCuts->SetAcceptKinkDaughters(kFALSE); }
+    
+    if (cutMode >= 3014) { esdTrackCuts->SetMaxChi2TPCConstrainedGlobal(36.); }
+
+    TString tag = "for cut/efficiency studies (version 3)";
+  }
 
+  if ((cutMode >= 4000) && (cutMode <= 4400))
+  {
+    //
+    // TPC
+    //
+    esdTrackCuts->SetRequireTPCRefit(kTRUE); 
+    esdTrackCuts->SetMinNCrossedRowsTPC(120); 
+    esdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8); 
+    esdTrackCuts->SetMaxChi2PerClusterTPC(4);
+    esdTrackCuts->SetMaxFractionSharedTPCClusters(0.4); 
+    esdTrackCuts->SetMaxDCAToVertexXY(3.0); 
+    //
+    // ITS
+    //
+    esdTrackCuts->SetRequireITSRefit(kTRUE); 
+    esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny); 
+    esdTrackCuts->SetMaxChi2PerClusterITS(36.);
+    //
+    // primary selection
+    //
+    esdTrackCuts->SetDCAToVertex2D(kFALSE);
+    esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
+    esdTrackCuts->SetMaxDCAToVertexZ(2.0); 
+    // 7*(0.0026+0.0050/pt^1.01)
+    esdTrackCuts->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01"); 
+    esdTrackCuts->SetAcceptKinkDaughters(kFALSE); 
+    esdTrackCuts->SetMaxChi2TPCConstrainedGlobal(36.); 
+    //
+    // Swich Low/High for study of systematics
+    //
+    if(cutMode==4010){esdTrackCuts->SetMaxChi2PerClusterITS(25.);}                                             //      Low             1
+    if(cutMode==4011){esdTrackCuts->SetMaxChi2PerClusterITS(49.);}                                             //      High            2
+    if(cutMode==4020){esdTrackCuts->SetMaxChi2PerClusterTPC(3); }                                              //      Low             3
+    if(cutMode==4021){esdTrackCuts->SetMaxChi2PerClusterTPC(5); }                                              //      High            4
+    if(cutMode==4030){esdTrackCuts->SetMinNCrossedRowsTPC(100);}                                               //      Low             5
+    if(cutMode==4031){esdTrackCuts->SetMinNCrossedRowsTPC(130);}                                               //      High            6
+    if(cutMode==4040){esdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.7);}                       //      Low             7
+    if(cutMode==4041){esdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.9);}                       //      High            8
+    if(cutMode==4050){esdTrackCuts->SetMaxFractionSharedTPCClusters(0.2);}                                     //      Low             9
+    if(cutMode==4051){esdTrackCuts->SetMaxFractionSharedTPCClusters(1.0);}                                     //      High            10
+    if(cutMode==4060){esdTrackCuts->SetMaxChi2TPCConstrainedGlobal(25.); }                                     //      LoW             11
+    if(cutMode==4061){esdTrackCuts->SetMaxChi2TPCConstrainedGlobal(49.); }                                     //      High            12
+    if(cutMode==4070){esdTrackCuts->SetMaxDCAToVertexXYPtDep("0.0104+0.0200/pt^1.01");}                        //      Low             13
+    if(cutMode==4071){esdTrackCuts->SetMaxDCAToVertexXYPtDep("0.0260+0.0500/pt^1.01");}                        //      High            14
+    if(cutMode==4080){esdTrackCuts->SetMaxDCAToVertexZ(1.0); }                                         //      Low             15
+    if(cutMode==4081){esdTrackCuts->SetMaxDCAToVertexZ(5.0); }                                         //      High            16
+    if(cutMode==4090){esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kOff); }// 17
+  
+    TString tag = "Study of systematic uncertanties JGronef";
 
+}