ROOT logo
// $Id$

//**************************************************************************
//* This file is property of and copyright by the ALICE Project            * 
//* ALICE Experiment at CERN, All rights reserved.                         *
//*                                                                        *
//* Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no>        *
//*                  Sedat Altinpinar <Sedat.Altinpinar@cern.ch>           *
//*                  Hege Erdal       <hege.erdal@gmail.com>               *
//*                                                                        *
//* 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.                  *
//**************************************************************************

/// @file   AliDxHFECorrelation.cxx
/// @author Sedat Altinpinar, Hege Erdal, Matthias Richter
/// @date   2012-04-25
/// @brief  Worker class for D0-HF electron correlation
///

#include "AliDxHFECorrelation.h"
#include "AliVParticle.h"
#include "AliLog.h"
//#include "AliAnalysisCuts.h"         // required dependency libANALYSISalice.so
//#include "AliFlowTrackSimple.h"      // required dependency libPWGflowBase.so
//#include "AliFlowCandidateTrack.h"   // required dependency libPWGflowTasks.so
//#include "AliCFContainer.h"          // required dependency libCORRFW.so
#include "TObjArray.h"
#include "AliHFCorrelator.h"
#include "AliAODEvent.h"
#include "AliAODVertex.h"
#include "TH1D.h"
#include "TH2D.h"
#include "TH3D.h"
#include "THnSparse.h"
#include "TMath.h"
#include "TFile.h"
#include "TCanvas.h"
#include "TDatabasePDG.h"
#include "TLorentzVector.h"
#include "AliReducedParticle.h"
#include "AliDxHFEParticleSelection.h"
#include <iostream>
#include <cerrno>
#include <memory>

using namespace std;

ClassImp(AliDxHFECorrelation)

AliDxHFECorrelation::AliDxHFECorrelation(const char* name)
  : TNamed(name?name:"AliDxHFECorrelation", "")
  , fHistograms(NULL)  
  , fControlObjects(NULL)
  , fCorrProperties(NULL)
  , fhEventControlCorr(NULL)
  , fCuts(NULL)
  , fUseMC(kFALSE)
  , fCorrelator(NULL)
  , fUseEventMixing(kFALSE)
  , fSystem(0)
  , fMinPhi(-TMath::Pi()/2)
  , fMaxPhi(3*TMath::Pi()/2)
  , fDeltaPhi(0)
  , fDeltaEta(0)
  , fDimThn(0)
  , fCorrArray(NULL)
  , fEventType(0)
  , fTriggerParticleType(kD)
{
  // default constructor
  // 
  //

}

const char* AliDxHFECorrelation::fgkEventControlBinNames[]={
  "nEventsAll",
  "nEventsSelected",
  "nEventsTriggerd",
  "nEventsCorrelated"
};

AliDxHFECorrelation::~AliDxHFECorrelation()
{
  // destructor
  //
  //
  if (fHistograms) delete fHistograms;
  fHistograms=NULL;

  // NOTE: fControlObjects owns the object, and they are deleted in the
  // destructor of TList
  if (fControlObjects) delete fControlObjects;
  fControlObjects=NULL;
  fCorrProperties=NULL;
  fhEventControlCorr=NULL;
  if(fCorrelator) delete fCorrelator;
  fCorrelator=NULL;
  if(fCorrArray) delete fCorrArray;
  fCorrArray=NULL;

  // NOTE: the external object is deleted elsewhere
  fCuts=NULL;
}

int AliDxHFECorrelation::Init(const char* arguments)
{
  //
  // Will initialize thnsparse, histogram and AliHFCorrelator
  //
  AliInfo("Initializing correlation objects");
  ParseArguments(arguments);

  //----------------------------------------------
  // Setting up THnSparse 
  fCorrProperties=DefineTHnSparse();
  AddControlObject(fCorrProperties);

  //----------------------------------------------
  // Histogram for storing event information

  TString histoname="";
  if(fTriggerParticleType==kElectron)
    histoname="hEventControlHFExDCorr";
  else
    histoname="hEventControlDxHFECorr";
  std::auto_ptr<TH1D> hEventControl(new TH1D(histoname.Data(), histoname.Data(), 10, 0, 10));
  if (!hEventControl.get()) {
    return -ENOMEM;
  }
  int iLabel=0;
  for (iLabel=0; iLabel<kNEventControlLabels; iLabel++)
    hEventControl->GetXaxis()->SetBinLabel(iLabel+1, fgkEventControlBinNames[iLabel]);

  fhEventControlCorr=hEventControl.release();
  AddControlObject(fhEventControlCorr);

  //----------------------------------------------
  // AliHFCorrelator for Event Mixing and correlation
  // 
  // fCuts is the hadron cut object, fSystem to switch between pp or PbPb
  AliHFAssociatedTrackCuts* cuts=dynamic_cast<AliHFAssociatedTrackCuts*>(fCuts);
  if (!cuts) {
    if (fCuts)
      AliError(Form("cuts object of wrong type %s, required AliHFAssociatedTrackCuts", fCuts->ClassName()));
    else
      AliError("mandatory cuts object missing");
    return -EINVAL;
  }
  if (cuts->GetNCentPoolBins()==0 || cuts->GetCentPoolBins()==NULL ||
      cuts->GetNZvtxPoolBins()==0 || cuts->GetZvtxPoolBins()==NULL) {
    // the bin information is used further downstream so it
    // needs to be available in order to continue
    AliError(Form("inavlid object %s: bin configuration is mandatory", cuts->GetName()));
    cuts->Dump();
    return -EINVAL;
  }
  cuts->Print("");
  fCorrelator = new AliHFCorrelator("Correlator", cuts, fSystem); 
  fCorrelator->SetDeltaPhiInterval(fMinPhi,fMaxPhi); //Correct Phi Interval
  fCorrelator->SetEventMixing(fUseEventMixing);      // mixing Off/On 
  fCorrelator->SetAssociatedParticleType(AliHFCorrelator::kElectron);
  // 0: don't calculate d0; 1: return d0; 2: return d0/d0err
  fCorrelator->SetApplyDisplacementCut(kFALSE); 
  fCorrelator->SetUseMC(fUseMC);
  fCorrelator->SetUseReco(kTRUE); // Reco/MCTruth
  Bool_t pooldef = fCorrelator->DefineEventPool();
	
  if(!pooldef) AliInfo("Warning:: Event pool not defined properly");


  // ============================= EVENT MIXING CHECKS ======================================
  // TODO: Not sure if all 4 histos are needed. Keep for now..	
  // TODO: Set them up more nicely
  Double_t MaxNofEvents = cuts->GetMaxNEventsInPool();
  Double_t MinNofTracks = cuts->GetMinNTracksInPool();
  Int_t NofCentBins = cuts->GetNCentPoolBins();
  const Double_t * CentBins = cuts->GetCentPoolBins();
  const Double_t defaultCentBins[] = {0,100};
  if (NofCentBins==0 || CentBins==NULL) {
    NofCentBins=1; // note: array dimension minus one, because of bin is bound by upper and lower
    CentBins=defaultCentBins;
  }
  Int_t NofZVrtxBins = cuts->GetNZvtxPoolBins();
  const Double_t *ZVrtxBins = cuts->GetZvtxPoolBins();
  const Double_t defaultZVrtxBins[] = {-10,10};
  if (NofZVrtxBins==0 || ZVrtxBins==NULL) {
    NofZVrtxBins=1; // note: array dimension minus one, because of bin is bound by upper and lower
    ZVrtxBins=defaultZVrtxBins;
  }

  Int_t nofEventPropBins =0;

  if(fSystem) nofEventPropBins = 100; // PbPb centrality
  if(!fSystem) nofEventPropBins = NofCentBins; // pp multiplicity

  Double_t minvalue = CentBins[0];
  Double_t maxvalue = CentBins[NofCentBins];
  Double_t Zminvalue = ZVrtxBins[0];
  Double_t Zmaxvalue = ZVrtxBins[NofCentBins];

  const Double_t Nevents[]={0,2*MaxNofEvents/10,4*MaxNofEvents/10,6*MaxNofEvents/10,8*MaxNofEvents/10,MaxNofEvents};
  const Double_t * events = Nevents;

  TH3D * EventsPerPoolBin = new TH3D("EventsPerPoolBin","Number of events in bin pool",NofCentBins,CentBins,NofZVrtxBins,ZVrtxBins,5,events);
  EventsPerPoolBin->GetXaxis()->SetTitle("Centrality/multiplicity ");
  EventsPerPoolBin->GetYaxis()->SetTitle("Z vertex [cm]");
  EventsPerPoolBin->GetZaxis()->SetTitle("Number of events in pool bin");
  if(fUseEventMixing) AddControlObject(EventsPerPoolBin);

  Double_t MaxNofTracks = (MaxNofEvents+1)*MinNofTracks;
  Double_t Diff = MaxNofTracks-MinNofTracks;

  Double_t Ntracks[]={MinNofTracks,MinNofTracks+Diff/5,MinNofTracks+2*Diff/5,MinNofTracks+3*Diff/5,MinNofTracks+4*Diff/5,MaxNofTracks};
  Double_t  * trackN = Ntracks;

  TH3D * NofTracksPerPoolBin = new TH3D("NofTracksPerPoolBin","Number of tracks in bin pool",NofCentBins,CentBins,NofZVrtxBins,ZVrtxBins,5,trackN);
  NofTracksPerPoolBin->GetXaxis()->SetTitle("Centrality/multiplicity ");
  NofTracksPerPoolBin->GetYaxis()->SetTitle("Z vertex [cm]");
  NofTracksPerPoolBin->GetZaxis()->SetTitle("Number of tracks per bin");

  if(fUseEventMixing) AddControlObject(NofTracksPerPoolBin);

  TH2D * NofPoolBinCalls = new TH2D("NofPoolBinCalls","Number of tracks in bin pool",NofCentBins,CentBins,NofZVrtxBins,ZVrtxBins);
  NofPoolBinCalls->GetXaxis()->SetTitle("Centrality/multiplicity ");
  NofPoolBinCalls->GetYaxis()->SetTitle("Z vertex [cm]");
  if(fUseEventMixing) AddControlObject(NofPoolBinCalls);

  TH2D * EventProps = new TH2D("EventProps","Number of tracks in bin pool",nofEventPropBins,minvalue,maxvalue,100,Zminvalue,Zmaxvalue);
  EventProps->GetXaxis()->SetTitle("Centrality/multiplicity ");
  EventProps->GetYaxis()->SetTitle("Z vertex [cm]");
  if(fUseEventMixing) AddControlObject(EventProps);

  return 0;
}

int AliDxHFECorrelation::ParseArguments(const char* arguments)
{
  // parse arguments and set internal flags
  TString strArguments(arguments);
  auto_ptr<TObjArray> tokens(strArguments.Tokenize(" "));
  if (!tokens.get()) return -ENOMEM;

  TIter next(tokens.get());
  TObject* token;
  while ((token=next())) {
    TString argument=token->GetName();
   
    if (argument.BeginsWith("event-mixing")) {
      fUseEventMixing=true;
      continue;
    }
      
    if (argument.BeginsWith("mc") ||
	argument.BeginsWith("use-mc")) {
      fUseMC=true;
      continue;
    }
    if (argument.BeginsWith("system=")) {
      argument.ReplaceAll("system=", "");
      if (argument.CompareTo("pp")==0) fSystem=0;
      else if (argument.CompareTo("Pb-Pb")==0) fSystem=1;
      else {
	AliWarning(Form("can not set collision system, unknown parameter '%s'", argument.Data()));
	// TODO: check what makes sense
	fSystem=0;
      }
      continue;
    }
    if (argument.BeginsWith("trigger=")){
      argument.ReplaceAll("trigger=", "");
      if (argument.CompareTo("D")==0) { fTriggerParticleType=kD; AliInfo("Trigger on D"); }
      if (argument.CompareTo("D0")==0) { fTriggerParticleType=kD; AliInfo("Trigger on D");}
      else if (argument.CompareTo("electron")==0){ fTriggerParticleType=kElectron; AliInfo("trigger on electron");}
      continue;
    }   
    AliWarning(Form("unknown argument '%s'", argument.Data()));
      
  }

  return 0;
}

THnSparse* AliDxHFECorrelation::DefineTHnSparse()
{
  //
  //Defines the THnSparse. For now, only calls CreateControlTHnSparse
  AliDebug(1, "Creating Corr THnSparse");
  // here is the only place to change the dimension
  static const int sizeEventdphi = 7;  
  InitTHnSparseArray(sizeEventdphi);
  const double pi=TMath::Pi();

  //TODO: add phi for electron??
  // 			                        0           1       2      3         4     5      6   
  // 			                      D0invmass   PtD0    PhiD0  PtbinD0    Pte   dphi   deta   
  int         binsEventdphi[sizeEventdphi] = {   200,      1000,   100,    21,     1000,   100,    100};
  double      minEventdphi [sizeEventdphi] = { 1.5648,      0,       0,     0,       0,  fMinPhi, -2};
  double      maxEventdphi [sizeEventdphi] = { 2.1648,     100,   2*pi,    20,      100, fMaxPhi, 2};
  const char* nameEventdphi[sizeEventdphi] = {
    "D0InvMass",
    "PtD0",
    "PhiD0",
    "PtBinD0",
    "PtEl",
    "#Delta#Phi", 
    "#Delta#eta"
  };

  TString name;
  name.Form("%s info", GetName());


  return CreateControlTHnSparse(name,sizeEventdphi,binsEventdphi,minEventdphi,maxEventdphi,nameEventdphi);

}

THnSparse* AliDxHFECorrelation::CreateControlTHnSparse(const char* name,
							     int thnSize,
							     int* thnBins,
							     double* thnMin,
							     double* thnMax,
							     const char** binLabels) const
{
  //
  // Creates THnSparse.
  //

  AliInfo("Setting up THnSparse");

  std::auto_ptr<THnSparseD> th(new THnSparseD(name, name, thnSize, thnBins, thnMin, thnMax));
  if (th.get()==NULL) {
    return NULL;
  }
  for (int iLabel=0; iLabel<thnSize; iLabel++) {
    th->GetAxis(iLabel)->SetTitle(binLabels[iLabel]);    
   
  }
  return th.release();

}

int AliDxHFECorrelation::AddControlObject(TObject* pObj)
{
  AliInfo("Adding object");
  /// add control object to list, the base class becomes owner of the object
  if (!pObj) return -EINVAL;
  if (!fControlObjects) {
    fControlObjects=new TList;
    if (!fControlObjects) return -ENOMEM;
    fControlObjects->SetOwner();
  }
  if (fControlObjects->FindObject(pObj->GetName())) {
    AliError(Form("ignoring duplicate object '%s' of type %s", pObj->GetName(), pObj->ClassName()));
    return -EEXIST;
  }
  fControlObjects->Add(pObj);
  return 0;
}

int AliDxHFECorrelation::HistogramEventProperties(int bin)
{
  /// histogram event properties
  if (!fhEventControlCorr) return 0;
  fhEventControlCorr->Fill(bin);

  return 0;
}

int AliDxHFECorrelation::Fill(const TObjArray* triggerCandidates, const TObjArray* associatedTracks, const AliVEvent* pEvent)
{
  //
  // will use AliHFCorrelator to process D0-electron pair and then fill THnSparse.
  //
  if (!triggerCandidates || !associatedTracks) return -EINVAL;
  if (!fControlObjects) {
    Init();
  }
  if (!fControlObjects) {
    AliError("Initialisation failed, can not fill THnSparse");
    return -ENODEV;
  }
  // set the event to be processed
  // TODO: change the correlator class to take the const pointer
  if (!fCorrelator) {
    AliError("working class instance fCorrelator missing");
    return -ENODEV;
  }
  fCorrelator->SetAODEvent(dynamic_cast<AliAODEvent*>(const_cast<AliVEvent*>(pEvent))); 

  Bool_t correlatorON = fCorrelator->Initialize(); //define the pool for mixing
  if(!correlatorON) {
    AliError("AliHFCorrelator didn't initialize the pool correctly or processed a bad event");
    return 1;
  }

  TIter itrigger(triggerCandidates);
  TObject* otrigger=NULL;
  int ctrigger=-1;

  // For the moment this is very specific to D0-electron correlation. Should be 
  // changed to be less specific. 
  while ((otrigger=itrigger())!=NULL) {
    // loop over trigger D0 particle
    ctrigger++;
    AliReducedParticle* ptrigger=dynamic_cast<AliReducedParticle*>(otrigger);
    if (!ptrigger)  continue;

    Double_t phiTrigger = ptrigger->Phi();
    Double_t ptTrigger = ptrigger->Pt();
    Double_t etaTrigger = ptrigger->Eta();

    // set the phi of the D meson in the correct range
    // TODO: Is this correct to do this??
    phiTrigger = fCorrelator->SetCorrectPhiRange(phiTrigger);
    // pass to the object the necessary trigger part parameters
    fCorrelator->SetTriggerParticleProperties(ptTrigger,phiTrigger,etaTrigger); 

    Bool_t execPool = fCorrelator->ProcessEventPool();
    if(fUseEventMixing && !execPool) {
      AliDebug(1,"Mixed event analysis: pool is not ready");
      continue;
    }
    Int_t NofEventsinPool = 1;
    if(fUseEventMixing) NofEventsinPool = fCorrelator->GetNofEventsInPool();
		
    // loop on events in the pool; if it is SE analysis, stops at one
    for (Int_t jMix =0; jMix < NofEventsinPool; jMix++){
      Bool_t analyzetracks = fCorrelator->ProcessAssociatedTracks(jMix, associatedTracks);
			
      if(!analyzetracks) {
	AliError("AliHFCorrelator::Cannot process the track array");
	continue;
      }

      Int_t NofTracks = fCorrelator->GetNofTracks();

      // looping on track candidates
      for(Int_t iTrack = 0; iTrack<NofTracks; iTrack++){ 
	Bool_t runcorrelation = fCorrelator->Correlate(iTrack);
	if(!runcorrelation) continue;
			
	fDeltaPhi = fCorrelator->GetDeltaPhi();
	fDeltaEta = fCorrelator->GetDeltaEta();
	
	AliReducedParticle *assoc = fCorrelator->GetAssociatedParticle();

	FillParticleProperties(ptrigger,assoc,ParticleProperties(),GetDimTHnSparse());
	fCorrProperties->Fill(ParticleProperties());

      } // loop over electron tracks in event
    } // loop over events in pool
  } // loop over trigger particle

  Bool_t updated = fCorrelator->PoolUpdate(associatedTracks);
  if(fUseEventMixing){
    if(!updated) AliDebug(1,"Pool was not updated");
    else {
      EventMixingChecks(pEvent);
      AliDebug(1,"Pool was updated");
    }
  }
  return 0;
}



int AliDxHFECorrelation::FillParticleProperties(AliVParticle* tr, AliVParticle *as, Double_t* data, int dimension) const
{
  // fill the data array from the particle data
  if (!data) return -EINVAL;
  AliReducedParticle *ptrigger=(AliReducedParticle*)tr;
  AliReducedParticle *assoc=(AliReducedParticle*)as;
  if (!ptrigger || !assoc) return -ENODATA;
  int i=0;
  if (dimension!=GetDimTHnSparse()) {
    // TODO: think about filling only the available data and throwing a warning
    return -ENOSPC;
  }
  if(fTriggerParticleType==kD){
    data[i++]=ptrigger->GetInvMass();
    data[i++]=ptrigger->Pt();
    data[i++]=ptrigger->Phi();
    data[i++]=ptrigger->GetPtBin(); 
    data[i++]=assoc->Pt();
  } 
  else{
    data[i++]=assoc->GetInvMass();
    data[i++]=assoc->Pt();
    data[i++]=assoc->Phi();
    data[i++]=assoc->GetPtBin(); 
    data[i++]=ptrigger->Pt();
  }
  data[i++]=GetDeltaPhi();
  data[i++]=GetDeltaEta();

  return i;
}

void AliDxHFECorrelation::Clear(Option_t * /*option*/)
{
  /// overloaded from TObject: cleanup

  // nothing to be done so far
  return TObject::Clear();
}

void AliDxHFECorrelation::Print(Option_t */*option*/) const
{
  /// overloaded from TObject: print info
  cout << "====================================================================" << endl;
  TObject::Print();
  if (fHistograms) {
    fHistograms->Print();
  }
}

void AliDxHFECorrelation::Draw(Option_t */*option*/)
{
  /// overloaded from TObject: draw histograms
}

TObject* AliDxHFECorrelation::FindObject(const char *name) const
{
  /// overloaded from TObject: find object by name
  if (fControlObjects) {
    return fControlObjects->FindObject(name);
  }
  return NULL;
}

TObject* AliDxHFECorrelation::FindObject(const TObject *obj) const
{
  /// overloaded from TObject: find object by pointer
  if (fControlObjects) {
    return fControlObjects->FindObject(obj);
  }
  return NULL;
}

void AliDxHFECorrelation::SaveAs(const char *filename, Option_t */*option*/) const
{
  /// overloaded from TObject: save to file
  std::auto_ptr<TFile> output(TFile::Open(filename, "RECREATE"));
  if (!output.get() || output->IsZombie()) {
    AliError(Form("can not open file %s from writing", filename));
    return;
  }
  output->cd();
  if (fControlObjects) fControlObjects->Write();
  output->Close();
}

AliDxHFECorrelation& AliDxHFECorrelation::operator+=(const AliDxHFECorrelation& other)
{
  /// add histograms from another instance
  // TODO - need to change this to ThnSparse?
  if (!fHistograms || !other.fHistograms) return *this;
  
  for (int i=0; i<kNofHistograms; i++) {
    if (fHistograms->At(i)==NULL || other.fHistograms->At(i)==NULL) continue;
    TH1* target=reinterpret_cast<TH1*>(fHistograms->At(i));
    TH1* source=reinterpret_cast<TH1*>(other.fHistograms->At(i));
    if (!target || !source) continue;
    TString name(fHistograms->At(i)->GetName());
    if (name.CompareTo(target->GetName())!=0) {
      AliWarning(Form("skipping incompatible objects at position %d: %s vs %s", i, source->GetName(), target->GetName()));
      continue;
    }
    if (source->IsA()!=target->IsA()) {
      AliWarning(Form("skipping incompatible classes at position %d: %s vs %s", i, source->ClassName(), target->ClassName()));
      continue;
    }
    target->Add(source);
  }
  return *this;
}


//____________________________  Run checks on event mixing ___________________________________________________
void AliDxHFECorrelation::EventMixingChecks(const AliVEvent* pEvent){
	
  AliAODEvent *AOD= (AliAODEvent*)(pEvent);
  AliCentrality *centralityObj = 0;
  Int_t multiplicity = -1;
  Double_t MultipOrCent = -1;
	
  // get the pool for event mixing
  if(!fSystem){ // pp
    multiplicity = AOD->GetNumberOfTracks();
    MultipOrCent = multiplicity; // convert from Int_t to Double_t
  }
  if(fSystem){ // PbPb		
    centralityObj = ((AliVAODHeader*)AOD->GetHeader())->GetCentralityP();
    MultipOrCent = centralityObj->GetCentralityPercentileUnchecked("V0M");
    AliInfo(Form("Centrality is %f", MultipOrCent));
  }
	
  AliAODVertex *vtx = AOD->GetPrimaryVertex();
  Double_t zvertex = vtx->GetZ(); // zvertex

  AliEventPool *pool = fCorrelator->GetPool();

  ((TH2D*)fControlObjects->FindObject("NofPoolBinCalls"))->Fill(MultipOrCent,zvertex); // number of calls of pool
  ((TH2D*)fControlObjects->FindObject("EventProps"))->Fill(MultipOrCent,zvertex); // event properties
  ((TH3D*)fControlObjects->FindObject("EventsPerPoolBin"))->Fill(MultipOrCent,zvertex,pool->NTracksInPool()); // number of events in the pool
  ((TH3D*)fControlObjects->FindObject("NofTracksPerPoolBin"))->Fill(MultipOrCent,zvertex,pool->GetCurrentNEvents()); // number of calls of pool
}
	
 AliDxHFECorrelation.cxx:1
 AliDxHFECorrelation.cxx:2
 AliDxHFECorrelation.cxx:3
 AliDxHFECorrelation.cxx:4
 AliDxHFECorrelation.cxx:5
 AliDxHFECorrelation.cxx:6
 AliDxHFECorrelation.cxx:7
 AliDxHFECorrelation.cxx:8
 AliDxHFECorrelation.cxx:9
 AliDxHFECorrelation.cxx:10
 AliDxHFECorrelation.cxx:11
 AliDxHFECorrelation.cxx:12
 AliDxHFECorrelation.cxx:13
 AliDxHFECorrelation.cxx:14
 AliDxHFECorrelation.cxx:15
 AliDxHFECorrelation.cxx:16
 AliDxHFECorrelation.cxx:17
 AliDxHFECorrelation.cxx:18
 AliDxHFECorrelation.cxx:19
 AliDxHFECorrelation.cxx:20
 AliDxHFECorrelation.cxx:21
 AliDxHFECorrelation.cxx:22
 AliDxHFECorrelation.cxx:23
 AliDxHFECorrelation.cxx:24
 AliDxHFECorrelation.cxx:25
 AliDxHFECorrelation.cxx:26
 AliDxHFECorrelation.cxx:27
 AliDxHFECorrelation.cxx:28
 AliDxHFECorrelation.cxx:29
 AliDxHFECorrelation.cxx:30
 AliDxHFECorrelation.cxx:31
 AliDxHFECorrelation.cxx:32
 AliDxHFECorrelation.cxx:33
 AliDxHFECorrelation.cxx:34
 AliDxHFECorrelation.cxx:35
 AliDxHFECorrelation.cxx:36
 AliDxHFECorrelation.cxx:37
 AliDxHFECorrelation.cxx:38
 AliDxHFECorrelation.cxx:39
 AliDxHFECorrelation.cxx:40
 AliDxHFECorrelation.cxx:41
 AliDxHFECorrelation.cxx:42
 AliDxHFECorrelation.cxx:43
 AliDxHFECorrelation.cxx:44
 AliDxHFECorrelation.cxx:45
 AliDxHFECorrelation.cxx:46
 AliDxHFECorrelation.cxx:47
 AliDxHFECorrelation.cxx:48
 AliDxHFECorrelation.cxx:49
 AliDxHFECorrelation.cxx:50
 AliDxHFECorrelation.cxx:51
 AliDxHFECorrelation.cxx:52
 AliDxHFECorrelation.cxx:53
 AliDxHFECorrelation.cxx:54
 AliDxHFECorrelation.cxx:55
 AliDxHFECorrelation.cxx:56
 AliDxHFECorrelation.cxx:57
 AliDxHFECorrelation.cxx:58
 AliDxHFECorrelation.cxx:59
 AliDxHFECorrelation.cxx:60
 AliDxHFECorrelation.cxx:61
 AliDxHFECorrelation.cxx:62
 AliDxHFECorrelation.cxx:63
 AliDxHFECorrelation.cxx:64
 AliDxHFECorrelation.cxx:65
 AliDxHFECorrelation.cxx:66
 AliDxHFECorrelation.cxx:67
 AliDxHFECorrelation.cxx:68
 AliDxHFECorrelation.cxx:69
 AliDxHFECorrelation.cxx:70
 AliDxHFECorrelation.cxx:71
 AliDxHFECorrelation.cxx:72
 AliDxHFECorrelation.cxx:73
 AliDxHFECorrelation.cxx:74
 AliDxHFECorrelation.cxx:75
 AliDxHFECorrelation.cxx:76
 AliDxHFECorrelation.cxx:77
 AliDxHFECorrelation.cxx:78
 AliDxHFECorrelation.cxx:79
 AliDxHFECorrelation.cxx:80
 AliDxHFECorrelation.cxx:81
 AliDxHFECorrelation.cxx:82
 AliDxHFECorrelation.cxx:83
 AliDxHFECorrelation.cxx:84
 AliDxHFECorrelation.cxx:85
 AliDxHFECorrelation.cxx:86
 AliDxHFECorrelation.cxx:87
 AliDxHFECorrelation.cxx:88
 AliDxHFECorrelation.cxx:89
 AliDxHFECorrelation.cxx:90
 AliDxHFECorrelation.cxx:91
 AliDxHFECorrelation.cxx:92
 AliDxHFECorrelation.cxx:93
 AliDxHFECorrelation.cxx:94
 AliDxHFECorrelation.cxx:95
 AliDxHFECorrelation.cxx:96
 AliDxHFECorrelation.cxx:97
 AliDxHFECorrelation.cxx:98
 AliDxHFECorrelation.cxx:99
 AliDxHFECorrelation.cxx:100
 AliDxHFECorrelation.cxx:101
 AliDxHFECorrelation.cxx:102
 AliDxHFECorrelation.cxx:103
 AliDxHFECorrelation.cxx:104
 AliDxHFECorrelation.cxx:105
 AliDxHFECorrelation.cxx:106
 AliDxHFECorrelation.cxx:107
 AliDxHFECorrelation.cxx:108
 AliDxHFECorrelation.cxx:109
 AliDxHFECorrelation.cxx:110
 AliDxHFECorrelation.cxx:111
 AliDxHFECorrelation.cxx:112
 AliDxHFECorrelation.cxx:113
 AliDxHFECorrelation.cxx:114
 AliDxHFECorrelation.cxx:115
 AliDxHFECorrelation.cxx:116
 AliDxHFECorrelation.cxx:117
 AliDxHFECorrelation.cxx:118
 AliDxHFECorrelation.cxx:119
 AliDxHFECorrelation.cxx:120
 AliDxHFECorrelation.cxx:121
 AliDxHFECorrelation.cxx:122
 AliDxHFECorrelation.cxx:123
 AliDxHFECorrelation.cxx:124
 AliDxHFECorrelation.cxx:125
 AliDxHFECorrelation.cxx:126
 AliDxHFECorrelation.cxx:127
 AliDxHFECorrelation.cxx:128
 AliDxHFECorrelation.cxx:129
 AliDxHFECorrelation.cxx:130
 AliDxHFECorrelation.cxx:131
 AliDxHFECorrelation.cxx:132
 AliDxHFECorrelation.cxx:133
 AliDxHFECorrelation.cxx:134
 AliDxHFECorrelation.cxx:135
 AliDxHFECorrelation.cxx:136
 AliDxHFECorrelation.cxx:137
 AliDxHFECorrelation.cxx:138
 AliDxHFECorrelation.cxx:139
 AliDxHFECorrelation.cxx:140
 AliDxHFECorrelation.cxx:141
 AliDxHFECorrelation.cxx:142
 AliDxHFECorrelation.cxx:143
 AliDxHFECorrelation.cxx:144
 AliDxHFECorrelation.cxx:145
 AliDxHFECorrelation.cxx:146
 AliDxHFECorrelation.cxx:147
 AliDxHFECorrelation.cxx:148
 AliDxHFECorrelation.cxx:149
 AliDxHFECorrelation.cxx:150
 AliDxHFECorrelation.cxx:151
 AliDxHFECorrelation.cxx:152
 AliDxHFECorrelation.cxx:153
 AliDxHFECorrelation.cxx:154
 AliDxHFECorrelation.cxx:155
 AliDxHFECorrelation.cxx:156
 AliDxHFECorrelation.cxx:157
 AliDxHFECorrelation.cxx:158
 AliDxHFECorrelation.cxx:159
 AliDxHFECorrelation.cxx:160
 AliDxHFECorrelation.cxx:161
 AliDxHFECorrelation.cxx:162
 AliDxHFECorrelation.cxx:163
 AliDxHFECorrelation.cxx:164
 AliDxHFECorrelation.cxx:165
 AliDxHFECorrelation.cxx:166
 AliDxHFECorrelation.cxx:167
 AliDxHFECorrelation.cxx:168
 AliDxHFECorrelation.cxx:169
 AliDxHFECorrelation.cxx:170
 AliDxHFECorrelation.cxx:171
 AliDxHFECorrelation.cxx:172
 AliDxHFECorrelation.cxx:173
 AliDxHFECorrelation.cxx:174
 AliDxHFECorrelation.cxx:175
 AliDxHFECorrelation.cxx:176
 AliDxHFECorrelation.cxx:177
 AliDxHFECorrelation.cxx:178
 AliDxHFECorrelation.cxx:179
 AliDxHFECorrelation.cxx:180
 AliDxHFECorrelation.cxx:181
 AliDxHFECorrelation.cxx:182
 AliDxHFECorrelation.cxx:183
 AliDxHFECorrelation.cxx:184
 AliDxHFECorrelation.cxx:185
 AliDxHFECorrelation.cxx:186
 AliDxHFECorrelation.cxx:187
 AliDxHFECorrelation.cxx:188
 AliDxHFECorrelation.cxx:189
 AliDxHFECorrelation.cxx:190
 AliDxHFECorrelation.cxx:191
 AliDxHFECorrelation.cxx:192
 AliDxHFECorrelation.cxx:193
 AliDxHFECorrelation.cxx:194
 AliDxHFECorrelation.cxx:195
 AliDxHFECorrelation.cxx:196
 AliDxHFECorrelation.cxx:197
 AliDxHFECorrelation.cxx:198
 AliDxHFECorrelation.cxx:199
 AliDxHFECorrelation.cxx:200
 AliDxHFECorrelation.cxx:201
 AliDxHFECorrelation.cxx:202
 AliDxHFECorrelation.cxx:203
 AliDxHFECorrelation.cxx:204
 AliDxHFECorrelation.cxx:205
 AliDxHFECorrelation.cxx:206
 AliDxHFECorrelation.cxx:207
 AliDxHFECorrelation.cxx:208
 AliDxHFECorrelation.cxx:209
 AliDxHFECorrelation.cxx:210
 AliDxHFECorrelation.cxx:211
 AliDxHFECorrelation.cxx:212
 AliDxHFECorrelation.cxx:213
 AliDxHFECorrelation.cxx:214
 AliDxHFECorrelation.cxx:215
 AliDxHFECorrelation.cxx:216
 AliDxHFECorrelation.cxx:217
 AliDxHFECorrelation.cxx:218
 AliDxHFECorrelation.cxx:219
 AliDxHFECorrelation.cxx:220
 AliDxHFECorrelation.cxx:221
 AliDxHFECorrelation.cxx:222
 AliDxHFECorrelation.cxx:223
 AliDxHFECorrelation.cxx:224
 AliDxHFECorrelation.cxx:225
 AliDxHFECorrelation.cxx:226
 AliDxHFECorrelation.cxx:227
 AliDxHFECorrelation.cxx:228
 AliDxHFECorrelation.cxx:229
 AliDxHFECorrelation.cxx:230
 AliDxHFECorrelation.cxx:231
 AliDxHFECorrelation.cxx:232
 AliDxHFECorrelation.cxx:233
 AliDxHFECorrelation.cxx:234
 AliDxHFECorrelation.cxx:235
 AliDxHFECorrelation.cxx:236
 AliDxHFECorrelation.cxx:237
 AliDxHFECorrelation.cxx:238
 AliDxHFECorrelation.cxx:239
 AliDxHFECorrelation.cxx:240
 AliDxHFECorrelation.cxx:241
 AliDxHFECorrelation.cxx:242
 AliDxHFECorrelation.cxx:243
 AliDxHFECorrelation.cxx:244
 AliDxHFECorrelation.cxx:245
 AliDxHFECorrelation.cxx:246
 AliDxHFECorrelation.cxx:247
 AliDxHFECorrelation.cxx:248
 AliDxHFECorrelation.cxx:249
 AliDxHFECorrelation.cxx:250
 AliDxHFECorrelation.cxx:251
 AliDxHFECorrelation.cxx:252
 AliDxHFECorrelation.cxx:253
 AliDxHFECorrelation.cxx:254
 AliDxHFECorrelation.cxx:255
 AliDxHFECorrelation.cxx:256
 AliDxHFECorrelation.cxx:257
 AliDxHFECorrelation.cxx:258
 AliDxHFECorrelation.cxx:259
 AliDxHFECorrelation.cxx:260
 AliDxHFECorrelation.cxx:261
 AliDxHFECorrelation.cxx:262
 AliDxHFECorrelation.cxx:263
 AliDxHFECorrelation.cxx:264
 AliDxHFECorrelation.cxx:265
 AliDxHFECorrelation.cxx:266
 AliDxHFECorrelation.cxx:267
 AliDxHFECorrelation.cxx:268
 AliDxHFECorrelation.cxx:269
 AliDxHFECorrelation.cxx:270
 AliDxHFECorrelation.cxx:271
 AliDxHFECorrelation.cxx:272
 AliDxHFECorrelation.cxx:273
 AliDxHFECorrelation.cxx:274
 AliDxHFECorrelation.cxx:275
 AliDxHFECorrelation.cxx:276
 AliDxHFECorrelation.cxx:277
 AliDxHFECorrelation.cxx:278
 AliDxHFECorrelation.cxx:279
 AliDxHFECorrelation.cxx:280
 AliDxHFECorrelation.cxx:281
 AliDxHFECorrelation.cxx:282
 AliDxHFECorrelation.cxx:283
 AliDxHFECorrelation.cxx:284
 AliDxHFECorrelation.cxx:285
 AliDxHFECorrelation.cxx:286
 AliDxHFECorrelation.cxx:287
 AliDxHFECorrelation.cxx:288
 AliDxHFECorrelation.cxx:289
 AliDxHFECorrelation.cxx:290
 AliDxHFECorrelation.cxx:291
 AliDxHFECorrelation.cxx:292
 AliDxHFECorrelation.cxx:293
 AliDxHFECorrelation.cxx:294
 AliDxHFECorrelation.cxx:295
 AliDxHFECorrelation.cxx:296
 AliDxHFECorrelation.cxx:297
 AliDxHFECorrelation.cxx:298
 AliDxHFECorrelation.cxx:299
 AliDxHFECorrelation.cxx:300
 AliDxHFECorrelation.cxx:301
 AliDxHFECorrelation.cxx:302
 AliDxHFECorrelation.cxx:303
 AliDxHFECorrelation.cxx:304
 AliDxHFECorrelation.cxx:305
 AliDxHFECorrelation.cxx:306
 AliDxHFECorrelation.cxx:307
 AliDxHFECorrelation.cxx:308
 AliDxHFECorrelation.cxx:309
 AliDxHFECorrelation.cxx:310
 AliDxHFECorrelation.cxx:311
 AliDxHFECorrelation.cxx:312
 AliDxHFECorrelation.cxx:313
 AliDxHFECorrelation.cxx:314
 AliDxHFECorrelation.cxx:315
 AliDxHFECorrelation.cxx:316
 AliDxHFECorrelation.cxx:317
 AliDxHFECorrelation.cxx:318
 AliDxHFECorrelation.cxx:319
 AliDxHFECorrelation.cxx:320
 AliDxHFECorrelation.cxx:321
 AliDxHFECorrelation.cxx:322
 AliDxHFECorrelation.cxx:323
 AliDxHFECorrelation.cxx:324
 AliDxHFECorrelation.cxx:325
 AliDxHFECorrelation.cxx:326
 AliDxHFECorrelation.cxx:327
 AliDxHFECorrelation.cxx:328
 AliDxHFECorrelation.cxx:329
 AliDxHFECorrelation.cxx:330
 AliDxHFECorrelation.cxx:331
 AliDxHFECorrelation.cxx:332
 AliDxHFECorrelation.cxx:333
 AliDxHFECorrelation.cxx:334
 AliDxHFECorrelation.cxx:335
 AliDxHFECorrelation.cxx:336
 AliDxHFECorrelation.cxx:337
 AliDxHFECorrelation.cxx:338
 AliDxHFECorrelation.cxx:339
 AliDxHFECorrelation.cxx:340
 AliDxHFECorrelation.cxx:341
 AliDxHFECorrelation.cxx:342
 AliDxHFECorrelation.cxx:343
 AliDxHFECorrelation.cxx:344
 AliDxHFECorrelation.cxx:345
 AliDxHFECorrelation.cxx:346
 AliDxHFECorrelation.cxx:347
 AliDxHFECorrelation.cxx:348
 AliDxHFECorrelation.cxx:349
 AliDxHFECorrelation.cxx:350
 AliDxHFECorrelation.cxx:351
 AliDxHFECorrelation.cxx:352
 AliDxHFECorrelation.cxx:353
 AliDxHFECorrelation.cxx:354
 AliDxHFECorrelation.cxx:355
 AliDxHFECorrelation.cxx:356
 AliDxHFECorrelation.cxx:357
 AliDxHFECorrelation.cxx:358
 AliDxHFECorrelation.cxx:359
 AliDxHFECorrelation.cxx:360
 AliDxHFECorrelation.cxx:361
 AliDxHFECorrelation.cxx:362
 AliDxHFECorrelation.cxx:363
 AliDxHFECorrelation.cxx:364
 AliDxHFECorrelation.cxx:365
 AliDxHFECorrelation.cxx:366
 AliDxHFECorrelation.cxx:367
 AliDxHFECorrelation.cxx:368
 AliDxHFECorrelation.cxx:369
 AliDxHFECorrelation.cxx:370
 AliDxHFECorrelation.cxx:371
 AliDxHFECorrelation.cxx:372
 AliDxHFECorrelation.cxx:373
 AliDxHFECorrelation.cxx:374
 AliDxHFECorrelation.cxx:375
 AliDxHFECorrelation.cxx:376
 AliDxHFECorrelation.cxx:377
 AliDxHFECorrelation.cxx:378
 AliDxHFECorrelation.cxx:379
 AliDxHFECorrelation.cxx:380
 AliDxHFECorrelation.cxx:381
 AliDxHFECorrelation.cxx:382
 AliDxHFECorrelation.cxx:383
 AliDxHFECorrelation.cxx:384
 AliDxHFECorrelation.cxx:385
 AliDxHFECorrelation.cxx:386
 AliDxHFECorrelation.cxx:387
 AliDxHFECorrelation.cxx:388
 AliDxHFECorrelation.cxx:389
 AliDxHFECorrelation.cxx:390
 AliDxHFECorrelation.cxx:391
 AliDxHFECorrelation.cxx:392
 AliDxHFECorrelation.cxx:393
 AliDxHFECorrelation.cxx:394
 AliDxHFECorrelation.cxx:395
 AliDxHFECorrelation.cxx:396
 AliDxHFECorrelation.cxx:397
 AliDxHFECorrelation.cxx:398
 AliDxHFECorrelation.cxx:399
 AliDxHFECorrelation.cxx:400
 AliDxHFECorrelation.cxx:401
 AliDxHFECorrelation.cxx:402
 AliDxHFECorrelation.cxx:403
 AliDxHFECorrelation.cxx:404
 AliDxHFECorrelation.cxx:405
 AliDxHFECorrelation.cxx:406
 AliDxHFECorrelation.cxx:407
 AliDxHFECorrelation.cxx:408
 AliDxHFECorrelation.cxx:409
 AliDxHFECorrelation.cxx:410
 AliDxHFECorrelation.cxx:411
 AliDxHFECorrelation.cxx:412
 AliDxHFECorrelation.cxx:413
 AliDxHFECorrelation.cxx:414
 AliDxHFECorrelation.cxx:415
 AliDxHFECorrelation.cxx:416
 AliDxHFECorrelation.cxx:417
 AliDxHFECorrelation.cxx:418
 AliDxHFECorrelation.cxx:419
 AliDxHFECorrelation.cxx:420
 AliDxHFECorrelation.cxx:421
 AliDxHFECorrelation.cxx:422
 AliDxHFECorrelation.cxx:423
 AliDxHFECorrelation.cxx:424
 AliDxHFECorrelation.cxx:425
 AliDxHFECorrelation.cxx:426
 AliDxHFECorrelation.cxx:427
 AliDxHFECorrelation.cxx:428
 AliDxHFECorrelation.cxx:429
 AliDxHFECorrelation.cxx:430
 AliDxHFECorrelation.cxx:431
 AliDxHFECorrelation.cxx:432
 AliDxHFECorrelation.cxx:433
 AliDxHFECorrelation.cxx:434
 AliDxHFECorrelation.cxx:435
 AliDxHFECorrelation.cxx:436
 AliDxHFECorrelation.cxx:437
 AliDxHFECorrelation.cxx:438
 AliDxHFECorrelation.cxx:439
 AliDxHFECorrelation.cxx:440
 AliDxHFECorrelation.cxx:441
 AliDxHFECorrelation.cxx:442
 AliDxHFECorrelation.cxx:443
 AliDxHFECorrelation.cxx:444
 AliDxHFECorrelation.cxx:445
 AliDxHFECorrelation.cxx:446
 AliDxHFECorrelation.cxx:447
 AliDxHFECorrelation.cxx:448
 AliDxHFECorrelation.cxx:449
 AliDxHFECorrelation.cxx:450
 AliDxHFECorrelation.cxx:451
 AliDxHFECorrelation.cxx:452
 AliDxHFECorrelation.cxx:453
 AliDxHFECorrelation.cxx:454
 AliDxHFECorrelation.cxx:455
 AliDxHFECorrelation.cxx:456
 AliDxHFECorrelation.cxx:457
 AliDxHFECorrelation.cxx:458
 AliDxHFECorrelation.cxx:459
 AliDxHFECorrelation.cxx:460
 AliDxHFECorrelation.cxx:461
 AliDxHFECorrelation.cxx:462
 AliDxHFECorrelation.cxx:463
 AliDxHFECorrelation.cxx:464
 AliDxHFECorrelation.cxx:465
 AliDxHFECorrelation.cxx:466
 AliDxHFECorrelation.cxx:467
 AliDxHFECorrelation.cxx:468
 AliDxHFECorrelation.cxx:469
 AliDxHFECorrelation.cxx:470
 AliDxHFECorrelation.cxx:471
 AliDxHFECorrelation.cxx:472
 AliDxHFECorrelation.cxx:473
 AliDxHFECorrelation.cxx:474
 AliDxHFECorrelation.cxx:475
 AliDxHFECorrelation.cxx:476
 AliDxHFECorrelation.cxx:477
 AliDxHFECorrelation.cxx:478
 AliDxHFECorrelation.cxx:479
 AliDxHFECorrelation.cxx:480
 AliDxHFECorrelation.cxx:481
 AliDxHFECorrelation.cxx:482
 AliDxHFECorrelation.cxx:483
 AliDxHFECorrelation.cxx:484
 AliDxHFECorrelation.cxx:485
 AliDxHFECorrelation.cxx:486
 AliDxHFECorrelation.cxx:487
 AliDxHFECorrelation.cxx:488
 AliDxHFECorrelation.cxx:489
 AliDxHFECorrelation.cxx:490
 AliDxHFECorrelation.cxx:491
 AliDxHFECorrelation.cxx:492
 AliDxHFECorrelation.cxx:493
 AliDxHFECorrelation.cxx:494
 AliDxHFECorrelation.cxx:495
 AliDxHFECorrelation.cxx:496
 AliDxHFECorrelation.cxx:497
 AliDxHFECorrelation.cxx:498
 AliDxHFECorrelation.cxx:499
 AliDxHFECorrelation.cxx:500
 AliDxHFECorrelation.cxx:501
 AliDxHFECorrelation.cxx:502
 AliDxHFECorrelation.cxx:503
 AliDxHFECorrelation.cxx:504
 AliDxHFECorrelation.cxx:505
 AliDxHFECorrelation.cxx:506
 AliDxHFECorrelation.cxx:507
 AliDxHFECorrelation.cxx:508
 AliDxHFECorrelation.cxx:509
 AliDxHFECorrelation.cxx:510
 AliDxHFECorrelation.cxx:511
 AliDxHFECorrelation.cxx:512
 AliDxHFECorrelation.cxx:513
 AliDxHFECorrelation.cxx:514
 AliDxHFECorrelation.cxx:515
 AliDxHFECorrelation.cxx:516
 AliDxHFECorrelation.cxx:517
 AliDxHFECorrelation.cxx:518
 AliDxHFECorrelation.cxx:519
 AliDxHFECorrelation.cxx:520
 AliDxHFECorrelation.cxx:521
 AliDxHFECorrelation.cxx:522
 AliDxHFECorrelation.cxx:523
 AliDxHFECorrelation.cxx:524
 AliDxHFECorrelation.cxx:525
 AliDxHFECorrelation.cxx:526
 AliDxHFECorrelation.cxx:527
 AliDxHFECorrelation.cxx:528
 AliDxHFECorrelation.cxx:529
 AliDxHFECorrelation.cxx:530
 AliDxHFECorrelation.cxx:531
 AliDxHFECorrelation.cxx:532
 AliDxHFECorrelation.cxx:533
 AliDxHFECorrelation.cxx:534
 AliDxHFECorrelation.cxx:535
 AliDxHFECorrelation.cxx:536
 AliDxHFECorrelation.cxx:537
 AliDxHFECorrelation.cxx:538
 AliDxHFECorrelation.cxx:539
 AliDxHFECorrelation.cxx:540
 AliDxHFECorrelation.cxx:541
 AliDxHFECorrelation.cxx:542
 AliDxHFECorrelation.cxx:543
 AliDxHFECorrelation.cxx:544
 AliDxHFECorrelation.cxx:545
 AliDxHFECorrelation.cxx:546
 AliDxHFECorrelation.cxx:547
 AliDxHFECorrelation.cxx:548
 AliDxHFECorrelation.cxx:549
 AliDxHFECorrelation.cxx:550
 AliDxHFECorrelation.cxx:551
 AliDxHFECorrelation.cxx:552
 AliDxHFECorrelation.cxx:553
 AliDxHFECorrelation.cxx:554
 AliDxHFECorrelation.cxx:555
 AliDxHFECorrelation.cxx:556
 AliDxHFECorrelation.cxx:557
 AliDxHFECorrelation.cxx:558
 AliDxHFECorrelation.cxx:559
 AliDxHFECorrelation.cxx:560
 AliDxHFECorrelation.cxx:561
 AliDxHFECorrelation.cxx:562
 AliDxHFECorrelation.cxx:563
 AliDxHFECorrelation.cxx:564
 AliDxHFECorrelation.cxx:565
 AliDxHFECorrelation.cxx:566
 AliDxHFECorrelation.cxx:567
 AliDxHFECorrelation.cxx:568
 AliDxHFECorrelation.cxx:569
 AliDxHFECorrelation.cxx:570
 AliDxHFECorrelation.cxx:571
 AliDxHFECorrelation.cxx:572
 AliDxHFECorrelation.cxx:573
 AliDxHFECorrelation.cxx:574
 AliDxHFECorrelation.cxx:575
 AliDxHFECorrelation.cxx:576
 AliDxHFECorrelation.cxx:577
 AliDxHFECorrelation.cxx:578
 AliDxHFECorrelation.cxx:579
 AliDxHFECorrelation.cxx:580
 AliDxHFECorrelation.cxx:581
 AliDxHFECorrelation.cxx:582
 AliDxHFECorrelation.cxx:583
 AliDxHFECorrelation.cxx:584
 AliDxHFECorrelation.cxx:585
 AliDxHFECorrelation.cxx:586
 AliDxHFECorrelation.cxx:587
 AliDxHFECorrelation.cxx:588
 AliDxHFECorrelation.cxx:589
 AliDxHFECorrelation.cxx:590
 AliDxHFECorrelation.cxx:591
 AliDxHFECorrelation.cxx:592
 AliDxHFECorrelation.cxx:593
 AliDxHFECorrelation.cxx:594
 AliDxHFECorrelation.cxx:595
 AliDxHFECorrelation.cxx:596
 AliDxHFECorrelation.cxx:597
 AliDxHFECorrelation.cxx:598
 AliDxHFECorrelation.cxx:599
 AliDxHFECorrelation.cxx:600
 AliDxHFECorrelation.cxx:601
 AliDxHFECorrelation.cxx:602
 AliDxHFECorrelation.cxx:603
 AliDxHFECorrelation.cxx:604
 AliDxHFECorrelation.cxx:605
 AliDxHFECorrelation.cxx:606
 AliDxHFECorrelation.cxx:607
 AliDxHFECorrelation.cxx:608
 AliDxHFECorrelation.cxx:609
 AliDxHFECorrelation.cxx:610
 AliDxHFECorrelation.cxx:611
 AliDxHFECorrelation.cxx:612
 AliDxHFECorrelation.cxx:613
 AliDxHFECorrelation.cxx:614
 AliDxHFECorrelation.cxx:615