ROOT logo

//
// Calculate flow in the forward and central regions using the Q cumulants method.
//
// Inputs:
//  - AliAODEvent
//
// Outputs:
//  - AnalysisResults.root or forward_flow.root
//
#include <TROOT.h>
#include <TSystem.h>
#include <TInterpreter.h>
#include <TChain.h>
#include <TFile.h>
#include <TList.h>
#include <TMath.h>
#include <TH3D.h>
#include <TProfile2D.h>
#include <TParameter.h>
#include <TMatrixD.h>
#include <TVectorD.h>
#include <TGraph.h>
#include "AliLog.h"
#include "AliForwardFlowTaskQC.h"
#include "AliAnalysisManager.h"
#include "AliAODHandler.h"
#include "AliAODInputHandler.h"
#include "AliAODForwardMult.h"
#include "AliAODCentralMult.h"
#include "AliAODEvent.h"
#include "AliForwardUtil.h"
#include "AliVVZERO.h"
#include "AliAODVertex.h"
#include "AliCentrality.h"
#include "AliESDEvent.h"
#include "AliVTrack.h"
#include "AliESDtrack.h"
#include "AliAODTrack.h"
#include "AliAnalysisFilter.h"
#include "AliAODMCHeader.h"
#include "AliForwardFlowWeights.h"

ClassImp(AliForwardFlowTaskQC)
#if 0
; // For emacs 
#endif

AliForwardFlowTaskQC::AliForwardFlowTaskQC()
  : AliAnalysisTaskSE(),
    fVtxAxis(),          // Axis to control vertex binning
    fCentAxis(),         // Axis to control centrality/multiplicity binning
    fFMDCut(-1),         // FMD sigma cut
    fSPDCut(-1),         // SPD sigma cut
    fFlowFlags(0),       // Flow flags
    fEtaGap(0.),         // Eta gap value
    fBinsForward(),      // List with forward flow hists
    fBinsCentral(),      // List with central flow hists
    fSumList(0),	 // Event sum list
    fOutputList(0),	 // Result output list
    fAOD(0),		 // AOD input event
    fTrackCuts(0),    // ESD track cuts
    fMaxMoment(0),       // Max flow moment
    fVtx(1111),	         // Z vertex coordinate
    fCent(-1),		 // Centrality
    fHistdNdedpV0(),     // Hist for v0
    fHistdNdedp3Cor(),   // Hist for combining detectors
    fHistFMDSPDCorr(),   // FMD SPD correlation
    fHistCent(),         // Hist for centrality
    fHistVertexSel(),    // Hist for selected vertices
    fHistEventSel()      // Hist for event selection
{
  // 
  //  Default constructor
  //
}
//_____________________________________________________________________
AliForwardFlowTaskQC::AliForwardFlowTaskQC(const char* name) 
  : AliAnalysisTaskSE(name),
    fVtxAxis(),         // Axis to control vertex binning
    fCentAxis(),        // Axis to control centrality/multiplicity binning
    fFMDCut(-1),        // FMD sigma cut
    fSPDCut(-1),        // SPD sigma cut
    fFlowFlags(0x0),    // Flow flags
    fEtaGap(0.),        // Eta gap value
    fBinsForward(),     // List with forward flow hists
    fBinsCentral(),     // List with central flow hists
    fSumList(0),        // Event sum list           
    fOutputList(0),     // Result output list       
    fAOD(0),	        // AOD input event          
    fTrackCuts(0),      // ESD track cuts
    fMaxMoment(4),      // Max flow moment
    fVtx(1111),         // Z vertex coordinate      
    fCent(-1),          // Centrality               
    fHistdNdedpV0(),    // Histo for v0
    fHistdNdedp3Cor(),  // Histo for combining detectors
    fHistFMDSPDCorr(),  // FMD SPD correlation
    fHistCent(),        // Hist for centrality
    fHistVertexSel(),   // Hist for selected vertices
    fHistEventSel()     // Hist for event selection
{
  // 
  //  Constructor
  //
  //  Parameters:
  //   name: Name of task
  //
  DefineOutput(1, TList::Class());
  DefineOutput(2, TList::Class());
}
//_____________________________________________________________________
AliForwardFlowTaskQC::AliForwardFlowTaskQC(const AliForwardFlowTaskQC& o)
  : AliAnalysisTaskSE(o),
    fVtxAxis(o.fVtxAxis),              // Axis to control vertex binning
    fCentAxis(o.fCentAxis),            // Array to control centrality/multiplicity binning
    fFMDCut(o.fFMDCut),                // FMD sigma cut
    fSPDCut(o.fSPDCut),                // SPD sigma cut
    fFlowFlags(o.fFlowFlags),          // Flow flags
    fEtaGap(o.fEtaGap),                // Eta gap value
    fBinsForward(),                    // List with forward flow hists
    fBinsCentral(),                    // List with central flow hists
    fSumList(o.fSumList),              // Event sum list           
    fOutputList(o.fOutputList),        // Result output list       
    fAOD(o.fAOD),	               // AOD input event          
    fTrackCuts(o.fTrackCuts),          // ESD track cuts
    fMaxMoment(o.fMaxMoment),          // Flow moments
    fVtx(o.fVtx),                      // Z vertex coordinate      
    fCent(o.fCent),	               // Centrality
    fHistdNdedpV0(o.fHistdNdedpV0),    // Histo for v0
    fHistdNdedp3Cor(o.fHistdNdedp3Cor),// Histo for combining detectors
    fHistFMDSPDCorr(o.fHistFMDSPDCorr),// FMD SPD correlation
    fHistCent(o.fHistCent),            // Hist for centrality
    fHistVertexSel(o.fHistVertexSel),  // Hist for selected vertices
    fHistEventSel(o.fHistEventSel)     // Hist for event selection
{
  // 
  //  Copy constructor 
  // 
  //  Parameters:
  //   o: Object to copy from 
  //
}
//_____________________________________________________________________
AliForwardFlowTaskQC&
AliForwardFlowTaskQC::operator=(const AliForwardFlowTaskQC& o)
{
  // 
  //  Assignment operator 
  //
  if (&o == this) return *this;
  fVtxAxis        = o.fVtxAxis;
  fCentAxis       = o.fCentAxis;
  fFMDCut         = o.fFMDCut;
  fSPDCut         = o.fSPDCut;
  fFlowFlags      = o.fFlowFlags;
  fEtaGap         = o.fEtaGap;
  fSumList        = o.fSumList;
  fOutputList     = o.fOutputList;
  fAOD            = o.fAOD;
  fTrackCuts      = o.fTrackCuts;
  fMaxMoment      = o.fMaxMoment;
  fVtx            = o.fVtx;
  fCent           = o.fCent;
  fHistdNdedpV0   = o.fHistdNdedpV0;
  fHistdNdedp3Cor = o.fHistdNdedp3Cor;
  fHistFMDSPDCorr = o.fHistFMDSPDCorr;
  fHistCent       = o.fHistCent;
  fHistVertexSel  = o.fHistVertexSel;
  fHistEventSel   = o.fHistEventSel;

  return *this;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::SetFlowFlags(UShort_t flags)
{
  //
  //  Set flow flags, making sure the detector setup is right
  //
  //  Parameters:
  //   flags: Flow flags
  //
  if ((flags & kFMD) && (flags & kVZERO)) 
    AliFatal("Cannot do analysis on more than one forward detector!");
  else if (!(flags & kFMD) && !(flags & kVZERO)) 
    AliFatal("You need to add a forward detector!");
  else fFlowFlags = flags;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::UserCreateOutputObjects()
{
  //
  //  Create output objects
  //
  InitVertexBins();
  InitHists();
  if ((fFlowFlags & kTracks) && !fTrackCuts) AliFatal("No track cuts set!");
  PrintFlowSetup();

  PostData(1, fSumList);
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::InitVertexBins()
{
  // 
  //  Init vertexbin objects for forward and central detectors, and add them to the lists
  //
  for (Int_t v = 1; v <= fVtxAxis->GetNbins(); v++) {
    Int_t vL = Int_t(fVtxAxis->GetBinLowEdge(v));
    Int_t vH = Int_t(fVtxAxis->GetBinUpEdge(v));
    if ((fFlowFlags & kFMD)) {
      fBinsForward.Add(new VertexBin(vL, vH, fMaxMoment, "FMD", fFlowFlags, fFMDCut, fEtaGap));
      if (!(fFlowFlags & k3Cor)) 
	fBinsCentral.Add(new VertexBin(vL, vH, fMaxMoment, "SPD-FMD", fFlowFlags|kNUAcorr|kSPD, fSPDCut, fEtaGap));
    }
    else if ((fFlowFlags & kVZERO)) {
      fBinsForward.Add(new VertexBin(vL, vH, fMaxMoment, "VZERO", fFlowFlags, 0, fEtaGap));
      if ((fFlowFlags & kEtaGap) && !(fFlowFlags & kTracks)) 
	fBinsCentral.Add(new VertexBin(vL, vH, fMaxMoment, "SPD-VZERO", fFlowFlags|kNUAcorr|kSPD, fSPDCut, fEtaGap));
    }
  }
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::InitHists()
{
  //
  //  Init histograms and add vertex bin histograms to the sum list
  //
  if (!fSumList)
    fSumList = new TList();
  fSumList->SetName("Sums");
  fSumList->SetOwner();

  if (!fVtxAxis) fVtxAxis = new TAxis(20, -10, 10);
  fVtxAxis->SetName("VtxAxis");
  if (!fCentAxis) fCentAxis = new TAxis(20, 0, 100);
  fVtxAxis->SetName("CentAxis");
  
  fHistCent         = new TH1D("hCent", "Centralities", 100, 0, 100);
  fHistVertexSel    = new TH1D("hVertexSel", "Selected vertices", fVtxAxis->GetNbins(), fVtxAxis->GetXmin(), fVtxAxis->GetXmax());
  fHistEventSel     = new TH1I("hEventSel", "Event Selection", kOK, 0.5, kOK+0.5);
  fHistEventSel->GetXaxis()->SetBinLabel(kNoEvent, "No AOD event");
  fHistEventSel->GetXaxis()->SetBinLabel(kNoForward, "No forward det");
  fHistEventSel->GetXaxis()->SetBinLabel(kNoCentral, "No central det");
  fHistEventSel->GetXaxis()->SetBinLabel(kNoTrigger, "Not triggered");
  fHistEventSel->GetXaxis()->SetBinLabel(kNoCent, "No centrality");
  fHistEventSel->GetXaxis()->SetBinLabel(kInvCent, "Centrality outside range");
  fHistEventSel->GetXaxis()->SetBinLabel(kNoVtx, "No vertex");
  fHistEventSel->GetXaxis()->SetBinLabel(kInvVtx, "Vtx outside range");
  fHistEventSel->GetXaxis()->SetBinLabel(kOK, "OK!");

  fHistFMDSPDCorr = new TH2D("hFMDSPDCorr", "hFMDSPCCorr", 200, 0., 20000., 200, 0, 7500);

  TList* dList = new TList();
  dList->SetName("Diagnostics");
  dList->Add(fHistCent);
  dList->Add(fHistVertexSel);
  dList->Add(fHistEventSel);
  dList->Add(fHistFMDSPDCorr);
  fSumList->Add(dList);

  fHistdNdedp3Cor = TH2D(Form("hdNdedpCombined_%s", GetQCType(fFlowFlags)), Form("hdNdedpCombined_%s", GetQCType(fFlowFlags)), 
                           200, -4., 6., 20, 0., TMath::TwoPi());
  if ((fFlowFlags & kVZERO)) {
    Double_t bins[12] = { -6, -3.7, -3.2, -2.7, -2.2, -1.7, 
			  2.8, 3.4,  3.9,  4.5,  5.1, 6 };
    fHistdNdedpV0 = TH2D(Form("hdNdedpv0%s", GetQCType(fFlowFlags)), Form("hdNdedpv0%s", GetQCType(fFlowFlags)),
		    11, -6, 6, 8, 0, TMath::TwoPi());
    fHistdNdedpV0.GetXaxis()->Set(11, bins);
    if ((fFlowFlags & k3Cor)) {
      Double_t bins2[20] = { -6, -3.7, -3.2, -2.7, -2.2, // VZERO
                             -2.0, -1.5, -1.0, -0.5 , 0., 0.5, 1.0, 1.5, 2.0, // SPD
	  		    2.8, 3.4,  3.9,  4.5,  5.1, 6 }; // VZERO
      fHistdNdedp3Cor.GetXaxis()->Set(19, bins2);
      fHistdNdedp3Cor.GetYaxis()->Set(8, 0., TMath::TwoPi());
    }
  }

  TIter nextForward(&fBinsForward);
  VertexBin* bin = 0;
  while ((bin = static_cast<VertexBin*>(nextForward()))) {
    bin->AddOutput(fSumList, fCentAxis);
  }
  TIter nextCentral(&fBinsCentral);
  while ((bin = static_cast<VertexBin*>(nextCentral()))) {
    bin->AddOutput(fSumList, fCentAxis);
  }
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::UserExec(Option_t */*option*/)
{
  //
  //  Calls the analyze function - called every event
  //
  //  Parameters:
  //   option: Not used
  //
  
  // Reset data members
  fCent = -1;
  fVtx = 1111;

  Analyze();
  
  PostData(1, fSumList);

  return;
}
//_____________________________________________________________________
Bool_t AliForwardFlowTaskQC::Analyze()
{
  // 
  //  Load forward and central detector objects from aod tree and call the 
  //  cumulants calculation for the correct vertex bin
  //
  //  Return: true on success
  //

  // Get input event
  fAOD = dynamic_cast<AliAODEvent*>(AliForwardUtil::GetAODEvent(this));
  if (!fAOD) {
    fHistEventSel->Fill(kNoEvent);
    return kFALSE;
  }

  // Get detector objects
  AliAODForwardMult* aodfmult = static_cast<AliAODForwardMult*>(fAOD->FindListObject("Forward"));
  AliAODCentralMult* aodcmult = static_cast<AliAODCentralMult*>(fAOD->FindListObject("CentralClusters"));
  AliVVZERO* vzero = GetVZERO();
  if ((fFlowFlags & kVZERO)) {
    if (vzero) {
      fHistdNdedpV0.Reset();
      FillVZEROHist(vzero);
    }
  }

  // We make sure that the necessary forward object is there
  if ((fFlowFlags & kFMD) && !aodfmult) {
    fHistEventSel->Fill(kNoForward);
    return kFALSE; 
  }
  else if ((fFlowFlags & kVZERO) && !vzero) {
    fHistEventSel->Fill(kNoForward);
//    return kFALSE; 
  }
  if (!aodcmult) fHistEventSel->Fill(kNoCentral);

   // Check event for triggers, get centrality, vtx etc.
  if (!CheckEvent(aodfmult)) return kFALSE;
  Int_t vtx = fVtxAxis->FindBin(fVtx)-1;
  
  // Then we assign a reference to the forward histogram of interest
  TH2D& forwarddNdedp = ((fFlowFlags & kFMD) ? aodfmult->GetHistogram() : fHistdNdedpV0);
  TH2D& spddNdedp = aodcmult->GetHistogram();
  if ((fFlowFlags & kStdQC)) {
    FillVtxBinList(fBinsForward, forwarddNdedp, vtx);
  } else if ((fFlowFlags & kEtaGap)) {
    FillVtxBinListEtaGap(fBinsForward, forwarddNdedp, forwarddNdedp, vtx);
  }
  // At the moment only clusters are supported for the central region (some day add tracks?)
  // So no extra checks necessary
  if (aodcmult) {
    if ((fFlowFlags & kStdQC)) {
      FillVtxBinList(fBinsCentral, spddNdedp, vtx);
    } else if ((fFlowFlags & kEtaGap)) {
      FillVtxBinListEtaGap(fBinsCentral, forwarddNdedp, spddNdedp, vtx);
    } else if ((fFlowFlags & k3Cor)) {
      FillVtxBinList3Cor(fBinsForward, spddNdedp, forwarddNdedp, vtx);
    }
    // Diagnostics
    if (aodfmult) {
      Double_t totForward = forwarddNdedp.Integral(1, forwarddNdedp.GetNbinsX(), 1, forwarddNdedp.GetNbinsY());
      Double_t totSPD = spddNdedp.Integral(1, spddNdedp.GetNbinsX(), 1, spddNdedp.GetNbinsY());
      fHistFMDSPDCorr->Fill(totForward, totSPD);
    }
  }

  return kTRUE;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::FillVtxBinList(const TList& list, TH2D& h, Int_t vtx, UShort_t flags) const
{
  //
  //  Loops over list of VtxBins, fills hists of bins for current vertex
  //  and runs analysis on those bins
  //
  //  Parameters:
  //   list:  list of VtxBins
  //   h:     dN/detadphi histogram
  //   vtx:   current vertex bin
  //   flags: extra flags to handle calculations.
  // 
  //   Note: The while loop is used in this function and the next 2 for historical reasons,
  //         as originally each moment had it's own VertexBin object.
  VertexBin* bin = 0;
  Int_t i = 0;
  Int_t nVtxBins = fVtxAxis->GetNbins();
  
  while ((bin = static_cast<VertexBin*>(list.At(vtx+(nVtxBins*i))))) {
    i++;
    // If no tracks do things normally
    if (!(fFlowFlags & kTracks) || (flags & kMC)) {
      if (!bin->FillHists(h, fCent, kFillBoth|flags|kReset)) continue;
    }
    // if tracks things are more complicated
    else if ((fFlowFlags & kTracks)) {
      if (!FillTracks(bin, kFillRef|kReset|flags)) continue;
      if (!bin->FillHists(h, fCent, kFillDiff|kReset|flags)) continue;
    }
    bin->CumulantsAccumulate(fCent);
  }

  return;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::FillVtxBinListEtaGap(const TList& list, TH2D& href, 
                                                  TH2D& hdiff, Int_t vtx, UShort_t flags) const
{
  //
  //  Loops over list of VtxBins, fills hists of bins for current vertex
  //  and runs analysis on those bins
  //
  //  Parameters:
  //   list:  list of VtxBins
  //   href:  dN/detadphi histogram for ref. flow
  //   hdiff: dN/detadphi histogram for diff. flow
  //   vBin:  current vertex bin
  //   flags: extra flags to handle calculations.
  //
  VertexBin* bin = 0;
  Int_t i = 0;
  Int_t nVtxBins = fVtxAxis->GetNbins();

  while ((bin = static_cast<VertexBin*>(list.At(vtx+(nVtxBins*i))))) {
    i++;
    if (!(fFlowFlags & kTracks) || (flags & kMC)) {
      if(!bin->FillHists(href, fCent, kFillRef|flags|kReset)) continue;
    }
    else if ((fFlowFlags & kTracks)) {
      if (!FillTracks(bin, kFillRef|kReset|flags)) continue;
    }
    if (!bin->FillHists(hdiff, fCent, kFillDiff|kReset|flags)) continue;
    bin->CumulantsAccumulate(fCent);
  }

  return;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::FillVtxBinList3Cor(const TList& list, TH2D& hcent, 
                                              TH2D& hfwd, Int_t vtx, UShort_t flags)
{
  //
  //  Loops over list of VtxBins, fills hists of bins for current vertex
  //  and runs analysis on those bins
  //
  //  Parameters:
  //   list:  list of VtxBins
  //   hcent: dN/detadphi histogram for central coverage
  //   hfwd:  dN/detadphi histogram for forward coverage
  //   vBin:  current vertex bin
  //   flags: extra flags to handle calculations.
  //
  VertexBin* bin = 0;
  Int_t i = 0;
  Int_t nVtxBins = fVtxAxis->GetNbins();

  TH2D& h = CombineHists(hcent, hfwd);

  while ((bin = static_cast<VertexBin*>(list.At(vtx+(nVtxBins*i))))) {
    i++;
    if (!bin->FillHists(h, fCent, kFillBoth|flags|kReset)) continue;
    bin->CumulantsAccumulate3Cor(fCent);
  }

  return;
}
//_____________________________________________________________________
TH2D& AliForwardFlowTaskQC::CombineHists(TH2D& hcent, TH2D& hfwd)
{
  // 
  //  Combines a forward and central d^2N/detadphi histogram.
  //  At some point it might need a flag to choose which histogram gets
  //  priority when there is an overlap, at the moment the average is chosen
  //
  //  Parameters:
  //    hcent: Central barrel detector
  //    hfwd: Forward detector
  //
  //  Return: reference to combined hist
  //

  // If hists are the same (MC input) don't do anything
  if (&hcent == &hfwd) return hcent;

  fHistdNdedp3Cor.Reset();
  // FMD, SPD input
  if ((fFlowFlags & kFMD)) {
    for (Int_t e = 1; e <= fHistdNdedp3Cor.GetNbinsX(); e++)  {
      Double_t eta = fHistdNdedp3Cor.GetXaxis()->GetBinCenter(e);
      Bool_t fwdCov = (hfwd.GetBinContent(e, 0) != 0);
      Bool_t centCov = (hcent.GetBinContent(e, 0) != 0);
      if (!fwdCov && !centCov) continue;
      else fHistdNdedp3Cor.SetBinContent(e, 0, 1);
      for (Int_t p = 1; p <= fHistdNdedp3Cor.GetNbinsY(); p++) {
	Double_t phi = fHistdNdedp3Cor.GetYaxis()->GetBinCenter(p);
	Int_t n = 0;
	Double_t cont = 0.;
	if (fwdCov) {
	  cont += hfwd.GetBinContent(e, p);
	  n++;
	}
	if (centCov) {
	  cont += hcent.GetBinContent(e, p);
	  n++;
	}
	if (cont == 0 || n == 0) continue;
	cont /= n;
	fHistdNdedp3Cor.Fill(eta, phi, cont);
      }
    }
  // VZERO, SPD input, here we do not average but cut to avoid
  // (too much) overlap.
  } else if ((fFlowFlags & kVZERO)) {
    // VZERO loop
    for (Int_t eV = 1; eV <= hfwd.GetNbinsX(); eV++) {
      Double_t eta = hfwd.GetXaxis()->GetBinLowEdge(eV)+0.1;
      if (hfwd.GetBinContent(eV, 0) == 0) continue;
      else { 
        Int_t he = fHistdNdedp3Cor.GetXaxis()->FindBin(eta);
	fHistdNdedp3Cor.SetBinContent(he, 0, 1);
      }
      for (Int_t p = 1; p <= hfwd.GetNbinsY(); p++) { 
        Double_t phi = hfwd.GetYaxis()->GetBinCenter(p);
        Double_t cont = hfwd.GetBinContent(eV, p);
        fHistdNdedp3Cor.Fill(eta, phi, cont);
      }
    }
    // SPD loop
    Int_t eSs = hcent.GetXaxis()->FindBin(-1.99);
    Int_t eSe = hcent.GetXaxis()->FindBin(1.99);
    for (Int_t eS = eSs; eS <= eSe; eS++) {
      Double_t eta = hcent.GetXaxis()->GetBinCenter(eS);
      if (hcent.GetBinContent(eS, 0) == 0) continue;
      else {
        Int_t he = fHistdNdedp3Cor.GetXaxis()->FindBin(eta);
	fHistdNdedp3Cor.SetBinContent(he, 0, 1);
      }
      for (Int_t p = 1; p <= hcent.GetNbinsY(); p++) {
        Double_t phi = hcent.GetYaxis()->GetBinCenter(p);
        Double_t cont = hcent.GetBinContent(eS, p);
        fHistdNdedp3Cor.Fill(eta, phi, cont);
      }
    }
  }
  return fHistdNdedp3Cor;
}
//_____________________________________________________________________
Bool_t AliForwardFlowTaskQC::FillTracks(VertexBin* bin, UShort_t mode) const
{
  // 
  //  Get TPC tracks to use for reference flow.
  //
  //  Return: TObjArray with tracks
  //
  TObjArray* trList = 0;
  AliESDEvent* esdEv = 0;
  if (AliForwardUtil::CheckForAOD() == 1) // AOD tracks
    trList = static_cast<TObjArray*>(fAOD->GetTracks());
  else 
    esdEv = dynamic_cast<AliESDEvent*>(InputEvent());
  
  Bool_t useEvent = bin->FillTracks(trList, esdEv, fTrackCuts, mode);
  return useEvent;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::Terminate(Option_t */*option*/)
{
  //
  //  Calls the finalize function, done at the end of the analysis
  //
  //  Parameters:
  //   option: Not used
  //

  // Make sure pointers are set to the correct lists
  fSumList = dynamic_cast<TList*> (GetOutputData(1));
  if(!fSumList) {
    AliError("Could not retrieve TList fSumList"); 
    return; 
  }
  if (!fOutputList)
    fOutputList = new TList();
  fOutputList->SetName("Results");
  fOutputList->SetOwner();

  if ((fFlowFlags & kEtaGap) || (fFlowFlags & kTracks)) {
    TParameter<Double_t>* etaGap = new TParameter<Double_t>("EtaGap", fEtaGap);
    fOutputList->Add(etaGap);
  }
  // We only add axes in terminate, as TAxis object do not merge well,
  // and so we get a mess when running on the grid if we put them in the sum list...
  fVtxAxis->SetName("VtxAxis");
  fOutputList->Add(fVtxAxis);
  fCentAxis->SetName("CentAxis");
  fOutputList->Add(fCentAxis);

  // Run finalize on VertexBins
  Finalize();

  // Loop over output to get dN/deta hists - used for diagnostics
  TIter next(fOutputList);
  TObject* o = 0;
  TString name;
  TH2D* dNdeta = 0;
  TH1D* cent = 0;
  while ((o = next())) {
    name = o->GetName();
    if (name.Contains("dNdeta")) {
      dNdeta = dynamic_cast<TH2D*>(o);
      name.ReplaceAll("dNdeta", "cent");
      name.ReplaceAll("Ref", "");
      name.ReplaceAll("Diff", "");
      cent = dynamic_cast<TH1D*>(fOutputList->FindObject(name.Data()));
      if (!dNdeta || !cent) continue;
      for (Int_t cBin = 1; cBin <= dNdeta->GetNbinsY(); cBin++) {
        Double_t nEvents = cent->GetBinContent(cBin);
        if (nEvents == 0) continue;
	for (Int_t eBin = 1; eBin <= dNdeta->GetNbinsX(); eBin++) {
	  dNdeta->SetBinContent(eBin, cBin, dNdeta->GetBinContent(eBin, cBin)/nEvents);
	  dNdeta->SetBinError(eBin, cBin, dNdeta->GetBinError(eBin, cBin)/nEvents);
	}
      }
    }
  }   

  // Loop over output and make 1D projections for fast look at results
  MakeCentralityHists(fOutputList);
  TList* vtxList = (TList*)fOutputList->FindObject("vtxList");
  if (vtxList) MakeCentralityHists(vtxList);
  TList* nuaList = (TList*)fOutputList->FindObject("NUATerms");
  TIter nextNua(nuaList);
  o = 0;
  TH2D* h = 0;
  while ((o = nextNua())) {
    if (!(h = dynamic_cast<TH2D*>(o))) continue;
    Double_t evts = h->GetBinContent(0, 0);
    if (evts != 0) h->Scale(1./evts);
  }
  if (nuaList) MakeCentralityHists(nuaList);

  PostData(2, fOutputList);

  return;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::Finalize()
{
  //
  //  Finalize command, called by Terminate()
  //

  // Reinitiate vertex bins if Terminate is called separately!
  if (fBinsForward.GetEntries() == 0) InitVertexBins();

  // Iterate over all vertex bins objects and finalize cumulants
  // calculations
  EndVtxBinList(fBinsForward);
  EndVtxBinList(fBinsCentral);

  return;
} 
//_____________________________________________________________________
void AliForwardFlowTaskQC::EndVtxBinList(const TList& list) const
{
  //
  //  Loop over VertexBin list and call terminate on each 
  //
  //  Parameters:
  //   list: VertexBin list
  //
  TIter next(&list);
  VertexBin* bin = 0;
  while ((bin = static_cast<VertexBin*>(next()))) {
    bin->CumulantsTerminate(fSumList, fOutputList);
  }
  return;
}
// _____________________________________________________________________
void AliForwardFlowTaskQC::MakeCentralityHists(TList* list) const
{
  //
  // Loop over a list containing a TH2D with flow results
  // and project to TH1's in specific centrality bins
  //
  // Parameters:
  //  list: Flow results list
  //
  TH2D* hist2D = 0;
  TList* centList = 0;
  TH1D* hist1D = 0;
  TObject* helper = 0;
  TIter nextHist(list);
  while ((helper = dynamic_cast<TObject*>(nextHist()))) {
    if (!(hist2D = dynamic_cast<TH2D*>(helper))) continue;
    for (Int_t cBin = 1; cBin <= hist2D->GetNbinsY(); cBin++) {
      Int_t cMin = Int_t(hist2D->GetYaxis()->GetBinLowEdge(cBin));
      Int_t cMax = Int_t(hist2D->GetYaxis()->GetBinUpEdge(cBin));
      TString name = Form("cent_%d-%d", cMin, cMax);
      centList = (TList*)list->FindObject(name.Data());
      if (!centList) { 
	centList = new TList();
	centList->SetName(name.Data());
	list->Add(centList);
      }
      hist1D = hist2D->ProjectionX(Form("%s_%s", hist2D->GetName(), name.Data()), 
                                         cBin, cBin, "E");
      hist1D->SetTitle(hist1D->GetName());
      centList->Add(hist1D);
    }
  }
}
// _____________________________________________________________________
Bool_t AliForwardFlowTaskQC::CheckEvent(const AliAODForwardMult* aodfm) 
{
  // 
  //  Function to check that an AOD event meets the cuts
  //
  //  Parameters: 
  //   AliAODForwardMult: forward mult object with trigger and vertex info
  //
  //  Return: false if there is no trigger or if the centrality or vertex
  //  is out of range. Otherwise true.
  //

  // First check for trigger
  if (!CheckTrigger(aodfm)) {
    fHistEventSel->Fill(kNoTrigger);
    return kFALSE;
  }

  // Then check for centrality
  if (!GetCentrality(aodfm)) {
    return kFALSE;
  }

  // And finally check for vertex
  if (!GetVertex(aodfm)) {
    return kFALSE;
  }

  // Ev. accepted - filling diag. hists
  fHistCent->Fill(fCent);
  fHistVertexSel->Fill(fVtx);
  fHistEventSel->Fill(kOK);
  
  return kTRUE;
}
// _____________________________________________________________________
Bool_t AliForwardFlowTaskQC::CheckTrigger(const AliAODForwardMult* aodfm) const 
{
  //
  //  Function to look for a trigger string in the event.
  //  First check for info in forward mult object, if not there, use the AOD header
  //
  //  Parameters: 
  //   AliAODForwardMult: forward mult object with trigger and vertex info
  //
  //  Return: true if offline trigger is present
  //
  if (aodfm) return aodfm->IsTriggerBits(AliAODForwardMult::kOffline);
  // this may need to be changed for 2011 data to handle kCentral and so on...
  else return (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))
                 ->IsEventSelected() & AliVEvent::kMB);
}
// _____________________________________________________________________
Bool_t AliForwardFlowTaskQC::GetCentrality(const AliAODForwardMult* aodfm) 
{
  //
  //  Function to look get centrality of the event.
  //  First check for info in forward mult object, if not there, use the AOD header
  //
  //  Parameters: 
  //   AliAODForwardMult: forward mult object with trigger and vertex info
  //
  //  Return: true if centrality determination is present
  //
  if (aodfm) {
    if (aodfm->HasCentrality()) {
      fCent = (Double_t)aodfm->GetCentrality();
      if (fCentAxis->GetXmin() > fCent || fCent >= fCentAxis->GetXmax()) {
	fHistEventSel->Fill(kInvCent);
	return kFALSE;
      }
    }
    else {
      fCent = 97.5;
      fHistEventSel->Fill(kNoCent);
    }
    return kTRUE;
  } else {
    AliCentrality* aodCent = fAOD->GetCentrality();
    if (aodCent) {
      fCent = (Double_t)aodCent->GetCentralityPercentile("V0M");
      if (fCentAxis->GetXmin() > fCent || fCent >= fCentAxis->GetXmax()) {
	fHistEventSel->Fill(kInvCent);
	return kFALSE;
      }
    }
    else {
      fCent = 97.5;
      fHistEventSel->Fill(kNoCent);
    }
    return kTRUE;
  } 
}
//_____________________________________________________________________
Bool_t AliForwardFlowTaskQC::GetVertex(const AliAODForwardMult* aodfm) 
{
  //
  //  Function to look for vertex determination in the event.
  //  First check for info in forward mult object, if not there, use the AOD header
  //
  //  Parameters: 
  //   AliAODForwardMult: forward mult object with trigger and vertex info
  //
  //  Return: true if vertex is determined
  //
  if (aodfm) {
    if (aodfm->HasIpZ()) {
      fVtx = aodfm->GetIpZ();
      if (fVtx < fVtxAxis->GetXmin() || fVtx >= fVtxAxis->GetXmax()) {
	fHistEventSel->Fill(kInvVtx);
	return kFALSE;
      }
    } else {
      fVtx = 9999;
      fHistEventSel->Fill(kNoVtx);
      return kFALSE;
    }
    return kTRUE;
  } else {
    AliAODVertex* aodVtx = fAOD->GetPrimaryVertex();
    if (aodVtx) {
      fVtx = aodVtx->GetZ();
      if (fVtx < fVtxAxis->GetXmin() || fVtx >= fVtxAxis->GetXmax()) {
	fHistEventSel->Fill(kInvVtx);
	return kFALSE;
      }
    } else {
      fVtx = 9999;
      fHistEventSel->Fill(kNoVtx);
      return kFALSE;
    }
    return kTRUE;
  }
}
// _____________________________________________________________________
AliVVZERO* AliForwardFlowTaskQC::GetVZERO() const
{
  //
  //  Get VZERO object from ESD or AOD
  //
  //  Return: VZERO data object
  //
  AliVVZERO* vzero = 0;
  // Get input type
  UShort_t input = AliForwardUtil::CheckForAOD();
  switch (input) {
    // If AOD input, simply get the track array from the event
    case 1: vzero = (AliVVZERO*)fAOD->GetVZEROData();
	    break;
    case 2: {
    // If ESD input get event, apply track cuts
	      AliESDEvent* esd = dynamic_cast<AliESDEvent*>(InputEvent());
	      if (!esd) return 0;
	      vzero = (AliVVZERO*)esd->GetVZEROData();
	      break;
	    }
    default: AliFatal("Neither ESD or AOD input. This should never happen");
    	    break;
  }
  return vzero;
}
// _____________________________________________________________________
void AliForwardFlowTaskQC::FillVZEROHist(AliVVZERO* vzero)
{
  //
  //  Loops over VZERO data object and fill up d^2N/detadphi histogram for flow analysis
  //
  //  Parameters:
  //   vzero: VZERO AOD data object
  //
  Int_t ring = 0;
  Int_t bin = 0;
  Double_t eta = 0;
  // Sort of right for 2010 data, do not use for 2011!
  Double_t eq[64] = { 1.43536, 1.45727, 1.44993, 1.30051, 1.17425, 1.2335, 1.22247, 1.14362, 
  		      1.14647, 1.25208, 1.17681, 1.21642, 1.16604, 1.05532, 1.03212, 1.1032, 
		      1.22941, 1.36986, 1.14652, 1.20056, 0.927086, 1.10809, 1.03343, 1.29472, 
		      1.21204, 1.29217, 1.2003, 2.10382, 1.28513, 1.40558, 1.25784, 1.21848, 
		      0.475162, 0.50421, 0.503617, 0.512471, 0.515276, 0.39831, 0.415199, 0.444664, 
		      0.521922, 0.785915, 0.703658, 0.832479, 0.77461, 0.73129, 0.778697, 0.710265, 
		      0.89686, 0.967688, 0.974225, 0.873445, 0.811096, 0.828493, 0.889609, 0.586056, 
		      1.15877, 0.954656, 0.914557, 0.979028, 1.04907, 0.748518, 0.928043, 0.98175 };
  for (Int_t i = 0; i < 64; i++) {
    if (i % 8 == 0) {
      ring++;
      bin = (ring < 5 ? ring+1 : 15-ring);
      eta = fHistdNdedpV0.GetXaxis()->GetBinCenter(bin);
      fHistdNdedpV0.SetBinContent(bin, 0, 1);
    }
    Float_t amp = vzero->GetMultiplicity(i);
    amp /= eq[i];
    Double_t phi = TMath::Pi()/8.+TMath::TwoPi()*i/8.;
    while (phi > TMath::TwoPi()) phi -= TMath::TwoPi();
    fHistdNdedpV0.Fill(eta, phi, amp);
  }
}
//_____________________________________________________________________
AliForwardFlowTaskQC::VertexBin::VertexBin()
  : TNamed(),
    fMaxMoment(0),   // Max flow moment for this vertexbin
    fVzMin(0),       // Vertex z-coordinate min [cm]
    fVzMax(0),       // Vertex z-coordinate max [cm]
    fType(),         // Data type name e.g., FMD/SPD/FMDTR/SPDTR/MC
    fFlags(0),       // Flow flags
    fSigmaCut(-1),   // Sigma cut to remove outlier events
    fEtaGap(-1),     // Eta gap value
    fEtaLims(),      // Limits for binning in 3Cor method
    fCumuRef(),      // Histogram for reference flow
    fCumuDiff(),     // Histogram for differential flow
    fCumuHists(0,0), // CumuHists object for keeping track of results
    fCumuNUARef(),   // Histogram for ref NUA terms
    fCumuNUADiff(),  // Histogram for diff NUA terms
    fdNdedpRefAcc(), // Diagnostics histogram for acc. maps
    fdNdedpDiffAcc(),// Diagnostics histogram for acc. maps
    fOutliers(),     // Histogram for sigma distribution
    fDebug()         // Debug level
{
  //
  //  Default constructor
  //
}
//_____________________________________________________________________
AliForwardFlowTaskQC::VertexBin::VertexBin(Int_t vLow, Int_t vHigh, 
                                           UShort_t moment, TString name,
                                           UShort_t flags, Double_t cut,
                                           Double_t etaGap)
  : TNamed("", ""),
    fMaxMoment(moment),  // Max flow moment for this vertexbin
    fVzMin(vLow),        // Vertex z-coordinate min [cm]
    fVzMax(vHigh),       // Vertex z-coordinate max [cm]
    fType(name),         // Data type name e.g., FMD/SPD/FMDTR/SPDTR/MC
    fFlags(flags),       // Flow flags 
    fSigmaCut(cut),      // Sigma cut to remove outlier events
    fEtaGap(etaGap),     // Eta gap value
    fEtaLims(),          // Limits for binning in 3Cor method
    fCumuRef(),          // Histogram for reference flow
    fCumuDiff(),         // Histogram for differential flow
    fCumuHists(moment,0),// CumuHists object for keeping track of results
    fCumuNUARef(),       // Histogram for ref NUA terms
    fCumuNUADiff(),      // Histogram for diff NUA terms
    fdNdedpRefAcc(),     // Diagnostics histogram for acc. maps
    fdNdedpDiffAcc(),    // Diagnostics histogram for acc. maps
    fOutliers(),         // Histogram for sigma distribution
    fDebug(0)            // Debug level
{
  //
  //  Constructor
  //
  //  Parameters
  //   vLow: min z-coordinate
  //   vHigh: max z-coordinate
  //   moment: max flow moment
  //   name: data type name (FMD/SPD/FMDTR/SPDTR/MC)
  //   flags: flow flags
  //   cut: sigma cut
  //   etaGap: eta-gap value
  //
  fType.ToUpper();

  SetName(Form("%svertexBin%d_%d_%d%s", fType.Data(), moment, vLow, vHigh, GetQCType(fFlags)));
  SetTitle(Form("%svertexBin%d_%d_%d%s", fType.Data(), moment, vLow, vHigh, GetQCType(fFlags)));
  
  fDebug = AliAnalysisManager::GetAnalysisManager()->GetDebugLevel();
  if (fDebug > 0) Printf("AliForwardFlowTaskQC::VertexBin()\tDebugMode: %d", fDebug);

  // Set limits for 3 correlator method
  if ((fFlags & kFMD)) {
    fEtaLims[0] = -6.;
    fEtaLims[1] = -1.5;
    fEtaLims[2] = -0.5;
    fEtaLims[3] = 2.;
    fEtaLims[4] = 3.;
    fEtaLims[5] = 6.;
  } else if ((fFlags & kVZERO)) {
    fEtaLims[0] = -6;
    fEtaLims[1] = -2.7;
    fEtaLims[2] = -2.0;
    fEtaLims[3] = 2.0;
    fEtaLims[4] = 3.9;
    fEtaLims[5] = 6;
  }
}
//_____________________________________________________________________
AliForwardFlowTaskQC::VertexBin&
AliForwardFlowTaskQC::VertexBin::operator=(const AliForwardFlowTaskQC::VertexBin& o)
{
  //
  //  Assignment operator
  //
  //  Parameters
  //   o: AliForwardFlowTaskQC::VertexBin
  //
  if (&o == this) return *this;
  fMaxMoment     = o.fMaxMoment;
  fVzMin         = o.fVzMin;
  fVzMax         = o.fVzMax;
  fType          = o.fType;
  fFlags         = o.fFlags;
  fSigmaCut      = o.fSigmaCut;
  fEtaGap        = o.fEtaGap;
  fCumuRef       = o.fCumuRef;
  fCumuDiff      = o.fCumuDiff;
  fCumuHists     = o.fCumuHists;
  fCumuNUARef    = o.fCumuNUARef;
  fCumuNUADiff   = o.fCumuNUADiff;
  fdNdedpRefAcc  = o.fdNdedpRefAcc;
  fdNdedpDiffAcc = o.fdNdedpDiffAcc;
  fOutliers      = o.fOutliers;
  fDebug         = o.fDebug;
  for (UInt_t i = 0; i < sizeof(fEtaLims)/sizeof(Double_t); i++) fEtaLims[i] = o.fEtaLims[i];

  return *this;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::VertexBin::AddOutput(TList* outputlist, TAxis* centAxis)
{
  //
  //  Add histograms to outputlist
  //
  //  Parameters
  //   outputlist: list of histograms
  //   centAxis: centrality axis
  //

  // First we try to find an outputlist for this vertexbin
  TList* list = (TList*)outputlist->FindObject(Form("%svertex_%d_%d%s", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)));
  // If it doesn't exist we make one
  if (!list) {
    list = new TList();
    list->SetName(Form("%svertex_%d_%d%s", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)));
    outputlist->Add(list);
  }

  // Get bin numbers and binning defined
  Int_t nHBins = GetBinNumberSin();
  Int_t nEtaBins = 48; 
  if ((fFlags & k3Cor)) {
    if ((fFlags & kFMD)) nEtaBins = 24;
    else if ((fFlags & kVZERO)) nEtaBins = 19;
  }
  else if ((fFlags & kVZERO) && (fFlags & kEtaGap)) nEtaBins = 19;
  else if ((fFlags & kVZERO)) nEtaBins = 11;

  Double_t vzeroBins[12] = { -6, -3.7, -3.2, -2.7, -2.2, -1.7, 
                             2.8, 3.4,  3.9,  4.5,  5.1, 6 };
  Double_t vzeroBins2[20] = { -6, -3.7, -3.2, -2.7, -2.2, // VZERO
                             -2.0, -1.5, -1.0, -0.5 , 0., 0.5, 1.0, 1.5, 2.0, // SPD
	  		    2.8, 3.4,  3.9,  4.5,  5.1, 6 }; // VZERO

  Int_t nRefBins = nEtaBins; // needs to be something as default
  if ((fFlags & kStdQC)) {
    if ((fFlags & kSymEta) && !((fFlags & kTracks) && (fFlags & kSPD))) nRefBins = 1;
    else nRefBins = 2;
  } else if ((fFlags & kEtaGap )) {
    nRefBins = 2;
  } else if ((fFlags & k3Cor)) {
    nRefBins = 24;
  }

  // We initiate the reference histogram
  fCumuRef = new TH2D(Form("%s_%d_%d%s_ref", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)), 
                      Form("%s_%d_%d%s_ref", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)), 
			nRefBins, -6., 6., 
                        nHBins, 0.5, nHBins+0.5);
  if ((fFlags & kVZERO) && (fFlags & k3Cor)) fCumuRef->GetXaxis()->Set(nEtaBins, vzeroBins2);
  SetupNUALabels(fCumuRef->GetYaxis());
  list->Add(fCumuRef);
  // We initiate the differential histogram
  fCumuDiff = new TH2D(Form("%s_%d_%d%s_diff", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)),
                       Form("%s_%d_%d%s_diff", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)),
                       nEtaBins, -6., 6., nHBins, 0.5, nHBins+0.5);
  if ((fFlags & kVZERO)) {
    if ((fFlags & kSPD) || (fFlags & k3Cor) || (fFlags & kEtaGap)) 
      fCumuDiff->GetXaxis()->Set(nEtaBins, vzeroBins2);
    else fCumuDiff->GetXaxis()->Set(nEtaBins, vzeroBins);
  }
  SetupNUALabels(fCumuDiff->GetYaxis());
  list->Add(fCumuDiff);

  // Cumulants sum hists 
  Int_t cBins = centAxis->GetNbins();
  fCumuHists.ConnectList(Form("%sCumu_%d_%d%s", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)), list);
  TH3D* cumuHist = 0;
  Int_t nC2Bins = ((fFlags & kEtaGap) || (fFlags & k3Cor) ? kW2 : k3pWeight);
  Int_t nC4Bins = ((fFlags & kEtaGap) ? kW2 : ((fFlags & k3Cor) ? kW4 : kSinphi1phi2phi3p));
  for (Int_t n = 2; n <= fMaxMoment; n++) {
    // Initiate the ref cumulant sum histogram
    cumuHist = new TH3D(Form("%sv%d_vertex_%d_%d%s_cumuRef", fType.Data(), n, fVzMin, fVzMax, GetQCType(fFlags)),
			Form("%sv%d_vertex_%d_%d%s_cumuRef", fType.Data(), n, fVzMin, fVzMax, GetQCType(fFlags)), 
                        nRefBins, -6., 6., 
			cBins, 0., 100., nC2Bins, 0.5, nC2Bins+0.5);
    if ((fFlags & kVZERO) && (fFlags & k3Cor)) cumuHist->GetXaxis()->Set(nEtaBins, vzeroBins2);
    cumuHist->GetYaxis()->Set(cBins, centAxis->GetXbins()->GetArray());
    fCumuHists.Add(cumuHist);
    // Initiate the diff cumulant sum histogram
    cumuHist = new TH3D(Form("%sv%d_vertex_%d_%d%s_cumuDiff", fType.Data(), n, fVzMin, fVzMax, GetQCType(fFlags)),
			Form("%sv%d_vertex_%d_%d%s_cumuDiff", fType.Data(), n, fVzMin, fVzMax, GetQCType(fFlags)),
			nEtaBins, -6., 6., cBins, 0., 100., nC4Bins, 0.5, nC4Bins+0.5);
    if ((fFlags & kVZERO)) {
      if ((fFlags & kSPD) || (fFlags & k3Cor) || (fFlags & kEtaGap)) 
        cumuHist->GetXaxis()->Set(nEtaBins, vzeroBins2);
      else cumuHist->GetXaxis()->Set(nEtaBins, vzeroBins);
    }
    cumuHist->GetYaxis()->Set(cBins, centAxis->GetXbins()->GetArray());
    fCumuHists.Add(cumuHist);
  }

  // Common NUA histograms
  fCumuNUARef = new TH3D(Form("%s_vertex_%d_%d%s_cumuNUARef", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)),
			 Form("%s_vertex_%d_%d%s_cumuNUARef", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)),
			 nRefBins, -6., 6., 
                          cBins, 0., 100., nHBins, 0.5, nHBins+0.5);
  if ((fFlags & kVZERO) && (fFlags & k3Cor)) fCumuNUARef->GetXaxis()->Set(nEtaBins, vzeroBins2);
  fCumuNUARef->GetYaxis()->Set(cBins, centAxis->GetXbins()->GetArray());
  SetupNUALabels(fCumuNUARef->GetZaxis());
  fCumuNUARef->Sumw2();
  list->Add(fCumuNUARef);
  
  fCumuNUADiff = new TH3D(Form("%s_vertex_%d_%d%s_cumuNUADiff", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)),
                          Form("%s_vertex_%d_%d%s_cumuNUADiff", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)),
                          nEtaBins, -6., 6., cBins, 0., 100., nHBins, 0.5, nHBins+0.5);
  if ((fFlags & kVZERO)) {
    if ((fFlags & kSPD) || (fFlags & k3Cor) || (fFlags & kEtaGap)) 
      fCumuNUADiff->GetXaxis()->Set(nEtaBins, vzeroBins2);
    else fCumuNUADiff->GetXaxis()->Set(nEtaBins, vzeroBins);
  }
  fCumuNUADiff->GetYaxis()->Set(cBins, centAxis->GetXbins()->GetArray());
  SetupNUALabels(fCumuNUADiff->GetZaxis());
  fCumuNUADiff->Sumw2();
  list->Add(fCumuNUADiff);

  // We create diagnostic histograms.
  TList* dList = (TList*)outputlist->FindObject("Diagnostics");
  if (!dList) AliFatal("No diagnostics list found");

  // Acceptance hist
  Int_t nPhiBins = ((fFlags & kFMD) ? 20 : 8);
  fdNdedpRefAcc = new TH2F(Form("h%sdNdedpRefAcc_%d_%d%s", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)),
    Form("%s reference flow acceptance map for %d cm < v_{z} < %d cm", fType.Data(), fVzMin, fVzMax),
    nEtaBins, -6., 6., nPhiBins, 0, TMath::TwoPi());
  if ((fFlags & kVZERO)) {
    if ((fFlags & kSPD) || (fFlags & k3Cor) || (fFlags & kEtaGap)) 
      fdNdedpRefAcc->GetXaxis()->Set(nEtaBins, vzeroBins2);
    else fdNdedpRefAcc->GetXaxis()->Set(nEtaBins, vzeroBins);
  }
  dList->Add(fdNdedpRefAcc);

  fdNdedpDiffAcc = new TH2F(Form("h%sdNdedpDiffAcc_%d_%d%s", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)),
    Form("%s differential flow acceptance map for %d cm < v_{z} < %d cm", fType.Data(), fVzMin, fVzMax),
    nEtaBins, -6., 6., nPhiBins, 0, TMath::TwoPi());
  if ((fFlags & kVZERO)) {
    if ((fFlags & kSPD) || (fFlags & k3Cor) || (fFlags & kEtaGap)) 
      fdNdedpDiffAcc->GetXaxis()->Set(nEtaBins, vzeroBins2);
    else fdNdedpDiffAcc->GetXaxis()->Set(nEtaBins, vzeroBins);
  }
  dList->Add(fdNdedpDiffAcc);
  
  fOutliers = new TH2F(Form("hOutliers_%s_%d_%d%s", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)),
		       Form("Maximum #sigma from mean N_{ch} pr. bin - %s, %d < v_{z} < %d",
		       fType.Data(), fVzMin, fVzMax), 
		       20, 0., 100., 500, 0., ((fFlags & kMC) ? 15. : 5.));
  dList->Add(fOutliers);
  
  return;
}
//_____________________________________________________________________
Bool_t AliForwardFlowTaskQC::VertexBin::FillHists(TH2D& dNdetadphi, Double_t cent, UShort_t mode) 
{
  // 
  //  Fill reference and differential eta-histograms
  //
  //  Parameters:
  //   dNdetadphi: 2D histogram with input data
  //   cent: centrality
  //   mode: filling mode: kFillRef/kFillDiff/kFillBoth
  //
  if (!fCumuRef) AliFatal("You have not called AddOutput() - Terminating!");
  Bool_t useEvent = kTRUE;

  // Fist we reset histograms
  if ((mode & kReset)) {
    if ((mode & kFillRef))  fCumuRef->Reset();
    if ((mode & kFillDiff)) fCumuDiff->Reset();
  }
  // Then we loop over the input and calculate sum cos(k*n*phi)
  // and fill it in the reference and differential histograms
  Int_t nBadBins = 0;
  Double_t limit = 9999.;
  for (Int_t etaBin = 1; etaBin <= dNdetadphi.GetNbinsX(); etaBin++) {
    Double_t eta = dNdetadphi.GetXaxis()->GetBinCenter(etaBin);
    // Numbers to cut away bad events
    Double_t runAvg = 0;
    Double_t max = 0;
    Int_t nInAvg = 0;
    Double_t avgSqr = 0;
    for (Int_t phiBin = 0; phiBin <= dNdetadphi.GetNbinsY(); phiBin++) {
      // Check for acceptance
      if (phiBin == 0) {
        if (dNdetadphi.GetBinContent(etaBin, 0) == 0) break;
        // Central limit for eta gap break for reference flow
	if ((fFlags & kEtaGap) && (mode & kFillRef) && 
	     TMath::Abs(eta) < fEtaGap) break;
	// Backward and forward eta gap break for reference flow
	if ((fFlags & kEtaGap) && (mode & kFillRef) && TMath::Abs(eta) > TMath::Abs(limit)) break;
	if ((fFlags & kStdQC) && (fFlags & kMC) && !(fFlags & kTracks)) {
	  if (!(fFlags & kSPD) && TMath::Abs(eta) < 1.75) break; 
	  if ((fFlags & kSPD) && TMath::Abs(eta) > 2.00) break;
	}
	if (limit > 1e3) limit = dNdetadphi.GetXaxis()->GetBinLowEdge(etaBin);
	continue;
      } // End of phiBin == 0
      Double_t phi = dNdetadphi.GetYaxis()->GetBinCenter(phiBin);
      Double_t weight = dNdetadphi.GetBinContent(etaBin, phiBin);
        
      // We calculate the average Nch per. bin
      avgSqr += weight*weight;
      runAvg += weight;
      nInAvg++;
      if (weight == 0) continue;
      if (weight > max) max = weight;
      // Fill into Cos() and Sin() hists
      if ((mode & kFillRef) && !((fFlags & kTracks) && (fFlags & kMC) && TMath::Abs(eta) > 0.75)) {
	fCumuRef->Fill(eta, 0., weight);// mult goes in underflowbin - no visual, but not needed?
        fdNdedpRefAcc->Fill(eta, phi, weight);
      }
      if ((mode & kFillDiff)) {
	fCumuDiff->Fill(eta, 0., weight);
        fdNdedpDiffAcc->Fill(eta, phi, weight);
      }
      for (Int_t n = 1; n <= 2*fMaxMoment; n++) {
	Double_t cosBin = fCumuDiff->GetYaxis()->GetBinCenter(GetBinNumberCos(n));
	Double_t sinBin = fCumuDiff->GetYaxis()->GetBinCenter(GetBinNumberSin(n));
	Double_t cosnPhi = weight*TMath::Cos(n*phi);
	Double_t sinnPhi = weight*TMath::Sin(n*phi);
        // fill ref
	if ((mode & kFillRef) && !((fFlags & kTracks) && (fFlags & kMC) && TMath::Abs(eta) > 0.75)) {
	  fCumuRef->Fill(eta, cosBin, cosnPhi);
	  fCumuRef->Fill(eta, sinBin, sinnPhi);
	}
	// fill diff
	if ((mode & kFillDiff)) {
	  fCumuDiff->Fill(eta, cosBin, cosnPhi);
	  fCumuDiff->Fill(eta, sinBin, sinnPhi);
	}
      } // End of NUA loop
    } // End of phi loop
    // Outlier cut calculations
    if (nInAvg > 0) {
      runAvg /= nInAvg;
      avgSqr /= nInAvg;
      Double_t stdev = (nInAvg > 1 ? TMath::Sqrt(nInAvg/(nInAvg-1))*TMath::Sqrt(avgSqr - runAvg*runAvg) : 0);
      Double_t nSigma = (stdev == 0 ? 0 : (max-runAvg)/stdev);
      if (fSigmaCut > 0. && nSigma >= fSigmaCut && cent < 60) nBadBins++;
      else nBadBins = 0;
      fOutliers->Fill(cent, nSigma);
      // We still finish the loop, for fOutliers to make sense, 
      // but we do no keep the event for analysis 
      if (nBadBins > 3) useEvent = kFALSE;
    }
  } // End of eta bin

  return useEvent;
}
//_____________________________________________________________________
Bool_t AliForwardFlowTaskQC::VertexBin::FillTracks(TObjArray* trList, AliESDEvent* esd,
                                                   AliAnalysisFilter* trFilter, UShort_t mode) 
{
  // 
  //  Fill reference and differential eta-histograms
  //
  //  Parameters:
  //   trList: list of tracks
  //   mode: filling mode: kFillRef/kFillDiff/kFillBoth
  //
  if (!fCumuRef) AliFatal("You have not called AddOutput() - Terminating!");
  if (!trList && !esd) {
    AliError("FillTracks: No AOD track list or ESD event - something might be wrong!");
    return kFALSE;
  }

  // Fist we reset histograms
  if ((mode & kReset)) {
    if ((mode & kFillRef))  fCumuRef->Reset();
    if ((mode & kFillDiff)) fCumuDiff->Reset();
  }

  // Then we loop over the input and calculate sum cos(k*n*phi)
  // and fill it in the reference and differential histograms
  Int_t nTr = 0;
  if (trList) nTr = trList->GetEntries();
  if (esd) nTr = esd->GetNumberOfTracks();
  if (nTr == 0) return kFALSE;
  AliVTrack* tr = 0;
  // Cuts for AOD tracks (have already been applied to ESD tracks) - except dEdx
//  const tpcdEdx = 10;
  for (Int_t i = 0; i < nTr; i++) { // track loop
    tr = (trList ? (AliVTrack*)trList->At(i) : (AliVTrack*)esd->GetTrack(i));
    if (!tr) continue;
    if (esd) {
      AliESDtrack* esdTr = (AliESDtrack*)tr;
      if (!trFilter->IsSelected(esdTr)) continue;
    }
    else if (trList) { // If AOD input
      Double_t pTMin = 0, pTMax = 0, etaMin = 0, etaMax = 0, minNCl = 0;
      UInt_t bit = 0;
      if ((fFlags & kTPC) == kTPC)    pTMin = 0.2, pTMax = 5., etaMin = -0.8, etaMax = 0.8, minNCl = 70, bit = 128;
      if ((fFlags & kHybrid) == kHybrid) pTMin = 0.2, pTMax = 5., etaMin = -0.8, etaMax = 0.8, minNCl = 70, bit = 272;

      AliAODTrack* aodTr = (AliAODTrack*)tr;
      if (aodTr->GetID() > -1) continue;
      if (!aodTr->TestFilterBit(bit) || aodTr->Pt() > pTMax || aodTr->Pt() < pTMin || 
	aodTr->Eta() > etaMax || aodTr->Eta() < etaMin || aodTr->GetTPCNcls() < minNCl) continue;
    }

//    if (tr->GetTPCsignal() < tpcdEdx) continue;
    // Track accepted
    Double_t eta = tr->Eta();
    if (((fFlags & kSPD) || (fFlags & kEtaGap)) && TMath::Abs(eta) < fEtaGap) continue;
    Double_t phi = tr->Phi();
//    Double_t pT = tr->Pt();
//    AliAODMCHeader* head = static_cast<AliAODMCHeader*>(aod->FindListObject(AliAODMCHeader::StdBranchName()));
//    Double_t rp = head->GetReactionPlaneAngle();
//    Double_t b = head->GetImpactParameter();
    Double_t weight = 1.;//AliForwardFlowWeights::Instance().CalcWeight(eta, pT, phi, 0, rp, b); 

    if ((mode & kFillRef)) {
      fCumuRef->Fill(eta, 0., weight);// mult goes in underflowbin - no visual, but not needed?
      fdNdedpRefAcc->Fill(eta, phi, weight);
    }
    if ((mode & kFillDiff)) {
      fCumuDiff->Fill(eta, 0., weight);
      fdNdedpDiffAcc->Fill(eta, phi, weight);
    }
    for (Int_t n = 1; n <= 2*fMaxMoment; n++) {
      Double_t cosBin = fCumuDiff->GetYaxis()->GetBinCenter(GetBinNumberCos(n));
      Double_t sinBin = fCumuDiff->GetYaxis()->GetBinCenter(GetBinNumberSin(n));
      Double_t cosnPhi = weight*TMath::Cos(n*phi);
      Double_t sinnPhi = weight*TMath::Sin(n*phi);
      // fill ref
      if ((mode & kFillRef)) {
	fCumuRef->Fill(eta, cosBin, cosnPhi);
	fCumuRef->Fill(eta, sinBin, sinnPhi);
      }
      // fill diff
      if ((mode & kFillDiff)) {
	fCumuDiff->Fill(eta, cosBin, cosnPhi);
	fCumuDiff->Fill(eta, sinBin, sinnPhi);
      }
    } // End of NUA loop
  } // End of track loop
  return kTRUE;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::VertexBin::CumulantsAccumulate(Double_t cent) 
{
  // 
  //  Calculate the Q cumulant up to order fMaxMoment
  //
  //  Parameters:
  //   cent: centrality of event
  //
  if (!fCumuRef) AliFatal("You have not called AddOutput() - Terminating!");

  // Fill out NUA hists
  for (Int_t etaBin = 1; etaBin <= fCumuRef->GetNbinsX(); etaBin++) {
    Double_t eta = fCumuRef->GetXaxis()->GetBinCenter(etaBin);
    if (fCumuRef->GetBinContent(etaBin, 0) == 0) continue;
    if ((fFlags & kTracks) && (fFlags && kSPD) && !(fFlags & kEtaGap)) eta = -eta;
    for (Int_t qBin = 0; qBin <= fCumuRef->GetNbinsY(); qBin++) {
      fCumuNUARef->Fill(eta, cent, Double_t(qBin), fCumuRef->GetBinContent(etaBin, qBin));
    }
  }
  for (Int_t etaBin = 1; etaBin <= fCumuDiff->GetNbinsX(); etaBin++) {
    Double_t eta = fCumuDiff->GetXaxis()->GetBinCenter(etaBin);
    if (fCumuDiff->GetBinContent(etaBin, 0) == 0) continue;
    for (Int_t qBin = 0; qBin <= fCumuDiff->GetNbinsY(); qBin++) {
      fCumuNUADiff->Fill(eta, cent, Double_t(qBin), fCumuDiff->GetBinContent(etaBin, qBin));
    }
  }

  // We create the objects needed for the analysis
  TH3D* cumuRef = 0; 
  TH3D* cumuDiff = 0; 
  // For each n we loop over the hists
  for (Int_t n = 2; n <= fMaxMoment; n++) {
    cumuRef  = (TH3D*)fCumuHists.Get('r',n);
    cumuDiff = (TH3D*)fCumuHists.Get('d',n);
    Int_t prevRefEtaBin = 0;

    // Per mom. quantities
    Double_t dQnReA = 0, dQnImA = 0, multA = 0; 
    Double_t dQnReB = 0, dQnImB = 0, multB = 0;
    Double_t dQ2nReA = 0, dQ2nImA = 0;
    Double_t two = 0, w2 = 0, four = 0, w4 = 0;
    Double_t cosPhi1Phi2 = 0, cosPhi1Phi2Phi3m = 0;
    Double_t sinPhi1Phi2 = 0, sinPhi1Phi2Phi3m = 0;
    for (Int_t etaBin = 1; etaBin <= fCumuDiff->GetNbinsX(); etaBin++) {
      Double_t eta = fCumuDiff->GetXaxis()->GetBinCenter(etaBin);
      Double_t refEta = eta;
      if ((fFlags & kTracks) && (fFlags && kSPD) && !(fFlags & kEtaGap)) refEta = -eta;
      Int_t refEtaBinA = fCumuRef->GetXaxis()->FindBin(refEta);
      if ((fFlags & kEtaGap)) refEta = -eta;
      Int_t refEtaBinB = fCumuRef->GetXaxis()->FindBin(refEta);
      if (refEtaBinA != prevRefEtaBin) {
	prevRefEtaBin = refEtaBinA;
	// Reference flow
	multA  = fCumuRef->GetBinContent(refEtaBinA, 0);
	dQnReA = fCumuRef->GetBinContent(refEtaBinA, GetBinNumberCos(n));
	dQnImA = fCumuRef->GetBinContent(refEtaBinA, GetBinNumberSin(n));
	dQ2nReA = fCumuRef->GetBinContent(refEtaBinA, GetBinNumberCos(n*2));
	dQ2nImA = fCumuRef->GetBinContent(refEtaBinA, GetBinNumberSin(n*2));
	
	multB  = fCumuRef->GetBinContent(refEtaBinB, 0);
	dQnReB = fCumuRef->GetBinContent(refEtaBinB, GetBinNumberCos(n));
	dQnImB = fCumuRef->GetBinContent(refEtaBinB, GetBinNumberSin(n));

	if (multA <= 3 || multB <= 3) return; 
	// The reference flow is calculated 
	// 2-particle
	if ((fFlags & kStdQC)) {
	  w2 = multA * (multA - 1.);
	  two = dQnReA*dQnReA + dQnImA*dQnImA - multA;
	} else {
	  w2 = multA * multB;
	  two = dQnReA*dQnReB + dQnImA*dQnImB;
	}
      	cumuRef->Fill(eta, cent, kW2Two, two);
  	cumuRef->Fill(eta, cent, kW2, w2);

	// The reference flow is calculated 
	// 4-particle
	if ((fFlags & kStdQC)) {
	  w4 = multA * (multA - 1.) * (multA - 2.) * (multA - 3.);
	
	  four = 2.*multA*(multA-3.) + TMath::Power((TMath::Power(dQnReA,2.)+TMath::Power(dQnImA,2.)),2.)
		   -4.*(multA-2.)*(TMath::Power(dQnReA,2.) + TMath::Power(dQnImA,2.))
		   -2.*(TMath::Power(dQnReA,2.)*dQ2nReA+2.*dQnReA*dQnImA*dQ2nImA-TMath::Power(dQnImA,2.)*dQ2nReA)
		   +(TMath::Power(dQ2nReA,2.)+TMath::Power(dQ2nImA,2.));

	  cumuRef->Fill(eta, cent, kW4Four, four);
	  cumuRef->Fill(eta, cent, kW4, w4);

	  // NUA
	  cosPhi1Phi2 = dQnReA*dQnReA - dQnImA*dQnImA - dQ2nReA;
	  sinPhi1Phi2 = 2.*dQnReA*dQnImA - dQ2nImA;

	  cosPhi1Phi2Phi3m = dQnReA*(TMath::Power(dQnReA,2)+TMath::Power(dQnImA,2))
			      -dQnReA*dQ2nReA-dQnImA*dQ2nImA-2.*(multA-1)*dQnReA;

	  sinPhi1Phi2Phi3m = -dQnImA*(TMath::Power(dQnReA,2)+TMath::Power(dQnImA,2))
			      +dQnReA*dQ2nImA-dQnImA*dQ2nReA+2.*(multA-1)*dQnImA; 

	  cumuRef->Fill(eta, cent, kCosphi1phi2, cosPhi1Phi2);
	  cumuRef->Fill(eta, cent, kSinphi1phi2, sinPhi1Phi2);
	  cumuRef->Fill(eta, cent, kCosphi1phi2phi3m, cosPhi1Phi2Phi3m);
	  cumuRef->Fill(eta, cent, kSinphi1phi2phi3m, sinPhi1Phi2Phi3m);
	  cumuRef->Fill(eta, cent, k3pWeight, multA*(multA-1.)*(multA-2.));
	} // End of QC{4}
      } // End of reference flow
      // For each etaBin bin the necessary values for differential flow is calculated
      Double_t mp = fCumuDiff->GetBinContent(etaBin, 0);
      Double_t pnRe = fCumuDiff->GetBinContent(etaBin, GetBinNumberCos(n));
      Double_t pnIm = fCumuDiff->GetBinContent(etaBin, GetBinNumberSin(n));
      Double_t p2nRe = fCumuDiff->GetBinContent(etaBin, GetBinNumberCos(n*2));
      Double_t p2nIm = fCumuDiff->GetBinContent(etaBin, GetBinNumberSin(n*2));
      if (mp == 0) continue;
      Double_t mq = 0;
      Double_t qnRe = 0;
      Double_t qnIm = 0;
      Double_t q2nRe = 0;
      Double_t q2nIm = 0;

      // Differential flow calculations for each eta bin is done:
      // 2-particle differential flow
      if ((fFlags & kStdQC) && (!(fFlags & kTracks) || ((fFlags & kTracks) && (fFlags & kMC) && !(fFlags & kSPD) && TMath::Abs(eta) < 0.75))) {
	mq = mp;
	qnRe = pnRe;
	qnIm = pnIm;
	q2nRe = p2nRe;
	q2nIm = p2nIm;
      }

      Double_t w2p = mp * multB - mq;
      Double_t twoPrime = pnRe*dQnReB + pnIm*dQnImB - mq;
      
      cumuDiff->Fill(eta, cent, kW2Two, twoPrime);
      cumuDiff->Fill(eta, cent, kW2, w2p);

      if ((fFlags & kEtaGap)) continue;
      // Differential flow calculations for each eta bin bin is done:
      // 4-particle differential flow
      Double_t w4p = (mp * multA - 3.*mq)*(multA - 1.)*(multA - 2.);
   
      Double_t fourPrime = (TMath::Power(dQnReA,2.)+TMath::Power(dQnImA,2.))*(pnRe*dQnReA+pnIm*dQnImA)
	  		  - q2nRe*(TMath::Power(dQnReA,2.)-TMath::Power(dQnImA,2.))
	  		  - 2.*q2nIm*dQnReA*dQnImA
	  		  - pnRe*(dQnReA*dQ2nReA+dQnImA*dQ2nImA)
	  		  + pnIm*(dQnImA*dQ2nReA-dQnReA*dQ2nImA)
	  		  - 2.*multA*(pnRe*dQnReA+pnIm*dQnImA)
	  		  - 2.*(TMath::Power(dQnReA,2.)+TMath::Power(dQnImA,2.))*mq 
	  		  + 6.*(qnRe*dQnReA+qnIm*dQnImA)
	  		  + 1.*(q2nRe*dQ2nReA+q2nIm*dQ2nImA)
	  		  + 2.*(pnRe*dQnReA+pnIm*dQnImA) 
	  		  + 2.*mq*multA 
	  		  - 6.*mq; 

      cumuDiff->Fill(eta, cent, kW4Four, fourPrime);
      cumuDiff->Fill(eta, cent, kW4, w4p);

      // NUA
      Double_t cosPsi1Phi2 = pnRe*dQnReA - pnIm*dQnImA - q2nRe;
      Double_t sinPsi1Phi2 = pnRe*dQnImA + pnIm*dQnReA - q2nIm;

      Double_t cosPsi1Phi2Phi3p = pnRe*(TMath::Power(dQnImA,2.)+TMath::Power(dQnReA,2.)-multA)
			    - 1.*(q2nRe*dQnReA+q2nIm*dQnImA)  
			    - mq*dQnReA+2.*qnRe;
   
      Double_t sinPsi1Phi2Phi3p = pnIm*(TMath::Power(dQnImA,2.)+TMath::Power(dQnReA,2.)-multA)
			    - 1.*(q2nIm*dQnReA-q2nRe*dQnImA)  
			    - mq*dQnImA+2.*qnIm; 

      Double_t cosPsi1Phi2Phi3m = pnRe*(TMath::Power(dQnReA,2.)-TMath::Power(dQnImA,2.))+2.*pnIm*dQnReA*dQnImA
			    - 1.*(pnRe*dQ2nReA+pnIm*dQ2nImA)  
			    - 2.*mq*dQnReA+2.*qnRe;
   
      Double_t sinPsi1Phi2Phi3m = pnIm*(TMath::Power(dQnReA,2.)-TMath::Power(dQnImA,2.))-2.*pnRe*dQnReA*dQnImA
			    - 1.*(pnIm*dQ2nReA-pnRe*dQ2nImA)
			    + 2.*mq*dQnImA-2.*qnIm;

      cumuDiff->Fill(eta, cent, kCosphi1phi2, cosPsi1Phi2);
      cumuDiff->Fill(eta, cent, kSinphi1phi2, sinPsi1Phi2);
      cumuDiff->Fill(eta, cent, kCosphi1phi2phi3m, cosPsi1Phi2Phi3m);
      cumuDiff->Fill(eta, cent, kSinphi1phi2phi3m, sinPsi1Phi2Phi3m);
      cumuDiff->Fill(eta, cent, k3pWeight, (mp*multA-2.*mq)*(multA-1.));
      cumuDiff->Fill(eta, cent, kCosphi1phi2phi3p, cosPsi1Phi2Phi3p);
      cumuDiff->Fill(eta, cent, kSinphi1phi2phi3p, sinPsi1Phi2Phi3p); 
    } // End of eta loop
    // Event count
    cumuRef->Fill(-7., cent, -0.5, 1.);
  } // End of moment loop
  return;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::VertexBin::GetLimits(Int_t bin, Int_t& aLow, Int_t& aHigh,
                                                Int_t& bLow, Int_t& bHigh) const
{
  //
  //  Get the limits for the 3 correlator method
  //
  //  Parameters: 
  //   bin  : reference bin #
  //   aLow : Lowest bin to be included in v_A calculations
  //   aHigh: Highest bin to be included in v_A calculations
  //   bLow : Lowest bin to be included in v_B calculations
  //   bHigh: Highest bin to be included in v_B calculations
  //
  if ((fFlags & kFMD)) {
    switch(bin) {
      case 0:
	aLow = 14; aHigh = 15;
	bLow = 20; bHigh = 22;
	break;
      case 1:
	aLow = 16; aHigh = 16;
	bLow = 21; bHigh = 22;
	break;
      case 2:
	aLow =  6; aHigh =  7;
	bLow = 21; bHigh = 22;
	break;
      case 3:
	aLow =  6; aHigh =  7;
	bLow = 12; bHigh = 12; 
	break;
      case 4:
	aLow =  6; aHigh =  8;
	bLow = 13; bHigh = 14;
	break;
      default:
	AliFatal(Form("No limits for this eta region! (%d)", bin));
    }
  } 
  else if ((fFlags & kVZERO)) {
    switch(bin) {
      case 0:
        aLow =  6; aHigh = 13;
        bLow = 17; bHigh = 18;
	break;
      case 1:
        aLow =  6; aHigh =  9;
        bLow = 17; bHigh = 18;
	break;
      case 2:
        aLow =  2; aHigh =  3;
        bLow = 17; bHigh = 18;
	break;
      case 3:
        aLow =  2; aHigh =  3;
        bLow =  6; bHigh =  9;
	break;
      case 4:
        aLow =  2; aHigh =  3;
        bLow =  6; bHigh = 13;
	break;
      default:
	AliFatal(Form("No limits for this eta region! (%d)", bin));
    }
  }
  // Try to catch cases where fEtaLimits and these values do not correspond to each other
  if (aHigh > fCumuNUARef->GetNbinsX() || bHigh > fCumuNUARef->GetNbinsX()) 
    AliFatal(Form("Limits outside vtx range! (%d) - aHigh = %d, bHigh = %d, Nbins = %d", 
      bin, aHigh, bHigh, fCumuNUARef->GetNbinsX()));
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::VertexBin::CumulantsAccumulate3Cor(Double_t cent) 
{
  // 
  //  Calculate the Q cumulant up to order fMaxMoment
  //
  //  Parameters:
  //   cent: centrality of event
  //
  if (!fCumuRef) AliFatal("You have not called AddOutput() - Terminating!");

  // Fill out NUA hists
  for (Int_t etaBin = 1; etaBin <= fCumuRef->GetNbinsX(); etaBin++) {
    Double_t eta = fCumuRef->GetXaxis()->GetBinCenter(etaBin);
    if (fCumuRef->GetBinContent(etaBin, 0) == 0) continue;
    for (Int_t qBin = 0; qBin <= fCumuRef->GetNbinsY(); qBin++) {
      fCumuNUARef->Fill(eta, cent, Double_t(qBin), fCumuRef->GetBinContent(etaBin, qBin));
    }
  }
  for (Int_t etaBin = 1; etaBin <= fCumuDiff->GetNbinsX(); etaBin++) {
    Double_t eta = fCumuDiff->GetXaxis()->GetBinCenter(etaBin);
    if (fCumuDiff->GetBinContent(etaBin, 0) == 0) continue;
    for (Int_t qBin = 0; qBin <= fCumuDiff->GetNbinsY(); qBin++) {
      fCumuNUADiff->Fill(eta, cent, Double_t(qBin), fCumuDiff->GetBinContent(etaBin, qBin));
    }
  }

  // We create the objects needed for the analysis
  TH3D* cumuRef = 0; 
  TH3D* cumuDiff = 0; 
  // For each n we loop over the hists
  for (Int_t n = 2; n <= fMaxMoment; n++) {
    cumuRef  = (TH3D*)fCumuHists.Get('r',n);
    cumuDiff = (TH3D*)fCumuHists.Get('d',n);

    // Per mom. quantities
    Int_t prevLim = 0;
    Int_t aLow = 0, aHigh = 0, bLow = 0, bHigh = 0;
    Double_t dQnReA = 0, dQnImA = 0, multA = 0; 
    Double_t dQnReB = 0, dQnImB = 0, multB = 0;
    Double_t two = 0, w2 = 0;
    for (Int_t etaBin = 1; etaBin <= fCumuDiff->GetNbinsX(); etaBin++) {
      Double_t eta = fCumuDiff->GetXaxis()->GetBinCenter(etaBin);
      if (fEtaLims[prevLim] < eta) {
        GetLimits(prevLim, aLow, aHigh, bLow, bHigh);
	prevLim++;
	multA = 0; dQnReA = 0; dQnImA = 0;
	multB = 0; dQnReB = 0; dQnImB = 0;
	// Reference flow
        for (Int_t a = aLow; a <= aHigh; a++) {
	  multA  += fCumuRef->GetBinContent(a, 0);
	  dQnReA += fCumuRef->GetBinContent(a, GetBinNumberCos(n));
	  dQnImA += fCumuRef->GetBinContent(a, GetBinNumberSin(n));
	}
	for (Int_t b = bLow; b <= bHigh; b++) {
	  multB  += fCumuRef->GetBinContent(b, 0);
	  dQnReB += fCumuRef->GetBinContent(b, GetBinNumberCos(n));
	  dQnImB += fCumuRef->GetBinContent(b, GetBinNumberSin(n));
	}
	// The reference flow is calculated 
	// 2-particle
	w2 = multA * multB;
      	two = dQnReA*dQnReB + dQnImA*dQnImB;
      } // End of reference flow
      cumuRef->Fill(eta, cent, kW2Two, two);
      cumuRef->Fill(eta, cent, kW2, w2);

      // For each etaBin bin the necessary values for differential flow is calculated
      Double_t mp = fCumuDiff->GetBinContent(etaBin, 0);
      Double_t pnRe = fCumuDiff->GetBinContent(etaBin, GetBinNumberCos(n));
      Double_t pnIm = fCumuDiff->GetBinContent(etaBin, GetBinNumberSin(n));
      if (mp == 0) continue;

      // Differential flow calculations for each eta bin is done:
      // 2-particle differential flow
      Double_t w2pA = mp * multA;
      Double_t twoPrimeA = pnRe*dQnReA + pnIm*dQnImA;
      cumuDiff->Fill(eta, cent, kW2Two, twoPrimeA);
      cumuDiff->Fill(eta, cent, kW2, w2pA);

      Double_t w2pB = mp * multB;
      Double_t twoPrimeB = pnRe*dQnReB + pnIm*dQnImB;
      cumuDiff->Fill(eta, cent, kW4Four, twoPrimeB);
      cumuDiff->Fill(eta, cent, kW4, w2pB);
     } // End of eta loop
    // Event count
    cumuRef->Fill(-7., cent, -0.5, 1.);
  } // End of moment loop
  return;

}
//_____________________________________________________________________
void AliForwardFlowTaskQC::VertexBin::CumulantsTerminate(TList* inlist, TList* outlist) 
{
  // 
  //  Finalizes the Q cumulant calculations
  // 
  //  Parameters:
  //   inlist: input sumlist
  //   outlist: output result list 
  //
  
  // Re-find cumulants hist if Terminate is called separately
  if (!fCumuHists.IsConnected()) {
    TList* list = (TList*)inlist->FindObject(Form("%svertex_%d_%d%s", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)));
    fCumuHists.ConnectList(Form("%sCumu_%d_%d%s", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)), list);

    if (!fCumuNUARef) 
      fCumuNUARef = (TH3D*)list->FindObject(Form("%s_vertex_%d_%d%s_cumuNUARef", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)));
    if (!fCumuNUADiff) 
      fCumuNUADiff = (TH3D*)list->FindObject(Form("%s_vertex_%d_%d%s_cumuNUADiff", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)));
  }
  // Clone to avoid normalization problems when redoing terminate locally
  fCumuNUARef = (TH3D*)fCumuNUARef->Clone(Form("%s_vertex_%d_%d%s_cumuNUARefNorm", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)));
  fCumuNUADiff = (TH3D*)fCumuNUADiff->Clone(Form("%s_vertex_%d_%d%s_cumuNUADiffNorm", fType.Data(), fVzMin, fVzMax, GetQCType(fFlags)));

  // Diagnostics histograms
  TH2I* quality = (TH2I*)outlist->FindObject(Form("hQCQuality%s%s", fType.Data(), GetQCType(fFlags)));
  if (!quality) { 
    quality = MakeQualityHist(Form("hQCQuality%s%s", fType.Data(), GetQCType(fFlags)));
    outlist->Add(quality);
  }
  TH1D* cent = (TH1D*)outlist->FindObject(Form("%s%s_cent", fType.Data(), GetQCType(fFlags)));
  if (!cent) {
    cent = new TH1D(Form("%s%s_cent", fType.Data(), GetQCType(fFlags)), 
                    Form("%s%s_cent", fType.Data(), GetQCType(fFlags)), 
                fCumuNUARef->GetNbinsY(), fCumuNUARef->GetYaxis()->GetXmin(), fCumuNUARef->GetYaxis()->GetXmax());
    cent->GetXaxis()->Set(fCumuNUARef->GetNbinsY(), fCumuNUARef->GetYaxis()->GetXbins()->GetArray());
    outlist->Add(cent);
  }
  TH2D* dNdetaRef = (TH2D*)outlist->FindObject(Form("%s%s_dNdetaRef", fType.Data(), GetQCType(fFlags)));
  if (!dNdetaRef) {
    dNdetaRef = new TH2D(Form("%s%s_dNdetaRef", fType.Data(), GetQCType(fFlags)), 
                               Form("%s%s_dNdetaRef", fType.Data(), GetQCType(fFlags)), 
                fCumuNUARef->GetNbinsX(), fCumuNUARef->GetXaxis()->GetXmin(), fCumuNUARef->GetXaxis()->GetXmax(),
                fCumuNUARef->GetNbinsY(), fCumuNUARef->GetYaxis()->GetXmin(), fCumuNUARef->GetYaxis()->GetXmax());
    dNdetaRef->GetYaxis()->Set(fCumuNUARef->GetNbinsY(), fCumuNUARef->GetYaxis()->GetXbins()->GetArray());
    dNdetaRef->Sumw2();
    outlist->Add(dNdetaRef);
  }
  TH2D* dNdetaDiff = (TH2D*)outlist->FindObject(Form("%s%s_dNdetaDiff", fType.Data(), GetQCType(fFlags)));
  if (!dNdetaDiff) {
    dNdetaDiff = new TH2D(Form("%s%s_dNdetaDiff", fType.Data(), GetQCType(fFlags)), 
                                Form("%s%s_dNdetaDiff", fType.Data(), GetQCType(fFlags)), 
                fCumuNUADiff->GetNbinsX(), fCumuNUADiff->GetXaxis()->GetXmin(), fCumuNUADiff->GetXaxis()->GetXmax(),
                fCumuNUADiff->GetNbinsY(), fCumuNUADiff->GetYaxis()->GetXmin(), fCumuNUADiff->GetYaxis()->GetXmax());
    dNdetaDiff->GetYaxis()->Set(fCumuNUADiff->GetNbinsY(), fCumuNUADiff->GetYaxis()->GetXbins()->GetArray());
    dNdetaDiff->Sumw2();
    outlist->Add(dNdetaDiff);
  }
  
  // Setting up outputs
  // Create output lists and diagnostics
  TList* vtxList = (TList*)outlist->FindObject("vtxList");
  if (!vtxList) {
    vtxList = new TList();
    vtxList->SetName("vtxList");
    outlist->Add(vtxList);
  }
  vtxList->Add(fCumuNUARef);
  vtxList->Add(fCumuNUADiff);
 
  // Setup output profiles
  CumuHistos cumu2(fMaxMoment, ((fFlags & kNUAcorr) ? 2 : 0));
  CumuHistos cumu4(fMaxMoment, ((fFlags & kNUAcorr) ? 1 : 0));

  cumu2.ConnectList(Form("%sQC2_Cumu%s_vtx_%d_%d", fType.Data(), GetQCType(fFlags), fVzMin, fVzMax), vtxList);
  if ((fFlags & kStdQC)) 
    cumu4.ConnectList(Form("%sQC4_Cumu%s_vtx_%d_%d", fType.Data(), GetQCType(fFlags), fVzMin, fVzMax), vtxList);

  for (Int_t n = 2; n <= fMaxMoment; n++) {
    // 2-particle 
    cumu2.Add(MakeOutputHist(2, n, "Ref", CumuHistos::kNoNUA));
    if ((fFlags & k3Cor)){
      cumu2.Add(MakeOutputHist(2, n, "DiffA", CumuHistos::kNoNUA));
      cumu2.Add(MakeOutputHist(2, n, "DiffB", CumuHistos::kNoNUA));
    } else {
      cumu2.Add(MakeOutputHist(2, n, "Diff", CumuHistos::kNoNUA));
    }
    // 4-particle      
    if ((fFlags & kStdQC)) {
      cumu4.Add(MakeOutputHist(4, n, "Ref", CumuHistos::kNoNUA));
      cumu4.Add(MakeOutputHist(4, n, "Diff", CumuHistos::kNoNUA));
    }
  } // End of v_n result loop
  // NUA corrected
  if ((fFlags & kNUAcorr)) {
    for (Int_t n = 2; n <= fMaxMoment; n++) {
      // 2-particle 
      cumu2.Add(MakeOutputHist(2, n, "Ref", CumuHistos::kNUAOld));
      if ((fFlags & k3Cor)) {
        cumu2.Add(MakeOutputHist(2, n, "DiffA", CumuHistos::kNUAOld));
        cumu2.Add(MakeOutputHist(2, n, "DiffB", CumuHistos::kNUAOld));
      } else {
	cumu2.Add(MakeOutputHist(2, n, "Diff", CumuHistos::kNUAOld));
      }
      // 4-particle      
      if ((fFlags & kStdQC)) {
	cumu4.Add(MakeOutputHist(4, n, "Ref", CumuHistos::kNUAOld));
	cumu4.Add(MakeOutputHist(4, n, "Diff", CumuHistos::kNUAOld));
      }   
    }
    for (Int_t n = 2; n <= fMaxMoment; n++) {
      // 2-particle 
      cumu2.Add(MakeOutputHist(2, n, "Ref", CumuHistos::kNUA));
      if ((fFlags & k3Cor)) {
	cumu2.Add(MakeOutputHist(2, n, "DiffA", CumuHistos::kNUA));
	cumu2.Add(MakeOutputHist(2, n, "DiffB", CumuHistos::kNUA));
      } else {
	cumu2.Add(MakeOutputHist(2, n, "Diff", CumuHistos::kNUA));
      }
    }
  }

  // Calculating the cumulants
  if ((fFlags & k3Cor)) {
    Calculate3CorFlow(cumu2, quality, cent, dNdetaRef, dNdetaDiff);
  } else {
    CalculateReferenceFlow(cumu2, cumu4, quality, cent, dNdetaRef);
    CalculateDifferentialFlow(cumu2, cumu4, quality, dNdetaDiff);
  }
  if ((fFlags & kNUAcorr)) {
    SolveCoupledFlowEquations(cumu2, 'r');
    if ((fFlags & k3Cor)) {
      SolveCoupledFlowEquations(cumu2, 'a');
      SolveCoupledFlowEquations(cumu2, 'b');
    } else {
      SolveCoupledFlowEquations(cumu2, 'd');
    }
  }
 
  // Add to output for immediate viewing - individual vtx bins are used for final results
  AddVertexBins(cumu2, outlist, ((fFlags & kNUAcorr) ? 2 : 0));
  if ((fFlags & kStdQC)) AddVertexBins(cumu4, outlist, ((fFlags & kNUAcorr) ? 1 : 0));

  // Setup NUA diagnoastics histograms
  TList* nualist = (TList*)outlist->FindObject("NUATerms");
  if (!nualist) {
    nualist = new TList();
    nualist->SetName("NUATerms");
    outlist->Add(nualist);
  }
  // Reference
  TH2D* nuaRef = (TH2D*)nualist->FindObject(Form("%sReferenceNUA%s", fType.Data(), GetQCType(fFlags)));
  TH2D* temp = 0;
  if (!nuaRef) {
    nuaRef = (TH2D*)fCumuNUARef->Project3D("yz");
    nuaRef->Scale(1./fCumuNUARef->GetNbinsX());
    nuaRef->SetName(Form("%sReferenceNUA%s", fType.Data(), GetQCType(fFlags)));
    nuaRef->SetTitle(Form("%sReferenceNUA%s", fType.Data(), GetQCType(fFlags)));
    nualist->Add(nuaRef);
  } else {
    temp = (TH2D*)fCumuNUARef->Project3D("yz");
    temp->Scale(1./fCumuNUARef->GetNbinsX());
    nuaRef->Add(temp);
    delete temp;
  }
  // Filling in underflow to make scaling possible in Terminate()
  nuaRef->Fill(0., -1., 1.);
  // Differential
  TH2D* nuaDiff = (TH2D*)nualist->FindObject(Form("%sDifferentialNUA%s", fType.Data(), GetQCType(fFlags)));
  if (!nuaDiff) {
    nuaDiff = (TH2D*)fCumuNUADiff->Project3D("yz");
    nuaDiff->SetName(Form("%sDifferentialNUA%s", fType.Data(), GetQCType(fFlags)));
    nuaDiff->SetTitle(Form("%sDifferentialNUA%s", fType.Data(), GetQCType(fFlags)));
    nualist->Add(nuaDiff);
  } else {
    temp = (TH2D*)fCumuNUADiff->Project3D("yz");
    nuaDiff->Add(temp);
    delete temp;
  }
  // Filling in underflow to make scaling possible in Terminate()
  nuaDiff->Fill(0., -1., 1.);

  return;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::VertexBin::CalculateReferenceFlow(CumuHistos& cumu2h, CumuHistos& cumu4h, TH2I* quality, 
                                                             TH1D* chist, TH2D* dNdetaRef) const  
{
  // 
  //  Calculates the reference flow
  //
  //  Parameters:
  //   cumu2h: CumuHistos object with QC{2} cumulants
  //   cumu4h: CumuHistos object with QC{4} cumulants
  //   quality: Histogram for success rate of cumulants
  //   chist: Centrality histogram
  //   dNdetaRef: dN/deta histogram for estimating multiplicity used for ref calculations
  //

  // Normalizing common NUA hists
  for (Int_t cBin = 1; cBin <= fCumuNUARef->GetNbinsY(); cBin++) {
    Double_t cent = fCumuNUARef->GetYaxis()->GetBinCenter(cBin);
    for (Int_t eBin = 1; eBin <= fCumuNUARef->GetNbinsX(); eBin++) {
      Double_t eta = fCumuNUARef->GetXaxis()->GetBinCenter(eBin);
      Double_t mult = fCumuNUARef->GetBinContent(eBin, cBin, 0);
      if (mult == 0) continue;
      for (Int_t qBin = 1; qBin <= fCumuNUARef->GetNbinsZ(); qBin++) {
	fCumuNUARef->SetBinContent(eBin, cBin, qBin, fCumuNUARef->GetBinContent(eBin, cBin, qBin)/mult);
	fCumuNUARef->SetBinError(eBin, cBin, qBin, fCumuNUARef->GetBinError(eBin, cBin, qBin)/mult);
      }
      // Fill dN/deta diagnostics
      dNdetaRef->Fill(eta, cent, mult);
    }
  }

  // For flow calculations
  TH3D* cumuRef = 0; 
  TH2D* cumu2 = 0;
  TH2D* cumu2NUAold = 0;
  TH2D* cumu4 = 0;
  TH2D* cumu4NUA = 0;
  Int_t qualityFactor = ((fFlags & kStdQC) ? 8 : 4); // used for correctly filling in quality hists
  // Loop over cumulant histogram for final calculations 
  for (Int_t n = 2; n <= fMaxMoment; n++) { // Moment loop begins
    cumu2 = (TH2D*)cumu2h.Get('r', n, CumuHistos::kNoNUA);
    if ((fFlags & kNUAcorr)) {
      cumu2NUAold = (TH2D*)cumu2h.Get('r', n, CumuHistos::kNUAOld);
    }
    if ((fFlags & kStdQC)) {
      cumu4 = (TH2D*)cumu4h.Get('r', n, CumuHistos::kNoNUA);
      if ((fFlags & kNUAcorr)) cumu4NUA = (TH2D*)cumu4h.Get('r', n, CumuHistos::kNUAOld);
    }
    cumuRef  = (TH3D*)fCumuHists.Get('r', n);
    // Begin loops
    for (Int_t cBin = 1; cBin <= cumuRef->GetNbinsY(); cBin++) { // Centrality loop begins
      Double_t cent = cumuRef->GetYaxis()->GetBinCenter(cBin);
      if (n == 2) chist->Fill(cent, cumuRef->GetBinContent(0, cBin, 0));
      if (fDebug > 0) AliInfo(Form("%s - v_%d: centrality %3.1f:..", fType.Data(), n, cent));
      for (Int_t etaBin = 1; etaBin <= cumuRef->GetNbinsX(); etaBin++) { // Eta loop begins
	Double_t eta = cumuRef->GetXaxis()->GetBinCenter(etaBin);
	Double_t refEta = eta;
	Int_t refEtaBinA = fCumuNUARef->GetXaxis()->FindBin(refEta);
	if ((fFlags & kEtaGap)) refEta = -eta;
	Int_t refEtaBinB = fCumuNUARef->GetXaxis()->FindBin(refEta);
	// 2-particle reference flow
	Double_t w2Two = cumuRef->GetBinContent(refEtaBinA, cBin, kW2Two);
	Double_t w2 = cumuRef->GetBinContent(refEtaBinA, cBin, kW2);
	if (w2 == 0) continue;
	Double_t cosP1nPhiA = fCumuNUARef->GetBinContent(refEtaBinA, cBin, GetBinNumberCos(n));
	Double_t sinP1nPhiA = fCumuNUARef->GetBinContent(refEtaBinA, cBin, GetBinNumberSin(n));
	Double_t cosP1nPhiB = fCumuNUARef->GetBinContent(refEtaBinB, cBin, GetBinNumberCos(n));
	Double_t sinP1nPhiB = fCumuNUARef->GetBinContent(refEtaBinB, cBin, GetBinNumberSin(n));
	Double_t cos2nPhiA = fCumuNUARef->GetBinContent(refEtaBinA, cBin, GetBinNumberCos(2*n));
	Double_t sin2nPhiA = fCumuNUARef->GetBinContent(refEtaBinA, cBin, GetBinNumberSin(2*n));
	Double_t cos2nPhiB = fCumuNUARef->GetBinContent(refEtaBinB, cBin, GetBinNumberCos(2*n));
	Double_t sin2nPhiB = fCumuNUARef->GetBinContent(refEtaBinB, cBin, GetBinNumberSin(2*n));  
	Double_t two = w2Two / w2; 
	Double_t qc2 = two;
        if (qc2 >= 0) cumu2->Fill(eta, cent, TMath::Sqrt(qc2));

	if ((fFlags & kNUAcorr)) {
	  // Old NUA
	  // With no eta gap the last two terms are <<cos(phi)>>^2 and <<sin(phi)>>^2,
	  // with eta gap the different coverage is taken into account. 
	  // The next line covers both cases.
	  qc2 -= cosP1nPhiA*cosP1nPhiB + sinP1nPhiA*sinP1nPhiB;
	  // Extra NUA term from 2n cosines and sines
	  Double_t den = 1-(cos2nPhiA*cos2nPhiB + sin2nPhiA*sin2nPhiB);
	  if (den != 0) qc2 /= den;
	  else qc2 = 0;
	}
	if (qc2 <= 0) { 
	  if (fDebug > 0) 
	    AliInfo(Form("%s: QC_%d{2} = %1.3f for eta = %1.2f and centrality %3.1f - skipping", 
	    fType.Data(), n, qc2, eta, cent));
   	  quality->Fill((n-2)*qualityFactor+2, Int_t(cent));
	  continue;
	}
	Double_t vnTwo = TMath::Sqrt(qc2);
	if (!TMath::IsNaN(vnTwo)) { 
    	  quality->Fill((n-2)*qualityFactor+1, Int_t(cent));
	  if ((fFlags & kNUAcorr)) cumu2NUAold->Fill(eta, cent, vnTwo);
	}

	if (!(fFlags & kStdQC)) continue;
	// 4-particle reference flow
	Double_t w4Four = cumuRef->GetBinContent(refEtaBinA, cBin, kW4Four);
	Double_t w4 = cumuRef->GetBinContent(refEtaBinA, cBin, kW4);
	Double_t multm1m2 = cumuRef->GetBinContent(refEtaBinA, cBin, k3pWeight);
	if (w4 == 0 || multm1m2 == 0) continue;
	Double_t cosP1nPhi1P1nPhi2 = cumuRef->GetBinContent(refEtaBinA, cBin, kCosphi1phi2);
	Double_t sinP1nPhi1P1nPhi2 = cumuRef->GetBinContent(refEtaBinA, cBin, kSinphi1phi2);
	Double_t cosP1nPhi1M1nPhi2M1nPhi3 = cumuRef->GetBinContent(refEtaBinA, cBin, kCosphi1phi2phi3m);
	Double_t sinP1nPhi1M1nPhi2M1nPhi3 = cumuRef->GetBinContent(refEtaBinA, cBin, kSinphi1phi2phi3m);

	cosP1nPhi1P1nPhi2 /= w2;
	sinP1nPhi1P1nPhi2 /= w2;
	cosP1nPhi1M1nPhi2M1nPhi3 /= multm1m2;
	sinP1nPhi1M1nPhi2M1nPhi3 /= multm1m2;
	Double_t four = w4Four / w4;
	Double_t qc4 = four-2.*TMath::Power(two,2.);
        if (qc4 < 0) cumu4->Fill(eta, cent, TMath::Power(-qc4, 0.25));
	
	if ((fFlags & kNUAcorr)) {
	   qc4 += - 4.*cosP1nPhiA*cosP1nPhi1M1nPhi2M1nPhi3
		  + 4.*sinP1nPhiA*sinP1nPhi1M1nPhi2M1nPhi3-TMath::Power(cosP1nPhi1P1nPhi2,2.)-TMath::Power(sinP1nPhi1P1nPhi2,2.)
		  + 4.*cosP1nPhi1P1nPhi2*(TMath::Power(cosP1nPhiA,2.)-TMath::Power(sinP1nPhiA,2.))
		  + 8.*sinP1nPhi1P1nPhi2*sinP1nPhiA*cosP1nPhiA
		  + 8.*two*(TMath::Power(cosP1nPhiA,2.)+TMath::Power(sinP1nPhiA,2.))
		  - 6.*TMath::Power((TMath::Power(cosP1nPhiA,2.)+TMath::Power(sinP1nPhiA,2.)),2.);
	}
	if (qc4 >= 0) {
	  if (fDebug > 0) 
	    AliInfo(Form("%s: QC_%d{4} = %1.3f for eta = %1.2f and centrality %3.1f - skipping", 
	    fType.Data(), n, qc2, eta, cent));
	  quality->Fill((n-2)*qualityFactor+6, Int_t(cent));
	  continue;
	}
	Double_t vnFour = TMath::Power(-qc4, 0.25);
	if (!TMath::IsNaN(vnFour*multm1m2)) {
	  quality->Fill((n-2)*qualityFactor+5, Int_t(cent));
	  if ((fFlags & kNUAcorr)) cumu4NUA->Fill(eta, cent, vnFour);
	}
      } // End of eta
    } // End of cent
  } // End of moment

  return;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::VertexBin::CalculateDifferentialFlow(CumuHistos& cumu2h, CumuHistos& cumu4h, 
                                                                TH2I* quality, TH2D* dNdetaDiff) const  
{
  // 
  //  Calculates the differential flow
  //
  //  Parameters:
  //   cumu2h: CumuHistos object with QC{2} cumulants
  //   cumu4h: CumuHistos object with QC{4} cumulants
  //   quality: Histogram for success rate of cumulants
  //   dNdetaDiff: dN/deta histogram for estimating multiplicity used for diff calculations
  //

  for (Int_t cBin = 1; cBin <= fCumuNUADiff->GetNbinsY(); cBin++) {
    Double_t cent = fCumuNUADiff->GetYaxis()->GetBinCenter(cBin);
    for (Int_t eBin = 1; eBin <= fCumuNUADiff->GetNbinsX(); eBin++) {
      Double_t eta = fCumuNUADiff->GetXaxis()->GetBinCenter(eBin);
      Double_t mult = fCumuNUADiff->GetBinContent(eBin, cBin, 0);
      if (mult == 0) continue;
      for (Int_t qBin = 1; qBin <= fCumuNUADiff->GetNbinsZ(); qBin++) {
	fCumuNUADiff->SetBinContent(eBin, cBin, qBin, fCumuNUADiff->GetBinContent(eBin, cBin, qBin)/mult);
	fCumuNUADiff->SetBinError(eBin, cBin, qBin, fCumuNUADiff->GetBinError(eBin, cBin, qBin)/mult);
      }
      dNdetaDiff->Fill(eta, cent, mult);
    }
  }

  // For flow calculations
  TH3D* cumuRef = 0; 
  TH3D* cumuDiff = 0; 
  TH2D* cumu2 = 0;
  TH2D* cumu2NUAold = 0;
  TH2D* cumu4 = 0;
  TH2D* cumu4NUA = 0;
  Int_t qualityFactor = ((fFlags & kStdQC) ? 8 : 4); // used for correctly filling in quality hists
  // Loop over cumulant histogram for final calculations 
  for (Int_t n = 2; n <= fMaxMoment; n++) { // Moment loop begins
    cumu2 = (TH2D*)cumu2h.Get('d', n, CumuHistos::kNoNUA);
    if ((fFlags & kNUAcorr)) {
      cumu2NUAold = (TH2D*)cumu2h.Get('d', n, CumuHistos::kNUAOld);
    }
    if ((fFlags & kStdQC)) {
      cumu4 = (TH2D*)cumu4h.Get('d',n);
      if ((fFlags & kNUAcorr)) cumu4NUA = (TH2D*)cumu4h.Get('d', n, CumuHistos::kNUAOld);
    }
    cumuRef  = (TH3D*)fCumuHists.Get('r',n);
    cumuDiff = (TH3D*)fCumuHists.Get('d',n);
    for (Int_t cBin = 1; cBin <= cumuDiff->GetNbinsY(); cBin++) { // Centrality loop begins
      Double_t cent = cumuDiff->GetYaxis()->GetBinCenter(cBin);
      if (fDebug > 0) AliInfo(Form("%s - v_%d: centrality %3.1f:..", fType.Data(), n, cent));
      for (Int_t etaBin = 1; etaBin <= cumuDiff->GetNbinsX(); etaBin++) { // Eta loop begins
	Double_t eta = cumuDiff->GetXaxis()->GetBinCenter(etaBin);
	Double_t refEta = eta;
	Int_t refEtaBinA = fCumuNUARef->GetXaxis()->FindBin(refEta);
	if ((fFlags & kEtaGap)) refEta = -eta;
	Int_t refEtaBinB = fCumuNUARef->GetXaxis()->FindBin(refEta);

        // Reference objects
	Double_t w2 = cumuRef->GetBinContent(refEtaBinA, cBin, kW2);
	if (w2 == 0) continue;
	Double_t two = cumuRef->GetBinContent(refEtaBinA, cBin, kW2Two);
        two /= w2;
 	Double_t cosP1nPhiA = fCumuNUARef->GetBinContent(refEtaBinA, cBin, GetBinNumberCos(n));
	Double_t sinP1nPhiA = fCumuNUARef->GetBinContent(refEtaBinA, cBin, GetBinNumberSin(n));
	Double_t cosP1nPhiB = fCumuNUARef->GetBinContent(refEtaBinB, cBin, GetBinNumberCos(n));
	Double_t sinP1nPhiB = fCumuNUARef->GetBinContent(refEtaBinB, cBin, GetBinNumberSin(n));       
	Double_t cos2nPhiB = fCumuNUARef->GetBinContent(refEtaBinB, cBin, GetBinNumberCos(2*n));
	Double_t sin2nPhiB = fCumuNUARef->GetBinContent(refEtaBinB, cBin, GetBinNumberSin(2*n));  
	
	// 2-particle differential flow
	Double_t w2pTwoPrime = cumuDiff->GetBinContent(etaBin, cBin, kW2Two);
	Double_t w2p = cumuDiff->GetBinContent(etaBin, cBin, kW2);
	if (w2p == 0) continue;
	Double_t cosP1nPsi = fCumuNUADiff->GetBinContent(etaBin, cBin, GetBinNumberCos(n));
	Double_t sinP1nPsi = fCumuNUADiff->GetBinContent(etaBin, cBin, GetBinNumberSin(n));
	Double_t cos2nPsi = fCumuNUADiff->GetBinContent(etaBin, cBin, GetBinNumberCos(2*n));
	Double_t sin2nPsi = fCumuNUADiff->GetBinContent(etaBin, cBin, GetBinNumberSin(2*n));
	Double_t twoPrime = w2pTwoPrime / w2p;

	Double_t qc2Prime = twoPrime;
	cumu2->Fill(eta, cent, qc2Prime);
	if ((fFlags & kNUAcorr)) {
	  // Old nua
	  qc2Prime -= cosP1nPsi*cosP1nPhiB + sinP1nPsi*sinP1nPhiB;
	  // Extra NUA term from 2n cosines and sines
	  qc2Prime /= (1.-(cos2nPsi*cos2nPhiB + sin2nPsi*sin2nPhiB));
	}
	if (!TMath::IsNaN(qc2Prime)) {
	  quality->Fill((n-2)*qualityFactor+3, Int_t(cent));
	  if ((fFlags & kNUAcorr)) cumu2NUAold->Fill(eta, cent, qc2Prime);
	}
	else 
	  quality->Fill((n-2)*qualityFactor+4, Int_t(cent));
	if (fDebug > 1) 
	  AliInfo(Form("%s: QC'_%d{2} = %1.3f for eta = %1.2f and centrality %3.1f", 
	  fType.Data(), n, qc2Prime, eta, cent));

        if (!(fFlags & kStdQC)) continue;
        // Reference objects
	Double_t cosP1nPhi1P1nPhi2 = cumuRef->GetBinContent(refEtaBinA, cBin, kCosphi1phi2);
	Double_t sinP1nPhi1P1nPhi2 = cumuRef->GetBinContent(refEtaBinA, cBin, kSinphi1phi2);
	Double_t cosP1nPhi1M1nPhi2M1nPhi3 = cumuRef->GetBinContent(refEtaBinA, cBin, kCosphi1phi2phi3m);
	Double_t sinP1nPhi1M1nPhi2M1nPhi3 = cumuRef->GetBinContent(refEtaBinA, cBin, kSinphi1phi2phi3m);
	Double_t multm1m2 = cumuRef->GetBinContent(refEtaBinA, cBin, k3pWeight);
	cosP1nPhi1P1nPhi2 /= w2;
	sinP1nPhi1P1nPhi2 /= w2;
	cosP1nPhi1M1nPhi2M1nPhi3 /= multm1m2;
	sinP1nPhi1M1nPhi2M1nPhi3 /= multm1m2;

	// 4-particle differential flow
	Double_t w4pFourPrime = cumuDiff->GetBinContent(etaBin, cBin, kW4Four);
	Double_t w4p = cumuDiff->GetBinContent(etaBin, cBin, kW4);
	Double_t mpqMult = cumuDiff->GetBinContent(etaBin, cBin, k3pWeight);
	if (w4p == 0 || mpqMult == 0) continue;
	Double_t cosP1nPsi1P1nPhi2 = cumuDiff->GetBinContent(etaBin, cBin, kCosphi1phi2);
	Double_t sinP1nPsi1P1nPhi2 = cumuDiff->GetBinContent(etaBin, cBin, kSinphi1phi2);
	Double_t cosP1nPsi1M1nPhi2M1nPhi3 = cumuDiff->GetBinContent(etaBin, cBin, kCosphi1phi2phi3m);
	Double_t sinP1nPsi1M1nPhi2M1nPhi3 = cumuDiff->GetBinContent(etaBin, cBin, kSinphi1phi2phi3m);
	Double_t cosP1nPsi1P1nPhi2M1nPhi3 = cumuDiff->GetBinContent(etaBin, cBin, kCosphi1phi2phi3p);
	Double_t sinP1nPsi1P1nPhi2M1nPhi3 = cumuDiff->GetBinContent(etaBin, cBin, kSinphi1phi2phi3p); 
	
	cosP1nPsi1P1nPhi2 /= w2p;
	sinP1nPsi1P1nPhi2 /= w2p;
	cosP1nPsi1M1nPhi2M1nPhi3 /= mpqMult;
	sinP1nPsi1M1nPhi2M1nPhi3 /= mpqMult;
	cosP1nPsi1P1nPhi2M1nPhi3 /= mpqMult;
	sinP1nPsi1P1nPhi2M1nPhi3 /= mpqMult;
       
	Double_t fourPrime = w4pFourPrime / w4p;
	Double_t qc4Prime = fourPrime-2.*twoPrime*two; 
	if (cumu4) cumu4->Fill(eta, cent, qc4Prime);

	if ((fFlags & kNUAcorr)) {
	  qc4Prime += - cosP1nPsi*cosP1nPhi1M1nPhi2M1nPhi3
		      + sinP1nPsi*sinP1nPhi1M1nPhi2M1nPhi3
		      - cosP1nPhiA*cosP1nPsi1M1nPhi2M1nPhi3
		      + sinP1nPhiA*sinP1nPsi1M1nPhi2M1nPhi3
		      - 2.*cosP1nPhiA*cosP1nPsi1P1nPhi2M1nPhi3
		      - 2.*sinP1nPhiA*sinP1nPsi1P1nPhi2M1nPhi3
		      - cosP1nPsi1P1nPhi2*cosP1nPhi1P1nPhi2
		      - sinP1nPsi1P1nPhi2*sinP1nPhi1P1nPhi2
		      + 2.*cosP1nPhi1P1nPhi2*(cosP1nPsi*cosP1nPhiA-sinP1nPsi*sinP1nPhiA)
		      + 2.*sinP1nPhi1P1nPhi2*(cosP1nPsi*sinP1nPhiA+sinP1nPsi*cosP1nPhiA)
		      + 4.*two*(cosP1nPsi*cosP1nPhiA+sinP1nPsi*sinP1nPhiA) 
		      + 2.*cosP1nPsi1P1nPhi2*(TMath::Power(cosP1nPhiA,2.)-TMath::Power(sinP1nPhiA,2.))
		      + 4.*sinP1nPsi1P1nPhi2*cosP1nPhiA*sinP1nPhiA
		      + 4.*twoPrime*(TMath::Power(cosP1nPhiA,2.)+TMath::Power(sinP1nPhiA,2.))
		      - 6.*(TMath::Power(cosP1nPhiA,2.)-TMath::Power(sinP1nPhiA,2.)) 
		      * (cosP1nPsi*cosP1nPhiA-sinP1nPsi*sinP1nPhiA)
		      - 12.*cosP1nPhiA*sinP1nPhiA
		      * (sinP1nPsi*cosP1nPhiA+cosP1nPsi*sinP1nPhiA);
	}
//	Double_t vnFourDiff = - qc4Prime / TMath::Power(-qc4, 0.75);
	if (!TMath::IsNaN(qc4Prime*mpqMult)) {
	  quality->Fill((n-2)*qualityFactor+7, Int_t(cent));
	  if (cumu4NUA) cumu4NUA->Fill(eta, cent, qc4Prime);
	}
	else 
	  quality->Fill((n-2)*qualityFactor+8, Int_t(cent));
	if (fDebug > 1) 
	  AliInfo(Form("%s: v_%d{4} = %1.3f for eta = %1.2f and centrality %3.1f", 
	  fType.Data(), n, qc4Prime, eta, cent));
      } // End of eta loop
    } // End of centrality loop
  } // End of moment

  return;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::VertexBin::Calculate3CorFlow(CumuHistos& cumu2h, TH2I* quality, TH1D* chist,
                                                        TH2D* dNdetaRef, TH2D* dNdetaDiff) const  
{
  // 
  //  Calculates the 3 sub flow
  //
  //  Parameters:
  //   cumu2h: CumuHistos object with QC{2} cumulants
  //   quality: Histogram for success rate of cumulants
  //   chist: Centrality histogram
  //   dNdetaDiff: dN/deta histogram for estimating multiplicity used for diff calculations
  //

  // For flow calculations
  TH3D* cumuRef = 0; 
  TH3D* cumuDiff = 0; 
  TH2D* cumu2r = 0;
  TH2D* cumu2rNUAold = 0;
  TH2D* cumu2a = 0;
  TH2D* cumu2aNUAold = 0;
  TH2D* cumu2b = 0;
  TH2D* cumu2bNUAold = 0;
  // Loop over cumulant histogram for final calculations 
  for (Int_t n = 2; n <= fMaxMoment; n++) { // Moment loop begins
    cumu2r = (TH2D*)cumu2h.Get('r', n, CumuHistos::kNoNUA);
    cumu2a = (TH2D*)cumu2h.Get('a', n, CumuHistos::kNoNUA);
    cumu2b = (TH2D*)cumu2h.Get('b', n, CumuHistos::kNoNUA);
    if ((fFlags & kNUAcorr)) {
      cumu2rNUAold = (TH2D*)cumu2h.Get('r', n, CumuHistos::kNUAOld);
      cumu2aNUAold = (TH2D*)cumu2h.Get('a', n, CumuHistos::kNUAOld);
      cumu2bNUAold = (TH2D*)cumu2h.Get('b', n, CumuHistos::kNUAOld);
    }
    cumuRef  = (TH3D*)fCumuHists.Get('r',n);
    cumuDiff = (TH3D*)fCumuHists.Get('d',n);
    for (Int_t cBin = 1; cBin <= cumuRef->GetNbinsY(); cBin++) { // Centrality loop begins
      Double_t cent = cumuRef->GetYaxis()->GetBinCenter(cBin);
      if (n == 2) chist->Fill(cent, cumuRef->GetBinContent(0, cBin, 0));
      if (fDebug > 0) AliInfo(Form("%s - v_%d: centrality %3.1f:..", fType.Data(), n, cent));
      // Here it starts!
      Int_t prevLim = 0;
      Int_t aLow = 0, aHigh = 0, bLow = 0, bHigh = 0;
      Double_t cosP1nPhiA = 0;
      Double_t sinP1nPhiA = 0;
      Double_t cos2nPhiA = 0;
      Double_t sin2nPhiA = 0;
      Double_t cosP1nPhiB = 0;
      Double_t sinP1nPhiB = 0;
      Double_t cos2nPhiB = 0;
      Double_t sin2nPhiB = 0;
      Double_t multA = 0;
      Double_t multB = 0;

      for (Int_t etaBin = 1; etaBin <= cumuDiff->GetNbinsX(); etaBin++) { // Eta loop begins
	Double_t eta = cumuDiff->GetXaxis()->GetBinCenter(etaBin);
	// 2-particle reference flow
	Double_t w2Two = cumuRef->GetBinContent(etaBin, cBin, kW2Two);
	Double_t w2 = cumuRef->GetBinContent(etaBin, cBin, kW2);
	if (w2 == 0) continue;

	// Update NUA for new range!
	if (fEtaLims[prevLim] < eta) {
	  GetLimits(prevLim, aLow, aHigh, bLow, bHigh);
	  prevLim++;
	  cosP1nPhiA = 0; sinP1nPhiA = 0; cos2nPhiA = 0; sin2nPhiA = 0; multA = 0;
	  cosP1nPhiB = 0; sinP1nPhiB = 0; cos2nPhiB = 0; sin2nPhiB = 0; multB = 0;
	  for (Int_t a = aLow; a <= aHigh; a++) {
	    cosP1nPhiA += fCumuNUARef->GetBinContent(a, cBin, GetBinNumberCos(n));
	    sinP1nPhiA += fCumuNUARef->GetBinContent(a, cBin, GetBinNumberSin(n));
	    cos2nPhiA += fCumuNUARef->GetBinContent(a, cBin, GetBinNumberCos(2*n));
	    sin2nPhiA += fCumuNUARef->GetBinContent(a, cBin, GetBinNumberSin(2*n));
	    multA += fCumuNUARef->GetBinContent(a, cBin, 0);
	  }
	  for (Int_t b = bLow; b <= bHigh; b++) {
	    cosP1nPhiB += fCumuNUARef->GetBinContent(b, cBin, GetBinNumberCos(n));
	    sinP1nPhiB += fCumuNUARef->GetBinContent(b, cBin, GetBinNumberSin(n));
	    cos2nPhiB += fCumuNUARef->GetBinContent(b, cBin, GetBinNumberCos(2*n));
	    sin2nPhiB += fCumuNUARef->GetBinContent(b, cBin, GetBinNumberSin(2*n));
	    multB += fCumuNUARef->GetBinContent(b, cBin, 0);
	  }
	  if (multA == 0 || multB == 0) {
	    AliWarning(Form("Empty NUA values for 3Cor! (%s)", cumuRef->GetName()));
	    continue;
	  }
	  cosP1nPhiA /= multA;
	  sinP1nPhiA /= multA;
	  cos2nPhiA /= multA;
	  sin2nPhiA /= multA;
	  cosP1nPhiB /= multB;
	  sinP1nPhiB /= multB;
	  cos2nPhiB /= multB;
	  sin2nPhiB /= multB;

	  dNdetaRef->Fill(eta, cent, multA+multB);
	}
	Double_t two = w2Two / w2;
  
	Double_t qc2 = two;
        if (qc2 >= 0) cumu2r->Fill(eta, cent, TMath::Sqrt(qc2));

	if ((fFlags & kNUAcorr)) {
	  // Old nua
	  qc2 -= cosP1nPhiA*cosP1nPhiB + sinP1nPhiA*sinP1nPhiB;
	  // Extra NUA term from 2n cosines and sines
	  qc2 /= (1-(cos2nPhiA*cos2nPhiB + sin2nPhiA*sin2nPhiB));
	}
	if (qc2 <= 0) { 
	  if (fDebug > 0) 
	    AliInfo(Form("%s: QC_%d{2} = %1.3f for eta = %1.2f and centrality %3.1f - skipping", 
	    fType.Data(), n, qc2, eta, cent));
   	  quality->Fill((n-2)*4+2, Int_t(cent));
	  continue;
	}
	Double_t vnTwo = TMath::Sqrt(qc2);
	if (!TMath::IsNaN(vnTwo)) { 
    	  quality->Fill((n-2)*4+1, Int_t(cent));
	  if ((fFlags & kNUAcorr)) cumu2rNUAold->Fill(eta, cent, vnTwo);
	}

	// 2-particle differential flow
	Double_t w2pTwoPrimeA = cumuDiff->GetBinContent(etaBin, cBin, kW2Two);
	Double_t w2pA = cumuDiff->GetBinContent(etaBin, cBin, kW2);
	Double_t w2pTwoPrimeB = cumuDiff->GetBinContent(etaBin, cBin, kW4Four);
	Double_t w2pB = cumuDiff->GetBinContent(etaBin, cBin, kW4);
	if (w2pA == 0 || w2pB == 0) continue;
	Double_t cosP1nPsi = fCumuNUADiff->GetBinContent(etaBin, cBin, GetBinNumberCos(n));
	Double_t sinP1nPsi = fCumuNUADiff->GetBinContent(etaBin, cBin, GetBinNumberSin(n));
	Double_t cos2nPsi = fCumuNUADiff->GetBinContent(etaBin, cBin, GetBinNumberCos(2*n));
	Double_t sin2nPsi = fCumuNUADiff->GetBinContent(etaBin, cBin, GetBinNumberSin(2*n));
        Double_t mult = fCumuNUADiff->GetBinContent(etaBin, cBin, 0);
        if (mult == 0) continue;
        cosP1nPsi /= mult;
        sinP1nPsi /= mult;
        cos2nPsi /= mult;
        sin2nPsi /= mult;
	Double_t twoPrimeA = w2pTwoPrimeA / w2pA;
	Double_t twoPrimeB = w2pTwoPrimeB / w2pB;
	dNdetaDiff->Fill(eta, cent, mult);

	Double_t qc2PrimeA = twoPrimeA;
	Double_t qc2PrimeB = twoPrimeB;
	if (qc2PrimeA*qc2PrimeB >= 0) {
	  cumu2a->Fill(eta, cent, qc2PrimeA);
	  cumu2b->Fill(eta, cent, qc2PrimeB);
	}
	if ((fFlags & kNUAcorr)) {
	  // Old nua
	  qc2PrimeA -= cosP1nPsi*cosP1nPhiA + sinP1nPsi*sinP1nPhiA;
	  qc2PrimeB -= cosP1nPsi*cosP1nPhiB + sinP1nPsi*sinP1nPhiB; // Is this OK?
	  // Extra NUA term from 2n cosines and sines
	  if (cos2nPsi*cos2nPhiA + sin2nPsi*sin2nPhiA != 1.) qc2PrimeA /= (1.-(cos2nPsi*cos2nPhiA + sin2nPsi*sin2nPhiA));
	  if (cos2nPsi*cos2nPhiB + sin2nPsi*sin2nPhiB != 1.) qc2PrimeB /= (1.-(cos2nPsi*cos2nPhiB + sin2nPsi*sin2nPhiB));
	}
	if (!TMath::IsNaN(qc2PrimeA) && !TMath::IsNaN(qc2PrimeB) && qc2 != 0) {
	if (qc2PrimeA*qc2PrimeB >= 0) {
	  quality->Fill((n-2)*4+3, Int_t(cent));
	  if ((fFlags & kNUAcorr)) cumu2aNUAold->Fill(eta, cent, qc2PrimeA);
	  if ((fFlags & kNUAcorr)) cumu2bNUAold->Fill(eta, cent, qc2PrimeB);
	}
      }
      else 
	quality->Fill((n-2)*4+4, Int_t(cent));
	if (fDebug > 1) 
	  AliInfo(Form("%s: QC'a_%d{2} = %1.3f, QC'b_%d{2} = %1.3f for eta = %1.2f and centrality %3.1f", 
	  fType.Data(), n, qc2PrimeA, n, qc2PrimeB, eta, cent));
      } // End of eta loop
    } // End of centrality loop
  } // End of moment

  return;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::VertexBin::SolveCoupledFlowEquations(CumuHistos& cumu, const Char_t type) const  
{
  // 
  //  Function to solve the coupled flow equations
  //  We solve it by using matrix calculations:
  //  A*v_n = V => v_n = A^-1*V
  //  First we set up a TMatrixD container to make ROOT
  //  do the inversions in an efficient way, we multiply the current <<2>> estimates.
  //  Then we fill new TH2D's if the corrected <<2>>'s (cumuNUA object).
  //
  //  Parameters:
  //   cumu: CumuHistos object - uncorrected
  //   type: Reference ('r') or differential ('d') or ('a' or 'b') for 3 correlator
  //

  // We start by declaring Matrix and vector objects, as their constructors are quite heavy
  TMatrixD mNUA(fMaxMoment-1, fMaxMoment-1);
  TVectorD vQC2(fMaxMoment-1);

  for (Int_t cBin = 1; cBin <= cumu.Get(type, 2, CumuHistos::kNUAOld)->GetNbinsY(); cBin++) { // cent loop
    Double_t cent = cumu.Get(type, 2, CumuHistos::kNUAOld)->GetYaxis()->GetBinCenter(cBin);
    for (Int_t eBin = 1; eBin <= cumu.Get(type, 2, CumuHistos::kNUAOld)->GetNbinsX(); eBin++) { // eta loop
      Double_t eta = cumu.Get(type, 2, CumuHistos::kNUAOld)->GetXaxis()->GetBinCenter(eBin);
      mNUA.Zero(); // reset matrix
      vQC2.Zero(); // reset vector
      for (Int_t n = 0; n < fMaxMoment-1; n++) { // moment loop
      	vQC2(n) = static_cast<TH2D*>(cumu.Get(type, n+2, CumuHistos::kNUAOld))->GetBinContent(eBin, cBin);
      	if (type == 'r' || type == 'R') vQC2(n) *= vQC2(n); // going back to <<2>>
      	for (Int_t m = 0; m < fMaxMoment-1; m++) { // cross moment
  	  mNUA(n,m) = CalculateNUAMatrixElement(n, m, type, eBin, cBin);
    	} // End of cross moment loop
      } // End of moment loop
      // Invert matrix
      Double_t det = 0;
      mNUA.Invert(&det);
      // If determinant is non-zero we go with corrected results
      if (det != 0 ) vQC2 = mNUA*vQC2;
      else AliWarning(Form("Determinant == 0 - cent: %d-%d, eta: %f, type: '%c', data: %s, vtx: %d-%d%s", 
		      Int_t(cumu.Get(type, 2, CumuHistos::kNUAOld)->GetYaxis()->GetBinLowEdge(cBin)), 
		      Int_t(cumu.Get(type, 2, CumuHistos::kNUAOld)->GetYaxis()->GetBinUpEdge(cBin)),
		      cumu.Get(type, 2, CumuHistos::kNUAOld)->GetXaxis()->GetBinCenter(eBin), 
		      type, fType.Data(), fVzMin, fVzMax, 
		      GetQCType(fFlags, kTRUE)));
      // Go back to v_n for ref. keep <<2'>> for diff. flow).
      for (Int_t n = 0; n < fMaxMoment-1; n++) {
	Double_t vnTwo = 0;
        if (type == 'r' || type == 'R') 
          vnTwo = (vQC2(n) > 0. ? TMath::Sqrt(vQC2(n)) : 0.);
        else {
          // is really more <<2'>> in this case
	  vnTwo = vQC2(n);
	}
        // Fill in corrected v_n
	if (vnTwo != 0) static_cast<TH2D*>(cumu.Get(type, n+2, CumuHistos::kNUA))->Fill(eta, cent, vnTwo);
      } // End of moment loop
    } // End of eta loop
  } // End of centrality loop
  return;
}
//_____________________________________________________________________
Double_t AliForwardFlowTaskQC::VertexBin::CalculateNUAMatrixElement(Int_t n, Int_t m, Char_t type, Int_t binA, Int_t cBin) const  
{
  //  
  //  Calculates the (n,m)-th element in the NUA matrix: 1 if n == m, otherwise:
  //               <<cos[(n-m)phi1]>>*<<cos[(n-m)phi2]>> + <<sin[(n-m)phi1]>>*<<sin[(n-m)phi2]>>
  //    NUA(n,m) = -----------------------------------------------------------------------------
  //                   1 + <<cos[2nphi1]>>*<<cos[2nphi2]>> + <<sin[2nphi1]>>*<<sin[2nphi2]>>
  //
  //               <<cos[(n+m)phi1]>>*<<cos[(n+m)phi2]>> + <<sin[(n+m)phi1]>>*<<sin[(n+m)phi2]>>
  //             + -----------------------------------------------------------------------------
  //                   1 + <<cos[2nphi1]>>*<<cos[2nphi2]>> + <<sin[2nphi1]>>*<<sin[2nphi2]>>
  //
  //  Parameters:
  //   n: row
  //   m: coumn
  //   type: Reference ('r') or differential ('d') or ('a' or 'b')
  //   binA: eta bin of phi1
  //   cBin: centrality bin
  //
  //  Return: NUA(n,m)
  //
  if (n == m) return 1.;
  n += 2;
  m += 2;

  Double_t cosnMmPhi1 = 0, cosnMmPhi2 = 0, sinnMmPhi1 = 0, sinnMmPhi2 = 0;
  Double_t cosnPmPhi1 = 0, cosnPmPhi2 = 0, sinnPmPhi1 = 0, sinnPmPhi2 = 0;
  Double_t cos2nPhi1 = 0, cos2nPhi2 = 0, sin2nPhi1 = 0, sin2nPhi2 = 0;

  // reference flow
  if (type == 'r' || type == 'R') {
    if ((fFlags & k3Cor)) {
      Double_t eta = fCumuNUARef->GetXaxis()->GetBinCenter(binA);
      Int_t i = 0;
      while (fEtaLims[i] < eta) i++;
      Int_t aLow = 0, aHigh = 0, bLow = 0, bHigh = 0;
      GetLimits(i-1, aLow, aHigh, bLow, bHigh);
      Double_t multA = 0, multB = 0;
      for (Int_t a = aLow; a <= aHigh; a++) {
  	cosnMmPhi1 += fCumuNUARef->GetBinContent(a, cBin, GetBinNumberCos(n-m));
    	sinnMmPhi1 += fCumuNUARef->GetBinContent(a, cBin, GetBinNumberSin(n-m));
      	cosnPmPhi1 += fCumuNUARef->GetBinContent(a, cBin, GetBinNumberCos(n+m));
	sinnPmPhi1 += fCumuNUARef->GetBinContent(a, cBin, GetBinNumberSin(n+m));
	cos2nPhi1 += fCumuNUARef->GetBinContent(a, cBin, GetBinNumberCos(2*n));
	sin2nPhi1 += fCumuNUARef->GetBinContent(a, cBin, GetBinNumberSin(2*n));
	multA += fCumuNUARef->GetBinContent(a, cBin, 0);
      }
       for (Int_t b = bLow; b <= bHigh; b++) {
  	cosnMmPhi2 += fCumuNUARef->GetBinContent(b, cBin, GetBinNumberCos(n-m));
    	sinnMmPhi2 += fCumuNUARef->GetBinContent(b, cBin, GetBinNumberSin(n-m));
      	cosnPmPhi2 += fCumuNUARef->GetBinContent(b, cBin, GetBinNumberCos(n+m));
	sinnPmPhi2 += fCumuNUARef->GetBinContent(b, cBin, GetBinNumberSin(n+m));
	cos2nPhi2 += fCumuNUARef->GetBinContent(b, cBin, GetBinNumberCos(2*n));
	sin2nPhi2 += fCumuNUARef->GetBinContent(b, cBin, GetBinNumberSin(2*n));
	multB += fCumuNUARef->GetBinContent(b, cBin, 0);
      }
      if (multA == 0 || multB == 0) {
        if (fDebug > 0) AliWarning("multA or multB == 0 in matrix elements, aborting NUA");
        return 0.;
      }
      cosnMmPhi1 /= multA;
      sinnMmPhi1 /= multA;
      cosnPmPhi1 /= multA;
      sinnPmPhi1 /= multA;
      cos2nPhi1 /= multA; 
      sin2nPhi1 /= multA;
      cosnMmPhi2 /= multB;
      sinnMmPhi2 /= multB;
      cosnPmPhi2 /= multB;
      sinnPmPhi2 /= multB;
      cos2nPhi2 /= multB; 
      sin2nPhi2 /= multB;
    } else {
      Int_t binB = fCumuNUARef->GetXaxis()->FindBin(-fCumuNUARef->GetXaxis()->GetBinCenter(binA));
      cosnMmPhi1 = fCumuNUARef->GetBinContent(binA, cBin, GetBinNumberCos(n-m));
      sinnMmPhi1 = fCumuNUARef->GetBinContent(binA, cBin, GetBinNumberSin(n-m));
      cosnPmPhi1 = fCumuNUARef->GetBinContent(binA, cBin, GetBinNumberCos(n+m));
      sinnPmPhi1 = fCumuNUARef->GetBinContent(binA, cBin, GetBinNumberSin(n+m));
      cos2nPhi1 = fCumuNUARef->GetBinContent(binA, cBin, GetBinNumberCos(2*n));
      sin2nPhi1 = fCumuNUARef->GetBinContent(binA, cBin, GetBinNumberSin(2*n));
      cosnMmPhi2 = fCumuNUARef->GetBinContent(binB, cBin, GetBinNumberCos(n-m));
      sinnMmPhi2 = fCumuNUARef->GetBinContent(binB, cBin, GetBinNumberSin(n-m));
      cosnPmPhi2 = fCumuNUARef->GetBinContent(binB, cBin, GetBinNumberCos(n+m));
      sinnPmPhi2 = fCumuNUARef->GetBinContent(binB, cBin, GetBinNumberSin(n+m));
      cos2nPhi2 = fCumuNUARef->GetBinContent(binB, cBin, GetBinNumberCos(2*n));
      sin2nPhi2 = fCumuNUARef->GetBinContent(binB, cBin, GetBinNumberSin(2*n));
    }
  } // differential flow
  else if (type == 'd' || type == 'D') {
    Int_t binB = fCumuNUARef->GetXaxis()->FindBin(-fCumuNUADiff->GetXaxis()->GetBinCenter(binA));
    cosnMmPhi1 = fCumuNUADiff->GetBinContent(binA, cBin, GetBinNumberCos(n-m));
    sinnMmPhi1 = fCumuNUADiff->GetBinContent(binA, cBin, GetBinNumberSin(n-m));
    cosnPmPhi1 = fCumuNUADiff->GetBinContent(binA, cBin, GetBinNumberCos(n+m));
    sinnPmPhi1 = fCumuNUADiff->GetBinContent(binA, cBin, GetBinNumberSin(n+m));
    cos2nPhi1 = fCumuNUADiff->GetBinContent(binA, cBin, GetBinNumberCos(2*n));
    sin2nPhi1 = fCumuNUADiff->GetBinContent(binA, cBin, GetBinNumberSin(2*n));
    cosnMmPhi2 = fCumuNUARef->GetBinContent(binB, cBin, GetBinNumberCos(n-m));
    sinnMmPhi2 = fCumuNUARef->GetBinContent(binB, cBin, GetBinNumberSin(n-m));
    cosnPmPhi2 = fCumuNUARef->GetBinContent(binB, cBin, GetBinNumberCos(n+m));
    sinnPmPhi2 = fCumuNUARef->GetBinContent(binB, cBin, GetBinNumberSin(n+m));
    cos2nPhi2 = fCumuNUARef->GetBinContent(binB, cBin, GetBinNumberCos(2*n));
    sin2nPhi2 = fCumuNUARef->GetBinContent(binB, cBin, GetBinNumberSin(2*n));
  } // 3 correlator part a or b
  else if (type == 'a' || type == 'A' || type == 'b' || type == 'B') {
    Double_t mult1 = 0, mult2 = 0;
    // POIs
    cosnMmPhi1 = fCumuNUADiff->GetBinContent(binA, cBin, GetBinNumberCos(n-m));
    sinnMmPhi1 = fCumuNUADiff->GetBinContent(binA, cBin, GetBinNumberSin(n-m));
    cosnPmPhi1 = fCumuNUADiff->GetBinContent(binA, cBin, GetBinNumberCos(n+m));
    sinnPmPhi1 = fCumuNUADiff->GetBinContent(binA, cBin, GetBinNumberSin(n+m));
    cos2nPhi1 = fCumuNUADiff->GetBinContent(binA, cBin, GetBinNumberCos(2*n));
    sin2nPhi1 = fCumuNUADiff->GetBinContent(binA, cBin, GetBinNumberSin(2*n));
    mult1 = fCumuNUADiff->GetBinContent(binA, cBin, 0);
    // RPs
    Double_t eta = fCumuNUADiff->GetXaxis()->GetBinCenter(binA);
    Int_t i = 0;
    while (fEtaLims[i] < eta) i++;
    Int_t aLow = 0, aHigh = 0, bLow = 0, bHigh = 0;
    GetLimits(i-1, aLow, aHigh, bLow, bHigh);
    Int_t lLow = ((type == 'a' || type == 'A') ? aLow : bLow);
    Int_t lHigh = ((type == 'a' || type == 'A') ? aHigh : bHigh);
    for (Int_t l = lLow; l <= lHigh; l++) {
      cosnMmPhi2 += fCumuNUARef->GetBinContent(l, cBin, GetBinNumberCos(n-m));
      sinnMmPhi2 += fCumuNUARef->GetBinContent(l, cBin, GetBinNumberSin(n-m));
      cosnPmPhi2 += fCumuNUARef->GetBinContent(l, cBin, GetBinNumberCos(n+m));
      sinnPmPhi2 += fCumuNUARef->GetBinContent(l, cBin, GetBinNumberSin(n+m));
      cos2nPhi2 += fCumuNUARef->GetBinContent(l, cBin, GetBinNumberCos(2*n));
      sin2nPhi2 += fCumuNUARef->GetBinContent(l, cBin, GetBinNumberSin(2*n));
      mult2 += fCumuNUARef->GetBinContent(l, cBin, 0);
    }
    if (mult1 == 0 || mult2 == 0) { 
      if (fDebug > 0) AliWarning("mult1 or mult2 == 0 in matrix elements, aborting NUA");
      return 0.;
    }
    cosnMmPhi1 /= mult1;
    sinnMmPhi1 /= mult1;
    cosnPmPhi1 /= mult1;
    sinnPmPhi1 /= mult1;
    cos2nPhi1 /= mult1; 
    sin2nPhi1 /= mult1;
    cosnMmPhi2 /= mult2;
    sinnMmPhi2 /= mult2;
    cosnPmPhi2 /= mult2;
    sinnPmPhi2 /= mult2;
    cos2nPhi2 /= mult2; 
    sin2nPhi2 /= mult2;
  }

  // Actual calculation
  Double_t e = cosnMmPhi1*cosnMmPhi2 + sinnMmPhi1*sinnMmPhi2 + cosnPmPhi1*cosnPmPhi2 + sinnPmPhi1*sinnPmPhi2;
  Double_t den = 1 + cos2nPhi1*cos2nPhi2 + sin2nPhi1*sin2nPhi2;
  if (den != 0) e /= den;
  else return 0.;

  return e;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::VertexBin::AddVertexBins(CumuHistos& cumu, TList* list, UInt_t nNUA) const  
{
  //
  //  Add up vertex bins with flow results
  //
  //  Parameters:
  //   cumu: CumuHistos object with vtxbin results
  //   list: Outout list with added results
  //   nNUA: # of NUA histograms to loop over
  //
  TH2D* vtxHist = 0;
  TProfile2D* avgProf = 0;
  TString name;
  Int_t nT = ((fFlags & k3Cor) ? 3 : 2);
  Char_t ct = '\0';
  for (UInt_t nua = 0; nua <= nNUA; nua++) { // NUA loop
    for (Int_t n = 2; n <= fMaxMoment; n++) { // moment loop
      for (Int_t t = 0; t < nT; t++) { // type loop (r/d/a/b)
        // Find type
        switch (t) {
          case 0: ct = 'r'; break;
          case 1: ct = ((fFlags & k3Cor) ? 'a' : 'd'); break;
          case 2: ct = 'b'; break;
          default: ct = '\0'; break;
	}
	vtxHist = static_cast<TH2D*>(cumu.Get(ct,n,nua));
	if (!vtxHist) {
	  AliWarning("VertexBin::AddVertexBins: vtxHist not found!");
	  continue;
	}
	name = vtxHist->GetName();
	// Strip name of vtx info
	Ssiz_t l = name.Last('x')-3;
	name.Resize(l);
	avgProf = (TProfile2D*)list->FindObject(name.Data());
	// if no output profile yet, make one
	if (!avgProf) {
	  avgProf = new TProfile2D(name.Data(), name.Data(), 
	      vtxHist->GetNbinsX(), vtxHist->GetXaxis()->GetXmin(), vtxHist->GetXaxis()->GetXmax(),
	      vtxHist->GetNbinsY(), vtxHist->GetYaxis()->GetXmin(), vtxHist->GetYaxis()->GetXmax());
	  if (vtxHist->GetXaxis()->IsVariableBinSize()) 
	    avgProf->GetXaxis()->Set(vtxHist->GetNbinsX(), vtxHist->GetXaxis()->GetXbins()->GetArray());
	  if (vtxHist->GetYaxis()->IsVariableBinSize()) 
	    avgProf->GetYaxis()->Set(vtxHist->GetNbinsY(), vtxHist->GetYaxis()->GetXbins()->GetArray());
	  list->Add(avgProf);
	}
	// Fill in, cannot be done with Add function.
	for (Int_t e = 1; e <= vtxHist->GetNbinsX(); e++) { // eta loop
	  Double_t eta = vtxHist->GetXaxis()->GetBinCenter(e);
	  for (Int_t c = 1; c <= vtxHist->GetNbinsY(); c++) { // cent loop
	    Double_t cent = vtxHist->GetYaxis()->GetBinCenter(c);
	    Double_t cont = vtxHist->GetBinContent(e, c);
	    if (cont == 0) continue;
	    avgProf->Fill(eta, cent, cont);
	  } // End of cent loop
	} //  End of eta loop
      } // End of type loop
    } // End of moment loop
  } // End of nua loop
}
//_____________________________________________________________________
Int_t AliForwardFlowTaskQC::VertexBin::GetBinNumberCos(Int_t n) const  
{
  //
  //  Get the bin number of <<cos(nphi)>>
  //
  //  Parameters:
  //   n: moment
  //
  //  Return: bin number
  //
  Int_t bin = 0;
  n = TMath::Abs(n);
  
  if (n == 0) bin = fMaxMoment*4-1;
  else        bin = n*2-1;
  
  return bin;
}
//_____________________________________________________________________
Int_t AliForwardFlowTaskQC::VertexBin::GetBinNumberSin(Int_t n) const  
{
  //
  //  Get the bin number of <<sin(nphi)>>
  //
  //  Parameters:
  //   n: moment
  //
  //  Return: bin number
  //
  Int_t bin = 0;
  n = TMath::Abs(n);
  
  if (n == 0) bin = fMaxMoment*4;
  else        bin = n*2;

  return bin;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::VertexBin::SetupNUALabels(TAxis* a) const
{
  // 
  //  Setup NUA labels on axis
  //
  //  Parameters:
  //   a: Axis to set up
  //
  if (a->GetNbins() != GetBinNumberSin()) AliFatal("SetupNUALabels: Wrong number of bins on axis");

  Int_t i = 1, j= 1;
  while (i <= a->GetNbins()) {
    a->SetBinLabel(i++, Form("<<cos(%d#varphi)>>", j));
    a->SetBinLabel(i++, Form("<<sin(%d#varphi)>>", j++));
  }

  return;
}
//_____________________________________________________________________
TH2I* AliForwardFlowTaskQC::VertexBin::MakeQualityHist(const Char_t* name) const 
{
  //
  //  Add a histogram for checking the analysis quality
  //
  //  Parameters:
  //   const char*: name of data type
  //
  //  Return: histogram for tracking successful calculations
  //
  Int_t nBins = ((fFlags & kStdQC) ? 8 : 4);
  TH2I* quality = new TH2I(name, name, (fMaxMoment-1)*nBins, 1, (fMaxMoment-1)*nBins+1, fCumuNUARef->GetNbinsY(), 
                           fCumuNUARef->GetYaxis()->GetXmin(), fCumuNUARef->GetYaxis()->GetXmax());
  quality->GetYaxis()->Set(fCumuNUARef->GetNbinsY(), fCumuNUARef->GetYaxis()->GetXbins()->GetArray());
  for (Int_t i = 2, j = 1; i <= fMaxMoment; i++) {
    quality->GetXaxis()->SetBinLabel(j++, Form("QC_{%d}{2} > 0", i));
    quality->GetXaxis()->SetBinLabel(j++, Form("QC_{%d}{2} <= 0", i));
    quality->GetXaxis()->SetBinLabel(j++, Form("QC'_{%d}{2} > 0", i));
    quality->GetXaxis()->SetBinLabel(j++, Form("QC'_{%d}{2} <= 0", i));
    if ((fFlags & kStdQC)) {
      quality->GetXaxis()->SetBinLabel(j++, Form("QC_{%d}{4} < 0", i));
      quality->GetXaxis()->SetBinLabel(j++, Form("QC_{%d}{4} >= 0", i));
      quality->GetXaxis()->SetBinLabel(j++, Form("QC'_{%d}{4} < 0", i));
      quality->GetXaxis()->SetBinLabel(j++, Form("QC'_{%d}{4} >= 0", i));
    }
  }

  return quality;
}
//_____________________________________________________________________
TH2D* AliForwardFlowTaskQC::VertexBin::MakeOutputHist(Int_t qc, Int_t n, const Char_t* ctype, UInt_t nua) const
{
  //
  //  Setup a TH2D for the output
  //
  //  Parameters:
  //   qc   # of particle correlations
  //   n    flow moment
  //   ref  Type: r/d/a/b
  //   nua  For nua corrected hists?
  //
  //  Return: 2D hist for results
  //
  Bool_t ref = ((ctype[0] == 'R') || (ctype[0] == 'r'));
  TAxis* xAxis = (ref ? fCumuNUARef->GetXaxis() : fCumuNUADiff->GetXaxis());
  TAxis* yAxis = (ref ? fCumuNUARef->GetYaxis() : fCumuNUADiff->GetYaxis());
  TString ntype = "";
  switch (nua) {
    case CumuHistos::kNoNUA: ntype = "Un"; break;
    case CumuHistos::kNUAOld: ntype = "NUAOld"; break;
    case CumuHistos::kNUA: ntype = "NUA"; break;
    default: break;
  }
  TH2D* h = new TH2D(Form("%sQC%d_v%d_%s_%sCorr%s_vtx_%d_%d", 
			fType.Data(), qc, n, ctype, ntype.Data(),
			GetQCType(fFlags), fVzMin, fVzMax),
		      Form("%sQC%d_v%d_%s_%sCorr%s_vtx_%d_%d", 
			fType.Data(), qc, n, ctype, ntype.Data(),
			GetQCType(fFlags), fVzMin, fVzMax),
		      xAxis->GetNbins(), xAxis->GetXmin(), xAxis->GetXmax(),
		      yAxis->GetNbins(), yAxis->GetXmin(), yAxis->GetXmax());
  if (xAxis->IsVariableBinSize()) h->GetXaxis()->Set(xAxis->GetNbins(), xAxis->GetXbins()->GetArray());
  h->GetYaxis()->Set(yAxis->GetNbins(), yAxis->GetXbins()->GetArray());

  return h;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::PrintFlowSetup() const 
{
  //
  //  Print the setup of the flow task
  //
  Printf("=======================================================");
  Printf("%s::Print", this->IsA()->GetName());
  Printf("Forward detector:                 :\t%s", ((fFlowFlags & kFMD) ? "FMD" : "VZERO"));
  Printf("Number of bins in vertex axis     :\t%d", fVtxAxis->GetNbins());
  Printf("Range of vertex axis              :\t[%3.1f,%3.1f]", 
			  fVtxAxis->GetXmin(), fVtxAxis->GetXmax());
  Printf("Number of bins in centrality axis :\t%d", fCentAxis->GetNbins());
  printf("Centrality binning                :\t");
  for (Int_t cBin = 1; cBin <= fCentAxis->GetNbins(); cBin++) {
    printf("%02d-%02d%% ", Int_t(fCentAxis->GetBinLowEdge(cBin)), Int_t(fCentAxis->GetBinUpEdge(cBin)));
    if (cBin == fCentAxis->GetNbins()) printf("\n");
    else if (cBin % 4 == 0) printf("\n\t\t\t\t\t");
  }
  printf("Doing flow analysis for           :\t");
  for (Int_t n  = 2; n <= fMaxMoment; n++) printf("v%d ", n);
  printf("\n");
  TString type = "Standard QC{2} and QC{4} calculations.";
  if ((fFlowFlags & kEtaGap)) type = "QC{2} with a rapidity gap.";
  if ((fFlowFlags & k3Cor))   type = "QC{2} with 3 correlators.";
  if ((fFlowFlags & kTPC) == kTPC)    type.ReplaceAll(".", " with TPC tracks for reference.");
  if ((fFlowFlags & kHybrid) == kHybrid) type.ReplaceAll(".", " with hybrid tracks for reference.");
  Printf("QC calculation type               :\t%s", type.Data());
  Printf("Symmetrize ref. flow wrt. eta = 0 :\t%s", ((fFlowFlags & kSymEta) ? "true" : "false"));
  Printf("Apply NUA correction terms        :\t%s", ((fFlowFlags & kNUAcorr) ? "true" : "false"));
  Printf("Satellite vertex flag             :\t%s", ((fFlowFlags & kSatVtx) ? "true" : "false"));
  Printf("FMD sigma cut:                    :\t%f", fFMDCut);
  Printf("SPD sigma cut:                    :\t%f", fSPDCut);
  if ((fFlowFlags & kEtaGap) || (fFlowFlags & kTracks)) 
    Printf("Eta gap:                          :\t%f", fEtaGap);
  Printf("=======================================================");
}
//_____________________________________________________________________
const Char_t* AliForwardFlowTaskQC::GetQCType(UShort_t flags, Bool_t prependUS) 
{
  // 
  //  Get the type of the QC calculations
  //  Used for naming of objects in the VertexBin class, 
  //  important to avoid memory problems when running multiple
  //  initializations of the class with different setups
  // 
  //  Parameters:
  //   flags: Flow flags for type determination
  //   prependUS: Prepend an underscore (_) to the name
  // 
  //  Return: QC calculation type
  //
  TString type = "";
  if      ((flags & kStdQC))  type = "StdQC";
  else if ((flags & kEtaGap)) type = "EtaGap";
  else if ((flags & k3Cor))   type = "3Cor";
  else type = "UNKNOWN";
  if (prependUS) type.Prepend("_");
  if ((flags & kTPC) == kTPC)    type.Append("TPCTr");
  if ((flags & kHybrid) == kHybrid) type.Append("HybTr");
  
  return type.Data();
}
//_____________________________________________________________________
TH1* AliForwardFlowTaskQC::CumuHistos::Get(Char_t t, Int_t n, UInt_t nua) const
{
  //
  //  Get histogram/profile for type t and moment n
  //
  //  Parameters:
  //   t: type = 'r'/'d'
  //   n: moment
  //   nua: NUA type
  //
  n = GetPos(n, nua);
  if (n < 0) AliFatal(Form("CumuHistos out of range: (%c,%d)", t, n));

  TH1* h = 0;
  Int_t pos = -1;
  if      (t == 'r' || t == 'R') pos = n;    
  else if (t == 'd' || t == 'D') pos = n;    
  else if (t == 'a' || t == 'A') pos = 2*n;  
  else if (t == 'b' || t == 'B') pos = 2*n+1;
  else AliFatal(Form("CumuHistos wrong type: %c", t));

  if (t == 'r' || t == 'R') {
    if (pos < fRefHists->GetEntries()) {
      h = (TH1*)fRefHists->At(pos);
    }
  } else if (pos < fDiffHists->GetEntries()) {
    h = (TH1*)fDiffHists->At(pos);
  }
  if (!h) AliFatal(Form("No hist found in list %c at pos %d", t, pos));

  return h;
}
//_____________________________________________________________________
void AliForwardFlowTaskQC::CumuHistos::ConnectList(TString name, TList* l)
{
  //
  //  Connect an output list with this object
  //
  //  Parameters:
  //   name: base name
  //   l: list to keep outputs in
  //
  TString ref = name;
  ref.ReplaceAll("Cumu","CumuRef");
  fRefHists = (TList*)l->FindObject(ref.Data());
  if (!fRefHists) {
    fRefHists = new TList();
    fRefHists->SetName(ref.Data());
    l->Add(fRefHists);
  } else {
    // Check that the list correspond to fMaxMoments
    if (fRefHists->GetEntries() != (fMaxMoment-1.)*(fNUA+1)) 
      AliError("CumuHistos::ConnectList Wrong number of hists in ref list,"
               "you are doing something wrong!");
  }
  TString diff = name;
  diff.ReplaceAll("Cumu","CumuDiff");
  fDiffHists = (TList*)l->FindObject(diff.Data());
  if (!fDiffHists) {
    fDiffHists = new TList();
    fDiffHists->SetName(diff.Data());
    l->Add(fDiffHists);
  } else {
    // Check that the list correspond to fMaxMoment
    if ((fDiffHists->GetEntries() != (fMaxMoment-1.)*(fNUA+1)) &&  
        (fDiffHists->GetEntries() != 2*(fMaxMoment-1.)*(fNUA+1)))  
      AliError(Form("CumuHistos::ConnectList Wrong number of hists in diff list,"
               "you are doing something wrong! (%s)",name.Data()));
  }

}
//_____________________________________________________________________
void AliForwardFlowTaskQC::CumuHistos::Add(TH1* h) const
{
  //
  //  Add a histogram to this objects lists
  //
  //  Parameters:
  //   h: histogram/profile to add
  //
  TString name = h->GetName();
  if (name.Contains("Ref")) {
    if (fRefHists) fRefHists->Add(h);
    else AliFatal("CumuHistos::Add() - fRefHists does not exist");
    // Check that the list correspond to fMaxMoments
    if (fRefHists->GetEntries() > (fNUA+1)*(fMaxMoment-1.)) 
      AliError("CumuHistos::Add wrong number of hists in ref list, "
               "you are doing something wrong!");
  }
  else if (name.Contains("Diff")) {
    if (fDiffHists) fDiffHists->Add(h);
    else AliFatal("CumuHistos::Add() - fDiffHists does not exist");
    // Check that the list correspond to fMaxMoment
    if (fDiffHists->GetEntries() > 2*(fNUA+1)*(fMaxMoment-1.)) 
      AliError("CumuHistos::Add wrong number of hists in diff list, "
	 "you are doing something wrong!");
  }
  return;
}
//_____________________________________________________________________
Int_t AliForwardFlowTaskQC::CumuHistos::GetPos(Int_t n, UInt_t nua) const
{
  //
  //  Get position in list of moment n objects
  //  To take care of different numbering schemes
  //
  //  Parameters:
  //   n: moment
  //   nua: # of nua corrections applied
  //
  //  Return: position #
  //
  if (n > fMaxMoment) return -1;
  else return (n-2)+nua*(fMaxMoment-1);
}
//_____________________________________________________________________
//
//
// EOF
 AliForwardFlowTaskQC.cxx:1
 AliForwardFlowTaskQC.cxx:2
 AliForwardFlowTaskQC.cxx:3
 AliForwardFlowTaskQC.cxx:4
 AliForwardFlowTaskQC.cxx:5
 AliForwardFlowTaskQC.cxx:6
 AliForwardFlowTaskQC.cxx:7
 AliForwardFlowTaskQC.cxx:8
 AliForwardFlowTaskQC.cxx:9
 AliForwardFlowTaskQC.cxx:10
 AliForwardFlowTaskQC.cxx:11
 AliForwardFlowTaskQC.cxx:12
 AliForwardFlowTaskQC.cxx:13
 AliForwardFlowTaskQC.cxx:14
 AliForwardFlowTaskQC.cxx:15
 AliForwardFlowTaskQC.cxx:16
 AliForwardFlowTaskQC.cxx:17
 AliForwardFlowTaskQC.cxx:18
 AliForwardFlowTaskQC.cxx:19
 AliForwardFlowTaskQC.cxx:20
 AliForwardFlowTaskQC.cxx:21
 AliForwardFlowTaskQC.cxx:22
 AliForwardFlowTaskQC.cxx:23
 AliForwardFlowTaskQC.cxx:24
 AliForwardFlowTaskQC.cxx:25
 AliForwardFlowTaskQC.cxx:26
 AliForwardFlowTaskQC.cxx:27
 AliForwardFlowTaskQC.cxx:28
 AliForwardFlowTaskQC.cxx:29
 AliForwardFlowTaskQC.cxx:30
 AliForwardFlowTaskQC.cxx:31
 AliForwardFlowTaskQC.cxx:32
 AliForwardFlowTaskQC.cxx:33
 AliForwardFlowTaskQC.cxx:34
 AliForwardFlowTaskQC.cxx:35
 AliForwardFlowTaskQC.cxx:36
 AliForwardFlowTaskQC.cxx:37
 AliForwardFlowTaskQC.cxx:38
 AliForwardFlowTaskQC.cxx:39
 AliForwardFlowTaskQC.cxx:40
 AliForwardFlowTaskQC.cxx:41
 AliForwardFlowTaskQC.cxx:42
 AliForwardFlowTaskQC.cxx:43
 AliForwardFlowTaskQC.cxx:44
 AliForwardFlowTaskQC.cxx:45
 AliForwardFlowTaskQC.cxx:46
 AliForwardFlowTaskQC.cxx:47
 AliForwardFlowTaskQC.cxx:48
 AliForwardFlowTaskQC.cxx:49
 AliForwardFlowTaskQC.cxx:50
 AliForwardFlowTaskQC.cxx:51
 AliForwardFlowTaskQC.cxx:52
 AliForwardFlowTaskQC.cxx:53
 AliForwardFlowTaskQC.cxx:54
 AliForwardFlowTaskQC.cxx:55
 AliForwardFlowTaskQC.cxx:56
 AliForwardFlowTaskQC.cxx:57
 AliForwardFlowTaskQC.cxx:58
 AliForwardFlowTaskQC.cxx:59
 AliForwardFlowTaskQC.cxx:60
 AliForwardFlowTaskQC.cxx:61
 AliForwardFlowTaskQC.cxx:62
 AliForwardFlowTaskQC.cxx:63
 AliForwardFlowTaskQC.cxx:64
 AliForwardFlowTaskQC.cxx:65
 AliForwardFlowTaskQC.cxx:66
 AliForwardFlowTaskQC.cxx:67
 AliForwardFlowTaskQC.cxx:68
 AliForwardFlowTaskQC.cxx:69
 AliForwardFlowTaskQC.cxx:70
 AliForwardFlowTaskQC.cxx:71
 AliForwardFlowTaskQC.cxx:72
 AliForwardFlowTaskQC.cxx:73
 AliForwardFlowTaskQC.cxx:74
 AliForwardFlowTaskQC.cxx:75
 AliForwardFlowTaskQC.cxx:76
 AliForwardFlowTaskQC.cxx:77
 AliForwardFlowTaskQC.cxx:78
 AliForwardFlowTaskQC.cxx:79
 AliForwardFlowTaskQC.cxx:80
 AliForwardFlowTaskQC.cxx:81
 AliForwardFlowTaskQC.cxx:82
 AliForwardFlowTaskQC.cxx:83
 AliForwardFlowTaskQC.cxx:84
 AliForwardFlowTaskQC.cxx:85
 AliForwardFlowTaskQC.cxx:86
 AliForwardFlowTaskQC.cxx:87
 AliForwardFlowTaskQC.cxx:88
 AliForwardFlowTaskQC.cxx:89
 AliForwardFlowTaskQC.cxx:90
 AliForwardFlowTaskQC.cxx:91
 AliForwardFlowTaskQC.cxx:92
 AliForwardFlowTaskQC.cxx:93
 AliForwardFlowTaskQC.cxx:94
 AliForwardFlowTaskQC.cxx:95
 AliForwardFlowTaskQC.cxx:96
 AliForwardFlowTaskQC.cxx:97
 AliForwardFlowTaskQC.cxx:98
 AliForwardFlowTaskQC.cxx:99
 AliForwardFlowTaskQC.cxx:100
 AliForwardFlowTaskQC.cxx:101
 AliForwardFlowTaskQC.cxx:102
 AliForwardFlowTaskQC.cxx:103
 AliForwardFlowTaskQC.cxx:104
 AliForwardFlowTaskQC.cxx:105
 AliForwardFlowTaskQC.cxx:106
 AliForwardFlowTaskQC.cxx:107
 AliForwardFlowTaskQC.cxx:108
 AliForwardFlowTaskQC.cxx:109
 AliForwardFlowTaskQC.cxx:110
 AliForwardFlowTaskQC.cxx:111
 AliForwardFlowTaskQC.cxx:112
 AliForwardFlowTaskQC.cxx:113
 AliForwardFlowTaskQC.cxx:114
 AliForwardFlowTaskQC.cxx:115
 AliForwardFlowTaskQC.cxx:116
 AliForwardFlowTaskQC.cxx:117
 AliForwardFlowTaskQC.cxx:118
 AliForwardFlowTaskQC.cxx:119
 AliForwardFlowTaskQC.cxx:120
 AliForwardFlowTaskQC.cxx:121
 AliForwardFlowTaskQC.cxx:122
 AliForwardFlowTaskQC.cxx:123
 AliForwardFlowTaskQC.cxx:124
 AliForwardFlowTaskQC.cxx:125
 AliForwardFlowTaskQC.cxx:126
 AliForwardFlowTaskQC.cxx:127
 AliForwardFlowTaskQC.cxx:128
 AliForwardFlowTaskQC.cxx:129
 AliForwardFlowTaskQC.cxx:130
 AliForwardFlowTaskQC.cxx:131
 AliForwardFlowTaskQC.cxx:132
 AliForwardFlowTaskQC.cxx:133
 AliForwardFlowTaskQC.cxx:134
 AliForwardFlowTaskQC.cxx:135
 AliForwardFlowTaskQC.cxx:136
 AliForwardFlowTaskQC.cxx:137
 AliForwardFlowTaskQC.cxx:138
 AliForwardFlowTaskQC.cxx:139
 AliForwardFlowTaskQC.cxx:140
 AliForwardFlowTaskQC.cxx:141
 AliForwardFlowTaskQC.cxx:142
 AliForwardFlowTaskQC.cxx:143
 AliForwardFlowTaskQC.cxx:144
 AliForwardFlowTaskQC.cxx:145
 AliForwardFlowTaskQC.cxx:146
 AliForwardFlowTaskQC.cxx:147
 AliForwardFlowTaskQC.cxx:148
 AliForwardFlowTaskQC.cxx:149
 AliForwardFlowTaskQC.cxx:150
 AliForwardFlowTaskQC.cxx:151
 AliForwardFlowTaskQC.cxx:152
 AliForwardFlowTaskQC.cxx:153
 AliForwardFlowTaskQC.cxx:154
 AliForwardFlowTaskQC.cxx:155
 AliForwardFlowTaskQC.cxx:156
 AliForwardFlowTaskQC.cxx:157
 AliForwardFlowTaskQC.cxx:158
 AliForwardFlowTaskQC.cxx:159
 AliForwardFlowTaskQC.cxx:160
 AliForwardFlowTaskQC.cxx:161
 AliForwardFlowTaskQC.cxx:162
 AliForwardFlowTaskQC.cxx:163
 AliForwardFlowTaskQC.cxx:164
 AliForwardFlowTaskQC.cxx:165
 AliForwardFlowTaskQC.cxx:166
 AliForwardFlowTaskQC.cxx:167
 AliForwardFlowTaskQC.cxx:168
 AliForwardFlowTaskQC.cxx:169
 AliForwardFlowTaskQC.cxx:170
 AliForwardFlowTaskQC.cxx:171
 AliForwardFlowTaskQC.cxx:172
 AliForwardFlowTaskQC.cxx:173
 AliForwardFlowTaskQC.cxx:174
 AliForwardFlowTaskQC.cxx:175
 AliForwardFlowTaskQC.cxx:176
 AliForwardFlowTaskQC.cxx:177
 AliForwardFlowTaskQC.cxx:178
 AliForwardFlowTaskQC.cxx:179
 AliForwardFlowTaskQC.cxx:180
 AliForwardFlowTaskQC.cxx:181
 AliForwardFlowTaskQC.cxx:182
 AliForwardFlowTaskQC.cxx:183
 AliForwardFlowTaskQC.cxx:184
 AliForwardFlowTaskQC.cxx:185
 AliForwardFlowTaskQC.cxx:186
 AliForwardFlowTaskQC.cxx:187
 AliForwardFlowTaskQC.cxx:188
 AliForwardFlowTaskQC.cxx:189
 AliForwardFlowTaskQC.cxx:190
 AliForwardFlowTaskQC.cxx:191
 AliForwardFlowTaskQC.cxx:192
 AliForwardFlowTaskQC.cxx:193
 AliForwardFlowTaskQC.cxx:194
 AliForwardFlowTaskQC.cxx:195
 AliForwardFlowTaskQC.cxx:196
 AliForwardFlowTaskQC.cxx:197
 AliForwardFlowTaskQC.cxx:198
 AliForwardFlowTaskQC.cxx:199
 AliForwardFlowTaskQC.cxx:200
 AliForwardFlowTaskQC.cxx:201
 AliForwardFlowTaskQC.cxx:202
 AliForwardFlowTaskQC.cxx:203
 AliForwardFlowTaskQC.cxx:204
 AliForwardFlowTaskQC.cxx:205
 AliForwardFlowTaskQC.cxx:206
 AliForwardFlowTaskQC.cxx:207
 AliForwardFlowTaskQC.cxx:208
 AliForwardFlowTaskQC.cxx:209
 AliForwardFlowTaskQC.cxx:210
 AliForwardFlowTaskQC.cxx:211
 AliForwardFlowTaskQC.cxx:212
 AliForwardFlowTaskQC.cxx:213
 AliForwardFlowTaskQC.cxx:214
 AliForwardFlowTaskQC.cxx:215
 AliForwardFlowTaskQC.cxx:216
 AliForwardFlowTaskQC.cxx:217
 AliForwardFlowTaskQC.cxx:218
 AliForwardFlowTaskQC.cxx:219
 AliForwardFlowTaskQC.cxx:220
 AliForwardFlowTaskQC.cxx:221
 AliForwardFlowTaskQC.cxx:222
 AliForwardFlowTaskQC.cxx:223
 AliForwardFlowTaskQC.cxx:224
 AliForwardFlowTaskQC.cxx:225
 AliForwardFlowTaskQC.cxx:226
 AliForwardFlowTaskQC.cxx:227
 AliForwardFlowTaskQC.cxx:228
 AliForwardFlowTaskQC.cxx:229
 AliForwardFlowTaskQC.cxx:230
 AliForwardFlowTaskQC.cxx:231
 AliForwardFlowTaskQC.cxx:232
 AliForwardFlowTaskQC.cxx:233
 AliForwardFlowTaskQC.cxx:234
 AliForwardFlowTaskQC.cxx:235
 AliForwardFlowTaskQC.cxx:236
 AliForwardFlowTaskQC.cxx:237
 AliForwardFlowTaskQC.cxx:238
 AliForwardFlowTaskQC.cxx:239
 AliForwardFlowTaskQC.cxx:240
 AliForwardFlowTaskQC.cxx:241
 AliForwardFlowTaskQC.cxx:242
 AliForwardFlowTaskQC.cxx:243
 AliForwardFlowTaskQC.cxx:244
 AliForwardFlowTaskQC.cxx:245
 AliForwardFlowTaskQC.cxx:246
 AliForwardFlowTaskQC.cxx:247
 AliForwardFlowTaskQC.cxx:248
 AliForwardFlowTaskQC.cxx:249
 AliForwardFlowTaskQC.cxx:250
 AliForwardFlowTaskQC.cxx:251
 AliForwardFlowTaskQC.cxx:252
 AliForwardFlowTaskQC.cxx:253
 AliForwardFlowTaskQC.cxx:254
 AliForwardFlowTaskQC.cxx:255
 AliForwardFlowTaskQC.cxx:256
 AliForwardFlowTaskQC.cxx:257
 AliForwardFlowTaskQC.cxx:258
 AliForwardFlowTaskQC.cxx:259
 AliForwardFlowTaskQC.cxx:260
 AliForwardFlowTaskQC.cxx:261
 AliForwardFlowTaskQC.cxx:262
 AliForwardFlowTaskQC.cxx:263
 AliForwardFlowTaskQC.cxx:264
 AliForwardFlowTaskQC.cxx:265
 AliForwardFlowTaskQC.cxx:266
 AliForwardFlowTaskQC.cxx:267
 AliForwardFlowTaskQC.cxx:268
 AliForwardFlowTaskQC.cxx:269
 AliForwardFlowTaskQC.cxx:270
 AliForwardFlowTaskQC.cxx:271
 AliForwardFlowTaskQC.cxx:272
 AliForwardFlowTaskQC.cxx:273
 AliForwardFlowTaskQC.cxx:274
 AliForwardFlowTaskQC.cxx:275
 AliForwardFlowTaskQC.cxx:276
 AliForwardFlowTaskQC.cxx:277
 AliForwardFlowTaskQC.cxx:278
 AliForwardFlowTaskQC.cxx:279
 AliForwardFlowTaskQC.cxx:280
 AliForwardFlowTaskQC.cxx:281
 AliForwardFlowTaskQC.cxx:282
 AliForwardFlowTaskQC.cxx:283
 AliForwardFlowTaskQC.cxx:284
 AliForwardFlowTaskQC.cxx:285
 AliForwardFlowTaskQC.cxx:286
 AliForwardFlowTaskQC.cxx:287
 AliForwardFlowTaskQC.cxx:288
 AliForwardFlowTaskQC.cxx:289
 AliForwardFlowTaskQC.cxx:290
 AliForwardFlowTaskQC.cxx:291
 AliForwardFlowTaskQC.cxx:292
 AliForwardFlowTaskQC.cxx:293
 AliForwardFlowTaskQC.cxx:294
 AliForwardFlowTaskQC.cxx:295
 AliForwardFlowTaskQC.cxx:296
 AliForwardFlowTaskQC.cxx:297
 AliForwardFlowTaskQC.cxx:298
 AliForwardFlowTaskQC.cxx:299
 AliForwardFlowTaskQC.cxx:300
 AliForwardFlowTaskQC.cxx:301
 AliForwardFlowTaskQC.cxx:302
 AliForwardFlowTaskQC.cxx:303
 AliForwardFlowTaskQC.cxx:304
 AliForwardFlowTaskQC.cxx:305
 AliForwardFlowTaskQC.cxx:306
 AliForwardFlowTaskQC.cxx:307
 AliForwardFlowTaskQC.cxx:308
 AliForwardFlowTaskQC.cxx:309
 AliForwardFlowTaskQC.cxx:310
 AliForwardFlowTaskQC.cxx:311
 AliForwardFlowTaskQC.cxx:312
 AliForwardFlowTaskQC.cxx:313
 AliForwardFlowTaskQC.cxx:314
 AliForwardFlowTaskQC.cxx:315
 AliForwardFlowTaskQC.cxx:316
 AliForwardFlowTaskQC.cxx:317
 AliForwardFlowTaskQC.cxx:318
 AliForwardFlowTaskQC.cxx:319
 AliForwardFlowTaskQC.cxx:320
 AliForwardFlowTaskQC.cxx:321
 AliForwardFlowTaskQC.cxx:322
 AliForwardFlowTaskQC.cxx:323
 AliForwardFlowTaskQC.cxx:324
 AliForwardFlowTaskQC.cxx:325
 AliForwardFlowTaskQC.cxx:326
 AliForwardFlowTaskQC.cxx:327
 AliForwardFlowTaskQC.cxx:328
 AliForwardFlowTaskQC.cxx:329
 AliForwardFlowTaskQC.cxx:330
 AliForwardFlowTaskQC.cxx:331
 AliForwardFlowTaskQC.cxx:332
 AliForwardFlowTaskQC.cxx:333
 AliForwardFlowTaskQC.cxx:334
 AliForwardFlowTaskQC.cxx:335
 AliForwardFlowTaskQC.cxx:336
 AliForwardFlowTaskQC.cxx:337
 AliForwardFlowTaskQC.cxx:338
 AliForwardFlowTaskQC.cxx:339
 AliForwardFlowTaskQC.cxx:340
 AliForwardFlowTaskQC.cxx:341
 AliForwardFlowTaskQC.cxx:342
 AliForwardFlowTaskQC.cxx:343
 AliForwardFlowTaskQC.cxx:344
 AliForwardFlowTaskQC.cxx:345
 AliForwardFlowTaskQC.cxx:346
 AliForwardFlowTaskQC.cxx:347
 AliForwardFlowTaskQC.cxx:348
 AliForwardFlowTaskQC.cxx:349
 AliForwardFlowTaskQC.cxx:350
 AliForwardFlowTaskQC.cxx:351
 AliForwardFlowTaskQC.cxx:352
 AliForwardFlowTaskQC.cxx:353
 AliForwardFlowTaskQC.cxx:354
 AliForwardFlowTaskQC.cxx:355
 AliForwardFlowTaskQC.cxx:356
 AliForwardFlowTaskQC.cxx:357
 AliForwardFlowTaskQC.cxx:358
 AliForwardFlowTaskQC.cxx:359
 AliForwardFlowTaskQC.cxx:360
 AliForwardFlowTaskQC.cxx:361
 AliForwardFlowTaskQC.cxx:362
 AliForwardFlowTaskQC.cxx:363
 AliForwardFlowTaskQC.cxx:364
 AliForwardFlowTaskQC.cxx:365
 AliForwardFlowTaskQC.cxx:366
 AliForwardFlowTaskQC.cxx:367
 AliForwardFlowTaskQC.cxx:368
 AliForwardFlowTaskQC.cxx:369
 AliForwardFlowTaskQC.cxx:370
 AliForwardFlowTaskQC.cxx:371
 AliForwardFlowTaskQC.cxx:372
 AliForwardFlowTaskQC.cxx:373
 AliForwardFlowTaskQC.cxx:374
 AliForwardFlowTaskQC.cxx:375
 AliForwardFlowTaskQC.cxx:376
 AliForwardFlowTaskQC.cxx:377
 AliForwardFlowTaskQC.cxx:378
 AliForwardFlowTaskQC.cxx:379
 AliForwardFlowTaskQC.cxx:380
 AliForwardFlowTaskQC.cxx:381
 AliForwardFlowTaskQC.cxx:382
 AliForwardFlowTaskQC.cxx:383
 AliForwardFlowTaskQC.cxx:384
 AliForwardFlowTaskQC.cxx:385
 AliForwardFlowTaskQC.cxx:386
 AliForwardFlowTaskQC.cxx:387
 AliForwardFlowTaskQC.cxx:388
 AliForwardFlowTaskQC.cxx:389
 AliForwardFlowTaskQC.cxx:390
 AliForwardFlowTaskQC.cxx:391
 AliForwardFlowTaskQC.cxx:392
 AliForwardFlowTaskQC.cxx:393
 AliForwardFlowTaskQC.cxx:394
 AliForwardFlowTaskQC.cxx:395
 AliForwardFlowTaskQC.cxx:396
 AliForwardFlowTaskQC.cxx:397
 AliForwardFlowTaskQC.cxx:398
 AliForwardFlowTaskQC.cxx:399
 AliForwardFlowTaskQC.cxx:400
 AliForwardFlowTaskQC.cxx:401
 AliForwardFlowTaskQC.cxx:402
 AliForwardFlowTaskQC.cxx:403
 AliForwardFlowTaskQC.cxx:404
 AliForwardFlowTaskQC.cxx:405
 AliForwardFlowTaskQC.cxx:406
 AliForwardFlowTaskQC.cxx:407
 AliForwardFlowTaskQC.cxx:408
 AliForwardFlowTaskQC.cxx:409
 AliForwardFlowTaskQC.cxx:410
 AliForwardFlowTaskQC.cxx:411
 AliForwardFlowTaskQC.cxx:412
 AliForwardFlowTaskQC.cxx:413
 AliForwardFlowTaskQC.cxx:414
 AliForwardFlowTaskQC.cxx:415
 AliForwardFlowTaskQC.cxx:416
 AliForwardFlowTaskQC.cxx:417
 AliForwardFlowTaskQC.cxx:418
 AliForwardFlowTaskQC.cxx:419
 AliForwardFlowTaskQC.cxx:420
 AliForwardFlowTaskQC.cxx:421
 AliForwardFlowTaskQC.cxx:422
 AliForwardFlowTaskQC.cxx:423
 AliForwardFlowTaskQC.cxx:424
 AliForwardFlowTaskQC.cxx:425
 AliForwardFlowTaskQC.cxx:426
 AliForwardFlowTaskQC.cxx:427
 AliForwardFlowTaskQC.cxx:428
 AliForwardFlowTaskQC.cxx:429
 AliForwardFlowTaskQC.cxx:430
 AliForwardFlowTaskQC.cxx:431
 AliForwardFlowTaskQC.cxx:432
 AliForwardFlowTaskQC.cxx:433
 AliForwardFlowTaskQC.cxx:434
 AliForwardFlowTaskQC.cxx:435
 AliForwardFlowTaskQC.cxx:436
 AliForwardFlowTaskQC.cxx:437
 AliForwardFlowTaskQC.cxx:438
 AliForwardFlowTaskQC.cxx:439
 AliForwardFlowTaskQC.cxx:440
 AliForwardFlowTaskQC.cxx:441
 AliForwardFlowTaskQC.cxx:442
 AliForwardFlowTaskQC.cxx:443
 AliForwardFlowTaskQC.cxx:444
 AliForwardFlowTaskQC.cxx:445
 AliForwardFlowTaskQC.cxx:446
 AliForwardFlowTaskQC.cxx:447
 AliForwardFlowTaskQC.cxx:448
 AliForwardFlowTaskQC.cxx:449
 AliForwardFlowTaskQC.cxx:450
 AliForwardFlowTaskQC.cxx:451
 AliForwardFlowTaskQC.cxx:452
 AliForwardFlowTaskQC.cxx:453
 AliForwardFlowTaskQC.cxx:454
 AliForwardFlowTaskQC.cxx:455
 AliForwardFlowTaskQC.cxx:456
 AliForwardFlowTaskQC.cxx:457
 AliForwardFlowTaskQC.cxx:458
 AliForwardFlowTaskQC.cxx:459
 AliForwardFlowTaskQC.cxx:460
 AliForwardFlowTaskQC.cxx:461
 AliForwardFlowTaskQC.cxx:462
 AliForwardFlowTaskQC.cxx:463
 AliForwardFlowTaskQC.cxx:464
 AliForwardFlowTaskQC.cxx:465
 AliForwardFlowTaskQC.cxx:466
 AliForwardFlowTaskQC.cxx:467
 AliForwardFlowTaskQC.cxx:468
 AliForwardFlowTaskQC.cxx:469
 AliForwardFlowTaskQC.cxx:470
 AliForwardFlowTaskQC.cxx:471
 AliForwardFlowTaskQC.cxx:472
 AliForwardFlowTaskQC.cxx:473
 AliForwardFlowTaskQC.cxx:474
 AliForwardFlowTaskQC.cxx:475
 AliForwardFlowTaskQC.cxx:476
 AliForwardFlowTaskQC.cxx:477
 AliForwardFlowTaskQC.cxx:478
 AliForwardFlowTaskQC.cxx:479
 AliForwardFlowTaskQC.cxx:480
 AliForwardFlowTaskQC.cxx:481
 AliForwardFlowTaskQC.cxx:482
 AliForwardFlowTaskQC.cxx:483
 AliForwardFlowTaskQC.cxx:484
 AliForwardFlowTaskQC.cxx:485
 AliForwardFlowTaskQC.cxx:486
 AliForwardFlowTaskQC.cxx:487
 AliForwardFlowTaskQC.cxx:488
 AliForwardFlowTaskQC.cxx:489
 AliForwardFlowTaskQC.cxx:490
 AliForwardFlowTaskQC.cxx:491
 AliForwardFlowTaskQC.cxx:492
 AliForwardFlowTaskQC.cxx:493
 AliForwardFlowTaskQC.cxx:494
 AliForwardFlowTaskQC.cxx:495
 AliForwardFlowTaskQC.cxx:496
 AliForwardFlowTaskQC.cxx:497
 AliForwardFlowTaskQC.cxx:498
 AliForwardFlowTaskQC.cxx:499
 AliForwardFlowTaskQC.cxx:500
 AliForwardFlowTaskQC.cxx:501
 AliForwardFlowTaskQC.cxx:502
 AliForwardFlowTaskQC.cxx:503
 AliForwardFlowTaskQC.cxx:504
 AliForwardFlowTaskQC.cxx:505
 AliForwardFlowTaskQC.cxx:506
 AliForwardFlowTaskQC.cxx:507
 AliForwardFlowTaskQC.cxx:508
 AliForwardFlowTaskQC.cxx:509
 AliForwardFlowTaskQC.cxx:510
 AliForwardFlowTaskQC.cxx:511
 AliForwardFlowTaskQC.cxx:512
 AliForwardFlowTaskQC.cxx:513
 AliForwardFlowTaskQC.cxx:514
 AliForwardFlowTaskQC.cxx:515
 AliForwardFlowTaskQC.cxx:516
 AliForwardFlowTaskQC.cxx:517
 AliForwardFlowTaskQC.cxx:518
 AliForwardFlowTaskQC.cxx:519
 AliForwardFlowTaskQC.cxx:520
 AliForwardFlowTaskQC.cxx:521
 AliForwardFlowTaskQC.cxx:522
 AliForwardFlowTaskQC.cxx:523
 AliForwardFlowTaskQC.cxx:524
 AliForwardFlowTaskQC.cxx:525
 AliForwardFlowTaskQC.cxx:526
 AliForwardFlowTaskQC.cxx:527
 AliForwardFlowTaskQC.cxx:528
 AliForwardFlowTaskQC.cxx:529
 AliForwardFlowTaskQC.cxx:530
 AliForwardFlowTaskQC.cxx:531
 AliForwardFlowTaskQC.cxx:532
 AliForwardFlowTaskQC.cxx:533
 AliForwardFlowTaskQC.cxx:534
 AliForwardFlowTaskQC.cxx:535
 AliForwardFlowTaskQC.cxx:536
 AliForwardFlowTaskQC.cxx:537
 AliForwardFlowTaskQC.cxx:538
 AliForwardFlowTaskQC.cxx:539
 AliForwardFlowTaskQC.cxx:540
 AliForwardFlowTaskQC.cxx:541
 AliForwardFlowTaskQC.cxx:542
 AliForwardFlowTaskQC.cxx:543
 AliForwardFlowTaskQC.cxx:544
 AliForwardFlowTaskQC.cxx:545
 AliForwardFlowTaskQC.cxx:546
 AliForwardFlowTaskQC.cxx:547
 AliForwardFlowTaskQC.cxx:548
 AliForwardFlowTaskQC.cxx:549
 AliForwardFlowTaskQC.cxx:550
 AliForwardFlowTaskQC.cxx:551
 AliForwardFlowTaskQC.cxx:552
 AliForwardFlowTaskQC.cxx:553
 AliForwardFlowTaskQC.cxx:554
 AliForwardFlowTaskQC.cxx:555
 AliForwardFlowTaskQC.cxx:556
 AliForwardFlowTaskQC.cxx:557
 AliForwardFlowTaskQC.cxx:558
 AliForwardFlowTaskQC.cxx:559
 AliForwardFlowTaskQC.cxx:560
 AliForwardFlowTaskQC.cxx:561
 AliForwardFlowTaskQC.cxx:562
 AliForwardFlowTaskQC.cxx:563
 AliForwardFlowTaskQC.cxx:564
 AliForwardFlowTaskQC.cxx:565
 AliForwardFlowTaskQC.cxx:566
 AliForwardFlowTaskQC.cxx:567
 AliForwardFlowTaskQC.cxx:568
 AliForwardFlowTaskQC.cxx:569
 AliForwardFlowTaskQC.cxx:570
 AliForwardFlowTaskQC.cxx:571
 AliForwardFlowTaskQC.cxx:572
 AliForwardFlowTaskQC.cxx:573
 AliForwardFlowTaskQC.cxx:574
 AliForwardFlowTaskQC.cxx:575
 AliForwardFlowTaskQC.cxx:576
 AliForwardFlowTaskQC.cxx:577
 AliForwardFlowTaskQC.cxx:578
 AliForwardFlowTaskQC.cxx:579
 AliForwardFlowTaskQC.cxx:580
 AliForwardFlowTaskQC.cxx:581
 AliForwardFlowTaskQC.cxx:582
 AliForwardFlowTaskQC.cxx:583
 AliForwardFlowTaskQC.cxx:584
 AliForwardFlowTaskQC.cxx:585
 AliForwardFlowTaskQC.cxx:586
 AliForwardFlowTaskQC.cxx:587
 AliForwardFlowTaskQC.cxx:588
 AliForwardFlowTaskQC.cxx:589
 AliForwardFlowTaskQC.cxx:590
 AliForwardFlowTaskQC.cxx:591
 AliForwardFlowTaskQC.cxx:592
 AliForwardFlowTaskQC.cxx:593
 AliForwardFlowTaskQC.cxx:594
 AliForwardFlowTaskQC.cxx:595
 AliForwardFlowTaskQC.cxx:596
 AliForwardFlowTaskQC.cxx:597
 AliForwardFlowTaskQC.cxx:598
 AliForwardFlowTaskQC.cxx:599
 AliForwardFlowTaskQC.cxx:600
 AliForwardFlowTaskQC.cxx:601
 AliForwardFlowTaskQC.cxx:602
 AliForwardFlowTaskQC.cxx:603
 AliForwardFlowTaskQC.cxx:604
 AliForwardFlowTaskQC.cxx:605
 AliForwardFlowTaskQC.cxx:606
 AliForwardFlowTaskQC.cxx:607
 AliForwardFlowTaskQC.cxx:608
 AliForwardFlowTaskQC.cxx:609
 AliForwardFlowTaskQC.cxx:610
 AliForwardFlowTaskQC.cxx:611
 AliForwardFlowTaskQC.cxx:612
 AliForwardFlowTaskQC.cxx:613
 AliForwardFlowTaskQC.cxx:614
 AliForwardFlowTaskQC.cxx:615
 AliForwardFlowTaskQC.cxx:616
 AliForwardFlowTaskQC.cxx:617
 AliForwardFlowTaskQC.cxx:618
 AliForwardFlowTaskQC.cxx:619
 AliForwardFlowTaskQC.cxx:620
 AliForwardFlowTaskQC.cxx:621
 AliForwardFlowTaskQC.cxx:622
 AliForwardFlowTaskQC.cxx:623
 AliForwardFlowTaskQC.cxx:624
 AliForwardFlowTaskQC.cxx:625
 AliForwardFlowTaskQC.cxx:626
 AliForwardFlowTaskQC.cxx:627
 AliForwardFlowTaskQC.cxx:628
 AliForwardFlowTaskQC.cxx:629
 AliForwardFlowTaskQC.cxx:630
 AliForwardFlowTaskQC.cxx:631
 AliForwardFlowTaskQC.cxx:632
 AliForwardFlowTaskQC.cxx:633
 AliForwardFlowTaskQC.cxx:634
 AliForwardFlowTaskQC.cxx:635
 AliForwardFlowTaskQC.cxx:636
 AliForwardFlowTaskQC.cxx:637
 AliForwardFlowTaskQC.cxx:638
 AliForwardFlowTaskQC.cxx:639
 AliForwardFlowTaskQC.cxx:640
 AliForwardFlowTaskQC.cxx:641
 AliForwardFlowTaskQC.cxx:642
 AliForwardFlowTaskQC.cxx:643
 AliForwardFlowTaskQC.cxx:644
 AliForwardFlowTaskQC.cxx:645
 AliForwardFlowTaskQC.cxx:646
 AliForwardFlowTaskQC.cxx:647
 AliForwardFlowTaskQC.cxx:648
 AliForwardFlowTaskQC.cxx:649
 AliForwardFlowTaskQC.cxx:650
 AliForwardFlowTaskQC.cxx:651
 AliForwardFlowTaskQC.cxx:652
 AliForwardFlowTaskQC.cxx:653
 AliForwardFlowTaskQC.cxx:654
 AliForwardFlowTaskQC.cxx:655
 AliForwardFlowTaskQC.cxx:656
 AliForwardFlowTaskQC.cxx:657
 AliForwardFlowTaskQC.cxx:658
 AliForwardFlowTaskQC.cxx:659
 AliForwardFlowTaskQC.cxx:660
 AliForwardFlowTaskQC.cxx:661
 AliForwardFlowTaskQC.cxx:662
 AliForwardFlowTaskQC.cxx:663
 AliForwardFlowTaskQC.cxx:664
 AliForwardFlowTaskQC.cxx:665
 AliForwardFlowTaskQC.cxx:666
 AliForwardFlowTaskQC.cxx:667
 AliForwardFlowTaskQC.cxx:668
 AliForwardFlowTaskQC.cxx:669
 AliForwardFlowTaskQC.cxx:670
 AliForwardFlowTaskQC.cxx:671
 AliForwardFlowTaskQC.cxx:672
 AliForwardFlowTaskQC.cxx:673
 AliForwardFlowTaskQC.cxx:674
 AliForwardFlowTaskQC.cxx:675
 AliForwardFlowTaskQC.cxx:676
 AliForwardFlowTaskQC.cxx:677
 AliForwardFlowTaskQC.cxx:678
 AliForwardFlowTaskQC.cxx:679
 AliForwardFlowTaskQC.cxx:680
 AliForwardFlowTaskQC.cxx:681
 AliForwardFlowTaskQC.cxx:682
 AliForwardFlowTaskQC.cxx:683
 AliForwardFlowTaskQC.cxx:684
 AliForwardFlowTaskQC.cxx:685
 AliForwardFlowTaskQC.cxx:686
 AliForwardFlowTaskQC.cxx:687
 AliForwardFlowTaskQC.cxx:688
 AliForwardFlowTaskQC.cxx:689
 AliForwardFlowTaskQC.cxx:690
 AliForwardFlowTaskQC.cxx:691
 AliForwardFlowTaskQC.cxx:692
 AliForwardFlowTaskQC.cxx:693
 AliForwardFlowTaskQC.cxx:694
 AliForwardFlowTaskQC.cxx:695
 AliForwardFlowTaskQC.cxx:696
 AliForwardFlowTaskQC.cxx:697
 AliForwardFlowTaskQC.cxx:698
 AliForwardFlowTaskQC.cxx:699
 AliForwardFlowTaskQC.cxx:700
 AliForwardFlowTaskQC.cxx:701
 AliForwardFlowTaskQC.cxx:702
 AliForwardFlowTaskQC.cxx:703
 AliForwardFlowTaskQC.cxx:704
 AliForwardFlowTaskQC.cxx:705
 AliForwardFlowTaskQC.cxx:706
 AliForwardFlowTaskQC.cxx:707
 AliForwardFlowTaskQC.cxx:708
 AliForwardFlowTaskQC.cxx:709
 AliForwardFlowTaskQC.cxx:710
 AliForwardFlowTaskQC.cxx:711
 AliForwardFlowTaskQC.cxx:712
 AliForwardFlowTaskQC.cxx:713
 AliForwardFlowTaskQC.cxx:714
 AliForwardFlowTaskQC.cxx:715
 AliForwardFlowTaskQC.cxx:716
 AliForwardFlowTaskQC.cxx:717
 AliForwardFlowTaskQC.cxx:718
 AliForwardFlowTaskQC.cxx:719
 AliForwardFlowTaskQC.cxx:720
 AliForwardFlowTaskQC.cxx:721
 AliForwardFlowTaskQC.cxx:722
 AliForwardFlowTaskQC.cxx:723
 AliForwardFlowTaskQC.cxx:724
 AliForwardFlowTaskQC.cxx:725
 AliForwardFlowTaskQC.cxx:726
 AliForwardFlowTaskQC.cxx:727
 AliForwardFlowTaskQC.cxx:728
 AliForwardFlowTaskQC.cxx:729
 AliForwardFlowTaskQC.cxx:730
 AliForwardFlowTaskQC.cxx:731
 AliForwardFlowTaskQC.cxx:732
 AliForwardFlowTaskQC.cxx:733
 AliForwardFlowTaskQC.cxx:734
 AliForwardFlowTaskQC.cxx:735
 AliForwardFlowTaskQC.cxx:736
 AliForwardFlowTaskQC.cxx:737
 AliForwardFlowTaskQC.cxx:738
 AliForwardFlowTaskQC.cxx:739
 AliForwardFlowTaskQC.cxx:740
 AliForwardFlowTaskQC.cxx:741
 AliForwardFlowTaskQC.cxx:742
 AliForwardFlowTaskQC.cxx:743
 AliForwardFlowTaskQC.cxx:744
 AliForwardFlowTaskQC.cxx:745
 AliForwardFlowTaskQC.cxx:746
 AliForwardFlowTaskQC.cxx:747
 AliForwardFlowTaskQC.cxx:748
 AliForwardFlowTaskQC.cxx:749
 AliForwardFlowTaskQC.cxx:750
 AliForwardFlowTaskQC.cxx:751
 AliForwardFlowTaskQC.cxx:752
 AliForwardFlowTaskQC.cxx:753
 AliForwardFlowTaskQC.cxx:754
 AliForwardFlowTaskQC.cxx:755
 AliForwardFlowTaskQC.cxx:756
 AliForwardFlowTaskQC.cxx:757
 AliForwardFlowTaskQC.cxx:758
 AliForwardFlowTaskQC.cxx:759
 AliForwardFlowTaskQC.cxx:760
 AliForwardFlowTaskQC.cxx:761
 AliForwardFlowTaskQC.cxx:762
 AliForwardFlowTaskQC.cxx:763
 AliForwardFlowTaskQC.cxx:764
 AliForwardFlowTaskQC.cxx:765
 AliForwardFlowTaskQC.cxx:766
 AliForwardFlowTaskQC.cxx:767
 AliForwardFlowTaskQC.cxx:768
 AliForwardFlowTaskQC.cxx:769
 AliForwardFlowTaskQC.cxx:770
 AliForwardFlowTaskQC.cxx:771
 AliForwardFlowTaskQC.cxx:772
 AliForwardFlowTaskQC.cxx:773
 AliForwardFlowTaskQC.cxx:774
 AliForwardFlowTaskQC.cxx:775
 AliForwardFlowTaskQC.cxx:776
 AliForwardFlowTaskQC.cxx:777
 AliForwardFlowTaskQC.cxx:778
 AliForwardFlowTaskQC.cxx:779
 AliForwardFlowTaskQC.cxx:780
 AliForwardFlowTaskQC.cxx:781
 AliForwardFlowTaskQC.cxx:782
 AliForwardFlowTaskQC.cxx:783
 AliForwardFlowTaskQC.cxx:784
 AliForwardFlowTaskQC.cxx:785
 AliForwardFlowTaskQC.cxx:786
 AliForwardFlowTaskQC.cxx:787
 AliForwardFlowTaskQC.cxx:788
 AliForwardFlowTaskQC.cxx:789
 AliForwardFlowTaskQC.cxx:790
 AliForwardFlowTaskQC.cxx:791
 AliForwardFlowTaskQC.cxx:792
 AliForwardFlowTaskQC.cxx:793
 AliForwardFlowTaskQC.cxx:794
 AliForwardFlowTaskQC.cxx:795
 AliForwardFlowTaskQC.cxx:796
 AliForwardFlowTaskQC.cxx:797
 AliForwardFlowTaskQC.cxx:798
 AliForwardFlowTaskQC.cxx:799
 AliForwardFlowTaskQC.cxx:800
 AliForwardFlowTaskQC.cxx:801
 AliForwardFlowTaskQC.cxx:802
 AliForwardFlowTaskQC.cxx:803
 AliForwardFlowTaskQC.cxx:804
 AliForwardFlowTaskQC.cxx:805
 AliForwardFlowTaskQC.cxx:806
 AliForwardFlowTaskQC.cxx:807
 AliForwardFlowTaskQC.cxx:808
 AliForwardFlowTaskQC.cxx:809
 AliForwardFlowTaskQC.cxx:810
 AliForwardFlowTaskQC.cxx:811
 AliForwardFlowTaskQC.cxx:812
 AliForwardFlowTaskQC.cxx:813
 AliForwardFlowTaskQC.cxx:814
 AliForwardFlowTaskQC.cxx:815
 AliForwardFlowTaskQC.cxx:816
 AliForwardFlowTaskQC.cxx:817
 AliForwardFlowTaskQC.cxx:818
 AliForwardFlowTaskQC.cxx:819
 AliForwardFlowTaskQC.cxx:820
 AliForwardFlowTaskQC.cxx:821
 AliForwardFlowTaskQC.cxx:822
 AliForwardFlowTaskQC.cxx:823
 AliForwardFlowTaskQC.cxx:824
 AliForwardFlowTaskQC.cxx:825
 AliForwardFlowTaskQC.cxx:826
 AliForwardFlowTaskQC.cxx:827
 AliForwardFlowTaskQC.cxx:828
 AliForwardFlowTaskQC.cxx:829
 AliForwardFlowTaskQC.cxx:830
 AliForwardFlowTaskQC.cxx:831
 AliForwardFlowTaskQC.cxx:832
 AliForwardFlowTaskQC.cxx:833
 AliForwardFlowTaskQC.cxx:834
 AliForwardFlowTaskQC.cxx:835
 AliForwardFlowTaskQC.cxx:836
 AliForwardFlowTaskQC.cxx:837
 AliForwardFlowTaskQC.cxx:838
 AliForwardFlowTaskQC.cxx:839
 AliForwardFlowTaskQC.cxx:840
 AliForwardFlowTaskQC.cxx:841
 AliForwardFlowTaskQC.cxx:842
 AliForwardFlowTaskQC.cxx:843
 AliForwardFlowTaskQC.cxx:844
 AliForwardFlowTaskQC.cxx:845
 AliForwardFlowTaskQC.cxx:846
 AliForwardFlowTaskQC.cxx:847
 AliForwardFlowTaskQC.cxx:848
 AliForwardFlowTaskQC.cxx:849
 AliForwardFlowTaskQC.cxx:850
 AliForwardFlowTaskQC.cxx:851
 AliForwardFlowTaskQC.cxx:852
 AliForwardFlowTaskQC.cxx:853
 AliForwardFlowTaskQC.cxx:854
 AliForwardFlowTaskQC.cxx:855
 AliForwardFlowTaskQC.cxx:856
 AliForwardFlowTaskQC.cxx:857
 AliForwardFlowTaskQC.cxx:858
 AliForwardFlowTaskQC.cxx:859
 AliForwardFlowTaskQC.cxx:860
 AliForwardFlowTaskQC.cxx:861
 AliForwardFlowTaskQC.cxx:862
 AliForwardFlowTaskQC.cxx:863
 AliForwardFlowTaskQC.cxx:864
 AliForwardFlowTaskQC.cxx:865
 AliForwardFlowTaskQC.cxx:866
 AliForwardFlowTaskQC.cxx:867
 AliForwardFlowTaskQC.cxx:868
 AliForwardFlowTaskQC.cxx:869
 AliForwardFlowTaskQC.cxx:870
 AliForwardFlowTaskQC.cxx:871
 AliForwardFlowTaskQC.cxx:872
 AliForwardFlowTaskQC.cxx:873
 AliForwardFlowTaskQC.cxx:874
 AliForwardFlowTaskQC.cxx:875
 AliForwardFlowTaskQC.cxx:876
 AliForwardFlowTaskQC.cxx:877
 AliForwardFlowTaskQC.cxx:878
 AliForwardFlowTaskQC.cxx:879
 AliForwardFlowTaskQC.cxx:880
 AliForwardFlowTaskQC.cxx:881
 AliForwardFlowTaskQC.cxx:882
 AliForwardFlowTaskQC.cxx:883
 AliForwardFlowTaskQC.cxx:884
 AliForwardFlowTaskQC.cxx:885
 AliForwardFlowTaskQC.cxx:886
 AliForwardFlowTaskQC.cxx:887
 AliForwardFlowTaskQC.cxx:888
 AliForwardFlowTaskQC.cxx:889
 AliForwardFlowTaskQC.cxx:890
 AliForwardFlowTaskQC.cxx:891
 AliForwardFlowTaskQC.cxx:892
 AliForwardFlowTaskQC.cxx:893
 AliForwardFlowTaskQC.cxx:894
 AliForwardFlowTaskQC.cxx:895
 AliForwardFlowTaskQC.cxx:896
 AliForwardFlowTaskQC.cxx:897
 AliForwardFlowTaskQC.cxx:898
 AliForwardFlowTaskQC.cxx:899
 AliForwardFlowTaskQC.cxx:900
 AliForwardFlowTaskQC.cxx:901
 AliForwardFlowTaskQC.cxx:902
 AliForwardFlowTaskQC.cxx:903
 AliForwardFlowTaskQC.cxx:904
 AliForwardFlowTaskQC.cxx:905
 AliForwardFlowTaskQC.cxx:906
 AliForwardFlowTaskQC.cxx:907
 AliForwardFlowTaskQC.cxx:908
 AliForwardFlowTaskQC.cxx:909
 AliForwardFlowTaskQC.cxx:910
 AliForwardFlowTaskQC.cxx:911
 AliForwardFlowTaskQC.cxx:912
 AliForwardFlowTaskQC.cxx:913
 AliForwardFlowTaskQC.cxx:914
 AliForwardFlowTaskQC.cxx:915
 AliForwardFlowTaskQC.cxx:916
 AliForwardFlowTaskQC.cxx:917
 AliForwardFlowTaskQC.cxx:918
 AliForwardFlowTaskQC.cxx:919
 AliForwardFlowTaskQC.cxx:920
 AliForwardFlowTaskQC.cxx:921
 AliForwardFlowTaskQC.cxx:922
 AliForwardFlowTaskQC.cxx:923
 AliForwardFlowTaskQC.cxx:924
 AliForwardFlowTaskQC.cxx:925
 AliForwardFlowTaskQC.cxx:926
 AliForwardFlowTaskQC.cxx:927
 AliForwardFlowTaskQC.cxx:928
 AliForwardFlowTaskQC.cxx:929
 AliForwardFlowTaskQC.cxx:930
 AliForwardFlowTaskQC.cxx:931
 AliForwardFlowTaskQC.cxx:932
 AliForwardFlowTaskQC.cxx:933
 AliForwardFlowTaskQC.cxx:934
 AliForwardFlowTaskQC.cxx:935
 AliForwardFlowTaskQC.cxx:936
 AliForwardFlowTaskQC.cxx:937
 AliForwardFlowTaskQC.cxx:938
 AliForwardFlowTaskQC.cxx:939
 AliForwardFlowTaskQC.cxx:940
 AliForwardFlowTaskQC.cxx:941
 AliForwardFlowTaskQC.cxx:942
 AliForwardFlowTaskQC.cxx:943
 AliForwardFlowTaskQC.cxx:944
 AliForwardFlowTaskQC.cxx:945
 AliForwardFlowTaskQC.cxx:946
 AliForwardFlowTaskQC.cxx:947
 AliForwardFlowTaskQC.cxx:948
 AliForwardFlowTaskQC.cxx:949
 AliForwardFlowTaskQC.cxx:950
 AliForwardFlowTaskQC.cxx:951
 AliForwardFlowTaskQC.cxx:952
 AliForwardFlowTaskQC.cxx:953
 AliForwardFlowTaskQC.cxx:954
 AliForwardFlowTaskQC.cxx:955
 AliForwardFlowTaskQC.cxx:956
 AliForwardFlowTaskQC.cxx:957
 AliForwardFlowTaskQC.cxx:958
 AliForwardFlowTaskQC.cxx:959
 AliForwardFlowTaskQC.cxx:960
 AliForwardFlowTaskQC.cxx:961
 AliForwardFlowTaskQC.cxx:962
 AliForwardFlowTaskQC.cxx:963
 AliForwardFlowTaskQC.cxx:964
 AliForwardFlowTaskQC.cxx:965
 AliForwardFlowTaskQC.cxx:966
 AliForwardFlowTaskQC.cxx:967
 AliForwardFlowTaskQC.cxx:968
 AliForwardFlowTaskQC.cxx:969
 AliForwardFlowTaskQC.cxx:970
 AliForwardFlowTaskQC.cxx:971
 AliForwardFlowTaskQC.cxx:972
 AliForwardFlowTaskQC.cxx:973
 AliForwardFlowTaskQC.cxx:974
 AliForwardFlowTaskQC.cxx:975
 AliForwardFlowTaskQC.cxx:976
 AliForwardFlowTaskQC.cxx:977
 AliForwardFlowTaskQC.cxx:978
 AliForwardFlowTaskQC.cxx:979
 AliForwardFlowTaskQC.cxx:980
 AliForwardFlowTaskQC.cxx:981
 AliForwardFlowTaskQC.cxx:982
 AliForwardFlowTaskQC.cxx:983
 AliForwardFlowTaskQC.cxx:984
 AliForwardFlowTaskQC.cxx:985
 AliForwardFlowTaskQC.cxx:986
 AliForwardFlowTaskQC.cxx:987
 AliForwardFlowTaskQC.cxx:988
 AliForwardFlowTaskQC.cxx:989
 AliForwardFlowTaskQC.cxx:990
 AliForwardFlowTaskQC.cxx:991
 AliForwardFlowTaskQC.cxx:992
 AliForwardFlowTaskQC.cxx:993
 AliForwardFlowTaskQC.cxx:994
 AliForwardFlowTaskQC.cxx:995
 AliForwardFlowTaskQC.cxx:996
 AliForwardFlowTaskQC.cxx:997
 AliForwardFlowTaskQC.cxx:998
 AliForwardFlowTaskQC.cxx:999
 AliForwardFlowTaskQC.cxx:1000
 AliForwardFlowTaskQC.cxx:1001
 AliForwardFlowTaskQC.cxx:1002
 AliForwardFlowTaskQC.cxx:1003
 AliForwardFlowTaskQC.cxx:1004
 AliForwardFlowTaskQC.cxx:1005
 AliForwardFlowTaskQC.cxx:1006
 AliForwardFlowTaskQC.cxx:1007
 AliForwardFlowTaskQC.cxx:1008
 AliForwardFlowTaskQC.cxx:1009
 AliForwardFlowTaskQC.cxx:1010
 AliForwardFlowTaskQC.cxx:1011
 AliForwardFlowTaskQC.cxx:1012
 AliForwardFlowTaskQC.cxx:1013
 AliForwardFlowTaskQC.cxx:1014
 AliForwardFlowTaskQC.cxx:1015
 AliForwardFlowTaskQC.cxx:1016
 AliForwardFlowTaskQC.cxx:1017
 AliForwardFlowTaskQC.cxx:1018
 AliForwardFlowTaskQC.cxx:1019
 AliForwardFlowTaskQC.cxx:1020
 AliForwardFlowTaskQC.cxx:1021
 AliForwardFlowTaskQC.cxx:1022
 AliForwardFlowTaskQC.cxx:1023
 AliForwardFlowTaskQC.cxx:1024
 AliForwardFlowTaskQC.cxx:1025
 AliForwardFlowTaskQC.cxx:1026
 AliForwardFlowTaskQC.cxx:1027
 AliForwardFlowTaskQC.cxx:1028
 AliForwardFlowTaskQC.cxx:1029
 AliForwardFlowTaskQC.cxx:1030
 AliForwardFlowTaskQC.cxx:1031
 AliForwardFlowTaskQC.cxx:1032
 AliForwardFlowTaskQC.cxx:1033
 AliForwardFlowTaskQC.cxx:1034
 AliForwardFlowTaskQC.cxx:1035
 AliForwardFlowTaskQC.cxx:1036
 AliForwardFlowTaskQC.cxx:1037
 AliForwardFlowTaskQC.cxx:1038
 AliForwardFlowTaskQC.cxx:1039
 AliForwardFlowTaskQC.cxx:1040
 AliForwardFlowTaskQC.cxx:1041
 AliForwardFlowTaskQC.cxx:1042
 AliForwardFlowTaskQC.cxx:1043
 AliForwardFlowTaskQC.cxx:1044
 AliForwardFlowTaskQC.cxx:1045
 AliForwardFlowTaskQC.cxx:1046
 AliForwardFlowTaskQC.cxx:1047
 AliForwardFlowTaskQC.cxx:1048
 AliForwardFlowTaskQC.cxx:1049
 AliForwardFlowTaskQC.cxx:1050
 AliForwardFlowTaskQC.cxx:1051
 AliForwardFlowTaskQC.cxx:1052
 AliForwardFlowTaskQC.cxx:1053
 AliForwardFlowTaskQC.cxx:1054
 AliForwardFlowTaskQC.cxx:1055
 AliForwardFlowTaskQC.cxx:1056
 AliForwardFlowTaskQC.cxx:1057
 AliForwardFlowTaskQC.cxx:1058
 AliForwardFlowTaskQC.cxx:1059
 AliForwardFlowTaskQC.cxx:1060
 AliForwardFlowTaskQC.cxx:1061
 AliForwardFlowTaskQC.cxx:1062
 AliForwardFlowTaskQC.cxx:1063
 AliForwardFlowTaskQC.cxx:1064
 AliForwardFlowTaskQC.cxx:1065
 AliForwardFlowTaskQC.cxx:1066
 AliForwardFlowTaskQC.cxx:1067
 AliForwardFlowTaskQC.cxx:1068
 AliForwardFlowTaskQC.cxx:1069
 AliForwardFlowTaskQC.cxx:1070
 AliForwardFlowTaskQC.cxx:1071
 AliForwardFlowTaskQC.cxx:1072
 AliForwardFlowTaskQC.cxx:1073
 AliForwardFlowTaskQC.cxx:1074
 AliForwardFlowTaskQC.cxx:1075
 AliForwardFlowTaskQC.cxx:1076
 AliForwardFlowTaskQC.cxx:1077
 AliForwardFlowTaskQC.cxx:1078
 AliForwardFlowTaskQC.cxx:1079
 AliForwardFlowTaskQC.cxx:1080
 AliForwardFlowTaskQC.cxx:1081
 AliForwardFlowTaskQC.cxx:1082
 AliForwardFlowTaskQC.cxx:1083
 AliForwardFlowTaskQC.cxx:1084
 AliForwardFlowTaskQC.cxx:1085
 AliForwardFlowTaskQC.cxx:1086
 AliForwardFlowTaskQC.cxx:1087
 AliForwardFlowTaskQC.cxx:1088
 AliForwardFlowTaskQC.cxx:1089
 AliForwardFlowTaskQC.cxx:1090
 AliForwardFlowTaskQC.cxx:1091
 AliForwardFlowTaskQC.cxx:1092
 AliForwardFlowTaskQC.cxx:1093
 AliForwardFlowTaskQC.cxx:1094
 AliForwardFlowTaskQC.cxx:1095
 AliForwardFlowTaskQC.cxx:1096
 AliForwardFlowTaskQC.cxx:1097
 AliForwardFlowTaskQC.cxx:1098
 AliForwardFlowTaskQC.cxx:1099
 AliForwardFlowTaskQC.cxx:1100
 AliForwardFlowTaskQC.cxx:1101
 AliForwardFlowTaskQC.cxx:1102
 AliForwardFlowTaskQC.cxx:1103
 AliForwardFlowTaskQC.cxx:1104
 AliForwardFlowTaskQC.cxx:1105
 AliForwardFlowTaskQC.cxx:1106
 AliForwardFlowTaskQC.cxx:1107
 AliForwardFlowTaskQC.cxx:1108
 AliForwardFlowTaskQC.cxx:1109
 AliForwardFlowTaskQC.cxx:1110
 AliForwardFlowTaskQC.cxx:1111
 AliForwardFlowTaskQC.cxx:1112
 AliForwardFlowTaskQC.cxx:1113
 AliForwardFlowTaskQC.cxx:1114
 AliForwardFlowTaskQC.cxx:1115
 AliForwardFlowTaskQC.cxx:1116
 AliForwardFlowTaskQC.cxx:1117
 AliForwardFlowTaskQC.cxx:1118
 AliForwardFlowTaskQC.cxx:1119
 AliForwardFlowTaskQC.cxx:1120
 AliForwardFlowTaskQC.cxx:1121
 AliForwardFlowTaskQC.cxx:1122
 AliForwardFlowTaskQC.cxx:1123
 AliForwardFlowTaskQC.cxx:1124
 AliForwardFlowTaskQC.cxx:1125
 AliForwardFlowTaskQC.cxx:1126
 AliForwardFlowTaskQC.cxx:1127
 AliForwardFlowTaskQC.cxx:1128
 AliForwardFlowTaskQC.cxx:1129
 AliForwardFlowTaskQC.cxx:1130
 AliForwardFlowTaskQC.cxx:1131
 AliForwardFlowTaskQC.cxx:1132
 AliForwardFlowTaskQC.cxx:1133
 AliForwardFlowTaskQC.cxx:1134
 AliForwardFlowTaskQC.cxx:1135
 AliForwardFlowTaskQC.cxx:1136
 AliForwardFlowTaskQC.cxx:1137
 AliForwardFlowTaskQC.cxx:1138
 AliForwardFlowTaskQC.cxx:1139
 AliForwardFlowTaskQC.cxx:1140
 AliForwardFlowTaskQC.cxx:1141
 AliForwardFlowTaskQC.cxx:1142
 AliForwardFlowTaskQC.cxx:1143
 AliForwardFlowTaskQC.cxx:1144
 AliForwardFlowTaskQC.cxx:1145
 AliForwardFlowTaskQC.cxx:1146
 AliForwardFlowTaskQC.cxx:1147
 AliForwardFlowTaskQC.cxx:1148
 AliForwardFlowTaskQC.cxx:1149
 AliForwardFlowTaskQC.cxx:1150
 AliForwardFlowTaskQC.cxx:1151
 AliForwardFlowTaskQC.cxx:1152
 AliForwardFlowTaskQC.cxx:1153
 AliForwardFlowTaskQC.cxx:1154
 AliForwardFlowTaskQC.cxx:1155
 AliForwardFlowTaskQC.cxx:1156
 AliForwardFlowTaskQC.cxx:1157
 AliForwardFlowTaskQC.cxx:1158
 AliForwardFlowTaskQC.cxx:1159
 AliForwardFlowTaskQC.cxx:1160
 AliForwardFlowTaskQC.cxx:1161
 AliForwardFlowTaskQC.cxx:1162
 AliForwardFlowTaskQC.cxx:1163
 AliForwardFlowTaskQC.cxx:1164
 AliForwardFlowTaskQC.cxx:1165
 AliForwardFlowTaskQC.cxx:1166
 AliForwardFlowTaskQC.cxx:1167
 AliForwardFlowTaskQC.cxx:1168
 AliForwardFlowTaskQC.cxx:1169
 AliForwardFlowTaskQC.cxx:1170
 AliForwardFlowTaskQC.cxx:1171
 AliForwardFlowTaskQC.cxx:1172
 AliForwardFlowTaskQC.cxx:1173
 AliForwardFlowTaskQC.cxx:1174
 AliForwardFlowTaskQC.cxx:1175
 AliForwardFlowTaskQC.cxx:1176
 AliForwardFlowTaskQC.cxx:1177
 AliForwardFlowTaskQC.cxx:1178
 AliForwardFlowTaskQC.cxx:1179
 AliForwardFlowTaskQC.cxx:1180
 AliForwardFlowTaskQC.cxx:1181
 AliForwardFlowTaskQC.cxx:1182
 AliForwardFlowTaskQC.cxx:1183
 AliForwardFlowTaskQC.cxx:1184
 AliForwardFlowTaskQC.cxx:1185
 AliForwardFlowTaskQC.cxx:1186
 AliForwardFlowTaskQC.cxx:1187
 AliForwardFlowTaskQC.cxx:1188
 AliForwardFlowTaskQC.cxx:1189
 AliForwardFlowTaskQC.cxx:1190
 AliForwardFlowTaskQC.cxx:1191
 AliForwardFlowTaskQC.cxx:1192
 AliForwardFlowTaskQC.cxx:1193
 AliForwardFlowTaskQC.cxx:1194
 AliForwardFlowTaskQC.cxx:1195
 AliForwardFlowTaskQC.cxx:1196
 AliForwardFlowTaskQC.cxx:1197
 AliForwardFlowTaskQC.cxx:1198
 AliForwardFlowTaskQC.cxx:1199
 AliForwardFlowTaskQC.cxx:1200
 AliForwardFlowTaskQC.cxx:1201
 AliForwardFlowTaskQC.cxx:1202
 AliForwardFlowTaskQC.cxx:1203
 AliForwardFlowTaskQC.cxx:1204
 AliForwardFlowTaskQC.cxx:1205
 AliForwardFlowTaskQC.cxx:1206
 AliForwardFlowTaskQC.cxx:1207
 AliForwardFlowTaskQC.cxx:1208
 AliForwardFlowTaskQC.cxx:1209
 AliForwardFlowTaskQC.cxx:1210
 AliForwardFlowTaskQC.cxx:1211
 AliForwardFlowTaskQC.cxx:1212
 AliForwardFlowTaskQC.cxx:1213
 AliForwardFlowTaskQC.cxx:1214
 AliForwardFlowTaskQC.cxx:1215
 AliForwardFlowTaskQC.cxx:1216
 AliForwardFlowTaskQC.cxx:1217
 AliForwardFlowTaskQC.cxx:1218
 AliForwardFlowTaskQC.cxx:1219
 AliForwardFlowTaskQC.cxx:1220
 AliForwardFlowTaskQC.cxx:1221
 AliForwardFlowTaskQC.cxx:1222
 AliForwardFlowTaskQC.cxx:1223
 AliForwardFlowTaskQC.cxx:1224
 AliForwardFlowTaskQC.cxx:1225
 AliForwardFlowTaskQC.cxx:1226
 AliForwardFlowTaskQC.cxx:1227
 AliForwardFlowTaskQC.cxx:1228
 AliForwardFlowTaskQC.cxx:1229
 AliForwardFlowTaskQC.cxx:1230
 AliForwardFlowTaskQC.cxx:1231
 AliForwardFlowTaskQC.cxx:1232
 AliForwardFlowTaskQC.cxx:1233
 AliForwardFlowTaskQC.cxx:1234
 AliForwardFlowTaskQC.cxx:1235
 AliForwardFlowTaskQC.cxx:1236
 AliForwardFlowTaskQC.cxx:1237
 AliForwardFlowTaskQC.cxx:1238
 AliForwardFlowTaskQC.cxx:1239
 AliForwardFlowTaskQC.cxx:1240
 AliForwardFlowTaskQC.cxx:1241
 AliForwardFlowTaskQC.cxx:1242
 AliForwardFlowTaskQC.cxx:1243
 AliForwardFlowTaskQC.cxx:1244
 AliForwardFlowTaskQC.cxx:1245
 AliForwardFlowTaskQC.cxx:1246
 AliForwardFlowTaskQC.cxx:1247
 AliForwardFlowTaskQC.cxx:1248
 AliForwardFlowTaskQC.cxx:1249
 AliForwardFlowTaskQC.cxx:1250
 AliForwardFlowTaskQC.cxx:1251
 AliForwardFlowTaskQC.cxx:1252
 AliForwardFlowTaskQC.cxx:1253
 AliForwardFlowTaskQC.cxx:1254
 AliForwardFlowTaskQC.cxx:1255
 AliForwardFlowTaskQC.cxx:1256
 AliForwardFlowTaskQC.cxx:1257
 AliForwardFlowTaskQC.cxx:1258
 AliForwardFlowTaskQC.cxx:1259
 AliForwardFlowTaskQC.cxx:1260
 AliForwardFlowTaskQC.cxx:1261
 AliForwardFlowTaskQC.cxx:1262
 AliForwardFlowTaskQC.cxx:1263
 AliForwardFlowTaskQC.cxx:1264
 AliForwardFlowTaskQC.cxx:1265
 AliForwardFlowTaskQC.cxx:1266
 AliForwardFlowTaskQC.cxx:1267
 AliForwardFlowTaskQC.cxx:1268
 AliForwardFlowTaskQC.cxx:1269
 AliForwardFlowTaskQC.cxx:1270
 AliForwardFlowTaskQC.cxx:1271
 AliForwardFlowTaskQC.cxx:1272
 AliForwardFlowTaskQC.cxx:1273
 AliForwardFlowTaskQC.cxx:1274
 AliForwardFlowTaskQC.cxx:1275
 AliForwardFlowTaskQC.cxx:1276
 AliForwardFlowTaskQC.cxx:1277
 AliForwardFlowTaskQC.cxx:1278
 AliForwardFlowTaskQC.cxx:1279
 AliForwardFlowTaskQC.cxx:1280
 AliForwardFlowTaskQC.cxx:1281
 AliForwardFlowTaskQC.cxx:1282
 AliForwardFlowTaskQC.cxx:1283
 AliForwardFlowTaskQC.cxx:1284
 AliForwardFlowTaskQC.cxx:1285
 AliForwardFlowTaskQC.cxx:1286
 AliForwardFlowTaskQC.cxx:1287
 AliForwardFlowTaskQC.cxx:1288
 AliForwardFlowTaskQC.cxx:1289
 AliForwardFlowTaskQC.cxx:1290
 AliForwardFlowTaskQC.cxx:1291
 AliForwardFlowTaskQC.cxx:1292
 AliForwardFlowTaskQC.cxx:1293
 AliForwardFlowTaskQC.cxx:1294
 AliForwardFlowTaskQC.cxx:1295
 AliForwardFlowTaskQC.cxx:1296
 AliForwardFlowTaskQC.cxx:1297
 AliForwardFlowTaskQC.cxx:1298
 AliForwardFlowTaskQC.cxx:1299
 AliForwardFlowTaskQC.cxx:1300
 AliForwardFlowTaskQC.cxx:1301
 AliForwardFlowTaskQC.cxx:1302
 AliForwardFlowTaskQC.cxx:1303
 AliForwardFlowTaskQC.cxx:1304
 AliForwardFlowTaskQC.cxx:1305
 AliForwardFlowTaskQC.cxx:1306
 AliForwardFlowTaskQC.cxx:1307
 AliForwardFlowTaskQC.cxx:1308
 AliForwardFlowTaskQC.cxx:1309
 AliForwardFlowTaskQC.cxx:1310
 AliForwardFlowTaskQC.cxx:1311
 AliForwardFlowTaskQC.cxx:1312
 AliForwardFlowTaskQC.cxx:1313
 AliForwardFlowTaskQC.cxx:1314
 AliForwardFlowTaskQC.cxx:1315
 AliForwardFlowTaskQC.cxx:1316
 AliForwardFlowTaskQC.cxx:1317
 AliForwardFlowTaskQC.cxx:1318
 AliForwardFlowTaskQC.cxx:1319
 AliForwardFlowTaskQC.cxx:1320
 AliForwardFlowTaskQC.cxx:1321
 AliForwardFlowTaskQC.cxx:1322
 AliForwardFlowTaskQC.cxx:1323
 AliForwardFlowTaskQC.cxx:1324
 AliForwardFlowTaskQC.cxx:1325
 AliForwardFlowTaskQC.cxx:1326
 AliForwardFlowTaskQC.cxx:1327
 AliForwardFlowTaskQC.cxx:1328
 AliForwardFlowTaskQC.cxx:1329
 AliForwardFlowTaskQC.cxx:1330
 AliForwardFlowTaskQC.cxx:1331
 AliForwardFlowTaskQC.cxx:1332
 AliForwardFlowTaskQC.cxx:1333
 AliForwardFlowTaskQC.cxx:1334
 AliForwardFlowTaskQC.cxx:1335
 AliForwardFlowTaskQC.cxx:1336
 AliForwardFlowTaskQC.cxx:1337
 AliForwardFlowTaskQC.cxx:1338
 AliForwardFlowTaskQC.cxx:1339
 AliForwardFlowTaskQC.cxx:1340
 AliForwardFlowTaskQC.cxx:1341
 AliForwardFlowTaskQC.cxx:1342
 AliForwardFlowTaskQC.cxx:1343
 AliForwardFlowTaskQC.cxx:1344
 AliForwardFlowTaskQC.cxx:1345
 AliForwardFlowTaskQC.cxx:1346
 AliForwardFlowTaskQC.cxx:1347
 AliForwardFlowTaskQC.cxx:1348
 AliForwardFlowTaskQC.cxx:1349
 AliForwardFlowTaskQC.cxx:1350
 AliForwardFlowTaskQC.cxx:1351
 AliForwardFlowTaskQC.cxx:1352
 AliForwardFlowTaskQC.cxx:1353
 AliForwardFlowTaskQC.cxx:1354
 AliForwardFlowTaskQC.cxx:1355
 AliForwardFlowTaskQC.cxx:1356
 AliForwardFlowTaskQC.cxx:1357
 AliForwardFlowTaskQC.cxx:1358
 AliForwardFlowTaskQC.cxx:1359
 AliForwardFlowTaskQC.cxx:1360
 AliForwardFlowTaskQC.cxx:1361
 AliForwardFlowTaskQC.cxx:1362
 AliForwardFlowTaskQC.cxx:1363
 AliForwardFlowTaskQC.cxx:1364
 AliForwardFlowTaskQC.cxx:1365
 AliForwardFlowTaskQC.cxx:1366
 AliForwardFlowTaskQC.cxx:1367
 AliForwardFlowTaskQC.cxx:1368
 AliForwardFlowTaskQC.cxx:1369
 AliForwardFlowTaskQC.cxx:1370
 AliForwardFlowTaskQC.cxx:1371
 AliForwardFlowTaskQC.cxx:1372
 AliForwardFlowTaskQC.cxx:1373
 AliForwardFlowTaskQC.cxx:1374
 AliForwardFlowTaskQC.cxx:1375
 AliForwardFlowTaskQC.cxx:1376
 AliForwardFlowTaskQC.cxx:1377
 AliForwardFlowTaskQC.cxx:1378
 AliForwardFlowTaskQC.cxx:1379
 AliForwardFlowTaskQC.cxx:1380
 AliForwardFlowTaskQC.cxx:1381
 AliForwardFlowTaskQC.cxx:1382
 AliForwardFlowTaskQC.cxx:1383
 AliForwardFlowTaskQC.cxx:1384
 AliForwardFlowTaskQC.cxx:1385
 AliForwardFlowTaskQC.cxx:1386
 AliForwardFlowTaskQC.cxx:1387
 AliForwardFlowTaskQC.cxx:1388
 AliForwardFlowTaskQC.cxx:1389
 AliForwardFlowTaskQC.cxx:1390
 AliForwardFlowTaskQC.cxx:1391
 AliForwardFlowTaskQC.cxx:1392
 AliForwardFlowTaskQC.cxx:1393
 AliForwardFlowTaskQC.cxx:1394
 AliForwardFlowTaskQC.cxx:1395
 AliForwardFlowTaskQC.cxx:1396
 AliForwardFlowTaskQC.cxx:1397
 AliForwardFlowTaskQC.cxx:1398
 AliForwardFlowTaskQC.cxx:1399
 AliForwardFlowTaskQC.cxx:1400
 AliForwardFlowTaskQC.cxx:1401
 AliForwardFlowTaskQC.cxx:1402
 AliForwardFlowTaskQC.cxx:1403
 AliForwardFlowTaskQC.cxx:1404
 AliForwardFlowTaskQC.cxx:1405
 AliForwardFlowTaskQC.cxx:1406
 AliForwardFlowTaskQC.cxx:1407
 AliForwardFlowTaskQC.cxx:1408
 AliForwardFlowTaskQC.cxx:1409
 AliForwardFlowTaskQC.cxx:1410
 AliForwardFlowTaskQC.cxx:1411
 AliForwardFlowTaskQC.cxx:1412
 AliForwardFlowTaskQC.cxx:1413
 AliForwardFlowTaskQC.cxx:1414
 AliForwardFlowTaskQC.cxx:1415
 AliForwardFlowTaskQC.cxx:1416
 AliForwardFlowTaskQC.cxx:1417
 AliForwardFlowTaskQC.cxx:1418
 AliForwardFlowTaskQC.cxx:1419
 AliForwardFlowTaskQC.cxx:1420
 AliForwardFlowTaskQC.cxx:1421
 AliForwardFlowTaskQC.cxx:1422
 AliForwardFlowTaskQC.cxx:1423
 AliForwardFlowTaskQC.cxx:1424
 AliForwardFlowTaskQC.cxx:1425
 AliForwardFlowTaskQC.cxx:1426
 AliForwardFlowTaskQC.cxx:1427
 AliForwardFlowTaskQC.cxx:1428
 AliForwardFlowTaskQC.cxx:1429
 AliForwardFlowTaskQC.cxx:1430
 AliForwardFlowTaskQC.cxx:1431
 AliForwardFlowTaskQC.cxx:1432
 AliForwardFlowTaskQC.cxx:1433
 AliForwardFlowTaskQC.cxx:1434
 AliForwardFlowTaskQC.cxx:1435
 AliForwardFlowTaskQC.cxx:1436
 AliForwardFlowTaskQC.cxx:1437
 AliForwardFlowTaskQC.cxx:1438
 AliForwardFlowTaskQC.cxx:1439
 AliForwardFlowTaskQC.cxx:1440
 AliForwardFlowTaskQC.cxx:1441
 AliForwardFlowTaskQC.cxx:1442
 AliForwardFlowTaskQC.cxx:1443
 AliForwardFlowTaskQC.cxx:1444
 AliForwardFlowTaskQC.cxx:1445
 AliForwardFlowTaskQC.cxx:1446
 AliForwardFlowTaskQC.cxx:1447
 AliForwardFlowTaskQC.cxx:1448
 AliForwardFlowTaskQC.cxx:1449
 AliForwardFlowTaskQC.cxx:1450
 AliForwardFlowTaskQC.cxx:1451
 AliForwardFlowTaskQC.cxx:1452
 AliForwardFlowTaskQC.cxx:1453
 AliForwardFlowTaskQC.cxx:1454
 AliForwardFlowTaskQC.cxx:1455
 AliForwardFlowTaskQC.cxx:1456
 AliForwardFlowTaskQC.cxx:1457
 AliForwardFlowTaskQC.cxx:1458
 AliForwardFlowTaskQC.cxx:1459
 AliForwardFlowTaskQC.cxx:1460
 AliForwardFlowTaskQC.cxx:1461
 AliForwardFlowTaskQC.cxx:1462
 AliForwardFlowTaskQC.cxx:1463
 AliForwardFlowTaskQC.cxx:1464
 AliForwardFlowTaskQC.cxx:1465
 AliForwardFlowTaskQC.cxx:1466
 AliForwardFlowTaskQC.cxx:1467
 AliForwardFlowTaskQC.cxx:1468
 AliForwardFlowTaskQC.cxx:1469
 AliForwardFlowTaskQC.cxx:1470
 AliForwardFlowTaskQC.cxx:1471
 AliForwardFlowTaskQC.cxx:1472
 AliForwardFlowTaskQC.cxx:1473
 AliForwardFlowTaskQC.cxx:1474
 AliForwardFlowTaskQC.cxx:1475
 AliForwardFlowTaskQC.cxx:1476
 AliForwardFlowTaskQC.cxx:1477
 AliForwardFlowTaskQC.cxx:1478
 AliForwardFlowTaskQC.cxx:1479
 AliForwardFlowTaskQC.cxx:1480
 AliForwardFlowTaskQC.cxx:1481
 AliForwardFlowTaskQC.cxx:1482
 AliForwardFlowTaskQC.cxx:1483
 AliForwardFlowTaskQC.cxx:1484
 AliForwardFlowTaskQC.cxx:1485
 AliForwardFlowTaskQC.cxx:1486
 AliForwardFlowTaskQC.cxx:1487
 AliForwardFlowTaskQC.cxx:1488
 AliForwardFlowTaskQC.cxx:1489
 AliForwardFlowTaskQC.cxx:1490
 AliForwardFlowTaskQC.cxx:1491
 AliForwardFlowTaskQC.cxx:1492
 AliForwardFlowTaskQC.cxx:1493
 AliForwardFlowTaskQC.cxx:1494
 AliForwardFlowTaskQC.cxx:1495
 AliForwardFlowTaskQC.cxx:1496
 AliForwardFlowTaskQC.cxx:1497
 AliForwardFlowTaskQC.cxx:1498
 AliForwardFlowTaskQC.cxx:1499
 AliForwardFlowTaskQC.cxx:1500
 AliForwardFlowTaskQC.cxx:1501
 AliForwardFlowTaskQC.cxx:1502
 AliForwardFlowTaskQC.cxx:1503
 AliForwardFlowTaskQC.cxx:1504
 AliForwardFlowTaskQC.cxx:1505
 AliForwardFlowTaskQC.cxx:1506
 AliForwardFlowTaskQC.cxx:1507
 AliForwardFlowTaskQC.cxx:1508
 AliForwardFlowTaskQC.cxx:1509
 AliForwardFlowTaskQC.cxx:1510
 AliForwardFlowTaskQC.cxx:1511
 AliForwardFlowTaskQC.cxx:1512
 AliForwardFlowTaskQC.cxx:1513
 AliForwardFlowTaskQC.cxx:1514
 AliForwardFlowTaskQC.cxx:1515
 AliForwardFlowTaskQC.cxx:1516
 AliForwardFlowTaskQC.cxx:1517
 AliForwardFlowTaskQC.cxx:1518
 AliForwardFlowTaskQC.cxx:1519
 AliForwardFlowTaskQC.cxx:1520
 AliForwardFlowTaskQC.cxx:1521
 AliForwardFlowTaskQC.cxx:1522
 AliForwardFlowTaskQC.cxx:1523
 AliForwardFlowTaskQC.cxx:1524
 AliForwardFlowTaskQC.cxx:1525
 AliForwardFlowTaskQC.cxx:1526
 AliForwardFlowTaskQC.cxx:1527
 AliForwardFlowTaskQC.cxx:1528
 AliForwardFlowTaskQC.cxx:1529
 AliForwardFlowTaskQC.cxx:1530
 AliForwardFlowTaskQC.cxx:1531
 AliForwardFlowTaskQC.cxx:1532
 AliForwardFlowTaskQC.cxx:1533
 AliForwardFlowTaskQC.cxx:1534
 AliForwardFlowTaskQC.cxx:1535
 AliForwardFlowTaskQC.cxx:1536
 AliForwardFlowTaskQC.cxx:1537
 AliForwardFlowTaskQC.cxx:1538
 AliForwardFlowTaskQC.cxx:1539
 AliForwardFlowTaskQC.cxx:1540
 AliForwardFlowTaskQC.cxx:1541
 AliForwardFlowTaskQC.cxx:1542
 AliForwardFlowTaskQC.cxx:1543
 AliForwardFlowTaskQC.cxx:1544
 AliForwardFlowTaskQC.cxx:1545
 AliForwardFlowTaskQC.cxx:1546
 AliForwardFlowTaskQC.cxx:1547
 AliForwardFlowTaskQC.cxx:1548
 AliForwardFlowTaskQC.cxx:1549
 AliForwardFlowTaskQC.cxx:1550
 AliForwardFlowTaskQC.cxx:1551
 AliForwardFlowTaskQC.cxx:1552
 AliForwardFlowTaskQC.cxx:1553
 AliForwardFlowTaskQC.cxx:1554
 AliForwardFlowTaskQC.cxx:1555
 AliForwardFlowTaskQC.cxx:1556
 AliForwardFlowTaskQC.cxx:1557
 AliForwardFlowTaskQC.cxx:1558
 AliForwardFlowTaskQC.cxx:1559
 AliForwardFlowTaskQC.cxx:1560
 AliForwardFlowTaskQC.cxx:1561
 AliForwardFlowTaskQC.cxx:1562
 AliForwardFlowTaskQC.cxx:1563
 AliForwardFlowTaskQC.cxx:1564
 AliForwardFlowTaskQC.cxx:1565
 AliForwardFlowTaskQC.cxx:1566
 AliForwardFlowTaskQC.cxx:1567
 AliForwardFlowTaskQC.cxx:1568
 AliForwardFlowTaskQC.cxx:1569
 AliForwardFlowTaskQC.cxx:1570
 AliForwardFlowTaskQC.cxx:1571
 AliForwardFlowTaskQC.cxx:1572
 AliForwardFlowTaskQC.cxx:1573
 AliForwardFlowTaskQC.cxx:1574
 AliForwardFlowTaskQC.cxx:1575
 AliForwardFlowTaskQC.cxx:1576
 AliForwardFlowTaskQC.cxx:1577
 AliForwardFlowTaskQC.cxx:1578
 AliForwardFlowTaskQC.cxx:1579
 AliForwardFlowTaskQC.cxx:1580
 AliForwardFlowTaskQC.cxx:1581
 AliForwardFlowTaskQC.cxx:1582
 AliForwardFlowTaskQC.cxx:1583
 AliForwardFlowTaskQC.cxx:1584
 AliForwardFlowTaskQC.cxx:1585
 AliForwardFlowTaskQC.cxx:1586
 AliForwardFlowTaskQC.cxx:1587
 AliForwardFlowTaskQC.cxx:1588
 AliForwardFlowTaskQC.cxx:1589
 AliForwardFlowTaskQC.cxx:1590
 AliForwardFlowTaskQC.cxx:1591
 AliForwardFlowTaskQC.cxx:1592
 AliForwardFlowTaskQC.cxx:1593
 AliForwardFlowTaskQC.cxx:1594
 AliForwardFlowTaskQC.cxx:1595
 AliForwardFlowTaskQC.cxx:1596
 AliForwardFlowTaskQC.cxx:1597
 AliForwardFlowTaskQC.cxx:1598
 AliForwardFlowTaskQC.cxx:1599
 AliForwardFlowTaskQC.cxx:1600
 AliForwardFlowTaskQC.cxx:1601
 AliForwardFlowTaskQC.cxx:1602
 AliForwardFlowTaskQC.cxx:1603
 AliForwardFlowTaskQC.cxx:1604
 AliForwardFlowTaskQC.cxx:1605
 AliForwardFlowTaskQC.cxx:1606
 AliForwardFlowTaskQC.cxx:1607
 AliForwardFlowTaskQC.cxx:1608
 AliForwardFlowTaskQC.cxx:1609
 AliForwardFlowTaskQC.cxx:1610
 AliForwardFlowTaskQC.cxx:1611
 AliForwardFlowTaskQC.cxx:1612
 AliForwardFlowTaskQC.cxx:1613
 AliForwardFlowTaskQC.cxx:1614
 AliForwardFlowTaskQC.cxx:1615
 AliForwardFlowTaskQC.cxx:1616
 AliForwardFlowTaskQC.cxx:1617
 AliForwardFlowTaskQC.cxx:1618
 AliForwardFlowTaskQC.cxx:1619
 AliForwardFlowTaskQC.cxx:1620
 AliForwardFlowTaskQC.cxx:1621
 AliForwardFlowTaskQC.cxx:1622
 AliForwardFlowTaskQC.cxx:1623
 AliForwardFlowTaskQC.cxx:1624
 AliForwardFlowTaskQC.cxx:1625
 AliForwardFlowTaskQC.cxx:1626
 AliForwardFlowTaskQC.cxx:1627
 AliForwardFlowTaskQC.cxx:1628
 AliForwardFlowTaskQC.cxx:1629
 AliForwardFlowTaskQC.cxx:1630
 AliForwardFlowTaskQC.cxx:1631
 AliForwardFlowTaskQC.cxx:1632
 AliForwardFlowTaskQC.cxx:1633
 AliForwardFlowTaskQC.cxx:1634
 AliForwardFlowTaskQC.cxx:1635
 AliForwardFlowTaskQC.cxx:1636
 AliForwardFlowTaskQC.cxx:1637
 AliForwardFlowTaskQC.cxx:1638
 AliForwardFlowTaskQC.cxx:1639
 AliForwardFlowTaskQC.cxx:1640
 AliForwardFlowTaskQC.cxx:1641
 AliForwardFlowTaskQC.cxx:1642
 AliForwardFlowTaskQC.cxx:1643
 AliForwardFlowTaskQC.cxx:1644
 AliForwardFlowTaskQC.cxx:1645
 AliForwardFlowTaskQC.cxx:1646
 AliForwardFlowTaskQC.cxx:1647
 AliForwardFlowTaskQC.cxx:1648
 AliForwardFlowTaskQC.cxx:1649
 AliForwardFlowTaskQC.cxx:1650
 AliForwardFlowTaskQC.cxx:1651
 AliForwardFlowTaskQC.cxx:1652
 AliForwardFlowTaskQC.cxx:1653
 AliForwardFlowTaskQC.cxx:1654
 AliForwardFlowTaskQC.cxx:1655
 AliForwardFlowTaskQC.cxx:1656
 AliForwardFlowTaskQC.cxx:1657
 AliForwardFlowTaskQC.cxx:1658
 AliForwardFlowTaskQC.cxx:1659
 AliForwardFlowTaskQC.cxx:1660
 AliForwardFlowTaskQC.cxx:1661
 AliForwardFlowTaskQC.cxx:1662
 AliForwardFlowTaskQC.cxx:1663
 AliForwardFlowTaskQC.cxx:1664
 AliForwardFlowTaskQC.cxx:1665
 AliForwardFlowTaskQC.cxx:1666
 AliForwardFlowTaskQC.cxx:1667
 AliForwardFlowTaskQC.cxx:1668
 AliForwardFlowTaskQC.cxx:1669
 AliForwardFlowTaskQC.cxx:1670
 AliForwardFlowTaskQC.cxx:1671
 AliForwardFlowTaskQC.cxx:1672
 AliForwardFlowTaskQC.cxx:1673
 AliForwardFlowTaskQC.cxx:1674
 AliForwardFlowTaskQC.cxx:1675
 AliForwardFlowTaskQC.cxx:1676
 AliForwardFlowTaskQC.cxx:1677
 AliForwardFlowTaskQC.cxx:1678
 AliForwardFlowTaskQC.cxx:1679
 AliForwardFlowTaskQC.cxx:1680
 AliForwardFlowTaskQC.cxx:1681
 AliForwardFlowTaskQC.cxx:1682
 AliForwardFlowTaskQC.cxx:1683
 AliForwardFlowTaskQC.cxx:1684
 AliForwardFlowTaskQC.cxx:1685
 AliForwardFlowTaskQC.cxx:1686
 AliForwardFlowTaskQC.cxx:1687
 AliForwardFlowTaskQC.cxx:1688
 AliForwardFlowTaskQC.cxx:1689
 AliForwardFlowTaskQC.cxx:1690
 AliForwardFlowTaskQC.cxx:1691
 AliForwardFlowTaskQC.cxx:1692
 AliForwardFlowTaskQC.cxx:1693
 AliForwardFlowTaskQC.cxx:1694
 AliForwardFlowTaskQC.cxx:1695
 AliForwardFlowTaskQC.cxx:1696
 AliForwardFlowTaskQC.cxx:1697
 AliForwardFlowTaskQC.cxx:1698
 AliForwardFlowTaskQC.cxx:1699
 AliForwardFlowTaskQC.cxx:1700
 AliForwardFlowTaskQC.cxx:1701
 AliForwardFlowTaskQC.cxx:1702
 AliForwardFlowTaskQC.cxx:1703
 AliForwardFlowTaskQC.cxx:1704
 AliForwardFlowTaskQC.cxx:1705
 AliForwardFlowTaskQC.cxx:1706
 AliForwardFlowTaskQC.cxx:1707
 AliForwardFlowTaskQC.cxx:1708
 AliForwardFlowTaskQC.cxx:1709
 AliForwardFlowTaskQC.cxx:1710
 AliForwardFlowTaskQC.cxx:1711
 AliForwardFlowTaskQC.cxx:1712
 AliForwardFlowTaskQC.cxx:1713
 AliForwardFlowTaskQC.cxx:1714
 AliForwardFlowTaskQC.cxx:1715
 AliForwardFlowTaskQC.cxx:1716
 AliForwardFlowTaskQC.cxx:1717
 AliForwardFlowTaskQC.cxx:1718
 AliForwardFlowTaskQC.cxx:1719
 AliForwardFlowTaskQC.cxx:1720
 AliForwardFlowTaskQC.cxx:1721
 AliForwardFlowTaskQC.cxx:1722
 AliForwardFlowTaskQC.cxx:1723
 AliForwardFlowTaskQC.cxx:1724
 AliForwardFlowTaskQC.cxx:1725
 AliForwardFlowTaskQC.cxx:1726
 AliForwardFlowTaskQC.cxx:1727
 AliForwardFlowTaskQC.cxx:1728
 AliForwardFlowTaskQC.cxx:1729
 AliForwardFlowTaskQC.cxx:1730
 AliForwardFlowTaskQC.cxx:1731
 AliForwardFlowTaskQC.cxx:1732
 AliForwardFlowTaskQC.cxx:1733
 AliForwardFlowTaskQC.cxx:1734
 AliForwardFlowTaskQC.cxx:1735
 AliForwardFlowTaskQC.cxx:1736
 AliForwardFlowTaskQC.cxx:1737
 AliForwardFlowTaskQC.cxx:1738
 AliForwardFlowTaskQC.cxx:1739
 AliForwardFlowTaskQC.cxx:1740
 AliForwardFlowTaskQC.cxx:1741
 AliForwardFlowTaskQC.cxx:1742
 AliForwardFlowTaskQC.cxx:1743
 AliForwardFlowTaskQC.cxx:1744
 AliForwardFlowTaskQC.cxx:1745
 AliForwardFlowTaskQC.cxx:1746
 AliForwardFlowTaskQC.cxx:1747
 AliForwardFlowTaskQC.cxx:1748
 AliForwardFlowTaskQC.cxx:1749
 AliForwardFlowTaskQC.cxx:1750
 AliForwardFlowTaskQC.cxx:1751
 AliForwardFlowTaskQC.cxx:1752
 AliForwardFlowTaskQC.cxx:1753
 AliForwardFlowTaskQC.cxx:1754
 AliForwardFlowTaskQC.cxx:1755
 AliForwardFlowTaskQC.cxx:1756
 AliForwardFlowTaskQC.cxx:1757
 AliForwardFlowTaskQC.cxx:1758
 AliForwardFlowTaskQC.cxx:1759
 AliForwardFlowTaskQC.cxx:1760
 AliForwardFlowTaskQC.cxx:1761
 AliForwardFlowTaskQC.cxx:1762
 AliForwardFlowTaskQC.cxx:1763
 AliForwardFlowTaskQC.cxx:1764
 AliForwardFlowTaskQC.cxx:1765
 AliForwardFlowTaskQC.cxx:1766
 AliForwardFlowTaskQC.cxx:1767
 AliForwardFlowTaskQC.cxx:1768
 AliForwardFlowTaskQC.cxx:1769
 AliForwardFlowTaskQC.cxx:1770
 AliForwardFlowTaskQC.cxx:1771
 AliForwardFlowTaskQC.cxx:1772
 AliForwardFlowTaskQC.cxx:1773
 AliForwardFlowTaskQC.cxx:1774
 AliForwardFlowTaskQC.cxx:1775
 AliForwardFlowTaskQC.cxx:1776
 AliForwardFlowTaskQC.cxx:1777
 AliForwardFlowTaskQC.cxx:1778
 AliForwardFlowTaskQC.cxx:1779
 AliForwardFlowTaskQC.cxx:1780
 AliForwardFlowTaskQC.cxx:1781
 AliForwardFlowTaskQC.cxx:1782
 AliForwardFlowTaskQC.cxx:1783
 AliForwardFlowTaskQC.cxx:1784
 AliForwardFlowTaskQC.cxx:1785
 AliForwardFlowTaskQC.cxx:1786
 AliForwardFlowTaskQC.cxx:1787
 AliForwardFlowTaskQC.cxx:1788
 AliForwardFlowTaskQC.cxx:1789
 AliForwardFlowTaskQC.cxx:1790
 AliForwardFlowTaskQC.cxx:1791
 AliForwardFlowTaskQC.cxx:1792
 AliForwardFlowTaskQC.cxx:1793
 AliForwardFlowTaskQC.cxx:1794
 AliForwardFlowTaskQC.cxx:1795
 AliForwardFlowTaskQC.cxx:1796
 AliForwardFlowTaskQC.cxx:1797
 AliForwardFlowTaskQC.cxx:1798
 AliForwardFlowTaskQC.cxx:1799
 AliForwardFlowTaskQC.cxx:1800
 AliForwardFlowTaskQC.cxx:1801
 AliForwardFlowTaskQC.cxx:1802
 AliForwardFlowTaskQC.cxx:1803
 AliForwardFlowTaskQC.cxx:1804
 AliForwardFlowTaskQC.cxx:1805
 AliForwardFlowTaskQC.cxx:1806
 AliForwardFlowTaskQC.cxx:1807
 AliForwardFlowTaskQC.cxx:1808
 AliForwardFlowTaskQC.cxx:1809
 AliForwardFlowTaskQC.cxx:1810
 AliForwardFlowTaskQC.cxx:1811
 AliForwardFlowTaskQC.cxx:1812
 AliForwardFlowTaskQC.cxx:1813
 AliForwardFlowTaskQC.cxx:1814
 AliForwardFlowTaskQC.cxx:1815
 AliForwardFlowTaskQC.cxx:1816
 AliForwardFlowTaskQC.cxx:1817
 AliForwardFlowTaskQC.cxx:1818
 AliForwardFlowTaskQC.cxx:1819
 AliForwardFlowTaskQC.cxx:1820
 AliForwardFlowTaskQC.cxx:1821
 AliForwardFlowTaskQC.cxx:1822
 AliForwardFlowTaskQC.cxx:1823
 AliForwardFlowTaskQC.cxx:1824
 AliForwardFlowTaskQC.cxx:1825
 AliForwardFlowTaskQC.cxx:1826
 AliForwardFlowTaskQC.cxx:1827
 AliForwardFlowTaskQC.cxx:1828
 AliForwardFlowTaskQC.cxx:1829
 AliForwardFlowTaskQC.cxx:1830
 AliForwardFlowTaskQC.cxx:1831
 AliForwardFlowTaskQC.cxx:1832
 AliForwardFlowTaskQC.cxx:1833
 AliForwardFlowTaskQC.cxx:1834
 AliForwardFlowTaskQC.cxx:1835
 AliForwardFlowTaskQC.cxx:1836
 AliForwardFlowTaskQC.cxx:1837
 AliForwardFlowTaskQC.cxx:1838
 AliForwardFlowTaskQC.cxx:1839
 AliForwardFlowTaskQC.cxx:1840
 AliForwardFlowTaskQC.cxx:1841
 AliForwardFlowTaskQC.cxx:1842
 AliForwardFlowTaskQC.cxx:1843
 AliForwardFlowTaskQC.cxx:1844
 AliForwardFlowTaskQC.cxx:1845
 AliForwardFlowTaskQC.cxx:1846
 AliForwardFlowTaskQC.cxx:1847
 AliForwardFlowTaskQC.cxx:1848
 AliForwardFlowTaskQC.cxx:1849
 AliForwardFlowTaskQC.cxx:1850
 AliForwardFlowTaskQC.cxx:1851
 AliForwardFlowTaskQC.cxx:1852
 AliForwardFlowTaskQC.cxx:1853
 AliForwardFlowTaskQC.cxx:1854
 AliForwardFlowTaskQC.cxx:1855
 AliForwardFlowTaskQC.cxx:1856
 AliForwardFlowTaskQC.cxx:1857
 AliForwardFlowTaskQC.cxx:1858
 AliForwardFlowTaskQC.cxx:1859
 AliForwardFlowTaskQC.cxx:1860
 AliForwardFlowTaskQC.cxx:1861
 AliForwardFlowTaskQC.cxx:1862
 AliForwardFlowTaskQC.cxx:1863
 AliForwardFlowTaskQC.cxx:1864
 AliForwardFlowTaskQC.cxx:1865
 AliForwardFlowTaskQC.cxx:1866
 AliForwardFlowTaskQC.cxx:1867
 AliForwardFlowTaskQC.cxx:1868
 AliForwardFlowTaskQC.cxx:1869
 AliForwardFlowTaskQC.cxx:1870
 AliForwardFlowTaskQC.cxx:1871
 AliForwardFlowTaskQC.cxx:1872
 AliForwardFlowTaskQC.cxx:1873
 AliForwardFlowTaskQC.cxx:1874
 AliForwardFlowTaskQC.cxx:1875
 AliForwardFlowTaskQC.cxx:1876
 AliForwardFlowTaskQC.cxx:1877
 AliForwardFlowTaskQC.cxx:1878
 AliForwardFlowTaskQC.cxx:1879
 AliForwardFlowTaskQC.cxx:1880
 AliForwardFlowTaskQC.cxx:1881
 AliForwardFlowTaskQC.cxx:1882
 AliForwardFlowTaskQC.cxx:1883
 AliForwardFlowTaskQC.cxx:1884
 AliForwardFlowTaskQC.cxx:1885
 AliForwardFlowTaskQC.cxx:1886
 AliForwardFlowTaskQC.cxx:1887
 AliForwardFlowTaskQC.cxx:1888
 AliForwardFlowTaskQC.cxx:1889
 AliForwardFlowTaskQC.cxx:1890
 AliForwardFlowTaskQC.cxx:1891
 AliForwardFlowTaskQC.cxx:1892
 AliForwardFlowTaskQC.cxx:1893
 AliForwardFlowTaskQC.cxx:1894
 AliForwardFlowTaskQC.cxx:1895
 AliForwardFlowTaskQC.cxx:1896
 AliForwardFlowTaskQC.cxx:1897
 AliForwardFlowTaskQC.cxx:1898
 AliForwardFlowTaskQC.cxx:1899
 AliForwardFlowTaskQC.cxx:1900
 AliForwardFlowTaskQC.cxx:1901
 AliForwardFlowTaskQC.cxx:1902
 AliForwardFlowTaskQC.cxx:1903
 AliForwardFlowTaskQC.cxx:1904
 AliForwardFlowTaskQC.cxx:1905
 AliForwardFlowTaskQC.cxx:1906
 AliForwardFlowTaskQC.cxx:1907
 AliForwardFlowTaskQC.cxx:1908
 AliForwardFlowTaskQC.cxx:1909
 AliForwardFlowTaskQC.cxx:1910
 AliForwardFlowTaskQC.cxx:1911
 AliForwardFlowTaskQC.cxx:1912
 AliForwardFlowTaskQC.cxx:1913
 AliForwardFlowTaskQC.cxx:1914
 AliForwardFlowTaskQC.cxx:1915
 AliForwardFlowTaskQC.cxx:1916
 AliForwardFlowTaskQC.cxx:1917
 AliForwardFlowTaskQC.cxx:1918
 AliForwardFlowTaskQC.cxx:1919
 AliForwardFlowTaskQC.cxx:1920
 AliForwardFlowTaskQC.cxx:1921
 AliForwardFlowTaskQC.cxx:1922
 AliForwardFlowTaskQC.cxx:1923
 AliForwardFlowTaskQC.cxx:1924
 AliForwardFlowTaskQC.cxx:1925
 AliForwardFlowTaskQC.cxx:1926
 AliForwardFlowTaskQC.cxx:1927
 AliForwardFlowTaskQC.cxx:1928
 AliForwardFlowTaskQC.cxx:1929
 AliForwardFlowTaskQC.cxx:1930
 AliForwardFlowTaskQC.cxx:1931
 AliForwardFlowTaskQC.cxx:1932
 AliForwardFlowTaskQC.cxx:1933
 AliForwardFlowTaskQC.cxx:1934
 AliForwardFlowTaskQC.cxx:1935
 AliForwardFlowTaskQC.cxx:1936
 AliForwardFlowTaskQC.cxx:1937
 AliForwardFlowTaskQC.cxx:1938
 AliForwardFlowTaskQC.cxx:1939
 AliForwardFlowTaskQC.cxx:1940
 AliForwardFlowTaskQC.cxx:1941
 AliForwardFlowTaskQC.cxx:1942
 AliForwardFlowTaskQC.cxx:1943
 AliForwardFlowTaskQC.cxx:1944
 AliForwardFlowTaskQC.cxx:1945
 AliForwardFlowTaskQC.cxx:1946
 AliForwardFlowTaskQC.cxx:1947
 AliForwardFlowTaskQC.cxx:1948
 AliForwardFlowTaskQC.cxx:1949
 AliForwardFlowTaskQC.cxx:1950
 AliForwardFlowTaskQC.cxx:1951
 AliForwardFlowTaskQC.cxx:1952
 AliForwardFlowTaskQC.cxx:1953
 AliForwardFlowTaskQC.cxx:1954
 AliForwardFlowTaskQC.cxx:1955
 AliForwardFlowTaskQC.cxx:1956
 AliForwardFlowTaskQC.cxx:1957
 AliForwardFlowTaskQC.cxx:1958
 AliForwardFlowTaskQC.cxx:1959
 AliForwardFlowTaskQC.cxx:1960
 AliForwardFlowTaskQC.cxx:1961
 AliForwardFlowTaskQC.cxx:1962
 AliForwardFlowTaskQC.cxx:1963
 AliForwardFlowTaskQC.cxx:1964
 AliForwardFlowTaskQC.cxx:1965
 AliForwardFlowTaskQC.cxx:1966
 AliForwardFlowTaskQC.cxx:1967
 AliForwardFlowTaskQC.cxx:1968
 AliForwardFlowTaskQC.cxx:1969
 AliForwardFlowTaskQC.cxx:1970
 AliForwardFlowTaskQC.cxx:1971
 AliForwardFlowTaskQC.cxx:1972
 AliForwardFlowTaskQC.cxx:1973
 AliForwardFlowTaskQC.cxx:1974
 AliForwardFlowTaskQC.cxx:1975
 AliForwardFlowTaskQC.cxx:1976
 AliForwardFlowTaskQC.cxx:1977
 AliForwardFlowTaskQC.cxx:1978
 AliForwardFlowTaskQC.cxx:1979
 AliForwardFlowTaskQC.cxx:1980
 AliForwardFlowTaskQC.cxx:1981
 AliForwardFlowTaskQC.cxx:1982
 AliForwardFlowTaskQC.cxx:1983
 AliForwardFlowTaskQC.cxx:1984
 AliForwardFlowTaskQC.cxx:1985
 AliForwardFlowTaskQC.cxx:1986
 AliForwardFlowTaskQC.cxx:1987
 AliForwardFlowTaskQC.cxx:1988
 AliForwardFlowTaskQC.cxx:1989
 AliForwardFlowTaskQC.cxx:1990
 AliForwardFlowTaskQC.cxx:1991
 AliForwardFlowTaskQC.cxx:1992
 AliForwardFlowTaskQC.cxx:1993
 AliForwardFlowTaskQC.cxx:1994
 AliForwardFlowTaskQC.cxx:1995
 AliForwardFlowTaskQC.cxx:1996
 AliForwardFlowTaskQC.cxx:1997
 AliForwardFlowTaskQC.cxx:1998
 AliForwardFlowTaskQC.cxx:1999
 AliForwardFlowTaskQC.cxx:2000
 AliForwardFlowTaskQC.cxx:2001
 AliForwardFlowTaskQC.cxx:2002
 AliForwardFlowTaskQC.cxx:2003
 AliForwardFlowTaskQC.cxx:2004
 AliForwardFlowTaskQC.cxx:2005
 AliForwardFlowTaskQC.cxx:2006
 AliForwardFlowTaskQC.cxx:2007
 AliForwardFlowTaskQC.cxx:2008
 AliForwardFlowTaskQC.cxx:2009
 AliForwardFlowTaskQC.cxx:2010
 AliForwardFlowTaskQC.cxx:2011
 AliForwardFlowTaskQC.cxx:2012
 AliForwardFlowTaskQC.cxx:2013
 AliForwardFlowTaskQC.cxx:2014
 AliForwardFlowTaskQC.cxx:2015
 AliForwardFlowTaskQC.cxx:2016
 AliForwardFlowTaskQC.cxx:2017
 AliForwardFlowTaskQC.cxx:2018
 AliForwardFlowTaskQC.cxx:2019
 AliForwardFlowTaskQC.cxx:2020
 AliForwardFlowTaskQC.cxx:2021
 AliForwardFlowTaskQC.cxx:2022
 AliForwardFlowTaskQC.cxx:2023
 AliForwardFlowTaskQC.cxx:2024
 AliForwardFlowTaskQC.cxx:2025
 AliForwardFlowTaskQC.cxx:2026
 AliForwardFlowTaskQC.cxx:2027
 AliForwardFlowTaskQC.cxx:2028
 AliForwardFlowTaskQC.cxx:2029
 AliForwardFlowTaskQC.cxx:2030
 AliForwardFlowTaskQC.cxx:2031
 AliForwardFlowTaskQC.cxx:2032
 AliForwardFlowTaskQC.cxx:2033
 AliForwardFlowTaskQC.cxx:2034
 AliForwardFlowTaskQC.cxx:2035
 AliForwardFlowTaskQC.cxx:2036
 AliForwardFlowTaskQC.cxx:2037
 AliForwardFlowTaskQC.cxx:2038
 AliForwardFlowTaskQC.cxx:2039
 AliForwardFlowTaskQC.cxx:2040
 AliForwardFlowTaskQC.cxx:2041
 AliForwardFlowTaskQC.cxx:2042
 AliForwardFlowTaskQC.cxx:2043
 AliForwardFlowTaskQC.cxx:2044
 AliForwardFlowTaskQC.cxx:2045
 AliForwardFlowTaskQC.cxx:2046
 AliForwardFlowTaskQC.cxx:2047
 AliForwardFlowTaskQC.cxx:2048
 AliForwardFlowTaskQC.cxx:2049
 AliForwardFlowTaskQC.cxx:2050
 AliForwardFlowTaskQC.cxx:2051
 AliForwardFlowTaskQC.cxx:2052
 AliForwardFlowTaskQC.cxx:2053
 AliForwardFlowTaskQC.cxx:2054
 AliForwardFlowTaskQC.cxx:2055
 AliForwardFlowTaskQC.cxx:2056
 AliForwardFlowTaskQC.cxx:2057
 AliForwardFlowTaskQC.cxx:2058
 AliForwardFlowTaskQC.cxx:2059
 AliForwardFlowTaskQC.cxx:2060
 AliForwardFlowTaskQC.cxx:2061
 AliForwardFlowTaskQC.cxx:2062
 AliForwardFlowTaskQC.cxx:2063
 AliForwardFlowTaskQC.cxx:2064
 AliForwardFlowTaskQC.cxx:2065
 AliForwardFlowTaskQC.cxx:2066
 AliForwardFlowTaskQC.cxx:2067
 AliForwardFlowTaskQC.cxx:2068
 AliForwardFlowTaskQC.cxx:2069
 AliForwardFlowTaskQC.cxx:2070
 AliForwardFlowTaskQC.cxx:2071
 AliForwardFlowTaskQC.cxx:2072
 AliForwardFlowTaskQC.cxx:2073
 AliForwardFlowTaskQC.cxx:2074
 AliForwardFlowTaskQC.cxx:2075
 AliForwardFlowTaskQC.cxx:2076
 AliForwardFlowTaskQC.cxx:2077
 AliForwardFlowTaskQC.cxx:2078
 AliForwardFlowTaskQC.cxx:2079
 AliForwardFlowTaskQC.cxx:2080
 AliForwardFlowTaskQC.cxx:2081
 AliForwardFlowTaskQC.cxx:2082
 AliForwardFlowTaskQC.cxx:2083
 AliForwardFlowTaskQC.cxx:2084
 AliForwardFlowTaskQC.cxx:2085
 AliForwardFlowTaskQC.cxx:2086
 AliForwardFlowTaskQC.cxx:2087
 AliForwardFlowTaskQC.cxx:2088
 AliForwardFlowTaskQC.cxx:2089
 AliForwardFlowTaskQC.cxx:2090
 AliForwardFlowTaskQC.cxx:2091
 AliForwardFlowTaskQC.cxx:2092
 AliForwardFlowTaskQC.cxx:2093
 AliForwardFlowTaskQC.cxx:2094
 AliForwardFlowTaskQC.cxx:2095
 AliForwardFlowTaskQC.cxx:2096
 AliForwardFlowTaskQC.cxx:2097
 AliForwardFlowTaskQC.cxx:2098
 AliForwardFlowTaskQC.cxx:2099
 AliForwardFlowTaskQC.cxx:2100
 AliForwardFlowTaskQC.cxx:2101
 AliForwardFlowTaskQC.cxx:2102
 AliForwardFlowTaskQC.cxx:2103
 AliForwardFlowTaskQC.cxx:2104
 AliForwardFlowTaskQC.cxx:2105
 AliForwardFlowTaskQC.cxx:2106
 AliForwardFlowTaskQC.cxx:2107
 AliForwardFlowTaskQC.cxx:2108
 AliForwardFlowTaskQC.cxx:2109
 AliForwardFlowTaskQC.cxx:2110
 AliForwardFlowTaskQC.cxx:2111
 AliForwardFlowTaskQC.cxx:2112
 AliForwardFlowTaskQC.cxx:2113
 AliForwardFlowTaskQC.cxx:2114
 AliForwardFlowTaskQC.cxx:2115
 AliForwardFlowTaskQC.cxx:2116
 AliForwardFlowTaskQC.cxx:2117
 AliForwardFlowTaskQC.cxx:2118
 AliForwardFlowTaskQC.cxx:2119
 AliForwardFlowTaskQC.cxx:2120
 AliForwardFlowTaskQC.cxx:2121
 AliForwardFlowTaskQC.cxx:2122
 AliForwardFlowTaskQC.cxx:2123
 AliForwardFlowTaskQC.cxx:2124
 AliForwardFlowTaskQC.cxx:2125
 AliForwardFlowTaskQC.cxx:2126
 AliForwardFlowTaskQC.cxx:2127
 AliForwardFlowTaskQC.cxx:2128
 AliForwardFlowTaskQC.cxx:2129
 AliForwardFlowTaskQC.cxx:2130
 AliForwardFlowTaskQC.cxx:2131
 AliForwardFlowTaskQC.cxx:2132
 AliForwardFlowTaskQC.cxx:2133
 AliForwardFlowTaskQC.cxx:2134
 AliForwardFlowTaskQC.cxx:2135
 AliForwardFlowTaskQC.cxx:2136
 AliForwardFlowTaskQC.cxx:2137
 AliForwardFlowTaskQC.cxx:2138
 AliForwardFlowTaskQC.cxx:2139
 AliForwardFlowTaskQC.cxx:2140
 AliForwardFlowTaskQC.cxx:2141
 AliForwardFlowTaskQC.cxx:2142
 AliForwardFlowTaskQC.cxx:2143
 AliForwardFlowTaskQC.cxx:2144
 AliForwardFlowTaskQC.cxx:2145
 AliForwardFlowTaskQC.cxx:2146
 AliForwardFlowTaskQC.cxx:2147
 AliForwardFlowTaskQC.cxx:2148
 AliForwardFlowTaskQC.cxx:2149
 AliForwardFlowTaskQC.cxx:2150
 AliForwardFlowTaskQC.cxx:2151
 AliForwardFlowTaskQC.cxx:2152
 AliForwardFlowTaskQC.cxx:2153
 AliForwardFlowTaskQC.cxx:2154
 AliForwardFlowTaskQC.cxx:2155
 AliForwardFlowTaskQC.cxx:2156
 AliForwardFlowTaskQC.cxx:2157
 AliForwardFlowTaskQC.cxx:2158
 AliForwardFlowTaskQC.cxx:2159
 AliForwardFlowTaskQC.cxx:2160
 AliForwardFlowTaskQC.cxx:2161
 AliForwardFlowTaskQC.cxx:2162
 AliForwardFlowTaskQC.cxx:2163
 AliForwardFlowTaskQC.cxx:2164
 AliForwardFlowTaskQC.cxx:2165
 AliForwardFlowTaskQC.cxx:2166
 AliForwardFlowTaskQC.cxx:2167
 AliForwardFlowTaskQC.cxx:2168
 AliForwardFlowTaskQC.cxx:2169
 AliForwardFlowTaskQC.cxx:2170
 AliForwardFlowTaskQC.cxx:2171
 AliForwardFlowTaskQC.cxx:2172
 AliForwardFlowTaskQC.cxx:2173
 AliForwardFlowTaskQC.cxx:2174
 AliForwardFlowTaskQC.cxx:2175
 AliForwardFlowTaskQC.cxx:2176
 AliForwardFlowTaskQC.cxx:2177
 AliForwardFlowTaskQC.cxx:2178
 AliForwardFlowTaskQC.cxx:2179
 AliForwardFlowTaskQC.cxx:2180
 AliForwardFlowTaskQC.cxx:2181
 AliForwardFlowTaskQC.cxx:2182
 AliForwardFlowTaskQC.cxx:2183
 AliForwardFlowTaskQC.cxx:2184
 AliForwardFlowTaskQC.cxx:2185
 AliForwardFlowTaskQC.cxx:2186
 AliForwardFlowTaskQC.cxx:2187
 AliForwardFlowTaskQC.cxx:2188
 AliForwardFlowTaskQC.cxx:2189
 AliForwardFlowTaskQC.cxx:2190
 AliForwardFlowTaskQC.cxx:2191
 AliForwardFlowTaskQC.cxx:2192
 AliForwardFlowTaskQC.cxx:2193
 AliForwardFlowTaskQC.cxx:2194
 AliForwardFlowTaskQC.cxx:2195
 AliForwardFlowTaskQC.cxx:2196
 AliForwardFlowTaskQC.cxx:2197
 AliForwardFlowTaskQC.cxx:2198
 AliForwardFlowTaskQC.cxx:2199
 AliForwardFlowTaskQC.cxx:2200
 AliForwardFlowTaskQC.cxx:2201
 AliForwardFlowTaskQC.cxx:2202
 AliForwardFlowTaskQC.cxx:2203
 AliForwardFlowTaskQC.cxx:2204
 AliForwardFlowTaskQC.cxx:2205
 AliForwardFlowTaskQC.cxx:2206
 AliForwardFlowTaskQC.cxx:2207
 AliForwardFlowTaskQC.cxx:2208
 AliForwardFlowTaskQC.cxx:2209
 AliForwardFlowTaskQC.cxx:2210
 AliForwardFlowTaskQC.cxx:2211
 AliForwardFlowTaskQC.cxx:2212
 AliForwardFlowTaskQC.cxx:2213
 AliForwardFlowTaskQC.cxx:2214
 AliForwardFlowTaskQC.cxx:2215
 AliForwardFlowTaskQC.cxx:2216
 AliForwardFlowTaskQC.cxx:2217
 AliForwardFlowTaskQC.cxx:2218
 AliForwardFlowTaskQC.cxx:2219
 AliForwardFlowTaskQC.cxx:2220
 AliForwardFlowTaskQC.cxx:2221
 AliForwardFlowTaskQC.cxx:2222
 AliForwardFlowTaskQC.cxx:2223
 AliForwardFlowTaskQC.cxx:2224
 AliForwardFlowTaskQC.cxx:2225
 AliForwardFlowTaskQC.cxx:2226
 AliForwardFlowTaskQC.cxx:2227
 AliForwardFlowTaskQC.cxx:2228
 AliForwardFlowTaskQC.cxx:2229
 AliForwardFlowTaskQC.cxx:2230
 AliForwardFlowTaskQC.cxx:2231
 AliForwardFlowTaskQC.cxx:2232
 AliForwardFlowTaskQC.cxx:2233
 AliForwardFlowTaskQC.cxx:2234
 AliForwardFlowTaskQC.cxx:2235
 AliForwardFlowTaskQC.cxx:2236
 AliForwardFlowTaskQC.cxx:2237
 AliForwardFlowTaskQC.cxx:2238
 AliForwardFlowTaskQC.cxx:2239
 AliForwardFlowTaskQC.cxx:2240
 AliForwardFlowTaskQC.cxx:2241
 AliForwardFlowTaskQC.cxx:2242
 AliForwardFlowTaskQC.cxx:2243
 AliForwardFlowTaskQC.cxx:2244
 AliForwardFlowTaskQC.cxx:2245
 AliForwardFlowTaskQC.cxx:2246
 AliForwardFlowTaskQC.cxx:2247
 AliForwardFlowTaskQC.cxx:2248
 AliForwardFlowTaskQC.cxx:2249
 AliForwardFlowTaskQC.cxx:2250
 AliForwardFlowTaskQC.cxx:2251
 AliForwardFlowTaskQC.cxx:2252
 AliForwardFlowTaskQC.cxx:2253
 AliForwardFlowTaskQC.cxx:2254
 AliForwardFlowTaskQC.cxx:2255
 AliForwardFlowTaskQC.cxx:2256
 AliForwardFlowTaskQC.cxx:2257
 AliForwardFlowTaskQC.cxx:2258
 AliForwardFlowTaskQC.cxx:2259
 AliForwardFlowTaskQC.cxx:2260
 AliForwardFlowTaskQC.cxx:2261
 AliForwardFlowTaskQC.cxx:2262
 AliForwardFlowTaskQC.cxx:2263
 AliForwardFlowTaskQC.cxx:2264
 AliForwardFlowTaskQC.cxx:2265
 AliForwardFlowTaskQC.cxx:2266
 AliForwardFlowTaskQC.cxx:2267
 AliForwardFlowTaskQC.cxx:2268
 AliForwardFlowTaskQC.cxx:2269
 AliForwardFlowTaskQC.cxx:2270
 AliForwardFlowTaskQC.cxx:2271
 AliForwardFlowTaskQC.cxx:2272
 AliForwardFlowTaskQC.cxx:2273
 AliForwardFlowTaskQC.cxx:2274
 AliForwardFlowTaskQC.cxx:2275
 AliForwardFlowTaskQC.cxx:2276
 AliForwardFlowTaskQC.cxx:2277
 AliForwardFlowTaskQC.cxx:2278
 AliForwardFlowTaskQC.cxx:2279
 AliForwardFlowTaskQC.cxx:2280
 AliForwardFlowTaskQC.cxx:2281
 AliForwardFlowTaskQC.cxx:2282
 AliForwardFlowTaskQC.cxx:2283
 AliForwardFlowTaskQC.cxx:2284
 AliForwardFlowTaskQC.cxx:2285
 AliForwardFlowTaskQC.cxx:2286
 AliForwardFlowTaskQC.cxx:2287
 AliForwardFlowTaskQC.cxx:2288
 AliForwardFlowTaskQC.cxx:2289
 AliForwardFlowTaskQC.cxx:2290
 AliForwardFlowTaskQC.cxx:2291
 AliForwardFlowTaskQC.cxx:2292
 AliForwardFlowTaskQC.cxx:2293
 AliForwardFlowTaskQC.cxx:2294
 AliForwardFlowTaskQC.cxx:2295
 AliForwardFlowTaskQC.cxx:2296
 AliForwardFlowTaskQC.cxx:2297
 AliForwardFlowTaskQC.cxx:2298
 AliForwardFlowTaskQC.cxx:2299
 AliForwardFlowTaskQC.cxx:2300
 AliForwardFlowTaskQC.cxx:2301
 AliForwardFlowTaskQC.cxx:2302
 AliForwardFlowTaskQC.cxx:2303
 AliForwardFlowTaskQC.cxx:2304
 AliForwardFlowTaskQC.cxx:2305
 AliForwardFlowTaskQC.cxx:2306
 AliForwardFlowTaskQC.cxx:2307
 AliForwardFlowTaskQC.cxx:2308
 AliForwardFlowTaskQC.cxx:2309
 AliForwardFlowTaskQC.cxx:2310
 AliForwardFlowTaskQC.cxx:2311
 AliForwardFlowTaskQC.cxx:2312
 AliForwardFlowTaskQC.cxx:2313
 AliForwardFlowTaskQC.cxx:2314
 AliForwardFlowTaskQC.cxx:2315
 AliForwardFlowTaskQC.cxx:2316
 AliForwardFlowTaskQC.cxx:2317
 AliForwardFlowTaskQC.cxx:2318
 AliForwardFlowTaskQC.cxx:2319
 AliForwardFlowTaskQC.cxx:2320
 AliForwardFlowTaskQC.cxx:2321
 AliForwardFlowTaskQC.cxx:2322
 AliForwardFlowTaskQC.cxx:2323
 AliForwardFlowTaskQC.cxx:2324
 AliForwardFlowTaskQC.cxx:2325
 AliForwardFlowTaskQC.cxx:2326
 AliForwardFlowTaskQC.cxx:2327
 AliForwardFlowTaskQC.cxx:2328
 AliForwardFlowTaskQC.cxx:2329
 AliForwardFlowTaskQC.cxx:2330
 AliForwardFlowTaskQC.cxx:2331
 AliForwardFlowTaskQC.cxx:2332
 AliForwardFlowTaskQC.cxx:2333
 AliForwardFlowTaskQC.cxx:2334
 AliForwardFlowTaskQC.cxx:2335
 AliForwardFlowTaskQC.cxx:2336
 AliForwardFlowTaskQC.cxx:2337
 AliForwardFlowTaskQC.cxx:2338
 AliForwardFlowTaskQC.cxx:2339
 AliForwardFlowTaskQC.cxx:2340
 AliForwardFlowTaskQC.cxx:2341
 AliForwardFlowTaskQC.cxx:2342
 AliForwardFlowTaskQC.cxx:2343
 AliForwardFlowTaskQC.cxx:2344
 AliForwardFlowTaskQC.cxx:2345
 AliForwardFlowTaskQC.cxx:2346
 AliForwardFlowTaskQC.cxx:2347
 AliForwardFlowTaskQC.cxx:2348
 AliForwardFlowTaskQC.cxx:2349
 AliForwardFlowTaskQC.cxx:2350
 AliForwardFlowTaskQC.cxx:2351
 AliForwardFlowTaskQC.cxx:2352
 AliForwardFlowTaskQC.cxx:2353
 AliForwardFlowTaskQC.cxx:2354
 AliForwardFlowTaskQC.cxx:2355
 AliForwardFlowTaskQC.cxx:2356
 AliForwardFlowTaskQC.cxx:2357
 AliForwardFlowTaskQC.cxx:2358
 AliForwardFlowTaskQC.cxx:2359
 AliForwardFlowTaskQC.cxx:2360
 AliForwardFlowTaskQC.cxx:2361
 AliForwardFlowTaskQC.cxx:2362
 AliForwardFlowTaskQC.cxx:2363
 AliForwardFlowTaskQC.cxx:2364
 AliForwardFlowTaskQC.cxx:2365
 AliForwardFlowTaskQC.cxx:2366
 AliForwardFlowTaskQC.cxx:2367
 AliForwardFlowTaskQC.cxx:2368
 AliForwardFlowTaskQC.cxx:2369
 AliForwardFlowTaskQC.cxx:2370
 AliForwardFlowTaskQC.cxx:2371
 AliForwardFlowTaskQC.cxx:2372
 AliForwardFlowTaskQC.cxx:2373
 AliForwardFlowTaskQC.cxx:2374
 AliForwardFlowTaskQC.cxx:2375
 AliForwardFlowTaskQC.cxx:2376
 AliForwardFlowTaskQC.cxx:2377
 AliForwardFlowTaskQC.cxx:2378
 AliForwardFlowTaskQC.cxx:2379
 AliForwardFlowTaskQC.cxx:2380
 AliForwardFlowTaskQC.cxx:2381
 AliForwardFlowTaskQC.cxx:2382
 AliForwardFlowTaskQC.cxx:2383
 AliForwardFlowTaskQC.cxx:2384
 AliForwardFlowTaskQC.cxx:2385
 AliForwardFlowTaskQC.cxx:2386
 AliForwardFlowTaskQC.cxx:2387
 AliForwardFlowTaskQC.cxx:2388
 AliForwardFlowTaskQC.cxx:2389
 AliForwardFlowTaskQC.cxx:2390
 AliForwardFlowTaskQC.cxx:2391
 AliForwardFlowTaskQC.cxx:2392
 AliForwardFlowTaskQC.cxx:2393
 AliForwardFlowTaskQC.cxx:2394
 AliForwardFlowTaskQC.cxx:2395
 AliForwardFlowTaskQC.cxx:2396
 AliForwardFlowTaskQC.cxx:2397
 AliForwardFlowTaskQC.cxx:2398
 AliForwardFlowTaskQC.cxx:2399
 AliForwardFlowTaskQC.cxx:2400
 AliForwardFlowTaskQC.cxx:2401
 AliForwardFlowTaskQC.cxx:2402
 AliForwardFlowTaskQC.cxx:2403
 AliForwardFlowTaskQC.cxx:2404
 AliForwardFlowTaskQC.cxx:2405
 AliForwardFlowTaskQC.cxx:2406
 AliForwardFlowTaskQC.cxx:2407
 AliForwardFlowTaskQC.cxx:2408
 AliForwardFlowTaskQC.cxx:2409
 AliForwardFlowTaskQC.cxx:2410
 AliForwardFlowTaskQC.cxx:2411
 AliForwardFlowTaskQC.cxx:2412
 AliForwardFlowTaskQC.cxx:2413
 AliForwardFlowTaskQC.cxx:2414
 AliForwardFlowTaskQC.cxx:2415
 AliForwardFlowTaskQC.cxx:2416
 AliForwardFlowTaskQC.cxx:2417
 AliForwardFlowTaskQC.cxx:2418
 AliForwardFlowTaskQC.cxx:2419
 AliForwardFlowTaskQC.cxx:2420
 AliForwardFlowTaskQC.cxx:2421
 AliForwardFlowTaskQC.cxx:2422
 AliForwardFlowTaskQC.cxx:2423
 AliForwardFlowTaskQC.cxx:2424
 AliForwardFlowTaskQC.cxx:2425
 AliForwardFlowTaskQC.cxx:2426
 AliForwardFlowTaskQC.cxx:2427
 AliForwardFlowTaskQC.cxx:2428
 AliForwardFlowTaskQC.cxx:2429
 AliForwardFlowTaskQC.cxx:2430
 AliForwardFlowTaskQC.cxx:2431
 AliForwardFlowTaskQC.cxx:2432
 AliForwardFlowTaskQC.cxx:2433
 AliForwardFlowTaskQC.cxx:2434
 AliForwardFlowTaskQC.cxx:2435
 AliForwardFlowTaskQC.cxx:2436
 AliForwardFlowTaskQC.cxx:2437
 AliForwardFlowTaskQC.cxx:2438
 AliForwardFlowTaskQC.cxx:2439
 AliForwardFlowTaskQC.cxx:2440
 AliForwardFlowTaskQC.cxx:2441
 AliForwardFlowTaskQC.cxx:2442
 AliForwardFlowTaskQC.cxx:2443
 AliForwardFlowTaskQC.cxx:2444
 AliForwardFlowTaskQC.cxx:2445
 AliForwardFlowTaskQC.cxx:2446
 AliForwardFlowTaskQC.cxx:2447
 AliForwardFlowTaskQC.cxx:2448
 AliForwardFlowTaskQC.cxx:2449
 AliForwardFlowTaskQC.cxx:2450
 AliForwardFlowTaskQC.cxx:2451
 AliForwardFlowTaskQC.cxx:2452
 AliForwardFlowTaskQC.cxx:2453
 AliForwardFlowTaskQC.cxx:2454
 AliForwardFlowTaskQC.cxx:2455
 AliForwardFlowTaskQC.cxx:2456
 AliForwardFlowTaskQC.cxx:2457
 AliForwardFlowTaskQC.cxx:2458
 AliForwardFlowTaskQC.cxx:2459
 AliForwardFlowTaskQC.cxx:2460
 AliForwardFlowTaskQC.cxx:2461
 AliForwardFlowTaskQC.cxx:2462
 AliForwardFlowTaskQC.cxx:2463
 AliForwardFlowTaskQC.cxx:2464
 AliForwardFlowTaskQC.cxx:2465
 AliForwardFlowTaskQC.cxx:2466
 AliForwardFlowTaskQC.cxx:2467
 AliForwardFlowTaskQC.cxx:2468
 AliForwardFlowTaskQC.cxx:2469
 AliForwardFlowTaskQC.cxx:2470
 AliForwardFlowTaskQC.cxx:2471
 AliForwardFlowTaskQC.cxx:2472
 AliForwardFlowTaskQC.cxx:2473
 AliForwardFlowTaskQC.cxx:2474
 AliForwardFlowTaskQC.cxx:2475
 AliForwardFlowTaskQC.cxx:2476
 AliForwardFlowTaskQC.cxx:2477
 AliForwardFlowTaskQC.cxx:2478
 AliForwardFlowTaskQC.cxx:2479
 AliForwardFlowTaskQC.cxx:2480
 AliForwardFlowTaskQC.cxx:2481
 AliForwardFlowTaskQC.cxx:2482
 AliForwardFlowTaskQC.cxx:2483
 AliForwardFlowTaskQC.cxx:2484
 AliForwardFlowTaskQC.cxx:2485
 AliForwardFlowTaskQC.cxx:2486
 AliForwardFlowTaskQC.cxx:2487
 AliForwardFlowTaskQC.cxx:2488
 AliForwardFlowTaskQC.cxx:2489
 AliForwardFlowTaskQC.cxx:2490
 AliForwardFlowTaskQC.cxx:2491
 AliForwardFlowTaskQC.cxx:2492
 AliForwardFlowTaskQC.cxx:2493
 AliForwardFlowTaskQC.cxx:2494
 AliForwardFlowTaskQC.cxx:2495
 AliForwardFlowTaskQC.cxx:2496
 AliForwardFlowTaskQC.cxx:2497
 AliForwardFlowTaskQC.cxx:2498
 AliForwardFlowTaskQC.cxx:2499
 AliForwardFlowTaskQC.cxx:2500
 AliForwardFlowTaskQC.cxx:2501
 AliForwardFlowTaskQC.cxx:2502
 AliForwardFlowTaskQC.cxx:2503
 AliForwardFlowTaskQC.cxx:2504
 AliForwardFlowTaskQC.cxx:2505
 AliForwardFlowTaskQC.cxx:2506
 AliForwardFlowTaskQC.cxx:2507
 AliForwardFlowTaskQC.cxx:2508
 AliForwardFlowTaskQC.cxx:2509
 AliForwardFlowTaskQC.cxx:2510
 AliForwardFlowTaskQC.cxx:2511
 AliForwardFlowTaskQC.cxx:2512
 AliForwardFlowTaskQC.cxx:2513
 AliForwardFlowTaskQC.cxx:2514
 AliForwardFlowTaskQC.cxx:2515
 AliForwardFlowTaskQC.cxx:2516
 AliForwardFlowTaskQC.cxx:2517
 AliForwardFlowTaskQC.cxx:2518
 AliForwardFlowTaskQC.cxx:2519
 AliForwardFlowTaskQC.cxx:2520
 AliForwardFlowTaskQC.cxx:2521
 AliForwardFlowTaskQC.cxx:2522
 AliForwardFlowTaskQC.cxx:2523
 AliForwardFlowTaskQC.cxx:2524
 AliForwardFlowTaskQC.cxx:2525
 AliForwardFlowTaskQC.cxx:2526
 AliForwardFlowTaskQC.cxx:2527
 AliForwardFlowTaskQC.cxx:2528
 AliForwardFlowTaskQC.cxx:2529
 AliForwardFlowTaskQC.cxx:2530
 AliForwardFlowTaskQC.cxx:2531
 AliForwardFlowTaskQC.cxx:2532
 AliForwardFlowTaskQC.cxx:2533
 AliForwardFlowTaskQC.cxx:2534
 AliForwardFlowTaskQC.cxx:2535
 AliForwardFlowTaskQC.cxx:2536
 AliForwardFlowTaskQC.cxx:2537
 AliForwardFlowTaskQC.cxx:2538
 AliForwardFlowTaskQC.cxx:2539
 AliForwardFlowTaskQC.cxx:2540
 AliForwardFlowTaskQC.cxx:2541
 AliForwardFlowTaskQC.cxx:2542
 AliForwardFlowTaskQC.cxx:2543
 AliForwardFlowTaskQC.cxx:2544
 AliForwardFlowTaskQC.cxx:2545
 AliForwardFlowTaskQC.cxx:2546
 AliForwardFlowTaskQC.cxx:2547
 AliForwardFlowTaskQC.cxx:2548
 AliForwardFlowTaskQC.cxx:2549
 AliForwardFlowTaskQC.cxx:2550
 AliForwardFlowTaskQC.cxx:2551
 AliForwardFlowTaskQC.cxx:2552
 AliForwardFlowTaskQC.cxx:2553
 AliForwardFlowTaskQC.cxx:2554
 AliForwardFlowTaskQC.cxx:2555
 AliForwardFlowTaskQC.cxx:2556
 AliForwardFlowTaskQC.cxx:2557
 AliForwardFlowTaskQC.cxx:2558
 AliForwardFlowTaskQC.cxx:2559
 AliForwardFlowTaskQC.cxx:2560
 AliForwardFlowTaskQC.cxx:2561
 AliForwardFlowTaskQC.cxx:2562
 AliForwardFlowTaskQC.cxx:2563
 AliForwardFlowTaskQC.cxx:2564
 AliForwardFlowTaskQC.cxx:2565
 AliForwardFlowTaskQC.cxx:2566
 AliForwardFlowTaskQC.cxx:2567
 AliForwardFlowTaskQC.cxx:2568
 AliForwardFlowTaskQC.cxx:2569
 AliForwardFlowTaskQC.cxx:2570
 AliForwardFlowTaskQC.cxx:2571
 AliForwardFlowTaskQC.cxx:2572
 AliForwardFlowTaskQC.cxx:2573
 AliForwardFlowTaskQC.cxx:2574
 AliForwardFlowTaskQC.cxx:2575
 AliForwardFlowTaskQC.cxx:2576
 AliForwardFlowTaskQC.cxx:2577
 AliForwardFlowTaskQC.cxx:2578
 AliForwardFlowTaskQC.cxx:2579
 AliForwardFlowTaskQC.cxx:2580
 AliForwardFlowTaskQC.cxx:2581
 AliForwardFlowTaskQC.cxx:2582
 AliForwardFlowTaskQC.cxx:2583
 AliForwardFlowTaskQC.cxx:2584
 AliForwardFlowTaskQC.cxx:2585
 AliForwardFlowTaskQC.cxx:2586
 AliForwardFlowTaskQC.cxx:2587
 AliForwardFlowTaskQC.cxx:2588
 AliForwardFlowTaskQC.cxx:2589
 AliForwardFlowTaskQC.cxx:2590
 AliForwardFlowTaskQC.cxx:2591
 AliForwardFlowTaskQC.cxx:2592
 AliForwardFlowTaskQC.cxx:2593
 AliForwardFlowTaskQC.cxx:2594
 AliForwardFlowTaskQC.cxx:2595
 AliForwardFlowTaskQC.cxx:2596
 AliForwardFlowTaskQC.cxx:2597
 AliForwardFlowTaskQC.cxx:2598
 AliForwardFlowTaskQC.cxx:2599
 AliForwardFlowTaskQC.cxx:2600
 AliForwardFlowTaskQC.cxx:2601
 AliForwardFlowTaskQC.cxx:2602
 AliForwardFlowTaskQC.cxx:2603
 AliForwardFlowTaskQC.cxx:2604
 AliForwardFlowTaskQC.cxx:2605
 AliForwardFlowTaskQC.cxx:2606
 AliForwardFlowTaskQC.cxx:2607
 AliForwardFlowTaskQC.cxx:2608
 AliForwardFlowTaskQC.cxx:2609
 AliForwardFlowTaskQC.cxx:2610
 AliForwardFlowTaskQC.cxx:2611
 AliForwardFlowTaskQC.cxx:2612
 AliForwardFlowTaskQC.cxx:2613
 AliForwardFlowTaskQC.cxx:2614
 AliForwardFlowTaskQC.cxx:2615
 AliForwardFlowTaskQC.cxx:2616
 AliForwardFlowTaskQC.cxx:2617
 AliForwardFlowTaskQC.cxx:2618
 AliForwardFlowTaskQC.cxx:2619
 AliForwardFlowTaskQC.cxx:2620
 AliForwardFlowTaskQC.cxx:2621
 AliForwardFlowTaskQC.cxx:2622
 AliForwardFlowTaskQC.cxx:2623
 AliForwardFlowTaskQC.cxx:2624
 AliForwardFlowTaskQC.cxx:2625
 AliForwardFlowTaskQC.cxx:2626
 AliForwardFlowTaskQC.cxx:2627
 AliForwardFlowTaskQC.cxx:2628
 AliForwardFlowTaskQC.cxx:2629
 AliForwardFlowTaskQC.cxx:2630
 AliForwardFlowTaskQC.cxx:2631
 AliForwardFlowTaskQC.cxx:2632
 AliForwardFlowTaskQC.cxx:2633
 AliForwardFlowTaskQC.cxx:2634
 AliForwardFlowTaskQC.cxx:2635
 AliForwardFlowTaskQC.cxx:2636
 AliForwardFlowTaskQC.cxx:2637
 AliForwardFlowTaskQC.cxx:2638
 AliForwardFlowTaskQC.cxx:2639
 AliForwardFlowTaskQC.cxx:2640
 AliForwardFlowTaskQC.cxx:2641
 AliForwardFlowTaskQC.cxx:2642
 AliForwardFlowTaskQC.cxx:2643
 AliForwardFlowTaskQC.cxx:2644
 AliForwardFlowTaskQC.cxx:2645
 AliForwardFlowTaskQC.cxx:2646
 AliForwardFlowTaskQC.cxx:2647
 AliForwardFlowTaskQC.cxx:2648
 AliForwardFlowTaskQC.cxx:2649
 AliForwardFlowTaskQC.cxx:2650
 AliForwardFlowTaskQC.cxx:2651
 AliForwardFlowTaskQC.cxx:2652
 AliForwardFlowTaskQC.cxx:2653
 AliForwardFlowTaskQC.cxx:2654
 AliForwardFlowTaskQC.cxx:2655
 AliForwardFlowTaskQC.cxx:2656
 AliForwardFlowTaskQC.cxx:2657
 AliForwardFlowTaskQC.cxx:2658
 AliForwardFlowTaskQC.cxx:2659
 AliForwardFlowTaskQC.cxx:2660
 AliForwardFlowTaskQC.cxx:2661
 AliForwardFlowTaskQC.cxx:2662
 AliForwardFlowTaskQC.cxx:2663
 AliForwardFlowTaskQC.cxx:2664
 AliForwardFlowTaskQC.cxx:2665
 AliForwardFlowTaskQC.cxx:2666
 AliForwardFlowTaskQC.cxx:2667
 AliForwardFlowTaskQC.cxx:2668
 AliForwardFlowTaskQC.cxx:2669
 AliForwardFlowTaskQC.cxx:2670
 AliForwardFlowTaskQC.cxx:2671
 AliForwardFlowTaskQC.cxx:2672
 AliForwardFlowTaskQC.cxx:2673
 AliForwardFlowTaskQC.cxx:2674
 AliForwardFlowTaskQC.cxx:2675
 AliForwardFlowTaskQC.cxx:2676
 AliForwardFlowTaskQC.cxx:2677
 AliForwardFlowTaskQC.cxx:2678
 AliForwardFlowTaskQC.cxx:2679
 AliForwardFlowTaskQC.cxx:2680
 AliForwardFlowTaskQC.cxx:2681
 AliForwardFlowTaskQC.cxx:2682
 AliForwardFlowTaskQC.cxx:2683
 AliForwardFlowTaskQC.cxx:2684
 AliForwardFlowTaskQC.cxx:2685
 AliForwardFlowTaskQC.cxx:2686
 AliForwardFlowTaskQC.cxx:2687
 AliForwardFlowTaskQC.cxx:2688
 AliForwardFlowTaskQC.cxx:2689
 AliForwardFlowTaskQC.cxx:2690
 AliForwardFlowTaskQC.cxx:2691
 AliForwardFlowTaskQC.cxx:2692
 AliForwardFlowTaskQC.cxx:2693
 AliForwardFlowTaskQC.cxx:2694
 AliForwardFlowTaskQC.cxx:2695
 AliForwardFlowTaskQC.cxx:2696
 AliForwardFlowTaskQC.cxx:2697
 AliForwardFlowTaskQC.cxx:2698
 AliForwardFlowTaskQC.cxx:2699
 AliForwardFlowTaskQC.cxx:2700
 AliForwardFlowTaskQC.cxx:2701
 AliForwardFlowTaskQC.cxx:2702
 AliForwardFlowTaskQC.cxx:2703
 AliForwardFlowTaskQC.cxx:2704
 AliForwardFlowTaskQC.cxx:2705
 AliForwardFlowTaskQC.cxx:2706
 AliForwardFlowTaskQC.cxx:2707
 AliForwardFlowTaskQC.cxx:2708
 AliForwardFlowTaskQC.cxx:2709
 AliForwardFlowTaskQC.cxx:2710
 AliForwardFlowTaskQC.cxx:2711
 AliForwardFlowTaskQC.cxx:2712
 AliForwardFlowTaskQC.cxx:2713
 AliForwardFlowTaskQC.cxx:2714
 AliForwardFlowTaskQC.cxx:2715
 AliForwardFlowTaskQC.cxx:2716
 AliForwardFlowTaskQC.cxx:2717
 AliForwardFlowTaskQC.cxx:2718
 AliForwardFlowTaskQC.cxx:2719
 AliForwardFlowTaskQC.cxx:2720
 AliForwardFlowTaskQC.cxx:2721
 AliForwardFlowTaskQC.cxx:2722
 AliForwardFlowTaskQC.cxx:2723
 AliForwardFlowTaskQC.cxx:2724
 AliForwardFlowTaskQC.cxx:2725
 AliForwardFlowTaskQC.cxx:2726
 AliForwardFlowTaskQC.cxx:2727
 AliForwardFlowTaskQC.cxx:2728
 AliForwardFlowTaskQC.cxx:2729
 AliForwardFlowTaskQC.cxx:2730
 AliForwardFlowTaskQC.cxx:2731
 AliForwardFlowTaskQC.cxx:2732
 AliForwardFlowTaskQC.cxx:2733
 AliForwardFlowTaskQC.cxx:2734
 AliForwardFlowTaskQC.cxx:2735
 AliForwardFlowTaskQC.cxx:2736
 AliForwardFlowTaskQC.cxx:2737
 AliForwardFlowTaskQC.cxx:2738
 AliForwardFlowTaskQC.cxx:2739
 AliForwardFlowTaskQC.cxx:2740
 AliForwardFlowTaskQC.cxx:2741
 AliForwardFlowTaskQC.cxx:2742
 AliForwardFlowTaskQC.cxx:2743
 AliForwardFlowTaskQC.cxx:2744
 AliForwardFlowTaskQC.cxx:2745
 AliForwardFlowTaskQC.cxx:2746
 AliForwardFlowTaskQC.cxx:2747
 AliForwardFlowTaskQC.cxx:2748
 AliForwardFlowTaskQC.cxx:2749
 AliForwardFlowTaskQC.cxx:2750
 AliForwardFlowTaskQC.cxx:2751
 AliForwardFlowTaskQC.cxx:2752
 AliForwardFlowTaskQC.cxx:2753
 AliForwardFlowTaskQC.cxx:2754
 AliForwardFlowTaskQC.cxx:2755
 AliForwardFlowTaskQC.cxx:2756
 AliForwardFlowTaskQC.cxx:2757
 AliForwardFlowTaskQC.cxx:2758
 AliForwardFlowTaskQC.cxx:2759
 AliForwardFlowTaskQC.cxx:2760
 AliForwardFlowTaskQC.cxx:2761
 AliForwardFlowTaskQC.cxx:2762
 AliForwardFlowTaskQC.cxx:2763
 AliForwardFlowTaskQC.cxx:2764
 AliForwardFlowTaskQC.cxx:2765
 AliForwardFlowTaskQC.cxx:2766
 AliForwardFlowTaskQC.cxx:2767
 AliForwardFlowTaskQC.cxx:2768
 AliForwardFlowTaskQC.cxx:2769
 AliForwardFlowTaskQC.cxx:2770
 AliForwardFlowTaskQC.cxx:2771
 AliForwardFlowTaskQC.cxx:2772
 AliForwardFlowTaskQC.cxx:2773
 AliForwardFlowTaskQC.cxx:2774
 AliForwardFlowTaskQC.cxx:2775
 AliForwardFlowTaskQC.cxx:2776
 AliForwardFlowTaskQC.cxx:2777
 AliForwardFlowTaskQC.cxx:2778
 AliForwardFlowTaskQC.cxx:2779
 AliForwardFlowTaskQC.cxx:2780
 AliForwardFlowTaskQC.cxx:2781
 AliForwardFlowTaskQC.cxx:2782
 AliForwardFlowTaskQC.cxx:2783
 AliForwardFlowTaskQC.cxx:2784
 AliForwardFlowTaskQC.cxx:2785
 AliForwardFlowTaskQC.cxx:2786
 AliForwardFlowTaskQC.cxx:2787
 AliForwardFlowTaskQC.cxx:2788
 AliForwardFlowTaskQC.cxx:2789
 AliForwardFlowTaskQC.cxx:2790
 AliForwardFlowTaskQC.cxx:2791
 AliForwardFlowTaskQC.cxx:2792
 AliForwardFlowTaskQC.cxx:2793
 AliForwardFlowTaskQC.cxx:2794
 AliForwardFlowTaskQC.cxx:2795
 AliForwardFlowTaskQC.cxx:2796
 AliForwardFlowTaskQC.cxx:2797
 AliForwardFlowTaskQC.cxx:2798
 AliForwardFlowTaskQC.cxx:2799
 AliForwardFlowTaskQC.cxx:2800
 AliForwardFlowTaskQC.cxx:2801
 AliForwardFlowTaskQC.cxx:2802
 AliForwardFlowTaskQC.cxx:2803
 AliForwardFlowTaskQC.cxx:2804
 AliForwardFlowTaskQC.cxx:2805
 AliForwardFlowTaskQC.cxx:2806
 AliForwardFlowTaskQC.cxx:2807
 AliForwardFlowTaskQC.cxx:2808
 AliForwardFlowTaskQC.cxx:2809
 AliForwardFlowTaskQC.cxx:2810
 AliForwardFlowTaskQC.cxx:2811
 AliForwardFlowTaskQC.cxx:2812
 AliForwardFlowTaskQC.cxx:2813
 AliForwardFlowTaskQC.cxx:2814
 AliForwardFlowTaskQC.cxx:2815
 AliForwardFlowTaskQC.cxx:2816
 AliForwardFlowTaskQC.cxx:2817
 AliForwardFlowTaskQC.cxx:2818
 AliForwardFlowTaskQC.cxx:2819
 AliForwardFlowTaskQC.cxx:2820
 AliForwardFlowTaskQC.cxx:2821
 AliForwardFlowTaskQC.cxx:2822
 AliForwardFlowTaskQC.cxx:2823
 AliForwardFlowTaskQC.cxx:2824
 AliForwardFlowTaskQC.cxx:2825
 AliForwardFlowTaskQC.cxx:2826
 AliForwardFlowTaskQC.cxx:2827
 AliForwardFlowTaskQC.cxx:2828
 AliForwardFlowTaskQC.cxx:2829
 AliForwardFlowTaskQC.cxx:2830
 AliForwardFlowTaskQC.cxx:2831
 AliForwardFlowTaskQC.cxx:2832
 AliForwardFlowTaskQC.cxx:2833
 AliForwardFlowTaskQC.cxx:2834
 AliForwardFlowTaskQC.cxx:2835
 AliForwardFlowTaskQC.cxx:2836
 AliForwardFlowTaskQC.cxx:2837
 AliForwardFlowTaskQC.cxx:2838
 AliForwardFlowTaskQC.cxx:2839
 AliForwardFlowTaskQC.cxx:2840
 AliForwardFlowTaskQC.cxx:2841
 AliForwardFlowTaskQC.cxx:2842
 AliForwardFlowTaskQC.cxx:2843
 AliForwardFlowTaskQC.cxx:2844
 AliForwardFlowTaskQC.cxx:2845
 AliForwardFlowTaskQC.cxx:2846
 AliForwardFlowTaskQC.cxx:2847
 AliForwardFlowTaskQC.cxx:2848
 AliForwardFlowTaskQC.cxx:2849
 AliForwardFlowTaskQC.cxx:2850
 AliForwardFlowTaskQC.cxx:2851
 AliForwardFlowTaskQC.cxx:2852
 AliForwardFlowTaskQC.cxx:2853
 AliForwardFlowTaskQC.cxx:2854
 AliForwardFlowTaskQC.cxx:2855
 AliForwardFlowTaskQC.cxx:2856
 AliForwardFlowTaskQC.cxx:2857
 AliForwardFlowTaskQC.cxx:2858
 AliForwardFlowTaskQC.cxx:2859
 AliForwardFlowTaskQC.cxx:2860
 AliForwardFlowTaskQC.cxx:2861
 AliForwardFlowTaskQC.cxx:2862
 AliForwardFlowTaskQC.cxx:2863
 AliForwardFlowTaskQC.cxx:2864
 AliForwardFlowTaskQC.cxx:2865
 AliForwardFlowTaskQC.cxx:2866
 AliForwardFlowTaskQC.cxx:2867
 AliForwardFlowTaskQC.cxx:2868
 AliForwardFlowTaskQC.cxx:2869
 AliForwardFlowTaskQC.cxx:2870
 AliForwardFlowTaskQC.cxx:2871
 AliForwardFlowTaskQC.cxx:2872
 AliForwardFlowTaskQC.cxx:2873
 AliForwardFlowTaskQC.cxx:2874
 AliForwardFlowTaskQC.cxx:2875
 AliForwardFlowTaskQC.cxx:2876
 AliForwardFlowTaskQC.cxx:2877
 AliForwardFlowTaskQC.cxx:2878
 AliForwardFlowTaskQC.cxx:2879
 AliForwardFlowTaskQC.cxx:2880
 AliForwardFlowTaskQC.cxx:2881
 AliForwardFlowTaskQC.cxx:2882
 AliForwardFlowTaskQC.cxx:2883
 AliForwardFlowTaskQC.cxx:2884
 AliForwardFlowTaskQC.cxx:2885
 AliForwardFlowTaskQC.cxx:2886
 AliForwardFlowTaskQC.cxx:2887
 AliForwardFlowTaskQC.cxx:2888
 AliForwardFlowTaskQC.cxx:2889
 AliForwardFlowTaskQC.cxx:2890
 AliForwardFlowTaskQC.cxx:2891
 AliForwardFlowTaskQC.cxx:2892
 AliForwardFlowTaskQC.cxx:2893
 AliForwardFlowTaskQC.cxx:2894
 AliForwardFlowTaskQC.cxx:2895
 AliForwardFlowTaskQC.cxx:2896
 AliForwardFlowTaskQC.cxx:2897
 AliForwardFlowTaskQC.cxx:2898
 AliForwardFlowTaskQC.cxx:2899
 AliForwardFlowTaskQC.cxx:2900
 AliForwardFlowTaskQC.cxx:2901
 AliForwardFlowTaskQC.cxx:2902
 AliForwardFlowTaskQC.cxx:2903
 AliForwardFlowTaskQC.cxx:2904
 AliForwardFlowTaskQC.cxx:2905
 AliForwardFlowTaskQC.cxx:2906
 AliForwardFlowTaskQC.cxx:2907
 AliForwardFlowTaskQC.cxx:2908
 AliForwardFlowTaskQC.cxx:2909
 AliForwardFlowTaskQC.cxx:2910
 AliForwardFlowTaskQC.cxx:2911
 AliForwardFlowTaskQC.cxx:2912
 AliForwardFlowTaskQC.cxx:2913
 AliForwardFlowTaskQC.cxx:2914
 AliForwardFlowTaskQC.cxx:2915
 AliForwardFlowTaskQC.cxx:2916
 AliForwardFlowTaskQC.cxx:2917
 AliForwardFlowTaskQC.cxx:2918
 AliForwardFlowTaskQC.cxx:2919
 AliForwardFlowTaskQC.cxx:2920
 AliForwardFlowTaskQC.cxx:2921
 AliForwardFlowTaskQC.cxx:2922
 AliForwardFlowTaskQC.cxx:2923
 AliForwardFlowTaskQC.cxx:2924
 AliForwardFlowTaskQC.cxx:2925
 AliForwardFlowTaskQC.cxx:2926
 AliForwardFlowTaskQC.cxx:2927
 AliForwardFlowTaskQC.cxx:2928
 AliForwardFlowTaskQC.cxx:2929
 AliForwardFlowTaskQC.cxx:2930
 AliForwardFlowTaskQC.cxx:2931
 AliForwardFlowTaskQC.cxx:2932
 AliForwardFlowTaskQC.cxx:2933
 AliForwardFlowTaskQC.cxx:2934
 AliForwardFlowTaskQC.cxx:2935
 AliForwardFlowTaskQC.cxx:2936
 AliForwardFlowTaskQC.cxx:2937
 AliForwardFlowTaskQC.cxx:2938
 AliForwardFlowTaskQC.cxx:2939
 AliForwardFlowTaskQC.cxx:2940
 AliForwardFlowTaskQC.cxx:2941
 AliForwardFlowTaskQC.cxx:2942
 AliForwardFlowTaskQC.cxx:2943
 AliForwardFlowTaskQC.cxx:2944
 AliForwardFlowTaskQC.cxx:2945
 AliForwardFlowTaskQC.cxx:2946
 AliForwardFlowTaskQC.cxx:2947
 AliForwardFlowTaskQC.cxx:2948
 AliForwardFlowTaskQC.cxx:2949
 AliForwardFlowTaskQC.cxx:2950
 AliForwardFlowTaskQC.cxx:2951
 AliForwardFlowTaskQC.cxx:2952
 AliForwardFlowTaskQC.cxx:2953
 AliForwardFlowTaskQC.cxx:2954
 AliForwardFlowTaskQC.cxx:2955
 AliForwardFlowTaskQC.cxx:2956
 AliForwardFlowTaskQC.cxx:2957
 AliForwardFlowTaskQC.cxx:2958
 AliForwardFlowTaskQC.cxx:2959
 AliForwardFlowTaskQC.cxx:2960
 AliForwardFlowTaskQC.cxx:2961
 AliForwardFlowTaskQC.cxx:2962
 AliForwardFlowTaskQC.cxx:2963
 AliForwardFlowTaskQC.cxx:2964
 AliForwardFlowTaskQC.cxx:2965
 AliForwardFlowTaskQC.cxx:2966
 AliForwardFlowTaskQC.cxx:2967
 AliForwardFlowTaskQC.cxx:2968
 AliForwardFlowTaskQC.cxx:2969
 AliForwardFlowTaskQC.cxx:2970
 AliForwardFlowTaskQC.cxx:2971
 AliForwardFlowTaskQC.cxx:2972
 AliForwardFlowTaskQC.cxx:2973
 AliForwardFlowTaskQC.cxx:2974
 AliForwardFlowTaskQC.cxx:2975
 AliForwardFlowTaskQC.cxx:2976
 AliForwardFlowTaskQC.cxx:2977
 AliForwardFlowTaskQC.cxx:2978
 AliForwardFlowTaskQC.cxx:2979
 AliForwardFlowTaskQC.cxx:2980