ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id: AliUEHistograms.cxx 20164 2007-08-14 15:31:50Z morsch $ */

//
//
// encapsulates several AliUEHist objects for a full UE analysis plus additional control histograms
//
//
// Author: Jan Fiete Grosse-Oetringhaus, Sara Vallero

#include "AliUEHistograms.h"

#include "AliCFContainer.h"
#include "AliVParticle.h"
#include "AliAODTrack.h"

#include "TList.h"
#include "TCanvas.h"
#include "TH2F.h"
#include "TH1F.h"
#include "TH3F.h"
#include "TMath.h"
#include "TLorentzVector.h"

ClassImp(AliUEHistograms)

const Int_t AliUEHistograms::fgkUEHists = 3;

AliUEHistograms::AliUEHistograms(const char* name, const char* histograms, const char* binning) : 
  TNamed(name, name),
  fNumberDensitypT(0),
  fSumpT(0),
  fNumberDensityPhi(0),
  fCorrelationpT(0),
  fCorrelationEta(0),
  fCorrelationPhi(0),
  fCorrelationR(0),
  fCorrelationLeading2Phi(0),
  fCorrelationMultiplicity(0),
  fYields(0),
  fInvYield2(0),
  fEventCount(0),
  fEventCountDifferential(0),
  fVertexContributors(0),
  fCentralityDistribution(0),
  fCentralityCorrelation(0),
  fITSClusterMap(0),
  fControlConvResoncances(0),
  fEfficiencyCorrectionTriggers(0),
  fEfficiencyCorrectionAssociated(0),
  fSelectCharge(0),
  fTriggerSelectCharge(0),
  fAssociatedSelectCharge(0),
  fTriggerRestrictEta(-1),
  fEtaOrdering(kFALSE),
  fCutConversions(kFALSE),
  fCutResonances(kFALSE),
  fRejectResonanceDaughters(-1),
  fOnlyOneEtaSide(0),
  fWeightPerEvent(kFALSE),
  fPtOrder(kTRUE),
  fTwoTrackCutMinRadius(0.8),
  fRunNumber(0),
  fMergeCount(1)
{
  // Constructor
  //
  // the string histograms defines which histograms are created:
  //    1 = NumberDensitypT
  //    2 = SumpT
  //    3 = NumberDensityPhi
  //    4 = NumberDensityPhiCentrality (other multiplicity for Pb)
  
  AliLog::SetClassDebugLevel("AliCFContainer", -1);
  AliLog::SetClassDebugLevel("AliCFGridSparse", -3);

  fTwoTrackDistancePt[0] = 0;
  fTwoTrackDistancePt[1] = 0;
  
  TString histogramsStr(histograms);
  
  TString defaultBinningStr;
  defaultBinningStr = "eta: -1.0, -0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0\n"
    "p_t_assoc: 0.5, 0.75, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 8.0\n"
    "p_t_leading: 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5, 10.0, 10.5, 11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 14.0, 14.5, 15.0, 15.5, 16.0, 16.5, 17.0, 17.5, 18.0, 18.5, 19.0, 19.5, 20.0, 20.5, 21.0, 21.5, 22.0, 22.5, 23.0, 23.5, 24.0, 24.5, 25.0, 25.5, 26.0, 26.5, 27.0, 27.5, 28.0, 28.5, 29.0, 29.5, 30.0, 30.5, 31.0, 31.5, 32.0, 32.5, 33.0, 33.5, 34.0, 34.5, 35.0, 35.5, 36.0, 36.5, 37.0, 37.5, 38.0, 38.5, 39.0, 39.5, 40.0, 40.5, 41.0, 41.5, 42.0, 42.5, 43.0, 43.5, 44.0, 44.5, 45.0, 45.5, 46.0, 46.5, 47.0, 47.5, 48.0, 48.5, 49.0, 49.5, 50.0\n"
    "p_t_leading_course: 0.5, 1.0, 2.0, 3.0, 4.0, 6.0, 8.0\n"
    "p_t_eff: 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.25, 1.5, 1.75, 2.0, 2.25, 2.5, 2.75, 3.0, 3.25, 3.5, 3.75, 4.0, 4.5, 5.0, 6.0, 7.0, 8.0\n"
    "vertex_eff: -10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10\n"
  ;

  if (histogramsStr.Contains("4") || histogramsStr.Contains("5") || histogramsStr.Contains("6")) // Dphi Corr
  {
    if (histogramsStr.Contains("C"))
      defaultBinningStr += "multiplicity: 0, 20, 40, 60, 80, 100.1\n"; // course
    else
      defaultBinningStr += "multiplicity: 0, 1, 2, 3, 4, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100.1\n";

    if (histogramsStr.Contains("5"))
      defaultBinningStr += "vertex: -7, -5, -3, -1, 1, 3, 5, 7\n";
    else
      defaultBinningStr += "vertex: -10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10\n";
    
    if (histogramsStr.Contains("R"))
      defaultBinningStr += "delta_phi: -1.570796, -1.483530, -1.396263, -1.308997, -1.221730, -1.134464, -1.047198, -0.959931, -0.872665, -0.785398, -0.698132, -0.610865, -0.523599, -0.436332, -0.349066, -0.261799, -0.174533, -0.087266, 0.0, 0.087266, 0.174533, 0.261799, 0.349066, 0.436332, 0.523599, 0.610865, 0.698132, 0.785398, 0.872665, 0.959931, 1.047198, 1.134464, 1.221730, 1.308997, 1.396263, 1.483530, 1.570796, 1.658063, 1.745329, 1.832596, 1.919862, 2.007129, 2.094395, 2.181662, 2.268928, 2.356194, 2.443461, 2.530727, 2.617994, 2.705260, 2.792527, 2.879793, 2.967060, 3.054326, 3.141593, 3.228859, 3.316126, 3.403392, 3.490659, 3.577925, 3.665191, 3.752458, 3.839724, 3.926991, 4.014257, 4.101524, 4.188790, 4.276057, 4.363323, 4.450590, 4.537856, 4.625123, 4.712389\n" // this binning starts at -pi/2 and is modulo 3 
	"delta_eta: -2.4, -2.3, -2.2, -2.1, -2.0, -1.9, -1.8, -1.7, -1.6, -1.5, -1.4, -1.3, -1.2, -1.1, -1.0, -0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0,2.1, 2.2, 2.3, 2.4\n"
      ;
    else // for TTR studies
      defaultBinningStr += "delta_phi: -1.570796, -1.483530, -1.396263, -1.308997, -1.221730, -1.134464, -1.047198, -0.959931, -0.872665, -0.785398, -0.698132, -0.610865, -0.523599, -0.436332, -0.349066, -0.261799, -0.174533, -0.087266, -0.043633, -0.021817, 0.0, 0.021817, 0.043633, 0.087266, 0.174533, 0.261799, 0.349066, 0.436332, 0.523599, 0.610865, 0.698132, 0.785398, 0.872665, 0.959931, 1.047198, 1.134464, 1.221730, 1.308997, 1.396263, 1.483530, 1.570796, 1.658063, 1.745329, 1.832596, 1.919862, 2.007129, 2.094395, 2.181662, 2.268928, 2.356194, 2.443461, 2.530727, 2.617994, 2.705260, 2.792527, 2.879793, 2.967060, 3.054326, 3.141593, 3.228859, 3.316126, 3.403392, 3.490659, 3.577925, 3.665191, 3.752458, 3.839724, 3.926991, 4.014257, 4.101524, 4.188790, 4.276057, 4.363323, 4.450590, 4.537856, 4.625123, 4.712389\n"
	"delta_eta: -2.0, -1.9, -1.8, -1.7, -1.6, -1.5, -1.4, -1.3, -1.2, -1.1, -1.0, -0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, -0.05, -0.025, 0, 0.025, 0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0\n"
      ;
  }
  else // UE
    defaultBinningStr += "multiplicity: -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 200.0\n"
      "delta_phi: -1.570796, -1.483530, -1.396263, -1.308997, -1.221730, -1.134464, -1.047198, -0.959931, -0.872665, -0.785398, -0.698132, -0.610865, -0.523599, -0.436332, -0.349066, -0.261799, -0.174533, -0.087266, 0.0, 0.087266, 0.174533, 0.261799, 0.349066, 0.436332, 0.523599, 0.610865, 0.698132, 0.785398, 0.872665, 0.959931, 1.047198, 1.134464, 1.221730, 1.308997, 1.396263, 1.483530, 1.570796, 1.658063, 1.745329, 1.832596, 1.919862, 2.007129, 2.094395, 2.181662, 2.268928, 2.356194, 2.443461, 2.530727, 2.617994, 2.705260, 2.792527, 2.879793, 2.967060, 3.054326, 3.141593, 3.228859, 3.316126, 3.403392, 3.490659, 3.577925, 3.665191, 3.752458, 3.839724, 3.926991, 4.014257, 4.101524, 4.188790, 4.276057, 4.363323, 4.450590, 4.537856, 4.625123, 4.712389\n"
      "vertex: -10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10\n"
    ;

  // combine customBinning with defaultBinningStr -> use customBinning where available and otherwise defaultBinningStr
  TString binningStr = AliUEHist::CombineBinning(defaultBinningStr, TString(binning));

  if (histogramsStr.Contains("1"))
    fNumberDensitypT = new AliUEHist("NumberDensitypT", binningStr);
  if (histogramsStr.Contains("2"))
    fSumpT = new AliUEHist("SumpT", binningStr);
  
  if (histogramsStr.Contains("3"))
    fNumberDensityPhi = new AliUEHist("NumberDensityPhi", binningStr);
  else if (histogramsStr.Contains("4"))
    fNumberDensityPhi = new AliUEHist("NumberDensityPhiCentrality", binningStr);
  else if (histogramsStr.Contains("5") || histogramsStr.Contains("6"))
    fNumberDensityPhi = new AliUEHist("NumberDensityPhiCentralityVtx", binningStr);
  
  // do not add this hists to the directory
  Bool_t oldStatus = TH1::AddDirectoryStatus();
  TH1::AddDirectory(kFALSE);
  
  if (!histogramsStr.Contains("4") && !histogramsStr.Contains("5") && !histogramsStr.Contains("6"))
  {
    fCorrelationpT  = new TH2F("fCorrelationpT", ";p_{T,lead} (MC);p_{T,lead} (RECO)", 200, 0, 50, 200, 0, 50);
    fCorrelationEta = new TH2F("fCorrelationEta", ";#eta_{lead} (MC);#eta_{T,lead} (RECO)", 200, -1, 1, 200, -1, 1);
    fCorrelationPhi = new TH2F("fCorrelationPhi", ";#varphi_{lead} (MC);#varphi_{T,lead} (RECO)", 200, 0, TMath::TwoPi(), 200, 0, TMath::TwoPi());
  }
  else
  {
    fCorrelationpT  = new TH2F("fCorrelationpT", ";Centrality;p_{T} (RECO)", 100, 0, 100.001, 200, 0, 50);
    fCorrelationEta = new TH2F("fCorrelationEta", ";Centrality;#eta (RECO)", 100, 0, 100.001, 200, -5, 5);
    fCorrelationPhi = new TH2F("fCorrelationPhi", ";Centrality;#varphi (RECO)", 100, 0, 100.001, 200, 0, TMath::TwoPi());
  }
  
  fCorrelationR =   new TH2F("fCorrelationR", ";R;p_{T,lead} (MC)", 200, 0, 2, 200, 0, 50);
  fCorrelationLeading2Phi = new TH2F("fCorrelationLeading2Phi", ";#Delta #varphi;p_{T,lead} (MC)", 200, -TMath::Pi(), TMath::Pi(), 200, 0, 50);
  fCorrelationMultiplicity = new TH2F("fCorrelationMultiplicity", ";MC tracks;Reco tracks", 100, -0.5, 99.5, 100, -0.5, 99.5);
  fYields = new TH3F("fYields", ";centrality;pT;eta", 100, 0, 100, 40, 0, 20, 100, -1, 1);
  fInvYield2 = new TH2F("fInvYield2", ";centrality;pT;1/pT dNch/dpT", 100, 0, 100, 80, 0, 20);

  if (!histogramsStr.Contains("4") && !histogramsStr.Contains("5") && !histogramsStr.Contains("6"))
  {
    fEventCount = new TH2F("fEventCount", ";step;event type;count", AliUEHist::fgkCFSteps+2, -2.5, -0.5 + AliUEHist::fgkCFSteps, 3, -0.5, 2.5);
    fEventCount->GetYaxis()->SetBinLabel(1, "ND");
    fEventCount->GetYaxis()->SetBinLabel(2, "SD");
    fEventCount->GetYaxis()->SetBinLabel(3, "DD");
  }
  else
  {
    fEventCount = new TH2F("fEventCount", ";step;centrality;count", AliUEHist::fgkCFSteps+2, -2.5, -0.5 + AliUEHist::fgkCFSteps, fNumberDensityPhi->GetEventHist()->GetNBins(1), fNumberDensityPhi->GetEventHist()->GetAxis(1, 0)->GetXbins()->GetArray());
  }
  
  fEventCountDifferential = new TH3F("fEventCountDifferential", ";p_{T,lead};step;event type", 100, 0, 50, AliUEHist::fgkCFSteps, -0.5, -0.5 + AliUEHist::fgkCFSteps, 3, -0.5, 2.5);
  fEventCountDifferential->GetZaxis()->SetBinLabel(1, "ND");
  fEventCountDifferential->GetZaxis()->SetBinLabel(2, "SD");
  fEventCountDifferential->GetZaxis()->SetBinLabel(3, "DD");
  
  fVertexContributors = new TH1F("fVertexContributors", ";contributors;count", 100, -0.5, 99.5);
  
  if (fNumberDensityPhi)
  {
    fCentralityDistribution = new TH1F("fCentralityDistribution", ";centrality;count", fNumberDensityPhi->GetEventHist()->GetNBins(1), fNumberDensityPhi->GetEventHist()->GetAxis(1, 0)->GetXbins()->GetArray());
    fCentralityCorrelation = new TH2F("fCentralityCorrelation", ";centrality;multiplicity", 404, 0, 101, 200, 0, 4000);
  }
  
  fITSClusterMap = new TH3F("fITSClusterMap", "; its cluster map; centrality; pT", 256, -0.5, 255.5, 20, 0, 100.001, 100, 0, 20);
  
  fControlConvResoncances = new TH2F("fControlConvResoncances", ";id;delta mass", 3, -0.5, 2.5, 100, -0.1, 0.1);
  
  TH1::AddDirectory(oldStatus);
}

//_____________________________________________________________________________
AliUEHistograms::AliUEHistograms(const AliUEHistograms &c) :
  TNamed(fName, fTitle),
  fNumberDensitypT(0),
  fSumpT(0),
  fNumberDensityPhi(0),
  fCorrelationpT(0),
  fCorrelationEta(0),
  fCorrelationPhi(0),
  fCorrelationR(0),
  fCorrelationLeading2Phi(0),
  fCorrelationMultiplicity(0),
  fYields(0),
  fInvYield2(0),
  fEventCount(0),
  fEventCountDifferential(0),
  fVertexContributors(0),
  fCentralityDistribution(0),
  fCentralityCorrelation(0),
  fITSClusterMap(0),
  fControlConvResoncances(0),
  fEfficiencyCorrectionTriggers(0),
  fEfficiencyCorrectionAssociated(0),
  fSelectCharge(0),
  fTriggerSelectCharge(0),
  fAssociatedSelectCharge(0),
  fTriggerRestrictEta(-1),
  fEtaOrdering(kFALSE),
  fCutConversions(kFALSE),
  fCutResonances(kFALSE),
  fRejectResonanceDaughters(-1),
  fOnlyOneEtaSide(0),
  fWeightPerEvent(kFALSE),
  fPtOrder(kTRUE),
  fTwoTrackCutMinRadius(0.8),
  fRunNumber(0),
  fMergeCount(1)
{
  //
  // AliUEHistograms copy constructor
  //

  fTwoTrackDistancePt[0] = 0;
  fTwoTrackDistancePt[1] = 0;

  ((AliUEHistograms &) c).Copy(*this);
}

//____________________________________________________________________
AliUEHistograms::~AliUEHistograms()
{
  // Destructor
  
  DeleteContainers();
}

void AliUEHistograms::DeleteContainers()
{
  if (fNumberDensitypT)
  {
    delete fNumberDensitypT;
    fNumberDensitypT = 0;
  }
  
  if (fSumpT)
  {
    delete fSumpT;
    fSumpT = 0;
  }
  
  if (fNumberDensityPhi)
  {
    delete fNumberDensityPhi;
    fNumberDensityPhi = 0;
  }
  
  if (fCorrelationpT)
  {
    delete fCorrelationpT;
    fCorrelationpT = 0;
  }
  
  if (fCorrelationEta)
  {
    delete fCorrelationEta;
    fCorrelationEta = 0;
  }
  
  if (fCorrelationPhi)
  {
    delete fCorrelationPhi;
    fCorrelationPhi = 0;
  }
  
  if (fCorrelationR)
  {
    delete fCorrelationR;
    fCorrelationR = 0;
  }

  if (fCorrelationLeading2Phi)
  {
    delete fCorrelationLeading2Phi;
    fCorrelationLeading2Phi = 0;
  }
  
  if (fCorrelationMultiplicity)
  {
    delete fCorrelationMultiplicity;
    fCorrelationMultiplicity = 0;
  }
  
  if (fYields)
  {
    delete fYields;
    fYields = 0;
  }
  
  if (fInvYield2)
  {
    delete fInvYield2;
    fInvYield2 = 0;
  }
  
  if (fEventCount)
  {
    delete fEventCount;
    fEventCount = 0;
  }

  if (fEventCountDifferential)
  {
    delete fEventCountDifferential;
    fEventCountDifferential = 0;
  }
  
  if (fVertexContributors)
  {
    delete fVertexContributors;
    fVertexContributors = 0;
  }
  
  if (fCentralityDistribution)
  {
    delete fCentralityDistribution;
    fCentralityDistribution = 0;
  }
  
  if (fCentralityCorrelation)
  {
    delete fCentralityCorrelation;
    fCentralityCorrelation = 0;
  }
  
  if (fITSClusterMap)
  {
    delete fITSClusterMap;
    fITSClusterMap = 0;
  }
  
  for (Int_t i=0; i<2; i++)
    if (fTwoTrackDistancePt[i])
    {
      delete fTwoTrackDistancePt[i];
      fTwoTrackDistancePt[i] = 0;
    }
    
  if (fControlConvResoncances)
  {
    delete fControlConvResoncances;
    fControlConvResoncances = 0;
  }
    
  if (fEfficiencyCorrectionTriggers)
  {
    delete fEfficiencyCorrectionTriggers;
    fEfficiencyCorrectionTriggers = 0;
  }
  
  if (fEfficiencyCorrectionAssociated)
  {
    delete fEfficiencyCorrectionAssociated;
    fEfficiencyCorrectionAssociated = 0;
  }
}

AliUEHist* AliUEHistograms::GetUEHist(Int_t id)
{
  // returns AliUEHist object, useful for loops
  
  switch (id)
  {
    case 0: return fNumberDensitypT; break;
    case 1: return fSumpT; break;
    case 2: return fNumberDensityPhi; break;
  }
  
  return 0;
}

//____________________________________________________________________
Int_t AliUEHistograms::CountParticles(TList* list, Float_t ptMin)
{
  // counts the number of particles in the list with a pT above ptMin
  // TODO eta cut needed here?
  
  Int_t count = 0;
  for (Int_t j=0; j<list->GetEntries(); j++)
    if (((AliVParticle*) list->At(j))->Pt() > ptMin)
      count++;
      
  return count;
}
  
//____________________________________________________________________
void AliUEHistograms::Fill(Int_t eventType, Float_t zVtx, AliUEHist::CFStep step, AliVParticle* leading, TList* toward, TList* away, TList* min, TList* max)
{
  // fills the UE event histograms
  //
  // this function needs the leading (track or jet or ...) and four lists of AliVParticles which contain the particles/tracks to be filled in the four regions
  
  // if leading is not set, just fill event statistics
  if (leading)
  {
    Int_t multiplicity = 0;
    
    // TODO configurable?
    Float_t ptMin = 0.15;
    if (leading->Pt() > ptMin)
      multiplicity++;
    
    multiplicity += CountParticles(toward, ptMin);
    multiplicity += CountParticles(away, ptMin);
    multiplicity += CountParticles(min, ptMin);
    multiplicity += CountParticles(max, ptMin);
     
    FillRegion(AliUEHist::kToward, zVtx, step, leading, toward, multiplicity);
    FillRegion(AliUEHist::kAway,   zVtx, step, leading, away, multiplicity);
    FillRegion(AliUEHist::kMin,    zVtx, step, leading, min, multiplicity);
    FillRegion(AliUEHist::kMax,    zVtx, step, leading, max, multiplicity);
 
    Double_t vars[3];
    vars[0] = leading->Pt();
    vars[1] = multiplicity;
    vars[2] = zVtx;
    for (Int_t i=0; i<fgkUEHists; i++)
      if (GetUEHist(i))
        GetUEHist(i)->GetEventHist()->Fill(vars, step);
  
    fEventCountDifferential->Fill(leading->Pt(), step, eventType);
  }
  
  FillEvent(eventType, step);
}
  
//____________________________________________________________________
void AliUEHistograms::FillRegion(AliUEHist::Region region, Float_t zVtx, AliUEHist::CFStep step, AliVParticle* leading, TList* list, Int_t multiplicity)
{
  // loops over AliVParticles in list and fills the given region at the given step
  //
  // See also Fill(...)

  for (Int_t i=0; i<list->GetEntries(); i++)
  {
    AliVParticle* particle = (AliVParticle*) list->At(i);
    
    Double_t vars[6];
    vars[0] = particle->Eta();
    vars[1] = particle->Pt();
    vars[2] = leading->Pt();
    vars[3] = multiplicity;
    vars[4] = leading->Phi() - particle->Phi();
    if (vars[4] > 1.5 * TMath::Pi()) 
      vars[4] -= TMath::TwoPi();
    if (vars[4] < -0.5 * TMath::Pi())
      vars[4] += TMath::TwoPi();
    vars[5] = zVtx;
    
    if (fNumberDensitypT)
      fNumberDensitypT->GetTrackHist(region)->Fill(vars, step);
      
    if (fSumpT)
      fSumpT->GetTrackHist(region)->Fill(vars, step, particle->Pt());
    
    // fill all in toward region (is anyway as function of delta phi!)
    if (fNumberDensityPhi)
      fNumberDensityPhi->GetTrackHist(AliUEHist::kToward)->Fill(vars, step);
  }
}

//____________________________________________________________________
void AliUEHistograms::Fill(AliVParticle* leadingMC, AliVParticle* leadingReco)
{
  // fills the correlation histograms
  
  if (leadingMC)
  {
    fCorrelationpT->Fill(leadingMC->Pt(), leadingReco->Pt());
    if (leadingMC->Pt() > 0.5)
    {
      fCorrelationEta->Fill(leadingMC->Eta(), leadingReco->Eta());
      fCorrelationPhi->Fill(leadingMC->Phi(), leadingReco->Phi());
    }
    
    Float_t phiDiff = leadingMC->Phi() - leadingReco->Phi();
    if (phiDiff > TMath::Pi())
      phiDiff -= TMath::TwoPi();
    if (phiDiff < -TMath::Pi())
      phiDiff += TMath::TwoPi();
      
    Float_t etaDiff = leadingMC->Eta() - leadingReco->Eta();
    
    fCorrelationR->Fill(TMath::Sqrt(phiDiff * phiDiff + etaDiff * etaDiff), leadingMC->Pt());
    fCorrelationLeading2Phi->Fill(phiDiff, leadingMC->Pt());
  }
  else
  {
    fCorrelationpT->Fill(1.0, leadingReco->Pt());
    if (leadingReco->Pt() > 0.5)
    {
      fCorrelationEta->Fill(0.0, leadingReco->Eta());
      fCorrelationPhi->Fill(0.0, leadingReco->Phi());
    }
  }
}

//____________________________________________________________________
void AliUEHistograms::FillCorrelations(Double_t centrality, Float_t zVtx, AliUEHist::CFStep step, TObjArray* particles, TObjArray* mixed, Float_t weight, Bool_t firstTime, Bool_t twoTrackEfficiencyCut, Float_t bSign, Float_t twoTrackEfficiencyCutValue, Bool_t applyEfficiency)
{
  // fills the fNumberDensityPhi histogram
  //
  // this function need a list of AliVParticles which contain the particles/tracks to be filled
  //
  // if mixed is non-0, mixed events are filled, the trigger particle is from particles, the associated from mixed
  // if weight < 0, then the pt of the associated particle is filled as weight
  
  Bool_t fillpT = kFALSE;
  if (weight < 0)
    fillpT = kTRUE;
  
  if (twoTrackEfficiencyCut && !fTwoTrackDistancePt[0])
  {
    // do not add this hists to the directory
    Bool_t oldStatus = TH1::AddDirectoryStatus();
    TH1::AddDirectory(kFALSE);

    fTwoTrackDistancePt[0] = new TH3F("fTwoTrackDistancePt[0]", ";#Delta#eta;#Delta#varphi^{*}_{min};#Delta p_{T}", 100, -0.15, 0.15, 100, -0.05, 0.05, 20, 0, 10);
    fTwoTrackDistancePt[1] = (TH3F*) fTwoTrackDistancePt[0]->Clone("fTwoTrackDistancePt[1]");

    TH1::AddDirectory(oldStatus);
  }

  // Eta() is extremely time consuming, therefore cache it for the inner loop here:
  TObjArray* input = (mixed) ? mixed : particles;
  TArrayF eta(input->GetEntriesFast());
  for (Int_t i=0; i<input->GetEntriesFast(); i++)
    eta[i] = ((AliVParticle*) input->UncheckedAt(i))->Eta();
  
  // if particles is not set, just fill event statistics
  if (particles)
  {
    Int_t jMax = particles->GetEntriesFast();
    if (mixed)
      jMax = mixed->GetEntriesFast();
    
    TH1* triggerWeighting = 0;
    if (fWeightPerEvent)
    {
      TAxis* axis = fNumberDensityPhi->GetTrackHist(AliUEHist::kToward)->GetGrid(0)->GetGrid()->GetAxis(2);
      triggerWeighting = new TH1F("triggerWeighting", "", axis->GetNbins(), axis->GetXbins()->GetArray());
    
      for (Int_t i=0; i<particles->GetEntriesFast(); i++)
      {
	AliVParticle* triggerParticle = (AliVParticle*) particles->UncheckedAt(i);
	
	// some optimization
	Float_t triggerEta = triggerParticle->Eta();

	if (fTriggerRestrictEta > 0 && TMath::Abs(triggerEta) > fTriggerRestrictEta)
	  continue;

	if (fOnlyOneEtaSide != 0)
	{
	  if (fOnlyOneEtaSide * triggerEta < 0)
	    continue;
	}
	
	if (fTriggerSelectCharge != 0)
	  if (triggerParticle->Charge() * fTriggerSelectCharge < 0)
	    continue;
	
	triggerWeighting->Fill(triggerParticle->Pt());
      }
    }
    
    // identify K, Lambda candidates and flag those particles
    // a TObject bit is used for this
    const UInt_t kResonanceDaughterFlag = 1 << 14;
    if (fRejectResonanceDaughters > 0)
    {
      Double_t resonanceMass = -1;
      Double_t massDaughter1 = -1;
      Double_t massDaughter2 = -1;
      const Double_t interval = 0.02;
      
      switch (fRejectResonanceDaughters)
      {
	case 1: resonanceMass = 1.2; massDaughter1 = 0.1396; massDaughter2 = 0.9383; break; // method test
	case 2: resonanceMass = 0.4976; massDaughter1 = 0.1396; massDaughter2 = massDaughter1; break; // k0
	case 3: resonanceMass = 1.115; massDaughter1 = 0.1396; massDaughter2 = 0.9383; break; // lambda
	default: AliFatal(Form("Invalid setting %d", fRejectResonanceDaughters));
      }

      for (Int_t i=0; i<particles->GetEntriesFast(); i++)
	particles->UncheckedAt(i)->ResetBit(kResonanceDaughterFlag);
      if (mixed)
	for (Int_t i=0; i<jMax; i++)
	  mixed->UncheckedAt(i)->ResetBit(kResonanceDaughterFlag);
      
      for (Int_t i=0; i<particles->GetEntriesFast(); i++)
      {
	AliVParticle* triggerParticle = (AliVParticle*) particles->UncheckedAt(i);
	
	for (Int_t j=0; j<jMax; j++)
	{
	  if (!mixed && i == j)
	    continue;
	
	  AliVParticle* particle = 0;
	  if (!mixed)
	    particle = (AliVParticle*) particles->UncheckedAt(j);
	  else
	    particle = (AliVParticle*) mixed->UncheckedAt(j);
	  
	  // check if both particles point to the same element (does not occur for mixed events, but if subsets are mixed within the same event)
	  if (mixed && triggerParticle->IsEqual(particle))
	    continue;
	 
	  if (triggerParticle->Charge() * particle->Charge() > 0)
	    continue;
      
	  Float_t mass = GetInvMassSquaredCheap(triggerParticle->Pt(), triggerParticle->Eta(), triggerParticle->Phi(), particle->Pt(), particle->Eta(), particle->Phi(), massDaughter1, massDaughter2);
	      
	  if (TMath::Abs(mass - resonanceMass*resonanceMass) < interval*5)
	  {
	    mass = GetInvMassSquared(triggerParticle->Pt(), triggerParticle->Eta(), triggerParticle->Phi(), particle->Pt(), particle->Eta(), particle->Phi(), massDaughter1, massDaughter2);

	    if (mass > (resonanceMass-interval)*(resonanceMass-interval) && mass < (resonanceMass+interval)*(resonanceMass+interval))
	    {
	      triggerParticle->SetBit(kResonanceDaughterFlag);
	      particle->SetBit(kResonanceDaughterFlag);
	      
// 	      Printf("Flagged %d %d %f", i, j, TMath::Sqrt(mass));
	    }
	  }
	}
      }
    }
    
    for (Int_t i=0; i<particles->GetEntriesFast(); i++)
    {
      AliVParticle* triggerParticle = (AliVParticle*) particles->UncheckedAt(i);
      
      // some optimization
      Float_t triggerEta = triggerParticle->Eta();
      
      if (fTriggerRestrictEta > 0 && TMath::Abs(triggerEta) > fTriggerRestrictEta)
	continue;

      if (fOnlyOneEtaSide != 0)
      {
	if (fOnlyOneEtaSide * triggerEta < 0)
	  continue;
      }
      
      if (fTriggerSelectCharge != 0)
	if (triggerParticle->Charge() * fTriggerSelectCharge < 0)
	  continue;
	
      if (fRejectResonanceDaughters > 0)
	if (triggerParticle->TestBit(kResonanceDaughterFlag))
	{
// 	  Printf("Skipped i=%d", i);
	  continue;
	}
	
      for (Int_t j=0; j<jMax; j++)
      {
        if (!mixed && i == j)
          continue;
      
        AliVParticle* particle = 0;
        if (!mixed)
          particle = (AliVParticle*) particles->UncheckedAt(j);
        else
          particle = (AliVParticle*) mixed->UncheckedAt(j);
        
        // check if both particles point to the same element (does not occur for mixed events, but if subsets are mixed within the same event)
        if (mixed && triggerParticle->IsEqual(particle))
          continue;
        
        if (fPtOrder)
	  if (particle->Pt() >= triggerParticle->Pt())
	    continue;
	
	if (fAssociatedSelectCharge != 0)
	  if (particle->Charge() * fAssociatedSelectCharge < 0)
	    continue;

        if (fSelectCharge > 0)
        {
          // skip like sign
          if (fSelectCharge == 1 && particle->Charge() * triggerParticle->Charge() > 0)
            continue;
            
          // skip unlike sign
          if (fSelectCharge == 2 && particle->Charge() * triggerParticle->Charge() < 0)
            continue;
        }
        
	if (fEtaOrdering)
	{
	  if (triggerEta < 0 && eta[j] < triggerEta)
	    continue;
	  if (triggerEta > 0 && eta[j] > triggerEta)
	    continue;
	}

	if (fRejectResonanceDaughters > 0)
	  if (particle->TestBit(kResonanceDaughterFlag))
	  {
// 	    Printf("Skipped j=%d", j);
	    continue;
	  }

	// conversions
	if (fCutConversions && particle->Charge() * triggerParticle->Charge() < 0)
	{
	  Float_t mass = GetInvMassSquaredCheap(triggerParticle->Pt(), triggerEta, triggerParticle->Phi(), particle->Pt(), eta[j], particle->Phi(), 0.510e-3, 0.510e-3);
	  
	  if (mass < 0.1)
	  {
	    mass = GetInvMassSquared(triggerParticle->Pt(), triggerEta, triggerParticle->Phi(), particle->Pt(), eta[j], particle->Phi(), 0.510e-3, 0.510e-3);
	    
	    fControlConvResoncances->Fill(0.0, mass);

	    if (mass < 0.04*0.04) 
	      continue;
	  }
	}
	
	// K0s
	if (fCutResonances && particle->Charge() * triggerParticle->Charge() < 0)
	{
	  Float_t mass = GetInvMassSquaredCheap(triggerParticle->Pt(), triggerEta, triggerParticle->Phi(), particle->Pt(), eta[j], particle->Phi(), 0.1396, 0.1396);
	  
	  const Float_t kK0smass = 0.4976;
	  
	  if (TMath::Abs(mass - kK0smass*kK0smass) < 0.1)
	  {
	    mass = GetInvMassSquared(triggerParticle->Pt(), triggerEta, triggerParticle->Phi(), particle->Pt(), eta[j], particle->Phi(), 0.1396, 0.1396);
	    
	    fControlConvResoncances->Fill(1, mass - kK0smass*kK0smass);

	    if (mass > (kK0smass-0.02)*(kK0smass-0.02) && mass < (kK0smass+0.02)*(kK0smass+0.02))
	      continue;
	  }
	}
	
	// Lambda
	if (fCutResonances && particle->Charge() * triggerParticle->Charge() < 0)
	{
	  Float_t mass1 = GetInvMassSquaredCheap(triggerParticle->Pt(), triggerEta, triggerParticle->Phi(), particle->Pt(), eta[j], particle->Phi(), 0.1396, 0.9383);
	  Float_t mass2 = GetInvMassSquaredCheap(triggerParticle->Pt(), triggerEta, triggerParticle->Phi(), particle->Pt(), eta[j], particle->Phi(), 0.9383, 0.1396);
	  
	  const Float_t kLambdaMass = 1.115;

	  if (TMath::Abs(mass1 - kLambdaMass*kLambdaMass) < 0.1)
	  {
	    mass1 = GetInvMassSquared(triggerParticle->Pt(), triggerEta, triggerParticle->Phi(), particle->Pt(), eta[j], particle->Phi(), 0.1396, 0.9383);

	    fControlConvResoncances->Fill(2, mass1 - kLambdaMass*kLambdaMass);
	    
	    if (mass1 > (kLambdaMass-0.02)*(kLambdaMass-0.02) && mass1 < (kLambdaMass+0.02)*(kLambdaMass+0.02))
	      continue;
	  }
	  if (TMath::Abs(mass2 - kLambdaMass*kLambdaMass) < 0.1)
	  {
	    mass2 = GetInvMassSquared(triggerParticle->Pt(), triggerEta, triggerParticle->Phi(), particle->Pt(), eta[j], particle->Phi(), 0.9383, 0.1396);

	    fControlConvResoncances->Fill(2, mass2 - kLambdaMass*kLambdaMass);

	    if (mass2 > (kLambdaMass-0.02)*(kLambdaMass-0.02) && mass2 < (kLambdaMass+0.02)*(kLambdaMass+0.02))
	      continue;
	  }
	}

	if (twoTrackEfficiencyCut)
	{
	  // the variables & cuthave been developed by the HBT group 
	  // see e.g. https://indico.cern.ch/materialDisplay.py?contribId=36&sessionId=6&materialId=slides&confId=142700

	  Float_t phi1 = triggerParticle->Phi();
	  Float_t pt1 = triggerParticle->Pt();
	  Float_t charge1 = triggerParticle->Charge();
	    
	  Float_t phi2 = particle->Phi();
	  Float_t pt2 = particle->Pt();
	  Float_t charge2 = particle->Charge();
	      
	  Float_t deta = triggerEta - eta[j];
	      
	  // optimization
	  if (TMath::Abs(deta) < twoTrackEfficiencyCutValue * 2.5 * 3)
	  {
	    // check first boundaries to see if is worth to loop and find the minimum
	    Float_t dphistar1 = GetDPhiStar(phi1, pt1, charge1, phi2, pt2, charge2, fTwoTrackCutMinRadius, bSign);
	    Float_t dphistar2 = GetDPhiStar(phi1, pt1, charge1, phi2, pt2, charge2, 2.5, bSign);
	    
	    const Float_t kLimit = twoTrackEfficiencyCutValue * 3;

	    Float_t dphistarminabs = 1e5;
	    Float_t dphistarmin = 1e5;
	    if (TMath::Abs(dphistar1) < kLimit || TMath::Abs(dphistar2) < kLimit || dphistar1 * dphistar2 < 0)
	    {
	      for (Double_t rad=fTwoTrackCutMinRadius; rad<2.51; rad+=0.01) 
	      {
		Float_t dphistar = GetDPhiStar(phi1, pt1, charge1, phi2, pt2, charge2, rad, bSign);

		Float_t dphistarabs = TMath::Abs(dphistar);
		
		if (dphistarabs < dphistarminabs)
		{
		  dphistarmin = dphistar;
		  dphistarminabs = dphistarabs;
		}
	      }
	      
	      fTwoTrackDistancePt[0]->Fill(deta, dphistarmin, TMath::Abs(pt1 - pt2));
	      
	      if (dphistarminabs < twoTrackEfficiencyCutValue && TMath::Abs(deta) < twoTrackEfficiencyCutValue)
	      {
// 		Printf("Removed track pair %d %d with %f %f %f %f %f %f %f %f %f", i, j, deta, dphistarminabs, phi1, pt1, charge1, phi2, pt2, charge2, bSign);
		continue;
	      }

    	      fTwoTrackDistancePt[1]->Fill(deta, dphistarmin, TMath::Abs(pt1 - pt2));
	    }
	  }
	}
        
        Double_t vars[6];
        vars[0] = triggerEta - eta[j];
        vars[1] = particle->Pt();
        vars[2] = triggerParticle->Pt();
        vars[3] = centrality;
        vars[4] = triggerParticle->Phi() - particle->Phi();
        if (vars[4] > 1.5 * TMath::Pi()) 
          vars[4] -= TMath::TwoPi();
        if (vars[4] < -0.5 * TMath::Pi())
          vars[4] += TMath::TwoPi();
	vars[5] = zVtx;
	
	if (fillpT)
	  weight = particle->Pt();
	
	Double_t useWeight = weight;
	if (applyEfficiency)
	{
	  if (fEfficiencyCorrectionAssociated)
	  {
	    Int_t effVars[4];
	    // associated particle
	    effVars[0] = fEfficiencyCorrectionAssociated->GetAxis(0)->FindBin(eta[j]);
	    effVars[1] = fEfficiencyCorrectionAssociated->GetAxis(1)->FindBin(vars[1]); //pt
	    effVars[2] = fEfficiencyCorrectionAssociated->GetAxis(2)->FindBin(vars[3]); //centrality
	    effVars[3] = fEfficiencyCorrectionAssociated->GetAxis(3)->FindBin(vars[5]); //zVtx
	    
	    // 	  Printf("%d %d %d %d %f", effVars[0], effVars[1], effVars[2], effVars[3], fEfficiencyCorrectionAssociated->GetBinContent(effVars));
	  
	    useWeight *= fEfficiencyCorrectionAssociated->GetBinContent(effVars);
	  }
	  if (fEfficiencyCorrectionTriggers)
	  {
	    Int_t effVars[4];

	    effVars[0] = fEfficiencyCorrectionTriggers->GetAxis(0)->FindBin(triggerEta);
	    effVars[1] = fEfficiencyCorrectionTriggers->GetAxis(1)->FindBin(vars[2]); //pt
	    effVars[2] = fEfficiencyCorrectionTriggers->GetAxis(2)->FindBin(vars[3]); //centrality
	    effVars[3] = fEfficiencyCorrectionTriggers->GetAxis(3)->FindBin(vars[5]); //zVtx
	    useWeight *= fEfficiencyCorrectionTriggers->GetBinContent(effVars);
	  }
	}

	if (fWeightPerEvent)
	{
	  Int_t weightBin = triggerWeighting->GetXaxis()->FindBin(vars[2]);
// 	  Printf("Using weight %f", triggerWeighting->GetBinContent(weightBin));
	  useWeight /= triggerWeighting->GetBinContent(weightBin);
	}
    
        // fill all in toward region and do not use the other regions
	fNumberDensityPhi->GetTrackHist(AliUEHist::kToward)->Fill(vars, step, useWeight);

// 	Printf("%.2f %.2f --> %.2f", triggerEta, eta[j], vars[0]);
      }
 
      if (firstTime)
      {
        // once per trigger particle
        Double_t vars[3];
        vars[0] = triggerParticle->Pt();
        vars[1] = centrality;
	vars[2] = zVtx;

	Double_t useWeight = 1;
	if (fEfficiencyCorrectionTriggers && applyEfficiency)
	{
	  Int_t effVars[4];
	  
	  // trigger particle
	  effVars[0] = fEfficiencyCorrectionTriggers->GetAxis(0)->FindBin(triggerEta);
	  effVars[1] = fEfficiencyCorrectionTriggers->GetAxis(1)->FindBin(vars[0]); //pt
	  effVars[2] = fEfficiencyCorrectionTriggers->GetAxis(2)->FindBin(vars[1]); //centrality
	  effVars[3] = fEfficiencyCorrectionTriggers->GetAxis(3)->FindBin(vars[2]); //zVtx
	  useWeight *= fEfficiencyCorrectionTriggers->GetBinContent(effVars);
	}

	if (TMath::Abs(triggerEta) < 0.8 && triggerParticle->Pt() > 0)
	  fInvYield2->Fill(centrality, triggerParticle->Pt(), useWeight / triggerParticle->Pt());

	if (fWeightPerEvent)
	{
	  // leads effectively to a filling of one entry per filled trigger particle pT bin
	  Int_t weightBin = triggerWeighting->GetXaxis()->FindBin(vars[0]);
// 	  Printf("Using weight %f", triggerWeighting->GetBinContent(weightBin));
	  useWeight /= triggerWeighting->GetBinContent(weightBin);
	}
	
        fNumberDensityPhi->GetEventHist()->Fill(vars, step, useWeight);

	// QA
        fCorrelationpT->Fill(centrality, triggerParticle->Pt());
        fCorrelationEta->Fill(centrality, triggerEta);
        fCorrelationPhi->Fill(centrality, triggerParticle->Phi());
	fYields->Fill(centrality, triggerParticle->Pt(), triggerEta);
	
/*        if (dynamic_cast<AliAODTrack*>(triggerParticle))
          fITSClusterMap->Fill(((AliAODTrack*) triggerParticle)->GetITSClusterMap(), centrality, triggerParticle->Pt());*/
      }
    }
    
    if (triggerWeighting)
    {
      delete triggerWeighting;
      triggerWeighting = 0;
    }
  }
  
  fCentralityDistribution->Fill(centrality);
  fCentralityCorrelation->Fill(centrality, particles->GetEntriesFast());
  FillEvent(centrality, step);
}
  
//____________________________________________________________________
void AliUEHistograms::FillTrackingEfficiency(TObjArray* mc, TObjArray* recoPrim, TObjArray* recoAll, TObjArray* recoPrimPID, TObjArray* recoAllPID, TObjArray* fake, Int_t particleType, Double_t centrality, Double_t zVtx)
{
  // fills the tracking efficiency objects
  //
  // mc: all primary MC particles
  // recoPrim: reconstructed primaries (again MC particles)
  // recoAll: reconstructed (again MC particles)
  // recoPrim: reconstructed primaries with checks on PID (again MC particles)
  // recoAll: reconstructed with checks on PID (again MC particles)
  // particleType is: 0 for pion, 1 for kaon, 2 for proton, 3 for others
 
  for (Int_t step=0; step<6; step++)
  {
    TObjArray* list = mc;
    if (step == 1)
      list = recoPrim;
    else if (step == 2)
      list = recoAll;
    else if (step == 3)
      list = recoPrimPID;
    else if (step == 4)
      list = recoAllPID;
    else if (step == 5)
      list = fake;
    
    if (!list)
      continue;

    for (Int_t i=0; i<list->GetEntriesFast(); i++)
    {
      AliVParticle* particle = (AliVParticle*) list->UncheckedAt(i);
      Double_t vars[5];
      vars[0] = particle->Eta();
      vars[1] = particle->Pt();
      vars[2] = particleType;
      vars[3] = centrality;
      vars[4] = zVtx;
      
      for (Int_t j=0; j<fgkUEHists; j++)
        if (GetUEHist(j))
          GetUEHist(j)->GetTrackHistEfficiency()->Fill(vars, step);
    }
  }
}

//____________________________________________________________________
void AliUEHistograms::FillFakePt(TObjArray* fake, Double_t centrality)
{
  TObjArray* tracksReco = (TObjArray*) fake->At(0);
  TObjArray* tracksMC = (TObjArray*) fake->At(1);
  
  if (tracksReco->GetEntriesFast() != tracksMC->GetEntriesFast())
    AliFatal(Form("Inconsistent arrays: %d vs %d", tracksReco->GetEntriesFast(), tracksMC->GetEntriesFast()));
  
  for (Int_t i=0; i<tracksReco->GetEntriesFast(); i++)
  {
    AliVParticle* particle1 = (AliVParticle*) tracksReco->At(i);
    AliVParticle* particle2 = (AliVParticle*) tracksMC->At(i);
    Double_t vars[3];
    vars[0] = particle1->Pt();
    vars[1] = particle2->Pt();
    vars[2] = centrality;
    for (Int_t j=0; j<fgkUEHists; j++)
      if (GetUEHist(j))
        GetUEHist(j)->GetMCRecoPtCorrelation()->Fill(vars[0],vars[1],vars[2]);
  }
}

//____________________________________________________________________
void AliUEHistograms::FillEvent(Int_t eventType, Int_t step)
{
  // fills the number of events at the given step and the given enty type
  //
  // WARNING: This function is called from Fill, so only call it for steps where Fill is not called
  
  fEventCount->Fill(step, eventType);
}

//____________________________________________________________________
void AliUEHistograms::FillEvent(Double_t centrality, Int_t step)
{
  // fills the number of events at the given step and the given centrality
  //
  // WARNING: This function is called from Fill, so only call it for steps where Fill is not called
  
  fEventCount->Fill(step, centrality);
}

//____________________________________________________________________
void AliUEHistograms::SetEtaRange(Float_t etaMin, Float_t etaMax)
{
  // sets eta min and max for all contained AliUEHist classes
  
  for (Int_t i=0; i<fgkUEHists; i++)
    if (GetUEHist(i))
      GetUEHist(i)->SetEtaRange(etaMin, etaMax);
}

//____________________________________________________________________
void AliUEHistograms::SetPtRange(Float_t ptMin, Float_t ptMax)
{
  // sets pT min and max for all contained AliUEHist classes
  
  for (Int_t i=0; i<fgkUEHists; i++)
    if (GetUEHist(i))
      GetUEHist(i)->SetPtRange(ptMin, ptMax);
}

//____________________________________________________________________
void AliUEHistograms::SetPartSpecies(Int_t species)
{
  // sets PartSpecie for all contained AliUEHist classes
  
  for (Int_t i=0; i<fgkUEHists; i++)
    if (GetUEHist(i))
      GetUEHist(i)->SetPartSpecies(species);
}

//____________________________________________________________________
void AliUEHistograms::SetZVtxRange(Float_t min, Float_t max)
{
  // sets pT min and max for all contained AliUEHist classes
  
  for (Int_t i=0; i<fgkUEHists; i++)
    if (GetUEHist(i))
      GetUEHist(i)->SetZVtxRange(min, max);
}

//____________________________________________________________________
void AliUEHistograms::SetContaminationEnhancement(TH1F* hist)
{
  // sets the contamination enhancement histogram in all contained AliUEHist classes
  
  for (Int_t i=0; i<fgkUEHists; i++)
    if (GetUEHist(i))
      GetUEHist(i)->SetContaminationEnhancement(hist);
}  

//____________________________________________________________________
void AliUEHistograms::SetCombineMinMax(Bool_t flag)
{
  // sets pT min and max for all contained AliUEHist classes
  
  for (Int_t i=0; i<fgkUEHists; i++)
    if (GetUEHist(i))
      GetUEHist(i)->SetCombineMinMax(flag);
}

//____________________________________________________________________
void AliUEHistograms::SetTrackEtaCut(Float_t value)
{
  // sets track eta cut for all contained AliUEHist classes
  
  for (Int_t i=0; i<fgkUEHists; i++)
    if (GetUEHist(i))
      GetUEHist(i)->SetTrackEtaCut(value);
}

//____________________________________________________________________
void AliUEHistograms::SetWeightPerEvent(Bool_t flag)
{
  // sets fWeightPerEvent for all contained AliUEHist classes
  
  fWeightPerEvent = flag;
  
  for (Int_t i=0; i<fgkUEHists; i++)
    if (GetUEHist(i))
      GetUEHist(i)->SetWeightPerEvent(fWeightPerEvent);
}

//____________________________________________________________________
void AliUEHistograms::Correct(AliUEHistograms* corrections)
{
  // corrects the contained histograms by calling AliUEHist::Correct
  
  for (Int_t i=0; i<fgkUEHists; i++)
    if (GetUEHist(i))
      GetUEHist(i)->Correct(corrections->GetUEHist(i));
}

//____________________________________________________________________
AliUEHistograms &AliUEHistograms::operator=(const AliUEHistograms &c)
{
  // assigment operator

  DeleteContainers();

  if (this != &c)
    ((AliUEHistograms &) c).Copy(*this);

  return *this;
}

//____________________________________________________________________
void AliUEHistograms::Copy(TObject& c) const
{
  // copy function

  AliUEHistograms& target = (AliUEHistograms &) c;

  if (fNumberDensitypT)
    target.fNumberDensitypT = dynamic_cast<AliUEHist*> (fNumberDensitypT->Clone());

  if (fSumpT)
    target.fSumpT = dynamic_cast<AliUEHist*> (fSumpT->Clone());

  if (fNumberDensityPhi)
    target.fNumberDensityPhi = dynamic_cast<AliUEHist*> (fNumberDensityPhi->Clone());

  if (fCorrelationpT)
    target.fCorrelationpT = dynamic_cast<TH2F*> (fCorrelationpT->Clone());

  if (fCorrelationEta)
    target.fCorrelationEta = dynamic_cast<TH2F*> (fCorrelationEta->Clone());

  if (fCorrelationPhi)
    target.fCorrelationPhi = dynamic_cast<TH2F*> (fCorrelationPhi->Clone());

  if (fCorrelationR)
    target.fCorrelationR = dynamic_cast<TH2F*> (fCorrelationR->Clone());

  if (fCorrelationLeading2Phi)
    target.fCorrelationLeading2Phi = dynamic_cast<TH2F*> (fCorrelationLeading2Phi->Clone());

  if (fCorrelationMultiplicity)
    target.fCorrelationMultiplicity = dynamic_cast<TH2F*> (fCorrelationMultiplicity->Clone());
  
  if (fYields)
    target.fYields = dynamic_cast<TH3F*> (fYields->Clone());
  
  if (fInvYield2)
    target.fInvYield2 = dynamic_cast<TH2F*> (fInvYield2->Clone());
  
  if (fEventCount)
    target.fEventCount = dynamic_cast<TH2F*> (fEventCount->Clone());

  if (fEventCountDifferential)
    target.fEventCountDifferential = dynamic_cast<TH3F*> (fEventCountDifferential->Clone());
    
  if (fVertexContributors)
    target.fVertexContributors = dynamic_cast<TH1F*> (fVertexContributors->Clone());

  if (fCentralityDistribution)
    target.fCentralityDistribution = dynamic_cast<TH1F*> (fCentralityDistribution->Clone());
    
  if (fCentralityCorrelation)
    target.fCentralityCorrelation = dynamic_cast<TH2F*> (fCentralityCorrelation->Clone());

  if (fITSClusterMap)
    target.fITSClusterMap = dynamic_cast<TH3F*> (fITSClusterMap->Clone());
  
  if (fControlConvResoncances)
    target.fControlConvResoncances = dynamic_cast<TH2F*> (fControlConvResoncances->Clone());
  
  for (Int_t i=0; i<2; i++)
    if (fTwoTrackDistancePt[i])
      target.fTwoTrackDistancePt[i] = dynamic_cast<TH3F*> (fTwoTrackDistancePt[i]->Clone());

  if (fEfficiencyCorrectionTriggers)
    target.fEfficiencyCorrectionTriggers = dynamic_cast<THnF*> (fEfficiencyCorrectionTriggers->Clone());
 
 if (fEfficiencyCorrectionAssociated)
    target.fEfficiencyCorrectionAssociated = dynamic_cast<THnF*> (fEfficiencyCorrectionAssociated->Clone());
    
  target.fSelectCharge = fSelectCharge;
  target.fTriggerSelectCharge = fTriggerSelectCharge;
  target.fAssociatedSelectCharge = fAssociatedSelectCharge;
  target.fTriggerRestrictEta = fTriggerRestrictEta;
  target.fEtaOrdering = fEtaOrdering;
  target.fCutConversions = fCutConversions;
  target.fCutResonances = fCutResonances;
  target.fOnlyOneEtaSide = fOnlyOneEtaSide;
  target.fWeightPerEvent = fWeightPerEvent;
  target.fRunNumber = fRunNumber;
  target.fMergeCount = fMergeCount;
  target.fWeightPerEvent = fWeightPerEvent;
  target.fPtOrder = fPtOrder;
  target.fTwoTrackCutMinRadius = fTwoTrackCutMinRadius;
}

//____________________________________________________________________
Long64_t AliUEHistograms::Merge(TCollection* list)
{
  // Merge a list of AliUEHistograms objects with this (needed for
  // PROOF). 
  // Returns the number of merged objects (including this).

  if (!list)
    return 0;
  
  if (list->IsEmpty())
    return 1;

  TIterator* iter = list->MakeIterator();
  TObject* obj;

  // collections of objects
  const Int_t kMaxLists = 20;
  TList* lists[kMaxLists];
  
  for (Int_t i=0; i<kMaxLists; i++)
    lists[i] = new TList;
  
  Int_t count = 0;
  while ((obj = iter->Next())) {
    
    AliUEHistograms* entry = dynamic_cast<AliUEHistograms*> (obj);
    if (entry == 0) 
      continue;

    if (entry->fNumberDensitypT)
      lists[0]->Add(entry->fNumberDensitypT);
    if (entry->fSumpT)
      lists[1]->Add(entry->fSumpT);
    if (entry->fNumberDensityPhi)
      lists[2]->Add(entry->fNumberDensityPhi);
    lists[3]->Add(entry->fCorrelationpT);
    lists[4]->Add(entry->fCorrelationEta);
    lists[5]->Add(entry->fCorrelationPhi);
    lists[6]->Add(entry->fCorrelationR);
    lists[7]->Add(entry->fCorrelationLeading2Phi);
    lists[8]->Add(entry->fCorrelationMultiplicity);
    lists[9]->Add(entry->fEventCount);
    lists[10]->Add(entry->fEventCountDifferential);
    lists[11]->Add(entry->fVertexContributors);
    lists[12]->Add(entry->fCentralityDistribution);
    lists[13]->Add(entry->fITSClusterMap);
    if (entry->fTwoTrackDistancePt[0])
      lists[14]->Add(entry->fTwoTrackDistancePt[0]);
    if (entry->fTwoTrackDistancePt[1])
      lists[15]->Add(entry->fTwoTrackDistancePt[1]);
    if (entry->fCentralityCorrelation)
      lists[16]->Add(entry->fCentralityCorrelation);
    if (entry->fYields)
      lists[17]->Add(entry->fYields);
    if (entry->fInvYield2)
      lists[18]->Add(entry->fInvYield2);
    if (entry->fControlConvResoncances)
      lists[19]->Add(entry->fControlConvResoncances);

    fMergeCount += entry->fMergeCount;

    count++;
  }
    
  if (fNumberDensitypT)
    fNumberDensitypT->Merge(lists[0]);
  if (fSumpT)
    fSumpT->Merge(lists[1]);
  if (fNumberDensityPhi)
    fNumberDensityPhi->Merge(lists[2]);
  fCorrelationpT->Merge(lists[3]);
  fCorrelationEta->Merge(lists[4]);
  fCorrelationPhi->Merge(lists[5]);
  fCorrelationR->Merge(lists[6]);
  fCorrelationLeading2Phi->Merge(lists[7]);
  fCorrelationMultiplicity->Merge(lists[8]);
  fEventCount->Merge(lists[9]);
  fEventCountDifferential->Merge(lists[10]);
  fVertexContributors->Merge(lists[11]);
  fCentralityDistribution->Merge(lists[12]);
  fITSClusterMap->Merge(lists[13]);
  if (fTwoTrackDistancePt[0] && lists[14]->GetEntries() > 0)
    fTwoTrackDistancePt[0]->Merge(lists[14]);
  if (fTwoTrackDistancePt[1] && lists[15]->GetEntries() > 0)
    fTwoTrackDistancePt[1]->Merge(lists[15]);
  if (fCentralityCorrelation)
    fCentralityCorrelation->Merge(lists[16]);
  if (fYields && lists[17]->GetEntries() > 0)
    fYields->Merge(lists[17]);
  if (fInvYield2 && lists[18]->GetEntries() > 0)
    fInvYield2->Merge(lists[18]);
  if (fControlConvResoncances && lists[19]->GetEntries() > 0)
    fControlConvResoncances->Merge(lists[19]);
  
  for (Int_t i=0; i<kMaxLists; i++)
    delete lists[i];
  
  return count+1;
}

void AliUEHistograms::CopyReconstructedData(AliUEHistograms* from)
{
  // copies those histograms extracted from ESD to this object
  
  for (Int_t i=0; i<fgkUEHists; i++)
    if (GetUEHist(i))
      GetUEHist(i)->CopyReconstructedData(from->GetUEHist(i));
}

void AliUEHistograms::DeepCopy(AliUEHistograms* from)
{
  // copies the entries of this object's members from the object <from> to this object

  for (Int_t i=0; i<fgkUEHists; i++)
    if (GetUEHist(i) && from->GetUEHist(i))
      GetUEHist(i)->DeepCopy(from->GetUEHist(i));
}

void AliUEHistograms::ExtendTrackingEfficiency(Bool_t verbose)
{
  // delegates to AliUEHists

  for (Int_t i=0; i<fgkUEHists; i++)
    if (GetUEHist(i))
      GetUEHist(i)->ExtendTrackingEfficiency(verbose);
}

void AliUEHistograms::Scale(Double_t factor)
{
  // scales all contained histograms by the given factor
  
  for (Int_t i=0; i<fgkUEHists; i++)
    if (GetUEHist(i))
      GetUEHist(i)->Scale(factor);
      
  TList list;
  list.Add(fCorrelationpT);
  list.Add(fCorrelationEta);
  list.Add(fCorrelationPhi);
  list.Add(fCorrelationR);
  list.Add(fCorrelationLeading2Phi);
  list.Add(fCorrelationMultiplicity);
  list.Add(fYields);
  list.Add(fInvYield2);
  list.Add(fEventCount);
  list.Add(fEventCountDifferential);
  list.Add(fVertexContributors);
  list.Add(fCentralityDistribution);
  list.Add(fCentralityCorrelation);
  list.Add(fITSClusterMap);
  list.Add(fTwoTrackDistancePt[0]);
  list.Add(fTwoTrackDistancePt[1]);
  list.Add(fControlConvResoncances);
  
  for (Int_t i=0; i<list.GetEntries(); i++)
    ((TH1*) list.At(i))->Scale(factor);
}

void AliUEHistograms::Reset()
{
  // delegates to AliUEHists

  for (Int_t i=0; i<fgkUEHists; i++)
    if (GetUEHist(i))
      GetUEHist(i)->Reset();
}
 AliUEHistograms.cxx:1
 AliUEHistograms.cxx:2
 AliUEHistograms.cxx:3
 AliUEHistograms.cxx:4
 AliUEHistograms.cxx:5
 AliUEHistograms.cxx:6
 AliUEHistograms.cxx:7
 AliUEHistograms.cxx:8
 AliUEHistograms.cxx:9
 AliUEHistograms.cxx:10
 AliUEHistograms.cxx:11
 AliUEHistograms.cxx:12
 AliUEHistograms.cxx:13
 AliUEHistograms.cxx:14
 AliUEHistograms.cxx:15
 AliUEHistograms.cxx:16
 AliUEHistograms.cxx:17
 AliUEHistograms.cxx:18
 AliUEHistograms.cxx:19
 AliUEHistograms.cxx:20
 AliUEHistograms.cxx:21
 AliUEHistograms.cxx:22
 AliUEHistograms.cxx:23
 AliUEHistograms.cxx:24
 AliUEHistograms.cxx:25
 AliUEHistograms.cxx:26
 AliUEHistograms.cxx:27
 AliUEHistograms.cxx:28
 AliUEHistograms.cxx:29
 AliUEHistograms.cxx:30
 AliUEHistograms.cxx:31
 AliUEHistograms.cxx:32
 AliUEHistograms.cxx:33
 AliUEHistograms.cxx:34
 AliUEHistograms.cxx:35
 AliUEHistograms.cxx:36
 AliUEHistograms.cxx:37
 AliUEHistograms.cxx:38
 AliUEHistograms.cxx:39
 AliUEHistograms.cxx:40
 AliUEHistograms.cxx:41
 AliUEHistograms.cxx:42
 AliUEHistograms.cxx:43
 AliUEHistograms.cxx:44
 AliUEHistograms.cxx:45
 AliUEHistograms.cxx:46
 AliUEHistograms.cxx:47
 AliUEHistograms.cxx:48
 AliUEHistograms.cxx:49
 AliUEHistograms.cxx:50
 AliUEHistograms.cxx:51
 AliUEHistograms.cxx:52
 AliUEHistograms.cxx:53
 AliUEHistograms.cxx:54
 AliUEHistograms.cxx:55
 AliUEHistograms.cxx:56
 AliUEHistograms.cxx:57
 AliUEHistograms.cxx:58
 AliUEHistograms.cxx:59
 AliUEHistograms.cxx:60
 AliUEHistograms.cxx:61
 AliUEHistograms.cxx:62
 AliUEHistograms.cxx:63
 AliUEHistograms.cxx:64
 AliUEHistograms.cxx:65
 AliUEHistograms.cxx:66
 AliUEHistograms.cxx:67
 AliUEHistograms.cxx:68
 AliUEHistograms.cxx:69
 AliUEHistograms.cxx:70
 AliUEHistograms.cxx:71
 AliUEHistograms.cxx:72
 AliUEHistograms.cxx:73
 AliUEHistograms.cxx:74
 AliUEHistograms.cxx:75
 AliUEHistograms.cxx:76
 AliUEHistograms.cxx:77
 AliUEHistograms.cxx:78
 AliUEHistograms.cxx:79
 AliUEHistograms.cxx:80
 AliUEHistograms.cxx:81
 AliUEHistograms.cxx:82
 AliUEHistograms.cxx:83
 AliUEHistograms.cxx:84
 AliUEHistograms.cxx:85
 AliUEHistograms.cxx:86
 AliUEHistograms.cxx:87
 AliUEHistograms.cxx:88
 AliUEHistograms.cxx:89
 AliUEHistograms.cxx:90
 AliUEHistograms.cxx:91
 AliUEHistograms.cxx:92
 AliUEHistograms.cxx:93
 AliUEHistograms.cxx:94
 AliUEHistograms.cxx:95
 AliUEHistograms.cxx:96
 AliUEHistograms.cxx:97
 AliUEHistograms.cxx:98
 AliUEHistograms.cxx:99
 AliUEHistograms.cxx:100
 AliUEHistograms.cxx:101
 AliUEHistograms.cxx:102
 AliUEHistograms.cxx:103
 AliUEHistograms.cxx:104
 AliUEHistograms.cxx:105
 AliUEHistograms.cxx:106
 AliUEHistograms.cxx:107
 AliUEHistograms.cxx:108
 AliUEHistograms.cxx:109
 AliUEHistograms.cxx:110
 AliUEHistograms.cxx:111
 AliUEHistograms.cxx:112
 AliUEHistograms.cxx:113
 AliUEHistograms.cxx:114
 AliUEHistograms.cxx:115
 AliUEHistograms.cxx:116
 AliUEHistograms.cxx:117
 AliUEHistograms.cxx:118
 AliUEHistograms.cxx:119
 AliUEHistograms.cxx:120
 AliUEHistograms.cxx:121
 AliUEHistograms.cxx:122
 AliUEHistograms.cxx:123
 AliUEHistograms.cxx:124
 AliUEHistograms.cxx:125
 AliUEHistograms.cxx:126
 AliUEHistograms.cxx:127
 AliUEHistograms.cxx:128
 AliUEHistograms.cxx:129
 AliUEHistograms.cxx:130
 AliUEHistograms.cxx:131
 AliUEHistograms.cxx:132
 AliUEHistograms.cxx:133
 AliUEHistograms.cxx:134
 AliUEHistograms.cxx:135
 AliUEHistograms.cxx:136
 AliUEHistograms.cxx:137
 AliUEHistograms.cxx:138
 AliUEHistograms.cxx:139
 AliUEHistograms.cxx:140
 AliUEHistograms.cxx:141
 AliUEHistograms.cxx:142
 AliUEHistograms.cxx:143
 AliUEHistograms.cxx:144
 AliUEHistograms.cxx:145
 AliUEHistograms.cxx:146
 AliUEHistograms.cxx:147
 AliUEHistograms.cxx:148
 AliUEHistograms.cxx:149
 AliUEHistograms.cxx:150
 AliUEHistograms.cxx:151
 AliUEHistograms.cxx:152
 AliUEHistograms.cxx:153
 AliUEHistograms.cxx:154
 AliUEHistograms.cxx:155
 AliUEHistograms.cxx:156
 AliUEHistograms.cxx:157
 AliUEHistograms.cxx:158
 AliUEHistograms.cxx:159
 AliUEHistograms.cxx:160
 AliUEHistograms.cxx:161
 AliUEHistograms.cxx:162
 AliUEHistograms.cxx:163
 AliUEHistograms.cxx:164
 AliUEHistograms.cxx:165
 AliUEHistograms.cxx:166
 AliUEHistograms.cxx:167
 AliUEHistograms.cxx:168
 AliUEHistograms.cxx:169
 AliUEHistograms.cxx:170
 AliUEHistograms.cxx:171
 AliUEHistograms.cxx:172
 AliUEHistograms.cxx:173
 AliUEHistograms.cxx:174
 AliUEHistograms.cxx:175
 AliUEHistograms.cxx:176
 AliUEHistograms.cxx:177
 AliUEHistograms.cxx:178
 AliUEHistograms.cxx:179
 AliUEHistograms.cxx:180
 AliUEHistograms.cxx:181
 AliUEHistograms.cxx:182
 AliUEHistograms.cxx:183
 AliUEHistograms.cxx:184
 AliUEHistograms.cxx:185
 AliUEHistograms.cxx:186
 AliUEHistograms.cxx:187
 AliUEHistograms.cxx:188
 AliUEHistograms.cxx:189
 AliUEHistograms.cxx:190
 AliUEHistograms.cxx:191
 AliUEHistograms.cxx:192
 AliUEHistograms.cxx:193
 AliUEHistograms.cxx:194
 AliUEHistograms.cxx:195
 AliUEHistograms.cxx:196
 AliUEHistograms.cxx:197
 AliUEHistograms.cxx:198
 AliUEHistograms.cxx:199
 AliUEHistograms.cxx:200
 AliUEHistograms.cxx:201
 AliUEHistograms.cxx:202
 AliUEHistograms.cxx:203
 AliUEHistograms.cxx:204
 AliUEHistograms.cxx:205
 AliUEHistograms.cxx:206
 AliUEHistograms.cxx:207
 AliUEHistograms.cxx:208
 AliUEHistograms.cxx:209
 AliUEHistograms.cxx:210
 AliUEHistograms.cxx:211
 AliUEHistograms.cxx:212
 AliUEHistograms.cxx:213
 AliUEHistograms.cxx:214
 AliUEHistograms.cxx:215
 AliUEHistograms.cxx:216
 AliUEHistograms.cxx:217
 AliUEHistograms.cxx:218
 AliUEHistograms.cxx:219
 AliUEHistograms.cxx:220
 AliUEHistograms.cxx:221
 AliUEHistograms.cxx:222
 AliUEHistograms.cxx:223
 AliUEHistograms.cxx:224
 AliUEHistograms.cxx:225
 AliUEHistograms.cxx:226
 AliUEHistograms.cxx:227
 AliUEHistograms.cxx:228
 AliUEHistograms.cxx:229
 AliUEHistograms.cxx:230
 AliUEHistograms.cxx:231
 AliUEHistograms.cxx:232
 AliUEHistograms.cxx:233
 AliUEHistograms.cxx:234
 AliUEHistograms.cxx:235
 AliUEHistograms.cxx:236
 AliUEHistograms.cxx:237
 AliUEHistograms.cxx:238
 AliUEHistograms.cxx:239
 AliUEHistograms.cxx:240
 AliUEHistograms.cxx:241
 AliUEHistograms.cxx:242
 AliUEHistograms.cxx:243
 AliUEHistograms.cxx:244
 AliUEHistograms.cxx:245
 AliUEHistograms.cxx:246
 AliUEHistograms.cxx:247
 AliUEHistograms.cxx:248
 AliUEHistograms.cxx:249
 AliUEHistograms.cxx:250
 AliUEHistograms.cxx:251
 AliUEHistograms.cxx:252
 AliUEHistograms.cxx:253
 AliUEHistograms.cxx:254
 AliUEHistograms.cxx:255
 AliUEHistograms.cxx:256
 AliUEHistograms.cxx:257
 AliUEHistograms.cxx:258
 AliUEHistograms.cxx:259
 AliUEHistograms.cxx:260
 AliUEHistograms.cxx:261
 AliUEHistograms.cxx:262
 AliUEHistograms.cxx:263
 AliUEHistograms.cxx:264
 AliUEHistograms.cxx:265
 AliUEHistograms.cxx:266
 AliUEHistograms.cxx:267
 AliUEHistograms.cxx:268
 AliUEHistograms.cxx:269
 AliUEHistograms.cxx:270
 AliUEHistograms.cxx:271
 AliUEHistograms.cxx:272
 AliUEHistograms.cxx:273
 AliUEHistograms.cxx:274
 AliUEHistograms.cxx:275
 AliUEHistograms.cxx:276
 AliUEHistograms.cxx:277
 AliUEHistograms.cxx:278
 AliUEHistograms.cxx:279
 AliUEHistograms.cxx:280
 AliUEHistograms.cxx:281
 AliUEHistograms.cxx:282
 AliUEHistograms.cxx:283
 AliUEHistograms.cxx:284
 AliUEHistograms.cxx:285
 AliUEHistograms.cxx:286
 AliUEHistograms.cxx:287
 AliUEHistograms.cxx:288
 AliUEHistograms.cxx:289
 AliUEHistograms.cxx:290
 AliUEHistograms.cxx:291
 AliUEHistograms.cxx:292
 AliUEHistograms.cxx:293
 AliUEHistograms.cxx:294
 AliUEHistograms.cxx:295
 AliUEHistograms.cxx:296
 AliUEHistograms.cxx:297
 AliUEHistograms.cxx:298
 AliUEHistograms.cxx:299
 AliUEHistograms.cxx:300
 AliUEHistograms.cxx:301
 AliUEHistograms.cxx:302
 AliUEHistograms.cxx:303
 AliUEHistograms.cxx:304
 AliUEHistograms.cxx:305
 AliUEHistograms.cxx:306
 AliUEHistograms.cxx:307
 AliUEHistograms.cxx:308
 AliUEHistograms.cxx:309
 AliUEHistograms.cxx:310
 AliUEHistograms.cxx:311
 AliUEHistograms.cxx:312
 AliUEHistograms.cxx:313
 AliUEHistograms.cxx:314
 AliUEHistograms.cxx:315
 AliUEHistograms.cxx:316
 AliUEHistograms.cxx:317
 AliUEHistograms.cxx:318
 AliUEHistograms.cxx:319
 AliUEHistograms.cxx:320
 AliUEHistograms.cxx:321
 AliUEHistograms.cxx:322
 AliUEHistograms.cxx:323
 AliUEHistograms.cxx:324
 AliUEHistograms.cxx:325
 AliUEHistograms.cxx:326
 AliUEHistograms.cxx:327
 AliUEHistograms.cxx:328
 AliUEHistograms.cxx:329
 AliUEHistograms.cxx:330
 AliUEHistograms.cxx:331
 AliUEHistograms.cxx:332
 AliUEHistograms.cxx:333
 AliUEHistograms.cxx:334
 AliUEHistograms.cxx:335
 AliUEHistograms.cxx:336
 AliUEHistograms.cxx:337
 AliUEHistograms.cxx:338
 AliUEHistograms.cxx:339
 AliUEHistograms.cxx:340
 AliUEHistograms.cxx:341
 AliUEHistograms.cxx:342
 AliUEHistograms.cxx:343
 AliUEHistograms.cxx:344
 AliUEHistograms.cxx:345
 AliUEHistograms.cxx:346
 AliUEHistograms.cxx:347
 AliUEHistograms.cxx:348
 AliUEHistograms.cxx:349
 AliUEHistograms.cxx:350
 AliUEHistograms.cxx:351
 AliUEHistograms.cxx:352
 AliUEHistograms.cxx:353
 AliUEHistograms.cxx:354
 AliUEHistograms.cxx:355
 AliUEHistograms.cxx:356
 AliUEHistograms.cxx:357
 AliUEHistograms.cxx:358
 AliUEHistograms.cxx:359
 AliUEHistograms.cxx:360
 AliUEHistograms.cxx:361
 AliUEHistograms.cxx:362
 AliUEHistograms.cxx:363
 AliUEHistograms.cxx:364
 AliUEHistograms.cxx:365
 AliUEHistograms.cxx:366
 AliUEHistograms.cxx:367
 AliUEHistograms.cxx:368
 AliUEHistograms.cxx:369
 AliUEHistograms.cxx:370
 AliUEHistograms.cxx:371
 AliUEHistograms.cxx:372
 AliUEHistograms.cxx:373
 AliUEHistograms.cxx:374
 AliUEHistograms.cxx:375
 AliUEHistograms.cxx:376
 AliUEHistograms.cxx:377
 AliUEHistograms.cxx:378
 AliUEHistograms.cxx:379
 AliUEHistograms.cxx:380
 AliUEHistograms.cxx:381
 AliUEHistograms.cxx:382
 AliUEHistograms.cxx:383
 AliUEHistograms.cxx:384
 AliUEHistograms.cxx:385
 AliUEHistograms.cxx:386
 AliUEHistograms.cxx:387
 AliUEHistograms.cxx:388
 AliUEHistograms.cxx:389
 AliUEHistograms.cxx:390
 AliUEHistograms.cxx:391
 AliUEHistograms.cxx:392
 AliUEHistograms.cxx:393
 AliUEHistograms.cxx:394
 AliUEHistograms.cxx:395
 AliUEHistograms.cxx:396
 AliUEHistograms.cxx:397
 AliUEHistograms.cxx:398
 AliUEHistograms.cxx:399
 AliUEHistograms.cxx:400
 AliUEHistograms.cxx:401
 AliUEHistograms.cxx:402
 AliUEHistograms.cxx:403
 AliUEHistograms.cxx:404
 AliUEHistograms.cxx:405
 AliUEHistograms.cxx:406
 AliUEHistograms.cxx:407
 AliUEHistograms.cxx:408
 AliUEHistograms.cxx:409
 AliUEHistograms.cxx:410
 AliUEHistograms.cxx:411
 AliUEHistograms.cxx:412
 AliUEHistograms.cxx:413
 AliUEHistograms.cxx:414
 AliUEHistograms.cxx:415
 AliUEHistograms.cxx:416
 AliUEHistograms.cxx:417
 AliUEHistograms.cxx:418
 AliUEHistograms.cxx:419
 AliUEHistograms.cxx:420
 AliUEHistograms.cxx:421
 AliUEHistograms.cxx:422
 AliUEHistograms.cxx:423
 AliUEHistograms.cxx:424
 AliUEHistograms.cxx:425
 AliUEHistograms.cxx:426
 AliUEHistograms.cxx:427
 AliUEHistograms.cxx:428
 AliUEHistograms.cxx:429
 AliUEHistograms.cxx:430
 AliUEHistograms.cxx:431
 AliUEHistograms.cxx:432
 AliUEHistograms.cxx:433
 AliUEHistograms.cxx:434
 AliUEHistograms.cxx:435
 AliUEHistograms.cxx:436
 AliUEHistograms.cxx:437
 AliUEHistograms.cxx:438
 AliUEHistograms.cxx:439
 AliUEHistograms.cxx:440
 AliUEHistograms.cxx:441
 AliUEHistograms.cxx:442
 AliUEHistograms.cxx:443
 AliUEHistograms.cxx:444
 AliUEHistograms.cxx:445
 AliUEHistograms.cxx:446
 AliUEHistograms.cxx:447
 AliUEHistograms.cxx:448
 AliUEHistograms.cxx:449
 AliUEHistograms.cxx:450
 AliUEHistograms.cxx:451
 AliUEHistograms.cxx:452
 AliUEHistograms.cxx:453
 AliUEHistograms.cxx:454
 AliUEHistograms.cxx:455
 AliUEHistograms.cxx:456
 AliUEHistograms.cxx:457
 AliUEHistograms.cxx:458
 AliUEHistograms.cxx:459
 AliUEHistograms.cxx:460
 AliUEHistograms.cxx:461
 AliUEHistograms.cxx:462
 AliUEHistograms.cxx:463
 AliUEHistograms.cxx:464
 AliUEHistograms.cxx:465
 AliUEHistograms.cxx:466
 AliUEHistograms.cxx:467
 AliUEHistograms.cxx:468
 AliUEHistograms.cxx:469
 AliUEHistograms.cxx:470
 AliUEHistograms.cxx:471
 AliUEHistograms.cxx:472
 AliUEHistograms.cxx:473
 AliUEHistograms.cxx:474
 AliUEHistograms.cxx:475
 AliUEHistograms.cxx:476
 AliUEHistograms.cxx:477
 AliUEHistograms.cxx:478
 AliUEHistograms.cxx:479
 AliUEHistograms.cxx:480
 AliUEHistograms.cxx:481
 AliUEHistograms.cxx:482
 AliUEHistograms.cxx:483
 AliUEHistograms.cxx:484
 AliUEHistograms.cxx:485
 AliUEHistograms.cxx:486
 AliUEHistograms.cxx:487
 AliUEHistograms.cxx:488
 AliUEHistograms.cxx:489
 AliUEHistograms.cxx:490
 AliUEHistograms.cxx:491
 AliUEHistograms.cxx:492
 AliUEHistograms.cxx:493
 AliUEHistograms.cxx:494
 AliUEHistograms.cxx:495
 AliUEHistograms.cxx:496
 AliUEHistograms.cxx:497
 AliUEHistograms.cxx:498
 AliUEHistograms.cxx:499
 AliUEHistograms.cxx:500
 AliUEHistograms.cxx:501
 AliUEHistograms.cxx:502
 AliUEHistograms.cxx:503
 AliUEHistograms.cxx:504
 AliUEHistograms.cxx:505
 AliUEHistograms.cxx:506
 AliUEHistograms.cxx:507
 AliUEHistograms.cxx:508
 AliUEHistograms.cxx:509
 AliUEHistograms.cxx:510
 AliUEHistograms.cxx:511
 AliUEHistograms.cxx:512
 AliUEHistograms.cxx:513
 AliUEHistograms.cxx:514
 AliUEHistograms.cxx:515
 AliUEHistograms.cxx:516
 AliUEHistograms.cxx:517
 AliUEHistograms.cxx:518
 AliUEHistograms.cxx:519
 AliUEHistograms.cxx:520
 AliUEHistograms.cxx:521
 AliUEHistograms.cxx:522
 AliUEHistograms.cxx:523
 AliUEHistograms.cxx:524
 AliUEHistograms.cxx:525
 AliUEHistograms.cxx:526
 AliUEHistograms.cxx:527
 AliUEHistograms.cxx:528
 AliUEHistograms.cxx:529
 AliUEHistograms.cxx:530
 AliUEHistograms.cxx:531
 AliUEHistograms.cxx:532
 AliUEHistograms.cxx:533
 AliUEHistograms.cxx:534
 AliUEHistograms.cxx:535
 AliUEHistograms.cxx:536
 AliUEHistograms.cxx:537
 AliUEHistograms.cxx:538
 AliUEHistograms.cxx:539
 AliUEHistograms.cxx:540
 AliUEHistograms.cxx:541
 AliUEHistograms.cxx:542
 AliUEHistograms.cxx:543
 AliUEHistograms.cxx:544
 AliUEHistograms.cxx:545
 AliUEHistograms.cxx:546
 AliUEHistograms.cxx:547
 AliUEHistograms.cxx:548
 AliUEHistograms.cxx:549
 AliUEHistograms.cxx:550
 AliUEHistograms.cxx:551
 AliUEHistograms.cxx:552
 AliUEHistograms.cxx:553
 AliUEHistograms.cxx:554
 AliUEHistograms.cxx:555
 AliUEHistograms.cxx:556
 AliUEHistograms.cxx:557
 AliUEHistograms.cxx:558
 AliUEHistograms.cxx:559
 AliUEHistograms.cxx:560
 AliUEHistograms.cxx:561
 AliUEHistograms.cxx:562
 AliUEHistograms.cxx:563
 AliUEHistograms.cxx:564
 AliUEHistograms.cxx:565
 AliUEHistograms.cxx:566
 AliUEHistograms.cxx:567
 AliUEHistograms.cxx:568
 AliUEHistograms.cxx:569
 AliUEHistograms.cxx:570
 AliUEHistograms.cxx:571
 AliUEHistograms.cxx:572
 AliUEHistograms.cxx:573
 AliUEHistograms.cxx:574
 AliUEHistograms.cxx:575
 AliUEHistograms.cxx:576
 AliUEHistograms.cxx:577
 AliUEHistograms.cxx:578
 AliUEHistograms.cxx:579
 AliUEHistograms.cxx:580
 AliUEHistograms.cxx:581
 AliUEHistograms.cxx:582
 AliUEHistograms.cxx:583
 AliUEHistograms.cxx:584
 AliUEHistograms.cxx:585
 AliUEHistograms.cxx:586
 AliUEHistograms.cxx:587
 AliUEHistograms.cxx:588
 AliUEHistograms.cxx:589
 AliUEHistograms.cxx:590
 AliUEHistograms.cxx:591
 AliUEHistograms.cxx:592
 AliUEHistograms.cxx:593
 AliUEHistograms.cxx:594
 AliUEHistograms.cxx:595
 AliUEHistograms.cxx:596
 AliUEHistograms.cxx:597
 AliUEHistograms.cxx:598
 AliUEHistograms.cxx:599
 AliUEHistograms.cxx:600
 AliUEHistograms.cxx:601
 AliUEHistograms.cxx:602
 AliUEHistograms.cxx:603
 AliUEHistograms.cxx:604
 AliUEHistograms.cxx:605
 AliUEHistograms.cxx:606
 AliUEHistograms.cxx:607
 AliUEHistograms.cxx:608
 AliUEHistograms.cxx:609
 AliUEHistograms.cxx:610
 AliUEHistograms.cxx:611
 AliUEHistograms.cxx:612
 AliUEHistograms.cxx:613
 AliUEHistograms.cxx:614
 AliUEHistograms.cxx:615
 AliUEHistograms.cxx:616
 AliUEHistograms.cxx:617
 AliUEHistograms.cxx:618
 AliUEHistograms.cxx:619
 AliUEHistograms.cxx:620
 AliUEHistograms.cxx:621
 AliUEHistograms.cxx:622
 AliUEHistograms.cxx:623
 AliUEHistograms.cxx:624
 AliUEHistograms.cxx:625
 AliUEHistograms.cxx:626
 AliUEHistograms.cxx:627
 AliUEHistograms.cxx:628
 AliUEHistograms.cxx:629
 AliUEHistograms.cxx:630
 AliUEHistograms.cxx:631
 AliUEHistograms.cxx:632
 AliUEHistograms.cxx:633
 AliUEHistograms.cxx:634
 AliUEHistograms.cxx:635
 AliUEHistograms.cxx:636
 AliUEHistograms.cxx:637
 AliUEHistograms.cxx:638
 AliUEHistograms.cxx:639
 AliUEHistograms.cxx:640
 AliUEHistograms.cxx:641
 AliUEHistograms.cxx:642
 AliUEHistograms.cxx:643
 AliUEHistograms.cxx:644
 AliUEHistograms.cxx:645
 AliUEHistograms.cxx:646
 AliUEHistograms.cxx:647
 AliUEHistograms.cxx:648
 AliUEHistograms.cxx:649
 AliUEHistograms.cxx:650
 AliUEHistograms.cxx:651
 AliUEHistograms.cxx:652
 AliUEHistograms.cxx:653
 AliUEHistograms.cxx:654
 AliUEHistograms.cxx:655
 AliUEHistograms.cxx:656
 AliUEHistograms.cxx:657
 AliUEHistograms.cxx:658
 AliUEHistograms.cxx:659
 AliUEHistograms.cxx:660
 AliUEHistograms.cxx:661
 AliUEHistograms.cxx:662
 AliUEHistograms.cxx:663
 AliUEHistograms.cxx:664
 AliUEHistograms.cxx:665
 AliUEHistograms.cxx:666
 AliUEHistograms.cxx:667
 AliUEHistograms.cxx:668
 AliUEHistograms.cxx:669
 AliUEHistograms.cxx:670
 AliUEHistograms.cxx:671
 AliUEHistograms.cxx:672
 AliUEHistograms.cxx:673
 AliUEHistograms.cxx:674
 AliUEHistograms.cxx:675
 AliUEHistograms.cxx:676
 AliUEHistograms.cxx:677
 AliUEHistograms.cxx:678
 AliUEHistograms.cxx:679
 AliUEHistograms.cxx:680
 AliUEHistograms.cxx:681
 AliUEHistograms.cxx:682
 AliUEHistograms.cxx:683
 AliUEHistograms.cxx:684
 AliUEHistograms.cxx:685
 AliUEHistograms.cxx:686
 AliUEHistograms.cxx:687
 AliUEHistograms.cxx:688
 AliUEHistograms.cxx:689
 AliUEHistograms.cxx:690
 AliUEHistograms.cxx:691
 AliUEHistograms.cxx:692
 AliUEHistograms.cxx:693
 AliUEHistograms.cxx:694
 AliUEHistograms.cxx:695
 AliUEHistograms.cxx:696
 AliUEHistograms.cxx:697
 AliUEHistograms.cxx:698
 AliUEHistograms.cxx:699
 AliUEHistograms.cxx:700
 AliUEHistograms.cxx:701
 AliUEHistograms.cxx:702
 AliUEHistograms.cxx:703
 AliUEHistograms.cxx:704
 AliUEHistograms.cxx:705
 AliUEHistograms.cxx:706
 AliUEHistograms.cxx:707
 AliUEHistograms.cxx:708
 AliUEHistograms.cxx:709
 AliUEHistograms.cxx:710
 AliUEHistograms.cxx:711
 AliUEHistograms.cxx:712
 AliUEHistograms.cxx:713
 AliUEHistograms.cxx:714
 AliUEHistograms.cxx:715
 AliUEHistograms.cxx:716
 AliUEHistograms.cxx:717
 AliUEHistograms.cxx:718
 AliUEHistograms.cxx:719
 AliUEHistograms.cxx:720
 AliUEHistograms.cxx:721
 AliUEHistograms.cxx:722
 AliUEHistograms.cxx:723
 AliUEHistograms.cxx:724
 AliUEHistograms.cxx:725
 AliUEHistograms.cxx:726
 AliUEHistograms.cxx:727
 AliUEHistograms.cxx:728
 AliUEHistograms.cxx:729
 AliUEHistograms.cxx:730
 AliUEHistograms.cxx:731
 AliUEHistograms.cxx:732
 AliUEHistograms.cxx:733
 AliUEHistograms.cxx:734
 AliUEHistograms.cxx:735
 AliUEHistograms.cxx:736
 AliUEHistograms.cxx:737
 AliUEHistograms.cxx:738
 AliUEHistograms.cxx:739
 AliUEHistograms.cxx:740
 AliUEHistograms.cxx:741
 AliUEHistograms.cxx:742
 AliUEHistograms.cxx:743
 AliUEHistograms.cxx:744
 AliUEHistograms.cxx:745
 AliUEHistograms.cxx:746
 AliUEHistograms.cxx:747
 AliUEHistograms.cxx:748
 AliUEHistograms.cxx:749
 AliUEHistograms.cxx:750
 AliUEHistograms.cxx:751
 AliUEHistograms.cxx:752
 AliUEHistograms.cxx:753
 AliUEHistograms.cxx:754
 AliUEHistograms.cxx:755
 AliUEHistograms.cxx:756
 AliUEHistograms.cxx:757
 AliUEHistograms.cxx:758
 AliUEHistograms.cxx:759
 AliUEHistograms.cxx:760
 AliUEHistograms.cxx:761
 AliUEHistograms.cxx:762
 AliUEHistograms.cxx:763
 AliUEHistograms.cxx:764
 AliUEHistograms.cxx:765
 AliUEHistograms.cxx:766
 AliUEHistograms.cxx:767
 AliUEHistograms.cxx:768
 AliUEHistograms.cxx:769
 AliUEHistograms.cxx:770
 AliUEHistograms.cxx:771
 AliUEHistograms.cxx:772
 AliUEHistograms.cxx:773
 AliUEHistograms.cxx:774
 AliUEHistograms.cxx:775
 AliUEHistograms.cxx:776
 AliUEHistograms.cxx:777
 AliUEHistograms.cxx:778
 AliUEHistograms.cxx:779
 AliUEHistograms.cxx:780
 AliUEHistograms.cxx:781
 AliUEHistograms.cxx:782
 AliUEHistograms.cxx:783
 AliUEHistograms.cxx:784
 AliUEHistograms.cxx:785
 AliUEHistograms.cxx:786
 AliUEHistograms.cxx:787
 AliUEHistograms.cxx:788
 AliUEHistograms.cxx:789
 AliUEHistograms.cxx:790
 AliUEHistograms.cxx:791
 AliUEHistograms.cxx:792
 AliUEHistograms.cxx:793
 AliUEHistograms.cxx:794
 AliUEHistograms.cxx:795
 AliUEHistograms.cxx:796
 AliUEHistograms.cxx:797
 AliUEHistograms.cxx:798
 AliUEHistograms.cxx:799
 AliUEHistograms.cxx:800
 AliUEHistograms.cxx:801
 AliUEHistograms.cxx:802
 AliUEHistograms.cxx:803
 AliUEHistograms.cxx:804
 AliUEHistograms.cxx:805
 AliUEHistograms.cxx:806
 AliUEHistograms.cxx:807
 AliUEHistograms.cxx:808
 AliUEHistograms.cxx:809
 AliUEHistograms.cxx:810
 AliUEHistograms.cxx:811
 AliUEHistograms.cxx:812
 AliUEHistograms.cxx:813
 AliUEHistograms.cxx:814
 AliUEHistograms.cxx:815
 AliUEHistograms.cxx:816
 AliUEHistograms.cxx:817
 AliUEHistograms.cxx:818
 AliUEHistograms.cxx:819
 AliUEHistograms.cxx:820
 AliUEHistograms.cxx:821
 AliUEHistograms.cxx:822
 AliUEHistograms.cxx:823
 AliUEHistograms.cxx:824
 AliUEHistograms.cxx:825
 AliUEHistograms.cxx:826
 AliUEHistograms.cxx:827
 AliUEHistograms.cxx:828
 AliUEHistograms.cxx:829
 AliUEHistograms.cxx:830
 AliUEHistograms.cxx:831
 AliUEHistograms.cxx:832
 AliUEHistograms.cxx:833
 AliUEHistograms.cxx:834
 AliUEHistograms.cxx:835
 AliUEHistograms.cxx:836
 AliUEHistograms.cxx:837
 AliUEHistograms.cxx:838
 AliUEHistograms.cxx:839
 AliUEHistograms.cxx:840
 AliUEHistograms.cxx:841
 AliUEHistograms.cxx:842
 AliUEHistograms.cxx:843
 AliUEHistograms.cxx:844
 AliUEHistograms.cxx:845
 AliUEHistograms.cxx:846
 AliUEHistograms.cxx:847
 AliUEHistograms.cxx:848
 AliUEHistograms.cxx:849
 AliUEHistograms.cxx:850
 AliUEHistograms.cxx:851
 AliUEHistograms.cxx:852
 AliUEHistograms.cxx:853
 AliUEHistograms.cxx:854
 AliUEHistograms.cxx:855
 AliUEHistograms.cxx:856
 AliUEHistograms.cxx:857
 AliUEHistograms.cxx:858
 AliUEHistograms.cxx:859
 AliUEHistograms.cxx:860
 AliUEHistograms.cxx:861
 AliUEHistograms.cxx:862
 AliUEHistograms.cxx:863
 AliUEHistograms.cxx:864
 AliUEHistograms.cxx:865
 AliUEHistograms.cxx:866
 AliUEHistograms.cxx:867
 AliUEHistograms.cxx:868
 AliUEHistograms.cxx:869
 AliUEHistograms.cxx:870
 AliUEHistograms.cxx:871
 AliUEHistograms.cxx:872
 AliUEHistograms.cxx:873
 AliUEHistograms.cxx:874
 AliUEHistograms.cxx:875
 AliUEHistograms.cxx:876
 AliUEHistograms.cxx:877
 AliUEHistograms.cxx:878
 AliUEHistograms.cxx:879
 AliUEHistograms.cxx:880
 AliUEHistograms.cxx:881
 AliUEHistograms.cxx:882
 AliUEHistograms.cxx:883
 AliUEHistograms.cxx:884
 AliUEHistograms.cxx:885
 AliUEHistograms.cxx:886
 AliUEHistograms.cxx:887
 AliUEHistograms.cxx:888
 AliUEHistograms.cxx:889
 AliUEHistograms.cxx:890
 AliUEHistograms.cxx:891
 AliUEHistograms.cxx:892
 AliUEHistograms.cxx:893
 AliUEHistograms.cxx:894
 AliUEHistograms.cxx:895
 AliUEHistograms.cxx:896
 AliUEHistograms.cxx:897
 AliUEHistograms.cxx:898
 AliUEHistograms.cxx:899
 AliUEHistograms.cxx:900
 AliUEHistograms.cxx:901
 AliUEHistograms.cxx:902
 AliUEHistograms.cxx:903
 AliUEHistograms.cxx:904
 AliUEHistograms.cxx:905
 AliUEHistograms.cxx:906
 AliUEHistograms.cxx:907
 AliUEHistograms.cxx:908
 AliUEHistograms.cxx:909
 AliUEHistograms.cxx:910
 AliUEHistograms.cxx:911
 AliUEHistograms.cxx:912
 AliUEHistograms.cxx:913
 AliUEHistograms.cxx:914
 AliUEHistograms.cxx:915
 AliUEHistograms.cxx:916
 AliUEHistograms.cxx:917
 AliUEHistograms.cxx:918
 AliUEHistograms.cxx:919
 AliUEHistograms.cxx:920
 AliUEHistograms.cxx:921
 AliUEHistograms.cxx:922
 AliUEHistograms.cxx:923
 AliUEHistograms.cxx:924
 AliUEHistograms.cxx:925
 AliUEHistograms.cxx:926
 AliUEHistograms.cxx:927
 AliUEHistograms.cxx:928
 AliUEHistograms.cxx:929
 AliUEHistograms.cxx:930
 AliUEHistograms.cxx:931
 AliUEHistograms.cxx:932
 AliUEHistograms.cxx:933
 AliUEHistograms.cxx:934
 AliUEHistograms.cxx:935
 AliUEHistograms.cxx:936
 AliUEHistograms.cxx:937
 AliUEHistograms.cxx:938
 AliUEHistograms.cxx:939
 AliUEHistograms.cxx:940
 AliUEHistograms.cxx:941
 AliUEHistograms.cxx:942
 AliUEHistograms.cxx:943
 AliUEHistograms.cxx:944
 AliUEHistograms.cxx:945
 AliUEHistograms.cxx:946
 AliUEHistograms.cxx:947
 AliUEHistograms.cxx:948
 AliUEHistograms.cxx:949
 AliUEHistograms.cxx:950
 AliUEHistograms.cxx:951
 AliUEHistograms.cxx:952
 AliUEHistograms.cxx:953
 AliUEHistograms.cxx:954
 AliUEHistograms.cxx:955
 AliUEHistograms.cxx:956
 AliUEHistograms.cxx:957
 AliUEHistograms.cxx:958
 AliUEHistograms.cxx:959
 AliUEHistograms.cxx:960
 AliUEHistograms.cxx:961
 AliUEHistograms.cxx:962
 AliUEHistograms.cxx:963
 AliUEHistograms.cxx:964
 AliUEHistograms.cxx:965
 AliUEHistograms.cxx:966
 AliUEHistograms.cxx:967
 AliUEHistograms.cxx:968
 AliUEHistograms.cxx:969
 AliUEHistograms.cxx:970
 AliUEHistograms.cxx:971
 AliUEHistograms.cxx:972
 AliUEHistograms.cxx:973
 AliUEHistograms.cxx:974
 AliUEHistograms.cxx:975
 AliUEHistograms.cxx:976
 AliUEHistograms.cxx:977
 AliUEHistograms.cxx:978
 AliUEHistograms.cxx:979
 AliUEHistograms.cxx:980
 AliUEHistograms.cxx:981
 AliUEHistograms.cxx:982
 AliUEHistograms.cxx:983
 AliUEHistograms.cxx:984
 AliUEHistograms.cxx:985
 AliUEHistograms.cxx:986
 AliUEHistograms.cxx:987
 AliUEHistograms.cxx:988
 AliUEHistograms.cxx:989
 AliUEHistograms.cxx:990
 AliUEHistograms.cxx:991
 AliUEHistograms.cxx:992
 AliUEHistograms.cxx:993
 AliUEHistograms.cxx:994
 AliUEHistograms.cxx:995
 AliUEHistograms.cxx:996
 AliUEHistograms.cxx:997
 AliUEHistograms.cxx:998
 AliUEHistograms.cxx:999
 AliUEHistograms.cxx:1000
 AliUEHistograms.cxx:1001
 AliUEHistograms.cxx:1002
 AliUEHistograms.cxx:1003
 AliUEHistograms.cxx:1004
 AliUEHistograms.cxx:1005
 AliUEHistograms.cxx:1006
 AliUEHistograms.cxx:1007
 AliUEHistograms.cxx:1008
 AliUEHistograms.cxx:1009
 AliUEHistograms.cxx:1010
 AliUEHistograms.cxx:1011
 AliUEHistograms.cxx:1012
 AliUEHistograms.cxx:1013
 AliUEHistograms.cxx:1014
 AliUEHistograms.cxx:1015
 AliUEHistograms.cxx:1016
 AliUEHistograms.cxx:1017
 AliUEHistograms.cxx:1018
 AliUEHistograms.cxx:1019
 AliUEHistograms.cxx:1020
 AliUEHistograms.cxx:1021
 AliUEHistograms.cxx:1022
 AliUEHistograms.cxx:1023
 AliUEHistograms.cxx:1024
 AliUEHistograms.cxx:1025
 AliUEHistograms.cxx:1026
 AliUEHistograms.cxx:1027
 AliUEHistograms.cxx:1028
 AliUEHistograms.cxx:1029
 AliUEHistograms.cxx:1030
 AliUEHistograms.cxx:1031
 AliUEHistograms.cxx:1032
 AliUEHistograms.cxx:1033
 AliUEHistograms.cxx:1034
 AliUEHistograms.cxx:1035
 AliUEHistograms.cxx:1036
 AliUEHistograms.cxx:1037
 AliUEHistograms.cxx:1038
 AliUEHistograms.cxx:1039
 AliUEHistograms.cxx:1040
 AliUEHistograms.cxx:1041
 AliUEHistograms.cxx:1042
 AliUEHistograms.cxx:1043
 AliUEHistograms.cxx:1044
 AliUEHistograms.cxx:1045
 AliUEHistograms.cxx:1046
 AliUEHistograms.cxx:1047
 AliUEHistograms.cxx:1048
 AliUEHistograms.cxx:1049
 AliUEHistograms.cxx:1050
 AliUEHistograms.cxx:1051
 AliUEHistograms.cxx:1052
 AliUEHistograms.cxx:1053
 AliUEHistograms.cxx:1054
 AliUEHistograms.cxx:1055
 AliUEHistograms.cxx:1056
 AliUEHistograms.cxx:1057
 AliUEHistograms.cxx:1058
 AliUEHistograms.cxx:1059
 AliUEHistograms.cxx:1060
 AliUEHistograms.cxx:1061
 AliUEHistograms.cxx:1062
 AliUEHistograms.cxx:1063
 AliUEHistograms.cxx:1064
 AliUEHistograms.cxx:1065
 AliUEHistograms.cxx:1066
 AliUEHistograms.cxx:1067
 AliUEHistograms.cxx:1068
 AliUEHistograms.cxx:1069
 AliUEHistograms.cxx:1070
 AliUEHistograms.cxx:1071
 AliUEHistograms.cxx:1072
 AliUEHistograms.cxx:1073
 AliUEHistograms.cxx:1074
 AliUEHistograms.cxx:1075
 AliUEHistograms.cxx:1076
 AliUEHistograms.cxx:1077
 AliUEHistograms.cxx:1078
 AliUEHistograms.cxx:1079
 AliUEHistograms.cxx:1080
 AliUEHistograms.cxx:1081
 AliUEHistograms.cxx:1082
 AliUEHistograms.cxx:1083
 AliUEHistograms.cxx:1084
 AliUEHistograms.cxx:1085
 AliUEHistograms.cxx:1086
 AliUEHistograms.cxx:1087
 AliUEHistograms.cxx:1088
 AliUEHistograms.cxx:1089
 AliUEHistograms.cxx:1090
 AliUEHistograms.cxx:1091
 AliUEHistograms.cxx:1092
 AliUEHistograms.cxx:1093
 AliUEHistograms.cxx:1094
 AliUEHistograms.cxx:1095
 AliUEHistograms.cxx:1096
 AliUEHistograms.cxx:1097
 AliUEHistograms.cxx:1098
 AliUEHistograms.cxx:1099
 AliUEHistograms.cxx:1100
 AliUEHistograms.cxx:1101
 AliUEHistograms.cxx:1102
 AliUEHistograms.cxx:1103
 AliUEHistograms.cxx:1104
 AliUEHistograms.cxx:1105
 AliUEHistograms.cxx:1106
 AliUEHistograms.cxx:1107
 AliUEHistograms.cxx:1108
 AliUEHistograms.cxx:1109
 AliUEHistograms.cxx:1110
 AliUEHistograms.cxx:1111
 AliUEHistograms.cxx:1112
 AliUEHistograms.cxx:1113
 AliUEHistograms.cxx:1114
 AliUEHistograms.cxx:1115
 AliUEHistograms.cxx:1116
 AliUEHistograms.cxx:1117
 AliUEHistograms.cxx:1118
 AliUEHistograms.cxx:1119
 AliUEHistograms.cxx:1120
 AliUEHistograms.cxx:1121
 AliUEHistograms.cxx:1122
 AliUEHistograms.cxx:1123
 AliUEHistograms.cxx:1124
 AliUEHistograms.cxx:1125
 AliUEHistograms.cxx:1126
 AliUEHistograms.cxx:1127
 AliUEHistograms.cxx:1128
 AliUEHistograms.cxx:1129
 AliUEHistograms.cxx:1130
 AliUEHistograms.cxx:1131
 AliUEHistograms.cxx:1132
 AliUEHistograms.cxx:1133
 AliUEHistograms.cxx:1134
 AliUEHistograms.cxx:1135
 AliUEHistograms.cxx:1136
 AliUEHistograms.cxx:1137
 AliUEHistograms.cxx:1138
 AliUEHistograms.cxx:1139
 AliUEHistograms.cxx:1140
 AliUEHistograms.cxx:1141
 AliUEHistograms.cxx:1142
 AliUEHistograms.cxx:1143
 AliUEHistograms.cxx:1144
 AliUEHistograms.cxx:1145
 AliUEHistograms.cxx:1146
 AliUEHistograms.cxx:1147
 AliUEHistograms.cxx:1148
 AliUEHistograms.cxx:1149
 AliUEHistograms.cxx:1150
 AliUEHistograms.cxx:1151
 AliUEHistograms.cxx:1152
 AliUEHistograms.cxx:1153
 AliUEHistograms.cxx:1154
 AliUEHistograms.cxx:1155
 AliUEHistograms.cxx:1156
 AliUEHistograms.cxx:1157
 AliUEHistograms.cxx:1158
 AliUEHistograms.cxx:1159
 AliUEHistograms.cxx:1160
 AliUEHistograms.cxx:1161
 AliUEHistograms.cxx:1162
 AliUEHistograms.cxx:1163
 AliUEHistograms.cxx:1164
 AliUEHistograms.cxx:1165
 AliUEHistograms.cxx:1166
 AliUEHistograms.cxx:1167
 AliUEHistograms.cxx:1168
 AliUEHistograms.cxx:1169
 AliUEHistograms.cxx:1170
 AliUEHistograms.cxx:1171
 AliUEHistograms.cxx:1172
 AliUEHistograms.cxx:1173
 AliUEHistograms.cxx:1174
 AliUEHistograms.cxx:1175
 AliUEHistograms.cxx:1176
 AliUEHistograms.cxx:1177
 AliUEHistograms.cxx:1178
 AliUEHistograms.cxx:1179
 AliUEHistograms.cxx:1180
 AliUEHistograms.cxx:1181
 AliUEHistograms.cxx:1182
 AliUEHistograms.cxx:1183
 AliUEHistograms.cxx:1184
 AliUEHistograms.cxx:1185
 AliUEHistograms.cxx:1186
 AliUEHistograms.cxx:1187
 AliUEHistograms.cxx:1188
 AliUEHistograms.cxx:1189
 AliUEHistograms.cxx:1190
 AliUEHistograms.cxx:1191
 AliUEHistograms.cxx:1192
 AliUEHistograms.cxx:1193
 AliUEHistograms.cxx:1194
 AliUEHistograms.cxx:1195
 AliUEHistograms.cxx:1196
 AliUEHistograms.cxx:1197
 AliUEHistograms.cxx:1198
 AliUEHistograms.cxx:1199
 AliUEHistograms.cxx:1200
 AliUEHistograms.cxx:1201
 AliUEHistograms.cxx:1202
 AliUEHistograms.cxx:1203
 AliUEHistograms.cxx:1204
 AliUEHistograms.cxx:1205
 AliUEHistograms.cxx:1206
 AliUEHistograms.cxx:1207
 AliUEHistograms.cxx:1208
 AliUEHistograms.cxx:1209
 AliUEHistograms.cxx:1210
 AliUEHistograms.cxx:1211
 AliUEHistograms.cxx:1212
 AliUEHistograms.cxx:1213
 AliUEHistograms.cxx:1214
 AliUEHistograms.cxx:1215
 AliUEHistograms.cxx:1216
 AliUEHistograms.cxx:1217
 AliUEHistograms.cxx:1218
 AliUEHistograms.cxx:1219
 AliUEHistograms.cxx:1220
 AliUEHistograms.cxx:1221
 AliUEHistograms.cxx:1222
 AliUEHistograms.cxx:1223
 AliUEHistograms.cxx:1224
 AliUEHistograms.cxx:1225
 AliUEHistograms.cxx:1226
 AliUEHistograms.cxx:1227
 AliUEHistograms.cxx:1228
 AliUEHistograms.cxx:1229
 AliUEHistograms.cxx:1230
 AliUEHistograms.cxx:1231
 AliUEHistograms.cxx:1232
 AliUEHistograms.cxx:1233
 AliUEHistograms.cxx:1234
 AliUEHistograms.cxx:1235
 AliUEHistograms.cxx:1236
 AliUEHistograms.cxx:1237
 AliUEHistograms.cxx:1238
 AliUEHistograms.cxx:1239
 AliUEHistograms.cxx:1240
 AliUEHistograms.cxx:1241
 AliUEHistograms.cxx:1242
 AliUEHistograms.cxx:1243
 AliUEHistograms.cxx:1244
 AliUEHistograms.cxx:1245
 AliUEHistograms.cxx:1246
 AliUEHistograms.cxx:1247
 AliUEHistograms.cxx:1248
 AliUEHistograms.cxx:1249
 AliUEHistograms.cxx:1250
 AliUEHistograms.cxx:1251
 AliUEHistograms.cxx:1252
 AliUEHistograms.cxx:1253
 AliUEHistograms.cxx:1254
 AliUEHistograms.cxx:1255
 AliUEHistograms.cxx:1256
 AliUEHistograms.cxx:1257
 AliUEHistograms.cxx:1258
 AliUEHistograms.cxx:1259
 AliUEHistograms.cxx:1260
 AliUEHistograms.cxx:1261
 AliUEHistograms.cxx:1262
 AliUEHistograms.cxx:1263
 AliUEHistograms.cxx:1264
 AliUEHistograms.cxx:1265
 AliUEHistograms.cxx:1266
 AliUEHistograms.cxx:1267
 AliUEHistograms.cxx:1268
 AliUEHistograms.cxx:1269
 AliUEHistograms.cxx:1270
 AliUEHistograms.cxx:1271
 AliUEHistograms.cxx:1272
 AliUEHistograms.cxx:1273
 AliUEHistograms.cxx:1274
 AliUEHistograms.cxx:1275
 AliUEHistograms.cxx:1276
 AliUEHistograms.cxx:1277
 AliUEHistograms.cxx:1278
 AliUEHistograms.cxx:1279
 AliUEHistograms.cxx:1280
 AliUEHistograms.cxx:1281
 AliUEHistograms.cxx:1282
 AliUEHistograms.cxx:1283
 AliUEHistograms.cxx:1284
 AliUEHistograms.cxx:1285
 AliUEHistograms.cxx:1286
 AliUEHistograms.cxx:1287
 AliUEHistograms.cxx:1288
 AliUEHistograms.cxx:1289
 AliUEHistograms.cxx:1290
 AliUEHistograms.cxx:1291
 AliUEHistograms.cxx:1292
 AliUEHistograms.cxx:1293
 AliUEHistograms.cxx:1294
 AliUEHistograms.cxx:1295
 AliUEHistograms.cxx:1296
 AliUEHistograms.cxx:1297
 AliUEHistograms.cxx:1298
 AliUEHistograms.cxx:1299
 AliUEHistograms.cxx:1300
 AliUEHistograms.cxx:1301
 AliUEHistograms.cxx:1302
 AliUEHistograms.cxx:1303
 AliUEHistograms.cxx:1304
 AliUEHistograms.cxx:1305
 AliUEHistograms.cxx:1306
 AliUEHistograms.cxx:1307
 AliUEHistograms.cxx:1308
 AliUEHistograms.cxx:1309
 AliUEHistograms.cxx:1310
 AliUEHistograms.cxx:1311
 AliUEHistograms.cxx:1312
 AliUEHistograms.cxx:1313
 AliUEHistograms.cxx:1314
 AliUEHistograms.cxx:1315
 AliUEHistograms.cxx:1316
 AliUEHistograms.cxx:1317
 AliUEHistograms.cxx:1318
 AliUEHistograms.cxx:1319
 AliUEHistograms.cxx:1320
 AliUEHistograms.cxx:1321
 AliUEHistograms.cxx:1322
 AliUEHistograms.cxx:1323
 AliUEHistograms.cxx:1324
 AliUEHistograms.cxx:1325
 AliUEHistograms.cxx:1326
 AliUEHistograms.cxx:1327
 AliUEHistograms.cxx:1328
 AliUEHistograms.cxx:1329
 AliUEHistograms.cxx:1330
 AliUEHistograms.cxx:1331
 AliUEHistograms.cxx:1332
 AliUEHistograms.cxx:1333
 AliUEHistograms.cxx:1334
 AliUEHistograms.cxx:1335
 AliUEHistograms.cxx:1336
 AliUEHistograms.cxx:1337
 AliUEHistograms.cxx:1338
 AliUEHistograms.cxx:1339
 AliUEHistograms.cxx:1340
 AliUEHistograms.cxx:1341
 AliUEHistograms.cxx:1342
 AliUEHistograms.cxx:1343
 AliUEHistograms.cxx:1344
 AliUEHistograms.cxx:1345
 AliUEHistograms.cxx:1346
 AliUEHistograms.cxx:1347
 AliUEHistograms.cxx:1348
 AliUEHistograms.cxx:1349
 AliUEHistograms.cxx:1350
 AliUEHistograms.cxx:1351
 AliUEHistograms.cxx:1352
 AliUEHistograms.cxx:1353
 AliUEHistograms.cxx:1354
 AliUEHistograms.cxx:1355
 AliUEHistograms.cxx:1356
 AliUEHistograms.cxx:1357
 AliUEHistograms.cxx:1358
 AliUEHistograms.cxx:1359
 AliUEHistograms.cxx:1360
 AliUEHistograms.cxx:1361
 AliUEHistograms.cxx:1362
 AliUEHistograms.cxx:1363
 AliUEHistograms.cxx:1364
 AliUEHistograms.cxx:1365
 AliUEHistograms.cxx:1366
 AliUEHistograms.cxx:1367
 AliUEHistograms.cxx:1368
 AliUEHistograms.cxx:1369
 AliUEHistograms.cxx:1370
 AliUEHistograms.cxx:1371
 AliUEHistograms.cxx:1372
 AliUEHistograms.cxx:1373
 AliUEHistograms.cxx:1374
 AliUEHistograms.cxx:1375
 AliUEHistograms.cxx:1376
 AliUEHistograms.cxx:1377
 AliUEHistograms.cxx:1378
 AliUEHistograms.cxx:1379
 AliUEHistograms.cxx:1380
 AliUEHistograms.cxx:1381
 AliUEHistograms.cxx:1382
 AliUEHistograms.cxx:1383
 AliUEHistograms.cxx:1384
 AliUEHistograms.cxx:1385
 AliUEHistograms.cxx:1386
 AliUEHistograms.cxx:1387
 AliUEHistograms.cxx:1388
 AliUEHistograms.cxx:1389
 AliUEHistograms.cxx:1390
 AliUEHistograms.cxx:1391
 AliUEHistograms.cxx:1392
 AliUEHistograms.cxx:1393
 AliUEHistograms.cxx:1394
 AliUEHistograms.cxx:1395
 AliUEHistograms.cxx:1396
 AliUEHistograms.cxx:1397
 AliUEHistograms.cxx:1398
 AliUEHistograms.cxx:1399
 AliUEHistograms.cxx:1400
 AliUEHistograms.cxx:1401
 AliUEHistograms.cxx:1402
 AliUEHistograms.cxx:1403
 AliUEHistograms.cxx:1404
 AliUEHistograms.cxx:1405
 AliUEHistograms.cxx:1406
 AliUEHistograms.cxx:1407
 AliUEHistograms.cxx:1408
 AliUEHistograms.cxx:1409
 AliUEHistograms.cxx:1410
 AliUEHistograms.cxx:1411
 AliUEHistograms.cxx:1412
 AliUEHistograms.cxx:1413