]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
from Ante:
authormkrzewic <mikolaj.krzewicki@cern.ch>
Wed, 26 Feb 2014 16:46:04 +0000 (17:46 +0100)
committermkrzewic <mikolaj.krzewicki@cern.ch>
Wed, 26 Feb 2014 16:46:04 +0000 (17:46 +0100)
MPC fixes nad new features

PWG/FLOW/Base/AliFlowAnalysisWithMultiparticleCorrelations.cxx
PWG/FLOW/Base/AliFlowAnalysisWithMultiparticleCorrelations.h
PWG/FLOW/Tasks/AliAnalysisTaskMultiparticleCorrelations.cxx
PWG/FLOW/Tasks/AliAnalysisTaskMultiparticleCorrelations.h

index b0523e1889b99a2886de03decf5eb44b50fa2dcd..da45c38ddb3901d5c570cb610f808786d346a1ec 100644 (file)
@@ -1992,63 +1992,64 @@ void AliFlowAnalysisWithMultiparticleCorrelations::BookEverythingForControlHisto
 
  // b) Book all control histograms: // TBI add setters for all these values
  //  b0) Book TH1D *fKinematicsHist[2][3]:
- Int_t nBins[2][3] = {{360,1000,1000},{360,1000,1000}}; // [RP,POI][phi,pt,eta]
- Double_t min[2][3] = {{0.,0.,-1.},{0.,0.,-1.}}; // [RP,POI][phi,pt,eta]
- Double_t max[2][3] = {{TMath::TwoPi(),10.,1.},{TMath::TwoPi(),10.,1.}}; // [RP,POI][phi,pt,eta]
  TString name[2][3] = {{"RP,phi","RP,pt","RP,eta"},{"POI,phi","POI,pt","POI,eta"}}; // [RP,POI][phi,pt,eta]
  TString title[2] = {"Reference particles (RP)","Particles of interest (POI)"}; // [RP,POI]
  Int_t lineColor[2] = {kBlue,kRed}; // [RP,POI]
  Int_t fillColor[2] = {kBlue-10,kRed-10}; // [RP,POI]
  TString xAxisTitle[3] = {"#phi","p_{T}","#eta"}; // [phi,pt,eta]
- for(Int_t rp=0;rp<2;rp++) // [RP,POI]
+ if(fFillKinematicsHist)
  {
-  for(Int_t ppe=0;ppe<3;ppe++) // [phi,pt,eta]
+  for(Int_t rp=0;rp<2;rp++) // [RP,POI]
   {
-   fKinematicsHist[rp][ppe] = new TH1D(name[rp][ppe].Data(),title[rp].Data(),nBins[rp][ppe],min[rp][ppe],max[rp][ppe]);
-   fKinematicsHist[rp][ppe]->GetXaxis()->SetTitle(xAxisTitle[ppe].Data());
-   fKinematicsHist[rp][ppe]->SetLineColor(lineColor[rp]);
-   fKinematicsHist[rp][ppe]->SetFillColor(fillColor[rp]);
-   fKinematicsHist[rp][ppe]->SetMinimum(0.); 
-   if(fFillKinematicsHist){fControlHistogramsList->Add(fKinematicsHist[rp][ppe]);}
+   for(Int_t ppe=0;ppe<3;ppe++) // [phi,pt,eta]
+   {
+    fKinematicsHist[rp][ppe] = new TH1D(name[rp][ppe].Data(),title[rp].Data(),fnBins[rp][ppe],fMin[rp][ppe],fMax[rp][ppe]);
+    fKinematicsHist[rp][ppe]->GetXaxis()->SetTitle(xAxisTitle[ppe].Data());
+    fKinematicsHist[rp][ppe]->SetLineColor(lineColor[rp]);
+    fKinematicsHist[rp][ppe]->SetFillColor(fillColor[rp]);
+    fKinematicsHist[rp][ppe]->SetMinimum(0.); 
+    fControlHistogramsList->Add(fKinematicsHist[rp][ppe]);
+   }
   }
- }
+ } // if(fFillKinematicsHist)
 
  //  b1) Book TH1D *fMultDistributionsHist[3]: // TBI add setters for all these values
- Int_t nBinsMult[3] = {3000,3000,3000}; // [RP,POI,reference multiplicity]
- Double_t minMult[3] = {0.,0.,0.}; // [RP,POI,reference multiplicity]
- Double_t maxMult[3] = {3000.,3000.,3000.}; // [RP,POI,reference multiplicity]
  TString nameMult[3] = {"Multiplicity (RP)","Multiplicity (POI)","Multiplicity (REF)"}; // [RP,POI,reference multiplicity]
  TString titleMult[3] = {"Reference particles (RP)","Particles of interest (POI)",""}; // [RP,POI,reference multiplicity]
  Int_t lineColorMult[3] = {kBlue,kRed,kGreen+2}; // [RP,POI,reference multiplicity]
  Int_t fillColorMult[3] = {kBlue-10,kRed-10,kGreen-10}; // [RP,POI,reference multiplicity]
  TString xAxisTitleMult[3] = {"Multiplicity (RP)","Multiplicity (POI)","Multiplicity (REF)"}; // [phi,pt,eta]
- for(Int_t rprm=0;rprm<3;rprm++) // [RP,POI,reference multiplicity]
+ if(fFillMultDistributionsHist)
  {
-  fMultDistributionsHist[rprm] = new TH1D(nameMult[rprm].Data(),titleMult[rprm].Data(),nBinsMult[rprm],minMult[rprm],maxMult[rprm]);
-  fMultDistributionsHist[rprm]->GetXaxis()->SetTitle(xAxisTitleMult[rprm].Data());
-  fMultDistributionsHist[rprm]->SetLineColor(lineColorMult[rprm]);
-  fMultDistributionsHist[rprm]->SetFillColor(fillColorMult[rprm]);
-  if(fFillMultDistributionsHist){fControlHistogramsList->Add(fMultDistributionsHist[rprm]);}
- } // for(Int_t rprm=0;rprm<3;rprm++) // [RP,POI,reference multiplicity]
-
- //  b2) Book TH2D *fMultCorrelationsHist[3]: TBI too large objects to store in this way, perhaps,
- // ...
- fMultCorrelationsHist[0] = new TH2D("Multiplicity (RP vs. POI)","Multiplicity (RP vs. POI)",nBinsMult[0],minMult[0],maxMult[0],nBinsMult[1],minMult[1],maxMult[1]);
- fMultCorrelationsHist[0]->GetXaxis()->SetTitle(xAxisTitleMult[0].Data());
- fMultCorrelationsHist[0]->GetYaxis()->SetTitle(xAxisTitleMult[1].Data());
- if(fFillMultCorrelationsHist){fControlHistogramsList->Add(fMultCorrelationsHist[0]);}
-
- // ...
- fMultCorrelationsHist[1] = new TH2D("Multiplicity (RP vs. REF)","Multiplicity (RP vs. REF)",nBinsMult[0],minMult[0],maxMult[0],nBinsMult[2],minMult[2],maxMult[2]);
- fMultCorrelationsHist[1]->GetXaxis()->SetTitle(xAxisTitleMult[0].Data());
- fMultCorrelationsHist[1]->GetYaxis()->SetTitle(xAxisTitleMult[2].Data());
- if(fFillMultCorrelationsHist){fControlHistogramsList->Add(fMultCorrelationsHist[1]);}
-
- // ...
- fMultCorrelationsHist[2] = new TH2D("Multiplicity (POI vs. REF)","Multiplicity (POI vs. REF)",nBinsMult[1],minMult[1],maxMult[1],nBinsMult[2],minMult[2],maxMult[2]);
- fMultCorrelationsHist[2]->GetXaxis()->SetTitle(xAxisTitleMult[1].Data());
- fMultCorrelationsHist[2]->GetYaxis()->SetTitle(xAxisTitleMult[2].Data());
- if(fFillMultCorrelationsHist){fControlHistogramsList->Add(fMultCorrelationsHist[2]);}
+  for(Int_t rprm=0;rprm<3;rprm++) // [RP,POI,reference multiplicity]
+  {
+   fMultDistributionsHist[rprm] = new TH1D(nameMult[rprm].Data(),titleMult[rprm].Data(),fnBinsMult[rprm],fMinMult[rprm],fMaxMult[rprm]);
+   fMultDistributionsHist[rprm]->GetXaxis()->SetTitle(xAxisTitleMult[rprm].Data());
+   fMultDistributionsHist[rprm]->SetLineColor(lineColorMult[rprm]);
+   fMultDistributionsHist[rprm]->SetFillColor(fillColorMult[rprm]);
+   fControlHistogramsList->Add(fMultDistributionsHist[rprm]);
+  } // for(Int_t rprm=0;rprm<3;rprm++) // [RP,POI,reference multiplicity]
+ } // if(fFillMultDistributionsHist)
+
+ //  b2) Book TH2D *fMultCorrelationsHist[3]: 
+ if(fFillMultCorrelationsHist)
+ {
+  // ...
+  fMultCorrelationsHist[0] = new TH2D("Multiplicity (RP vs. POI)","Multiplicity (RP vs. POI)",fnBinsMult[0],fMinMult[0],fMaxMult[0],fnBinsMult[1],fMinMult[1],fMaxMult[1]);
+  fMultCorrelationsHist[0]->GetXaxis()->SetTitle(xAxisTitleMult[0].Data());
+  fMultCorrelationsHist[0]->GetYaxis()->SetTitle(xAxisTitleMult[1].Data());
+  fControlHistogramsList->Add(fMultCorrelationsHist[0]);
+  // ...
+  fMultCorrelationsHist[1] = new TH2D("Multiplicity (RP vs. REF)","Multiplicity (RP vs. REF)",fnBinsMult[0],fMinMult[0],fMaxMult[0],fnBinsMult[2],fMinMult[2],fMaxMult[2]);
+  fMultCorrelationsHist[1]->GetXaxis()->SetTitle(xAxisTitleMult[0].Data());
+  fMultCorrelationsHist[1]->GetYaxis()->SetTitle(xAxisTitleMult[2].Data());
+  fControlHistogramsList->Add(fMultCorrelationsHist[1]);
+  // ...
+  fMultCorrelationsHist[2] = new TH2D("Multiplicity (POI vs. REF)","Multiplicity (POI vs. REF)",fnBinsMult[1],fMinMult[1],fMaxMult[1],fnBinsMult[2],fMinMult[2],fMaxMult[2]);
+  fMultCorrelationsHist[2]->GetXaxis()->SetTitle(xAxisTitleMult[1].Data());
+  fMultCorrelationsHist[2]->GetYaxis()->SetTitle(xAxisTitleMult[2].Data());
+  fControlHistogramsList->Add(fMultCorrelationsHist[2]);
+ } // if(fFillMultCorrelationsHist){
 
 } // void AliFlowAnalysisWithMultiparticleCorrelations::BookEverythingForControlHistograms()
 
@@ -2119,8 +2120,10 @@ void AliFlowAnalysisWithMultiparticleCorrelations::InitializeArraysForControlHis
 
  // a) Initialize TH1D *fKinematicsHist[2][3];
  // b) Initialize TH1D *fMultDistributionsHist[3]; 
- // c) Initialize TH2D *fMultCorrelationsHist[3].  
-
+ // c) Initialize TH2D *fMultCorrelationsHist[3];  
+ // d) Initialize default binning values for fKinematicsHist[2][3];
+ // e) Initialize default binning values for fMultCorrelationsHist[3].
  // a) Initialize TH1D *fKinematicsHist[2][3]:
  for(Int_t rp=0;rp<2;rp++) // [RP,POI]
  {
@@ -2142,6 +2145,43 @@ void AliFlowAnalysisWithMultiparticleCorrelations::InitializeArraysForControlHis
   fMultCorrelationsHist[r] = NULL; 
  }
 
+ // d) Initialize default binning values for fKinematicsHist[2][3]:
+ // nBins:
+ fnBins[0][0] = 360;  // [RP][phi]
+ fnBins[0][1] = 1000; // [RP][pt]
+ fnBins[0][2] = 1000; // [RP][eta]
+ fnBins[1][0] = 360;  // [POI][phi]
+ fnBins[1][1] = 1000; // [POI][pt]
+ fnBins[1][2] = 1000; // [POI][eta]
+ // Min:
+ fMin[0][0] = 0.;  // [RP][phi]
+ fMin[0][1] = 0.;  // [RP][pt]
+ fMin[0][2] = -1.; // [RP][eta]
+ fMin[1][0] = 0.;  // [POI][phi]
+ fMin[1][1] = 0.;  // [POI][pt]
+ fMin[1][2] = -1.; // [POI][eta]
+ // Max:
+ fMax[0][0] = TMath::TwoPi(); // [RP][phi]
+ fMax[0][1] = 10.;            // [RP][pt]
+ fMax[0][2] = 1.;             // [RP][eta]
+ fMax[1][0] = TMath::TwoPi(); // [POI][phi]
+ fMax[1][1] = 10.;            // [POI][pt]
+ fMax[1][2] = 1.;             // [POI][eta]
+
+ // e) Initialize default binning values for fMultCorrelationsHist[3]:
+ // nBins:
+ fnBinsMult[0] = 3000; // [RP]
+ fnBinsMult[1] = 3000; // [POI]
+ fnBinsMult[2] = 3000; // [REF]
+ // Min:
+ fMinMult[0] = 0.; // [RP]
+ fMinMult[1] = 0.; // [POI]
+ fMinMult[2] = 0.; // [REF]
+ // Max:
+ fMaxMult[0] = 3000.; // [RP]
+ fMaxMult[1] = 3000.; // [POI]
+ fMaxMult[2] = 3000.; // [REF]
+
 } // void AliFlowAnalysisWithMultiparticleCorrelations::InitializeArraysForControlHistograms()
 
 //=======================================================================================================================
@@ -4535,6 +4575,168 @@ void AliFlowAnalysisWithMultiparticleCorrelations::InitializeArraysForWeights()
 
 //=======================================================================================================================
 
+void AliFlowAnalysisWithMultiparticleCorrelations::SetnBins(const char *type, const char *variable, const Int_t nBins)
+{
+ // Set number of bins for histograms fKinematicsHist[2][3].
+
+ TString sMethodName = "void AliFlowAnalysisWithMultiparticleCorrelations::SetnBins(const char *type, const char *variable, const Int_t nBins)";
+ // Basic protection:
+ if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI")))
+ {
+  cout<<"Well, it would be better for you to use RP or POI here..."<<endl;
+  Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
+ }
+ if(!(TString(variable).EqualTo("phi") || TString(variable).EqualTo("pt") || TString(variable).EqualTo("eta")))
+ {
+  cout<<"phi, pt or eta, please!"<<endl;
+  Fatal(sMethodName.Data(),"!(TString(variable).EqualTo... variable = %s ",variable);
+ }
+
+ Int_t rp = 0; // [RP,POI]
+ if(TString(type).EqualTo("POI")){rp=1;} 
+
+ Int_t ppe = 0; // [phi,pt,eta]
+ if(TString(variable).EqualTo("pt")){ppe=1;} 
+ if(TString(variable).EqualTo("eta")){ppe=2;} 
+
+ fnBins[rp][ppe] = nBins;
+
+} // void AliFlowAnalysisWithMultiparticleCorrelations::SetnBins(const char *type, const char *variable, const Int_t nBins)
+
+//=======================================================================================================================
+
+void AliFlowAnalysisWithMultiparticleCorrelations::SetMin(const char *type, const char *variable, const Double_t min)
+{
+ // Set min bin range for histograms fKinematicsHist[2][3].
+
+ TString sMethodName = "void AliFlowAnalysisWithMultiparticleCorrelations::SetMin(const char *type, const char *variable, const Double_t min)";
+ // Basic protection:
+ if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI")))
+ {
+  cout<<"Well, it would be better for you to use RP or POI here..."<<endl;
+  Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
+ }
+ if(!(TString(variable).EqualTo("phi") || TString(variable).EqualTo("pt") || TString(variable).EqualTo("eta")))
+ {
+  cout<<"phi, pt or eta, please!"<<endl;
+  Fatal(sMethodName.Data(),"!(TString(variable).EqualTo... variable = %s ",variable);
+ }
+
+ Int_t rp = 0; // [RP,POI]
+ if(TString(type).EqualTo("POI")){rp=1;} 
+
+ Int_t ppe = 0; // [phi,pt,eta]
+ if(TString(variable).EqualTo("pt")){ppe=1;} 
+ if(TString(variable).EqualTo("eta")){ppe=2;} 
+
+ fMin[rp][ppe] = min;
+
+} // void AliFlowAnalysisWithMultiparticleCorrelations::SetMin(const char *type, const char *variable, const Double_t min)
+
+//=======================================================================================================================
+
+void AliFlowAnalysisWithMultiparticleCorrelations::SetMax(const char *type, const char *variable, const Double_t max)
+{
+ // Set max bin range for histograms fKinematicsHist[2][3].
+
+ TString sMethodName = "void AliFlowAnalysisWithMultiparticleCorrelations::SetMax(const char *type, const char *variable, const Double_t max)";
+ // Basic protection:
+ if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI")))
+ {
+  cout<<"Well, it would be better for you to use RP or POI here..."<<endl;
+  Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
+ }
+ if(!(TString(variable).EqualTo("phi") || TString(variable).EqualTo("pt") || TString(variable).EqualTo("eta")))
+ {
+  cout<<"phi, pt or eta, please!"<<endl;
+  Fatal(sMethodName.Data(),"!(TString(variable).EqualTo... variable = %s ",variable);
+ }
+
+ Int_t rp = 0; // [RP,POI]
+ if(TString(type).EqualTo("POI")){rp=1;} 
+
+ Int_t ppe = 0; // [phi,pt,eta]
+ if(TString(variable).EqualTo("pt")){ppe=1;} 
+ if(TString(variable).EqualTo("eta")){ppe=2;} 
+
+ fMax[rp][ppe] = max;
+
+} // void AliFlowAnalysisWithMultiparticleCorrelations::SetMax(const char *type, const char *variable, const Double_t min)
+
+//=======================================================================================================================
+
+void AliFlowAnalysisWithMultiparticleCorrelations::SetnBinsMult(const char *type, const Int_t nBinsMult)
+{
+ // Set number of bins for histograms fMultDistributionsHist[3].
+
+ TString sMethodName = "void AliFlowAnalysisWithMultiparticleCorrelations::SetnBinsMult(const char *type, const Int_t nBinsMult)";
+ // Basic protection:
+ if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI") || TString(type).EqualTo("REF")))
+ {
+  cout<<"Well, it would be better for you to use RP, POI or REF here..."<<endl;
+  Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
+ }
+
+ Int_t rpr = 0; // [RP,POI,REF]
+ if(TString(type).EqualTo("POI")){rpr=1;} 
+ else if(TString(type).EqualTo("REF")){rpr=2;} 
+
+ fnBinsMult[rpr] = nBinsMult;
+
+} // void AliFlowAnalysisWithMultiparticleCorrelations::SetnBinsMult(const char *type, const Int_t nBinsMult)
+
+//=======================================================================================================================
+
+void AliFlowAnalysisWithMultiparticleCorrelations::SetMinMult(const char *type, const Double_t minMult)
+{
+ // Set min bin range for histograms fMultDistributionsHist[3].
+
+ TString sMethodName = "void AliFlowAnalysisWithMultiparticleCorrelations::SetMinMult(const char *type, const Double_t minMult)";
+ // Basic protection:
+ if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI") || TString(type).EqualTo("REF")))
+ {
+  cout<<"Well, it would be better for you to use RP, POI or REF here..."<<endl;
+  Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
+ }
+
+ Int_t rpr = 0; // [RP,POI,REF]
+ if(TString(type).EqualTo("POI")){rpr=1;} 
+ else if(TString(type).EqualTo("REF")){rpr=2;} 
+
+ fMinMult[rpr] = minMult;
+
+} // void AliFlowAnalysisWithMultiparticleCorrelations::SetMinMult(const char *type const Double_t minMult)
+
+//=======================================================================================================================
+
+void AliFlowAnalysisWithMultiparticleCorrelations::SetMaxMult(const char *type, const Double_t maxMult)
+{
+ // Set max bin range for histograms fMultDistributionsHist[3].
+
+ TString sMethodName = "void AliFlowAnalysisWithMultiparticleCorrelations::SetMaxMult(const char *type, const Double_t maxMult)";
+ // Basic protection:
+ if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI") || TString(type).EqualTo("REF")))
+ {
+  cout<<"Well, it would be better for you to use RP, POI or REF here..."<<endl;
+  Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
+ }
+
+ Int_t rpr = 0; // [RP,POI,REF]
+ if(TString(type).EqualTo("POI")){rpr=1;} 
+ else if(TString(type).EqualTo("REF")){rpr=2;} 
+
+ fMaxMult[rpr] = maxMult;
+
+} // void AliFlowAnalysisWithMultiparticleCorrelations::SetMaxMult(const char *type, const Double_t minMult)
+
+//=======================================================================================================================
+
 
 
 
index 4f562532f97e192f977395344ada87eba786a021..dbbb121edce4a1e5268d25105636ed4c51c275e4 100644 (file)
@@ -123,6 +123,12 @@ class AliFlowAnalysisWithMultiparticleCorrelations{
   Bool_t GetFillMultDistributionsHist() const {return this->fFillMultDistributionsHist;};
   void SetFillMultCorrelationsHist(Bool_t const mch) {this->fFillMultCorrelationsHist = mch;};
   Bool_t GetFillMultCorrelationsHist() const {return this->fFillMultCorrelationsHist;};
+  void SetnBins(const char *type, const char *variable, const Int_t nBins); // .cxx
+  void SetMin(const char *type, const char *variable, const Double_t min); // .cxx
+  void SetMax(const char *type, const char *variable, const Double_t max); // .cxx
+  void SetnBinsMult(const char *type, const Int_t nBinsMult); // .cxx
+  void SetMinMult(const char *type, const Double_t minMult); // .cxx
+  void SetMaxMult(const char *type, const Double_t maxMult); // .cxx
 
   //  5.2.) Q-vectors:
   void SetQvectorList(TList* const qvl) {this->fQvectorList = qvl;};
@@ -307,6 +313,12 @@ class AliFlowAnalysisWithMultiparticleCorrelations{
   TH1D *fKinematicsHist[2][3];          // [RP,POI][phi,pt,eta] distributions
   TH1D *fMultDistributionsHist[3];      // multiplicity distribution [RP,POI,reference multiplicity]
   TH2D *fMultCorrelationsHist[3];       // [RP vs. POI, RP vs. refMult, POI vs. refMult]  
+  Int_t fnBins[2][3];                   // [RP,POI][phi,pt,eta], corresponds to fKinematicsHist[2][3]
+  Double_t fMin[2][3];                  // [RP,POI][phi,pt,eta], corresponds to fKinematicsHist[2][3]
+  Double_t fMax[2][3];                  // [RP,POI][phi,pt,eta], corresponds to fKinematicsHist[2][3]
+  Int_t fnBinsMult[3];                  // [RP,POI,REF], corresponds to fMultDistributionsHist[3]   
+  Double_t fMinMult[3];                 // [RP,POI,REF], corresponds to fMultDistributionsHist[3]   
+  Double_t fMaxMult[3];                 // [RP,POI,REF], corresponds to fMultDistributionsHist[3]   
   
   // 2.) Q-vectors:
   TList *fQvectorList;           // list to hold all Q-vector objects       
index 1c35a16b45e6c2579ecf9d136c24b084a085d423..5e248431326a0827f28ac51daba2e3701714ae75 100644 (file)
@@ -105,6 +105,41 @@ AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelatio
   fCrossCheckDiffCSCOBN[0] = 0; // cos/sin
   fCrossCheckDiffCSCOBN[1] = 2; // correlator order
   fCrossCheckDiffCSCOBN[2] = 4; // bin number 
+  // Initialize default binning values for fKinematicsHist[2][3]:
+  // nBins:
+  fnBins[0][0] = 360;  // [RP][phi]
+  fnBins[0][1] = 1000; // [RP][pt]
+  fnBins[0][2] = 1000; // [RP][eta]
+  fnBins[1][0] = 360;  // [POI][phi]
+  fnBins[1][1] = 1000; // [POI][pt]
+  fnBins[1][2] = 1000; // [POI][eta]
+  // Min:
+  fMin[0][0] = 0.;  // [RP][phi]
+  fMin[0][1] = 0.;  // [RP][pt]
+  fMin[0][2] = -1.; // [RP][eta]
+  fMin[1][0] = 0.;  // [POI][phi]
+  fMin[1][1] = 0.;  // [POI][pt]
+  fMin[1][2] = -1.; // [POI][eta]
+  // Max:
+  fMax[0][0] = TMath::TwoPi(); // [RP][phi]
+  fMax[0][1] = 10.;            // [RP][pt]
+  fMax[0][2] = 1.;             // [RP][eta]
+  fMax[1][0] = TMath::TwoPi(); // [POI][phi]
+  fMax[1][1] = 10.;            // [POI][pt]
+  fMax[1][2] = 1.;             // [POI][eta]
+  // Initialize default binning values for fMultCorrelationsHist[3]:
+  // nBins:
+  fnBinsMult[0] = 3000; // [RP]
+  fnBinsMult[1] = 3000; // [POI]
+  fnBinsMult[2] = 3000; // [REF]
+  // Min:
+  fMinMult[0] = 0.; // [RP]
+  fMinMult[1] = 0.; // [POI]
+  fMinMult[2] = 0.; // [REF]
+  // Max:
+  fMaxMult[0] = 3000.; // [RP]
+  fMaxMult[1] = 3000.; // [POI]
+  fMaxMult[2] = 3000.; // [REF]
 
 } // AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelations(const char *name, Bool_t useParticleWeights): 
 
@@ -169,6 +204,41 @@ AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelatio
   fCrossCheckDiffCSCOBN[0] = 0; // cos/sin
   fCrossCheckDiffCSCOBN[1] = 2; // correlator order
   fCrossCheckDiffCSCOBN[2] = 4; // bin number 
+  // Initialize default binning values for fKinematicsHist[2][3]:
+  // nBins:
+  fnBins[0][0] = 360;  // [RP][phi]
+  fnBins[0][1] = 1000; // [RP][pt]
+  fnBins[0][2] = 1000; // [RP][eta]
+  fnBins[1][0] = 360;  // [POI][phi]
+  fnBins[1][1] = 1000; // [POI][pt]
+  fnBins[1][2] = 1000; // [POI][eta]
+  // Min:
+  fMin[0][0] = 0.;  // [RP][phi]
+  fMin[0][1] = 0.;  // [RP][pt]
+  fMin[0][2] = -1.; // [RP][eta]
+  fMin[1][0] = 0.;  // [POI][phi]
+  fMin[1][1] = 0.;  // [POI][pt]
+  fMin[1][2] = -1.; // [POI][eta]
+  // Max:
+  fMax[0][0] = TMath::TwoPi(); // [RP][phi]
+  fMax[0][1] = 10.;            // [RP][pt]
+  fMax[0][2] = 1.;             // [RP][eta]
+  fMax[1][0] = TMath::TwoPi(); // [POI][phi]
+  fMax[1][1] = 10.;            // [POI][pt]
+  fMax[1][2] = 1.;             // [POI][eta]
+  // Initialize default binning values for fMultCorrelationsHist[3]:
+  // nBins:
+  fnBinsMult[0] = 3000; // [RP]
+  fnBinsMult[1] = 3000; // [POI]
+  fnBinsMult[2] = 3000; // [REF]
+  // Min:
+  fMinMult[0] = 0.; // [RP]
+  fMinMult[1] = 0.; // [POI]
+  fMinMult[2] = 0.; // [REF]
+  // Max:
+  fMaxMult[0] = 3000.; // [RP]
+  fMaxMult[1] = 3000.; // [POI]
+  fMaxMult[2] = 3000.; // [REF]
 
 } // AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelations():
 
@@ -237,6 +307,28 @@ void AliAnalysisTaskMultiparticleCorrelations::UserCreateOutputObjects()
   } // for(Int_t ppe=0;ppe<3;ppe++) // [phi,pt,eta]
  } // for(Int_t rp=0;rp<2;rp++) // [RP,POI]
 
+ // Control histos:
+ // Kinematics:
+ //TString typeKine[2] = {"RP","POI"};
+ //TString variable[3] = {"phi","pt","eta"};
+ for(Int_t rp=0;rp<2;rp++) // [RP,POI]
+ {
+  for(Int_t ppe=0;ppe<3;ppe++) // [phi,pt,eta]
+  {
+   fMPC->SetnBins(type[rp].Data(),variable[ppe].Data(),fnBins[rp][ppe]);
+   fMPC->SetMin(type[rp].Data(),variable[ppe].Data(),fMin[rp][ppe]);
+   fMPC->SetMax(type[rp].Data(),variable[ppe].Data(),fMax[rp][ppe]);
+  } // for(Int_t ppe=0;ppe<3;ppe++) // [phi,pt,eta]
+ } // for(Int_t rp=0;rp<2;rp++) // [RP,POI]
+ // Multiplicites:
+ TString typeMult[3] = {"RP","POI","REF"};
+ for(Int_t rpr=0;rpr<3;rpr++) // [RP,POI,REF]
+ {  
+  fMPC->SetnBinsMult(typeMult[rpr].Data(),fnBinsMult[rpr]);
+  fMPC->SetMinMult(typeMult[rpr].Data(),fMinMult[rpr]);
+  fMPC->SetMaxMult(typeMult[rpr].Data(),fMaxMult[rpr]);
+ } // for(Int_t rpr=0;rpr<3;rpr++) // [RP,POI,REF]
+
  // Initialize:
  fMPC->Init();
  if(fMPC->GetHistList()) 
@@ -328,5 +420,169 @@ void AliAnalysisTaskMultiparticleCorrelations::SetWeightsHist(TH1D* const hist,
 
 //================================================================================================================
 
+void AliAnalysisTaskMultiparticleCorrelations::SetnBins(const char *type, const char *variable, const Int_t nBins)
+{
+ // Set number of bins for histograms fKinematicsHist[2][3].
+
+ TString sMethodName = "void AliAnalysisTaskMultiparticleCorrelations::SetnBins(const char *type, const char *variable, const Int_t nBins)";
+ // Basic protection:
+ if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI")))
+ {
+  cout<<"Well, it would be better for you to use RP or POI here..."<<endl;
+  Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
+ }
+ if(!(TString(variable).EqualTo("phi") || TString(variable).EqualTo("pt") || TString(variable).EqualTo("eta")))
+ {
+  cout<<"phi, pt or eta, please!"<<endl;
+  Fatal(sMethodName.Data(),"!(TString(variable).EqualTo... variable = %s ",variable);
+ }
+
+ Int_t rp = 0; // [RP,POI]
+ if(TString(type).EqualTo("POI")){rp=1;} 
+
+ Int_t ppe = 0; // [phi,pt,eta]
+ if(TString(variable).EqualTo("pt")){ppe=1;} 
+ if(TString(variable).EqualTo("eta")){ppe=2;} 
+
+ fnBins[rp][ppe] = nBins;
+
+} // void AliAnalysisTaskMultiparticleCorrelations::SetnBins(const char *type, const char *variable, const Int_t nBins)
+
+//=======================================================================================================================
+
+void AliAnalysisTaskMultiparticleCorrelations::SetMin(const char *type, const char *variable, const Double_t min)
+{
+ // Set min bin range for histograms fKinematicsHist[2][3].
+
+ TString sMethodName = "void AliAnalysisTaskMultiparticleCorrelations::SetMin(const char *type, const char *variable, const Double_t min)";
+ // Basic protection:
+ if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI")))
+ {
+  cout<<"Well, it would be better for you to use RP or POI here..."<<endl;
+  Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
+ }
+ if(!(TString(variable).EqualTo("phi") || TString(variable).EqualTo("pt") || TString(variable).EqualTo("eta")))
+ {
+  cout<<"phi, pt or eta, please!"<<endl;
+  Fatal(sMethodName.Data(),"!(TString(variable).EqualTo... variable = %s ",variable);
+ }
+
+ Int_t rp = 0; // [RP,POI]
+ if(TString(type).EqualTo("POI")){rp=1;} 
+
+ Int_t ppe = 0; // [phi,pt,eta]
+ if(TString(variable).EqualTo("pt")){ppe=1;} 
+ if(TString(variable).EqualTo("eta")){ppe=2;} 
+
+ fMin[rp][ppe] = min;
+
+} // void AliAnalysisTaskMultiparticleCorrelations::SetMin(const char *type, const char *variable, const Double_t min)
+
+//=======================================================================================================================
+
+void AliAnalysisTaskMultiparticleCorrelations::SetMax(const char *type, const char *variable, const Double_t max)
+{
+ // Set max bin range for histograms fKinematicsHist[2][3].
+
+ TString sMethodName = "void AliAnalysisTaskMultiparticleCorrelations::SetMax(const char *type, const char *variable, const Double_t max)";
+ // Basic protection:
+ if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI")))
+ {
+  cout<<"Well, it would be better for you to use RP or POI here..."<<endl;
+  Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
+ }
+ if(!(TString(variable).EqualTo("phi") || TString(variable).EqualTo("pt") || TString(variable).EqualTo("eta")))
+ {
+  cout<<"phi, pt or eta, please!"<<endl;
+  Fatal(sMethodName.Data(),"!(TString(variable).EqualTo... variable = %s ",variable);
+ }
+
+ Int_t rp = 0; // [RP,POI]
+ if(TString(type).EqualTo("POI")){rp=1;} 
+
+ Int_t ppe = 0; // [phi,pt,eta]
+ if(TString(variable).EqualTo("pt")){ppe=1;} 
+ if(TString(variable).EqualTo("eta")){ppe=2;} 
+
+ fMax[rp][ppe] = max;
+
+} // void AliAnalysisTaskMultiparticleCorrelations::SetMax(const char *type, const char *variable, const Double_t min)
+
+//=======================================================================================================================
+
+void AliAnalysisTaskMultiparticleCorrelations::SetnBinsMult(const char *type, const Int_t nBinsMult)
+{
+ // Set number of bins for histograms fMultDistributionsHist[3].
+
+ TString sMethodName = "void AliAnalysisTaskMultiparticleCorrelations::SetnBinsMult(const char *type, const Int_t nBinsMult)";
+ // Basic protection:
+ if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI") || TString(type).EqualTo("REF")))
+ {
+  cout<<"Well, it would be better for you to use RP, POI or REF here..."<<endl;
+  Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
+ }
+
+ Int_t rpr = 0; // [RP,POI,REF]
+ if(TString(type).EqualTo("POI")){rpr=1;} 
+ else if(TString(type).EqualTo("REF")){rpr=2;} 
+
+ fnBinsMult[rpr] = nBinsMult;
+
+} // void AliAnalysisTaskMultiparticleCorrelations::SetnBinsMult(const char *type, const Int_t nBinsMult)
+
+//=======================================================================================================================
+
+void AliAnalysisTaskMultiparticleCorrelations::SetMinMult(const char *type, const Double_t minMult)
+{
+ // Set min bin range for histograms fMultDistributionsHist[3].
+
+ TString sMethodName = "void AliAnalysisTaskMultiparticleCorrelations::SetMinMult(const char *type, const Double_t minMult)";
+ // Basic protection:
+ if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI") || TString(type).EqualTo("REF")))
+ {
+  cout<<"Well, it would be better for you to use RP, POI or REF here..."<<endl;
+  Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
+ }
+
+ Int_t rpr = 0; // [RP,POI,REF]
+ if(TString(type).EqualTo("POI")){rpr=1;} 
+ else if(TString(type).EqualTo("REF")){rpr=2;} 
+
+ fMinMult[rpr] = minMult;
+
+} // void AliAnalysisTaskMultiparticleCorrelations::SetMinMult(const char *type const Double_t minMult)
+
+//=======================================================================================================================
+
+void AliAnalysisTaskMultiparticleCorrelations::SetMaxMult(const char *type, const Double_t maxMult)
+{
+ // Set max bin range for histograms fMultDistributionsHist[3].
+
+ TString sMethodName = "void AliAnalysisTaskMultiparticleCorrelations::SetMaxMult(const char *type, const Double_t maxMult)";
+ // Basic protection:
+ if(!(TString(type).EqualTo("RP") || TString(type).EqualTo("POI") || TString(type).EqualTo("REF")))
+ {
+  cout<<"Well, it would be better for you to use RP, POI or REF here..."<<endl;
+  Fatal(sMethodName.Data(),"!(TString(type).EqualTo... type = %s ",type);
+ }
+
+ Int_t rpr = 0; // [RP,POI,REF]
+ if(TString(type).EqualTo("POI")){rpr=1;} 
+ else if(TString(type).EqualTo("REF")){rpr=2;} 
+
+ fMaxMult[rpr] = maxMult;
+
+} // void AliAnalysisTaskMultiparticleCorrelations::SetMaxMult(const char *type, const Double_t minMult)
+
+//=======================================================================================================================
+
+
+
 
 
index 4bd1390671e6a044246e2f634f88ca8d3b7c74dd..83f65a3b66a56cef269dd62805134b78e6b36a6d 100644 (file)
@@ -48,6 +48,12 @@ class AliAnalysisTaskMultiparticleCorrelations : public AliAnalysisTaskSE{
   Bool_t GetFillMultDistributionsHist() const {return this->fFillMultDistributionsHist;};
   void SetFillMultCorrelationsHist(Bool_t const mch) {this->fFillMultCorrelationsHist = mch;};
   Bool_t GetFillMultCorrelationsHist() const {return this->fFillMultCorrelationsHist;};
+  void SetnBins(const char *type, const char *variable, const Int_t nBins); // .cxx
+  void SetMin(const char *type, const char *variable, const Double_t min); // .cxx
+  void SetMax(const char *type, const char *variable, const Double_t max); // .cxx
+  void SetnBinsMult(const char *type, const Int_t nBinsMult); // .cxx
+  void SetMinMult(const char *type, const Double_t minMult); // .cxx
+  void SetMaxMult(const char *type, const Double_t maxMult); // .cxx
 
   // Q-vectors:
   void SetCalculateQvector(Bool_t const cqv) {this->fCalculateQvector = cqv;};
@@ -148,6 +154,12 @@ class AliAnalysisTaskMultiparticleCorrelations : public AliAnalysisTaskSE{
   Bool_t fFillKinematicsHist;        // fill or not fKinematicsHist[2][3]
   Bool_t fFillMultDistributionsHist; // fill or not TH1D *fMultDistributionsHist[3]    
   Bool_t fFillMultCorrelationsHist;  // fill or not TH2D *fMultCorrelationsHist[3] 
+  Int_t fnBins[2][3];                   // [RP,POI][phi,pt,eta], corresponds to fKinematicsHist[2][3]
+  Double_t fMin[2][3];                  // [RP,POI][phi,pt,eta], corresponds to fKinematicsHist[2][3]
+  Double_t fMax[2][3];                  // [RP,POI][phi,pt,eta], corresponds to fKinematicsHist[2][3]
+  Int_t fnBinsMult[3];                  // [RP,POI,REF], corresponds to fMultDistributionsHist[3]   
+  Double_t fMinMult[3];                 // [RP,POI,REF], corresponds to fMultDistributionsHist[3]   
+  Double_t fMaxMult[3];                 // [RP,POI,REF], corresponds to fMultDistributionsHist[3]  
 
   // Q-vectors:
   Bool_t fCalculateQvector;      // to calculate or not to calculate Q-vector components, that's a Boolean...