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.                  *
 **************************************************************************/
//
// QA class of Heavy Flavor quark and fragmeted/decayed particles
// -Check kinematics of Heavy Quarks/hadrons, and decayed leptons
//    pT, rapidity
//    decay lepton kinematics w/wo acceptance
//    heavy hadron decay length, electron pT fraction carried from decay
// -Check yield of Heavy Quarks/hadrons
//    Number of produced heavy quark
//    Number of produced hadron of given pdg code
//
//
// Authors:
//   MinJung Kweon <minjung@physi.uni-heidelberg.de>
//

#include <TH2F.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TList.h>
#include <TParticle.h>
#include "TTreeStream.h"

#include <AliLog.h>
#include <AliMCEvent.h>
#include <AliGenEventHeader.h>
#include <AliAODMCParticle.h>
#include <AliStack.h>

#include "AliHFEmcQA.h"
#include "AliHFEtools.h"
#include "AliHFEcollection.h"

ClassImp(AliHFEmcQA)

//_______________________________________________________________________________________________
AliHFEmcQA::AliHFEmcQA() :
fMCEvent(NULL)
  ,fMCHeader(NULL)
  ,fMCArray(NULL)
  ,fQAhistos(NULL)
  ,fMCQACollection(NULL)
  ,fNparents(0)
  ,fCentrality(0)
  ,fPerCentrality(-1)
  ,fIsPbPb(kFALSE)
  ,fIsppMultiBin(kFALSE)
  ,fContainerStep(0)
  ,fIsDebugStreamerON(kFALSE)
  ,fRecPt(-999)
  ,fRecEta(-999)
  ,fRecPhi(-999)
  ,fLyrhit(0)
  ,fLyrstat(0)
  ,fHfeImpactR(-999)
  ,fHfeImpactnsigmaR(-999)
  ,fTreeStream(NULL)
  ,fGetWeightHist(kFALSE)
{
  // Default constructor
  for(Int_t mom = 0; mom < 9; mom++){
    fhD[mom] = NULL;
  }
  for(Int_t mom = 0; mom < 50; mom++){
    fHeavyQuark[mom] = NULL;
  }
  for(Int_t mom = 0; mom < 2; mom++){
    fIsHeavy[mom] = 0;
  }
  memset(fElecBackgroundFactor, 0, sizeof(Double_t) * kElecBgSpecies * kBgPtBins * kCentBins * kBgLevels);
  memset(fBinLimit, 0, sizeof(Double_t) * (kBgPtBins+1));
}

//_______________________________________________________________________________________________
AliHFEmcQA::AliHFEmcQA(const AliHFEmcQA&p):
  TObject(p)
  ,fMCEvent(NULL)
  ,fMCHeader(NULL)
  ,fMCArray(NULL)
  ,fQAhistos(p.fQAhistos)
  ,fMCQACollection(p.fMCQACollection)
  ,fNparents(p.fNparents)
  ,fCentrality(0)
  ,fPerCentrality(-1)
  ,fIsPbPb(kFALSE)
  ,fIsppMultiBin(kFALSE)
  ,fContainerStep(0)
  ,fIsDebugStreamerON(kFALSE)
  ,fRecPt(-999)
  ,fRecEta(-999)
  ,fRecPhi(-999)
  ,fLyrhit(0)
  ,fLyrstat(0)
  ,fHfeImpactR(0)
  ,fHfeImpactnsigmaR(0)
  ,fTreeStream(NULL)
  ,fGetWeightHist(kFALSE)
{
  // Copy constructor
  for(Int_t mom = 0; mom < 9; mom++){
    fhD[mom] = NULL;
  }
  for(Int_t mom = 0; mom < 50; mom++){
    fHeavyQuark[mom] = NULL;
  }
  for(Int_t mom = 0; mom < 2; mom++){
    fIsHeavy[mom] = 0;
  }
  memset(fElecBackgroundFactor, 0, sizeof(Double_t) * kElecBgSpecies * kBgPtBins * kCentBins * kBgLevels);
  memset(fBinLimit, 0, sizeof(Double_t) * (kBgPtBins+1));
}
//_______________________________________________________________________________________________
AliHFEmcQA&
AliHFEmcQA::operator=(const AliHFEmcQA &)
{
  // Assignment operator
  
  AliInfo("Not yet implemented.");
  return *this;
}

//_______________________________________________________________________________________________
AliHFEmcQA::~AliHFEmcQA()
{
  // Destructor
  
  if(fTreeStream && fIsDebugStreamerON) delete fTreeStream;
  AliInfo("Analysis Done.");
}
//_______________________________________________________________________________________________
void AliHFEmcQA::PostAnalyze() const
{
  //
  // Post analysis
  //
}
//_______________________________________________________________________________________________
void AliHFEmcQA::SetBackgroundWeightFactor(Double_t *elecBackgroundFactor, Double_t *binLimit)
{
  //
  // copy background weighting factors into data member
  //
  
  memcpy(fElecBackgroundFactor,elecBackgroundFactor,sizeof(Double_t) * kElecBgSpecies * kBgPtBins * kCentBins * kBgLevels);
  memcpy(fBinLimit,binLimit,sizeof(Double_t) * (kBgPtBins+1));
}
//__________________________________________
void AliHFEmcQA::CreatDefaultHistograms(TList * const qaList)
{      
  //
  // make default histograms
  //
  
  if(!qaList) return;
  
  fQAhistos = qaList;
  fQAhistos->SetName("MCqa");
  
  CreateHistograms(AliHFEmcQA::kCharm);               // create histograms for charm
  CreateHistograms(AliHFEmcQA::kBeauty);              // create histograms for beauty
  CreateHistograms(AliHFEmcQA::kOthers);              // create histograms for beauty
  
  // prepare 2D(pt vs Y) histogram for D spectra, we consider following 9 particles
  const Int_t nbspecies = 9;
  TString kDspecies[nbspecies];
  kDspecies[0]="411";   //D+
  kDspecies[1]="421";   //D0
  kDspecies[2]="431";   //Ds+
  kDspecies[3]="4122";  //Lambdac+
  kDspecies[4]="4132";  //Ksic0
  kDspecies[5]="4232";  //Ksic+
  kDspecies[6]="4332";  //OmegaC0
  kDspecies[7]="413";   //D*(2010)+
  kDspecies[8]="423";   //D*(2007)0

  const Double_t kPtbound[2] = {0.1, 20.}; //bin taken for considering inclusive e analysis binning
  Int_t iBin[2];
  iBin[0] = 44; // bins in pt for log binning
  iBin[1] = 23; // bins in pt for pi0 measurement binning
  //Double_t* binEdges[1];
  //binEdges[0] =  AliHFEtools::MakeLogarithmicBinning(iBin[0], kPtbound[0], kPtbound[1]);

  // bin size is chosen to consider ALICE D measurement
  const Int_t nptbins = 15;
  const Int_t nybins = 9;
  Double_t xbins[nptbins+1]={0,0.5,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,12,16,24,32,40,50}; //pt binning for the final 7 TeV D measurement 
  Double_t ybins[nybins+1]={-7.5,-1.0,-0.9,-0.8,-0.5,0.5,0.8,0.9,1.0,7.5}; // y binning
  TString hname;
  for (Int_t iDmeson=0; iDmeson<nbspecies; iDmeson++){
     hname = "Dmeson"+kDspecies[iDmeson];
     fhD[iDmeson] = new TH2F(hname,hname+";p_{T} (GeV/c)",nptbins,xbins,nybins,ybins);
     if(fQAhistos) fQAhistos->Add(fhD[iDmeson]);
  }

  const Double_t kPtRange[24] = {0.,0.3,0.4,0.5,0.6,0.8,1.,1.2,1.4,1.6,1.8,2.,2.2,2.4,2.6,2.8,3.,3.5,4.,5.,6.,7.,20.,30.}; // to cope with Ana's bin

  Int_t kNcent;
  if(fIsPbPb) kNcent=11;
  else
  {
      if(fIsppMultiBin) kNcent=8;
      else kNcent = 1;
  }

  fMCQACollection = new AliHFEcollection("TaskMCQA", "MC QA histos for meason pt spectra");

  for(Int_t centbin=0; centbin<kNcent; centbin++)
  {
      fMCQACollection->CreateTH1Farray(Form("pionspectra_centrbin%i",centbin), "pion yields: MC p_{t} ", iBin[1],kPtRange);
      fMCQACollection->CreateTH1Farray(Form("etaspectra_centrbin%i",centbin), "eta yields: MC p_{t} ", iBin[1],kPtRange);
      fMCQACollection->CreateTH1Farray(Form("omegaspectra_centrbin%i",centbin), "omega yields: MC p_{t} ", iBin[1],kPtRange);
      fMCQACollection->CreateTH1Farray(Form("phispectra_centrbin%i",centbin), "phi yields: MC p_{t} ", iBin[1],kPtRange);
      fMCQACollection->CreateTH1Farray(Form("etapspectra_centrbin%i",centbin), "etap yields: MC p_{t} ", iBin[1],kPtRange);
      fMCQACollection->CreateTH1Farray(Form("rhospectra_centrbin%i",centbin), "rho yields: MC p_{t} ", iBin[1],kPtRange);

      fMCQACollection->CreateTH1Farray(Form("pionspectrapri_centrbin%i",centbin), "pion yields: MC p_{t} ", iBin[1],kPtRange);
      fMCQACollection->CreateTH1Farray(Form("etaspectrapri_centrbin%i",centbin), "eta yields: MC p_{t} ", iBin[1],kPtRange);
      fMCQACollection->CreateTH1Farray(Form("pionspectrasec_centrbin%i",centbin), "pion yields: MC p_{t} ", iBin[1],kPtRange);
      fMCQACollection->CreateTH1Farray(Form("etaspectrasec_centrbin%i",centbin), "eta yields: MC p_{t} ", iBin[1],kPtRange);
      fMCQACollection->CreateTH1Farray(Form("pionspectraLogpri_centrbin%i",centbin), "pion yields: MC p_{t} ", iBin[1],kPtRange);
      fMCQACollection->CreateTH1Farray(Form("etaspectraLogpri_centrbin%i",centbin), "eta yields: MC p_{t} ", iBin[1],kPtRange);
      fMCQACollection->CreateTH1Farray(Form("pionspectraLogsec_centrbin%i",centbin), "pion yields: MC p_{t} ", iBin[1],kPtRange);
      fMCQACollection->CreateTH1Farray(Form("etaspectraLogsec_centrbin%i",centbin), "eta yields: MC p_{t} ", iBin[1],kPtRange);

      fMCQACollection->CreateTH1F(Form("pionspectraLog_centrbin%i",centbin), "pion yields: MC p_{t} ", iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH1F(Form("etaspectraLog_centrbin%i",centbin), "eta yields: MC p_{t} ", iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH1F(Form("omegaspectraLog_centrbin%i",centbin), "omega yields: MC p_{t} ", iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH1F(Form("phispectraLog_centrbin%i",centbin), "phi yields: MC p_{t} ", iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH1F(Form("etapspectraLog_centrbin%i",centbin), "etap yields: MC p_{t} ", iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH1F(Form("rhospectraLog_centrbin%i",centbin), "rho yields: MC p_{t} ", iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH1F(Form("kaonspectraLog_centrbin%i",centbin), "kaon yields: MC p_{t} ", iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH1F(Form("k0LspectraLog_centrbin%i",centbin), "k0L yields: MC p_{t} ", iBin[0],kPtbound[0], kPtbound[1], 1);

      fMCQACollection->CreateTH2F(Form("pionspectraLog2D_centrbin%i",centbin), "pion yields: MC p_{t} ", 32, -1.5, 30.5, iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH2F(Form("etaspectraLog2D_centrbin%i",centbin), "eta yields: MC p_{t} ", 32, -1.5, 30.5, iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH2F(Form("omegaspectraLog2D_centrbin%i",centbin), "omega yields: MC p_{t} ", 32, -1.5, 30.5, iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH2F(Form("phispectraLog2D_centrbin%i",centbin), "phi yields: MC p_{t} ", 32, -1.5, 30.5, iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH2F(Form("etapspectraLog2D_centrbin%i",centbin), "etap yields: MC p_{t} ", 32, -1.5, 30.5, iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH2F(Form("rhospectraLog2D_centrbin%i",centbin), "rho yields: MC p_{t} ", 32, -1.5, 30.5, iBin[0],kPtbound[0], kPtbound[1], 1);

      fMCQACollection->CreateTH1F(Form("piondaughters_centrbin%i",centbin), "pion yields: MC p_{t} ", iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH1F(Form("etadaughters_centrbin%i",centbin), "eta yields: MC p_{t} ", iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH1F(Form("omegadaughters_centrbin%i",centbin), "omega yields: MC p_{t} ", iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH1F(Form("phidaughters_centrbin%i",centbin), "phi yields: MC p_{t} ", iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH1F(Form("etapdaughters_centrbin%i",centbin), "etap yields: MC p_{t} ", iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH1F(Form("rhodaughters_centrbin%i",centbin), "rho yields: MC p_{t} ", iBin[0],kPtbound[0], kPtbound[1], 1);

      fMCQACollection->CreateTH1F(Form("pionspectraPrimary_centrbin%i",centbin), "pion yields: MC p_{t} ", iBin[0],kPtbound[0], kPtbound[1], 1);
      fMCQACollection->CreateTH1F(Form("etaspectraPrimary_centrbin%i",centbin), "eta yields: MC p_{t} ", iBin[0],kPtbound[0], kPtbound[1], 1);
  }

  fQAhistos->Add(fMCQACollection->GetList());

  if(!fTreeStream && fIsDebugStreamerON){
   fTreeStream = new TTreeSRedirector(Form("HFEmcqadebugTree%s.root", GetName()));
  }

}
  
//__________________________________________
void AliHFEmcQA::CreateHistograms(const Int_t kquark) 
{
  // create histograms

  if (!(kquark == kCharm || kquark == kBeauty || kquark == kOthers)) {
    AliDebug(1, "This task is only for heavy quark QA, return\n");
    return; 
  }
  Int_t iq = kquark - kCharm; 

  TString kqTypeLabel[fgkqType];
  if (kquark == kCharm){
    kqTypeLabel[kQuark]="c";
    kqTypeLabel[kantiQuark]="cbar";
    kqTypeLabel[kHadron]="cHadron";
    kqTypeLabel[keHadron]="ceHadron";
    kqTypeLabel[kDeHadron]="nullHadron";
    kqTypeLabel[kElectron]="ce";
    kqTypeLabel[kElectron2nd]="nulle";
  } else if (kquark == kBeauty){
    kqTypeLabel[kQuark]="b";
    kqTypeLabel[kantiQuark]="bbar";
    kqTypeLabel[kHadron]="bHadron";
    kqTypeLabel[keHadron]="beHadron";
    kqTypeLabel[kDeHadron]="bDeHadron";
    kqTypeLabel[kElectron]="be";
    kqTypeLabel[kElectron2nd]="bce";
  } else if (kquark == kOthers){
    kqTypeLabel[kGamma-4]="gammae";
    kqTypeLabel[kPi0-4]="pi0e";
    kqTypeLabel[kElse-4]="elsee";
    kqTypeLabel[kMisID-4]="miside";
  }

  TString kqEtaRangeLabel[fgkEtaRanges];
  kqEtaRangeLabel[0] = "mcqa_";
  kqEtaRangeLabel[1] = "mcqa_barrel_";
  kqEtaRangeLabel[2] = "mcqa_unitY_";

  //const Double_t kPtbound[2] = {0.1, 20.}; //bin taken for considering inclusive e analysis binning
  const Int_t nptbinning1 = 35;
  Int_t iBin[2];
  iBin[0] = 44; // bins in pt
  iBin[1] = nptbinning1; // bins in pt
  //Double_t* binEdges[1];
  //binEdges[0] =  AliHFEtools::MakeLogarithmicBinning(iBin[0], kPtbound[0], kPtbound[1]);

  // new binning for final electron analysis
  const Double_t kPtbinning1[nptbinning1+1] = {0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1., 1.1, 1.2, 1.3, 1.4, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.5, 4., 4.5, 5., 5.5, 6., 7., 8., 10., 12., 14., 16., 18., 20.};

  const Int_t ndptbins = 500;
  Double_t xcorrbin[ndptbins+1];
  for (int icorrbin = 0; icorrbin< ndptbins+1; icorrbin++){
    xcorrbin[icorrbin]=icorrbin*0.1;
  }

  Int_t fCentrmax = 0;
  if(!fIsPbPb&&!fIsppMultiBin) fCentrmax=0;
  else fCentrmax = kCentBins;
  TString hname; 
  if(kquark == kOthers){
   for (Int_t icut = 0; icut < fgkEtaRanges; icut++ ){
       for (Int_t iqType = 0; iqType < 4; iqType++ ){
	   for(Int_t icentr = 0; icentr < (fCentrmax+1); icentr++)
	   {
	       hname = kqEtaRangeLabel[icut]+"Pt_"+kqTypeLabel[iqType];
	       fHist[iq][iqType][icut][icentr].fPt = new TH1F(Form("%sCentr_%i",hname.Data(),icentr),Form("%sCentr_%i;p_{T} (GeV/c)",hname.Data(),icentr),60,0.25,30.25);
	       hname = kqEtaRangeLabel[icut]+"Y_"+kqTypeLabel[iqType];
	       fHist[iq][iqType][icut][icentr].fY = new TH1F(Form("%sCentr_%i",hname.Data(),icentr),Form("%sCentr_%i;y",hname.Data(),icentr),150,-7.5,7.5);
	       hname = kqEtaRangeLabel[icut]+"Eta_"+kqTypeLabel[iqType];
	       fHist[iq][iqType][icut][icentr].fEta = new TH1F(Form("%sCentr_%i",hname.Data(),icentr),Form("%sCentr_%i;eta",hname.Data(),icentr),150,-7.5,7.5);
	       // Fill List
	       if(fQAhistos) fHist[iq][iqType][icut][icentr].FillList(fQAhistos);
	   }
       }
   }
   return;
  }
  for (Int_t icut = 0; icut < fgkEtaRanges; icut++ ){
   for (Int_t iqType = 0; iqType < fgkqType; iqType++ ){
       if (iqType < keHadron && icut > 0) continue; // don't duplicate histogram for quark and hadron
        for(Int_t icentr = 0; icentr<(fCentrmax+1); icentr++)
	   {
	       hname = kqEtaRangeLabel[icut]+"PdgCode_"+kqTypeLabel[iqType];
	       fHist[iq][iqType][icut][icentr].fPdgCode = new TH1F(Form("%sCentr_%i",hname.Data(),icentr),Form("%sCentr_%i;PdgCode",hname.Data(),icentr),20001,-10000.5,10000.5);
	       hname = kqEtaRangeLabel[icut]+"Pt_"+kqTypeLabel[iqType];
	       fHist[iq][iqType][icut][icentr].fPt = new TH1F(Form("%sCentr_%i",hname.Data(),icentr),Form("%sCentr_%i;p_{T} (GeV/c)",hname.Data(),icentr),iBin[1],kPtbinning1); // new binning
	       hname = kqEtaRangeLabel[icut]+"Y_"+kqTypeLabel[iqType];
	       fHist[iq][iqType][icut][icentr].fY = new TH1F(Form("%sCentr_%i",hname.Data(),icentr),Form("%sCentr_%i;y",hname.Data(),icentr),150,-7.5,7.5);
	       hname = kqEtaRangeLabel[icut]+"Eta_"+kqTypeLabel[iqType];
	       fHist[iq][iqType][icut][icentr].fEta = new TH1F(Form("%sCentr_%i",hname.Data(),icentr),Form("%sCentr_%i;eta",hname.Data(),icentr),150,-7.5,7.5);
	       // Fill List
	       if(fQAhistos) fHist[iq][iqType][icut][icentr].FillList(fQAhistos);
	   }
   }
  }

  for (Int_t icut = 0; icut < fgkEtaRanges; icut++ ){
    hname = kqEtaRangeLabel[icut]+"PtCorr_"+kqTypeLabel[kQuark];
    fHistComm[iq][icut].fPtCorr = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); 
    hname = kqEtaRangeLabel[icut]+"PtCorrDp_"+kqTypeLabel[kQuark];
    fHistComm[iq][icut].fPtCorrDp= new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1);
    hname = kqEtaRangeLabel[icut]+"PtCorrD0_"+kqTypeLabel[kQuark];
    fHistComm[iq][icut].fPtCorrD0 = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1);
    hname = kqEtaRangeLabel[icut]+"PtCorrDrest_"+kqTypeLabel[kQuark];
    fHistComm[iq][icut].fPtCorrDrest = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1);

    hname = kqEtaRangeLabel[icut]+"ePtRatio_"+kqTypeLabel[kQuark];
    fHistComm[iq][icut].fePtRatio = new TH2F(hname,hname+";p_{T} (GeV/c);momentum fraction",200,0,20,100,0,1);
    hname = kqEtaRangeLabel[icut]+"DePtRatio_"+kqTypeLabel[kQuark];
    fHistComm[iq][icut].fDePtRatio = new TH2F(hname,hname+";p_{T} (GeV/c);momentum fraction",100,0,20,100,0,1);
    hname = kqEtaRangeLabel[icut]+"eDistance_"+kqTypeLabel[kQuark];
    fHistComm[iq][icut].feDistance= new TH2F(hname,hname+";p_{T} (GeV/c);distance (cm)",100,0,20,200,0,2);
    hname = kqEtaRangeLabel[icut]+"DeDistance_"+kqTypeLabel[kQuark];
    fHistComm[iq][icut].fDeDistance= new TH2F(hname,hname+";p_{T} (GeV/c);distance (cm)",100,0,20,200,0,2);

    if(icut <1){
      hname = kqEtaRangeLabel[icut]+"PtCorrDinein_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrDinein = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning
      hname = kqEtaRangeLabel[icut]+"PtCorrDineout_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrDineout = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning
      hname = kqEtaRangeLabel[icut]+"PtCorrDoutein_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrDoutein = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning
      hname = kqEtaRangeLabel[icut]+"PtCorrDouteout_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrDouteout = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning

      hname = kqEtaRangeLabel[icut]+"PtCorrDpDinein_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrDpDinein = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning
      hname = kqEtaRangeLabel[icut]+"PtCorrDpDineout_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrDpDineout = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning
      hname = kqEtaRangeLabel[icut]+"PtCorrDpDoutein_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrDpDoutein = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning
      hname = kqEtaRangeLabel[icut]+"PtCorrDpDouteout_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrDpDouteout = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning

      hname = kqEtaRangeLabel[icut]+"PtCorrD0Dinein_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrD0Dinein = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning
      hname = kqEtaRangeLabel[icut]+"PtCorrD0Dineout_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrD0Dineout = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning
      hname = kqEtaRangeLabel[icut]+"PtCorrD0Doutein_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrD0Doutein = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning
      hname = kqEtaRangeLabel[icut]+"PtCorrD0Douteout_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrD0Douteout = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning

      hname = kqEtaRangeLabel[icut]+"PtCorrDrestDinein_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrDrestDinein = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning
      hname = kqEtaRangeLabel[icut]+"PtCorrDrestDineout_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrDrestDineout = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning
      hname = kqEtaRangeLabel[icut]+"PtCorrDrestDoutein_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrDrestDoutein = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning
      hname = kqEtaRangeLabel[icut]+"PtCorrDrestDouteout_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrDrestDouteout = new TH2F(hname,hname+";D p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning

      hname = kqEtaRangeLabel[icut]+"fEtaCorrD_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fEtaCorrD = new TH2F(hname,hname+";D Y;e eta",200,-10,10,200,-10,10); 
      hname = kqEtaRangeLabel[icut]+"fEtaCorrDp_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fEtaCorrDp = new TH2F(hname,hname+";D Y;e eta",200,-10,10,200,-10,10); 
      hname = kqEtaRangeLabel[icut]+"fEtaCorrD0_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fEtaCorrD0 = new TH2F(hname,hname+";D Y;e eta",200,-10,10,200,-10,10); 
      hname = kqEtaRangeLabel[icut]+"fEtaCorrDrest_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fEtaCorrDrest = new TH2F(hname,hname+";D Y;e eta",200,-10,10,200,-10,10); 

      hname = kqEtaRangeLabel[icut]+"fEtaCorrGD_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fEtaCorrGD = new TH2F(hname,hname+";D Y;e eta",200,-10,10,200,-10,10); 
      hname = kqEtaRangeLabel[icut]+"fEtaCorrGDp_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fEtaCorrGDp = new TH2F(hname,hname+";D Y;e eta",200,-10,10,200,-10,10); 
      hname = kqEtaRangeLabel[icut]+"fEtaCorrGD0_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fEtaCorrGD0 = new TH2F(hname,hname+";D Y;e eta",200,-10,10,200,-10,10); 
      hname = kqEtaRangeLabel[icut]+"fEtaCorrGDrest_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fEtaCorrGDrest = new TH2F(hname,hname+";D Y;e eta",200,-10,10,200,-10,10); 

      hname = kqEtaRangeLabel[icut]+"fEtaCorrB_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fEtaCorrB = new TH2F(hname,hname+";B Y;e eta",200,-10,10,200,-10,10); 
      hname = kqEtaRangeLabel[icut]+"fEtaCorrGB_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fEtaCorrGB = new TH2F(hname,hname+";B Y;e eta",200,-10,10,200,-10,10); 

      hname = kqEtaRangeLabel[icut]+"PtCorrBinein_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrBinein = new TH2F(hname,hname+";B p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning
      hname = kqEtaRangeLabel[icut]+"PtCorrBineout_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrBineout = new TH2F(hname,hname+";B p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning
      hname = kqEtaRangeLabel[icut]+"PtCorrBoutein_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrBoutein = new TH2F(hname,hname+";B p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning
      hname = kqEtaRangeLabel[icut]+"PtCorrBouteout_"+kqTypeLabel[kQuark];
      fHistComm[iq][icut].fPtCorrBouteout = new TH2F(hname,hname+";B p_{T} (GeV/c);e p_{T} (GeV/c)",ndptbins,xcorrbin,iBin[1],kPtbinning1); // new binning
    }
    if(fQAhistos) fHistComm[iq][icut].FillList(fQAhistos);
  }


  hname = kqEtaRangeLabel[0]+"Nq_"+kqTypeLabel[kQuark];
  fHistComm[iq][0].fNq = new TH1F(hname,hname,50,-0.5,49.5);
  hname = kqEtaRangeLabel[0]+"ProcessID_"+kqTypeLabel[kQuark];
  fHistComm[iq][0].fProcessID = new TH1F(hname,hname,21,-10.5,10.5);
  
}

//__________________________________________
void AliHFEmcQA::Init()
{
  // called at begining every event
  
  for (Int_t i=0; i<2; i++){
     fIsHeavy[i] = 0;
  } 

  fNparents = 7;

  fParentSelect[0][0] =  411; //D+  
  fParentSelect[0][1] =  421; //D0
  fParentSelect[0][2] =  431; //Ds+
  fParentSelect[0][3] = 4122; //Lambdac+
  fParentSelect[0][4] = 4132; //Ksic0
  fParentSelect[0][5] = 4232; //Ksic+
  fParentSelect[0][6] = 4332; //OmegaC0

  fParentSelect[1][0] =  511; //B0
  fParentSelect[1][1] =  521; //B+
  fParentSelect[1][2] =  531; //Bs0
  fParentSelect[1][3] = 5122; //Lambdab0
  fParentSelect[1][4] = 5132; //Ksib-
  fParentSelect[1][5] = 5232; //Ksib0
  fParentSelect[1][6] = 5332; //Omegab-


}

//__________________________________________
void AliHFEmcQA::GetMesonKine() 
{
  //
  // get meson pt spectra
  //

  AliVParticle *mctrack2 = NULL;
  AliMCParticle *mctrack0 = NULL;
  AliVParticle *mctrackdaugt= NULL;
  AliMCParticle *mctrackd= NULL;
  Int_t id1=0, id2=0;


  if(fCentrality>=11) {
      AliWarning(Form("Centrality out of histogram array limits: %d", fCentrality));
      return;
  }
  if(!fIsPbPb&&!fIsppMultiBin) fCentrality=0;

  for(Int_t imc = 0; imc <fMCEvent->GetNumberOfPrimaries(); imc++){
     if(!(mctrack2 = fMCEvent->GetTrack(imc))) continue;
     TParticle* mcpart0 = fMCEvent->Stack()->Particle(imc);
     if(!mcpart0) continue;
     mctrack0 = dynamic_cast<AliMCParticle *>(mctrack2);
     if(!mctrack0) continue;

//     if(!fIsPbPb&&!fIsppMultiBin) fCentrality=0;
     Float_t mcsource = 1;
     if(fGetWeightHist) mcsource = GetElecSource(mctrack0, kFALSE);

     if(TMath::Abs(mctrack0->PdgCode()) == 111) // pi0 
       {
          if(TMath::Abs(AliHFEtools::GetRapidity(mcpart0))<0.8) {
            if(mcpart0->IsPrimary()){
                fMCQACollection->Fill(Form("pionspectraPrimary_centrbin%i",fCentrality),mctrack0->Pt());
            }
            fMCQACollection->Fill(Form("pionspectra_centrbin%i",fCentrality),mctrack0->Pt());
            fMCQACollection->Fill(Form("pionspectraLog_centrbin%i",fCentrality),mctrack0->Pt());
            fMCQACollection->Fill(Form("pionspectraLog2D_centrbin%i",fCentrality),mcsource,mctrack0->Pt());
            if(imc>fMCEvent->GetNumberOfPrimaries()) {
              fMCQACollection->Fill(Form("pionspectrasec_centrbin%i",fCentrality),mctrack0->Pt());
              fMCQACollection->Fill(Form("pionspectraLogsec_centrbin%i",fCentrality),mctrack0->Pt());
            }
            else {
              fMCQACollection->Fill(Form("pionspectrapri_centrbin%i",fCentrality),mctrack0->Pt());
              fMCQACollection->Fill(Form("pionspectraLogpri_centrbin%i",fCentrality),mctrack0->Pt());
            }
          }
          id1=mctrack0->GetFirstDaughter();
          id2=mctrack0->GetLastDaughter();
          if(!((id2-id1)==2)) continue;
          for(int idx=id1; idx<=id2; idx++){
            if(!(mctrackdaugt = fMCEvent->GetTrack(idx))) continue;
            if(!(mctrackd = dynamic_cast<AliMCParticle *>(mctrackdaugt))) continue;
            if(TMath::Abs(mctrackd->PdgCode()) == 11 && TMath::Abs(mctrackd->Eta())<0.8)
             fMCQACollection->Fill(Form("piondaughters_centrbin%i",fCentrality),mctrackd->Pt());
          }
       }
     else if(TMath::Abs(mctrack0->PdgCode()) == 221) // eta 
       {
          if(TMath::Abs(AliHFEtools::GetRapidity(mcpart0))<0.8) {
            if(mcpart0->IsPrimary()){
                fMCQACollection->Fill(Form("etaspectraPrimary_centrbin%i",fCentrality),mctrack0->Pt());
            }
            fMCQACollection->Fill(Form("etaspectra_centrbin%i",fCentrality),mctrack0->Pt());
            fMCQACollection->Fill(Form("etaspectraLog_centrbin%i",fCentrality),mctrack0->Pt());
            fMCQACollection->Fill(Form("etaspectraLog2D_centrbin%i",fCentrality),mcsource,mctrack0->Pt());
            if(imc>fMCEvent->GetNumberOfPrimaries()) {
              fMCQACollection->Fill(Form("etaspectrasec_centrbin%i",fCentrality),mctrack0->Pt());
              fMCQACollection->Fill(Form("etaspectraLogsec_centrbin%i",fCentrality),mctrack0->Pt());
            }
            else {
              fMCQACollection->Fill(Form("etaspectrapri_centrbin%i",fCentrality),mctrack0->Pt());
              fMCQACollection->Fill(Form("etaspectraLogpri_centrbin%i",fCentrality),mctrack0->Pt());
            }
          } 
          id1=mctrack0->GetFirstDaughter();
          id2=mctrack0->GetLastDaughter();
          if(!((id2-id1)==2||(id2-id1)==3)) continue;
          for(int idx=id1; idx<=id2; idx++){
            if(!(mctrackdaugt = fMCEvent->GetTrack(idx))) continue;
            if(!(mctrackd = dynamic_cast<AliMCParticle *>(mctrackdaugt))) continue;
            if(TMath::Abs(mctrackd->PdgCode()) == 11 && TMath::Abs(mctrackd->Eta())<0.8)
             fMCQACollection->Fill(Form("etadaughters_centrbin%i",fCentrality),mctrackd->Pt());
          }
       }
     else if(TMath::Abs(mctrack0->PdgCode()) == 223) // omega
       {
          if(TMath::Abs(AliHFEtools::GetRapidity(mcpart0))<0.8) {
            fMCQACollection->Fill(Form("omegaspectra_centrbin%i",fCentrality),mctrack0->Pt());
            fMCQACollection->Fill(Form("omegaspectraLog_centrbin%i",fCentrality),mctrack0->Pt());
            fMCQACollection->Fill(Form("omegaspectraLog2D_centrbin%i",fCentrality),mcsource,mctrack0->Pt());
          }
          id1=mctrack0->GetFirstDaughter();
          id2=mctrack0->GetLastDaughter();
          if(!((id2-id1)==1||(id2-id1)==2)) continue;
          for(int idx=id1; idx<=id2; idx++){
            if(!(mctrackdaugt = fMCEvent->GetTrack(idx))) continue;
            if(!(mctrackd = dynamic_cast<AliMCParticle *>(mctrackdaugt))) continue;
            if(TMath::Abs(mctrackd->PdgCode()) == 11 && TMath::Abs(mctrackd->Eta())<0.8)
             fMCQACollection->Fill(Form("omegadaughters_centrbin%i",fCentrality),mctrackd->Pt());
          }
       }
     else if(TMath::Abs(mctrack0->PdgCode()) == 333) // phi 
       {
          if(TMath::Abs(AliHFEtools::GetRapidity(mcpart0))<0.8) {
            fMCQACollection->Fill(Form("phispectra_centrbin%i",fCentrality),mctrack0->Pt());
            fMCQACollection->Fill(Form("phispectraLog_centrbin%i",fCentrality),mctrack0->Pt());
            fMCQACollection->Fill(Form("phispectraLog2D_centrbin%i",fCentrality),mcsource,mctrack0->Pt());
          } 
          id1=mctrack0->GetFirstDaughter();
          id2=mctrack0->GetLastDaughter();
          if(!((id2-id1)==1)) continue;
          for(int idx=id1; idx<=id2; idx++){
            if(!(mctrackdaugt = fMCEvent->GetTrack(idx))) continue;
            if(!(mctrackd = dynamic_cast<AliMCParticle *>(mctrackdaugt))) continue;
            if(TMath::Abs(mctrackd->PdgCode()) == 11 && TMath::Abs(mctrackd->Eta())<0.8)
             fMCQACollection->Fill(Form("phidaughters_centrbin%i",fCentrality),mctrackd->Pt());
          }
       }
     else if(TMath::Abs(mctrack0->PdgCode()) == 331) // eta prime
       {
          if(TMath::Abs(AliHFEtools::GetRapidity(mcpart0))<0.8) {
            fMCQACollection->Fill(Form("etapspectra_centrbin%i",fCentrality),mctrack0->Pt());
            fMCQACollection->Fill(Form("etapspectraLog_centrbin%i",fCentrality),mctrack0->Pt());
            fMCQACollection->Fill(Form("etapspectraLog2D_centrbin%i",fCentrality),mcsource,mctrack0->Pt());
          }
          id1=mctrack0->GetFirstDaughter();
          id2=mctrack0->GetLastDaughter();
          if(!((id2-id1)==2||(id2-id1)==3)) continue;
          for(int idx=id1; idx<=id2; idx++){
            if(!(mctrackdaugt = fMCEvent->GetTrack(idx))) continue;
            if(!(mctrackd = dynamic_cast<AliMCParticle *>(mctrackdaugt))) continue;
            if(TMath::Abs(mctrackd->PdgCode()) == 11 && TMath::Abs(mctrackd->Eta())<0.8)
             fMCQACollection->Fill(Form("etapdaughters_centrbin%i",fCentrality),mctrackd->Pt());
          }
       }
     else if(TMath::Abs(mctrack0->PdgCode()) == 113) // rho
       {
          if(TMath::Abs(AliHFEtools::GetRapidity(mcpart0))<0.8) {
            fMCQACollection->Fill(Form("rhospectra_centrbin%i",fCentrality),mctrack0->Pt());
            fMCQACollection->Fill(Form("rhospectraLog_centrbin%i",fCentrality),mctrack0->Pt());
            fMCQACollection->Fill(Form("rhospectraLog2D_centrbin%i",fCentrality),mcsource,mctrack0->Pt());
          }
          id1=mctrack0->GetFirstDaughter();
          id2=mctrack0->GetLastDaughter();
          if(!((id2-id1)==1)) continue;
          for(int idx=id1; idx<=id2; idx++){
            if(!(mctrackdaugt = fMCEvent->GetTrack(idx))) continue;
            if(!(mctrackd = dynamic_cast<AliMCParticle *>(mctrackdaugt))) continue;
            if(TMath::Abs(mctrackd->PdgCode()) == 11 && TMath::Abs(mctrackd->Eta())<0.8)
             fMCQACollection->Fill(Form("rhodaughters_centrbin%i",fCentrality),mctrackd->Pt());
          }
       }
     else if(TMath::Abs(mctrack0->PdgCode()) == 321) // kaon+-
       {
          if(TMath::Abs(AliHFEtools::GetRapidity(mcpart0))<0.8) {
            fMCQACollection->Fill(Form("kaonspectraLog_centrbin%i",fCentrality),mctrack0->Pt());
          }
       }
     else if(TMath::Abs(mctrack0->PdgCode()) == 130) // k0L
       {
          if(TMath::Abs(AliHFEtools::GetRapidity(mcpart0))<0.8) {
            fMCQACollection->Fill(Form("k0LspectraLog_centrbin%i",fCentrality),mctrack0->Pt());
          }
       }
     }

}
//__________________________________________
void AliHFEmcQA::GetQuarkKine(TParticle *part, Int_t iTrack, const Int_t kquark) 
{
  // get heavy quark kinematics

    if (kquark != kCharm && kquark != kBeauty) {
      AliDebug(1, "This task is only for heavy quark QA, return\n");
      return; 
    }
    Int_t iq = kquark - kCharm; 

    if (iTrack < 0 || !part) { 
      AliDebug(1, "Stack label is negative or no mcparticle, return\n");
      return; 
    }

    if(!fIsPbPb&&!fIsppMultiBin) fCentrality=0;

    AliMCParticle *mctrack = NULL;
    Int_t partPdgcode = TMath::Abs(part->GetPdgCode());

    // select heavy hadron or not fragmented heavy quark 
    if ( int(partPdgcode/100.)==kquark || int(partPdgcode/1000.)==kquark || (partPdgcode==kquark && (part->GetNDaughters()==0 && iTrack>5)) ){ 

      TParticle *partMother;
      Int_t iLabel;

      if (partPdgcode == kquark){ // in case of not fragmented heavy quark  
        partMother = part; 
        iLabel = iTrack;
      } else{ // in case of heavy hadron, start to search for mother heavy parton 
        iLabel = part->GetFirstMother(); 
        if(!(mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(iLabel))))) return; 
        if (iLabel>-1) { partMother = mctrack->Particle(); }
        else {
          AliDebug(1, "Stack label is negative, return\n");
          return; 
        }
      }

      // heavy parton selection as a mother of heavy hadron 
      // if the heavy particle comes from string which is denoted as particle status 12|12|12...12|11,[PYTHIA p.60]
      // in this case, the mother of heavy particle can be one of the fragmented parton of the string
      // should I make a condition that partMother should be quark or diquark? -> not necessary
      if ( TMath::Abs(partMother->GetPdgCode()) == kquark || (partMother->GetStatusCode() == 11) ){
      //if ( TMath::Abs(partMother->GetPdgCode()) == kquark || (partMother->GetStatusCode() == 11 || partMother->GetStatusCode() == 12) ){

        if ( TMath::Abs(partMother->GetPdgCode()) != kquark ){
          // search fragmented partons in the same string
          Bool_t isSameString = kTRUE; 
          for (Int_t i=1; i<fgkMaxIter; i++){
             iLabel = iLabel - 1;
             if(!(mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(iLabel))))) return; 
             if (iLabel>-1) { partMother = mctrack->Particle(); }
             else {
               AliDebug(1, "Stack label is negative, return\n");
               return; 
             }
             if ( TMath::Abs(partMother->GetPdgCode()) == kquark ) break;
             if ( partMother->GetStatusCode() != 12 ) isSameString = kFALSE;
             if (!isSameString) return; 
          }
        }
        AliDebug(1, "Can not find heavy parton of this heavy hadron in the string, return\n");
        if (TMath::Abs(partMother->GetPdgCode()) != kquark) return; 

        if (fIsHeavy[iq] >= 50) return;  
        fHeavyQuark[fIsHeavy[iq]] = partMother;
        fIsHeavy[iq]++;

        // fill kinematics for heavy parton
        if (partMother->GetPdgCode() > 0) { // quark
          fHist[iq][kQuark][0][fCentrality].fPdgCode->Fill(partMother->GetPdgCode());
          fHist[iq][kQuark][0][fCentrality].fPt->Fill(partMother->Pt());
          fHist[iq][kQuark][0][fCentrality].fY->Fill(AliHFEtools::GetRapidity(partMother));
          fHist[iq][kQuark][0][fCentrality].fEta->Fill(partMother->Eta());
        } else{ // antiquark
          fHist[iq][kantiQuark][0][fCentrality].fPdgCode->Fill(partMother->GetPdgCode());
          fHist[iq][kantiQuark][0][fCentrality].fPt->Fill(partMother->Pt());
          fHist[iq][kantiQuark][0][fCentrality].fY->Fill(AliHFEtools::GetRapidity(partMother));
          fHist[iq][kantiQuark][0][fCentrality].fEta->Fill(partMother->Eta());
        }

      } // end of heavy parton slection loop 

    } // end of heavy hadron or quark selection

}

//__________________________________________
void AliHFEmcQA::EndOfEventAna(const Int_t kquark)
{
  // end of event analysis

  if (kquark != kCharm && kquark != kBeauty) {
    AliDebug(1, "This task is only for heavy quark QA, return\n");
    return; 
  }
  Int_t iq = kquark - kCharm; 


  // # of heavy quark per event
  AliDebug(1,Form("Number of heavy quark in this event = %d \n",fIsHeavy[iq]));
  fHistComm[iq][0].fNq->Fill(fIsHeavy[iq]);

  Int_t motherID[fgkMaxGener];
  Int_t motherType[fgkMaxGener];
  Int_t motherLabel[fgkMaxGener];
  Int_t ancestorPdg[fgkMaxGener];
  Int_t ancestorLabel[fgkMaxGener];

  for (Int_t i = 0; i < fgkMaxGener; i++){ // initialization
     motherID[i] = 0;
     motherType[i] = 0;
     motherLabel[i] = 0;
     ancestorPdg[i] = 0;
     ancestorLabel[i] = 0;
  }


  // check history of found heavy quarks
  for (Int_t i = 0; i < fIsHeavy[iq]; i++){

     if(!fHeavyQuark[i]) return;

     ancestorLabel[0] = i;
     ancestorPdg[0] = fHeavyQuark[i]->GetPdgCode(); 
     ancestorLabel[1] = fHeavyQuark[i]->GetFirstMother(); 

     AliDebug(1,Form("pdg code= %d\n",ancestorPdg[0]));
     AliDebug(1,Form("ancestor label= %d\n",ancestorLabel[1]));

     Int_t ig = 1;
     while (ancestorLabel[ig] != -1){
          // in case there is mother, get mother's pdg code and grandmother's label
          IdentifyMother(ancestorLabel[ig], ancestorPdg[ig], ancestorLabel[ig+1]); 
          // if mother is still heavy, find again mother's ancestor
          if (ancestorPdg[ig-1] == ancestorPdg[ig]) {
            ig++;
            continue; // if it is from same heavy
          }
          // if the heavy's mother is not heavy, check the mother's label to know if it comes from inital or final parton shower
          if (IsFromInitialShower(ancestorLabel[ig],motherID[i],motherType[i],motherLabel[i])) break;
          if (IsFromFinalParton(ancestorLabel[ig],motherID[i],motherType[i],motherLabel[i])) break;
          // if it is not the above case, something is strange
          ReportStrangeness(motherID[i],motherType[i],motherLabel[i]);
          break;
     } 
     if (ancestorLabel[ig] == -1){ // from hard scattering
       HardScattering(kquark, motherID[i],motherType[i], motherLabel[i]);
     }

  } // end of found heavy quark loop


  // check process type
  Int_t processID = 0;
  for (Int_t i = 0; i < fIsHeavy[iq]; i++){
     AliDebug(1,Form("Mother ID= %d type= %d label= %d\n",motherID[i],motherType[i],motherLabel[i]));
  }


  Int_t nheavypair = Int_t(fIsHeavy[iq]/2.); 
  for (Int_t ipair = 0; ipair < nheavypair; ipair++){

     Int_t id1 = ipair*2;
     Int_t id2 = ipair*2 + 1;

     if (motherType[id1] == 2 && motherType[id2] == 2){
       if (motherLabel[id1] == motherLabel[id2]) processID = kGluonSplitting; // gluon spliting
       else processID = -9;
     }
     else if (motherType[id1] == -1 && motherType[id2] == -1) {
       if (motherLabel[id1] == -1 && motherLabel[id2] == -1) {
         if (motherID[id1] == fgkGluon) processID = kPairCreationFromg; // gluon fusion
         else processID = kPairCreationFromq; // q-qbar pair creation
       }
       else processID = -8;
     }
     else if (motherType[id1] == -1 || motherType[id2] == -1) {
       if ((motherLabel[id1] == -1 || motherLabel[id2] == -1) && (motherLabel[id1]*motherLabel[id2] == -2 || motherLabel[id1]*motherLabel[id2] == -3)) {
         if(motherID[id1]*motherID[id2] == kquark*fgkGluon) processID = kFlavourExitation; // flavour exitation 
         else processID = kLightQuarkShower;
       }
       else processID = -7;
     }
     else if (motherType[id1] == -2 || motherType[id2] == -2) {
       if (motherLabel[id1] == motherLabel[id2]) processID = kInitialPartonShower; // initial parton shower
       else processID = -6;
       
     }
     else processID = -5;

     if (nheavypair >1) AliDebug(1,Form("Multi pair found : process ID = %d\n",processID));
     else fHistComm[iq][0].fProcessID->Fill(processID);
     AliDebug(1,Form("Process ID = %d\n",processID));
  } // end of # heavy quark pair loop

}

//__________________________________________
void AliHFEmcQA::GetHadronKine(TParticle* mcpart, const Int_t kquark)
{
    // decay electron kinematics

    if (kquark != kCharm && kquark != kBeauty) {
      AliDebug(1, "This task is only for heavy quark QA, return\n");
      return;
    }
    Int_t iq = kquark - kCharm;

    if(!mcpart){
      AliDebug(1, "no mc particle, return\n");
      return;
    }

    Int_t iLabel = mcpart->GetFirstMother();
    if (iLabel<0){
      AliDebug(1, "Stack label is negative, return\n");
      return;
    }

    if(!fIsPbPb&&!fIsppMultiBin) fCentrality=0;

    TParticle *partCopy = mcpart;
    Int_t pdgcode = mcpart->GetPdgCode();
    Int_t pdgcodeCopy = pdgcode;

    AliMCParticle *mctrack = NULL;

    // if the mother is charmed hadron  
    Bool_t isDirectCharm = kFALSE;
    if ( int(TMath::Abs(pdgcode)/100.) == kCharm || int(TMath::Abs(pdgcode)/1000.) == kCharm ) {

          // iterate until you find B hadron as a mother or become top ancester 
          for (Int_t i=1; i<fgkMaxIter; i++){

             Int_t jLabel = mcpart->GetFirstMother();
             if (jLabel == -1){
               isDirectCharm = kTRUE;
               break; // if there is no ancester
             }
             if (jLabel < 0){ // safety protection
               AliDebug(1, "Stack label is negative, return\n");
               return;
             }
             // if there is an ancester
             if(!(mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(jLabel))))) return; 
             TParticle* mother = mctrack->Particle();
             Int_t motherPDG = mother->GetPdgCode();
    
             for (Int_t j=0; j<fNparents; j++){
                if (TMath::Abs(motherPDG)==fParentSelect[1][j]) return; // return if this hadron is originated from b
             }

             mcpart = mother;
          } // end of iteration 
    } // end of if
    if((isDirectCharm == kTRUE && kquark == kCharm) || kquark == kBeauty) {
         for (Int_t i=0; i<fNparents; i++){
            if (TMath::Abs(pdgcodeCopy)==fParentSelect[iq][i]){

              // fill hadron kinematics
              fHist[iq][kHadron][0][fCentrality].fPdgCode->Fill(pdgcodeCopy);
              fHist[iq][kHadron][0][fCentrality].fPt->Fill(partCopy->Pt());
              fHist[iq][kHadron][0][fCentrality].fY->Fill(AliHFEtools::GetRapidity(partCopy));
              fHist[iq][kHadron][0][fCentrality].fEta->Fill(partCopy->Eta());

              if(iq==0) {
               fhD[i]->Fill(partCopy->Pt(),AliHFEtools::GetRapidity(partCopy));
              }
            }
         }
	 // I also want to store D* info to compare with D* measurement 
	 if (TMath::Abs(pdgcodeCopy)==413 && iq==0) { //D*+
               fhD[7]->Fill(partCopy->Pt(),AliHFEtools::GetRapidity(partCopy));
	 }
	 if (TMath::Abs(pdgcodeCopy)==423 && iq==0) { //D*0
               fhD[8]->Fill(partCopy->Pt(),AliHFEtools::GetRapidity(partCopy));
	 }
    } // end of if
}

//__________________________________________
void AliHFEmcQA::GetDecayedKine(TParticle* mcpart, const Int_t kquark, Int_t kdecayed) 
{
    // decay electron kinematics
    
    if (!(kquark == kCharm || kquark == kBeauty || kquark == kOthers)){
      AliDebug(1, "This task is only for heavy quark QA, return\n");
      return; 
    }
    Int_t iq = kquark - kCharm; 
    Bool_t isFinalOpenCharm = kFALSE;

    if(!mcpart){
      AliDebug(1, "no mcparticle, return\n");
      return;
    }

    if(!fIsPbPb&&!fIsppMultiBin) fCentrality=0;

    Double_t eabsEta = TMath::Abs(mcpart->Eta());
    Double_t eabsY = TMath::Abs(AliHFEtools::GetRapidity(mcpart));

    if(kquark==kOthers){
      Int_t esource = -1;
      if ( TMath::Abs(mcpart->GetPdgCode()) != kdecayed ) esource = kMisID-4;
      else esource =GetSource(mcpart)-4; // return for the cases kGamma=4, kPi0=5, kElse=6
      if(esource==0|| esource==1 || esource==2 || esource==3){
        fHist[iq][esource][0][fCentrality].fPt->Fill(mcpart->Pt());
        fHist[iq][esource][0][fCentrality].fY->Fill(AliHFEtools::GetRapidity(mcpart));
        fHist[iq][esource][0][fCentrality].fEta->Fill(mcpart->Eta());
        if(eabsEta<0.9){
          fHist[iq][esource][1][fCentrality].fPt->Fill(mcpart->Pt());
          fHist[iq][esource][1][fCentrality].fY->Fill(AliHFEtools::GetRapidity(mcpart));
          fHist[iq][esource][1][fCentrality].fEta->Fill(mcpart->Eta());
        }
        if(eabsY<0.5){
          fHist[iq][esource][2][fCentrality].fPt->Fill(mcpart->Pt());
          fHist[iq][esource][2][fCentrality].fY->Fill(AliHFEtools::GetRapidity(mcpart));
          fHist[iq][esource][2][fCentrality].fEta->Fill(mcpart->Eta());
        }
        return; 
      }
      else {
        AliDebug(1, "e source is out of defined ranges, return\n");
        return;
      }
    }

    if ( TMath::Abs(mcpart->GetPdgCode()) != kdecayed ) return;

    Int_t iLabel = mcpart->GetFirstMother(); 
    if (iLabel<0){
      AliDebug(1, "Stack label is negative, return\n");
      return; 
    }

    AliMCParticle *mctrack = NULL;
    if(!(mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(iLabel))))) return; 
    TParticle *partMother = mctrack->Particle();
    TParticle *partMotherCopy = partMother;
    Int_t maPdgcode = partMother->GetPdgCode();
    Int_t maPdgcodeCopy = maPdgcode;

    // get mc primary vertex
    /*
    TArrayF mcPrimVtx;
    if(fMCHeader) fMCHeader->PrimaryVertex(mcPrimVtx);

    // get electron production vertex   
    TLorentzVector ePoint;
    mcpart->ProductionVertex(ePoint);

    // calculated production vertex to primary vertex (in xy plane)
    Float_t decayLxy = TMath::Sqrt((mcPrimVtx[0]-ePoint[0])*(mcPrimVtx[0]-ePoint[0])+(mcPrimVtx[1]-ePoint[1])*(mcPrimVtx[1]-ePoint[1]));
    */ 
    Float_t decayLxy = 0;

    // if the mother is charmed hadron  
    Bool_t isMotherDirectCharm = kFALSE;
    if ( int(TMath::Abs(maPdgcode)/100.) == kCharm || int(TMath::Abs(maPdgcode)/1000.) == kCharm ) { 

         for (Int_t i=0; i<fNparents; i++){
            if (TMath::Abs(maPdgcode)==fParentSelect[0][i]){
              isFinalOpenCharm = kTRUE;
            } 
         }  
         if (!isFinalOpenCharm) return ;

          // iterate until you find B hadron as a mother or become top ancester 
          for (Int_t i=1; i<fgkMaxIter; i++){

             Int_t jLabel = partMother->GetFirstMother(); 
             if (jLabel == -1){
               isMotherDirectCharm = kTRUE;
               break; // if there is no ancester
             }
             if (jLabel < 0){ // safety protection
               AliDebug(1, "Stack label is negative, return\n");
               return; 
             }

             // if there is an ancester
             if(!(mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(jLabel))))) return; 
             TParticle* grandMa = mctrack->Particle();
             Int_t grandMaPDG = grandMa->GetPdgCode();

             for (Int_t j=0; j<fNparents; j++){
                if (TMath::Abs(grandMaPDG)==fParentSelect[1][j]){

                  if (kquark == kCharm) return;
                  // fill electron kinematics
                  fHist[iq][kElectron2nd][0][fCentrality].fPdgCode->Fill(mcpart->GetPdgCode());
                  fHist[iq][kElectron2nd][0][fCentrality].fPt->Fill(mcpart->Pt());
                  fHist[iq][kElectron2nd][0][fCentrality].fY->Fill(AliHFEtools::GetRapidity(mcpart));
                  fHist[iq][kElectron2nd][0][fCentrality].fEta->Fill(mcpart->Eta());

                  // fill mother hadron kinematics
                  fHist[iq][kDeHadron][0][fCentrality].fPdgCode->Fill(grandMaPDG); 
                  fHist[iq][kDeHadron][0][fCentrality].fPt->Fill(grandMa->Pt());
                  fHist[iq][kDeHadron][0][fCentrality].fY->Fill(AliHFEtools::GetRapidity(grandMa));
                  fHist[iq][kDeHadron][0][fCentrality].fEta->Fill(grandMa->Eta());

                  if(eabsEta<0.9){
                    fHist[iq][kElectron2nd][1][fCentrality].fPdgCode->Fill(mcpart->GetPdgCode());
                    fHist[iq][kElectron2nd][1][fCentrality].fPt->Fill(mcpart->Pt());
                    fHist[iq][kElectron2nd][1][fCentrality].fY->Fill(AliHFEtools::GetRapidity(mcpart));
                    fHist[iq][kElectron2nd][1][fCentrality].fEta->Fill(mcpart->Eta());

                    // fill mother hadron kinematics
                    fHist[iq][kDeHadron][1][fCentrality].fPdgCode->Fill(grandMaPDG); 
                    fHist[iq][kDeHadron][1][fCentrality].fPt->Fill(grandMa->Pt());
                    fHist[iq][kDeHadron][1][fCentrality].fY->Fill(AliHFEtools::GetRapidity(grandMa));
                    fHist[iq][kDeHadron][1][fCentrality].fEta->Fill(grandMa->Eta());
                  }

                  if(eabsY<0.5){
                    fHist[iq][kElectron2nd][2][fCentrality].fPdgCode->Fill(mcpart->GetPdgCode());
                    fHist[iq][kElectron2nd][2][fCentrality].fPt->Fill(mcpart->Pt());
                    fHist[iq][kElectron2nd][2][fCentrality].fY->Fill(AliHFEtools::GetRapidity(mcpart));
                    fHist[iq][kElectron2nd][2][fCentrality].fEta->Fill(mcpart->Eta());

                    // fill mother hadron kinematics
                    fHist[iq][kDeHadron][2][fCentrality].fPdgCode->Fill(grandMaPDG); 
                    fHist[iq][kDeHadron][2][fCentrality].fPt->Fill(grandMa->Pt());
                    fHist[iq][kDeHadron][2][fCentrality].fY->Fill(AliHFEtools::GetRapidity(grandMa));
                    fHist[iq][kDeHadron][2][fCentrality].fEta->Fill(grandMa->Eta());
                  }

                  //mj: to calculate B to e eta correlation to calculate total heavy quark cross section
                  Int_t kLabel0 = grandMa->GetFirstMother();
                  Bool_t isGGrandmaYes = kFALSE;
                  Double_t ggmrapidwstmp=0;
                  if (!(kLabel0 < 0)){ // safety protection
                    if((mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(kLabel0))))){
                      TParticle* ggrandMatmp = mctrack->Particle();
                      Int_t ggrandMaPDGtmp = ggrandMatmp->GetPdgCode();
                      if ( int(TMath::Abs(ggrandMaPDGtmp)/100.) == kBeauty || int(TMath::Abs(ggrandMaPDGtmp)/1000.) == kBeauty) isGGrandmaYes = kTRUE;
                      ggmrapidwstmp = AliHFEtools::GetRapidity(ggrandMatmp);
                    }
                  }

                  Double_t gmrapidwstmp0 = AliHFEtools::GetRapidity(grandMa);
                  Double_t eetawstmp0 = mcpart->Eta();
  
                  Double_t gmrapidtmp0 = TMath::Abs(gmrapidwstmp0);
                  Double_t eetatmp0 = TMath::Abs(eetawstmp0);

                  fHistComm[iq][0].fEtaCorrB->Fill(gmrapidwstmp0,eetawstmp0);
                  if(isGGrandmaYes) fHistComm[iq][0].fEtaCorrGB->Fill(ggmrapidwstmp,eetawstmp0);
                  else fHistComm[iq][0].fEtaCorrGB->Fill(gmrapidwstmp0,eetawstmp0);

                  if(gmrapidtmp0<0.5 && eetatmp0<0.5 ) fHistComm[iq][0].fPtCorrBinein->Fill(grandMa->Pt(),mcpart->Pt());
                  else if(gmrapidtmp0<0.5 && eetatmp0>0.5 ) fHistComm[iq][0].fPtCorrBineout->Fill(grandMa->Pt(),mcpart->Pt());
                  else if(gmrapidtmp0>0.5 && eetatmp0<0.5 ) fHistComm[iq][0].fPtCorrBoutein->Fill(grandMa->Pt(),mcpart->Pt());
                  else if(gmrapidtmp0>0.5 && eetatmp0>0.5 ) fHistComm[iq][0].fPtCorrBouteout->Fill(grandMa->Pt(),mcpart->Pt());
                  //======================================================================================

                  // ratio between pT of electron and pT of mother B hadron 
                  if(grandMa->Pt()) {
                    fHistComm[iq][0].fDePtRatio->Fill(grandMa->Pt(),mcpart->Pt()/grandMa->Pt());
                    if(eabsEta<0.9){
                      fHistComm[iq][1].fDePtRatio->Fill(grandMa->Pt(),mcpart->Pt()/grandMa->Pt());
                    }
                    if(eabsY<0.5){
                      fHistComm[iq][2].fDePtRatio->Fill(grandMa->Pt(),mcpart->Pt()/grandMa->Pt());
                    }
                  }

                  // distance between electron production point and primary vertex
                  fHistComm[iq][0].fDeDistance->Fill(grandMa->Pt(),decayLxy);
                  if(eabsEta<0.9){
                    fHistComm[iq][1].fDeDistance->Fill(grandMa->Pt(),decayLxy);
                  }
                  if(eabsY<0.5){
                    fHistComm[iq][2].fDeDistance->Fill(grandMa->Pt(),decayLxy);
                  }
                  return;
                }
             } 

             partMother = grandMa;
          } // end of iteration 
    } // end of if
    if((isMotherDirectCharm == kTRUE && kquark == kCharm) || kquark == kBeauty) {
         for (Int_t i=0; i<fNparents; i++){
            if (TMath::Abs(maPdgcodeCopy)==fParentSelect[iq][i]){

              fHist[iq][kElectron][0][fCentrality].fPdgCode->Fill(mcpart->GetPdgCode());
              fHist[iq][kElectron][0][fCentrality].fPt->Fill(mcpart->Pt());
              fHist[iq][kElectron][0][fCentrality].fY->Fill(AliHFEtools::GetRapidity(mcpart));
              fHist[iq][kElectron][0][fCentrality].fEta->Fill(mcpart->Eta());  

              // fill mother hadron kinematics
              fHist[iq][keHadron][0][fCentrality].fPdgCode->Fill(maPdgcodeCopy); 
              fHist[iq][keHadron][0][fCentrality].fPt->Fill(partMotherCopy->Pt());
              fHist[iq][keHadron][0][fCentrality].fY->Fill(AliHFEtools::GetRapidity(partMotherCopy));
              fHist[iq][keHadron][0][fCentrality].fEta->Fill(partMotherCopy->Eta());

              if(eabsEta<0.9){
                fHist[iq][kElectron][1][fCentrality].fPdgCode->Fill(mcpart->GetPdgCode());
                fHist[iq][kElectron][1][fCentrality].fPt->Fill(mcpart->Pt());
                fHist[iq][kElectron][1][fCentrality].fY->Fill(AliHFEtools::GetRapidity(mcpart));
                fHist[iq][kElectron][1][fCentrality].fEta->Fill(mcpart->Eta());  

                // fill mother hadron kinematics
                fHist[iq][keHadron][1][fCentrality].fPdgCode->Fill(maPdgcodeCopy); 
                fHist[iq][keHadron][1][fCentrality].fPt->Fill(partMotherCopy->Pt());
                fHist[iq][keHadron][1][fCentrality].fY->Fill(AliHFEtools::GetRapidity(partMotherCopy));
                fHist[iq][keHadron][1][fCentrality].fEta->Fill(partMotherCopy->Eta());
              }

              if(eabsY<0.5){
                fHist[iq][kElectron][2][fCentrality].fPdgCode->Fill(mcpart->GetPdgCode());
                fHist[iq][kElectron][2][fCentrality].fPt->Fill(mcpart->Pt());
                fHist[iq][kElectron][2][fCentrality].fY->Fill(AliHFEtools::GetRapidity(mcpart));
                fHist[iq][kElectron][2][fCentrality].fEta->Fill(mcpart->Eta());  

                // fill mother hadron kinematics
                fHist[iq][keHadron][2][fCentrality].fPdgCode->Fill(maPdgcodeCopy); 
                fHist[iq][keHadron][2][fCentrality].fPt->Fill(partMotherCopy->Pt());
                fHist[iq][keHadron][2][fCentrality].fY->Fill(AliHFEtools::GetRapidity(partMotherCopy));
                fHist[iq][keHadron][2][fCentrality].fEta->Fill(partMotherCopy->Eta());
              }

              // ratio between pT of electron and pT of mother B or direct D hadron 
              if(partMotherCopy->Pt()) {
                 fHistComm[iq][0].fePtRatio->Fill(partMotherCopy->Pt(),mcpart->Pt()/partMotherCopy->Pt());
                 if(eabsEta<0.9){
                   fHistComm[iq][1].fePtRatio->Fill(partMotherCopy->Pt(),mcpart->Pt()/partMotherCopy->Pt());
                 }
                 if(eabsY<0.5){
                   fHistComm[iq][2].fePtRatio->Fill(partMotherCopy->Pt(),mcpart->Pt()/partMotherCopy->Pt());
                 }
              }
              fHistComm[iq][0].fPtCorr->Fill(partMotherCopy->Pt(),mcpart->Pt());
              if(eabsEta<0.9){
                fHistComm[iq][1].fPtCorr->Fill(partMotherCopy->Pt(),mcpart->Pt());
              }
              if(eabsY<0.5){
                fHistComm[iq][2].fPtCorr->Fill(partMotherCopy->Pt(),mcpart->Pt());
              }
              if(TMath::Abs(partMotherCopy->GetPdgCode())==411) {
                fHistComm[iq][0].fPtCorrDp->Fill(partMotherCopy->Pt(),mcpart->Pt());
                if(eabsEta<0.9){
                  fHistComm[iq][1].fPtCorrDp->Fill(partMotherCopy->Pt(),mcpart->Pt());
                }
                if(eabsY<0.5){
                  fHistComm[iq][2].fPtCorrDp->Fill(partMotherCopy->Pt(),mcpart->Pt());
                }
              }
              else if(TMath::Abs(partMotherCopy->GetPdgCode())==421) {
                fHistComm[iq][0].fPtCorrD0->Fill(partMotherCopy->Pt(),mcpart->Pt());
                if(eabsEta<0.9){
                  fHistComm[iq][1].fPtCorrD0->Fill(partMotherCopy->Pt(),mcpart->Pt());
                }
                if(eabsY<0.5){
                  fHistComm[iq][2].fPtCorrD0->Fill(partMotherCopy->Pt(),mcpart->Pt());
                }
              }
              else {
                fHistComm[iq][0].fPtCorrDrest->Fill(partMotherCopy->Pt(),mcpart->Pt());
                if(eabsEta<0.9){
                  fHistComm[iq][1].fPtCorrDrest->Fill(partMotherCopy->Pt(),mcpart->Pt());
                }
                if(eabsY<0.5){
                  fHistComm[iq][2].fPtCorrDrest->Fill(partMotherCopy->Pt(),mcpart->Pt());
                }
              }

              //mj: to calculate D to e eta correlation to calculate total heavy quark cross section
              Int_t kLabel = partMotherCopy->GetFirstMother();
              Bool_t isGrandmaYes = kFALSE;
              Double_t gmrapidwstmp =0;
              if (!(kLabel < 0)){ // safety protection
                if((mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(kLabel))))){ 
                  TParticle* grandMatmp = mctrack->Particle();
                  Int_t grandMaPDGtmp = grandMatmp->GetPdgCode();
                  if ( int(TMath::Abs(grandMaPDGtmp)/100.) == kCharm || int(TMath::Abs(grandMaPDGtmp)/1000.) == kCharm ) isGrandmaYes = kTRUE;
                  if ( int(TMath::Abs(grandMaPDGtmp)/100.) == kBeauty || int(TMath::Abs(grandMaPDGtmp)/1000.) == kBeauty) isGrandmaYes = kTRUE;
                  gmrapidwstmp = AliHFEtools::GetRapidity(grandMatmp);
                }
              }

              Double_t mrapidwstmp = AliHFEtools::GetRapidity(partMotherCopy);
              Double_t eetawstmp = mcpart->Eta();

              Double_t mrapidtmp = TMath::Abs(mrapidwstmp);
              Double_t eetatmp = TMath::Abs(eetawstmp);

              fHistComm[iq][0].fEtaCorrD->Fill(mrapidwstmp,eetawstmp);
              if(isGrandmaYes) fHistComm[iq][0].fEtaCorrGD->Fill(gmrapidwstmp,eetawstmp);
              else fHistComm[iq][0].fEtaCorrGD->Fill(mrapidwstmp,eetawstmp);

              if(mrapidtmp<0.5 && eetatmp<0.5 ) fHistComm[iq][0].fPtCorrDinein->Fill(partMotherCopy->Pt(),mcpart->Pt());
              else if(mrapidtmp<0.5 && eetatmp>0.5 ) fHistComm[iq][0].fPtCorrDineout->Fill(partMotherCopy->Pt(),mcpart->Pt());
              else if(mrapidtmp>0.5 && eetatmp<0.5 ) fHistComm[iq][0].fPtCorrDoutein->Fill(partMotherCopy->Pt(),mcpart->Pt());
              else if(mrapidtmp>0.5 && eetatmp>0.5 ) fHistComm[iq][0].fPtCorrDouteout->Fill(partMotherCopy->Pt(),mcpart->Pt());
              if(TMath::Abs(partMotherCopy->GetPdgCode())==411) {
                fHistComm[iq][0].fEtaCorrDp->Fill(mrapidwstmp,eetawstmp);
                if(isGrandmaYes) fHistComm[iq][0].fEtaCorrGDp->Fill(gmrapidwstmp,eetawstmp);
                else fHistComm[iq][0].fEtaCorrGDp->Fill(mrapidwstmp,eetawstmp);
                if(mrapidtmp<0.5 && eetatmp<0.5 ) fHistComm[iq][0].fPtCorrDpDinein->Fill(partMotherCopy->Pt(),mcpart->Pt());
                else if(mrapidtmp<0.5 && eetatmp>0.5 ) fHistComm[iq][0].fPtCorrDpDineout->Fill(partMotherCopy->Pt(),mcpart->Pt());
                else if(mrapidtmp>0.5 && eetatmp<0.5 ) fHistComm[iq][0].fPtCorrDpDoutein->Fill(partMotherCopy->Pt(),mcpart->Pt());
                else if(mrapidtmp>0.5 && eetatmp>0.5 ) fHistComm[iq][0].fPtCorrDpDouteout->Fill(partMotherCopy->Pt(),mcpart->Pt());
              }
              else if(TMath::Abs(partMotherCopy->GetPdgCode())==421) {
                fHistComm[iq][0].fEtaCorrD0->Fill(mrapidwstmp,eetawstmp);
                if(isGrandmaYes) fHistComm[iq][0].fEtaCorrGD0->Fill(gmrapidwstmp,eetawstmp);
                else fHistComm[iq][0].fEtaCorrGD0->Fill(mrapidwstmp,eetawstmp);
                if(mrapidtmp<0.5 && eetatmp<0.5 ) fHistComm[iq][0].fPtCorrD0Dinein->Fill(partMotherCopy->Pt(),mcpart->Pt());
                else if(mrapidtmp<0.5 && eetatmp>0.5 ) fHistComm[iq][0].fPtCorrD0Dineout->Fill(partMotherCopy->Pt(),mcpart->Pt());
                else if(mrapidtmp>0.5 && eetatmp<0.5 ) fHistComm[iq][0].fPtCorrD0Doutein->Fill(partMotherCopy->Pt(),mcpart->Pt());
                else if(mrapidtmp>0.5 && eetatmp>0.5 ) fHistComm[iq][0].fPtCorrD0Douteout->Fill(partMotherCopy->Pt(),mcpart->Pt());
              }
              else {
                fHistComm[iq][0].fEtaCorrDrest->Fill(mrapidwstmp,eetawstmp);
                if(isGrandmaYes) fHistComm[iq][0].fEtaCorrGDrest->Fill(gmrapidwstmp,eetawstmp);
                else fHistComm[iq][0].fEtaCorrGDrest->Fill(mrapidwstmp,eetawstmp);
                if(mrapidtmp<0.5 && eetatmp<0.5 ) fHistComm[iq][0].fPtCorrDrestDinein->Fill(partMotherCopy->Pt(),mcpart->Pt());
                else if(mrapidtmp<0.5 && eetatmp>0.5 ) fHistComm[iq][0].fPtCorrDrestDineout->Fill(partMotherCopy->Pt(),mcpart->Pt());
                else if(mrapidtmp>0.5 && eetatmp<0.5 ) fHistComm[iq][0].fPtCorrDrestDoutein->Fill(partMotherCopy->Pt(),mcpart->Pt());
                else if(mrapidtmp>0.5 && eetatmp>0.5 ) fHistComm[iq][0].fPtCorrDrestDouteout->Fill(partMotherCopy->Pt(),mcpart->Pt());
              }

              // distance between electron production point and primary vertex
              fHistComm[iq][0].feDistance->Fill(partMotherCopy->Pt(),decayLxy);
              if(eabsEta<0.9){
                fHistComm[iq][1].feDistance->Fill(partMotherCopy->Pt(),decayLxy);
              }
              if(eabsY<0.5){
                fHistComm[iq][2].feDistance->Fill(partMotherCopy->Pt(),decayLxy);
              }
            }
         }
    } // end of if
}

//____________________________________________________________________
void  AliHFEmcQA::GetDecayedKine(AliAODMCParticle *mcpart, const Int_t kquark, Int_t kdecayed)
{
  // decay electron kinematics

  if (kquark != kCharm && kquark != kBeauty) {
    AliDebug(1, "This task is only for heavy quark QA, return\n");
    return;
  }

  Int_t iq = kquark - kCharm;
  Bool_t isFinalOpenCharm = kFALSE;

  if(!mcpart){
    AliDebug(1, "no mcparticle, return\n");
    return;
  }

  if ( TMath::Abs(mcpart->GetPdgCode()) != kdecayed ) return;

  Double_t eabsEta = TMath::Abs(mcpart->Eta());
  Double_t eabsY = TMath::Abs(AliHFEtools::GetRapidity(mcpart));

  // mother
  Int_t iLabel = mcpart->GetMother();
  if (iLabel<0){
    AliDebug(1, "Stack label is negative, return\n");
    return;
  }

  if(!fIsPbPb&&!fIsppMultiBin) fCentrality=0;

  AliAODMCParticle *partMother = (AliAODMCParticle*)fMCArray->At(iLabel);
  AliAODMCParticle *partMotherCopy = partMother;
  Int_t maPdgcode = partMother->GetPdgCode();
  Int_t maPdgcodeCopy = maPdgcode;

  Bool_t isMotherDirectCharm = kFALSE;
  if ( int(TMath::Abs(maPdgcode)/100.) == kCharm || int(TMath::Abs(maPdgcode)/1000.) == kCharm ) {

    for (Int_t i=0; i<fNparents; i++){
       if (TMath::Abs(maPdgcode)==fParentSelect[0][i]){
         isFinalOpenCharm = kTRUE;
       }
    } 
    if (!isFinalOpenCharm) return;

    for (Int_t i=1; i<fgkMaxIter; i++){

       Int_t jLabel = partMother->GetMother();
       if (jLabel == -1){
         isMotherDirectCharm = kTRUE;
         break; // if there is no ancester
       }
       if (jLabel < 0){ // safety protection
         AliDebug(1, "Stack label is negative, return\n");
         return;
       }

       // if there is an ancester
       AliAODMCParticle* grandMa = (AliAODMCParticle*)fMCArray->At(jLabel);
       Int_t grandMaPDG = grandMa->GetPdgCode();

       for (Int_t j=0; j<fNparents; j++){
          if (TMath::Abs(grandMaPDG)==fParentSelect[1][j]){

            if (kquark == kCharm) return;
            // fill electron kinematics
            fHist[iq][kElectron2nd][0][fCentrality].fPdgCode->Fill(mcpart->GetPdgCode());
            fHist[iq][kElectron2nd][0][fCentrality].fPt->Fill(mcpart->Pt());
            fHist[iq][kElectron2nd][0][fCentrality].fY->Fill(AliHFEtools::GetRapidity(mcpart));
            fHist[iq][kElectron2nd][0][fCentrality].fEta->Fill(mcpart->Eta());

            // fill mother hadron kinematics
            fHist[iq][kDeHadron][0][fCentrality].fPdgCode->Fill(grandMaPDG);
            fHist[iq][kDeHadron][0][fCentrality].fPt->Fill(grandMa->Pt());
            fHist[iq][kDeHadron][0][fCentrality].fY->Fill(AliHFEtools::GetRapidity(grandMa));
            fHist[iq][kDeHadron][0][fCentrality].fEta->Fill(grandMa->Eta());

            if(eabsEta<0.9){
              // fill electron kinematics
              fHist[iq][kElectron2nd][1][fCentrality].fPdgCode->Fill(mcpart->GetPdgCode());
              fHist[iq][kElectron2nd][1][fCentrality].fPt->Fill(mcpart->Pt());
              fHist[iq][kElectron2nd][1][fCentrality].fY->Fill(AliHFEtools::GetRapidity(mcpart));
              fHist[iq][kElectron2nd][1][fCentrality].fEta->Fill(mcpart->Eta());

              // fill mother hadron kinematics
              fHist[iq][kDeHadron][1][fCentrality].fPdgCode->Fill(grandMaPDG);
              fHist[iq][kDeHadron][1][fCentrality].fPt->Fill(grandMa->Pt());
              fHist[iq][kDeHadron][1][fCentrality].fY->Fill(AliHFEtools::GetRapidity(grandMa));
              fHist[iq][kDeHadron][1][fCentrality].fEta->Fill(grandMa->Eta());
            }
            if(eabsY<0.5){
              // fill electron kinematics
              fHist[iq][kElectron2nd][2][fCentrality].fPdgCode->Fill(mcpart->GetPdgCode());
              fHist[iq][kElectron2nd][2][fCentrality].fPt->Fill(mcpart->Pt());
              fHist[iq][kElectron2nd][2][fCentrality].fY->Fill(AliHFEtools::GetRapidity(mcpart));
              fHist[iq][kElectron2nd][2][fCentrality].fEta->Fill(mcpart->Eta());

              // fill mother hadron kinematics
              fHist[iq][kDeHadron][2][fCentrality].fPdgCode->Fill(grandMaPDG);
              fHist[iq][kDeHadron][2][fCentrality].fPt->Fill(grandMa->Pt());
              fHist[iq][kDeHadron][2][fCentrality].fY->Fill(AliHFEtools::GetRapidity(grandMa));
              fHist[iq][kDeHadron][2][fCentrality].fEta->Fill(grandMa->Eta());
            }

            return;
          }
       }

       partMother = grandMa;
    } // end of iteration 
  } // end of if
  if ((isMotherDirectCharm == kTRUE && kquark == kCharm) || kquark == kBeauty) {
    for (Int_t i=0; i<fNparents; i++){
       if (TMath::Abs(maPdgcodeCopy)==fParentSelect[iq][i]){

         // fill electron kinematics
         fHist[iq][kElectron][0][fCentrality].fPdgCode->Fill(mcpart->GetPdgCode());
         fHist[iq][kElectron][0][fCentrality].fPt->Fill(mcpart->Pt());
         fHist[iq][kElectron][0][fCentrality].fY->Fill(AliHFEtools::GetRapidity(mcpart));
         fHist[iq][kElectron][0][fCentrality].fEta->Fill(mcpart->Eta());

         // fill mother hadron kinematics
         fHist[iq][keHadron][0][fCentrality].fPdgCode->Fill(maPdgcodeCopy);
         fHist[iq][keHadron][0][fCentrality].fPt->Fill(partMotherCopy->Pt());
         fHist[iq][keHadron][0][fCentrality].fY->Fill(AliHFEtools::GetRapidity(partMotherCopy));
         fHist[iq][keHadron][0][fCentrality].fEta->Fill(partMotherCopy->Eta());

         if(eabsEta<0.9){
           // fill electron kinematics
           fHist[iq][kElectron][1][fCentrality].fPdgCode->Fill(mcpart->GetPdgCode());
           fHist[iq][kElectron][1][fCentrality].fPt->Fill(mcpart->Pt());
           fHist[iq][kElectron][1][fCentrality].fY->Fill(AliHFEtools::GetRapidity(mcpart));
           fHist[iq][kElectron][1][fCentrality].fEta->Fill(mcpart->Eta());

           // fill mother hadron kinematics
           fHist[iq][keHadron][1][fCentrality].fPdgCode->Fill(maPdgcodeCopy);
           fHist[iq][keHadron][1][fCentrality].fPt->Fill(partMotherCopy->Pt());
           fHist[iq][keHadron][1][fCentrality].fY->Fill(AliHFEtools::GetRapidity(partMotherCopy));
           fHist[iq][keHadron][1][fCentrality].fEta->Fill(partMotherCopy->Eta());
         }
         if(eabsY<0.5){
           // fill electron kinematics
           fHist[iq][kElectron][2][fCentrality].fPdgCode->Fill(mcpart->GetPdgCode());
           fHist[iq][kElectron][2][fCentrality].fPt->Fill(mcpart->Pt());
           fHist[iq][kElectron][2][fCentrality].fY->Fill(AliHFEtools::GetRapidity(mcpart));
           fHist[iq][kElectron][2][fCentrality].fEta->Fill(mcpart->Eta());

           // fill mother hadron kinematics
           fHist[iq][keHadron][2][fCentrality].fPdgCode->Fill(maPdgcodeCopy);
           fHist[iq][keHadron][2][fCentrality].fPt->Fill(partMotherCopy->Pt());
           fHist[iq][keHadron][2][fCentrality].fY->Fill(AliHFEtools::GetRapidity(partMotherCopy));
           fHist[iq][keHadron][2][fCentrality].fEta->Fill(partMotherCopy->Eta());
         }

       }
    }
  } // end of if

}

//__________________________________________
void AliHFEmcQA::IdentifyMother(Int_t motherlabel, Int_t &motherpdg, Int_t &grandmotherlabel)
{
       // find mother pdg code and label 

       if (motherlabel < 0) { 
         AliDebug(1, "Stack label is negative, return\n");
         return; 
       }
       AliMCParticle *mctrack = NULL;
       if(!(mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(motherlabel))))) return; 
       TParticle *heavysMother = mctrack->Particle();
       motherpdg = heavysMother->GetPdgCode();
       grandmotherlabel = heavysMother->GetFirstMother();
       AliDebug(1,Form("ancestor pdg code= %d\n",motherpdg));
}

//__________________________________________
void AliHFEmcQA::HardScattering(const Int_t kquark, Int_t &motherID, Int_t &mothertype, Int_t &motherlabel)
{
       // mothertype -1 means this heavy quark coming from hard vertex

       AliMCParticle *mctrack1 = NULL;
       AliMCParticle *mctrack2 = NULL;
       if(!(mctrack1 = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(4))))) return; 
       if(!(mctrack2 = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(5))))) return; 
       TParticle *afterinitialrad1  = mctrack1->Particle();
       TParticle *afterinitialrad2  = mctrack2->Particle();
           
       motherlabel = -1;

       if (TMath::Abs(afterinitialrad1->GetPdgCode()) == fgkGluon && TMath::Abs(afterinitialrad2->GetPdgCode()) == fgkGluon){
         AliDebug(1,"heavy from gluon gluon pair creation!\n");
         mothertype = -1;
         motherID = fgkGluon;
       }
       else if (TMath::Abs(afterinitialrad1->GetPdgCode()) == kquark || TMath::Abs(afterinitialrad2->GetPdgCode()) == kquark){ // one from Q and the other from g
         AliDebug(1,"heavy from flavor exitation!\n");
         mothertype = -1;
         motherID = kquark;
       }
       else if  (TMath::Abs(afterinitialrad1->GetPdgCode()) == TMath::Abs(afterinitialrad2->GetPdgCode())){
         AliDebug(1,"heavy from q-qbar pair creation!\n");
         mothertype = -1;
         motherID = 1;
       }
       else {
         AliDebug(1,"something strange!\n");
         mothertype = -999;
         motherlabel = -999;
         motherID = -999;
       }
}

//__________________________________________
Bool_t AliHFEmcQA::IsFromInitialShower(Int_t inputmotherlabel, Int_t &motherID, Int_t &mothertype, Int_t &motherlabel)
{
       // mothertype -2 means this heavy quark coming from initial state 

       AliMCParticle *mctrack = NULL;
       if (inputmotherlabel==2 || inputmotherlabel==3){ // mother exist before initial state radiation
         if(!(mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(inputmotherlabel))))) return kFALSE; 
         TParticle *heavysMother = mctrack->Particle();
         motherID = heavysMother->GetPdgCode(); 
         mothertype = -2; // there is mother before initial state radiation
         motherlabel = inputmotherlabel;
         AliDebug(1,"initial parton shower! \n");

         return kTRUE;
       }

       return kFALSE;
}

//__________________________________________
Bool_t AliHFEmcQA::IsFromFinalParton(Int_t inputmotherlabel, Int_t &motherID, Int_t &mothertype, Int_t &motherlabel)
{
       // mothertype 2 means this heavy quark coming from final state 

       AliMCParticle *mctrack = NULL;
       if (inputmotherlabel > 5){ // mother exist after hard scattering
         if(!(mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(inputmotherlabel))))) return kFALSE; 
         TParticle *heavysMother = mctrack->Particle();
         motherID = heavysMother->GetPdgCode(); 
         mothertype = 2; // 
         motherlabel = inputmotherlabel;
         AliDebug(1,Form("heavy quark from %d after hard scattering! \n",motherID));

         return kTRUE;
       }
       return kFALSE;
}

//__________________________________________
void AliHFEmcQA::ReportStrangeness(Int_t &motherID, Int_t &mothertype, Int_t &motherlabel)
{
      // mark strange behavior  

       mothertype = -888;
       motherlabel = -888;
       motherID = -888;
       AliDebug(1,"something strange!\n");
}

//__________________________________________
Int_t AliHFEmcQA::GetSource(const AliVParticle* const mcpart) const
{        
  // decay particle's origin 

  //if ( TMath::Abs(mcpart->GetPdgCode()) != AliHFEmcQA::kElectronPDG ) return -1;
       
  Int_t origin = -1;
  Bool_t isFinalOpenCharm = kFALSE;

  if(!mcpart){
    AliDebug(1, "Stack label is negative or no mcparticle, return\n");
    return -1;
  }

  // mother
  // Information not in the base class, cast necessary
  Int_t iLabel = GetMother(mcpart);
  if (iLabel<0){
    AliDebug(1, "Stack label is negative, return\n");
    return -1;
  } 
       
  const AliVParticle *partMother = fMCEvent->GetTrack(iLabel);
  Int_t maPdgcode = partMother->PdgCode();
  
  // if the mother is charmed hadron  
  if ( int(TMath::Abs(maPdgcode)/100.) == kCharm || int(TMath::Abs(maPdgcode)/1000.) == kCharm ) {
    
    for (Int_t i=0; i<fNparents; i++){
       if (TMath::Abs(maPdgcode)==fParentSelect[0][i]){
         isFinalOpenCharm = kTRUE;
       }
    }
    if (!isFinalOpenCharm) return -1;

    // iterate until you find B hadron as a mother or become top ancester 
    for (Int_t i=1; i<fgkMaxIter; i++){
      
       Int_t jLabel = GetMother(partMother);
       if (jLabel == -1){
         origin = kDirectCharm;
         return origin;
       }
       if (jLabel < 0){ // safety protection
         AliDebug(1, "Stack label is negative, return\n");
         return -1;
       }

       // if there is an ancester
       const AliVParticle* grandMa = fMCEvent->GetTrack(jLabel);
       Int_t grandMaPDG = grandMa->PdgCode();

       for (Int_t j=0; j<fNparents; j++){
          if (TMath::Abs(grandMaPDG)==fParentSelect[1][j]){
            origin = kBeautyCharm;
            return origin;
          }
       }

       partMother = grandMa;
    } // end of iteration 
  } // end of if
  else if ( int(TMath::Abs(maPdgcode)/100.) == kBeauty || int(TMath::Abs(maPdgcode)/1000.) == kBeauty ) {
    for (Int_t i=0; i<fNparents; i++){
       if (TMath::Abs(maPdgcode)==fParentSelect[1][i]){
         origin = kDirectBeauty;
         return origin;
       }
    }
  } // end of if
  else if ( TMath::Abs(maPdgcode) == 22 ) {
    origin = kGamma;
    return origin;
  } // end of if
  else if ( TMath::Abs(maPdgcode) == 111 ) {
    origin = kPi0;
    return origin;
  } // end of if

  return origin;
}

//__________________________________________
Int_t AliHFEmcQA::GetSource(const TParticle * const mcpart) const
{
  // decay particle's origin 

  //if ( TMath::Abs(mcpart->GetPdgCode()) != AliHFEmcQA::kElectronPDG ) return -1;

  Int_t origin = -1;
  Bool_t isFinalOpenCharm = kFALSE;

  if(!mcpart){
    AliDebug(1, "no mcparticle, return\n");
    return -1;
  }

  Int_t iLabel = mcpart->GetFirstMother();
  if (iLabel<0){
    AliDebug(1, "Stack label is negative, return\n");
    return -1;
  }

  AliMCParticle *mctrack = NULL;
  if(!(mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(iLabel))))) return -1; 
  TParticle *partMother = mctrack->Particle();
  Int_t maPdgcode = partMother->GetPdgCode();

   // if the mother is charmed hadron  
   if ( int(TMath::Abs(maPdgcode)/100.) == kCharm || int(TMath::Abs(maPdgcode)/1000.) == kCharm ) {

     for (Int_t i=0; i<fNparents; i++){
        if (TMath::Abs(maPdgcode)==fParentSelect[0][i]){
          isFinalOpenCharm = kTRUE;
        }
     }
     if (!isFinalOpenCharm) return -1;

     // iterate until you find B hadron as a mother or become top ancester 
     for (Int_t i=1; i<fgkMaxIter; i++){

        Int_t jLabel = partMother->GetFirstMother();
        if (jLabel == -1){
          origin = kDirectCharm;
          return origin;
        }
        if (jLabel < 0){ // safety protection
          AliDebug(1, "Stack label is negative, return\n");
          return -1;
        }

        // if there is an ancester
        if(!(mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(jLabel))))) return -1; 
        TParticle* grandMa = mctrack->Particle();
        Int_t grandMaPDG = grandMa->GetPdgCode();

        for (Int_t j=0; j<fNparents; j++){
           if (TMath::Abs(grandMaPDG)==fParentSelect[1][j]){
             origin = kBeautyCharm;
             return origin;
           }
        }

        partMother = grandMa;
     } // end of iteration 
   } // end of if
   else if ( int(TMath::Abs(maPdgcode)/100.) == kBeauty || int(TMath::Abs(maPdgcode)/1000.) == kBeauty ) {
     for (Int_t i=0; i<fNparents; i++){
        if (TMath::Abs(maPdgcode)==fParentSelect[1][i]){
          origin = kDirectBeauty;
          return origin;
        }
     }
   } // end of if
   else if ( TMath::Abs(maPdgcode) == 22 ) {
     origin = kGamma;
     return origin;
   } // end of if
   else if ( TMath::Abs(maPdgcode) == 111 ) {
     origin = kPi0;
     return origin;
   } // end of if
   else origin = kElse;

   return origin;
}

//__________________________________________
Int_t AliHFEmcQA::GetElecSource(TParticle * const mcpart, Bool_t isElec) const
{
  // decay particle's origin 

  if(!mcpart){
    AliDebug(1, "no mcparticle, return\n");
    return -1;
  }

  if(isElec) if ( TMath::Abs(mcpart->GetPdgCode()) != AliHFEmcQA::kElectronPDG ) return kMisID;

  Int_t origin = -1;
  Bool_t isFinalOpenCharm = kFALSE;

  Int_t iLabel = mcpart->GetFirstMother();
  if (iLabel<0){
    AliDebug(1, "Stack label is negative, return\n");
    return -1;
  }

  AliMCParticle *mctrack = NULL;
  Int_t tmpMomLabel=0;
  if(!(mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(iLabel))))) return -1; 
  TParticle *partMother = mctrack->Particle();
  TParticle *partMotherCopy = mctrack->Particle();
  Int_t maPdgcode = partMother->GetPdgCode();
  Int_t grmaPdgcode = 0;
  Int_t ggrmaPdgcode;

   // if the mother is charmed hadron  

   if(TMath::Abs(maPdgcode)==443){ // J/spi
      Int_t jLabel = partMother->GetFirstMother();
      if((mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(jLabel))))){
        TParticle* grandMa = mctrack->Particle();
        Int_t grandMaPDG = grandMa->GetPdgCode();
        if((int(TMath::Abs(grandMaPDG)/100.)%10) == kBeauty || (int(TMath::Abs(grandMaPDG)/1000.)%10) == kBeauty) return kB2Jpsi;
      }
      return kJpsi;   
   } 
   else if ( (int(TMath::Abs(maPdgcode)/100.)%10) == kCharm || (int(TMath::Abs(maPdgcode)/1000.)%10) == kCharm ) {

     for (Int_t i=0; i<fNparents; i++){
        if (TMath::Abs(maPdgcode)==fParentSelect[0][i]){
          isFinalOpenCharm = kTRUE;
        }
     }
     if (!isFinalOpenCharm) return -1;

     // iterate until you find B hadron as a mother or become top ancester 
     for (Int_t i=1; i<fgkMaxIter; i++){

        Int_t jLabel = partMother->GetFirstMother();
        if (jLabel == -1){
          return kDirectCharm;
        }
        if (jLabel < 0){ // safety protection
          AliDebug(1, "Stack label is negative, return\n");
          return -1;
        }

        // if there is an ancester
        if(!(mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(jLabel))))) return -1; 
        TParticle* grandMa = mctrack->Particle();
        Int_t grandMaPDG = grandMa->GetPdgCode();

        for (Int_t j=0; j<fNparents; j++){
           if (TMath::Abs(grandMaPDG)==fParentSelect[1][j]){
             return kBeautyCharm;
           }
        }

        partMother = grandMa;
     } // end of iteration 
   } // end of if
   else if ( (int(TMath::Abs(maPdgcode)/100.)%10) == kBeauty || (int(TMath::Abs(maPdgcode)/1000.)%10) == kBeauty ) {
     for (Int_t i=0; i<fNparents; i++){
        if (TMath::Abs(maPdgcode)==fParentSelect[1][i]){
          return kDirectBeauty;
        }
     }
   } // end of if
   else if ( TMath::Abs(maPdgcode) == 22 ) { //conversion

     tmpMomLabel = partMotherCopy->GetFirstMother();
     if(!(mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(tmpMomLabel))))) return -1;
     partMother = mctrack->Particle();
     maPdgcode = partMother->GetPdgCode();

     // check if the ligth meson is the decay product of heavy mesons
     tmpMomLabel = partMother->GetFirstMother();
     if((mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(tmpMomLabel))))) {
      partMother = mctrack->Particle();
      grmaPdgcode = partMother->GetPdgCode();

      if ( (int(TMath::Abs(grmaPdgcode)/100.)%10) == kBeauty || (int(TMath::Abs(grmaPdgcode)/1000.)%10) == kBeauty ) return kGammaB2M;
      if ( (int(TMath::Abs(grmaPdgcode)/100.)%10) == kCharm || (int(TMath::Abs(grmaPdgcode)/1000.)%10) == kCharm ) return kGammaD2M;

      tmpMomLabel = partMother->GetFirstMother();
      if((mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(tmpMomLabel))))) {
       partMother = mctrack->Particle();
       ggrmaPdgcode = partMother->GetPdgCode();

       if ( (int(TMath::Abs(ggrmaPdgcode)/100.)%10) == kBeauty || (int(TMath::Abs(ggrmaPdgcode)/1000.)%10) == kBeauty ) return kGammaB2M;
       if ( (int(TMath::Abs(ggrmaPdgcode)/100.)%10) == kCharm || (int(TMath::Abs(ggrmaPdgcode)/1000.)%10) == kCharm ) return kGammaD2M;
      }

      if ( TMath::Abs(maPdgcode) == 111 ) {
        if(grmaPdgcode == 221 || grmaPdgcode == 223 || grmaPdgcode == 333 || grmaPdgcode == 331 || grmaPdgcode == 113) return kGammaM2M;
        return kGammaPi0;
      } 
      else if ( TMath::Abs(maPdgcode) == 221 ) {
        if(grmaPdgcode == 111 || grmaPdgcode == 223 || grmaPdgcode == 333 || grmaPdgcode == 331 || grmaPdgcode == 113) return kGammaM2M;
        return kGammaEta;
      } 
      else if ( TMath::Abs(maPdgcode) == 223 ) {
        if(grmaPdgcode == 111 || grmaPdgcode == 221 || grmaPdgcode == 333 || grmaPdgcode == 331 || grmaPdgcode == 113) return kGammaM2M;
        return kGammaOmega;
      } 
      else if ( TMath::Abs(maPdgcode) == 333 ) {
        if(grmaPdgcode == 111 || grmaPdgcode == 221 || grmaPdgcode == 223 || grmaPdgcode == 331 || grmaPdgcode == 113) return kGammaM2M;
        return kGammaPhi;
      }
      else if ( TMath::Abs(maPdgcode) == 331 ) {
        if(grmaPdgcode == 111 || grmaPdgcode == 221 || grmaPdgcode == 223 || grmaPdgcode == 333 || grmaPdgcode == 113) return kGammaM2M;
        return kGammaEtaPrime; 
      }
      else if ( TMath::Abs(maPdgcode) == 113 ) {
        if(grmaPdgcode == 111 || grmaPdgcode == 221 || grmaPdgcode == 223 || grmaPdgcode == 333 || grmaPdgcode == 331) return kGammaM2M;
        return kGammaRho0;
      }
      else origin = kElse;
     }
     else origin = kElse;
     return origin;

   } 
   else {

     // check if the ligth meson is the decay product of heavy mesons
     tmpMomLabel = partMotherCopy->GetFirstMother();
     if((mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(tmpMomLabel))))) {
      partMother = mctrack->Particle();
      grmaPdgcode = partMother->GetPdgCode();

      if ( (int(TMath::Abs(grmaPdgcode)/100.)%10) == kBeauty || (int(TMath::Abs(grmaPdgcode)/1000.)%10) == kBeauty ) return kB2M;
      if ( (int(TMath::Abs(grmaPdgcode)/100.)%10) == kCharm || (int(TMath::Abs(grmaPdgcode)/1000.)%10) == kCharm ) return kD2M;

      tmpMomLabel = partMother->GetFirstMother();
      if((mctrack = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(TMath::Abs(tmpMomLabel))))) {
       partMother = mctrack->Particle();
       ggrmaPdgcode = partMother->GetPdgCode();

       if ( (int(TMath::Abs(ggrmaPdgcode)/100.)%10) == kBeauty || (int(TMath::Abs(ggrmaPdgcode)/1000.)%10) == kBeauty ) return kB2M;
       if ( (int(TMath::Abs(ggrmaPdgcode)/100.)%10) == kCharm || (int(TMath::Abs(ggrmaPdgcode)/1000.)%10) == kCharm ) return kD2M;
      }

      if ( TMath::Abs(maPdgcode) == 111 ) {
        if(grmaPdgcode == 221 || grmaPdgcode == 223 || grmaPdgcode == 333 || grmaPdgcode == 331 || grmaPdgcode == 113) return kM2M;
        return kPi0;
      } 
      else if ( TMath::Abs(maPdgcode) == 221 ) {
        if(grmaPdgcode == 111 || grmaPdgcode == 223 || grmaPdgcode == 333 || grmaPdgcode == 331 || grmaPdgcode == 113) return kM2M;
        return kEta;
      } 
      else if ( TMath::Abs(maPdgcode) == 223 ) {
        if(grmaPdgcode == 111 || grmaPdgcode == 221 || grmaPdgcode == 333 || grmaPdgcode == 331 || grmaPdgcode == 113) return kM2M;
        return kOmega;
      } 
      else if ( TMath::Abs(maPdgcode) == 333 ) {
        if(grmaPdgcode == 111 || grmaPdgcode == 221 || grmaPdgcode == 223 || grmaPdgcode == 331 || grmaPdgcode == 113) return kM2M;
        return kPhi;
      } 
      else if ( TMath::Abs(maPdgcode) == 331 ) {
        if(grmaPdgcode == 111 || grmaPdgcode == 221 || grmaPdgcode == 223 || grmaPdgcode == 333 || grmaPdgcode == 113) return kM2M;
        return kEtaPrime;
      } 
      else if ( TMath::Abs(maPdgcode) == 113 ) {
        if(grmaPdgcode == 111 || grmaPdgcode == 221 || grmaPdgcode == 223 || grmaPdgcode == 333 || grmaPdgcode == 331) return kM2M;
        return kRho0;
      } 
      else if ( TMath::Abs(maPdgcode) == 321 || TMath::Abs(maPdgcode) == 130 ) {
        return kKe3;
      }
      else origin = kElse;
     }
     else origin = kElse;

   }
   return origin;
}

//__________________________________________
Int_t AliHFEmcQA::GetElecSource(const AliVParticle * const mctrack, Bool_t isElec) const
{
  //
  // decay particle's origin 
  //

  if(!mctrack){
    AliDebug(1, "no mcparticle, return\n");
    return -1;
  }

  TClass *type = mctrack->IsA();  

  if(type == AliMCParticle::Class()) {
    const AliMCParticle *esdmc = dynamic_cast<const AliMCParticle *>(mctrack);
    if(esdmc){
      TParticle *mcpart =  esdmc->Particle();
      return GetElecSource(mcpart, isElec);
    }
    else return -1;
  }
  if(type == AliAODMCParticle::Class()) {
    const AliAODMCParticle *aodmc = dynamic_cast<const AliAODMCParticle *>(mctrack);
    if(aodmc){
      return GetElecSource(aodmc, isElec);
    }
    else return -1;
  }
  return -1;
}
//__________________________________________
Int_t AliHFEmcQA::GetElecSource(const AliAODMCParticle * const mcpart, Bool_t isElec) const
{
  //
  // Function for AliAODMCParticle
  //

  if (!mcpart) return -1;
  if (!fMCArray) return -1;
  
  if(isElec) if ( TMath::Abs(mcpart->GetPdgCode()) != AliHFEmcQA::kElectronPDG ) return kMisID;

  Int_t origin = -1;
  Bool_t isFinalOpenCharm = kFALSE;

  Int_t iLabel = mcpart->GetMother();
  if ((iLabel<0) || (iLabel>=fMCArray->GetEntriesFast())){
    AliDebug(1, "label is out of range, return\n");
    return -1;
  }

  AliAODMCParticle *mctrack = NULL; // will change all the time
  Int_t tmpMomLabel=0;
  if(!(mctrack = dynamic_cast<AliAODMCParticle *>(fMCArray->At(TMath::Abs(iLabel))))) return -1; 
  AliAODMCParticle *partMother = mctrack; 
  AliAODMCParticle *partMotherCopy = mctrack;
  Int_t maPdgcode = mctrack->GetPdgCode();
  Int_t grmaPdgcode;
  Int_t ggrmaPdgcode;

  // if the mother is charmed hadron  

  if(TMath::Abs(maPdgcode)==443){ 
    //
    // J/spi
    //
    Int_t jLabel = partMother->GetMother();
    if ((jLabel>=0) && (jLabel<fMCArray->GetEntriesFast())){
      if((mctrack = dynamic_cast<AliAODMCParticle *>(fMCArray->At(TMath::Abs(jLabel))))){
	Int_t grandMaPDG = mctrack->GetPdgCode();
	if((int(TMath::Abs(grandMaPDG)/100.)%10) == kBeauty || (int(TMath::Abs(grandMaPDG)/1000.)%10) == kBeauty) {
	  return kB2Jpsi;
	}
      }
    }
    return kJpsi;   
  } 
  else if ( (int(TMath::Abs(maPdgcode)/100.)%10) == kCharm || (int(TMath::Abs(maPdgcode)/1000.)%10) == kCharm ) {
    //
    // charm
    //
    for (Int_t i=0; i<fNparents; i++){
      if (TMath::Abs(maPdgcode)==fParentSelect[0][i]){
	isFinalOpenCharm = kTRUE;
      }
    }
    if (!isFinalOpenCharm) {
      return -1;
    }
    
    // iterate until you find B hadron as a mother or become top ancester 
    for (Int_t i=1; i<fgkMaxIter; i++){
      
      Int_t jLabel = partMother->GetMother();
      if (jLabel == -1){
	return kDirectCharm;
      }
      if ((jLabel<0) || (jLabel>=fMCArray->GetEntriesFast())){
	AliDebug(1, "Stack label is negative, return\n");
	return -1;
      }
      
      // if there is an ancester
      if(!(mctrack = dynamic_cast<AliAODMCParticle *>(fMCArray->At(TMath::Abs(jLabel))))) {
	return -1; 
      }
      Int_t grandMaPDG = mctrack->GetPdgCode();
      for (Int_t j=0; j<fNparents; j++){
	if (TMath::Abs(grandMaPDG)==fParentSelect[1][j]){
	  return kBeautyCharm;
	}
      }
      partMother = mctrack;
    } // end of iteration 

  } // end of if
  else if ( (int(TMath::Abs(maPdgcode)/100.)%10) == kBeauty || (int(TMath::Abs(maPdgcode)/1000.)%10) == kBeauty ) {
    //
    // beauty
    //
    for (Int_t i=0; i<fNparents; i++){
      if (TMath::Abs(maPdgcode)==fParentSelect[1][i]){
	return kDirectBeauty;
      }
    }
  } // end of if
  else if ( TMath::Abs(maPdgcode) == 22 ) { 
    //
    //conversion
    //
    tmpMomLabel = partMotherCopy->GetMother();
    if((tmpMomLabel<0) || (tmpMomLabel>=fMCArray->GetEntriesFast())) {
      return -1;
    }
    if(!(mctrack = dynamic_cast<AliAODMCParticle *>(fMCArray->At(TMath::Abs(tmpMomLabel))))) {
      return -1;
    }
    partMother = mctrack;
    maPdgcode = partMother->GetPdgCode();
    
    // check if the ligth meson is the decay product of heavy mesons
    tmpMomLabel = partMother->GetMother();
    if((tmpMomLabel>=0) && (tmpMomLabel<fMCArray->GetEntriesFast())) {
      if((mctrack = dynamic_cast<AliAODMCParticle *>(fMCArray->At(TMath::Abs(tmpMomLabel))))) {
	partMother = mctrack;
	grmaPdgcode = partMother->GetPdgCode();
	
	if ( (int(TMath::Abs(grmaPdgcode)/100.)%10) == kBeauty || (int(TMath::Abs(grmaPdgcode)/1000.)%10) == kBeauty ) {	 
	  return kGammaB2M;
	}
	if ( (int(TMath::Abs(grmaPdgcode)/100.)%10) == kCharm || (int(TMath::Abs(grmaPdgcode)/1000.)%10) == kCharm ) {	 
	  return kGammaD2M;
	}
	
	tmpMomLabel = partMother->GetMother();
	if((tmpMomLabel>=0) && (tmpMomLabel<fMCArray->GetEntriesFast())) {
	  if((mctrack = dynamic_cast<AliAODMCParticle *>(fMCArray->At(TMath::Abs(tmpMomLabel))))) {
	    partMother = mctrack;
	    ggrmaPdgcode = partMother->GetPdgCode();
	    
	    if ( (int(TMath::Abs(ggrmaPdgcode)/100.)%10) == kBeauty || (int(TMath::Abs(ggrmaPdgcode)/1000.)%10) == kBeauty ) {
	      return kGammaB2M;
	    }
	    if ( (int(TMath::Abs(ggrmaPdgcode)/100.)%10) == kCharm || (int(TMath::Abs(ggrmaPdgcode)/1000.)%10) == kCharm ) {
	      return kGammaD2M;
	    }
	   }
	}

        if ( TMath::Abs(maPdgcode) == 111 ) {
          if(grmaPdgcode == 221 || grmaPdgcode == 223 || grmaPdgcode == 333 || grmaPdgcode == 331 || grmaPdgcode == 113) return kGammaM2M;
          return kGammaPi0;
        } 
        else if ( TMath::Abs(maPdgcode) == 221 ) {
          if(grmaPdgcode == 111 || grmaPdgcode == 223 || grmaPdgcode == 333 || grmaPdgcode == 331 || grmaPdgcode == 113) return kGammaM2M;
          return kGammaEta;
        } 
        else if ( TMath::Abs(maPdgcode) == 223 ) {
          if(grmaPdgcode == 111 || grmaPdgcode == 221 || grmaPdgcode == 333 || grmaPdgcode == 331 || grmaPdgcode == 113) return kGammaM2M;
          return kGammaOmega;
        } 
        else if ( TMath::Abs(maPdgcode) == 333 ) {
          if(grmaPdgcode == 111 || grmaPdgcode == 221 || grmaPdgcode == 223 || grmaPdgcode == 331 || grmaPdgcode == 113) return kGammaM2M;
          return kGammaPhi;
        }
        else if ( TMath::Abs(maPdgcode) == 331 ) {
          if(grmaPdgcode == 111 || grmaPdgcode == 221 || grmaPdgcode == 223 || grmaPdgcode == 333 || grmaPdgcode == 113) return kGammaM2M;
          return kGammaEtaPrime; 
        }
        else if ( TMath::Abs(maPdgcode) == 113 ) {
          if(grmaPdgcode == 111 || grmaPdgcode == 221 || grmaPdgcode == 223 || grmaPdgcode == 333 || grmaPdgcode == 331) return kGammaM2M;
          return kGammaRho0;
        }
        else origin = kElse;
      }
    }
    else origin = kElse;
   
    return origin;
    
  } 
   else {
     //
     // check if the ligth meson is the decay product of heavy mesons
     //
     tmpMomLabel = partMotherCopy->GetMother();
     if((tmpMomLabel>=0) && (tmpMomLabel<fMCArray->GetEntriesFast())) {
       if((mctrack = dynamic_cast<AliAODMCParticle *>(fMCArray->At(TMath::Abs(tmpMomLabel))))) {
	 partMother = mctrack;
	 grmaPdgcode = partMother->GetPdgCode();
	 
	 if ( (int(TMath::Abs(grmaPdgcode)/100.)%10) == kBeauty || (int(TMath::Abs(grmaPdgcode)/1000.)%10) == kBeauty ) {
	   return kB2M;
	 }
	 if ( (int(TMath::Abs(grmaPdgcode)/100.)%10) == kCharm || (int(TMath::Abs(grmaPdgcode)/1000.)%10) == kCharm ) {
	   return kD2M;
	 }
	 
	 tmpMomLabel = partMother->GetMother();
	 if((tmpMomLabel>=0) && (tmpMomLabel<fMCArray->GetEntriesFast())) {
	   if((mctrack = dynamic_cast<AliAODMCParticle *>(fMCArray->At(TMath::Abs(tmpMomLabel))))) {
	     partMother = mctrack;
	     ggrmaPdgcode = partMother->GetPdgCode();
	     
	     if ( (int(TMath::Abs(ggrmaPdgcode)/100.)%10) == kBeauty || (int(TMath::Abs(ggrmaPdgcode)/1000.)%10) == kBeauty ) {
	       return kB2M;
	     }
	     if ( (int(TMath::Abs(ggrmaPdgcode)/100.)%10) == kCharm || (int(TMath::Abs(ggrmaPdgcode)/1000.)%10) == kCharm ) {
	       return kD2M;
	     }
	   }
	 }

         if ( TMath::Abs(maPdgcode) == 111 ) {
           if(grmaPdgcode == 221 || grmaPdgcode == 223 || grmaPdgcode == 333 || grmaPdgcode == 331 || grmaPdgcode == 113) return kM2M;
	   return kPi0;
         } 
         else if ( TMath::Abs(maPdgcode) == 221 ) {
           if(grmaPdgcode == 111 || grmaPdgcode == 223 || grmaPdgcode == 333 || grmaPdgcode == 331 || grmaPdgcode == 113) return kM2M;
	   return kEta;
         } 
         else if ( TMath::Abs(maPdgcode) == 223 ) {
           if(grmaPdgcode == 111 || grmaPdgcode == 221 || grmaPdgcode == 333 || grmaPdgcode == 331 || grmaPdgcode == 113) return kM2M;
	   return kOmega;
         } 
         else if ( TMath::Abs(maPdgcode) == 333 ) {
           if(grmaPdgcode == 111 || grmaPdgcode == 221 || grmaPdgcode == 223 || grmaPdgcode == 331 || grmaPdgcode == 113) return kM2M;
	   return kPhi;
         } 
         else if ( TMath::Abs(maPdgcode) == 331 ) {
           if(grmaPdgcode == 111 || grmaPdgcode == 221 || grmaPdgcode == 223 || grmaPdgcode == 333 || grmaPdgcode == 113) return kM2M;
  	   return kEtaPrime;
         } 
         else if ( TMath::Abs(maPdgcode) == 113 ) {
           if(grmaPdgcode == 111 || grmaPdgcode == 221 || grmaPdgcode == 223 || grmaPdgcode == 333 || grmaPdgcode == 331) return kM2M;
	   return kRho0;
         } 
         else if ( TMath::Abs(maPdgcode) == 321 || TMath::Abs(maPdgcode) == 130 ) {
	   return kKe3;
         }
         else origin = kElse;
       }
     }
     else origin = kElse;
   }
  return origin;
}
//__________________________________________
Double_t AliHFEmcQA::GetWeightFactor(AliMCParticle *mctrack, const Int_t iBgLevel){
  //
  // Get weighting factor for the realistic background estimation, for three possible background yield levels, indicated by the argument "iLevel": the best estimate (0), the lower uncertainty level (1), and the upper uncertainty level (2)
  //
  AliMCParticle *mctrackmother = NULL;  
  Double_t weightElecBg = 0.;
  Double_t mesonPt = 0.;
  Double_t bgcategory = 0.;
  Int_t mArr = -1;  
  Int_t mesonID = GetElecSource(mctrack->Particle(), kTRUE);
  if(mesonID==kGammaPi0 || mesonID==kPi0) mArr=0;                //pion
  else if(mesonID==kGammaEta || mesonID==kEta) mArr=1;           //eta
  else if(mesonID==kGammaOmega || mesonID==kOmega) mArr=2;       //omega
  else if(mesonID==kGammaPhi || mesonID==kPhi) mArr=3;           //phi
  else if(mesonID==kGammaEtaPrime || mesonID==kEtaPrime) mArr=4; //etaprime
  else if(mesonID==kGammaRho0 || mesonID==kRho0) mArr=5;         //rho

  Double_t datamc[25]={-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999, -999, -999, -999, -999, -999, -999, -999, -999, -999};
  Double_t xr[3]={-999,-999,-999};
  datamc[0] = mesonID;
  datamc[17] = mctrack->Pt(); //electron pt
  datamc[18] = mctrack->Eta(); //electron eta

  mctrack->XvYvZv(xr);
  datamc[9] = TMath::Sqrt(xr[0]*xr[0]+xr[1]*xr[1]);
  datamc[10] = xr[2];

  TParticle *mcpart = mctrack->Particle();
  if(mcpart){
    datamc[14] = mcpart->GetUniqueID();
  }

  if(!(mArr<0)){
     if(mesonID>=kGammaPi0) {  // conversion electron, be careful with the enum odering 
        Int_t glabel=TMath::Abs(mctrack->GetMother()); // gamma label
        if((mctrackmother = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(glabel)))){
          glabel=TMath::Abs(mctrackmother->GetMother()); // gamma's mother's label
          if((mctrackmother = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(glabel)))){
            mesonPt = mctrackmother->Pt(); //meson pt
            bgcategory = 1.;
            datamc[1] = bgcategory;
            datamc[2] = mesonPt;
            mctrackmother->XvYvZv(xr);
            datamc[11] = TMath::Sqrt(xr[0]*xr[0]+xr[1]*xr[1]);
            datamc[12] = xr[2];

            mcpart = mctrackmother->Particle();
            if(mcpart){
              datamc[15] = mcpart->GetUniqueID();
            }
            if(glabel>fMCEvent->GetNumberOfPrimaries()) {
              bgcategory = 2.;
              datamc[1] = bgcategory;
              //printf("I should be gamma meson = %d  mesonlabel= %d  NumberOfPrimaries= %d \n",mctrackmother->PdgCode(),glabel,fMCEvent->GetNumberOfPrimaries()); 
              glabel=TMath::Abs(mctrackmother->GetMother()); // gamma's mother's mother
              if((mctrackmother = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(glabel)))){
                datamc[3]=mctrackmother->PdgCode();
                datamc[4]=mctrackmother->Pt();
                if(TMath::Abs(mctrackmother->PdgCode())==310){
                  bgcategory = 3.;
                  glabel=TMath::Abs(mctrackmother->GetMother()); // gamma's mother's mother's mother
                  if((mctrackmother = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(glabel)))){
                    datamc[5]=mctrackmother->PdgCode();
                    glabel=TMath::Abs(mctrackmother->GetMother()); // gamma's mother's mother
                    if((mctrackmother = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(glabel)))){
                       datamc[6]=mctrackmother->PdgCode();
                    }
                  }
                }
              }
            } 
          } 
        }
     }
     else{ // nonHFE except for the conversion electron
        Int_t glabel=TMath::Abs(mctrack->GetMother()); 
        if((mctrackmother = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(glabel)))){
          mesonPt=mctrackmother->Pt(); //meson pt
          if(mesonID==kEta) bgcategory = -1.41; // to consider new branching ratio for the eta Dalitz decay
          else bgcategory = -1.;
          datamc[1] = bgcategory;
          datamc[2] = mesonPt;
          mctrackmother->XvYvZv(xr);
          datamc[11] = TMath::Sqrt(xr[0]*xr[0]+xr[1]*xr[1]);
          datamc[12] = xr[2];

          mcpart = mctrackmother->Particle();
          if(mcpart){
            datamc[15] = mcpart->GetUniqueID();
          }
          if(glabel>fMCEvent->GetNumberOfPrimaries()) {
            if(mesonID==kEta) bgcategory = -2.82; // to consider new branching ratio for the eta Dalitz decay (1.41)
            else bgcategory = -2.;
            datamc[1] = bgcategory;
            glabel=TMath::Abs(mctrackmother->GetMother()); // gamma's mother's mother
            if((mctrackmother = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(glabel)))){
              datamc[3]=mctrackmother->PdgCode();
              datamc[4]=mctrackmother->Pt();
              if(TMath::Abs(mctrackmother->PdgCode())==310){
               bgcategory = -3.;
               glabel=TMath::Abs(mctrackmother->GetMother()); // gamma's mother's mother's mother
               if((mctrackmother = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(glabel)))){
                 datamc[5]=mctrackmother->PdgCode();
                 glabel=TMath::Abs(mctrackmother->GetMother()); // gamma's mother's mother
                 if((mctrackmother = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(glabel)))){
                   datamc[6]=mctrackmother->PdgCode();
                 }
               }
              }  
            }
          }
        }
     }


     if(fIsPbPb){
       Int_t centBin = GetWeightCentralityBin(fPerCentrality);
       if(centBin < 0)return 0.;
       weightElecBg=fElecBackgroundFactor[iBgLevel][centBin][mArr][kBgPtBins-1];                        
       for(int ii=0; ii<kBgPtBins; ii++){              
	 if((mesonPt > fBinLimit[ii]) && (mesonPt < fBinLimit[ii+1])){
	   weightElecBg = fElecBackgroundFactor[iBgLevel][centBin][mArr][ii];
	   break;
	 }
       }
     }
     else{
       weightElecBg=fElecBackgroundFactor[iBgLevel][0][mArr][kBgPtBins-1];                         
       for(int ii=0; ii<kBgPtBins; ii++){              
	 if((mesonPt > fBinLimit[ii]) && (mesonPt < fBinLimit[ii+1])){
	   weightElecBg = fElecBackgroundFactor[iBgLevel][0][mArr][ii];
	   break;
	 }
       }
     }    
  }

  datamc[13] = weightElecBg;
  datamc[16] = Double_t(fContainerStep);

  datamc[7] = fHfeImpactR;
  datamc[8] = fHfeImpactnsigmaR;

  datamc[19] = fRecPt;
  datamc[20] = fRecEta;
  datamc[21] = fRecPhi;
  datamc[22] = fLyrhit;
  datamc[23] = fLyrstat;
  datamc[24] = fCentrality;

  if(fIsDebugStreamerON && fTreeStream){
   if(!iBgLevel){
    (*fTreeStream)<<"nonhfeQA"<<
        "mesonID="<<datamc[0]<<
        "bgcategory="<<datamc[1]<<
        "mesonPt="<<datamc[2]<<
        "mesonMomPdg="<<datamc[3]<<
        "mesonMomPt="<<datamc[4]<<
        "mesonGMomPdg="<<datamc[5]<<
        "mesonGGMomPdg="<<datamc[6]<<
        "eIPAbs="<<datamc[7]<<
        "eIPSig="<<datamc[8]<<
        "eR="<<datamc[9]<<
        "eZ="<<datamc[10]<<
        "mesonR="<<datamc[11]<<
        "mesonZ="<<datamc[12]<<
        "weightElecBg="<<datamc[13]<< 
        "eUniqID="<<datamc[14]<<
        "mesonUniqID="<<datamc[15]<<
        "containerStep="<<datamc[16]<<
        "emcpt="<<datamc[17]<<
        "emceta="<<datamc[18]<<
        "erecpt="<<datamc[19]<<
        "ereceta="<<datamc[20]<<
        "erecphi="<<datamc[21]<< 
        "itshit="<<datamc[22]<<
	"itsstat="<<datamc[23]<<
        "centrality="<<datamc[24]
        << "\n";
   }
  }

  Double_t returnval = bgcategory*weightElecBg;

  return returnval;
}

//__________________________________________
Double_t AliHFEmcQA::GetWeightFactor(const AliAODMCParticle * const mcpart, const Int_t iBgLevel){
  //
  // Get weighting factor for the realistic background estimation, for three possible background yield levels, indicated by the argument "iLevel": the best estimate (0), the lower uncertainty level (1), and the upper uncertainty level (2)
  //

  if (!mcpart) return 0;
  if (!fMCArray) return 0;

  Double_t weightElecBg = 0.;
  Double_t mesonPt = 0.;
  Double_t bgcategory = 0.;
  Int_t mArr = -1;
  Int_t mesonID = GetElecSource(mcpart, kTRUE);
  if(mesonID==kGammaPi0 || mesonID==kPi0) mArr=0;                //pion
  else if(mesonID==kGammaEta || mesonID==kEta) mArr=1;           //eta
  else if(mesonID==kGammaOmega || mesonID==kOmega) mArr=2;       //omega
  else if(mesonID==kGammaPhi || mesonID==kPhi) mArr=3;           //phi
  else if(mesonID==kGammaEtaPrime || mesonID==kEtaPrime) mArr=4; //etaprime
  else if(mesonID==kGammaRho0 || mesonID==kRho0) mArr=5;         //rho

  if(!(mArr<0)){

     AliAODMCParticle *mctrackmother = NULL; // will change all the time

     if(mesonID>=kGammaPi0) {  // conversion electron, be careful with the enum odering
        Int_t iLabel = mcpart->GetMother(); //gamma label
        if(!(mctrackmother = dynamic_cast<AliAODMCParticle *>(fMCArray->At(TMath::Abs(iLabel))))) return 0;
        iLabel = mctrackmother->GetMother(); //gamma's mother's label
        if(!(mctrackmother= dynamic_cast<AliAODMCParticle *>(fMCArray->At(TMath::Abs(iLabel))))) return 0;
        mesonPt = mctrackmother->Pt(); //meson pt
        bgcategory = 1.;

        //if(glabel>fMCEvent->GetNumberOfPrimaries()) bgcategory = 2.;
     }
     else{ // nonHFE except for the conversion electron
        Int_t iLabel = mcpart->GetMother(); //meson label
        if(!(mctrackmother = dynamic_cast<AliAODMCParticle *>(fMCArray->At(TMath::Abs(iLabel))))) return 0;
        mesonPt = mctrackmother->Pt(); //meson pt
        if(mesonID==kEta) bgcategory = -1.41; // to consider new branching ratio for the eta Dalitz decay
        else bgcategory = -1.;

        //if(glabel>fMCEvent->GetNumberOfPrimaries()) bgcategory = -2.;
     }

     if(fIsPbPb){
       Int_t centBin = GetWeightCentralityBin(fPerCentrality);
       if(centBin < 0)return 0.;
       weightElecBg=fElecBackgroundFactor[iBgLevel][centBin][mArr][kBgPtBins-1];
       for(int ii=0; ii<kBgPtBins; ii++){
         if((mesonPt > fBinLimit[ii]) && (mesonPt < fBinLimit[ii+1])){
           weightElecBg = fElecBackgroundFactor[iBgLevel][centBin][mArr][ii];
           break;
         }
       }
     }
     else{
       weightElecBg=fElecBackgroundFactor[iBgLevel][0][mArr][kBgPtBins-1];
       for(int ii=0; ii<kBgPtBins; ii++){
         if((mesonPt > fBinLimit[ii]) && (mesonPt < fBinLimit[ii+1])){
           weightElecBg = fElecBackgroundFactor[iBgLevel][0][mArr][ii];
           break;
         }
       }
     }
  }

  Double_t returnval = bgcategory*weightElecBg;

  return returnval;
}

//__________________________________________
Double_t AliHFEmcQA::GetWeightFactorForPrimaries(const AliAODMCParticle * const mcpart, const Int_t iBgLevel){
  //
  // Get weighting factor for the realistic background estimation, for three possible background yield levels, indicated by the argument "iLevel": the best estimate (0), the lower uncertainty level (1), and the upper uncertainty level (2)
  // weighting will only be non zero for electrons from primary pi0 and eta mesons (via Dalitz or gamma conversions)  
  //

  if (!mcpart) return 0;
  if (!fMCArray) return 0;

  Int_t mArr = -1;
  Double_t mesonPt = 0.;
  AliAODMCParticle *mctrackmother = NULL; // temp pointer
  Int_t mesonID = GetElecSource(mcpart, kTRUE); // get source of electron 
  if(mesonID==kGammaPi0 || mesonID==kPi0) mArr=0;                //pion
  else if(mesonID==kGammaEta || mesonID==kEta) mArr=1;           //eta
  else return 0;

  Int_t iLabel = mcpart->GetMother(); //mother label
  switch (mesonID) {
      case kGammaPi0:
      case kGammaEta:
          if(!(mctrackmother = dynamic_cast<AliAODMCParticle *>(fMCArray->At(TMath::Abs(iLabel))))) return 0;
          iLabel = mctrackmother->GetMother(); //reset label to mother of gamma
      case kPi0:
      case kEta:
          if(!(mctrackmother = dynamic_cast<AliAODMCParticle *>(fMCArray->At(TMath::Abs(iLabel))))) return 0;
          mesonPt = mctrackmother->Pt(); //pt of (grand)mother 
          //check mother is primary 
          if(!(mctrackmother->IsPrimary())) return 0;
          break;
      default:
          return 0; 
  }
  Double_t weightElecBg = fElecBackgroundFactor[iBgLevel][0][mArr][kBgPtBins-1]; //set weighting for pt > max pt
  for(int ii=0; ii<kBgPtBins; ii++){
      if((mesonPt >= fBinLimit[ii]) && (mesonPt < fBinLimit[ii+1])){
          weightElecBg = fElecBackgroundFactor[iBgLevel][0][mArr][ii];
          break;
      }
  }

  return weightElecBg;
}

//__________________________________________
//__________________________________________
Int_t AliHFEmcQA::GetMother(const AliVParticle * const mcpart) const {
  //
  // Wrapper to get the mother label
  //
  Int_t label = -1; 
  TClass *type = mcpart->IsA();
  if(type == AliMCParticle::Class()){
    // ESD analysis
    const AliMCParticle *emcpart = static_cast<const AliMCParticle *>(mcpart);
    label = emcpart->GetMother();
  } else if(type == AliAODMCParticle::Class()){
    // AOD analysis
    const AliAODMCParticle *amcpart = static_cast<const AliAODMCParticle *>(mcpart);
    label = amcpart->GetMother();
  }
  return label;
}
//__________________________________________
Int_t AliHFEmcQA::GetWeightCentralityBin(const Float_t percentile) const {
  //
  //translate the centrality percentile into the centrality bin of the reference weighting histograms for electron background
  //

  Float_t centralityLimits[12]= {0.,5.,10., 20., 30., 40., 50., 60.,70.,80., 90., 100.};
  Int_t bin = -1;
  for(Int_t ibin = 0; ibin < 11; ibin++){
    if(percentile >= centralityLimits[ibin] && percentile < centralityLimits[ibin+1]){
      bin = ibin;
      break;
    }
  } 
  return bin;
}
//__________________________________________
void AliHFEmcQA::AliHists::FillList(TList *l) const {
  //
  // Fill Histos into a list for output
  //
  if(fPdgCode) l->Add(fPdgCode);
  if(fPt) l->Add(fPt);
  if(fY) l->Add(fY);
  if(fEta) l->Add(fEta);
}

//__________________________________________
void AliHFEmcQA::AliHistsComm::FillList(TList *l) const { 
  //
  // Fill Histos into a list for output
  //
  if(fNq) l->Add(fNq);
  if(fProcessID) l->Add(fProcessID);
  if(fePtRatio) l->Add(fePtRatio);
  if(fPtCorr) l->Add(fPtCorr);
  if(fPtCorrDp) l->Add(fPtCorrDp);
  if(fPtCorrD0) l->Add(fPtCorrD0);
  if(fPtCorrDrest) l->Add(fPtCorrDrest);

  if(fPtCorrDinein) l->Add(fPtCorrDinein);
  if(fPtCorrDineout) l->Add(fPtCorrDineout);
  if(fPtCorrDoutein) l->Add(fPtCorrDoutein);
  if(fPtCorrDouteout) l->Add(fPtCorrDouteout);
  if(fPtCorrDpDinein) l->Add(fPtCorrDpDinein);
  if(fPtCorrDpDineout) l->Add(fPtCorrDpDineout);
  if(fPtCorrDpDoutein) l->Add(fPtCorrDpDoutein);
  if(fPtCorrDpDouteout) l->Add(fPtCorrDpDouteout);
  if(fPtCorrD0Dinein) l->Add(fPtCorrD0Dinein);
  if(fPtCorrD0Dineout) l->Add(fPtCorrD0Dineout);
  if(fPtCorrD0Doutein) l->Add(fPtCorrD0Doutein);
  if(fPtCorrD0Douteout) l->Add(fPtCorrD0Douteout);
  if(fPtCorrDrestDinein) l->Add(fPtCorrDrestDinein);
  if(fPtCorrDrestDineout) l->Add(fPtCorrDrestDineout);
  if(fPtCorrDrestDoutein) l->Add(fPtCorrDrestDoutein);
  if(fPtCorrDrestDouteout) l->Add(fPtCorrDrestDouteout);

  if(fEtaCorrD) l->Add(fEtaCorrD);
  if(fEtaCorrDp) l->Add(fEtaCorrDp);
  if(fEtaCorrD0) l->Add(fEtaCorrD0);
  if(fEtaCorrDrest) l->Add(fEtaCorrDrest);

  if(fEtaCorrGD) l->Add(fEtaCorrGD);
  if(fEtaCorrGDp) l->Add(fEtaCorrGDp);
  if(fEtaCorrGD0) l->Add(fEtaCorrGD0);
  if(fEtaCorrGDrest) l->Add(fEtaCorrGDrest);

  if(fEtaCorrB) l->Add(fEtaCorrB);
  if(fEtaCorrGB) l->Add(fEtaCorrGB);
  if(fPtCorrBinein) l->Add(fPtCorrBinein);
  if(fPtCorrBineout) l->Add(fPtCorrBineout);
  if(fPtCorrBoutein) l->Add(fPtCorrBoutein);
  if(fPtCorrBouteout) l->Add(fPtCorrBouteout);

  if(fDePtRatio) l->Add(fDePtRatio);
  if(feDistance) l->Add(feDistance);
  if(fDeDistance) l->Add(fDeDistance);
}

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