]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG2/FLOW/macros/compareFlowResults.C
first step for error estimation QC{2}
[u/mrichter/AliRoot.git] / PWG2 / FLOW / macros / compareFlowResults.C
index eeb736e9ceb17cd1d8c69fb1358b80897aecb0d1..d1dc8e86181c9ab8c23ae8ecc89d020ef37f446e 100644 (file)
 //type of analysis can be: ESD, AOD, MC, ESDMC0, ESDMC1
 //const TString type = "ESD"; 
-void compareFlowResults(TString type="ESD")
+
+enum libModes {mLocal,mLocalSource};
+//mLocal: Analyze data on your computer using aliroot
+//mLocalSource: Analyze data on your computer using root + source files
+
+//void compareFlowResults(TString type="",Int_t mode=mLocalSource)
+void compareFlowResults(TString type="ESD",Int_t mode=mLocal)
 { 
+
+  // load needed libraries:                       
+  LoadPlotLibraries(mode);
+
+
   //==================================================================================
   //             set here which plots will be shown by default
   //==================================================================================
-  Bool_t plotIntFlow = kTRUE;     //integrated flow (no-name) // to be improved
+  Bool_t plotIntFlow = kTRUE;                  // integrated flow (no-name) // to be improved
+  Bool_t plotIntFlowRelativeToMC = kTRUE;      // plot |v{MC}-v{method}/v{MC}| for integrated flow (no-name) // to be improved
   // RP = particles used to determine the reaction plane
-  Bool_t plotIntFlowRP = kTRUE;     //integrated flow RP
-  Bool_t plotDiffFlowPtRP = kTRUE;  //differential flow (Pt,RP)
-  Bool_t plotDiffFlowEtaRP = kTRUE; //differential flow (Eta,RP)
+  Bool_t plotIntFlowRP = kTRUE;             // integrated flow RP
+  Bool_t plotIntFlowRelativeToMCRP = kTRUE;   // plot |v{MC}-v{method}/v{MC}| for integrated flow (RP) // to be improved
+  Bool_t plotDiffFlowPtRP = kTRUE;             // differential flow (Pt,RP)
+  Bool_t plotDiffFlowEtaRP = kTRUE;             // differential flow (Eta,RP)
+  Bool_t plotDiffFlowPtRelativeToMCRP = kTRUE;  // plot |v{MC}-v{method}/v{MC}| as a function of pt for RPs   
   // POI = particle of interest
-  Bool_t plotIntFlowPOI = kTRUE;     //integrated flow POI
-  Bool_t plotDiffFlowPtPOI = kTRUE;   //differential flow (Pt,POI)
-  Bool_t plotDiffFlowEtaPOI = kTRUE;   //differential flow (Eta,POI)
+  Bool_t plotIntFlowPOI = kTRUE;              // integrated flow POI
+  Bool_t plotIntFlowRelativeToMCPOI = kTRUE;   // plot |v{MC}-v{method}/v{MC}| for integrated flow (POI) // to be improved  
+  Bool_t plotDiffFlowPtPOI = kTRUE;           // differential flow (Pt,POI)
+  Bool_t plotDiffFlowEtaPOI = kTRUE;         // differential flow (Eta,POI)
   //==================================================================================
   
+  
   //==================================================================================
   // set here which methods will be plotted by default for differential flow (Pt,RP):
-  Bool_t plotMCPtRP    = kFALSE;
-  Bool_t plotSPPtRP    = kTRUE;
-  Bool_t plotGFC2PtRP  = kTRUE;
-  Bool_t plotGFC4PtRP  = kTRUE;
-  Bool_t plotGFC6PtRP  = kTRUE;
-  Bool_t plotGFC8PtRP  = kTRUE;
-  Bool_t plotQC2PtRP   = kTRUE;
-  Bool_t plotQC4PtRP   = kTRUE;
-  Bool_t plotQC6PtRP   = kTRUE;
-  Bool_t plotQC8PtRP   = kTRUE;
-  Bool_t plotLYZ2PtRP  = kTRUE;
+  Bool_t plotMCPtRP       = kFALSE;
+  Bool_t plotSPPtRP       = kTRUE;
+  Bool_t plotGFC2PtRP     = kTRUE;
+  Bool_t plotGFC4PtRP     = kTRUE;
+  Bool_t plotGFC6PtRP     = kTRUE;
+  Bool_t plotGFC8PtRP     = kTRUE;
+  Bool_t plotQC2PtRP      = kTRUE;
+  Bool_t plotQC4PtRP      = kTRUE;
+  Bool_t plotQC6PtRP      = kFALSE; // not calculated yet
+  Bool_t plotQC8PtRP      = kFALSE; // not calculated yet
+  Bool_t plotLYZ2SUMPtRP  = kTRUE;
+  Bool_t plotLYZ2PRODPtRP = kTRUE;
+  Bool_t plotLYZEPPtRP    = kTRUE; 
   
   // set here which methods will be plotted by default for differential flow (Eta,RP):
-  Bool_t plotMCEtaRP    = kFALSE;
-  Bool_t plotSPEtaRP    = kTRUE;
-  Bool_t plotGFC2EtaRP  = kTRUE;
-  Bool_t plotGFC4EtaRP  = kTRUE;
-  Bool_t plotGFC6EtaRP  = kTRUE;
-  Bool_t plotGFC8EtaRP  = kTRUE;
-  Bool_t plotQC2EtaRP   = kTRUE;
-  Bool_t plotQC4EtaRP   = kTRUE;
-  Bool_t plotQC6EtaRP   = kTRUE;
-  Bool_t plotQC8EtaRP   = kTRUE;
-  Bool_t plotLYZ2EtaRP  = kTRUE;
-  Bool_t plotLYZEPEtaRP = kTRUE;
+  Bool_t plotMCEtaRP       = kFALSE;
+  Bool_t plotSPEtaRP       = kTRUE;
+  Bool_t plotGFC2EtaRP     = kTRUE;
+  Bool_t plotGFC4EtaRP     = kTRUE;
+  Bool_t plotGFC6EtaRP     = kTRUE;
+  Bool_t plotGFC8EtaRP     = kTRUE;
+  Bool_t plotQC2EtaRP      = kTRUE;
+  Bool_t plotQC4EtaRP      = kTRUE;
+  Bool_t plotQC6EtaRP      = kFALSE; // not calculated yet
+  Bool_t plotQC8EtaRP      = kFALSE; // not calculated yet
+  Bool_t plotLYZ2SUMEtaRP  = kTRUE;
+  Bool_t plotLYZ2PRODEtaRP = kTRUE;
+  Bool_t plotLYZEPEtaRP    = kTRUE;
+  
+  // set here which methods will be plotted by default for |v{MC}-v{method}/v{MC}| as a function of pt for RPs 
+  Bool_t plotSPRelativeToMCRP       = kTRUE;
+  Bool_t plotGFC2RelativeToMCRP     = kTRUE;
+  Bool_t plotGFC4RelativeToMCRP     = kTRUE;
+  Bool_t plotGFC6RelativeToMCRP     = kTRUE;
+  Bool_t plotGFC8RelativeToMCRP     = kTRUE;
+  Bool_t plotQC2RelativeToMCRP      = kTRUE;
+  Bool_t plotQC4RelativeToMCRP      = kTRUE;
+  Bool_t plotQC6RelativeToMCRP      = kFALSE; // not calculated yet
+  Bool_t plotQC8RelativeToMCRP      = kFALSE; // not calculated yet
+  Bool_t plotLYZ2SUMRelativeToMCRP  = kTRUE;
+  Bool_t plotLYZ2PRODRelativeToMCRP = kTRUE;
+  Bool_t plotLYZEPRelativeToMCRP    = kTRUE;  
   
   // set here which methods will be plotted by default for differential flow (Pt,POI):
-  Bool_t plotMCPtPOI    = kFALSE;
-  Bool_t plotSPPtPOI    = kTRUE;
-  Bool_t plotGFC2PtPOI  = kTRUE;
-  Bool_t plotGFC4PtPOI  = kTRUE;
-  Bool_t plotGFC6PtPOI  = kTRUE;
-  Bool_t plotGFC8PtPOI  = kTRUE;
-  Bool_t plotQC2PtPOI   = kTRUE;
-  Bool_t plotQC4PtPOI   = kTRUE;
-  Bool_t plotQC6PtPOI   = kTRUE;
-  Bool_t plotQC8PtPOI   = kTRUE;
-  Bool_t plotLYZ2PtPOI  = kTRUE;
-  Bool_t plotLYZEPPtPOI = kTRUE; 
+  Bool_t plotMCPtPOI       = kFALSE;
+  Bool_t plotSPPtPOI       = kTRUE;
+  Bool_t plotGFC2PtPOI     = kTRUE;
+  Bool_t plotGFC4PtPOI     = kTRUE;
+  Bool_t plotGFC6PtPOI     = kTRUE;
+  Bool_t plotGFC8PtPOI     = kTRUE;
+  Bool_t plotQC2PtPOI      = kTRUE;
+  Bool_t plotQC4PtPOI      = kTRUE;
+  Bool_t plotQC6PtPOI      = kFALSE; // not calculated yet
+  Bool_t plotQC8PtPOI      = kFALSE; // not calculated yet
+  Bool_t plotLYZ2SUMPtPOI  = kTRUE;
+  Bool_t plotLYZ2PRODPtPOI = kTRUE;
+  Bool_t plotLYZEPPtPOI    = kTRUE; 
   
   // set here which methods will be plotted by default for differential flow (Eta,POI):
-  Bool_t plotMCEtaPOI    = kFALSE;
-  Bool_t plotSPEtaPOI    = kTRUE;
-  Bool_t plotGFC2EtaPOI  = kTRUE;
-  Bool_t plotGFC4EtaPOI  = kTRUE;
-  Bool_t plotGFC6EtaPOI  = kTRUE;
-  Bool_t plotGFC8EtaPOI  = kTRUE;
-  Bool_t plotQC2EtaPOI   = kTRUE;
-  Bool_t plotQC4EtaPOI   = kTRUE;
-  Bool_t plotQC6EtaPOI   = kTRUE;
-  Bool_t plotQC8EtaPOI   = kTRUE;
-  Bool_t plotLYZ2EtaPOI  = kTRUE;
-  Bool_t plotLYZEPEtaPOI = kTRUE;
+  Bool_t plotMCEtaPOI       = kFALSE;
+  Bool_t plotSPEtaPOI       = kTRUE;
+  Bool_t plotGFC2EtaPOI     = kTRUE;
+  Bool_t plotGFC4EtaPOI     = kTRUE;
+  Bool_t plotGFC6EtaPOI     = kTRUE;
+  Bool_t plotGFC8EtaPOI     = kTRUE;
+  Bool_t plotQC2EtaPOI      = kTRUE;
+  Bool_t plotQC4EtaPOI      = kTRUE;
+  Bool_t plotQC6EtaPOI      = kFALSE; // not calculated yet
+  Bool_t plotQC8EtaPOI      = kFALSE; // not calculated yet
+  Bool_t plotLYZ2SUMEtaPOI  = kTRUE;
+  Bool_t plotLYZ2PRODEtaPOI = kTRUE;
+  Bool_t plotLYZEPEtaPOI    = kTRUE;
   //==================================================================================
  
   
@@ -90,10 +124,10 @@ void compareFlowResults(TString type="ESD")
   Int_t markerStyleGFC4 = 20; // full circle
   Int_t markerColorGFC4 = kAzure+3;
   // GFC{6}
-  Int_t markerStyleGFC6 = 25; // open circle
+  Int_t markerStyleGFC6 = 25; // open square
   Int_t markerColorGFC6 = kAzure-7;
   // GFC{8}
-  Int_t markerStyleGFC8 = 24; // open square
+  Int_t markerStyleGFC8 = 24; // open circle
   Int_t markerColorGFC8 = kAzure+3;
   // QC{2}
   Int_t markerStyleQC2 = 21; // full square
@@ -102,40 +136,122 @@ void compareFlowResults(TString type="ESD")
   Int_t markerStyleQC4 = 20; // full circle
   Int_t markerColorQC4 = kOrange+3;
   // QC{6}
-  Int_t markerStyleQC6 = 25; // open circle
+  Int_t markerStyleQC6 = 25; // open square
   Int_t markerColorQC6 = kOrange-7;
   // QC{8}
-  Int_t markerStyleQC8 = 24; // open square
+  Int_t markerStyleQC8 = 24; // open circle
   Int_t markerColorQC8 = kOrange+3;
-  // LYZ2
-  Int_t markerStyleLYZ2 = 22; // full triangle
-  Int_t markerColorLYZ2 = kYellow+3;
+  // LYZ2SUM
+  Int_t markerStyleLYZ2SUM = 22; // full triangle
+  Int_t markerColorLYZ2SUM = kYellow+3;
+  // LYZ2PROD
+  Int_t markerStyleLYZ2PROD = 22; // full triangle
+  Int_t markerColorLYZ2PROD = kGreen+3;
   // LYZEP
   Int_t markerStyleLYZEP = 26; // open triangle
   Int_t markerColorLYZEP = kYellow+3; 
   //==================================================================================
 
-    
+
   //==================================================================================  
-  //load needed libraries:
-  gSystem->AddIncludePath("-I$ROOTSYS/include");
-  gSystem->Load("libTree.so");
+  // set here which result goes in which bin in the plot for integrated flow (no-name) 
+  // MC:
+  Int_t binMC = 1; 
+  // SP:
+  Int_t binSP = 2;
+  // GFC{2}
+  Int_t binGFC2 = 3; 
+  // GFC{4}
+  Int_t binGFC4 = 5; 
+  // GFC{6}
+  Int_t binGFC6 = 7; 
+  // GFC{8}
+  Int_t binGFC8 = 9; 
+  // QC{2}
+  Int_t binQC2 = 4; 
+  // QC{4}
+  Int_t binQC4 = 6; 
+  // QC{6}
+  Int_t binQC6 = 8; 
+  // QC{8}
+  Int_t binQC8 = 10; 
+  // FQD 
+  Int_t binFQD = 11; 
+  // LYZ1SUM
+  Int_t binLYZ1SUM = 12; 
+  // LYZ1PROD
+  Int_t binLYZ1PROD = 13; 
+  // LYZEP
+  Int_t binLYZEP = 14; 
+  //==================================================================================
 
-  // for AliRoot
-  gSystem->AddIncludePath("-I$ALICE_ROOT/include");
-  gSystem->Load("libANALYSIS.so");
-  gSystem->Load("libPWG2flowCommon.so");
-  cerr<<"libPWG2flowCommon.so loaded ..."<<endl;
-  
-  // for root load histrogram classes
-  // output histosgrams
-  //  gROOT->LoadMacro("code/AliFlowCommonHist.cxx+");
-  //  gROOT->LoadMacro("code/AliFlowCommonHistResults.cxx+");
-  //  gROOT->LoadMacro("code/AliFlowLYZHist1.cxx+");
-  //  gROOT->LoadMacro("code/AliFlowLYZHist2.cxx+");  
+
+  //==================================================================================  
+  // set here which result goes in which bin in the plot for integrated flow (RP) 
+  // MC:
+  Int_t binMCRP = 1; 
+  // SP:
+  Int_t binSPRP = 2;
+  // GFC{2}
+  Int_t binGFC2RP = 3; 
+  // GFC{4}
+  Int_t binGFC4RP = 5; 
+  // GFC{6}
+  Int_t binGFC6RP = 7; 
+  // GFC{8}
+  Int_t binGFC8RP = 9; 
+  // QC{2}
+  Int_t binQC2RP = 4; 
+  // QC{4}
+  Int_t binQC4RP = 6; 
+  // QC{6}
+  Int_t binQC6RP = 8; 
+  // QC{8}
+  Int_t binQC8RP = 10; 
+  // FQD 
+  Int_t binFQDRP = 11; 
+  // LYZ2SUM
+  Int_t binLYZ2SUMRP = 12; 
+  // LYZ2PROD
+  Int_t binLYZ2PRODRP = 13; 
+  // LYZEP
+  Int_t binLYZEPRP = 14; 
   //==================================================================================
-  
-  
+
+
+  //==================================================================================  
+  // set here which result goes in which bin in the plot for integrated flow (POI) 
+  // MC:
+  Int_t binMCPOI = 1; 
+  // SP:
+  Int_t binSPPOI = 2;
+  // GFC{2}
+  Int_t binGFC2POI = 3; 
+  // GFC{4}
+  Int_t binGFC4POI = 5; 
+  // GFC{6}
+  Int_t binGFC6POI = 7; 
+  // GFC{8}
+  Int_t binGFC8POI = 9; 
+  // QC{2}
+  Int_t binQC2POI = 4; 
+  // QC{4}
+  Int_t binQC4POI = 6; 
+  // QC{6}
+  Int_t binQC6POI = 8; 
+  // QC{8}
+  Int_t binQC8POI = 10; 
+  // FQD 
+  Int_t binFQDPOI = 11; 
+  // LYZ2SUM
+  Int_t binLYZ2SUMPOI = 12;  
+  // LYZ2PROD
+  Int_t binLYZ2PRODPOI = 13;    
+  // LYZEP
+  Int_t binLYZEPPOI = 14; 
+  //==================================================================================
+                                        
   //==================================================================================
   //                         accessing output files
   //==================================================================================
@@ -148,13 +264,21 @@ void compareFlowResults(TString type="ESD")
   TFile* fileSP = NULL;
   fileSP = TFile::Open(((inputFileNameSP.Append(type)).Append(".root")).Data(), "READ"); 
   
-  TString inputFileNameLYZ1 = "outputLYZ1analysis";
-  TFile* fileLYZ1 = NULL;
-  fileLYZ1 = TFile::Open(((inputFileNameLYZ1.Append(type)).Append(".root")).Data(), "READ"); 
+  TString inputFileNameLYZ1SUM = "outputLYZ1SUManalysis";
+  TFile* fileLYZ1SUM = NULL;
+  fileLYZ1SUM = TFile::Open(((inputFileNameLYZ1SUM.Append(type)).Append(".root")).Data(), "READ"); 
+  
+  TString inputFileNameLYZ2SUM = "outputLYZ2SUManalysis";
+  TFile* fileLYZ2SUM = NULL;
+  fileLYZ2SUM = TFile::Open(((inputFileNameLYZ2SUM.Append(type)).Append(".root")).Data(), "READ"); 
+  
+  TString inputFileNameLYZ1PROD = "outputLYZ1PRODanalysis";
+  TFile* fileLYZ1PROD = NULL;
+  fileLYZ1PROD = TFile::Open(((inputFileNameLYZ1PROD.Append(type)).Append(".root")).Data(), "READ"); 
   
-  TString inputFileNameLYZ2 = "outputLYZ2analysis";
-  TFile* fileLYZ2 = NULL;
-  fileLYZ2 = TFile::Open(((inputFileNameLYZ2.Append(type)).Append(".root")).Data(), "READ"); 
+  TString inputFileNameLYZ2PROD = "outputLYZ2PRODanalysis";
+  TFile* fileLYZ2PROD = NULL;
+  fileLYZ2PROD = TFile::Open(((inputFileNameLYZ2PROD.Append(type)).Append(".root")).Data(), "READ"); 
   
   TString inputFileNameLYZEP = "outputLYZEPanalysis";
   TFile* fileLYZEP = NULL;
@@ -183,46 +307,87 @@ void compareFlowResults(TString type="ESD")
   gStyle->SetOptTitle(0);
   gStyle->SetOptStat(0);
   
-  //choosing the style and color of mesh for MC error bands:
+  // plot for 'no-name' integrated flow:
+  // choosing the style and color of mesh for MC error bands
   Int_t meshStyle = 1001;
-  Int_t meshColor = kRed-10;
+  Int_t meshColor = kGray;
   
-  //marker style and color (plots for int. flow) 
+  // marker style and color  
   Int_t markerStyle = 21;
-  Int_t markerColor = kRed-3;
+  Int_t markerColor = kBlack;
+  
+  // plot for RP's integrated flow:
+  // choosing the style and color of mesh for MC error bands
+  Int_t meshStyleRP = 1001;
+  Int_t meshColorRP = kRed-10;
+  
+  // marker style and color  
+  Int_t markerStyleRP = 21;
+  Int_t markerColorRP = kRed-3;
+  
+  // plot for POI's integrated flow:
+  // choosing the style and color of mesh for MC error bands
+  Int_t meshStylePOI = 1001;
+  Int_t meshColorPOI = kBlue-10;
+  
+  // marker style and color  
+  Int_t markerStylePOI = 21;
+  Int_t markerColorPOI = kBlue-3;
+  
+  // choosing the style and color of mesh for MC error bands in the plots for diff. flow
+  // plot for differential flow (Pt,RP):
+  Int_t meshStyleDiffFlowPtRP = 1001;
+  Int_t meshColorDiffFlowPtRP = kRed-10;
+  
+  // plot for differential flow (Eta,RP):
+  Int_t meshStyleDiffFlowEtaRP = 1001;
+  Int_t meshColorDiffFlowEtaRP = kRed-10;
+  
+  // plot for differential flow (Pt,POI):
+  Int_t meshStyleDiffFlowPtPOI = 1001;
+  Int_t meshColorDiffFlowPtPOI = kRed-10;
+
+  // plot for differential flow (Eta,POI):
+  Int_t meshStyleDiffFlowEtaPOI = 1001;
+  Int_t meshColorDiffFlowEtaPOI = kRed-10;
   //==================================================================================
   
   
   
   
   //==================================================================================
-  //                              INTEGRATED FLOW
+  //                             INTEGRATED FLOW (no-name, RP and POI)
   //==================================================================================
-  //the number of different methods:
-  const Int_t nMethods=13;
+  // the number of different methods:
+  const Int_t nMethods=14;
   
-  //booking the histogram for the integrated flow results from all methods:
+  // booking the histogram for the integrated flow results from all methods:
   TH1D* intFlowAll = new TH1D("intFlowAll","Integrated Flow",nMethods,0,nMethods);      
-  //intFlowAll->SetLabelSize(0.036,"X");
-  //intFlowAll->SetLabelSize(0.036,"Y");
+  // intFlowAll->SetLabelSize(0.036,"X");
+  // intFlowAll->SetLabelSize(0.036,"Y");
   intFlowAll->SetMarkerStyle(markerStyle);
   intFlowAll->SetMarkerColor(markerColor);
-  (intFlowAll->GetXaxis())->SetBinLabel(1,"v_{2}{MC}");
-  (intFlowAll->GetXaxis())->SetBinLabel(2,"v_{2}{SP}");
-  (intFlowAll->GetXaxis())->SetBinLabel(3,"v_{2}{2,GFC}");
-  (intFlowAll->GetXaxis())->SetBinLabel(4,"v_{2}{2,QC}");
-  (intFlowAll->GetXaxis())->SetBinLabel(5,"v_{2}{4,GFC}");
-  (intFlowAll->GetXaxis())->SetBinLabel(6,"v_{2}{4,QC}");
-  (intFlowAll->GetXaxis())->SetBinLabel(7,"v_{2}{6,GFC}");
-  (intFlowAll->GetXaxis())->SetBinLabel(8,"v_{2}{6,QC}");
-  (intFlowAll->GetXaxis())->SetBinLabel(9,"v_{2}{8,GFC}");
-  (intFlowAll->GetXaxis())->SetBinLabel(10,"v_{2}{8,QC}");
-  (intFlowAll->GetXaxis())->SetBinLabel(11,"v_{2}{FQD}");
-  (intFlowAll->GetXaxis())->SetBinLabel(12,"v_{2}{LYZ}");
-  (intFlowAll->GetXaxis())->SetBinLabel(13,"v_{2}{LYZEP}");
-  
-  //booking the graph to store flow values and errors from all methods:  
-  Double_t x[nMethods] = {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5};
+  (intFlowAll->GetXaxis())->SetBinLabel(binMC,"v_{2}{MC}");
+  (intFlowAll->GetXaxis())->SetBinLabel(binSP,"v_{2}{SP}");
+  (intFlowAll->GetXaxis())->SetBinLabel(binGFC2,"v_{2}{2,GFC}");
+  (intFlowAll->GetXaxis())->SetBinLabel(binQC2,"v_{2}{2,QC}");
+  (intFlowAll->GetXaxis())->SetBinLabel(binGFC4,"v_{2}{4,GFC}");
+  (intFlowAll->GetXaxis())->SetBinLabel(binQC4,"v_{2}{4,QC}");
+  (intFlowAll->GetXaxis())->SetBinLabel(binGFC6,"v_{2}{6,GFC}");
+  (intFlowAll->GetXaxis())->SetBinLabel(binQC6,"v_{2}{6,QC}");
+  (intFlowAll->GetXaxis())->SetBinLabel(binGFC8,"v_{2}{8,GFC}");
+  (intFlowAll->GetXaxis())->SetBinLabel(binQC8,"v_{2}{8,QC}");
+  (intFlowAll->GetXaxis())->SetBinLabel(binFQD,"v_{2}{FQD}");
+  (intFlowAll->GetXaxis())->SetBinLabel(binLYZ1SUM,"v_{2}{LYZ,sum}");
+  (intFlowAll->GetXaxis())->SetBinLabel(binLYZ1PROD,"v_{2}{LYZ,prod}");
+  (intFlowAll->GetXaxis())->SetBinLabel(binLYZEP,"v_{2}{LYZEP}");
+  
+  // booking the graph to store flow values and errors from all methods:    
+  Double_t x[nMethods] = {0.};
+  for(Int_t i=0;i<nMethods;i++)
+  {
+   x[i]=i+0.5;
+  }
   Double_t xError[nMethods] = {0.};
   Double_t flowValue[nMethods] = {0.};
   Double_t flowError[nMethods] = {0.};
@@ -231,88 +396,116 @@ void compareFlowResults(TString type="ESD")
   Double_t flowValuePOI[nMethods] = {0.};
   Double_t flowErrorPOI[nMethods] = {0.};
   
-  //accessing the results for each method:
-  //MCEP = Monte Carlo Event Plane
+  // accessing the results for integrated flow for each method:
+  // MCEP = Monte Carlo Event Plane
   TList *pListMCEP = NULL;
   AliFlowCommonHist *mcepCommonHist = NULL;
   AliFlowCommonHistResults *mcepCommonHistRes = NULL; 
   if(fileMCEP) {
     fileMCEP->GetObject("cobjMCEP",pListMCEP); 
     if(pListMCEP) {
-      mcepCommonHist    = dynamic_cast<AliFlowCommonHist*> (pListMCEP->FindObject("AliFlowCommonHistMCEP"));
+      mcepCommonHist = dynamic_cast<AliFlowCommonHist*> (pListMCEP->FindObject("AliFlowCommonHistMCEP"));
       mcepCommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListMCEP->FindObject("AliFlowCommonHistResultsMCEP"));
       if(mcepCommonHistRes) {
-       flowValue[0] = (mcepCommonHistRes->GetHistIntFlow())->GetBinContent(1);
-       flowError[0] = (mcepCommonHistRes->GetHistIntFlow())->GetBinError(1);
-       flowValueRP[0] = (mcepCommonHistRes->GetHistIntFlowRP())->GetBinContent(1);
-       flowErrorRP[0] = (mcepCommonHistRes->GetHistIntFlowRP())->GetBinError(1);
-       flowValuePOI[0] = (mcepCommonHistRes->GetHistIntFlowPOI())->GetBinContent(1);
-       flowErrorPOI[0] = (mcepCommonHistRes->GetHistIntFlowPOI())->GetBinError(1);
+       flowValue[binMC-1] = (mcepCommonHistRes->GetHistIntFlow())->GetBinContent(1);
+       flowError[binMC-1] = (mcepCommonHistRes->GetHistIntFlow())->GetBinError(1);
+       flowValueRP[binMCRP-1] = (mcepCommonHistRes->GetHistIntFlowRP())->GetBinContent(1);
+       flowErrorRP[binMCRP-1] = (mcepCommonHistRes->GetHistIntFlowRP())->GetBinError(1);
+       flowValuePOI[binMCPOI-1] = (mcepCommonHistRes->GetHistIntFlowPOI())->GetBinContent(1);
+       flowErrorPOI[binMCPOI-1] = (mcepCommonHistRes->GetHistIntFlowPOI())->GetBinError(1);
       }
     }
   }
   
-  //SP = Scalar Product
+  // SP = Scalar Product
   TList *pListSP = NULL;
   AliFlowCommonHist *spCommonHist = NULL;
   AliFlowCommonHistResults *spCommonHistRes = NULL; 
   if(fileSP) {
     fileSP->GetObject("cobjSP",pListSP); 
     if(pListSP) {
-      spCommonHist    = dynamic_cast<AliFlowCommonHist*> (pListSP->FindObject("AliFlowCommonHistSP"));
+      spCommonHist = dynamic_cast<AliFlowCommonHist*> (pListSP->FindObject("AliFlowCommonHistSP"));
       spCommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListSP->FindObject("AliFlowCommonHistResultsSP"));
       if(spCommonHistRes) {
-       flowValue[1] = (spCommonHistRes->GetHistIntFlow())->GetBinContent(1);
-       flowError[1] = (spCommonHistRes->GetHistIntFlow())->GetBinError(1);
-       flowValueRP[1] = (spCommonHistRes->GetHistIntFlowRP())->GetBinContent(1);
-       flowErrorRP[1] = (spCommonHistRes->GetHistIntFlowRP())->GetBinError(1);
-       flowValuePOI[1] = (spCommonHistRes->GetHistIntFlowPOI())->GetBinContent(1);
-       flowErrorPOI[1] = (spCommonHistRes->GetHistIntFlowPOI())->GetBinError(1);
+       flowValue[binSP-1] = (spCommonHistRes->GetHistIntFlow())->GetBinContent(1);
+       flowError[binSP-1] = (spCommonHistRes->GetHistIntFlow())->GetBinError(1);
+       flowValueRP[binSPRP-1] = (spCommonHistRes->GetHistIntFlowRP())->GetBinContent(1);
+       flowErrorRP[binSPRP-1] = (spCommonHistRes->GetHistIntFlowRP())->GetBinError(1);
+       flowValuePOI[binSPPOI-1] = (spCommonHistRes->GetHistIntFlowPOI())->GetBinContent(1);
+       flowErrorPOI[binSPPOI-1] = (spCommonHistRes->GetHistIntFlowPOI())->GetBinError(1);
+      }
+    }
+  }
+  
+  // LYZ1SUM = Lee-Yang Zeros (1st run, sum) is used to get only 'no-name' integrated flow
+  TList *pListLYZ1SUM = NULL;
+  AliFlowCommonHist *lyz1sumCommonHist = NULL;
+  AliFlowCommonHistResults *lyz1sumCommonHistRes = NULL; 
+  if(fileLYZ1SUM) {
+    fileLYZ1SUM->GetObject("cobjLYZ1SUM",pListLYZ1SUM); 
+    if(pListLYZ1SUM) {
+      lyz1sumCommonHist = dynamic_cast<AliFlowCommonHist*> (pListLYZ1SUM->FindObject("AliFlowCommonHistLYZ1SUM"));
+      lyz1sumCommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListLYZ1SUM->FindObject("AliFlowCommonHistResultsLYZ1SUM"));
+      if(lyz1sumCommonHistRes) {
+       flowValue[binLYZ1SUM-1] = (lyz1sumCommonHistRes->GetHistIntFlow())->GetBinContent(1);
+       flowError[binLYZ1SUM-1] = (lyz1sumCommonHistRes->GetHistIntFlow())->GetBinError(1);
       }
     }
   }
   
-  //LYZ1 = Lee-Yang Zeros (1st run)
-  TList *pListLYZ1 = NULL;
-  AliFlowCommonHist *lyz1CommonHist = NULL;
-  AliFlowCommonHistResults *lyz1CommonHistRes = NULL; 
-  if(fileLYZ1) {
-    fileLYZ1->GetObject("cobjLYZ1",pListLYZ1); 
-    if(pListLYZ1) {
-      lyz1CommonHist = dynamic_cast<AliFlowCommonHist*> (pListLYZ1->FindObject("AliFlowCommonHistLYZ1"));
-      lyz1CommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListLYZ1->FindObject("AliFlowCommonHistResultsLYZ1"));
-      if(lyz1CommonHistRes) {
-       flowValue[11] = (lyz1CommonHistRes->GetHistIntFlow())->GetBinContent(1);
-       flowError[11] = (lyz1CommonHistRes->GetHistIntFlow())->GetBinError(1);
-       flowValueRP[11] = (lyz1CommonHistRes->GetHistIntFlowRP())->GetBinContent(1);
-       flowErrorRP[11] = (lyz1CommonHistRes->GetHistIntFlowRP())->GetBinError(1);
-       flowValuePOI[11] = (lyz1CommonHistRes->GetHistIntFlowPOI())->GetBinContent(1);
-       flowErrorPOI[11] = (lyz1CommonHistRes->GetHistIntFlowPOI())->GetBinError(1);
+  // LYZ2SUM = Lee-Yang Zeros (2nd run, sum) is used to get RP's and POI's integrated flow
+  TList *pListLYZ2SUM = NULL;
+  AliFlowCommonHist *lyz2sumCommonHist = NULL;
+  AliFlowCommonHistResults *lyz2sumCommonHistRes = NULL; 
+  if(fileLYZ2SUM) {
+    fileLYZ2SUM->GetObject("cobjLYZ2SUM",pListLYZ2SUM); 
+    if(pListLYZ2SUM) {
+      lyz2sumCommonHist = dynamic_cast<AliFlowCommonHist*> (pListLYZ2SUM->FindObject("AliFlowCommonHistLYZ2SUM"));
+      lyz2sumCommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListLYZ2SUM->FindObject("AliFlowCommonHistResultsLYZ2SUM"));
+      if(lyz2sumCommonHistRes) {
+       flowValueRP[binLYZ2SUMRP-1] = (lyz2sumCommonHistRes->GetHistIntFlowRP())->GetBinContent(1);
+       flowErrorRP[binLYZ2SUMRP-1] = (lyz2sumCommonHistRes->GetHistIntFlowRP())->GetBinError(1);
+       flowValuePOI[binLYZ2SUMPOI-1] = (lyz2sumCommonHistRes->GetHistIntFlowPOI())->GetBinContent(1);
+       flowErrorPOI[binLYZ2SUMPOI-1] = (lyz2sumCommonHistRes->GetHistIntFlowPOI())->GetBinError(1);
+      }
+    }
+  }
+  // LYZ1PROD = Lee-Yang Zeros (1st run, product) is used to get only 'no-name' integrated flow
+  TList *pListLYZ1PROD = NULL;
+  AliFlowCommonHist *lyz1prodCommonHist = NULL;
+  AliFlowCommonHistResults *lyz1prodCommonHistRes = NULL; 
+  if(fileLYZ1PROD) {
+    fileLYZ1PROD->GetObject("cobjLYZ1PROD",pListLYZ1PROD); 
+    if(pListLYZ1PROD) {
+      lyz1prodCommonHist = dynamic_cast<AliFlowCommonHist*> (pListLYZ1PROD->FindObject("AliFlowCommonHistLYZ1PROD"));
+      lyz1prodCommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListLYZ1PROD->FindObject("AliFlowCommonHistResultsLYZ1PROD"));
+      if(lyz1prodCommonHistRes) {
+       flowValue[binLYZ1PROD-1] = (lyz1prodCommonHistRes->GetHistIntFlow())->GetBinContent(1);
+       flowError[binLYZ1PROD-1] = (lyz1prodCommonHistRes->GetHistIntFlow())->GetBinError(1);
       }
     }
   }
   
-  //LYZ2 = Lee-Yang Zeros (2nd run) (needed only for differential flow)
-  TList *pListLYZ2 = NULL;
-  AliFlowCommonHist *lyz2CommonHist = NULL;
-  AliFlowCommonHistResults *lyz2CommonHistRes = NULL; 
-  if(fileLYZ2) {
-    fileLYZ2->GetObject("cobjLYZ2",pListLYZ2); 
-    if(pListLYZ2) {
-      lyz2CommonHist = dynamic_cast<AliFlowCommonHist*> (pListLYZ2->FindObject("AliFlowCommonHistLYZ2"));
-      lyz2CommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListLYZ2->FindObject("AliFlowCommonHistResultsLYZ2"));
-      if(lyz2CommonHistRes) {
-       flowValue[11] = (lyz2CommonHistRes->GetHistIntFlow())->GetBinContent(1);
-       flowError[11] = (lyz2CommonHistRes->GetHistIntFlow())->GetBinError(1);
-       flowValueRP[11] = (lyz2CommonHistRes->GetHistIntFlowRP())->GetBinContent(1);
-       flowErrorRP[11] = (lyz2CommonHistRes->GetHistIntFlowRP())->GetBinError(1);
-       flowValuePOI[11] = (lyz2CommonHistRes->GetHistIntFlowPOI())->GetBinContent(1);
-       flowErrorPOI[11] = (lyz2CommonHistRes->GetHistIntFlowPOI())->GetBinError(1);
+  // LYZ2PROD = Lee-Yang Zeros (2nd run, product) is used to get RP's and POI's integrated flow
+  TList *pListLYZ2PROD = NULL;
+  AliFlowCommonHist *lyz2prodCommonHist = NULL;
+  AliFlowCommonHistResults *lyz2prodCommonHistRes = NULL; 
+  if(fileLYZ2PROD) {
+    fileLYZ2PROD->GetObject("cobjLYZ2PROD",pListLYZ2PROD); 
+    if(pListLYZ2PROD) {
+      lyz2prodCommonHist = dynamic_cast<AliFlowCommonHist*> (pListLYZ2PROD->FindObject("AliFlowCommonHistLYZ2PROD"));
+      lyz2prodCommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListLYZ2PROD->FindObject("AliFlowCommonHistResultsLYZ2PROD"));
+      if(lyz2prodCommonHistRes) {
+       flowValueRP[binLYZ2PRODRP-1] = (lyz2prodCommonHistRes->GetHistIntFlowRP())->GetBinContent(1);
+       flowErrorRP[binLYZ2PRODRP-1] = (lyz2prodCommonHistRes->GetHistIntFlowRP())->GetBinError(1);
+       flowValuePOI[binLYZ2PRODPOI-1] = (lyz2prodCommonHistRes->GetHistIntFlowPOI())->GetBinContent(1);
+       flowErrorPOI[binLYZ2PRODPOI-1] = (lyz2prodCommonHistRes->GetHistIntFlowPOI())->GetBinError(1);
       }
     }
   }
   
-  //LYZEP = Lee-Yang Zeros Event Plane
+  // LYZEP = Lee-Yang Zeros Event Plane
   TList *pListLYZEP = NULL;
   AliFlowCommonHist *lyzepCommonHist = NULL;
   AliFlowCommonHistResults *lyzepCommonHistRes = NULL; 
@@ -322,17 +515,17 @@ void compareFlowResults(TString type="ESD")
       lyzepCommonHist = dynamic_cast<AliFlowCommonHist*> (pListLYZEP->FindObject("AliFlowCommonHistLYZEP"));
       lyzepCommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListLYZEP->FindObject("AliFlowCommonHistResultsLYZEP"));
       if(lyzepCommonHistRes) {
-       flowValue[12] = (lyzepCommonHistRes->GetHistIntFlow())->GetBinContent(1);
-       flowError[12] = (lyzepCommonHistRes->GetHistIntFlow())->GetBinError(1);
-       flowValueRP[12] = (lyzepCommonHistRes->GetHistIntFlowRP())->GetBinContent(1);
-       flowErrorRP[12] = (lyzepCommonHistRes->GetHistIntFlowRP())->GetBinError(1);
-       flowValuePOI[12] = (lyzepCommonHistRes->GetHistIntFlowPOI())->GetBinContent(1);
-       flowErrorPOI[12] = (lyzepCommonHistRes->GetHistIntFlowPOI())->GetBinError(1);
+       flowValue[binLYZEP-1] = (lyzepCommonHistRes->GetHistIntFlow())->GetBinContent(1);
+       flowError[binLYZEP-1] = (lyzepCommonHistRes->GetHistIntFlow())->GetBinError(1);
+       flowValueRP[binLYZEPRP-1] = (lyzepCommonHistRes->GetHistIntFlowRP())->GetBinContent(1);
+       flowErrorRP[binLYZEPRP-1] = (lyzepCommonHistRes->GetHistIntFlowRP())->GetBinError(1);
+       flowValuePOI[binLYZEPPOI-1] = (lyzepCommonHistRes->GetHistIntFlowPOI())->GetBinContent(1);
+       flowErrorPOI[binLYZEPPOI-1] = (lyzepCommonHistRes->GetHistIntFlowPOI())->GetBinError(1);
       }
     }
   }
  
-  //FQD = Fitting q-distribution
+  // FQD = Fitting q-distribution
   TList *pListFQD = NULL;
   AliFlowCommonHist *fqdCommonHist = NULL;
   AliFlowCommonHistResults *fqdCommonHistRes = NULL; 
@@ -342,17 +535,17 @@ void compareFlowResults(TString type="ESD")
       fqdCommonHist = dynamic_cast<AliFlowCommonHist*> (pListFQD->FindObject("AliFlowCommonHistFQD"));
       fqdCommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListFQD->FindObject("AliFlowCommonHistResultsFQD"));
       if(fqdCommonHistRes) {
-       flowValue[10] = (fqdCommonHistRes->GetHistIntFlow())->GetBinContent(1);
-       flowError[10] = (fqdCommonHistRes->GetHistIntFlow())->GetBinError(1);
-       flowValueRP[10] = (fqdCommonHistRes->GetHistIntFlowRP())->GetBinContent(1);
-       flowErrorRP[10] = (fqdCommonHistRes->GetHistIntFlowRP())->GetBinError(1);
-       flowValuePOI[10] = (fqdCommonHistRes->GetHistIntFlowPOI())->GetBinContent(1);
-       flowErrorPOI[10] = (fqdCommonHistRes->GetHistIntFlowPOI())->GetBinError(1);
+       flowValue[binFQD-1] = (fqdCommonHistRes->GetHistIntFlow())->GetBinContent(1);
+       flowError[binFQD-1] = (fqdCommonHistRes->GetHistIntFlow())->GetBinError(1);
+       //flowValueRP[binFQDRP-1] = (fqdCommonHistRes->GetHistIntFlowRP())->GetBinContent(1);
+       //flowErrorRP[binFQDRP-1] = (fqdCommonHistRes->GetHistIntFlowRP())->GetBinError(1);
+       //flowValuePOI[binFQDPOI-1] = (fqdCommonHistRes->GetHistIntFlowPOI())->GetBinContent(1);
+       //flowErrorPOI[binFQDPOI-1] = (fqdCommonHistRes->GetHistIntFlowPOI())->GetBinError(1);
       }
     }
   }
  
-  //GFC = Generating Function Cumulants
+  // GFC = Generating Function Cumulants
   TList *pListGFC = NULL;
   AliFlowCommonHist *gfcCommonHist = NULL;
   AliFlowCommonHistResults *gfcCommonHistRes2 = NULL; 
@@ -365,39 +558,39 @@ void compareFlowResults(TString type="ESD")
       gfcCommonHist = dynamic_cast<AliFlowCommonHist*> (pListGFC->FindObject("AliFlowCommonHistGFC"));
       gfcCommonHistRes2 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults2ndOrderGFC"));
       if(gfcCommonHistRes2) {
-       flowValue[2] = (gfcCommonHistRes2->GetHistIntFlow())->GetBinContent(1);
-       flowError[2] = (gfcCommonHistRes2->GetHistIntFlow())->GetBinError(1);
-       flowValueRP[2] = (gfcCommonHistRes2->GetHistIntFlowRP())->GetBinContent(1);
-       flowErrorRP[2] = (gfcCommonHistRes2->GetHistIntFlowRP())->GetBinError(1);
-       flowValuePOI[2] = (gfcCommonHistRes2->GetHistIntFlowPOI())->GetBinContent(1);
-       flowErrorPOI[2] = (gfcCommonHistRes2->GetHistIntFlowPOI())->GetBinError(1);
+       flowValue[binGFC2-1] = (gfcCommonHistRes2->GetHistIntFlow())->GetBinContent(1);
+       flowError[binGFC2-1] = (gfcCommonHistRes2->GetHistIntFlow())->GetBinError(1);
+       flowValueRP[binGFC2RP-1] = (gfcCommonHistRes2->GetHistIntFlowRP())->GetBinContent(1);
+       flowErrorRP[binGFC2RP-1] = (gfcCommonHistRes2->GetHistIntFlowRP())->GetBinError(1);
+       flowValuePOI[binGFC2POI-1] = (gfcCommonHistRes2->GetHistIntFlowPOI())->GetBinContent(1);
+       flowErrorPOI[binGFC2POI-1] = (gfcCommonHistRes2->GetHistIntFlowPOI())->GetBinError(1);
       }
       gfcCommonHistRes4 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults4thOrderGFC"));
       if(gfcCommonHistRes4) {
-       flowValue[4] = (gfcCommonHistRes4->GetHistIntFlow())->GetBinContent(1);
-       flowError[4] = (gfcCommonHistRes4->GetHistIntFlow())->GetBinError(1);
-       flowValueRP[4] = (gfcCommonHistRes4->GetHistIntFlowRP())->GetBinContent(1);
-       flowErrorRP[4] = (gfcCommonHistRes4->GetHistIntFlowRP())->GetBinError(1);
-       flowValuePOI[4] = (gfcCommonHistRes4->GetHistIntFlowPOI())->GetBinContent(1);
-       flowErrorPOI[4] = (gfcCommonHistRes4->GetHistIntFlowPOI())->GetBinError(1);
+       flowValue[binGFC4-1] = (gfcCommonHistRes4->GetHistIntFlow())->GetBinContent(1);
+       flowError[binGFC4-1] = (gfcCommonHistRes4->GetHistIntFlow())->GetBinError(1);
+       flowValueRP[binGFC4RP-1] = (gfcCommonHistRes4->GetHistIntFlowRP())->GetBinContent(1);
+       flowErrorRP[binGFC4RP-1] = (gfcCommonHistRes4->GetHistIntFlowRP())->GetBinError(1);
+       flowValuePOI[binGFC4POI-1] = (gfcCommonHistRes4->GetHistIntFlowPOI())->GetBinContent(1);
+       flowErrorPOI[binGFC4POI-1] = (gfcCommonHistRes4->GetHistIntFlowPOI())->GetBinError(1);
       }
       gfcCommonHistRes6 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults6thOrderGFC"));
       if(gfcCommonHistRes6) {
-       flowValue[6] = (gfcCommonHistRes6->GetHistIntFlow())->GetBinContent(1);
-       flowError[6] = (gfcCommonHistRes6->GetHistIntFlow())->GetBinError(1);
-       flowValueRP[6] = (gfcCommonHistRes6->GetHistIntFlowRP())->GetBinContent(1);
-       flowErrorRP[6] = (gfcCommonHistRes6->GetHistIntFlowRP())->GetBinError(1);
-       flowValuePOI[6] = (gfcCommonHistRes6->GetHistIntFlowPOI())->GetBinContent(1);
-       flowErrorPOI[6] = (gfcCommonHistRes6->GetHistIntFlowPOI())->GetBinError(1);
+       flowValue[binGFC6-1] = (gfcCommonHistRes6->GetHistIntFlow())->GetBinContent(1);
+       flowError[binGFC6-1] = (gfcCommonHistRes6->GetHistIntFlow())->GetBinError(1);
+       flowValueRP[binGFC6RP-1] = (gfcCommonHistRes6->GetHistIntFlowRP())->GetBinContent(1);
+       flowErrorRP[binGFC6RP-1] = (gfcCommonHistRes6->GetHistIntFlowRP())->GetBinError(1);
+       flowValuePOI[binGFC6POI-1] = (gfcCommonHistRes6->GetHistIntFlowPOI())->GetBinContent(1);
+       flowErrorPOI[binGFC6POI-1] = (gfcCommonHistRes6->GetHistIntFlowPOI())->GetBinError(1);
       }
       gfcCommonHistRes8 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults8thOrderGFC"));
       if(gfcCommonHistRes8)  {
-       flowValue[8] = (gfcCommonHistRes8->GetHistIntFlow())->GetBinContent(1);
-       flowError[8] = (gfcCommonHistRes8->GetHistIntFlow())->GetBinError(1);
-       flowValueRP[8] = (gfcCommonHistRes8->GetHistIntFlowRP())->GetBinContent(1);
-       flowErrorRP[8] = (gfcCommonHistRes8->GetHistIntFlowRP())->GetBinError(1);
-       flowValuePOI[8] = (gfcCommonHistRes8->GetHistIntFlowPOI())->GetBinContent(1);
-       flowErrorPOI[8] = (gfcCommonHistRes8->GetHistIntFlowPOI())->GetBinError(1);
+       flowValue[binGFC8-1] = (gfcCommonHistRes8->GetHistIntFlow())->GetBinContent(1);
+       flowError[binGFC8-1] = (gfcCommonHistRes8->GetHistIntFlow())->GetBinError(1);
+       flowValueRP[binGFC8RP-1] = (gfcCommonHistRes8->GetHistIntFlowRP())->GetBinContent(1);
+       flowErrorRP[binGFC8RP-1] = (gfcCommonHistRes8->GetHistIntFlowRP())->GetBinError(1);
+       flowValuePOI[binGFC8POI-1] = (gfcCommonHistRes8->GetHistIntFlowPOI())->GetBinContent(1);
+       flowErrorPOI[binGFC8POI-1] = (gfcCommonHistRes8->GetHistIntFlowPOI())->GetBinError(1);
       }
     }
   }
@@ -419,49 +612,49 @@ void compareFlowResults(TString type="ESD")
       qcCommonHist2 = dynamic_cast<AliFlowCommonHist*> (pListQC->FindObject("AliFlowCommonHist2ndOrderQC"));
       qcCommonHistRes2 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults2ndOrderQC"));
       if(qcCommonHistRes2)  {
-       flowValue[3] = (qcCommonHistRes2->GetHistIntFlow())->GetBinContent(1);
-       //flowError[3] = (qcCommonHistRes2->GetHistIntFlow())->GetBinError(1);
-       flowValueRP[3] = (qcCommonHistRes2->GetHistIntFlowRP())->GetBinContent(1);
-       //flowErrorRP[3] = (qcCommonHistRes2->GetHistIntFlowRP())->GetBinError(1);
-       flowValuePOI[3] = (qcCommonHistRes2->GetHistIntFlowPOI())->GetBinContent(1);
-       //flowErrorPOI[3] = (qcCommonHistRes2->GetHistIntFlowPOI())->GetBinError(1);
+       flowValue[binQC2-1] = (qcCommonHistRes2->GetHistIntFlow())->GetBinContent(1);
+       flowError[binQC2-1] = (qcCommonHistRes2->GetHistIntFlow())->GetBinError(1);
+       flowValueRP[binQC2RP-1] = (qcCommonHistRes2->GetHistIntFlowRP())->GetBinContent(1);
+       //flowErrorRP[binQC2RP-1] = (qcCommonHistRes2->GetHistIntFlowRP())->GetBinError(1);
+       flowValuePOI[binQC2POI-1] = (qcCommonHistRes2->GetHistIntFlowPOI())->GetBinContent(1);
+       //flowErrorPOI[binQC2POI-1] = (qcCommonHistRes2->GetHistIntFlowPOI())->GetBinError(1);
       }
       qcCommonHist4 = dynamic_cast<AliFlowCommonHist*> (pListQC->FindObject("AliFlowCommonHist4thOrderQC"));
       qcCommonHistRes4 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults4thOrderQC"));
       if(qcCommonHistRes4) {
-       flowValue[5] = (qcCommonHistRes4->GetHistIntFlow())->GetBinContent(1);
-       //flowError[5] = (qcCommonHistRes4->GetHistIntFlow())->GetBinError(1);
-       flowValueRP[5] = (qcCommonHistRes4->GetHistIntFlowRP())->GetBinContent(1);
-       //flowErrorRP[5] = (qcCommonHistRes4->GetHistIntFlowRP())->GetBinError(1);
-       flowValuePOI[5] = (qcCommonHistRes4->GetHistIntFlowPOI())->GetBinContent(1);
-       //flowErrorPOI[5] = (qcCommonHistRes4->GetHistIntFlowPOI())->GetBinError(1);
+       flowValue[binQC4-1] = (qcCommonHistRes4->GetHistIntFlow())->GetBinContent(1);
+       //flowError[binQC4-1] = (qcCommonHistRes4->GetHistIntFlow())->GetBinError(1);
+       flowValueRP[binQC4RP-1] = (qcCommonHistRes4->GetHistIntFlowRP())->GetBinContent(1);
+       //flowErrorRP[binQC4RP-1] = (qcCommonHistRes4->GetHistIntFlowRP())->GetBinError(1);
+       flowValuePOI[binQC4POI-1] = (qcCommonHistRes4->GetHistIntFlowPOI())->GetBinContent(1);
+       //flowErrorPOI[binQC4POI-1] = (qcCommonHistRes4->GetHistIntFlowPOI())->GetBinError(1);
       }
       qcCommonHist6 = dynamic_cast<AliFlowCommonHist*> (pListQC->FindObject("AliFlowCommonHist6thOrderQC"));
       qcCommonHistRes6 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults6thOrderQC"));
       if(qcCommonHistRes6) {
-       flowValue[7] = (qcCommonHistRes6->GetHistIntFlow())->GetBinContent(1);
-       //flowError[7] = (qcCommonHistRes6->GetHistIntFlow())->GetBinError(1);
-       flowValueRP[7] = (qcCommonHistRes6->GetHistIntFlowRP())->GetBinContent(1);
-       //flowErrorRP[7] = (qcCommonHistRes6->GetHistIntFlowRP())->GetBinError(1);
-       flowValuePOI[7] = (qcCommonHistRes6->GetHistIntFlowPOI())->GetBinContent(1);
-       //flowErrorPOI[7] = (qcCommonHistRes6->GetHistIntFlowPOI())->GetBinError(1);
+       flowValue[binQC6-1] = (qcCommonHistRes6->GetHistIntFlow())->GetBinContent(1);
+       //flowError[binQC6-1] = (qcCommonHistRes6->GetHistIntFlow())->GetBinError(1);
+       flowValueRP[binQC6RP-1] = (qcCommonHistRes6->GetHistIntFlowRP())->GetBinContent(1);
+       //flowErrorRP[binQC6RP-1] = (qcCommonHistRes6->GetHistIntFlowRP())->GetBinError(1);
+       flowValuePOI[binQC6POI-1] = (qcCommonHistRes6->GetHistIntFlowPOI())->GetBinContent(1);
+       //flowErrorPOI[binQC6POI-1] = (qcCommonHistRes6->GetHistIntFlowPOI())->GetBinError(1);
       }
       qcCommonHist8 = dynamic_cast<AliFlowCommonHist*> (pListQC->FindObject("AliFlowCommonHist8thOrderQC"));
       qcCommonHistRes8 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults8thOrderQC"));
       if(qcCommonHistRes8)  {
-       flowValue[9] = (qcCommonHistRes8->GetHistIntFlow())->GetBinContent(1);
-       //flowError[9] = (qcCommonHistRes8->GetHistIntFlow())->GetBinError(1);
-       flowValueRP[9] = (qcCommonHistRes8->GetHistIntFlowRP())->GetBinContent(1);
-       //flowErrorRP[9] = (qcCommonHistRes8->GetHistIntFlowRP())->GetBinError(1);
-       flowValuePOI[9] = (qcCommonHistRes8->GetHistIntFlowPOI())->GetBinContent(1);
-       //flowErrorPOI[9] = (qcCommonHistRes8->GetHistIntFlowPOI())->GetBinError(1);
+       flowValue[binQC8-1] = (qcCommonHistRes8->GetHistIntFlow())->GetBinContent(1);
+       //flowError[binQC8-1] = (qcCommonHistRes8->GetHistIntFlow())->GetBinError(1);
+       flowValueRP[binQC8RP-1] = (qcCommonHistRes8->GetHistIntFlowRP())->GetBinContent(1);
+       //flowErrorRP[binQC8RP-1] = (qcCommonHistRes8->GetHistIntFlowRP())->GetBinError(1);
+       flowValuePOI[binQC8POI-1] = (qcCommonHistRes8->GetHistIntFlowPOI())->GetBinContent(1);
+       //flowErrorPOI[binQC8POI-1] = (qcCommonHistRes8->GetHistIntFlowPOI())->GetBinError(1);
       }
     }
   }        
   
-  //no-name:
-  Double_t dMax=flowValue[0]+flowError[0];
-  Double_t dMin=flowValue[0]-flowError[0];
+  // ranges on y-axis for 'no-name' plot:
+  Double_t dMax=flowValue[binMC-1]+flowError[binMC-1];
+  Double_t dMin=flowValue[binMC-1]-flowError[binMC-1];
   
   for(Int_t i=1;i<nMethods;i++) {
     if(!(flowValue[i]==0. && flowError[i]==0.)) {
@@ -470,9 +663,9 @@ void compareFlowResults(TString type="ESD")
     } 
   }  
   
-  //RP:
-  Double_t dMaxRP=flowValueRP[0]+flowErrorRP[0];
-  Double_t dMinRP=flowValueRP[0]-flowErrorRP[0];
+  // ranges on y-axis for RP plot:
+  Double_t dMaxRP=flowValueRP[binMCRP-1]+flowErrorRP[binMCRP-1];
+  Double_t dMinRP=flowValueRP[binMCRP-1]-flowErrorRP[binMCRP-1];
   
   for(Int_t i=1;i<nMethods;i++) {
     if(!(flowValueRP[i]==0. && flowErrorRP[i]==0.)) {
@@ -481,9 +674,9 @@ void compareFlowResults(TString type="ESD")
     } 
   }  
 
-  //POI:
-  Double_t dMaxPOI=flowValuePOI[0]+flowErrorPOI[0];
-  Double_t dMinPOI=flowValuePOI[0]-flowErrorPOI[0];
+  // ranges on y-axis for POI plot:
+  Double_t dMaxPOI=flowValuePOI[binMCPOI-1]+flowErrorPOI[binMCPOI-1];
+  Double_t dMinPOI=flowValuePOI[binMCPOI-1]-flowErrorPOI[binMCPOI-1];
   
   for(Int_t i=1;i<nMethods;i++) {
     if(!(flowValuePOI[i]==0. && flowErrorPOI[i]==0.)) {
@@ -492,43 +685,87 @@ void compareFlowResults(TString type="ESD")
     } 
   }  
  
-  //no-name:
+  // no-name:
   TGraph* flowResults = new TGraphErrors(nMethods, x, flowValue, xError, flowError);
   flowResults->SetMarkerStyle(markerStyle);
   flowResults->SetMarkerColor(markerColor);
   
-  //RP:
+  // RP:
   TGraph* flowResultsRP = new TGraphErrors(nMethods, x, flowValueRP, xError, flowErrorRP); 
-  flowResultsRP->SetMarkerStyle(markerStyle);
-  flowResultsRP->SetMarkerColor(markerColor);
+  flowResultsRP->SetMarkerStyle(markerStyleRP);
+  flowResultsRP->SetMarkerColor(markerColorRP);
   
-  //POI:
+  // POI:
   TGraph* flowResultsPOI = new TGraphErrors(nMethods, x, flowValuePOI, xError, flowErrorPOI);
-  flowResultsPOI->SetMarkerStyle(markerStyle);
-  flowResultsPOI->SetMarkerColor(markerColor);
-  
+  flowResultsPOI->SetMarkerStyle(markerStylePOI);
+  flowResultsPOI->SetMarkerColor(markerColorPOI);
+  
+  // for plot |v{MC}-v{method}/v{MC}|
+  // no-name, RP and POI
+  Double_t flowRelativeToMC[nMethods] = {0.};
+  Double_t flowRelativeToMCError[nMethods] = {0.}; 
+  Double_t flowRelativeToMCRP[nMethods] = {0.};
+  Double_t flowRelativeToMCErrorRP[nMethods] = {0.}; 
+  Double_t flowRelativeToMCPOI[nMethods] = {0.};
+  Double_t flowRelativeToMCErrorPOI[nMethods] = {0.}; 
+  flowRelativeToMC[0] = 0.; // MC relative to itself (to be improved)
+  flowRelativeToMCRP[0] = 0.; // MC relative to itself (to be improved)
+  flowRelativeToMCPOI[0] = 0.; // MC relative to itself (to be improved)
+  for(Int_t i=1;i<nMethods;i++) 
+  {
+   if(flowValue[0] != 0)
+   {
+    if(flowValue[i] != 0) flowRelativeToMC[i] = (flowValue[i]-flowValue[0])/(flowValue[0]);
+    if(flowError[i] != 0) flowRelativeToMCError[i] = flowError[i]/flowValue[0];
+   }
+   if(flowValueRP[0] != 0)
+   {
+    if(flowValueRP[i] != 0) flowRelativeToMCRP[i] = (flowValueRP[i]-flowValueRP[0])/(flowValueRP[0]);
+    if(flowErrorRP[i] != 0) flowRelativeToMCErrorRP[i] = flowErrorRP[i]/flowValueRP[0];
+   }
+   if(flowValuePOI[0] != 0)
+   {
+    if(flowValuePOI[i] != 0) flowRelativeToMCPOI[i] = (flowValuePOI[i]-flowValuePOI[0])/(flowValuePOI[0]);
+    if(flowErrorPOI[i] != 0) flowRelativeToMCErrorPOI[i] = flowErrorPOI[i]/flowValuePOI[0];
+   }
+  } // for(Int_t i=1;i<nMethods;i++) 
+  
+  // integrated flow (no-name) relative to MC:
+  TGraph* flowResultsRelativeToMC = new TGraphErrors(nMethods, x, flowRelativeToMC, xError, flowRelativeToMCError);
+  flowResultsRelativeToMC->SetMarkerStyle(markerStyle);
+  flowResultsRelativeToMC->SetMarkerColor(markerColor);
+  
+  // integrated flow (RP) relative to MC:
+  TGraph* flowResultsRelativeToMCRP = new TGraphErrors(nMethods, x, flowRelativeToMCRP, xError, flowRelativeToMCErrorRP);
+  flowResultsRelativeToMCRP->SetMarkerStyle(markerStyleRP);
+  flowResultsRelativeToMCRP->SetMarkerColor(markerColorRP);
+  // integrated flow (POI) relative to MC:
+  TGraph* flowResultsRelativeToMCPOI = new TGraphErrors(nMethods, x, flowRelativeToMCPOI, xError, flowRelativeToMCErrorPOI);
+  flowResultsRelativeToMCPOI->SetMarkerStyle(markerStylePOI);
+  flowResultsRelativeToMCPOI->SetMarkerColor(markerColorPOI);
   //-----------------------------------------------------------------------------------
   
   //----------------------------------------------------------------------------------
-  //cosmetics: mesh for MC error bands (integrated flow)
+  // cosmetics: mesh for MC error bands (integrated flow)
   TGraph* pMesh = NULL;
   TGraph* pMeshRP = NULL;
   TGraph* pMeshPOI = NULL;
   
   if(intFlowAll && mcepCommonHistRes) {
     Int_t nPts       = nMethods;
-    Double_t valueMC = flowValue[0];
-    Double_t errorMC = flowError[0]; 
-    Double_t valueMCRP = flowValueRP[0];
-    Double_t errorMCRP = flowErrorRP[0]; 
-    Double_t valueMCPOI = flowValuePOI[0];
-    Double_t errorMCPOI = flowErrorPOI[0]; 
+    Double_t valueMC = flowValue[binMC-1];
+    Double_t errorMC = flowError[binMC-1]; 
+    Double_t valueMCRP = flowValueRP[binMCRP-1];
+    Double_t errorMCRP = flowErrorRP[binMCRP-1]; 
+    Double_t valueMCPOI = flowValuePOI[binMCPOI-1];
+    Double_t errorMCPOI = flowErrorPOI[binMCPOI-1]; 
     
     pMesh = new TGraph(nPts);
     pMeshRP = new TGraph(nPts);
     pMeshPOI = new TGraph(nPts);
     
-    //no-name:
+    // no-name:
     pMesh->SetPoint(1,0,valueMC+errorMC);
     pMesh->SetPoint(2,nPts+1,valueMC+errorMC);
     pMesh->SetPoint(3,nPts+1,valueMC-errorMC);
@@ -537,23 +774,23 @@ void compareFlowResults(TString type="ESD")
     pMesh->SetFillStyle(meshStyle);
     pMesh->SetFillColor(meshColor);
      
-    //RP:
+    // RP:
     pMeshRP->SetPoint(1,0,valueMCRP+errorMCRP);
     pMeshRP->SetPoint(2,nPts+1,valueMCRP+errorMCRP);
     pMeshRP->SetPoint(3,nPts+1,valueMCRP-errorMCRP);
     pMeshRP->SetPoint(4,0,valueMCRP-errorMCRP);
     pMeshRP->SetPoint(5,0,valueMCRP+errorMCRP);   
-    pMeshRP->SetFillStyle(meshStyle);
-    pMeshRP->SetFillColor(meshColor);
+    pMeshRP->SetFillStyle(meshStyleRP);
+    pMeshRP->SetFillColor(meshColorRP);
     
-    //POI:
+    // POI:
     pMeshPOI->SetPoint(1,0,valueMCPOI+errorMCPOI);
     pMeshPOI->SetPoint(2,nPts+1,valueMCPOI+errorMCPOI);
     pMeshPOI->SetPoint(3,nPts+1,valueMCPOI-errorMCPOI);
     pMeshPOI->SetPoint(4,0,valueMCPOI-errorMCPOI);
     pMeshPOI->SetPoint(5,0,valueMCPOI+errorMCPOI);    
-    pMeshPOI->SetFillStyle(meshStyle);
-    pMeshPOI->SetFillColor(meshColor);     
+    pMeshPOI->SetFillStyle(meshStylePOI);
+    pMeshPOI->SetFillColor(meshColorPOI);     
   }
   //---------------------------------------------------------------------------------- 
  
@@ -573,58 +810,61 @@ void compareFlowResults(TString type="ESD")
   textDefault->AddText(entryDefaultAnd->Data());
   textDefault->AddText(entryDefaultNumOfEvts->Data());
   
-  //results (no-name):
+  // results (no-name):
   TPaveText *textResults = new TPaveText(0.05,0.12,0.95,0.70,"NDC");
   textResults->SetTextFont(72);
   textResults->SetTextSize(0.06);
   
-  //results (RP):
+  // results (RP):
   TPaveText *textResultsRP = new TPaveText(0.05,0.12,0.95,0.70,"NDC");
   textResultsRP->SetTextFont(72);
   textResultsRP->SetTextSize(0.06);
   
-  //results (POI):
+  // results (POI):
   TPaveText *textResultsPOI = new TPaveText(0.05,0.12,0.95,0.70,"NDC");
   textResultsPOI->SetTextFont(72);
   textResultsPOI->SetTextSize(0.06);
   
-  //no-name:              
-  TString *entryMC    = new TString("MC ...... ");
-  TString *entrySP    = new TString("SP ...... "); 
-  TString *entryGFC   = new TString("GFC ..... "); 
-  TString *entryQC2   = new TString("QC{2} ... ");
-  TString *entryQC4   = new TString("QC{4} ... ");
-  TString *entryQC6   = new TString("QC{6} ... ");
-  TString *entryQC8   = new TString("QC{8} ... ");
-  TString *entryFQD   = new TString("FQD ..... "); 
-  TString *entryLYZ1  = new TString("LYZ ..... "); 
-  TString *entryLYZEP = new TString("LYZEP ... "); 
-  
-  //RP: 
-  TString *entryMCRP    = new TString("MC ...... ");
-  TString *entrySPRP    = new TString("SP ...... ");
-  TString *entryGFCRP   = new TString("GFC ..... "); 
-  TString *entryQC2RP   = new TString("QC{2} ... ");
-  TString *entryQC4RP   = new TString("QC{4} ... ");
-  TString *entryQC6RP   = new TString("QC{6} ... ");
-  TString *entryQC8RP   = new TString("QC{8} ... ");
-  TString *entryFQDRP   = new TString("FQD ..... "); 
-  TString *entryLYZ1RP  = new TString("LYZ ..... "); 
-  TString *entryLYZEPRP = new TString("LYZEP ... "); 
-
-  //POI: 
-  TString *entryMCPOI    = new TString("MC ...... ");
-  TString *entrySPPOI    = new TString("SP ...... ");
-  TString *entryGFCPOI   = new TString("GFC ..... "); 
-  TString *entryQC2POI   = new TString("QC{2} ... ");
-  TString *entryQC4POI   = new TString("QC{4} ... ");
-  TString *entryQC6POI   = new TString("QC{6} ... ");
-  TString *entryQC8POI   = new TString("QC{8} ... ");
-  TString *entryFQDPOI   = new TString("FQD ..... "); 
-  TString *entryLYZ1POI  = new TString("LYZ ..... "); 
-  TString *entryLYZEPPOI = new TString("LYZEP ... "); 
-  
-  //no-name:
+  // no-name:              
+  TString *entryMC       = new TString("MC ........ ");
+  TString *entrySP       = new TString("SP ........ "); 
+  TString *entryGFC      = new TString("GFC ....... "); 
+  TString *entryQC2      = new TString("QC{2} ..... ");
+  TString *entryQC4      = new TString("QC{4} ..... ");
+  TString *entryQC6      = new TString("QC{6} ..... ");
+  TString *entryQC8      = new TString("QC{8} ..... ");
+  TString *entryFQD      = new TString("FQD ....... "); 
+  TString *entryLYZ1SUM  = new TString("LYZ{sum} .. "); 
+  TString *entryLYZ1PROD = new TString("LYZ{prod} . "); 
+  TString *entryLYZEP    = new TString("LYZEP ..... "); 
+  
+  // RP: 
+  TString *entryMCRP       = new TString("MC ........ ");
+  TString *entrySPRP       = new TString("SP ........ ");
+  TString *entryGFCRP      = new TString("GFC ....... "); 
+  TString *entryQC2RP      = new TString("QC{2} ..... ");
+  TString *entryQC4RP      = new TString("QC{4} ..... ");
+  TString *entryQC6RP      = new TString("QC{6} ..... ");
+  TString *entryQC8RP      = new TString("QC{8} ..... ");
+  TString *entryFQDRP      = new TString("FQD ....... "); 
+  TString *entryLYZ1SUMRP  = new TString("LYZ{sum} .. "); 
+  TString *entryLYZ1PRODRP = new TString("LYZ{prod} . ");
+  TString *entryLYZEPRP    = new TString("LYZEP ..... "); 
+  
+  // POI: 
+  TString *entryMCPOI       = new TString("MC ........ ");
+  TString *entrySPPOI       = new TString("SP ........ ");
+  TString *entryGFCPOI      = new TString("GFC ....... "); 
+  TString *entryQC2POI      = new TString("QC{2} ..... ");
+  TString *entryQC4POI      = new TString("QC{4} ..... ");
+  TString *entryQC6POI      = new TString("QC{6} ..... ");
+  TString *entryQC8POI      = new TString("QC{8} ..... ");
+  TString *entryFQDPOI      = new TString("FQD ....... "); 
+  TString *entryLYZ1SUMPOI  = new TString("LYZ{sum} .. "); 
+  TString *entryLYZ1PRODPOI = new TString("LYZ{prod} . "); 
+  TString *entryLYZEPPOI    = new TString("LYZEP ..... "); 
+  
+  // no-name:
   Double_t avMultMC=0.;
   Long_t nEvtsMC=0;
   Double_t avMultSP=0.;
@@ -635,12 +875,14 @@ void compareFlowResults(TString type="ESD")
   Long_t nEvtsQC2=0, nEvtsQC4=0, nEvtsQC6=0, nEvtsQC8=0;
   Double_t avMultFQD=0.;
   Long_t nEvtsFQD=0;
-  Double_t avMultLYZ1=0.;
-  Long_t nEvtsLYZ1=0;
+  Double_t avMultLYZ1SUM=0.;
+  Long_t nEvtsLYZ1SUM=0;
+  Double_t avMultLYZ1PROD=0.;
+  Long_t nEvtsLYZ1PROD=0;
   Double_t avMultLYZEP=0.;
   Long_t nEvtsLYZEP=0;
   
-  //RP:
+  // RP:
   Double_t avMultMCRP=0.;
   Long_t nEvtsMCRP=0;
   Double_t avMultSPRP=0.;
@@ -651,12 +893,14 @@ void compareFlowResults(TString type="ESD")
   Long_t nEvtsQC2RP=0, nEvtsQC4RP=0, nEvtsQC6RP=0, nEvtsQC8RP=0;
   Double_t avMultFQDRP=0.;
   Long_t nEvtsFQDRP=0;
-  Double_t avMultLYZ1RP=0.;
-  Long_t nEvtsLYZ1RP=0;
+  Double_t avMultLYZ1SUMRP=0.;
+  Long_t nEvtsLYZ1SUMRP=0;
+  Double_t avMultLYZ1PRODRP=0.;
+  Long_t nEvtsLYZ1PRODRP=0;
   Double_t avMultLYZEPRP=0.;
   Long_t nEvtsLYZEPRP=0;
   
-  //POI:
+  // POI:
   Double_t avMultMCPOI=0.;
   Long_t nEvtsMCPOI=0;
   Double_t avMultSPPOI=0.;
@@ -667,19 +911,21 @@ void compareFlowResults(TString type="ESD")
   Long_t nEvtsQC2POI=0, nEvtsQC4POI=0, nEvtsQC6POI=0, nEvtsQC8POI=0;
   Double_t avMultFQDPOI=0.;
   Long_t nEvtsFQDPOI=0;
-  Double_t avMultLYZ1POI=0.;
-  Long_t nEvtsLYZ1POI=0;
+  Double_t avMultLYZ1SUMPOI=0.;
+  Long_t nEvtsLYZ1SUMPOI=0;
+  Double_t avMultLYZ1PRODPOI=0.;
+  Long_t nEvtsLYZ1PRODPOI=0;
   Double_t avMultLYZEPPOI=0.;
   Long_t nEvtsLYZEPPOI=0;
   
-  //MC:  
+  // MC:  
   if(mcepCommonHist) {
-    avMultMC = (mcepCommonHist->GetHistMultInt())->GetMean();
-    nEvtsMC  = (mcepCommonHist->GetHistMultInt())->GetEntries();
-    avMultMCRP = (mcepCommonHist->GetHistMultInt())->GetMean();
-    nEvtsMCRP  = (mcepCommonHist->GetHistMultInt())->GetEntries();
-    avMultMCPOI = (mcepCommonHist->GetHistMultDiff())->GetMean();
-    nEvtsMCPOI  = (mcepCommonHist->GetHistMultDiff())->GetEntries();
+    avMultMC = (mcepCommonHist->GetHistMultRP())->GetMean();
+    nEvtsMC  = (mcepCommonHist->GetHistMultRP())->GetEntries();
+    avMultMCRP = (mcepCommonHist->GetHistMultRP())->GetMean();
+    nEvtsMCRP  = (mcepCommonHist->GetHistMultRP())->GetEntries();
+    avMultMCPOI = (mcepCommonHist->GetHistMultPOI())->GetMean();
+    nEvtsMCPOI  = (mcepCommonHist->GetHistMultPOI())->GetEntries();
   }
   
   if(entryMC) {   
@@ -703,14 +949,14 @@ void compareFlowResults(TString type="ESD")
    (*entryMCPOI)+=(Long_t)nEvtsMCPOI;
   }
   
-  //SP:  
+  // SP:  
   if(spCommonHist) {
-    avMultSP = (spCommonHist->GetHistMultInt())->GetMean();
-    nEvtsSP  = (spCommonHist->GetHistMultInt())->GetEntries();
-    avMultSPRP = (spCommonHist->GetHistMultInt())->GetMean();
-    nEvtsSPRP  = (spCommonHist->GetHistMultInt())->GetEntries();
-    avMultSPPOI = (spCommonHist->GetHistMultDiff())->GetMean();
-    nEvtsSPPOI  = (spCommonHist->GetHistMultDiff())->GetEntries();
+    avMultSP = (spCommonHist->GetHistMultRP())->GetMean();
+    nEvtsSP  = (spCommonHist->GetHistMultRP())->GetEntries();
+    avMultSPRP = (spCommonHist->GetHistMultRP())->GetMean();
+    nEvtsSPRP  = (spCommonHist->GetHistMultRP())->GetEntries();
+    avMultSPPOI = (spCommonHist->GetHistMultPOI())->GetMean();
+    nEvtsSPPOI  = (spCommonHist->GetHistMultPOI())->GetEntries();
   }
   
   if(entrySP) {   
@@ -734,14 +980,14 @@ void compareFlowResults(TString type="ESD")
    (*entrySPPOI)+=(Long_t)nEvtsSPPOI;
   }
   
- //GFC:
+ // GFC:
  if(gfcCommonHist) {
-   avMultGFC = (gfcCommonHist->GetHistMultInt())->GetMean();
-   nEvtsGFC  = (gfcCommonHist->GetHistMultInt())->GetEntries();
-   avMultGFCRP = (gfcCommonHist->GetHistMultInt())->GetMean();
-   nEvtsGFCRP  = (gfcCommonHist->GetHistMultInt())->GetEntries();
-   avMultGFCPOI = (gfcCommonHist->GetHistMultDiff())->GetMean();
-   nEvtsGFCPOI  = (gfcCommonHist->GetHistMultDiff())->GetEntries();
+   avMultGFC = (gfcCommonHist->GetHistMultRP())->GetMean();
+   nEvtsGFC  = (gfcCommonHist->GetHistMultRP())->GetEntries();
+   avMultGFCRP = (gfcCommonHist->GetHistMultRP())->GetMean();
+   nEvtsGFCRP  = (gfcCommonHist->GetHistMultRP())->GetEntries();
+   avMultGFCPOI = (gfcCommonHist->GetHistMultPOI())->GetMean();
+   nEvtsGFCPOI  = (gfcCommonHist->GetHistMultPOI())->GetEntries();
  }
  
  if(entryGFC) { 
@@ -764,14 +1010,14 @@ void compareFlowResults(TString type="ESD")
    (*entryGFCPOI)+=(Long_t)nEvtsGFCPOI;
  }
  
- //QC:
+ // QC:
  if(qcCommonHist2) {
-   avMultQC2 = (qcCommonHist2->GetHistMultInt())->GetMean();
-   nEvtsQC2  = (qcCommonHist2->GetHistMultInt())->GetEntries();
-   avMultQC2RP = (qcCommonHist2->GetHistMultInt())->GetMean();
-   nEvtsQC2RP  = (qcCommonHist2->GetHistMultInt())->GetEntries();
-   avMultQC2POI = (qcCommonHist2->GetHistMultDiff())->GetMean();
-   nEvtsQC2POI  = (qcCommonHist2->GetHistMultDiff())->GetEntries();
+   avMultQC2 = (qcCommonHist2->GetHistMultRP())->GetMean();
+   nEvtsQC2  = (qcCommonHist2->GetHistMultRP())->GetEntries();
+   avMultQC2RP = (qcCommonHist2->GetHistMultRP())->GetMean();
+   nEvtsQC2RP  = (qcCommonHist2->GetHistMultRP())->GetEntries();
+   avMultQC2POI = (qcCommonHist2->GetHistMultPOI())->GetMean();
+   nEvtsQC2POI  = (qcCommonHist2->GetHistMultPOI())->GetEntries();
  }
  
  if(entryQC2)
@@ -800,12 +1046,12 @@ void compareFlowResults(TString type="ESD")
 
  if(qcCommonHist4)
  {
-  avMultQC4 = (qcCommonHist4->GetHistMultInt())->GetMean();
-  nEvtsQC4  = (qcCommonHist4->GetHistMultInt())->GetEntries();
-  avMultQC4RP = (qcCommonHist4->GetHistMultInt())->GetMean();
-  nEvtsQC4RP  = (qcCommonHist4->GetHistMultInt())->GetEntries();
-  avMultQC4POI = (qcCommonHist4->GetHistMultDiff())->GetMean();
-  nEvtsQC4POI  = (qcCommonHist4->GetHistMultDiff())->GetEntries();
+  avMultQC4 = (qcCommonHist4->GetHistMultRP())->GetMean();
+  nEvtsQC4  = (qcCommonHist4->GetHistMultRP())->GetEntries();
+  avMultQC4RP = (qcCommonHist4->GetHistMultRP())->GetMean();
+  nEvtsQC4RP  = (qcCommonHist4->GetHistMultRP())->GetEntries();
+  avMultQC4POI = (qcCommonHist4->GetHistMultPOI())->GetMean();
+  nEvtsQC4POI  = (qcCommonHist4->GetHistMultPOI())->GetEntries();
  }
  
  if(entryQC4)
@@ -834,12 +1080,12 @@ void compareFlowResults(TString type="ESD")
    
  if(qcCommonHist6)
  {
-  avMultQC6 = (qcCommonHist6->GetHistMultInt())->GetMean();
-  nEvtsQC6  = (qcCommonHist6->GetHistMultInt())->GetEntries();
-  avMultQC6RP = (qcCommonHist6->GetHistMultInt())->GetMean();
-  nEvtsQC6RP  = (qcCommonHist6->GetHistMultInt())->GetEntries();
-  avMultQC6POI = (qcCommonHist6->GetHistMultDiff())->GetMean();
-  nEvtsQC6POI  = (qcCommonHist6->GetHistMultDiff())->GetEntries();
+  avMultQC6 = (qcCommonHist6->GetHistMultRP())->GetMean();
+  nEvtsQC6  = (qcCommonHist6->GetHistMultRP())->GetEntries();
+  avMultQC6RP = (qcCommonHist6->GetHistMultRP())->GetMean();
+  nEvtsQC6RP  = (qcCommonHist6->GetHistMultRP())->GetEntries();
+  avMultQC6POI = (qcCommonHist6->GetHistMultPOI())->GetMean();
+  nEvtsQC6POI  = (qcCommonHist6->GetHistMultPOI())->GetEntries();
  }
  
  if(entryQC6)
@@ -868,12 +1114,12 @@ void compareFlowResults(TString type="ESD")
    
  if(qcCommonHist8)
  {
-  avMultQC8 = (qcCommonHist8->GetHistMultInt())->GetMean();
-  nEvtsQC8  = (qcCommonHist8->GetHistMultInt())->GetEntries();
-  avMultQC8RP = (qcCommonHist8->GetHistMultInt())->GetMean();
-  nEvtsQC8RP  = (qcCommonHist8->GetHistMultInt())->GetEntries();
-  avMultQC8POI = (qcCommonHist8->GetHistMultDiff())->GetMean();
-  nEvtsQC8POI  = (qcCommonHist8->GetHistMultDiff())->GetEntries();    
+  avMultQC8 = (qcCommonHist8->GetHistMultRP())->GetMean();
+  nEvtsQC8  = (qcCommonHist8->GetHistMultRP())->GetEntries();
+  avMultQC8RP = (qcCommonHist8->GetHistMultRP())->GetMean();
+  nEvtsQC8RP  = (qcCommonHist8->GetHistMultRP())->GetEntries();
+  avMultQC8POI = (qcCommonHist8->GetHistMultPOI())->GetMean();
+  nEvtsQC8POI  = (qcCommonHist8->GetHistMultPOI())->GetEntries();    
  }
   
  if(entryQC8)
@@ -900,15 +1146,15 @@ void compareFlowResults(TString type="ESD")
   (*entryQC8POI)+=(Long_t)nEvtsQC8POI;
  }
   
- //FQD:
+ // FQD:
  if(fqdCommonHist)
  {
-  avMultFQD = (fqdCommonHist->GetHistMultInt())->GetMean();
-  nEvtsFQD  = (fqdCommonHist->GetHistMultInt())->GetEntries();
-  avMultFQDRP = (fqdCommonHist->GetHistMultInt())->GetMean();
-  nEvtsFQDRP  = (fqdCommonHist->GetHistMultInt())->GetEntries();
-  avMultFQDPOI = (fqdCommonHist->GetHistMultDiff())->GetMean();
-  nEvtsFQDPOI  = (fqdCommonHist->GetHistMultDiff())->GetEntries();
+  avMultFQD = (fqdCommonHist->GetHistMultRP())->GetMean();
+  nEvtsFQD  = (fqdCommonHist->GetHistMultRP())->GetEntries();
+  avMultFQDRP = (fqdCommonHist->GetHistMultRP())->GetMean();
+  nEvtsFQDRP  = (fqdCommonHist->GetHistMultRP())->GetEntries();
+  avMultFQDPOI = (fqdCommonHist->GetHistMultPOI())->GetMean();
+  nEvtsFQDPOI  = (fqdCommonHist->GetHistMultPOI())->GetEntries();
  } 
  
  if(entryFQD)
@@ -935,52 +1181,88 @@ void compareFlowResults(TString type="ESD")
   (*entryFQDPOI)+=(Long_t)nEvtsFQDPOI;
  }  
   
- //LYZ1:
- if(lyz1CommonHist)
+ // LYZ1SUM:
+ if(lyz1sumCommonHist)
+ {
+  avMultLYZ1SUM = (lyz1sumCommonHist->GetHistMultRP())->GetMean();
+  nEvtsLYZ1SUM  = (lyz1sumCommonHist->GetHistMultRP())->GetEntries();
+  avMultLYZ1SUMRP = (lyz1sumCommonHist->GetHistMultRP())->GetMean();
+  nEvtsLYZ1SUMRP  = (lyz1sumCommonHist->GetHistMultRP())->GetEntries();
+  avMultLYZ1SUMPOI = (lyz1sumCommonHist->GetHistMultPOI())->GetMean();
+  nEvtsLYZ1SUMPOI  = (lyz1sumCommonHist->GetHistMultPOI())->GetEntries();
+ }
+ if(entryLYZ1SUM) 
  {
-  avMultLYZ1 = (lyz1CommonHist->GetHistMultInt())->GetMean();
-  nEvtsLYZ1  = (lyz1CommonHist->GetHistMultInt())->GetEntries();
-  avMultLYZ1RP = (lyz1CommonHist->GetHistMultInt())->GetMean();
-  nEvtsLYZ1RP  = (lyz1CommonHist->GetHistMultInt())->GetEntries();
-  avMultLYZ1POI = (lyz1CommonHist->GetHistMultDiff())->GetMean();
-  nEvtsLYZ1POI  = (lyz1CommonHist->GetHistMultDiff())->GetEntries();
+  entryLYZ1SUM->Append("M = ");
+  (*entryLYZ1SUM)+=(Long_t)avMultLYZ1SUM;
+  entryLYZ1SUM->Append(", N = ");
+  (*entryLYZ1SUM)+=(Long_t)nEvtsLYZ1SUM;
  }
  
- if(entryLYZ1) 
+ if(entryLYZ1SUMRP
  {
-  entryLYZ1->Append("M = ");
-  (*entryLYZ1)+=(Long_t)avMultLYZ1;
-  entryLYZ1->Append(", N = ");
-  (*entryLYZ1)+=(Long_t)nEvtsLYZ1;
+  entryLYZ1SUMRP->Append("M = ");
+  (*entryLYZ1SUMRP)+=(Long_t)avMultLYZ1SUMRP;
+  entryLYZ1SUMRP->Append(", N = ");
+  (*entryLYZ1SUMRP)+=(Long_t)nEvtsLYZ1SUMRP;
  }
  
- if(entryLYZ1RP
+ if(entryLYZ1SUMPOI
  {
-  entryLYZ1RP->Append("M = ");
-  (*entryLYZ1RP)+=(Long_t)avMultLYZ1RP;
-  entryLYZ1RP->Append(", N = ");
-  (*entryLYZ1RP)+=(Long_t)nEvtsLYZ1RP;
+  entryLYZ1SUMPOI->Append("M = ");
+  (*entryLYZ1SUMPOI)+=(Long_t)avMultLYZ1SUMPOI;
+  entryLYZ1SUMPOI->Append(", N = ");
+  (*entryLYZ1SUMPOI)+=(Long_t)nEvtsLYZ1SUMPOI;
  }
  
- if(entryLYZ1POI) 
+ // LYZ1PROD:
+ if(lyz1prodCommonHist)
+ {
+  avMultLYZ1PROD = (lyz1prodCommonHist->GetHistMultRP())->GetMean();
+  nEvtsLYZ1PROD  = (lyz1prodCommonHist->GetHistMultRP())->GetEntries();
+  avMultLYZ1PRODRP = (lyz1prodCommonHist->GetHistMultRP())->GetMean();
+  nEvtsLYZ1PRODRP  = (lyz1prodCommonHist->GetHistMultRP())->GetEntries();
+  avMultLYZ1PRODPOI = (lyz1prodCommonHist->GetHistMultPOI())->GetMean();
+  nEvtsLYZ1PRODPOI  = (lyz1prodCommonHist->GetHistMultPOI())->GetEntries();
+ }
+  
+ if(entryLYZ1PROD) 
  {
-  entryLYZ1POI->Append("M = ");
-  (*entryLYZ1POI)+=(Long_t)avMultLYZ1POI;
-  entryLYZ1POI->Append(", N = ");
-  (*entryLYZ1POI)+=(Long_t)nEvtsLYZ1POI;
+  entryLYZ1PROD->Append("M = ");
+  (*entryLYZ1PROD)+=(Long_t)avMultLYZ1PROD;
+  entryLYZ1PROD->Append(", N = ");
+  (*entryLYZ1PROD)+=(Long_t)nEvtsLYZ1PROD;
  }
  
- //LYZEP:
+ if(entryLYZ1PRODRP) 
+ {
+  entryLYZ1PRODRP->Append("M = ");
+  (*entryLYZ1PRODRP)+=(Long_t)avMultLYZ1PRODRP;
+  entryLYZ1PRODRP->Append(", N = ");
+  (*entryLYZ1PRODRP)+=(Long_t)nEvtsLYZ1PRODRP;
+ }
+ if(entryLYZ1PRODPOI) 
+ {
+  entryLYZ1PRODPOI->Append("M = ");
+  (*entryLYZ1PRODPOI)+=(Long_t)avMultLYZ1PRODPOI;
+  entryLYZ1PRODPOI->Append(", N = ");
+  (*entryLYZ1PRODPOI)+=(Long_t)nEvtsLYZ1PRODPOI;
+ } 
+ // LYZEP:
  if(lyzepCommonHist)
  {
-  avMultLYZEP = (lyzepCommonHist->GetHistMultInt())->GetMean();
-  nEvtsLYZEP  = (lyzepCommonHist->GetHistMultInt())->GetEntries();
-  avMultLYZEPRP = (lyzepCommonHist->GetHistMultInt())->GetMean();
-  nEvtsLYZEPRP  = (lyzepCommonHist->GetHistMultInt())->GetEntries();
-  avMultLYZEPPOI = (lyzepCommonHist->GetHistMultDiff())->GetMean();
-  nEvtsLYZEPPOI  = (lyzepCommonHist->GetHistMultDiff())->GetEntries();    
+  avMultLYZEP = (lyzepCommonHist->GetHistMultRP())->GetMean();
+  nEvtsLYZEP  = (lyzepCommonHist->GetHistMultRP())->GetEntries();
+  avMultLYZEPRP = (lyzepCommonHist->GetHistMultRP())->GetMean();
+  nEvtsLYZEPRP  = (lyzepCommonHist->GetHistMultRP())->GetEntries();
+  avMultLYZEPPOI = (lyzepCommonHist->GetHistMultPOI())->GetMean();
+  nEvtsLYZEPPOI  = (lyzepCommonHist->GetHistMultPOI())->GetEntries();    
  }
  
  if(entryLYZEP)
  {
   entryLYZEP->Append("M = ");
@@ -1005,7 +1287,7 @@ void compareFlowResults(TString type="ESD")
   (*entryLYZEPPOI)+=(Long_t)nEvtsLYZEPPOI;
  }
 
- //no-name:
+ // no-name:
  if(textResults)
  {
   textResults->AddText(entryMC->Data());
@@ -1016,11 +1298,12 @@ void compareFlowResults(TString type="ESD")
   textResults->AddText(entryQC6->Data());
   textResults->AddText(entryQC8->Data());
   textResults->AddText(entryFQD->Data());
-  textResults->AddText(entryLYZ1->Data());
+  textResults->AddText(entryLYZ1SUM->Data());
+  textResults->AddText(entryLYZ1PROD->Data());
   textResults->AddText(entryLYZEP->Data());
  }
  
- //RP:
+ // RP:
  if(textResultsRP)
  {
   textResultsRP->AddText(entryMCRP->Data());
@@ -1031,10 +1314,12 @@ void compareFlowResults(TString type="ESD")
   textResultsRP->AddText(entryQC6RP->Data());
   textResultsRP->AddText(entryQC8RP->Data());
   textResultsRP->AddText(entryFQDRP->Data());
-  textResultsRP->AddText(entryLYZ1RP->Data());
+  textResultsRP->AddText(entryLYZ1SUMRP->Data());
+  textResultsRP->AddText(entryLYZ1PRODRP->Data());
   textResultsRP->AddText(entryLYZEPRP->Data());
  }
- //POI:
+ // POI:
  if(textResultsPOI)
  {
   textResultsPOI->AddText(entryMCPOI->Data());
@@ -1045,14 +1330,13 @@ void compareFlowResults(TString type="ESD")
   textResultsPOI->AddText(entryQC6POI->Data());
   textResultsPOI->AddText(entryQC8POI->Data());
   textResultsPOI->AddText(entryFQDPOI->Data());
-  textResultsPOI->AddText(entryLYZ1POI->Data());
+  textResultsPOI->AddText(entryLYZ1SUMPOI->Data());
+  textResultsPOI->AddText(entryLYZ1PRODPOI->Data());
   textResultsPOI->AddText(entryLYZEPPOI->Data());
  }
  //----------------------------------------------------------------------------------
  
  
  //----------------------------------------------------------------------------------
  // final drawing for integrated flow (no-name):
  if(plotIntFlow)
@@ -1089,15 +1373,41 @@ void compareFlowResults(TString type="ESD")
   // 2nd pad is for legend:
   (intFlowAllCanvas->cd(2))->SetPad(0.75,0.0,1.0,1.0);
  
-  if(textDefault)
-  {
-   textDefault->Draw();
-   textResults->Draw();
-  }
+  if(textDefault) textDefault->Draw();
+  if(textResults) textResults->Draw();
  }// end of if(plotIntFlow) 
  //----------------------------------------------------------------------------------
+ //----------------------------------------------------------------------------------
+ // final drawing for integrated flow relative to MC (no-name):
+ if(plotIntFlowRelativeToMC)
+ {
+  TCanvas* intFlowAllRelativeToMCCanvas = new TCanvas("Integrated Flow Relative To MC","Integrated Flow Relative To MC",1000,600);
+  intFlowAllRelativeToMCCanvas->Divide(2,1);
+  // 1st pad is for plot:
+  (intFlowAllRelativeToMCCanvas->cd(1))->SetPad(0.0,0.0,0.75,1.0);
+  
+  TH1D *intFlowAllRelativeToMC = new TH1D(*intFlowAll);
+  (intFlowAllRelativeToMC->GetYaxis())->SetRangeUser(-1,1);
+  (intFlowAllRelativeToMC->GetYaxis())->SetTitle("(v_{n}\{method\} - v_{n}\{MC\})/v_{n}\{MC\}"); 
+  intFlowAllRelativeToMC->Draw("E1");            
+  
+  if(flowResultsRelativeToMC) flowResultsRelativeToMC->Draw("PSAME");
 
+  // 2nd pad is for legend:
+  (intFlowAllRelativeToMCCanvas->cd(2))->SetPad(0.75,0.0,1.0,1.0);
+  if(textDefault) textDefault->Draw();
  
+  if(textResults) textResults->Draw();
+ }// end of if(plotIntFlowRelativeToMC) 
+ //----------------------------------------------------------------------------------
  
  
  //----------------------------------------------------------------------------------
@@ -1111,7 +1421,23 @@ void compareFlowResults(TString type="ESD")
   //1st pad is for plot:
   (intFlowAllCanvasRP->cd(1))->SetPad(0.0,0.0,0.75,1.0);
  
-  TH1D *intFlowAllRP = new TH1D(*intFlowAll); 
+  TH1D *intFlowAllRP = new TH1D(*intFlowAll);
+  intFlowAllRP->SetMarkerStyle(markerStyleRP);
+  intFlowAllRP->SetMarkerColor(markerColorRP);
+  (intFlowAllRP->GetXaxis())->SetBinLabel(binMCRP,"v_{2}{MC}");
+  (intFlowAllRP->GetXaxis())->SetBinLabel(binSPRP,"v_{2}{SP}");
+  (intFlowAllRP->GetXaxis())->SetBinLabel(binGFC2RP,"v_{2}{2,GFC}");
+  (intFlowAllRP->GetXaxis())->SetBinLabel(binQC2RP,"v_{2}{2,QC}");
+  (intFlowAllRP->GetXaxis())->SetBinLabel(binGFC4RP,"v_{2}{4,GFC}");
+  (intFlowAllRP->GetXaxis())->SetBinLabel(binQC4RP,"v_{2}{4,QC}");
+  (intFlowAllRP->GetXaxis())->SetBinLabel(binGFC6RP,"v_{2}{6,GFC}");
+  (intFlowAllRP->GetXaxis())->SetBinLabel(binQC6RP,"v_{2}{6,QC}");
+  (intFlowAllRP->GetXaxis())->SetBinLabel(binGFC8RP,"v_{2}{8,GFC}");
+  (intFlowAllRP->GetXaxis())->SetBinLabel(binQC8RP,"v_{2}{8,QC}");
+  (intFlowAllRP->GetXaxis())->SetBinLabel(binFQDRP,"v_{2}{FQD}");
+  (intFlowAllRP->GetXaxis())->SetBinLabel(binLYZ2SUMRP,"v_{2}{LYZ,sum}");
+  (intFlowAllRP->GetXaxis())->SetBinLabel(binLYZ2PRODRP,"v_{2}{LYZ,prod}");
+  (intFlowAllRP->GetXaxis())->SetBinLabel(binLYZEPRP,"v_{2}{LYZEP}");
 
   if(intFlowAllRP)
   {
@@ -1145,20 +1471,63 @@ void compareFlowResults(TString type="ESD")
  //----------------------------------------------------------------------------------
  
  
+ //----------------------------------------------------------------------------------
+ // final drawing for integrated flow relative to MC (RP):
+ if(plotIntFlowRelativeToMCRP)
+ {
+  TCanvas* intFlowAllRelativeToMCRPCanvas = new TCanvas("Integrated Flow (RP) Relative To MC","Integrated Flow (RP) Relative To MC",1000,600);
+  intFlowAllRelativeToMCRPCanvas->Divide(2,1);
+  // 1st pad is for plot:
+  (intFlowAllRelativeToMCRPCanvas->cd(1))->SetPad(0.0,0.0,0.75,1.0);
+  
+  TH1D *intFlowAllRelativeToMCRP = new TH1D(*intFlowAll);
+  (intFlowAllRelativeToMCRP->GetYaxis())->SetRangeUser(-1,1); 
+  (intFlowAllRelativeToMCRP->GetYaxis())->SetTitle("(v_{n}\{method\} - v_{n}\{MC\})/v_{n}\{MC\}");
+  intFlowAllRelativeToMCRP->Draw("E1");            
+  
+  if(flowResultsRelativeToMCRP) flowResultsRelativeToMCRP->Draw("PSAME");
+
+  // 2nd pad is for legend:
+  (intFlowAllRelativeToMCRPCanvas->cd(2))->SetPad(0.75,0.0,1.0,1.0);
+  if(textDefault) textDefault->Draw();
  
+  if(textResultsRP) textResultsRP->Draw();
+ }// end of if(plotIntFlowRelativeToMCRP) 
+ //----------------------------------------------------------------------------------
+  
  
  //----------------------------------------------------------------------------------
  //final drawing for integrated flow of POI (i.e. of particles of interest):
  if(plotIntFlowPOI)
  {
   TCanvas* intFlowAllCanvasPOI = new TCanvas("Integrated Flow POI","Integrated Flow POI",1000,600);
+  
   intFlowAllCanvasPOI->Divide(2,1);
  
   //1st pad is for plot:
   (intFlowAllCanvasPOI->cd(1))->SetPad(0.0,0.0,0.75,1.0);
   
   TH1D *intFlowAllPOI = new TH1D(*intFlowAll);
+  intFlowAllPOI->SetMarkerStyle(markerStylePOI);
+  intFlowAllPOI->SetMarkerColor(markerColorPOI);
+  (intFlowAllPOI->GetXaxis())->SetBinLabel(binMCPOI,"v_{2}{MC}");
+  (intFlowAllPOI->GetXaxis())->SetBinLabel(binSPPOI,"v_{2}{SP}");
+  (intFlowAllPOI->GetXaxis())->SetBinLabel(binGFC2POI,"v_{2}{2,GFC}");
+  (intFlowAllPOI->GetXaxis())->SetBinLabel(binQC2POI,"v_{2}{2,QC}");
+  (intFlowAllPOI->GetXaxis())->SetBinLabel(binGFC4POI,"v_{2}{4,GFC}");
+  (intFlowAllPOI->GetXaxis())->SetBinLabel(binQC4POI,"v_{2}{4,QC}");
+  (intFlowAllPOI->GetXaxis())->SetBinLabel(binGFC6POI,"v_{2}{6,GFC}");
+  (intFlowAllPOI->GetXaxis())->SetBinLabel(binQC6POI,"v_{2}{6,QC}");
+  (intFlowAllPOI->GetXaxis())->SetBinLabel(binGFC8POI,"v_{2}{8,GFC}");
+  (intFlowAllPOI->GetXaxis())->SetBinLabel(binQC8POI,"v_{2}{8,QC}");
+  (intFlowAllPOI->GetXaxis())->SetBinLabel(binFQDPOI,"v_{2}{FQD}");
+  (intFlowAllPOI->GetXaxis())->SetBinLabel(binLYZ2SUMPOI,"v_{2}{LYZ,sum}");
+  (intFlowAllPOI->GetXaxis())->SetBinLabel(binLYZ2PRODPOI,"v_{2}{LYZ,prod}");
+  (intFlowAllPOI->GetXaxis())->SetBinLabel(binLYZEPPOI,"v_{2}{LYZEP}");
   
   if(intFlowAllPOI)
   {
@@ -1189,8 +1558,37 @@ void compareFlowResults(TString type="ESD")
 
   if(textResultsPOI) textResultsPOI->Draw();
  }// end of if(plotIntFlowPOI) 
+ //----------------------------------------------------------------------------------      
+    
  //----------------------------------------------------------------------------------
+ // final drawing for integrated flow relative to MC (POI):
+ if(plotIntFlowRelativeToMCPOI)
+ {
+  TCanvas* intFlowAllRelativeToMCPOICanvas = new TCanvas("Integrated Flow (POI) Relative To MC","Integrated Flow (POI) Relative To MC",1000,600);
+  intFlowAllRelativeToMCPOICanvas->Divide(2,1);
+  // 1st pad is for plot:
+  (intFlowAllRelativeToMCPOICanvas->cd(1))->SetPad(0.0,0.0,0.75,1.0);
+  
+  TH1D *intFlowAllRelativeToMCPOI = new TH1D(*intFlowAll);
+  (intFlowAllRelativeToMCPOI->GetYaxis())->SetRangeUser(-1,1); 
+  (intFlowAllRelativeToMCPOI->GetYaxis())->SetTitle("(v_{n}\{method\} - v_{n}\{MC\})/v_{n}\{MC\}");
+  intFlowAllRelativeToMCPOI->Draw("E1");            
+  
+  if(flowResultsRelativeToMCPOI) flowResultsRelativeToMCPOI->Draw("PSAME");
+
+  // 2nd pad is for legend:
+  (intFlowAllRelativeToMCPOICanvas->cd(2))->SetPad(0.75,0.0,1.0,1.0);
  
+  if(textDefault) textDefault->Draw();
+  if(textResultsPOI) textResultsPOI->Draw();
+ }// end of if(plotIntFlowRelativeToMCPOI) 
+ //----------------------------------------------------------------------------------
+         
  //==================================================================================   
 
 
@@ -1276,8 +1674,8 @@ void compareFlowResults(TString type="ESD")
   pMeshDiffFlowPtRP->SetPoint(2*nNonEmptyBinsDiffFlowPtRP+1,xFirstDiffFlowPtRP,yUpFirstDiffFlowPtRP);   
   
   //setting the mesh style and color:               
-  pMeshDiffFlowPtRP->SetFillStyle(meshStyle);
-  pMeshDiffFlowPtRP->SetFillColor(meshColor);
+  pMeshDiffFlowPtRP->SetFillStyle(meshStyleDiffFlowPtRP);
+  pMeshDiffFlowPtRP->SetFillColor(meshColorDiffFlowPtRP);
  }
 
  //cosmetics: Monte Carlo error bands for differential flow (Eta)
@@ -1331,8 +1729,8 @@ void compareFlowResults(TString type="ESD")
   pMeshDiffFlowEtaRP->SetPoint(2*nNonEmptyBinsDiffFlowEtaRP+1,xFirstDiffFlowEtaRP,yUpFirstDiffFlowEtaRP);   
   
   //setting the mesh style and color:               
-  pMeshDiffFlowEtaRP->SetFillStyle(meshStyle);
-  pMeshDiffFlowEtaRP->SetFillColor(meshColor);
+  pMeshDiffFlowEtaRP->SetFillStyle(meshStyleDiffFlowEtaRP);
+  pMeshDiffFlowEtaRP->SetFillColor(meshColorDiffFlowEtaRP);
  } 
  //----------------------------------------------------------------------------------
 
@@ -1392,8 +1790,8 @@ void compareFlowResults(TString type="ESD")
   pMeshDiffFlowPtPOI->SetPoint(2*nNonEmptyBinsDiffFlowPtPOI+1,xFirstDiffFlowPtPOI,yUpFirstDiffFlowPtPOI);   
   
   //setting the mesh style and color:               
-  pMeshDiffFlowPtPOI->SetFillStyle(meshStyle);
-  pMeshDiffFlowPtPOI->SetFillColor(meshColor);
+  pMeshDiffFlowPtPOI->SetFillStyle(meshStyleDiffFlowPtPOI);
+  pMeshDiffFlowPtPOI->SetFillColor(meshColorDiffFlowPtPOI);
  }
 
  //cosmetics: Monte Carlo error bands for differential flow (Eta)
@@ -1447,8 +1845,8 @@ void compareFlowResults(TString type="ESD")
   pMeshDiffFlowEtaPOI->SetPoint(2*nNonEmptyBinsDiffFlowEtaPOI+1,xFirstDiffFlowEtaPOI,yUpFirstDiffFlowEtaPOI);   
   
   //setting the mesh style and color:               
-  pMeshDiffFlowEtaPOI->SetFillStyle(meshStyle);
-  pMeshDiffFlowEtaPOI->SetFillColor(meshColor);
+  pMeshDiffFlowEtaPOI->SetFillStyle(meshStyleDiffFlowEtaPOI);
+  pMeshDiffFlowEtaPOI->SetFillColor(meshColorDiffFlowEtaPOI);
  }
  //----------------------------------------------------------------------------------
    
@@ -1472,10 +1870,10 @@ void compareFlowResults(TString type="ESD")
   } 
   if(mcepCommonHist)
   {
-   avMultDiffFlowMCRP = (mcepCommonHist->GetHistMultInt())->GetMean();
-   nEvtsDiffFlowMCRP  = (mcepCommonHist->GetHistMultInt())->GetEntries();
-   avMultDiffFlowMCPOI = (mcepCommonHist->GetHistMultDiff())->GetMean();
-   nEvtsDiffFlowMCPOI  = (mcepCommonHist->GetHistMultDiff())->GetEntries();      
+   avMultDiffFlowMCRP = (mcepCommonHist->GetHistMultRP())->GetMean();
+   nEvtsDiffFlowMCRP  = (mcepCommonHist->GetHistMultRP())->GetEntries();
+   avMultDiffFlowMCPOI = (mcepCommonHist->GetHistMultPOI())->GetMean();
+   nEvtsDiffFlowMCPOI  = (mcepCommonHist->GetHistMultPOI())->GetEntries();      
   } 
  } 
  
@@ -1499,10 +1897,10 @@ void compareFlowResults(TString type="ESD")
   } 
   if(spCommonHist)
   {
-   avMultDiffFlowSPRP = (spCommonHist->GetHistMultInt())->GetMean();
-   nEvtsDiffFlowSPRP  = (spCommonHist->GetHistMultInt())->GetEntries();
-   avMultDiffFlowSPPOI = (spCommonHist->GetHistMultDiff())->GetMean();
-   nEvtsDiffFlowSPPOI  = (spCommonHist->GetHistMultDiff())->GetEntries();      
+   avMultDiffFlowSPRP = (spCommonHist->GetHistMultRP())->GetMean();
+   nEvtsDiffFlowSPRP = (spCommonHist->GetHistMultRP())->GetEntries();
+   avMultDiffFlowSPPOI = (spCommonHist->GetHistMultPOI())->GetMean();
+   nEvtsDiffFlowSPPOI = (spCommonHist->GetHistMultPOI())->GetEntries();      
   } 
  } 
 
@@ -1561,10 +1959,10 @@ void compareFlowResults(TString type="ESD")
   }
   if(gfcCommonHist)
   {
-   avMultDiffFlowGFCRP = (gfcCommonHist->GetHistMultInt())->GetMean();   
-   nEvtsDiffFlowGFCRP  = (gfcCommonHist->GetHistMultInt())->GetEntries();
-   avMultDiffFlowGFCPOI = (gfcCommonHist->GetHistMultDiff())->GetMean();
-   nEvtsDiffFlowGFCPOI  = (gfcCommonHist->GetHistMultDiff())->GetEntries();   
+   avMultDiffFlowGFCRP = (gfcCommonHist->GetHistMultRP())->GetMean();   
+   nEvtsDiffFlowGFCRP  = (gfcCommonHist->GetHistMultRP())->GetEntries();
+   avMultDiffFlowGFCPOI = (gfcCommonHist->GetHistMultPOI())->GetMean();
+   nEvtsDiffFlowGFCPOI  = (gfcCommonHist->GetHistMultPOI())->GetEntries();   
   } 
  }
   
@@ -1602,10 +2000,10 @@ void compareFlowResults(TString type="ESD")
   }
   if(qcCommonHist2)
   {
-   avMultDiffFlowQC2RP = (qcCommonHist2->GetHistMultInt())->GetMean();
-   nEvtsDiffFlowQC2RP  = (qcCommonHist2->GetHistMultInt())->GetEntries();
-   avMultDiffFlowQC2POI = (qcCommonHist2->GetHistMultDiff())->GetMean();
-   nEvtsDiffFlowQC2POI  = (qcCommonHist2->GetHistMultDiff())->GetEntries();
+   avMultDiffFlowQC2RP = (qcCommonHist2->GetHistMultRP())->GetMean();
+   nEvtsDiffFlowQC2RP  = (qcCommonHist2->GetHistMultRP())->GetEntries();
+   avMultDiffFlowQC2POI = (qcCommonHist2->GetHistMultPOI())->GetMean();
+   nEvtsDiffFlowQC2POI  = (qcCommonHist2->GetHistMultPOI())->GetEntries();
   }
   //QC{4}
   if(qcCommonHistRes4)
@@ -1621,10 +2019,10 @@ void compareFlowResults(TString type="ESD")
   }
   if(qcCommonHist4)
   {
-   avMultDiffFlowQC4RP = (qcCommonHist4->GetHistMultInt())->GetMean();
-   nEvtsDiffFlowQC4RP  = (qcCommonHist4->GetHistMultInt())->GetEntries();
-   avMultDiffFlowQC4POI = (qcCommonHist4->GetHistMultDiff())->GetMean();
-   nEvtsDiffFlowQC4POI  = (qcCommonHist4->GetHistMultDiff())->GetEntries();
+   avMultDiffFlowQC4RP = (qcCommonHist4->GetHistMultRP())->GetMean();
+   nEvtsDiffFlowQC4RP  = (qcCommonHist4->GetHistMultRP())->GetEntries();
+   avMultDiffFlowQC4POI = (qcCommonHist4->GetHistMultPOI())->GetMean();
+   nEvtsDiffFlowQC4POI  = (qcCommonHist4->GetHistMultPOI())->GetEntries();
   }
   //QC{6}
   if(qcCommonHistRes6)
@@ -1640,10 +2038,10 @@ void compareFlowResults(TString type="ESD")
   }
   if(qcCommonHist6)
   {
-   avMultDiffFlowQC6RP = (qcCommonHist6->GetHistMultInt())->GetMean();
-   nEvtsDiffFlowQC6RP  = (qcCommonHist6->GetHistMultInt())->GetEntries();
-   avMultDiffFlowQC6POI = (qcCommonHist6->GetHistMultDiff())->GetMean();
-   nEvtsDiffFlowQC6POI  = (qcCommonHist6->GetHistMultDiff())->GetEntries();
+   avMultDiffFlowQC6RP = (qcCommonHist6->GetHistMultRP())->GetMean();
+   nEvtsDiffFlowQC6RP  = (qcCommonHist6->GetHistMultRP())->GetEntries();
+   avMultDiffFlowQC6POI = (qcCommonHist6->GetHistMultPOI())->GetMean();
+   nEvtsDiffFlowQC6POI  = (qcCommonHist6->GetHistMultPOI())->GetEntries();
   }
   //QC{8}
   if(qcCommonHistRes8)
@@ -1659,37 +2057,64 @@ void compareFlowResults(TString type="ESD")
   }
   if(qcCommonHist8)
   {
-   avMultDiffFlowQC8RP = (qcCommonHist8->GetHistMultInt())->GetMean();
-   nEvtsDiffFlowQC8RP  = (qcCommonHist8->GetHistMultInt())->GetEntries();
-   avMultDiffFlowQC8POI = (qcCommonHist8->GetHistMultDiff())->GetMean();
-   nEvtsDiffFlowQC8POI  = (qcCommonHist8->GetHistMultDiff())->GetEntries();
+   avMultDiffFlowQC8RP = (qcCommonHist8->GetHistMultRP())->GetMean();
+   nEvtsDiffFlowQC8RP  = (qcCommonHist8->GetHistMultRP())->GetEntries();
+   avMultDiffFlowQC8POI = (qcCommonHist8->GetHistMultPOI())->GetMean();
+   nEvtsDiffFlowQC8POI  = (qcCommonHist8->GetHistMultPOI())->GetEntries();
   }
  } 
 
- //LYZ2 = Lee-Yang Zeros (2nd run)
- Double_t avMultDiffFlowLYZ2RP=0.;
- Double_t nEvtsDiffFlowLYZ2RP=0;
- Double_t avMultDiffFlowLYZ2POI=0.;
- Double_t nEvtsDiffFlowLYZ2POI=0;
- if(fileLYZ2)
+ //LYZ2SUM = Lee-Yang Zeros (2nd run, sum)
+ Double_t avMultDiffFlowLYZ2SUMRP=0.;
+ Double_t nEvtsDiffFlowLYZ2SUMRP=0;
+ Double_t avMultDiffFlowLYZ2SUMPOI=0.;
+ Double_t nEvtsDiffFlowLYZ2SUMPOI=0;
+ if(fileLYZ2SUM)
  {
-  if(lyz2CommonHistRes)
-  {
-   (lyz2CommonHistRes->GetHistDiffFlowPtRP())->SetMarkerColor(markerColorLYZ2);
-   (lyz2CommonHistRes->GetHistDiffFlowPtRP())->SetMarkerStyle(markerStyleLYZ2);
-   (lyz2CommonHistRes->GetHistDiffFlowEtaRP())->SetMarkerColor(markerColorLYZ2);
-   (lyz2CommonHistRes->GetHistDiffFlowEtaRP())->SetMarkerStyle(markerStyleLYZ2);
-   (lyz2CommonHistRes->GetHistDiffFlowPtPOI())->SetMarkerColor(markerColorLYZ2);
-   (lyz2CommonHistRes->GetHistDiffFlowPtPOI())->SetMarkerStyle(markerStyleLYZ2);
-   (lyz2CommonHistRes->GetHistDiffFlowEtaPOI())->SetMarkerColor(markerColorLYZ2);
-   (lyz2CommonHistRes->GetHistDiffFlowEtaPOI())->SetMarkerStyle(markerStyleLYZ2);
+  if(lyz2sumCommonHistRes)
+  {
+   (lyz2sumCommonHistRes->GetHistDiffFlowPtRP())->SetMarkerColor(markerColorLYZ2SUM);
+   (lyz2sumCommonHistRes->GetHistDiffFlowPtRP())->SetMarkerStyle(markerStyleLYZ2SUM);
+   (lyz2sumCommonHistRes->GetHistDiffFlowEtaRP())->SetMarkerColor(markerColorLYZ2SUM);
+   (lyz2sumCommonHistRes->GetHistDiffFlowEtaRP())->SetMarkerStyle(markerStyleLYZ2SUM);
+   (lyz2sumCommonHistRes->GetHistDiffFlowPtPOI())->SetMarkerColor(markerColorLYZ2SUM);
+   (lyz2sumCommonHistRes->GetHistDiffFlowPtPOI())->SetMarkerStyle(markerStyleLYZ2SUM);
+   (lyz2sumCommonHistRes->GetHistDiffFlowEtaPOI())->SetMarkerColor(markerColorLYZ2SUM);
+   (lyz2sumCommonHistRes->GetHistDiffFlowEtaPOI())->SetMarkerStyle(markerStyleLYZ2SUM);
   } 
-  if(lyz2CommonHist)
+  if(lyz2sumCommonHist)
   {
-   avMultDiffFlowLYZ2RP = (lyz2CommonHist->GetHistMultInt())->GetMean();
-   nEvtsDiffFlowLYZ2RP  = (lyz2CommonHist->GetHistMultInt())->GetEntries();
-   avMultDiffFlowLYZ2POI = (lyz2CommonHist->GetHistMultDiff())->GetMean();
-   nEvtsDiffFlowLYZ2POI  = (lyz2CommonHist->GetHistMultDiff())->GetEntries();
+   avMultDiffFlowLYZ2SUMRP = (lyz2sumCommonHist->GetHistMultRP())->GetMean();
+   nEvtsDiffFlowLYZ2SUMRP  = (lyz2sumCommonHist->GetHistMultRP())->GetEntries();
+   avMultDiffFlowLYZ2SUMPOI = (lyz2sumCommonHist->GetHistMultPOI())->GetMean();
+   nEvtsDiffFlowLYZ2SUMPOI  = (lyz2sumCommonHist->GetHistMultPOI())->GetEntries();
+  } 
+ } 
+ //LYZ2PROD = Lee-Yang Zeros (2nd run, product)
+ Double_t avMultDiffFlowLYZ2PRODRP=0.;
+ Double_t nEvtsDiffFlowLYZ2PRODRP=0;
+ Double_t avMultDiffFlowLYZ2PRODPOI=0.;
+ Double_t nEvtsDiffFlowLYZ2PRODPOI=0;
+ if(fileLYZ2PROD)
+ {
+  if(lyz2prodCommonHistRes)
+  {
+   (lyz2prodCommonHistRes->GetHistDiffFlowPtRP())->SetMarkerColor(markerColorLYZ2PROD);
+   (lyz2prodCommonHistRes->GetHistDiffFlowPtRP())->SetMarkerStyle(markerStyleLYZ2PROD);
+   (lyz2prodCommonHistRes->GetHistDiffFlowEtaRP())->SetMarkerColor(markerColorLYZ2PROD);
+   (lyz2prodCommonHistRes->GetHistDiffFlowEtaRP())->SetMarkerStyle(markerStyleLYZ2PROD);
+   (lyz2prodCommonHistRes->GetHistDiffFlowPtPOI())->SetMarkerColor(markerColorLYZ2PROD);
+   (lyz2prodCommonHistRes->GetHistDiffFlowPtPOI())->SetMarkerStyle(markerStyleLYZ2PROD);
+   (lyz2prodCommonHistRes->GetHistDiffFlowEtaPOI())->SetMarkerColor(markerColorLYZ2PROD);
+   (lyz2prodCommonHistRes->GetHistDiffFlowEtaPOI())->SetMarkerStyle(markerStyleLYZ2PROD);
+  } 
+  if(lyz2prodCommonHist)
+  {
+   avMultDiffFlowLYZ2PRODRP = (lyz2prodCommonHist->GetHistMultRP())->GetMean();
+   nEvtsDiffFlowLYZ2PRODRP  = (lyz2prodCommonHist->GetHistMultRP())->GetEntries();
+   avMultDiffFlowLYZ2PRODPOI = (lyz2prodCommonHist->GetHistMultPOI())->GetMean();
+   nEvtsDiffFlowLYZ2PRODPOI  = (lyz2prodCommonHist->GetHistMultPOI())->GetEntries();
   } 
  } 
 
@@ -1713,17 +2138,16 @@ void compareFlowResults(TString type="ESD")
   } 
   if(lyzepCommonHist)
   {
-   avMultDiffFlowLYZEPRP = (lyzepCommonHist->GetHistMultInt())->GetMean();
-   nEvtsDiffFlowLYZEPRP  = (lyzepCommonHist->GetHistMultInt())->GetEntries();
-   avMultDiffFlowLYZEPPOI = (lyzepCommonHist->GetHistMultDiff())->GetMean();
-   nEvtsDiffFlowLYZEPPOI  = (lyzepCommonHist->GetHistMultDiff())->GetEntries();
+   avMultDiffFlowLYZEPRP = (lyzepCommonHist->GetHistMultRP())->GetMean();
+   nEvtsDiffFlowLYZEPRP  = (lyzepCommonHist->GetHistMultRP())->GetEntries();
+   avMultDiffFlowLYZEPPOI = (lyzepCommonHist->GetHistMultPOI())->GetMean();
+   nEvtsDiffFlowLYZEPPOI  = (lyzepCommonHist->GetHistMultPOI())->GetEntries();
   } 
  } 
 
 
  //----------------------------------------------------------------------------------
  //final drawing for differential flow (Pt, RP):
- Bool_t plotLYZEPPtRP = kTRUE;  
  if(plotDiffFlowPtRP)
  {
   TCanvas* diffFlowPtAllCanvasRP = new TCanvas("Differential Flow (Pt) of RP","Differential Flow (Pt) of RP ",1000,600);
@@ -1787,10 +2211,15 @@ void compareFlowResults(TString type="ESD")
   { 
    //(qcCommonHistRes8->GetHistDiffFlowPtRP())->Draw("E1PSAME");
   }
-  //LYZ2
-  if(plotLYZ2PtRP && lyz2CommonHistRes)
+  //LYZ2SUM
+  if(plotLYZ2SUMPtRP && lyz2sumCommonHistRes)
+  { 
+   (lyz2sumCommonHistRes->GetHistDiffFlowPtRP())->Draw("E1PSAME");
+  }
+  //LYZ2PROD
+  if(plotLYZ2PRODPtRP && lyz2prodCommonHistRes)
   { 
-   (lyz2CommonHistRes->GetHistDiffFlowPtRP())->Draw("E1PSAME");
+   (lyz2prodCommonHistRes->GetHistDiffFlowPtRP())->Draw("E1PSAME");
   }
   //LYZEP
   if(plotLYZEPPtRP && lyzepCommonHistRes)
@@ -1799,31 +2228,32 @@ void compareFlowResults(TString type="ESD")
   }
 
   //2nd pad is for legend:
-  (diffFlowPtAllCanvasRP->cd(2))->SetPad(0.75,0.0,1.0,1.0);
-  TLegend* legendDiffFlowPtRP = new TLegend(0.02,0.25,0.97,0.75);
+  (diffFlowPtAllCanvasRP->cd(2))->SetPad(0.75,0.0,1.0,1.0);  
+    
+  TLegend* legendDiffFlowPtRP = new TLegend(0.02,0.12,0.97,0.70);
   legendDiffFlowPtRP->SetTextFont(72);
   legendDiffFlowPtRP->SetTextSize(0.06);
  
   //legend's entries:Pt
-  TString *entryDiffMCPtRP    = new TString("MC ....... ");
-  TString *entryDiffSPPtRP    = new TString("SP ....... ");
-  TString *entryDiffGFC2PtRP  = new TString("GFC{2} ... ");
-  TString *entryDiffGFC4PtRP  = new TString("GFC{4} ... ");
-  TString *entryDiffGFC6PtRP  = new TString("GFC{6} ... ");
-  TString *entryDiffGFC8PtRP  = new TString("GFC{8} ... "); 
-  TString *entryDiffQC2PtRP   = new TString("QC{2} .... ");
-  TString *entryDiffQC4PtRP   = new TString("QC{4} .... ");
-  TString *entryDiffQC6PtRP   = new TString("QC{6} .... ");
-  TString *entryDiffQC8PtRP   = new TString("QC{8} .... ");
-  TString *entryDiffLYZ2PtRP  = new TString("LYZ ...... ");
-  TString *entryDiffLYZEPPtRP = new TString("LYZEP ... ");
+  TString *entryDiffMCPtRP       = new TString("MC ........ ");
+  TString *entryDiffSPPtRP       = new TString("SP ........ ");
+  TString *entryDiffGFC2PtRP     = new TString("GFC{2} .... ");
+  TString *entryDiffGFC4PtRP     = new TString("GFC{4} .... ");
+  TString *entryDiffGFC6PtRP     = new TString("GFC{6} .... ");
+  TString *entryDiffGFC8PtRP     = new TString("GFC{8} .... "); 
+  TString *entryDiffQC2PtRP      = new TString("QC{2} ..... ");
+  TString *entryDiffQC4PtRP      = new TString("QC{4} ..... ");
+  TString *entryDiffQC6PtRP      = new TString("QC{6} ..... ");
+  TString *entryDiffQC8PtRP      = new TString("QC{8} ..... ");
+  TString *entryDiffLYZ2SUMPtRP  = new TString("LYZ{sum} .. ");
+  TString *entryDiffLYZ2PRODPtRP = new TString("LYZ{prod} . ");
+  TString *entryDiffLYZEPPtRP    = new TString("LYZEP ..... ");
   
   //MC
   if(mcepCommonHistRes)
   {
-   (mcepCommonHistRes->GetHistDiffFlowPtRP())->SetFillStyle(meshStyle);
-   (mcepCommonHistRes->GetHistDiffFlowPtRP())->SetFillColor(meshColor);
+   (mcepCommonHistRes->GetHistDiffFlowPtRP())->SetFillStyle(meshStyleDiffFlowPtRP);
+   (mcepCommonHistRes->GetHistDiffFlowPtRP())->SetFillColor(meshColorDiffFlowPtRP);
    entryDiffMCPtRP->Append("M = ");
    (*entryDiffMCPtRP)+=(Long_t)avMultDiffFlowMCRP;
    entryDiffMCPtRP->Append(", N = ");
@@ -1832,10 +2262,8 @@ void compareFlowResults(TString type="ESD")
   }
   
   //SP
-  if(spCommonHistRes)
+  if(plotSPPtRP && spCommonHistRes)
   {
-   (spCommonHistRes->GetHistDiffFlowPtRP())->SetFillStyle(meshStyle);
-   (spCommonHistRes->GetHistDiffFlowPtRP())->SetFillColor(meshColor);
    entryDiffSPPtRP->Append("M = ");
    (*entryDiffSPPtRP)+=(Long_t)avMultDiffFlowSPRP;
    entryDiffSPPtRP->Append(", N = ");
@@ -1911,14 +2339,24 @@ void compareFlowResults(TString type="ESD")
    legendDiffFlowPtRP->AddEntry(qcCommonHistRes8->GetHistDiffFlowPtRP(),entryDiffQC8PtRP->Data(),"p");
   }
   
-  //LYZ2
-  if(plotLYZ2PtRP && lyz2CommonHistRes)
+  //LYZ2SUM
+  if(plotLYZ2SUMPtRP && lyz2sumCommonHistRes)
+  {
+   entryDiffLYZ2SUMPtRP->Append("M = ");
+   (*entryDiffLYZ2SUMPtRP)+=(Long_t)avMultDiffFlowLYZ2SUMRP;
+   entryDiffLYZ2SUMPtRP->Append(", N = ");
+   (*entryDiffLYZ2SUMPtRP)+=(Long_t)nEvtsDiffFlowLYZ2SUMRP; 
+   legendDiffFlowPtRP->AddEntry(lyz2sumCommonHistRes->GetHistDiffFlowPtRP(),entryDiffLYZ2SUMPtRP->Data(),"p");
+  }
+  
+  //LYZ2PROD
+  if(plotLYZ2PRODPtRP && lyz2prodCommonHistRes)
   {
-   entryDiffLYZ2PtRP->Append("M = ");
-   (*entryDiffLYZ2PtRP)+=(Long_t)avMultDiffFlowLYZ2RP;
-   entryDiffLYZ2PtRP->Append(", N = ");
-   (*entryDiffLYZ2PtRP)+=(Long_t)nEvtsDiffFlowLYZ2RP; 
-   legendDiffFlowPtRP->AddEntry(lyz2CommonHistRes->GetHistDiffFlowPtRP(),entryDiffLYZ2PtRP->Data(),"p");
+   entryDiffLYZ2PRODPtRP->Append("M = ");
+   (*entryDiffLYZ2PRODPtRP)+=(Long_t)avMultDiffFlowLYZ2PRODRP;
+   entryDiffLYZ2PRODPtRP->Append(", N = ");
+   (*entryDiffLYZ2PRODPtRP)+=(Long_t)nEvtsDiffFlowLYZ2PRODRP; 
+   legendDiffFlowPtRP->AddEntry(lyz2prodCommonHistRes->GetHistDiffFlowPtRP(),entryDiffLYZ2PRODPtRP->Data(),"p");
   }
   
   //LYZEP
@@ -1931,7 +2369,9 @@ void compareFlowResults(TString type="ESD")
    legendDiffFlowPtRP->AddEntry(lyzepCommonHistRes->GetHistDiffFlowPtRP(),entryDiffLYZEPPtRP->Data(),"p");
   }
 
-  //drawing finally the legend in the 2nd pad:     
+  //drawing finally the legend in the 2nd pad:         
+  if(textDefault) textDefault->Draw();
+  
   if(legendDiffFlowPtRP)
   {
    legendDiffFlowPtRP->SetMargin(0.15);
@@ -1940,7 +2380,6 @@ void compareFlowResults(TString type="ESD")
  }// end of if(plotDiffFlowPtRP)
  //----------------------------------------------------------------------------------
  
  //----------------------------------------------------------------------------------
  //final drawing for differential flow (Eta, RP):
  if(plotDiffFlowEtaRP)
@@ -2006,10 +2445,15 @@ void compareFlowResults(TString type="ESD")
   { 
    //(qcCommonHistRes8->GetHistDiffFlowEtaRP())->Draw("E1PSAME");
   }
-  //LYZ2
-  if(plotLYZ2EtaRP && lyz2CommonHistRes)
+  //LYZ2SUM
+  if(plotLYZ2SUMEtaRP && lyz2sumCommonHistRes)
   { 
-   (lyz2CommonHistRes->GetHistDiffFlowEtaRP())->Draw("E1PSAME");
+   (lyz2sumCommonHistRes->GetHistDiffFlowEtaRP())->Draw("E1PSAME");
+  }
+  //LYZ2PROD
+  if(plotLYZ2PRODEtaRP && lyz2prodCommonHistRes)
+  { 
+   (lyz2prodCommonHistRes->GetHistDiffFlowEtaRP())->Draw("E1PSAME");
   }
   //LYZEP
   if(plotLYZEPEtaRP && lyzepCommonHistRes)
@@ -2020,29 +2464,30 @@ void compareFlowResults(TString type="ESD")
   //2nd pad is for legend:
   (diffFlowEtaAllCanvasRP->cd(2))->SetPad(0.75,0.0,1.0,1.0);
 
-  TLegend* legendDiffFlowEtaRP = new TLegend(0.02,0.25,0.97,0.75);
+  TLegend* legendDiffFlowEtaRP = new TLegend(0.02,0.12,0.97,0.70);
   legendDiffFlowEtaRP->SetTextFont(72);
   legendDiffFlowEtaRP->SetTextSize(0.06);
   
   //legend's entries:
-  TString *entryDiffMCEtaRP   = new TString("MC ....... ");
-  TString *entryDiffSPEtaRP   = new TString("SP ....... ");
-  TString *entryDiffGFC2EtaRP = new TString("GFC{2} ... ");
-  TString *entryDiffGFC4EtaRP = new TString("GFC{4} ... ");
-  TString *entryDiffGFC6EtaRP = new TString("GFC{6} ... ");
-  TString *entryDiffGFC8EtaRP = new TString("GFC{8} ... "); 
-  TString *entryDiffQC2EtaRP  = new TString("QC{2} .... ");
-  TString *entryDiffQC4EtaRP  = new TString("QC{4} .... ");
-  TString *entryDiffQC6EtaRP  = new TString("QC{6} .... ");
-  TString *entryDiffQC8EtaRP  = new TString("QC{8} .... ");
-  TString *entryDiffLYZ2EtaRP = new TString("LYZ ...... ");
-  TString *entryDiffLYZEPEtaRP = new TString("LYZEP ... ");
+  TString *entryDiffMCEtaRP       = new TString("MC ........ ");
+  TString *entryDiffSPEtaRP       = new TString("SP ........ ");
+  TString *entryDiffGFC2EtaRP     = new TString("GFC{2} .... ");
+  TString *entryDiffGFC4EtaRP     = new TString("GFC{4} .... ");
+  TString *entryDiffGFC6EtaRP     = new TString("GFC{6} .... ");
+  TString *entryDiffGFC8EtaRP     = new TString("GFC{8} .... "); 
+  TString *entryDiffQC2EtaRP      = new TString("QC{2} ..... ");
+  TString *entryDiffQC4EtaRP      = new TString("QC{4} ..... ");
+  TString *entryDiffQC6EtaRP      = new TString("QC{6} ..... ");
+  TString *entryDiffQC8EtaRP      = new TString("QC{8} ..... ");
+  TString *entryDiffLYZ2SUMEtaRP  = new TString("LYZ{sum} .. ");
+  TString *entryDiffLYZ2PRODEtaRP = new TString("LYZ{prod} . ");
+  TString *entryDiffLYZEPEtaRP    = new TString("LYZEP ..... ");
  
   //MC
   if(mcepCommonHistRes)
   {
-   (mcepCommonHistRes->GetHistDiffFlowEtaRP())->SetFillStyle(meshStyle);
-   (mcepCommonHistRes->GetHistDiffFlowEtaRP())->SetFillColor(meshColor);
+   (mcepCommonHistRes->GetHistDiffFlowEtaRP())->SetFillStyle(meshStyleDiffFlowEtaRP);
+   (mcepCommonHistRes->GetHistDiffFlowEtaRP())->SetFillColor(meshColorDiffFlowEtaRP);
    entryDiffMCEtaRP->Append("M = ");
    (*entryDiffMCEtaRP)+=(Long_t)avMultDiffFlowMCRP;
    entryDiffMCEtaRP->Append(", N = ");
@@ -2051,10 +2496,8 @@ void compareFlowResults(TString type="ESD")
   }
   
   //SP
-  if(spCommonHistRes)
+  if(plotSPEtaRP && spCommonHistRes)
   {
-   (spCommonHistRes->GetHistDiffFlowEtaRP())->SetFillStyle(meshStyle);
-   (spCommonHistRes->GetHistDiffFlowEtaRP())->SetFillColor(meshColor);
    entryDiffSPEtaRP->Append("M = ");
    (*entryDiffSPEtaRP)+=(Long_t)avMultDiffFlowSPRP;
    entryDiffSPEtaRP->Append(", N = ");
@@ -2130,14 +2573,24 @@ void compareFlowResults(TString type="ESD")
    legendDiffFlowEtaRP->AddEntry(qcCommonHistRes8->GetHistDiffFlowEtaRP(),entryDiffQC8EtaRP->Data(),"p");
   }
  
-  //LYZ2
-  if(plotLYZ2EtaRP && lyz2CommonHistRes)
+  //LYZ2SUM
+  if(plotLYZ2SUMEtaRP && lyz2sumCommonHistRes)
+  {
+   entryDiffLYZ2SUMEtaRP->Append("M = ");
+   (*entryDiffLYZ2SUMEtaRP)+=(Long_t)avMultDiffFlowLYZ2SUMRP;
+   entryDiffLYZ2SUMEtaRP->Append(", N = ");
+   (*entryDiffLYZ2SUMEtaRP)+=(Long_t)nEvtsDiffFlowLYZ2SUMRP; 
+   legendDiffFlowEtaRP->AddEntry(lyz2sumCommonHistRes->GetHistDiffFlowEtaRP(),entryDiffLYZ2SUMEtaRP->Data(),"p");
+  }
+  
+  //LYZ2PROD
+  if(plotLYZ2PRODEtaRP && lyz2prodCommonHistRes)
   {
-   entryDiffLYZ2EtaRP->Append("M = ");
-   (*entryDiffLYZ2EtaRP)+=(Long_t)avMultDiffFlowLYZ2RP;
-   entryDiffLYZ2EtaRP->Append(", N = ");
-   (*entryDiffLYZ2EtaRP)+=(Long_t)nEvtsDiffFlowLYZ2RP; 
-   legendDiffFlowEtaRP->AddEntry(lyz2CommonHistRes->GetHistDiffFlowEtaRP(),entryDiffLYZ2EtaRP->Data(),"p");
+   entryDiffLYZ2PRODEtaRP->Append("M = ");
+   (*entryDiffLYZ2PRODEtaRP)+=(Long_t)avMultDiffFlowLYZ2PRODRP;
+   entryDiffLYZ2PRODEtaRP->Append(", N = ");
+   (*entryDiffLYZ2PRODEtaRP)+=(Long_t)nEvtsDiffFlowLYZ2PRODRP; 
+   legendDiffFlowEtaRP->AddEntry(lyz2prodCommonHistRes->GetHistDiffFlowEtaRP(),entryDiffLYZ2PRODEtaRP->Data(),"p");
   }
   
   //LYZEP
@@ -2150,7 +2603,9 @@ void compareFlowResults(TString type="ESD")
    legendDiffFlowEtaRP->AddEntry(lyzepCommonHistRes->GetHistDiffFlowEtaRP(),entryDiffLYZEPEtaRP->Data(),"p");
   }
 
-  //drawing finally the legend in the 2nd pad:     
+  //drawing finally the legend in the 2nd pad: 
+  if(textDefault) textDefault->Draw();    
+  
   if(legendDiffFlowEtaRP)
   {
    legendDiffFlowEtaRP->SetMargin(0.15);
@@ -2158,7 +2613,421 @@ void compareFlowResults(TString type="ESD")
   }
  }// end of if(plotDiffFlowEtaRP)
  //----------------------------------------------------------------------------------
+ */
+ //----------------------------------------------------------------------------------
+ // final drawing for plot |(v{method}-v{MC})/v{MC}| as a function of pt for RPs  
+ if(plotDiffFlowPtRelativeToMCRP)
+ {  
+  TCanvas* diffFlowPtRelativeToMCRP = new TCanvas("Differential Flow (Pt) of RPs relative to MC","Differ1ential Flow (Pt) of RPs relative to MC",1000,600);
+  
+  diffFlowPtRelativeToMCRP->Divide(2,1);
+  //1st pad is for plot:
+  (diffFlowPtRelativeToMCRP->cd(1))->SetPad(0.0,0.0,0.75,1.0);
+  if(styleHistPt)
+  {
+   TH1D *styleHistPtReleativeToMC = new TH1D(*styleHistPt);
+   (styleHistPtReleativeToMC->GetYaxis())->SetRangeUser(-4.0,4.0);
+   (styleHistPtReleativeToMC->GetYaxis())->SetTitle("(v_{n}\{method\} - v_{n}\{MC\})/v_{n}\{MC\}");
+   styleHistPtReleativeToMC->Draw();
+  }
+  
+  TH1D *spDiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
+  TH1D *gfc2DiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
+  TH1D *gfc4DiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
+  TH1D *gfc6DiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
+  TH1D *gfc8DiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
+  TH1D *qc2DiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
+  TH1D *qc4DiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
+  TH1D *qc6DiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
+  TH1D *qc8DiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
+  TH1D *lyz2sumDiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
+  TH1D *lyz2prodDiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
+  TH1D *lyzepDiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
+    
+  if(mcepCommonHistRes && mcepCommonHistRes->GetHistDiffFlowPtRP())
+  {
+   for(Int_t p=1;p<iNbinsPt+1;p++)
+   {
+    Double_t dvnMC = (mcepCommonHistRes->GetHistDiffFlowPtRP())->GetBinContent(p);
+    
+    // SP:
+    Double_t dvnSP = 0.;
+    Double_t dvnErrorSP = 0.;
+    if(spCommonHistRes && spCommonHistRes->GetHistDiffFlowPtRP())
+    {
+     dvnSP = (spCommonHistRes->GetHistDiffFlowPtRP())->GetBinContent(p);
+     dvnErrorSP = (spCommonHistRes->GetHistDiffFlowPtRP())->GetBinError(p);
+    }
+    if(dvnMC!=0. && dvnSP!=0.) 
+    {
+     spDiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnSP-dvnMC)/dvnMC);
+     spDiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorSP/dvnMC);
+    }
+    
+    // GFC{2}:
+    Double_t dvnGFC2 = 0.;
+    Double_t dvnErrorGFC2 = 0.;
+    if(gfcCommonHistRes2 && gfcCommonHistRes2->GetHistDiffFlowPtRP())
+    {
+     dvnGFC2 = (gfcCommonHistRes2->GetHistDiffFlowPtRP())->GetBinContent(p);
+     dvnErrorGFC2 = (gfcCommonHistRes2->GetHistDiffFlowPtRP())->GetBinError(p);
+    }
+    if(dvnMC!=0. && dvnGFC2!=0.) 
+    {
+     gfc2DiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnGFC2-dvnMC)/dvnMC);
+     gfc2DiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorGFC2/dvnMC);
+    }
+    
+    // GFC{4}:
+    Double_t dvnGFC4 = 0.;
+    Double_t dvnErrorGFC4 = 0.;
+    if(gfcCommonHistRes4 && gfcCommonHistRes4->GetHistDiffFlowPtRP())
+    {
+     dvnGFC4 = (gfcCommonHistRes4->GetHistDiffFlowPtRP())->GetBinContent(p);
+     dvnErrorGFC4 = (gfcCommonHistRes4->GetHistDiffFlowPtRP())->GetBinError(p);
+    }
+    if(dvnMC!=0. && dvnGFC4!=0.) 
+    {
+     gfc4DiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnGFC4-dvnMC)/dvnMC);
+     gfc4DiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorGFC4/dvnMC);
+    }
+    
+    // GFC{6}:
+    Double_t dvnGFC6 = 0.;
+    Double_t dvnErrorGFC6 = 0.;
+    if(gfcCommonHistRes6 && gfcCommonHistRes6->GetHistDiffFlowPtRP())
+    {
+     dvnGFC6 = (gfcCommonHistRes6->GetHistDiffFlowPtRP())->GetBinContent(p);
+     dvnErrorGFC6 = (gfcCommonHistRes6->GetHistDiffFlowPtRP())->GetBinError(p);
+    }
+    if(dvnMC!=0. && dvnGFC6!=0.) 
+    {
+     gfc6DiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnGFC6-dvnMC)/dvnMC);
+     gfc6DiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorGFC6/dvnMC);
+    }
+    
+    // GFC{8}:
+    Double_t dvnGFC8 = 0.;
+    Double_t dvnErrorGFC8 = 0.;
+    if(gfcCommonHistRes8 && gfcCommonHistRes8->GetHistDiffFlowPtRP())
+    {
+     dvnGFC8 = (gfcCommonHistRes8->GetHistDiffFlowPtRP())->GetBinContent(p);
+     dvnErrorGFC8 = (gfcCommonHistRes8->GetHistDiffFlowPtRP())->GetBinError(p);
+    }
+    if(dvnMC!=0. && dvnGFC8!=0.) 
+    {
+     gfc8DiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnGFC8-dvnMC)/dvnMC);
+     gfc8DiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorGFC8/dvnMC);
+    }
+    
+    // QC{2}:
+    Double_t dvnQC2 = 0.;
+    Double_t dvnErrorQC2 = 0.;
+    if(qcCommonHistRes2 && qcCommonHistRes2->GetHistDiffFlowPtRP())
+    {
+     dvnQC2 = (qcCommonHistRes2->GetHistDiffFlowPtRP())->GetBinContent(p);
+     dvnErrorQC2 = (qcCommonHistRes2->GetHistDiffFlowPtRP())->GetBinError(p);
+    }
+    if(dvnMC!=0. && dvnQC2!=0.) 
+    {
+     qc2DiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnQC2-dvnMC)/dvnMC);
+     qc2DiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorQC2/dvnMC);
+    }
+    
+    // QC{4}:
+    Double_t dvnQC4 = 0.;
+    Double_t dvnErrorQC4 = 0.;
+    if(qcCommonHistRes4 && qcCommonHistRes4->GetHistDiffFlowPtRP())
+    {
+     dvnQC4 = (qcCommonHistRes4->GetHistDiffFlowPtRP())->GetBinContent(p);
+     dvnErrorQC4 = (qcCommonHistRes4->GetHistDiffFlowPtRP())->GetBinError(p);
+    }
+    if(dvnMC!=0. && dvnQC4!=0.) 
+    {
+     qc4DiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnQC4-dvnMC)/dvnMC);
+     qc4DiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorQC4/dvnMC);
+    }
+    
+    // QC{6}:
+    Double_t dvnQC6 = 0.;
+    Double_t dvnErrorQC6 = 0.;
+    if(qcCommonHistRes6 && qcCommonHistRes6->GetHistDiffFlowPtRP())
+    {
+     dvnQC6 = (qcCommonHistRes6->GetHistDiffFlowPtRP())->GetBinContent(p);
+     dvnErrorQC6 = (qcCommonHistRes6->GetHistDiffFlowPtRP())->GetBinError(p);
+    }
+    if(dvnMC!=0. && dvnQC6!=0.) 
+    {
+     qc6DiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnQC6-dvnMC)/dvnMC);
+     qc6DiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorQC6/dvnMC);
+    }
+    
+    // QC{8}:
+    Double_t dvnQC8 = 0.;
+    Double_t dvnErrorQC8 = 0.;
+    if(qcCommonHistRes8 && qcCommonHistRes8->GetHistDiffFlowPtRP())
+    {
+     dvnQC8 = (qcCommonHistRes8->GetHistDiffFlowPtRP())->GetBinContent(p);
+     dvnErrorQC8 = (qcCommonHistRes8->GetHistDiffFlowPtRP())->GetBinError(p);
+    }
+    if(dvnMC!=0. && dvnQC8!=0.) 
+    {
+     qc8DiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnQC8-dvnMC)/dvnMC);
+     qc8DiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorQC8/dvnMC);
+    }
+    
+    // LYZ2SUM:
+    Double_t dvnLYZ2SUM = 0.;
+    Double_t dvnErrorLYZ2SUM = 0.;
+    if(lyz2sumCommonHistRes && lyz2sumCommonHistRes->GetHistDiffFlowPtRP())
+    {
+     dvnLYZ2SUM = (lyz2sumCommonHistRes->GetHistDiffFlowPtRP())->GetBinContent(p);
+     dvnErrorLYZ2SUM = (lyz2sumCommonHistRes->GetHistDiffFlowPtRP())->GetBinError(p);
+    }
+    if(dvnMC!=0. && dvnLYZ2SUM!=0.) 
+    {
+     lyz2sumDiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnLYZ2SUM-dvnMC)/dvnMC);
+     lyz2sumDiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorLYZ2SUM/dvnMC);
+    }
+    
+    // LYZ2PROD:
+    Double_t dvnLYZ2PROD = 0.;
+    Double_t dvnErrorLYZ2PROD = 0.;
+    if(lyz2prodCommonHistRes && lyz2prodCommonHistRes->GetHistDiffFlowPtRP())
+    {
+     dvnLYZ2PROD = (lyz2prodCommonHistRes->GetHistDiffFlowPtRP())->GetBinContent(p);
+     dvnErrorLYZ2PROD = (lyz2prodCommonHistRes->GetHistDiffFlowPtRP())->GetBinError(p);
+    }
+    if(dvnMC!=0. && dvnLYZ2PROD!=0.) 
+    {
+     lyz2prodDiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnLYZ2PROD-dvnMC)/dvnMC);
+     lyz2prodDiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorLYZ2PROD/dvnMC);
+    }
+      
+    // LYZEP:
+    Double_t dvnLYZEP = 0.;
+    Double_t dvnErrorLYZEP = 0.;
+    if(lyzepCommonHistRes && lyzepCommonHistRes->GetHistDiffFlowPtRP())
+    {
+     dvnLYZEP = (lyzepCommonHistRes->GetHistDiffFlowPtRP())->GetBinContent(p);
+     dvnErrorLYZEP = (lyzepCommonHistRes->GetHistDiffFlowPtRP())->GetBinError(p);
+    }
+    if(dvnMC!=0. && dvnLYZEP!=0.) 
+    {
+     lyzepDiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnLYZEP-dvnMC)/dvnMC);
+     lyzepDiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorLYZEP/dvnMC);
+    }  
+   } // end of for(Int_t p=1;p<iNbinsPt+1;p++)
+  } // end of if(mcepCommonHistRes->GetHistDiffFlowPtRP())
+  
+  
+  // final drawings: 
+  spDiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorSP);
+  spDiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleSP);
+  if(plotSPRelativeToMCRP && spCommonHistRes) spDiffFlowPtRelativeToMCRP->Draw("E1PSAME");
+  
+  gfc2DiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorGFC2);
+  gfc2DiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleGFC2);
+  if(plotGFC2RelativeToMCRP && gfcCommonHistRes2) gfc2DiffFlowPtRelativeToMCRP->Draw("E1PSAME");
+  
+  gfc4DiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorGFC4);
+  gfc4DiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleGFC4);
+  if(plotGFC4RelativeToMCRP && gfcCommonHistRes4) gfc4DiffFlowPtRelativeToMCRP->Draw("E1PSAME");
+  
+  gfc6DiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorGFC6);
+  gfc6DiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleGFC6);
+  if(plotGFC6RelativeToMCRP && gfcCommonHistRes6) gfc6DiffFlowPtRelativeToMCRP->Draw("E1PSAME");
+  
+  gfc8DiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorGFC8);
+  gfc8DiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleGFC8);
+  if(plotGFC8RelativeToMCRP && gfcCommonHistRes8) gfc8DiffFlowPtRelativeToMCRP->Draw("E1PSAME");
+  
+  qc2DiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorQC2);
+  qc2DiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleQC2);
+  if(plotQC2RelativeToMCRP && qcCommonHistRes2) qc2DiffFlowPtRelativeToMCRP->Draw("PSAME");
+  
+  qc4DiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorQC4);
+  qc4DiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleQC4);
+  if(plotQC4RelativeToMCRP && qcCommonHistRes4) qc4DiffFlowPtRelativeToMCRP->Draw("PSAME");
+  
+  qc6DiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorQC6);
+  qc6DiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleQC6);
+  if(plotQC6RelativeToMCRP && qcCommonHistRes6) qc6DiffFlowPtRelativeToMCRP->Draw("PSAME");
+  
+  qc8DiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorQC8);
+  qc8DiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleQC8);
+  if(plotQC8RelativeToMCRP && qcCommonHistRes8) qc8DiffFlowPtRelativeToMCRP->Draw("PSAME");
+  
+  lyz2sumDiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorLYZ2SUM);
+  lyz2sumDiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleLYZ2SUM);
+  if(plotLYZ2SUMRelativeToMCRP && lyz2sumCommonHistRes) lyz2sumDiffFlowPtRelativeToMCRP->Draw("E1PSAME");
+  
+  lyz2prodDiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorLYZ2SUM);
+  lyz2prodDiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleLYZ2SUM);
+  if(plotLYZ2SUMRelativeToMCRP && lyz2prodCommonHistRes) lyz2prodDiffFlowPtRelativeToMCRP->Draw("E1PSAME");
+  
+  lyzepDiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorLYZEP);
+  lyzepDiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleLYZEP);
+  if(plotLYZEPRelativeToMCRP && lyzepCommonHistRes) lyzepDiffFlowPtRelativeToMCRP->Draw("E1PSAME");
+  
+  //2nd pad is for legend:
+  (diffFlowPtRelativeToMCRP->cd(2))->SetPad(0.75,0.0,1.0,1.0);
+  
+  TLegend* legendDiffFlowPtRP = new TLegend(0.02,0.12,0.97,0.70);
+  legendDiffFlowPtRP->SetTextFont(72);
+  legendDiffFlowPtRP->SetTextSize(0.06);
+  //legend's entries:Pt 
+  TString *entryDiffMCPtRP       = new TString("MC ........ ");
+  TString *entryDiffSPPtRP       = new TString("SP ........ ");
+  TString *entryDiffGFC2PtRP     = new TString("GFC{2} .... ");
+  TString *entryDiffGFC4PtRP     = new TString("GFC{4} .... ");
+  TString *entryDiffGFC6PtRP     = new TString("GFC{6} .... ");
+  TString *entryDiffGFC8PtRP     = new TString("GFC{8} .... "); 
+  TString *entryDiffQC2PtRP      = new TString("QC{2} ..... ");
+  TString *entryDiffQC4PtRP      = new TString("QC{4} ..... ");
+  TString *entryDiffQC6PtRP      = new TString("QC{6} ..... ");
+  TString *entryDiffQC8PtRP      = new TString("QC{8} ..... ");
+  TString *entryDiffLYZ2SUMPtRP  = new TString("LYZ{sum} .. ");
+  TString *entryDiffLYZ2PRODPtRP = new TString("LYZ{prod} . ");
+  TString *entryDiffLYZEPPtRP    = new TString("LYZEP ..... ");
+  
+  //MC
+  if(mcepCommonHistRes)
+  {
+   (mcepCommonHistRes->GetHistDiffFlowPtRP())->SetFillStyle(meshStyleDiffFlowPtRP);
+   (mcepCommonHistRes->GetHistDiffFlowPtRP())->SetFillColor(meshColorDiffFlowPtRP);
+   entryDiffMCPtRP->Append("M = ");
+   (*entryDiffMCPtRP)+=(Long_t)avMultDiffFlowMCRP;
+   entryDiffMCPtRP->Append(", N = ");
+   (*entryDiffMCPtRP)+=(Long_t)nEvtsDiffFlowMCRP; 
+   //legendDiffFlowPtRP->AddEntry(mcepCommonHistRes->GetHistDiffFlowPtRP(),entryDiffMCPtRP->Data(),"f");
+  }
+  
+  //SP
+  if(plotSPPtRP && spCommonHistRes)
+  {
+   entryDiffSPPtRP->Append("M = ");
+   (*entryDiffSPPtRP)+=(Long_t)avMultDiffFlowSPRP;
+   entryDiffSPPtRP->Append(", N = ");
+   (*entryDiffSPPtRP)+=(Long_t)nEvtsDiffFlowSPRP; 
+   if(plotSPRelativeToMCRP) legendDiffFlowPtRP->AddEntry(spCommonHistRes->GetHistDiffFlowPtRP(),entryDiffSPPtRP->Data(),"p");
+  }
 
+  //GFC
+  if(plotGFC2PtRP && gfcCommonHistRes2)
+  {
+   entryDiffGFC2PtRP->Append("M = ");
+   (*entryDiffGFC2PtRP)+=(Long_t)avMultDiffFlowGFCRP;
+   entryDiffGFC2PtRP->Append(", N = ");
+   (*entryDiffGFC2PtRP)+=(Long_t)nEvtsDiffFlowGFCRP; 
+   if(plotGFC2RelativeToMCRP) legendDiffFlowPtRP->AddEntry(gfcCommonHistRes2->GetHistDiffFlowPtRP(),entryDiffGFC2PtRP->Data(),"p");
+  }
+  if(plotGFC4PtRP && gfcCommonHistRes4)
+  {
+   entryDiffGFC4PtRP->Append("M = ");
+   (*entryDiffGFC4PtRP)+=(Long_t)avMultDiffFlowGFCRP;
+   entryDiffGFC4PtRP->Append(", N = ");
+   (*entryDiffGFC4PtRP)+=(Long_t)nEvtsDiffFlowGFCRP; 
+   if(plotGFC4RelativeToMCRP) legendDiffFlowPtRP->AddEntry(gfcCommonHistRes4->GetHistDiffFlowPtRP(),entryDiffGFC4PtRP->Data(),"p");
+  }
+  if(plotGFC6PtRP && gfcCommonHistRes6)
+  {
+   entryDiffGFC6PtRP->Append("M = ");
+   (*entryDiffGFC6PtRP)+=(Long_t)avMultDiffFlowGFCRP;
+   entryDiffGFC6PtRP->Append(", N = ");
+   (*entryDiffGFC6PtRP)+=(Long_t)nEvtsDiffFlowGFCRP; 
+   if(plotGFC6RelativeToMCRP) legendDiffFlowPtRP->AddEntry(gfcCommonHistRes6->GetHistDiffFlowPtRP(),entryDiffGFC6PtRP->Data(),"p");
+  } 
+  if(plotGFC8PtRP && gfcCommonHistRes8)
+  {
+   entryDiffGFC8PtRP->Append("M = ");
+   (*entryDiffGFC8PtRP)+=(Long_t)avMultDiffFlowGFCRP;
+   entryDiffGFC8PtRP->Append(", N = ");
+   (*entryDiffGFC8PtRP)+=(Long_t)nEvtsDiffFlowGFCRP; 
+   if(plotGFC8RelativeToMCRP) legendDiffFlowPtRP->AddEntry(gfcCommonHistRes8->GetHistDiffFlowPtRP(),entryDiffGFC8PtRP->Data(),"p");
+  }  
+  
+  //QC
+  if(plotQC2PtRP && qcCommonHistRes2)
+  {
+   entryDiffQC2PtRP->Append("M = ");
+   (*entryDiffQC2PtRP)+=(Long_t)avMultDiffFlowQC2RP;
+   entryDiffQC2PtRP->Append(", N = ");
+   (*entryDiffQC2PtRP)+=(Long_t)nEvtsDiffFlowQC2RP; 
+   if(plotQC2RelativeToMCRP) legendDiffFlowPtRP->AddEntry(qcCommonHistRes2->GetHistDiffFlowPtRP(),entryDiffQC2PtRP->Data(),"p");
+  }
+  if(plotQC4PtRP && qcCommonHistRes4)
+  {
+   entryDiffQC4PtRP->Append("M = ");
+   (*entryDiffQC4PtRP)+=(Long_t)avMultDiffFlowQC4RP;
+   entryDiffQC4PtRP->Append(", N = ");
+   (*entryDiffQC4PtRP)+=(Long_t)nEvtsDiffFlowQC4RP; 
+   if(plotQC4RelativeToMCRP) legendDiffFlowPtRP->AddEntry(qcCommonHistRes4->GetHistDiffFlowPtRP(),entryDiffQC4PtRP->Data(),"p");
+  }
+  if(plotQC6PtRP && qcCommonHistRes6)
+  {
+   entryDiffQC6PtRP->Append("M = ");
+   (*entryDiffQC6PtRP)+=(Long_t)avMultDiffFlowQC6RP;
+   entryDiffQC6PtRP->Append(", N = ");
+   (*entryDiffQC6PtRP)+=(Long_t)nEvtsDiffFlowQC6RP; 
+   if(plotQC6RelativeToMCRP) legendDiffFlowPtRP->AddEntry(qcCommonHistRes6->GetHistDiffFlowPtRP(),entryDiffQC6PtRP->Data(),"p");
+  }
+  if(plotQC8PtRP && qcCommonHistRes8)
+  {
+   entryDiffQC8PtRP->Append("M = ");
+   (*entryDiffQC8PtRP)+=(Long_t)avMultDiffFlowQC8RP;
+   entryDiffQC8PtRP->Append(", N = ");
+   (*entryDiffQC8PtRP)+=(Long_t)nEvtsDiffFlowQC8RP; 
+   if(plotQC8RelativeToMCRP) legendDiffFlowPtRP->AddEntry(qcCommonHistRes8->GetHistDiffFlowPtRP(),entryDiffQC8PtRP->Data(),"p");
+  }
+  
+  //LYZ2SUM
+  if(plotLYZ2SUMPtRP && lyz2sumCommonHistRes)
+  {
+   entryDiffLYZ2SUMPtRP->Append("M = ");
+   (*entryDiffLYZ2SUMPtRP)+=(Long_t)avMultDiffFlowLYZ2SUMRP;
+   entryDiffLYZ2SUMPtRP->Append(", N = ");
+   (*entryDiffLYZ2SUMPtRP)+=(Long_t)nEvtsDiffFlowLYZ2SUMRP; 
+   if(plotLYZ2SUMRelativeToMCRP) legendDiffFlowPtRP->AddEntry(lyz2sumCommonHistRes->GetHistDiffFlowPtRP(),entryDiffLYZ2SUMPtRP->Data(),"p");
+  }
+  
+  //LYZ2PROD
+  if(plotLYZ2PRODPtRP && lyz2prodCommonHistRes)
+  {
+   entryDiffLYZ2PRODPtRP->Append("M = ");
+   (*entryDiffLYZ2PRODPtRP)+=(Long_t)avMultDiffFlowLYZ2PRODRP;
+   entryDiffLYZ2PRODPtRP->Append(", N = ");
+   (*entryDiffLYZ2PRODPtRP)+=(Long_t)nEvtsDiffFlowLYZ2PRODRP; 
+   if(plotLYZ2PRODRelativeToMCRP) legendDiffFlowPtRP->AddEntry(lyz2prodCommonHistRes->GetHistDiffFlowPtRP(),entryDiffLYZ2PRODPtRP->Data(),"p");
+  }
+  
+  //LYZEP
+  if(plotLYZEPPtRP && lyzepCommonHistRes)
+  {
+   entryDiffLYZEPPtRP->Append("M = ");
+   (*entryDiffLYZEPPtRP)+=(Long_t)avMultDiffFlowLYZEPRP;
+   entryDiffLYZEPPtRP->Append(", N = ");
+   (*entryDiffLYZEPPtRP)+=(Long_t)nEvtsDiffFlowLYZEPRP; 
+   if(plotLYZEPRelativeToMCRP) legendDiffFlowPtRP->AddEntry(lyzepCommonHistRes->GetHistDiffFlowPtRP(),entryDiffLYZEPPtRP->Data(),"p");
+  }
+
+  //drawing finally the legend in the 2nd pad:         
+  if(textDefault) textDefault->Draw();
+  
+  if(legendDiffFlowPtRP)
+  {
+   legendDiffFlowPtRP->SetMargin(0.15);
+   legendDiffFlowPtRP->Draw();
+  } 
+ } 
+ //----------------------------------------------------------------------------------
  //----------------------------------------------------------------------------------
  //final drawing for differential flow (Pt, POI):
  if(plotDiffFlowPtPOI)
@@ -2217,17 +3086,22 @@ void compareFlowResults(TString type="ESD")
    (qcCommonHistRes4->GetHistDiffFlowPtPOI())->Draw("E1PSAME");
   }
   if(plotQC6PtPOI && qcCommonHistRes6)
-  { kTRUE;
+  { 
    //(qcCommonHistRes6->GetHistDiffFlowPtPOI())->Draw("E1PSAME");
   }
   if(plotQC8PtPOI && qcCommonHistRes8)
   { 
    //(qcCommonHistRes8->GetHistDiffFlowPtPOI())->Draw("E1PSAME");
   }
-  //LYZ2
-  if(plotLYZ2PtPOI && lyz2CommonHistRes)
+  //LYZ2SUM
+  if(plotLYZ2SUMPtPOI && lyz2sumCommonHistRes)
   { 
-   (lyz2CommonHistRes->GetHistDiffFlowPtPOI())->Draw("E1PSAME");
+   (lyz2sumCommonHistRes->GetHistDiffFlowPtPOI())->Draw("E1PSAME");
+  }
+  //LYZ2PROD
+  if(plotLYZ2PRODPtPOI && lyz2prodCommonHistRes)
+  { 
+   (lyz2prodCommonHistRes->GetHistDiffFlowPtPOI())->Draw("E1PSAME");
   }
   //LYZEP
   if(plotLYZEPPtPOI && lyzepCommonHistRes)
@@ -2238,29 +3112,30 @@ void compareFlowResults(TString type="ESD")
   //2nd pad is for legend:
   (diffFlowPtAllCanvasPOI->cd(2))->SetPad(0.75,0.0,1.0,1.0);
 
-  TLegend* legendDiffFlowPtPOI = new TLegend(0.02,0.25,0.97,0.75);
+  TLegend* legendDiffFlowPtPOI = new TLegend(0.02,0.12,0.97,0.70);
   legendDiffFlowPtPOI->SetTextFont(72);
   legendDiffFlowPtPOI->SetTextSize(0.06);
  
   //legend's entries:
-  TString *entryDiffMCPtPOI   = new TString("MC ....... ");
-  TString *entryDiffSPPtPOI   = new TString("SP ....... ");
-  TString *entryDiffGFC2PtPOI = new TString("GFC{2} ... ");
-  TString *entryDiffGFC4PtPOI = new TString("GFC{4} ... ");
-  TString *entryDiffGFC6PtPOI = new TString("GFC{6} ... ");
-  TString *entryDiffGFC8PtPOI = new TString("GFC{8} ... "); 
-  TString *entryDiffQC2PtPOI  = new TString("QC{2} .... ");
-  TString *entryDiffQC4PtPOI  = new TString("QC{4} .... ");
-  TString *entryDiffQC6PtPOI  = new TString("QC{6} .... ");
-  TString *entryDiffQC8PtPOI  = new TString("QC{8} .... ");
-  TString *entryDiffLYZ2PtPOI = new TString("LYZ ...... ");
-  TString *entryDiffLYZEPPtPOI = new TString("LYZEP ... "); 
+  TString *entryDiffMCPtPOI       = new TString("MC ........ ");
+  TString *entryDiffSPPtPOI       = new TString("SP ........ ");
+  TString *entryDiffGFC2PtPOI     = new TString("GFC{2} .... ");
+  TString *entryDiffGFC4PtPOI     = new TString("GFC{4} .... ");
+  TString *entryDiffGFC6PtPOI     = new TString("GFC{6} .... ");
+  TString *entryDiffGFC8PtPOI     = new TString("GFC{8} .... "); 
+  TString *entryDiffQC2PtPOI      = new TString("QC{2} ..... ");
+  TString *entryDiffQC4PtPOI      = new TString("QC{4} ..... ");
+  TString *entryDiffQC6PtPOI      = new TString("QC{6} ..... ");
+  TString *entryDiffQC8PtPOI      = new TString("QC{8} ..... ");
+  TString *entryDiffLYZ2SUMPtPOI  = new TString("LYZ{sum} .. ");
+  TString *entryDiffLYZ2PRODPtPOI = new TString("LYZ{prod} . ");
+  TString *entryDiffLYZEPPtPOI    = new TString("LYZEP ..... "); 
  
   //MC
   if(mcepCommonHistRes)
   {
-   (mcepCommonHistRes->GetHistDiffFlowPtPOI())->SetFillStyle(meshStyle);
-   (mcepCommonHistRes->GetHistDiffFlowPtPOI())->SetFillColor(meshColor);
+   (mcepCommonHistRes->GetHistDiffFlowPtPOI())->SetFillStyle(meshStyleDiffFlowPtPOI);
+   (mcepCommonHistRes->GetHistDiffFlowPtPOI())->SetFillColor(meshColorDiffFlowPtPOI);
    entryDiffMCPtPOI->Append("M = ");
    (*entryDiffMCPtPOI)+=(Long_t)avMultDiffFlowMCPOI;
    entryDiffMCPtPOI->Append(", N = ");
@@ -2269,10 +3144,8 @@ void compareFlowResults(TString type="ESD")
   }
   
   //SP
-  if(spCommonHistRes)
+  if(plotSPPtPOI && spCommonHistRes)
   {
-   (spCommonHistRes->GetHistDiffFlowPtPOI())->SetFillStyle(meshStyle);
-   (spCommonHistRes->GetHistDiffFlowPtPOI())->SetFillColor(meshColor);
    entryDiffSPPtPOI->Append("M = ");
    (*entryDiffSPPtPOI)+=(Long_t)avMultDiffFlowSPPOI;
    entryDiffSPPtPOI->Append(", N = ");
@@ -2348,14 +3221,24 @@ void compareFlowResults(TString type="ESD")
    legendDiffFlowPtPOI->AddEntry(qcCommonHistRes8->GetHistDiffFlowPtPOI(),entryDiffQC8PtPOI->Data(),"p");
   }
  
-  //LYZ2
-  if(plotLYZ2PtPOI && lyz2CommonHistRes)
+  //LYZ2SUM
+  if(plotLYZ2SUMPtPOI && lyz2sumCommonHistRes)
+  {
+   entryDiffLYZ2SUMPtPOI->Append("M = ");
+   (*entryDiffLYZ2SUMPtPOI)+=(Long_t)avMultDiffFlowLYZ2SUMPOI;
+   entryDiffLYZ2SUMPtPOI->Append(", N = ");
+   (*entryDiffLYZ2SUMPtPOI)+=(Long_t)nEvtsDiffFlowLYZ2SUMPOI; 
+   legendDiffFlowPtPOI->AddEntry(lyz2sumCommonHistRes->GetHistDiffFlowPtPOI(),entryDiffLYZ2SUMPtPOI->Data(),"p");
+  }
+  
+  //LYZ2PROD
+  if(plotLYZ2PRODPtPOI && lyz2prodCommonHistRes)
   {
-   entryDiffLYZ2PtPOI->Append("M = ");
-   (*entryDiffLYZ2PtPOI)+=(Long_t)avMultDiffFlowLYZ2POI;
-   entryDiffLYZ2PtPOI->Append(", N = ");
-   (*entryDiffLYZ2PtPOI)+=(Long_t)nEvtsDiffFlowLYZ2POI; 
-   legendDiffFlowPtPOI->AddEntry(lyz2CommonHistRes->GetHistDiffFlowPtPOI(),entryDiffLYZ2PtPOI->Data(),"p");
+   entryDiffLYZ2PRODPtPOI->Append("M = ");
+   (*entryDiffLYZ2PRODPtPOI)+=(Long_t)avMultDiffFlowLYZ2PRODPOI;
+   entryDiffLYZ2PRODPtPOI->Append(", N = ");
+   (*entryDiffLYZ2PRODPtPOI)+=(Long_t)nEvtsDiffFlowLYZ2PRODPOI; 
+   legendDiffFlowPtPOI->AddEntry(lyz2prodCommonHistRes->GetHistDiffFlowPtPOI(),entryDiffLYZ2PRODPtPOI->Data(),"p");
   }
   
   //LYZEP
@@ -2368,7 +3251,9 @@ void compareFlowResults(TString type="ESD")
    legendDiffFlowPtPOI->AddEntry(lyzepCommonHistRes->GetHistDiffFlowPtPOI(),entryDiffLYZEPPtPOI->Data(),"p");
   }
 
-  //drawing finally the legend in the 2nd pad:     
+  //drawing finally the legend in the 2nd pad: 
+  if(textDefault) textDefault->Draw();
+          
   if(legendDiffFlowPtPOI)
   {
    legendDiffFlowPtPOI->SetMargin(0.15);
@@ -2376,7 +3261,7 @@ void compareFlowResults(TString type="ESD")
   }
  }//end of if(plotDiffFlowPtPOI)
  //----------------------------------------------------------------------------------
+
 
  //----------------------------------------------------------------------------------
  //final drawing for differential flow (Eta, POI):
@@ -2443,10 +3328,15 @@ void compareFlowResults(TString type="ESD")
   { 
    //(qcCommonHistRes8->GetHistDiffFlowEtaPOI())->Draw("E1PSAME");
   }
-  //LYZ2
-  if(plotLYZ2EtaPOI && lyz2CommonHistRes)
+  //LYZ2SUM
+  if(plotLYZ2SUMEtaPOI && lyz2sumCommonHistRes)
+  { 
+   (lyz2sumCommonHistRes->GetHistDiffFlowEtaPOI())->Draw("E1PSAME");
+  }
+  //LYZ2PROD
+  if(plotLYZ2PRODEtaPOI && lyz2prodCommonHistRes)
   { 
-   (lyz2CommonHistRes->GetHistDiffFlowEtaPOI())->Draw("E1PSAME");
+   (lyz2prodCommonHistRes->GetHistDiffFlowEtaPOI())->Draw("E1PSAME");
   }
   //LYZEP
   if(plotLYZEPEtaPOI && lyzepCommonHistRes)
@@ -2457,29 +3347,30 @@ void compareFlowResults(TString type="ESD")
   //2nd pad is for legend:
   (diffFlowEtaAllCanvasPOI->cd(2))->SetPad(0.75,0.0,1.0,1.0);
  
-  TLegend* legendDiffFlowEtaPOI = new TLegend(0.02,0.25,0.97,0.75);
+  TLegend* legendDiffFlowEtaPOI = new TLegend(0.02,0.12,0.97,0.70);
   legendDiffFlowEtaPOI->SetTextFont(72);
   legendDiffFlowEtaPOI->SetTextSize(0.06);
  
   //legend's entries:
-  TString *entryDiffMCEtaPOI    = new TString("MC ....... ");
-  TString *entryDiffSPEtaPOI    = new TString("SP ....... ");
-  TString *entryDiffGFC2EtaPOI  = new TString("GFC{2} ... ");
-  TString *entryDiffGFC4EtaPOI  = new TString("GFC{4} ... ");
-  TString *entryDiffGFC6EtaPOI  = new TString("GFC{6} ... ");
-  TString *entryDiffGFC8EtaPOI  = new TString("GFC{8} ... "); 
-  TString *entryDiffQC2EtaPOI   = new TString("QC{2} .... ");
-  TString *entryDiffQC4EtaPOI   = new TString("QC{4} .... ");
-  TString *entryDiffQC6EtaPOI   = new TString("QC{6} .... ");
-  TString *entryDiffQC8EtaPOI   = new TString("QC{8} .... ");
-  TString *entryDiffLYZ2EtaPOI  = new TString("LYZ ...... ");
-  TString *entryDiffLYZEPEtaPOI = new TString("LYZEP ... ");
+  TString *entryDiffMCEtaPOI       = new TString("MC ........ ");
+  TString *entryDiffSPEtaPOI       = new TString("SP ........ ");
+  TString *entryDiffGFC2EtaPOI     = new TString("GFC{2} .... ");
+  TString *entryDiffGFC4EtaPOI     = new TString("GFC{4} .... ");
+  TString *entryDiffGFC6EtaPOI     = new TString("GFC{6} .... ");
+  TString *entryDiffGFC8EtaPOI     = new TString("GFC{8} .... "); 
+  TString *entryDiffQC2EtaPOI      = new TString("QC{2} ..... ");
+  TString *entryDiffQC4EtaPOI      = new TString("QC{4} ..... ");
+  TString *entryDiffQC6EtaPOI      = new TString("QC{6} ..... ");
+  TString *entryDiffQC8EtaPOI      = new TString("QC{8} ..... ");
+  TString *entryDiffLYZ2SUMEtaPOI  = new TString("LYZ{sum} .. ");
+  TString *entryDiffLYZ2PRODEtaPOI = new TString("LYZ{prod} . ");
+  TString *entryDiffLYZEPEtaPOI    = new TString("LYZEP ..... ");
  
   //MC
   if(mcepCommonHistRes)
   {
-   (mcepCommonHistRes->GetHistDiffFlowEtaPOI())->SetFillStyle(meshStyle);
-   (mcepCommonHistRes->GetHistDiffFlowEtaPOI())->SetFillColor(meshColor);
+   (mcepCommonHistRes->GetHistDiffFlowEtaPOI())->SetFillStyle(meshStyleDiffFlowEtaPOI);
+   (mcepCommonHistRes->GetHistDiffFlowEtaPOI())->SetFillColor(meshColorDiffFlowEtaPOI);
    entryDiffMCEtaPOI->Append("M = ");
    (*entryDiffMCEtaPOI)+=(Long_t)avMultDiffFlowMCPOI;
    entryDiffMCEtaPOI->Append(", N = ");
@@ -2488,10 +3379,8 @@ void compareFlowResults(TString type="ESD")
   }
   
   //SP
-  if(spCommonHistRes)
+  if(plotSPEtaPOI && spCommonHistRes)
   {
-   (spCommonHistRes->GetHistDiffFlowEtaPOI())->SetFillStyle(meshStyle);
-   (spCommonHistRes->GetHistDiffFlowEtaPOI())->SetFillColor(meshColor);
    entryDiffSPEtaPOI->Append("M = ");
    (*entryDiffSPEtaPOI)+=(Long_t)avMultDiffFlowSPPOI;
    entryDiffSPEtaPOI->Append(", N = ");
@@ -2567,14 +3456,24 @@ void compareFlowResults(TString type="ESD")
    legendDiffFlowEtaPOI->AddEntry(qcCommonHistRes8->GetHistDiffFlowEtaPOI(),entryDiffQC8EtaPOI->Data(),"p");
   }
  
-  //LYZ2
-  if(plotLYZ2EtaPOI && lyz2CommonHistRes)
+  //LYZ2SUM
+  if(plotLYZ2SUMEtaPOI && lyz2sumCommonHistRes)
   {
-   entryDiffLYZ2EtaPOI->Append("M = ");
-   (*entryDiffLYZ2EtaPOI)+=(Long_t)avMultDiffFlowLYZ2POI;
-   entryDiffLYZ2EtaPOI->Append(", N = ");
-   (*entryDiffLYZ2EtaPOI)+=(Long_t)nEvtsDiffFlowLYZ2POI; 
-   legendDiffFlowEtaPOI->AddEntry(lyz2CommonHistRes->GetHistDiffFlowEtaPOI(),entryDiffLYZ2EtaPOI->Data(),"p");
+   entryDiffLYZ2SUMEtaPOI->Append("M = ");
+   (*entryDiffLYZ2SUMEtaPOI)+=(Long_t)avMultDiffFlowLYZ2SUMPOI;
+   entryDiffLYZ2SUMEtaPOI->Append(", N = ");
+   (*entryDiffLYZ2SUMEtaPOI)+=(Long_t)nEvtsDiffFlowLYZ2SUMPOI; 
+   legendDiffFlowEtaPOI->AddEntry(lyz2sumCommonHistRes->GetHistDiffFlowEtaPOI(),entryDiffLYZ2SUMEtaPOI->Data(),"p");
+  }
+  
+  //LYZ2PROD
+  if(plotLYZ2PRODEtaPOI && lyz2prodCommonHistRes)
+  {
+   entryDiffLYZ2PRODEtaPOI->Append("M = ");
+   (*entryDiffLYZ2PRODEtaPOI)+=(Long_t)avMultDiffFlowLYZ2PRODPOI;
+   entryDiffLYZ2PRODEtaPOI->Append(", N = ");
+   (*entryDiffLYZ2PRODEtaPOI)+=(Long_t)nEvtsDiffFlowLYZ2PRODPOI; 
+   legendDiffFlowEtaPOI->AddEntry(lyz2prodCommonHistRes->GetHistDiffFlowEtaPOI(),entryDiffLYZ2PRODEtaPOI->Data(),"p");
   }
   
   //LYZEP
@@ -2587,7 +3486,9 @@ void compareFlowResults(TString type="ESD")
    legendDiffFlowEtaPOI->AddEntry(lyzepCommonHistRes->GetHistDiffFlowEtaPOI(),entryDiffLYZEPEtaPOI->Data(),"p");
   }
 
-  //drawing finally the legend in the 2nd pad:     
+  //drawing finally the legend in the 2nd pad:   
+  if(textDefault) textDefault->Draw();
+      
   if(legendDiffFlowEtaPOI)
   {
    legendDiffFlowEtaPOI->SetMargin(0.15);
@@ -2598,5 +3499,70 @@ void compareFlowResults(TString type="ESD")
 
 
  //=====================================================================================
+}
+
+void LoadPlotLibraries(const libModes mode) {
+  
+  //--------------------------------------
+  // Load the needed libraries most of them already loaded by aliroot
+  //--------------------------------------
+  gSystem->Load("libTree.so");
+  gSystem->Load("libGeom.so");
+  gSystem->Load("libVMC.so");
+  gSystem->Load("libXMLIO.so");
+  gSystem->Load("libPhysics.so");
+  
+  //----------------------------------------------------------
+  // >>>>>>>>>>> Local mode <<<<<<<<<<<<<< 
+  //----------------------------------------------------------
+  if (mode==mLocal) {
+    //--------------------------------------------------------
+    // If you want to use already compiled libraries 
+    // in the aliroot distribution
+    //--------------------------------------------------------
+
+  //==================================================================================  
+  //load needed libraries:
+  gSystem->AddIncludePath("-I$ROOTSYS/include");
+  gSystem->Load("libTree.so");
 
+  // for AliRoot
+  gSystem->AddIncludePath("-I$ALICE_ROOT/include");
+  gSystem->Load("libANALYSIS.so");
+  gSystem->Load("libPWG2flowCommon.so");
+  cerr<<"libPWG2flowCommon.so loaded ..."<<endl;
+  
+  }
+  
+  else if (mode==mLocalSource) {
+    // In root inline compile
+  
+    // Constants  
+    gROOT->LoadMacro("AliFlowCommon/AliFlowCommonConstants.cxx+");
+    gROOT->LoadMacro("AliFlowCommon/AliFlowLYZConstants.cxx+");
+    gROOT->LoadMacro("AliFlowCommon/AliFlowCumuConstants.cxx+");
+    
+    // Flow event
+    gROOT->LoadMacro("AliFlowCommon/AliFlowVector.cxx+"); 
+    gROOT->LoadMacro("AliFlowCommon/AliFlowTrackSimple.cxx+");    
+    gROOT->LoadMacro("AliFlowCommon/AliFlowEventSimple.cxx+");
+    
+    // Cuts
+    gROOT->LoadMacro("AliFlowCommon/AliFlowTrackSimpleCuts.cxx+");    
+    
+    // Output histosgrams
+    gROOT->LoadMacro("AliFlowCommon/AliFlowCommonHist.cxx+");
+    gROOT->LoadMacro("AliFlowCommon/AliFlowCommonHistResults.cxx+");
+    gROOT->LoadMacro("AliFlowCommon/AliFlowLYZHist1.cxx+");
+    gROOT->LoadMacro("AliFlowCommon/AliFlowLYZHist2.cxx+");
+       
+    cout << "finished loading macros!" << endl;  
+    
+  }  
+  
 }
+
+