ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2006, 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.                  *
 **************************************************************************/

///////////////////////////////////////////////////////////////////////////
//
// class used to extract ,store info and fill histograms at event level
//
// Author: H-S. Zhu, hongsheng.zhu@cern.ch
//                   hszhu@iopp.ccnu.edu.cn
///////////////////////////////////////////////////////////////////////////

#include <iostream>

#include <TH1.h>
#include <TH2.h>
#include <TMath.h>
#include <TList.h>
#include <TClonesArray.h>

#include "AliInputEventHandler.h"
#include "AliMCEvent.h"
#include "AliStack.h"
#include "AliAODMCParticle.h"
#include "AliVEvent.h"
#include "AliVVertex.h"
#include "AliAnalysisUtils.h"
#include "AliVCaloCells.h"
#include "AliPHOSGeoUtils.h"
#include "AliCentrality.h"

#include "AliCaloClusterInfo.h"
#include "AliPHOSpPbPi0Header.h"

class TNamed;

ClassImp(AliPHOSpPbPi0Header)

Bool_t   AliPHOSpPbPi0Header::fgIsMC           = kFALSE;
Bool_t   AliPHOSpPbPi0Header::fgUseFiducialCut = kFALSE;
Int_t    AliPHOSpPbPi0Header::fgNCent          = 10;
Double_t AliPHOSpPbPi0Header::fgCuts[3]        = { 10., 0., 100. };

//_____________________________________________________________________________
AliPHOSpPbPi0Header::AliPHOSpPbPi0Header() :
  TNamed(), fFiredTriggerClass(), fSelMask(0), fIsVertexOK(kFALSE), fIsPileup(kFALSE), fCentrality(0.)
{
  //
  // default constructor
  //
  for (Int_t i=3; i--;) fVtx[i] = 0.;
}

//_____________________________________________________________________________
AliPHOSpPbPi0Header::AliPHOSpPbPi0Header(const AliPHOSpPbPi0Header &src) :
  TNamed(), fFiredTriggerClass(src.fFiredTriggerClass), fSelMask(src.fSelMask), fIsVertexOK(src.fIsVertexOK),
  fIsPileup(src.fIsPileup), fCentrality(src.fCentrality)
{
  //
  // copy constructor
  //
  for (Int_t i=3; i--;) fVtx[i] = src.fVtx[i];
}

//_____________________________________________________________________________
AliPHOSpPbPi0Header& AliPHOSpPbPi0Header::operator=(const AliPHOSpPbPi0Header &src)
{
  //
  // assignment constructor
  //

  if(&src==this) return *this;

  fFiredTriggerClass            = src.fFiredTriggerClass;
  fSelMask                      = src.fSelMask;
  fIsVertexOK                   = src.fIsVertexOK;
  fIsPileup                     = src.fIsPileup;
  fCentrality                   = src.fCentrality;
  for (Int_t i=3; i--;) fVtx[i] = src.fVtx[i];

  return *this;
}

//_____________________________________________________________________________
AliPHOSpPbPi0Header::~AliPHOSpPbPi0Header()
{
  //
  // default destructor
  //
}

//_____________________________________________________________________________
void AliPHOSpPbPi0Header::SetEventInfo(AliInputEventHandler* const handler)
{
  // fill info at event level

  AliVEvent *event = handler->GetEvent();

  fSelMask      = handler->IsEventSelected();
  fIsVertexOK   = CheckEventVertex(event);

  AliCentrality *cent = event->GetCentrality();
  if (cent) fCentrality = cent->GetCentralityPercentile("V0A");
  else      fCentrality = -1.;

//this->SetTitle(vertex->GetTitle());
  return;
}

//_____________________________________________________________________________
Bool_t AliPHOSpPbPi0Header::IsSelected()
{
  // select event according to the event selection cuts
  if (!fIsVertexOK)                                    return kFALSE; // pA vertex cut
  if (TMath::Abs(fVtx[2])>fgCuts[0])                   return kFALSE; // Vtxz cut
  if (fCentrality<fgCuts[1] || fCentrality>fgCuts[2])  return kFALSE; // centrality selection

  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliPHOSpPbPi0Header::CheckEventVertex(AliVEvent* const event)
{
  // check event vertex

  // set event basic info
  fFiredTriggerClass       = event->GetFiredTriggerClasses();
  const AliVVertex* trkVtx = event->GetPrimaryVertex();
  if (!trkVtx)                               return kFALSE;
  trkVtx->GetXYZ(fVtx);

  AliAnalysisUtils *utils = new AliAnalysisUtils();
  if (!utils->IsVertexSelected2013pA(event)) return kFALSE;
  fIsPileup = utils->IsPileUpEvent(event);

  return kTRUE;
}

//_____________________________________________________________________________
void AliPHOSpPbPi0Header::CreateHistograms(TList *listQA, TList *listRD, TList *listMC)
{
  // create output histos of pi0 analysis according to the MC flag

  this->CreateHistosEvent(listQA);
  this->CreateHistosCaloCellsQA(listQA);
  this->CreateHistosCaloCluster(listQA);
  this->CreateHistosPi0(listRD);
  this->CreateHistosMixPi0(listRD);
  if (fgIsMC) this->CreateHistosMC(listMC);

  return;
}

//_____________________________________________________________________________
void AliPHOSpPbPi0Header::CreateHistosEvent(TList *listQA)
{
  // create histograms at event level

  const Int_t nhs    = 3;
  TString tName[nhs] = { "Centrality", "Vz", "Pileup" };
  Int_t   nbins[nhs] = {         110 , 500 ,     500  };
  Double_t xlow[nhs] = {         -10., -25.,     -25. };
  Double_t  xup[nhs] = {         100.,  25.,      25. };

  TString hName;
  TH1D   *histo = 0;
  for (Int_t i=0; i<nhs; i++) {
    hName = Form("hEvent_%s", tName[i].Data());
    histo = new TH1D(hName.Data(), hName.Data(), nbins[i], xlow[i], xup[i]);
    histo->Sumw2(); listQA->Add(histo); histo = 0;

    hName = Form("hEventSel_%s", tName[i].Data());
    histo = new TH1D(hName.Data(), hName.Data(), nbins[i], xlow[i], xup[i]);
    histo->Sumw2(); listQA->Add(histo); histo = 0;
  }

  return;
}

//_____________________________________________________________________________
void AliPHOSpPbPi0Header::CreateHistosCaloCellsQA(TList *listQA)
{
  // create QA histograms for CaloCells

  TH1D *histo1       = 0;
  TH2D *histo2       = 0;
  const Int_t nhs    = 3;
  const Int_t nMod   = 3;
  TString hName = "hCaloCellsQA_E";
  histo1 = new TH1D(hName, hName, 300, 0., 30.);
  histo1->Sumw2(); listQA->Add(histo1); histo1 = 0;
  for (Int_t i=0; i<nMod; i++) {
    hName  = Form("hCaloCellsQA_E_Mod%d", i+1);
    histo1 = new TH1D(hName.Data(), hName.Data(), 300, 0., 30.);
    histo1->Sumw2(); listQA->Add(histo1); histo1 = 0;
  }

  TString tName[nhs] = { "CentNCells", "Nxz", "Exz" };
  Int_t  nbinsx[nhs] = {          10 ,   64 ,  64   };
  Double_t xlow[nhs] = {           0.,   0.5,   0.5 };
  Double_t  xup[nhs] = {         100.,  64.5,  64.5 };
  Int_t  nbinsy[nhs] = {        1000 ,   56 ,  56   };
  Double_t ylow[nhs] = {           0.,   0.5,   0.5 };
  Double_t  yup[nhs] = {        1000.,  56.5,  56.5 };

  for (Int_t i=0; i<nhs; i++) {
    if (i == 0) {
      hName  = Form("hCaloCellsQA_%s", tName[i].Data());
      histo2 = new TH2D(hName.Data(), hName.Data(), nbinsx[i], xlow[i], xup[i], nbinsy[i], ylow[i], yup[i]);
      histo2->Sumw2(); listQA->Add(histo2); histo2 = 0;
    } else {
      for (Int_t j=0; j<nMod; j++) {
        hName  = Form("hCaloCellsQA_%s_Mod%d", tName[i].Data(), j+1);
        histo2 = new TH2D(hName.Data(), hName.Data(), nbinsx[i], xlow[i], xup[i], nbinsy[i], ylow[i], yup[i]);
        histo2->Sumw2(); listQA->Add(histo2); histo2 = 0;
      }
    }
  }

  return;
}

//_____________________________________________________________________________
void AliPHOSpPbPi0Header::CreateHistosCaloCluster(TList *listQA)
{
  // create histograms for CaloCluster

  const Int_t nMods = 3;
  const Int_t nTRUs = 8;
                         // { kAll,  kCpv,  kDisp,  kBoth,  kCpv2,  kDisp2,  kBoth2,     kPIDs };   // PID
  TString namePID[kPIDs] =  { "All", "Cpv", "Disp", "Both", "Cpv2", "Disp2", "Both2"           };
                         // { kPtClu, kEtaClu, kPhiClu, kM02Clu, kM20Clu, kTOFClu, kNCellsClu, kNClustersClu, kVarsClu };   // clusters
  TString tName[kVarsClu] = {   "Pt",   "Eta",   "Phi",   "M02",   "M20",   "TOF",   "NCells",   "NClusters"           };
  Int_t    bins[kVarsClu] = {   500 ,  300   ,   120  ,    200 ,    200 ,    400 ,       200 ,          20             };
  Double_t xMin[kVarsClu] = {     0.,   -0.15,     4.4,      0.,      0.,   -2e-6,         0.,           0.            };
  Double_t xMax[kVarsClu] = {    50.,    0.15,     5.6,      2.,      2.,    2e-6,      1000.,          20.            };

  TH1I *hncells = 0;
  TH1D *histo1  = 0;
  TH2D *histo2  = 0;
  TString hName;

  hName   = Form("hCaloCluster_%s", tName[kNCellsClu].Data());
  hncells = new TH1I(hName.Data(), hName.Data(), bins[kNCellsClu], (Int_t)xMin[kNCellsClu], (Int_t)xMax[kNCellsClu]);
  hncells->Sumw2(); listQA->Add(hncells); hncells = 0;

  hName   = Form("hCaloCluster_%s", tName[kNClustersClu].Data());
  hncells = new TH1I(hName.Data(), hName.Data(), bins[kNClustersClu], (Int_t)xMin[kNClustersClu], (Int_t)xMax[kNClustersClu]);
  hncells->Sumw2(); listQA->Add(hncells); hncells = 0;

  for (Int_t iPID=0; iPID<kPIDs; iPID++) {
    hName  = Form("hCaloCluster_%s_%s", tName[kPtClu].Data(), namePID[iPID].Data());
    histo1 = new TH1D(hName.Data(), hName.Data(), bins[kPtClu], xMin[kPtClu], xMax[kPtClu]);
    histo1->Sumw2(); listQA->Add(histo1); histo1 = 0;

    for (Int_t icent=0; icent<fgNCent; icent++) {
      hName  = Form("hCaloCluster_%s_%s_cent%d", tName[kPtClu].Data(), namePID[iPID].Data(), icent);
      histo1 = new TH1D(hName.Data(), hName.Data(), bins[kPtClu], xMin[kPtClu], xMax[kPtClu]);
      histo1->Sumw2(); listQA->Add(histo1); histo1 = 0;
    }

    hName  = Form("hCaloCluster_%s%s_%s", tName[kEtaClu].Data(), tName[kPhiClu].Data(), namePID[iPID].Data());
    histo2 = new TH2D(hName.Data(), hName.Data(), bins[kEtaClu], xMin[kEtaClu], xMax[kEtaClu], bins[kPhiClu], xMin[kPhiClu], xMax[kPhiClu]);
    histo2->Sumw2(); listQA->Add(histo2); histo2 = 0;
    for (Int_t i=0; i<kVarsClu-3; i++) {
      hName  = Form("hCaloCluster_%s%s_%s", tName[0].Data(), tName[i+1].Data(), namePID[iPID].Data());
      histo2 = new TH2D(hName.Data(), hName.Data(), bins[0], xMin[0], xMax[0], bins[i+1], xMin[i+1], xMax[i+1]);
      histo2->Sumw2(); listQA->Add(histo2); histo2 = 0;
    }
  }

  for (Int_t iMod=0; iMod<nMods; iMod++) {
    hName   = Form("hCaloCluster_%s_Mod%d", tName[kNCellsClu].Data(), iMod+1);
    hncells = new TH1I(hName.Data(), hName.Data(), bins[kNCellsClu], (Int_t)xMin[kNCellsClu], (Int_t)xMax[kNCellsClu]);
    hncells->Sumw2(); listQA->Add(hncells); hncells = 0;

    hName   = Form("hCaloCluster_%s_Mod%d", tName[kNClustersClu].Data(), iMod+1);
    hncells = new TH1I(hName.Data(), hName.Data(), bins[kNClustersClu], (Int_t)xMin[kNClustersClu], (Int_t)xMax[kNClustersClu]);
    hncells->Sumw2(); listQA->Add(hncells); hncells = 0;

    for (Int_t iTRU=0; iTRU<nTRUs; iTRU++) {
      hName  = Form("hCaloCluster_%s_Mod%d_TRU%d", tName[kPtClu].Data(), iMod+1, iTRU+1);
      histo1 = new TH1D(hName.Data(), hName.Data(), bins[kPtClu], xMin[kPtClu], xMax[kPtClu]);
      histo1->Sumw2(); listQA->Add(histo1); histo1 = 0;
    }

    for (Int_t iPID=0; iPID<kPIDs; iPID++) {
      hName  = Form("hCaloCluster_%s_Mod%d_%s", tName[kPtClu].Data(), iMod+1, namePID[iPID].Data());
      histo1 = new TH1D(hName.Data(), hName.Data(), bins[kPtClu], xMin[kPtClu], xMax[kPtClu]);
      histo1->Sumw2(); listQA->Add(histo1); histo1 = 0;
    }
  }

  return;
}

//_____________________________________________________________________________
void AliPHOSpPbPi0Header::CreateHistosPi0(TList *listRD)
{
  // create histograms for Pi0

  const Int_t nComb = 2;
  TString srcMod[nComb]  =  { "Mod11", "Mod33" }; 
                         // { kAll,  kCpv,  kDisp,  kBoth,  kCpv2,  kDisp2,  kBoth2,     kPIDs      };  // PID
  TString namePID[kPIDs] =  { "All", "Cpv", "Disp", "Both", "Cpv2", "Disp2", "Both2"                };
                         // { kPtPi0, kEtaPi0, kPhiPi0, kAsyPi0,   kAnglePi0, kInvMassPi0, kVarsPi0 };  // pi0
  TString tName[kVarsPi0] = {   "Pt",   "Eta",   "Phi",   "Asy",     "Angle",   "InvMass"           };
  Int_t    bins[kVarsPi0] = {   500 ,  300   ,   120  ,    100 ,        180 ,       1000            };
  Double_t xMin[kVarsPi0] = {     0.,   -0.15,     4.4,      0.,          0.,          0.           };
  Double_t xMax[kVarsPi0] = {    50.,    0.15,     5.6,      1., TMath::Pi(),          1.           };

  const Int_t    nPtbins     = 32;
  Double_t ptbins[nPtbins+1] = {  0.8,  1.0,  1.2,  1.4,  1.6,  1.8,  2.0,  2.2,  2.4,  2.6,
                                  2.8,  3.0,  3.2,  3.4,  3.6,  3.8,  4.0,  4.5,  5.0,  5.5,
                                  6.0,  7.0,  8.0, 10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 25.0,
                                 30.0, 36.0, 44.0 };

  TH2D   *histo = 0;
  TString hName;

  hName = Form("hPi0_%s%s", tName[kEtaPi0].Data(), tName[kPhiPi0].Data());
  histo = new TH2D(hName.Data(), hName.Data(), bins[kEtaPi0], xMin[kEtaPi0], xMax[kEtaPi0], bins[kPhiPi0], xMin[kPhiPi0], xMax[kPhiPi0]);
  histo->Sumw2(); listRD->Add(histo); histo = 0;
  for (Int_t i=0; i<kVarsPi0-2; i++) {
    hName = Form("hPi0_%s%s", tName[0].Data(), tName[i+1].Data());
    histo = new TH2D(hName.Data(), hName.Data(), bins[0], xMin[0], xMax[0], bins[i+1], xMin[i+1], xMax[i+1]);
    histo->Sumw2(); listRD->Add(histo); histo = 0;
  }

  for (Int_t iPID=0; iPID<kPIDs; iPID++) {
    hName = Form("hPi0_%s%s_%s", tName[kPtPi0].Data(), tName[kInvMassPi0].Data(), namePID[iPID].Data());
    histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kInvMassPi0], xMin[kInvMassPi0], xMax[kInvMassPi0]);
    histo->Sumw2(); listRD->Add(histo); histo = 0;

    hName = Form("hPi0_%s%s_%s", tName[kEtaPi0].Data(), tName[kPhiPi0].Data(), namePID[iPID].Data());
    histo = new TH2D(hName.Data(), hName.Data(), bins[kEtaPi0], xMin[kEtaPi0], xMax[kEtaPi0], bins[kPhiPi0], xMin[kPhiPi0], xMax[kPhiPi0]);
    histo->Sumw2(); listRD->Add(histo); histo = 0;
    for (Int_t icent=0; icent<fgNCent; icent++) {
      hName = Form("hPi0_%s%s_%s_cent%d", tName[kPtPi0].Data(), tName[kInvMassPi0].Data(), namePID[iPID].Data(), icent);
      histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kInvMassPi0], xMin[kInvMassPi0], xMax[kInvMassPi0]);
      histo->Sumw2(); listRD->Add(histo); histo = 0;
    }

    for (Int_t i=0; i<kVarsPi0-2; i++) {
      hName = Form("hPi0_%s%s_%s", tName[0].Data(), tName[i+1].Data(), namePID[iPID].Data());
      histo = new TH2D(hName.Data(), hName.Data(), bins[0], xMin[0], xMax[0], bins[i+1], xMin[i+1], xMax[i+1]);
      histo->Sumw2(); listRD->Add(histo); histo = 0;
    }
    for (Int_t iComb=0; iComb<nComb; iComb++) {
      hName = Form("hPi0_%s%s_%s_%s", tName[kPtPi0].Data(), tName[kInvMassPi0].Data(), namePID[iPID].Data(), srcMod[iComb].Data());
      histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kInvMassPi0], xMin[kInvMassPi0], xMax[kInvMassPi0]);
      histo->Sumw2(); listRD->Add(histo); histo = 0;
    }
  }

  return;
}

//_____________________________________________________________________________
void AliPHOSpPbPi0Header::CreateHistosMixPi0(TList *listRD)
{
  // create Histograms for Mixed Pi0

  const Int_t nComb = 2;
  TString  srcMod[nComb]     = { "Mod11", "Mod33" };
                             //{ kAll,  kCpv,  kDisp,  kBoth,  kCpv2,  kDisp2,  kBoth2,     kPIDs    };  // PID
  TString namePID[kPIDs]     = { "All", "Cpv", "Disp", "Both", "Cpv2", "Disp2", "Both2"              };
                             //{ kPtMixPi0, kEtaMixPi0, kPhiMixPi0, kInvMassMixPi0, kVarsMixPi0      };  // Mix Pi0
  TString tName[kVarsMixPi0] = {      "Pt",      "Eta",      "Phi",      "InvMass"                   };
  Int_t    bins[kVarsMixPi0] = {      500 ,     300   ,      120  ,          1000                    };
  Double_t xMin[kVarsMixPi0] = {        0.,      -0.15,        4.4,             0.                   };
  Double_t xMax[kVarsMixPi0] = {       50.,       0.15,        5.6,             1.                   };

  const Int_t    nPtbins     = 32;
  Double_t ptbins[nPtbins+1] = {  0.8,  1.0,  1.2,  1.4,  1.6,  1.8,  2.0,  2.2,  2.4,  2.6,
                                  2.8,  3.0,  3.2,  3.4,  3.6,  3.8,  4.0,  4.5,  5.0,  5.5,
                                  6.0,  7.0,  8.0, 10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 25.0,
                                 30.0, 36.0, 44.0 };

  TH2D   *histo = 0;
  TString hName;

  hName = Form("hMixPi0_%s%s", tName[kEtaMixPi0].Data(), tName[kPhiMixPi0].Data());
  histo = new TH2D(hName.Data(), hName.Data(), bins[kEtaMixPi0], xMin[kEtaMixPi0], xMax[kEtaMixPi0],
                                               bins[kPhiMixPi0], xMin[kPhiMixPi0], xMax[kPhiMixPi0]);
  histo->Sumw2(); listRD->Add(histo); histo = 0;
  
  for (Int_t iPID=0; iPID<kPIDs; iPID++) {
    hName = Form("hMixPi0_%s%s_%s", tName[kPtMixPi0].Data(), tName[kInvMassMixPi0].Data(), namePID[iPID].Data());
    histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kInvMassMixPi0], xMin[kInvMassMixPi0], xMax[kInvMassMixPi0]);
    histo->Sumw2(); listRD->Add(histo); histo = 0;
    hName = Form("hMixPi0_%s%s_%s", tName[kEtaMixPi0].Data(), tName[kPhiMixPi0].Data(), namePID[iPID].Data());
    histo = new TH2D(hName.Data(), hName.Data(), bins[kEtaMixPi0], xMin[kEtaMixPi0], xMax[kEtaMixPi0], 
                                                 bins[kPhiMixPi0], xMin[kPhiMixPi0], xMax[kPhiMixPi0]);
    histo->Sumw2(); listRD->Add(histo); histo = 0;
    for (Int_t icent=0; icent<fgNCent; icent++) {
      hName = Form("hMixPi0_%s%s_%s_cent%d", tName[kPtMixPi0].Data(), tName[kInvMassMixPi0].Data(), namePID[iPID].Data(), icent);
      histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kInvMassMixPi0], xMin[kInvMassMixPi0], xMax[kInvMassMixPi0]);
      histo->Sumw2(); listRD->Add(histo); histo = 0;
    } 
    for (Int_t iComb=0; iComb<nComb; iComb++) {
      hName = Form("hMixPi0_%s%s_%s_%s", tName[kPtMixPi0].Data(), tName[kInvMassMixPi0].Data(), namePID[iPID].Data(), srcMod[iComb].Data());
      histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kInvMassMixPi0], xMin[kInvMassMixPi0], xMax[kInvMassMixPi0]);
      histo->Sumw2(); listRD->Add(histo); histo = 0;
    }
  }

  return;
}

//_____________________________________________________________________________
void AliPHOSpPbPi0Header::CreateHistosMC(TList *listMC)
{
  // create Histograms for MC

  const Int_t acc    = 2;
  const char *aName[acc]   = {"Pi0InAcc", "GammaInAcc"};
  const Int_t types  = 5;
  const char *pName[types] = {"InclusivePi0", "PrimaryPi0", "2ndPi0FromK0s", "2ndPi0FromMaterials", "2ndPi0FromOtherDecays"};
                         //  { kAll,  kCpv,  kDisp,  kBoth,  kCpv2,  kDisp2,  kBoth2,     kPIDs    };  // PID
  TString namePID[kPIDs]   = { "All", "Cpv", "Disp", "Both", "Cpv2", "Disp2", "Both2"              };
                         //  { kPtMC, kRapidityMC, kRadiusMC,         kPhiMC, kInvMassMC, kVarsMC  };  // MC
  TString tName[kVarsMC]   = {  "Pt",  "Rapidity",  "Radius",          "Phi",  "InvMass"           };
  Int_t    bins[kVarsMC]   = {  500 ,        600 ,      1000,           360 ,       500            };
  Double_t xMin[kVarsMC]   = {    0.,         -3.,        0.,             0.,         0.           };
  Double_t xMax[kVarsMC]   = {   50.,          3.,      500., TMath::TwoPi(),         0.5          };

  const Int_t    nPtbins     = 32;
  Double_t ptbins[nPtbins+1] = {  0.8,  1.0,  1.2,  1.4,  1.6,  1.8,  2.0,  2.2,  2.4,  2.6,
                                  2.8,  3.0,  3.2,  3.4,  3.6,  3.8,  4.0,  4.5,  5.0,  5.5,
                                  6.0,  7.0,  8.0, 10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 25.0,
                                 30.0, 36.0, 44.0 };

  TH2D   *histo = 0;
  TString hName;

  for (Int_t iType=0; iType<types; iType++) {
    hName  = Form("hMC%s_%s%s", pName[iType], tName[kPtMC].Data(), tName[kRapidityMC].Data());
    histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kRapidityMC], xMin[kRapidityMC], xMax[kRapidityMC]);
    histo->Sumw2(); listMC->Add(histo); histo = 0;
    hName  = Form("hMC%s_%s%s_Check", pName[iType], tName[kPtMC].Data(), tName[kRadiusMC].Data());
    histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kRadiusMC], xMin[kRadiusMC], xMax[kRadiusMC]);
    histo->Sumw2(); listMC->Add(histo); histo = 0;
    hName  = Form("hMC%s_%s%s", pName[iType], tName[kPtMC].Data(), tName[kRadiusMC].Data());
    histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kRadiusMC], xMin[kRadiusMC], xMax[kRadiusMC]);
    histo->Sumw2(); listMC->Add(histo); histo = 0;
    hName  = Form("hMC%s_%s%s_MergedCluster", pName[iType], tName[kPtMC].Data(), tName[kRadiusMC].Data());
    histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kRadiusMC], xMin[kRadiusMC], xMax[kRadiusMC]);
    histo->Sumw2(); listMC->Add(histo); histo = 0;
    hName  = Form("hMC%s_%s%s_Reco", pName[iType], tName[kPtMC].Data(), tName[kRadiusMC].Data());
    histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kRadiusMC], xMin[kRadiusMC], xMax[kRadiusMC]);
    histo->Sumw2(); listMC->Add(histo); histo = 0;
    if (strncmp(pName[iType], "2ndPi0FromK0s", 13) == 0) {
      hName  = Form("hMC%s_%sMatrix", pName[iType], tName[kPtMC].Data());
      histo = new TH2D(hName.Data(), hName.Data(), bins[kPtMC], xMin[kPtMC], xMax[kPtMC], bins[kPtMC], xMin[kPtMC], xMax[kPtMC]);
      histo->Sumw2(); listMC->Add(histo); histo = 0;
    }
    for (Int_t iAcc=0; iAcc<acc; iAcc++) {
      hName  = Form("hMC%s_%s%s_%s", pName[iType], tName[kPtMC].Data(), tName[kRadiusMC].Data(), aName[iAcc]);
      histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kRadiusMC], xMin[kRadiusMC], xMax[kRadiusMC]);
      histo->Sumw2(); listMC->Add(histo); histo = 0;
      if (strncmp(pName[iType], "2ndPi0FromK0s", 13) == 0) {
        hName  = Form("hMC%s_%sMatrix_%s", pName[iType], tName[kPtMC].Data(), aName[iAcc]);
        histo = new TH2D(hName.Data(), hName.Data(), bins[kPtMC], xMin[kPtMC], xMax[kPtMC], bins[kPtMC], xMin[kPtMC], xMax[kPtMC]);
        histo->Sumw2(); listMC->Add(histo); histo = 0;
      }
    }
    for (Int_t iPID=0; iPID<kPIDs; iPID++) {
      hName  = Form("hMC%s_%s%s_%s_Reco", pName[iType], tName[kPtMC].Data(), tName[kInvMassMC].Data(), namePID[iPID].Data());
      histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kInvMassMC], xMin[kInvMassMC], xMax[kInvMassMC]);
      histo->Sumw2(); listMC->Add(histo); histo = 0;
    }

    for (Int_t iCent=0; iCent<fgNCent; iCent++) {
      hName  = Form("hMC%s_%s%s_cent%d", pName[iType], tName[kPtMC].Data(), tName[kRapidityMC].Data(), iCent);
      histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kRapidityMC], xMin[kRapidityMC], xMax[kRapidityMC]);
      histo->Sumw2(); listMC->Add(histo); histo = 0;
      hName  = Form("hMC%s_%s%s_cent%d", pName[iType], tName[kPtMC].Data(), tName[kRadiusMC].Data(), iCent);
      histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kRadiusMC], xMin[kRadiusMC], xMax[kRadiusMC]);
      histo->Sumw2(); listMC->Add(histo); histo = 0;
      hName  = Form("hMC%s_%s%s_MergedCluster_cent%d", pName[iType], tName[kPtMC].Data(), tName[kRadiusMC].Data(), iCent);
      histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kRadiusMC], xMin[kRadiusMC], xMax[kRadiusMC]);
      histo->Sumw2(); listMC->Add(histo); histo = 0;
      hName  = Form("hMC%s_%s%s_Reco_cent%d", pName[iType], tName[kPtMC].Data(), tName[kRadiusMC].Data(), iCent);
      histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kRadiusMC], xMin[kRadiusMC], xMax[kRadiusMC]);
      histo->Sumw2(); listMC->Add(histo); histo = 0;
      if (strncmp(pName[iType], "2ndPi0FromK0s", 13) == 0) {
        hName  = Form("hMC%s_%sMatrix_cent%d", pName[iType], tName[kPtMC].Data(), iCent);
        histo = new TH2D(hName.Data(), hName.Data(), bins[kPtMC], xMin[kPtMC], xMax[kPtMC], bins[kPtMC], xMin[kPtMC], xMax[kPtMC]);
        histo->Sumw2(); listMC->Add(histo); histo = 0;
      }
      for (Int_t iAcc=0; iAcc<acc; iAcc++) {
        hName  = Form("hMC%s_%s%s_%s_cent%d", pName[iType], tName[kPtMC].Data(), tName[kRadiusMC].Data(), aName[iAcc], iCent);
        histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kRadiusMC], xMin[kRadiusMC], xMax[kRadiusMC]);
        histo->Sumw2(); listMC->Add(histo); histo = 0;
        if (strncmp(pName[iType], "2ndPi0FromK0s", 13) == 0) {
          hName  = Form("hMC%s_%sMatrix_%s_cent%d", pName[iType], tName[kPtMC].Data(), aName[iAcc], iCent);
          histo = new TH2D(hName.Data(), hName.Data(), bins[kPtMC], xMin[kPtMC], xMax[kPtMC], bins[kPtMC], xMin[kPtMC], xMax[kPtMC]);
          histo->Sumw2(); listMC->Add(histo); histo = 0;
        }
      }
      for (Int_t iPID=0; iPID<kPIDs; iPID++) {
        hName  = Form("hMC%s_%s%s_%s_Reco_cent%d", pName[iType], tName[kPtMC].Data(), tName[kInvMassMC].Data(), namePID[iPID].Data(), iCent);
        histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kInvMassMC], xMin[kInvMassMC], xMax[kInvMassMC]);
        histo->Sumw2(); listMC->Add(histo); histo = 0;
      }
    }
  }
  for (Int_t iPID=0; iPID<kPIDs; iPID++) {
    hName  = Form("hMCInclusiveCvtedPi0_%s%s_%s_Reco", tName[kPtMC].Data(), tName[kInvMassMC].Data(), namePID[iPID].Data());
    histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kInvMassMC], xMin[kInvMassMC], xMax[kInvMassMC]);
    histo->Sumw2(); listMC->Add(histo); histo = 0;
    hName  = Form("hMCInclusivePurePi0_%s%s_%s_Reco", tName[kPtMC].Data(), tName[kInvMassMC].Data(), namePID[iPID].Data());
    histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kInvMassMC], xMin[kInvMassMC], xMax[kInvMassMC]);
    histo->Sumw2(); listMC->Add(histo); histo = 0;
    for (Int_t iCent=0; iCent<fgNCent; iCent++) {
      hName  = Form("hMCInclusiveCvtedPi0_%s%s_%s_Reco_cent%d", tName[kPtMC].Data(), tName[kInvMassMC].Data(), namePID[iPID].Data(), iCent);
      histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kInvMassMC], xMin[kInvMassMC], xMax[kInvMassMC]);
      histo->Sumw2(); listMC->Add(histo); histo = 0;
      hName  = Form("hMCInclusivePurePi0_%s%s_%s_Reco_cent%d", tName[kPtMC].Data(), tName[kInvMassMC].Data(), namePID[iPID].Data(), iCent);
      histo = new TH2D(hName.Data(), hName.Data(), nPtbins, ptbins, bins[kInvMassMC], xMin[kInvMassMC], xMax[kInvMassMC]);
      histo->Sumw2(); listMC->Add(histo); histo = 0;
    }
  }

  return;
}

//_____________________________________________________________________________
void AliPHOSpPbPi0Header::FillHistosEvent(TList *listQA)
{
  // fill histograms at event level according to event selection cuts

  if (!listQA) return;

  const Int_t nhs      = 2;
  TString tName[nhs+1] = { "Centrality",    "Vz", "Pileup" };
  Double_t dist[nhs]   = {  fCentrality, fVtx[2]           };
  for (Int_t i=nhs; i--;) {
    ((TH1D*)listQA->FindObject(Form("hEvent_%s", tName[i].Data())))->Fill(dist[i]);
    if (this->IsSelected()) ((TH1D*)listQA->FindObject(Form("hEventSel_%s", tName[i].Data())))->Fill(dist[i]);
  }
  if (fIsPileup) {
    ((TH1D*)listQA->FindObject(Form("hEvent_%s", tName[nhs].Data())))->Fill(dist[nhs-1]);
    if (this->IsSelected())  ((TH1D*)listQA->FindObject(Form("hEventSel_%s", tName[nhs].Data())))->Fill(dist[nhs-1]);
  }

  return;
}

//_____________________________________________________________________________
void AliPHOSpPbPi0Header::FillHistosCaloCellsQA(TList *listQA, AliVCaloCells* const cells, AliPHOSGeoUtils* const phosGeo)
{
  // fill QA histograms for calocells according to evnet selection cuts

  if (!listQA) return;

  const Int_t nhs    = 3;
  TString tName[nhs] = { "CentNCells", "Nxz", "Exz" };

  ((TH2D*)listQA->FindObject(Form("hCaloCellsQA_%s", tName[0].Data())))->Fill(fCentrality, cells->GetNumberOfCells());
  for (Int_t iCell=0; iCell<cells->GetNumberOfCells(); iCell++) {
    Int_t relID[4] = {0,0,0,0};
    phosGeo->AbsToRelNumbering(cells->GetCellNumber(iCell), relID); // Int_t mod   = relID[0]; Int_t cellX = relID[2]; Int_t cellZ = relID[3];
    Double_t wight[2] = { 1., cells->GetAmplitude(iCell)};
    ((TH1D*)listQA->FindObject(Form("hCaloCellsQA_%s", "E")))->Fill(wight[1]);
    ((TH1D*)listQA->FindObject(Form("hCaloCellsQA_%s_Mod%d", "E", relID[0])))->Fill(wight[1]);
    for (Int_t i=1; i<nhs; i++)
      ((TH2D*)listQA->FindObject(Form("hCaloCellsQA_%s_Mod%d", tName[i].Data(), relID[0])))->Fill(relID[2], relID[3], wight[i-1]);
  }

  return;
}

//_____________________________________________________________________________
void AliPHOSpPbPi0Header::FillHistosCaloCluster(TList *listQA, TClonesArray* const caloClArr, Int_t cent)
{
  // fill histograms for calocluster according to evnet && calocluster candidates selection cuts

  if (!listQA)  return;
                         // { kAll,  kCpv,  kDisp,  kBoth,  kCpv2,  kDisp2,  kBoth2,     kPIDs       };  // PID
  TString namePID[kPIDs]  = { "All", "Cpv", "Disp", "Both", "Cpv2", "Disp2", "Both2"                 };
  UInt_t  PIDBIT[kPIDs]   = { 0x0,  BIT(0), BIT(1), BIT(0)|BIT(1), BIT(2), BIT(3), BIT(2)|BIT(3)     };
                         // { kPtClu, kEtaClu, kPhiClu, kM02Clu, kM20Clu, kTOFClu, kNCellsClu, kNClustersClu, kVarsClu };   // clusters
  TString tName[kVarsClu] = {   "Pt",   "Eta",   "Phi",   "M02",   "M20",   "TOF",   "NCells",   "NClusters"           };

  Int_t entries = caloClArr->GetEntriesFast();
  Int_t iMod = 0, iTRU = 0, nclusters[3] = { 0, 0, 0 };
  UInt_t pidBit = 0;
  AliCaloClusterInfo *caloCluster = 0;
  TLorentzVector gamma;
  for(Int_t i=0; i<entries; i++) { // Loop calo cluster
    caloCluster = (AliCaloClusterInfo*)caloClArr->At(i);
    iMod   = caloCluster->GetModule();   nclusters[iMod-1]++;
    iTRU   = caloCluster->GetTRUNumber();
    pidBit = caloCluster->GetPIDBit();
    gamma  = caloCluster->LorentzVector();
    Double_t vars[kVarsClu-1] = { gamma.E(),
                                  gamma.Eta(),
                                  (gamma.Phi()+TMath::TwoPi()),
                                  caloCluster->GetM02(),
                                  caloCluster->GetM20(),
                                  caloCluster->GetTOF(),
                                  (Double_t)caloCluster->GetNCells() };
 
    ((TH1I*)listQA->FindObject(Form("hCaloCluster_%s", tName[kNCellsClu].Data())))->Fill((Int_t)vars[kNCellsClu]);
    ((TH1I*)listQA->FindObject(Form("hCaloCluster_%s_Mod%d", tName[kNCellsClu].Data(), iMod)))->Fill((Int_t)vars[kNCellsClu]);
    ((TH1D*)listQA->FindObject(Form("hCaloCluster_%s_Mod%d_TRU%d", tName[kPtClu].Data(), iMod, iTRU)))->Fill(vars[kPtClu]);

    for (Int_t iPID=0; iPID<kPIDs; iPID++) {
      if ((pidBit&PIDBIT[iPID])==PIDBIT[iPID]) {
        ((TH1D*)listQA->FindObject(Form("hCaloCluster_%s_%s", tName[kPtClu].Data(), namePID[iPID].Data())))->Fill(vars[kPtClu]);
        ((TH1D*)listQA->FindObject(Form("hCaloCluster_%s_Mod%d_%s", tName[kPtClu].Data(), iMod, namePID[iPID].Data())))->Fill(vars[kPtClu]);
        ((TH1D*)listQA->FindObject(Form("hCaloCluster_%s_%s_cent%d", tName[kPtClu].Data(), namePID[iPID].Data(), cent)))->Fill(vars[kPtClu]);
        ((TH2D*)listQA->FindObject(Form("hCaloCluster_%s%s_%s", tName[kEtaClu].Data(), tName[kPhiClu].Data(),
                                                              namePID[iPID].Data())))->Fill(vars[kEtaClu], vars[kPhiClu]);
        for (Int_t j=0; j<kVarsClu-3; j++)
          ((TH2D*)listQA->FindObject(Form("hCaloCluster_%s%s_%s", tName[0].Data(), tName[j+1].Data(), namePID[iPID].Data())))->Fill(vars[0], vars[j+1]);
      }
    }
  } // End loop calo cluster

  ((TH1I*)listQA->FindObject(Form("hCaloCluster_%s", tName[kNClustersClu].Data())))->Fill(entries);
  for (Int_t jMod=1; jMod<4; jMod++) {
    if (jMod==2) continue;
    ((TH1I*)listQA->FindObject(Form("hCaloCluster_%s_Mod%d", tName[kNClustersClu].Data(), jMod)))->Fill(nclusters[jMod-1]);
  }

  return;
}

//_____________________________________________________________________________
void AliPHOSpPbPi0Header::FillHistosPi0(TList *listRD, TClonesArray* const caloClArr, Int_t cent)
{
  // fill histograms for pi0 according to evnet && pi0 candidates selection cuts

  if (!listRD) return;
                         // { kAll,  kCpv,  kDisp,  kBoth,  kCpv2,  kDisp2,  kBoth2,     kPIDs     };  // PID
  TString namePID[kPIDs]  = { "All", "Cpv", "Disp", "Both", "Cpv2", "Disp2", "Both2"               };
  UInt_t  PIDBIT[kPIDs]   = { 0x0,  BIT(0), BIT(1), BIT(0)|BIT(1), BIT(2), BIT(3), BIT(2)|BIT(3)   };
                         // { kPtPi0, kEtaPi0, kPhiPi0, kAsyPi0, kAnglePi0, kInvMassPi0, kVarsPi0  };  // Pi0
  TString tName[kVarsPi0] = {   "Pt",   "Eta",   "Phi",   "Asy",   "Angle",   "InvMass"            };

  Int_t entries = caloClArr->GetEntriesFast();
  Int_t iMod = 0, jMod = 0, srcMod = 0;
  UInt_t iPIDBit = 0, jPIDBit = 0;
  Double_t vars[kVarsPi0];
  AliCaloClusterInfo *iCaloCluster = 0, *jCaloCluster = 0;
  TLorentzVector iGamma, jGamma;
  for(Int_t i=0; i<entries-1; i++) { // Loop calo cluster i
    iCaloCluster = (AliCaloClusterInfo*)caloClArr->At(i);
    iMod    = iCaloCluster->GetModule();
    iPIDBit = iCaloCluster->GetPIDBit();
    iGamma  = iCaloCluster->LorentzVector();
    
    for (Int_t j=i+1; j<entries; j++) { // Loop calo cluster j
      jCaloCluster = (AliCaloClusterInfo*)caloClArr->At(j);
      jMod    = jCaloCluster->GetModule();
      jPIDBit = jCaloCluster->GetPIDBit();
      jGamma  = jCaloCluster->LorentzVector();
      if (TMath::Abs(iMod-jMod)>1) { jCaloCluster = 0; continue; }

      if (iMod==1 && jMod==1)       srcMod = 11; // Mod11
      else if (iMod==3 && jMod==3)  srcMod = 33; // Mod33
      else if (iMod==2 && jMod==2)  srcMod = 22; // Mod22
      else if (iMod==1 && jMod==2)  srcMod = 12; // Mod12
      else if (iMod==2 && jMod==3)  srcMod = 23; // Mod23

      vars[kPtPi0]      = (iGamma+jGamma).E();
      vars[kEtaPi0]     = (iGamma+jGamma).Eta();
      vars[kPhiPi0]     = (iGamma+jGamma).Phi() + TMath::TwoPi();
      vars[kInvMassPi0] = (iGamma+jGamma).M();
      vars[kAsyPi0]     = TMath::Abs((iGamma-jGamma).E())/(iGamma+jGamma).E();
      vars[kAnglePi0]   = jGamma.Angle(iGamma.Vect());

      ((TH2D*)listRD->FindObject(Form("hPi0_%s%s", tName[kEtaPi0].Data(), tName[kPhiPi0].Data())))->Fill(vars[kEtaPi0], vars[kPhiPi0]);
      for (Int_t k=0; k<kVarsPi0-2; k++) {
        ((TH2D*)listRD->FindObject(Form("hPi0_%s%s", tName[0].Data(), tName[k+1].Data())))->Fill(vars[0], vars[k+1]);
      }

      for (Int_t iPID=0; iPID<kPIDs; iPID++) {
        if ((iPIDBit & jPIDBit & PIDBIT[iPID])==PIDBIT[iPID]) {
          ((TH2D*)listRD->FindObject(Form("hPi0_%s%s_%s", tName[kEtaPi0].Data(), tName[kPhiPi0].Data(),
                                                        namePID[iPID].Data())))->Fill(vars[kEtaPi0], vars[kPhiPi0]);
          ((TH2D*)listRD->FindObject(Form("hPi0_%s%s_%s", tName[kPtPi0].Data(), tName[kInvMassPi0].Data(),
                                                        namePID[iPID].Data())))->Fill(vars[kPtPi0], vars[kInvMassPi0]);
          ((TH2D*)listRD->FindObject(Form("hPi0_%s%s_%s_Mod%d", tName[kPtPi0].Data(), tName[kInvMassPi0].Data(),
                                                              namePID[iPID].Data(), srcMod)))->Fill(vars[kPtPi0], vars[kInvMassPi0]);
          ((TH2D*)listRD->FindObject(Form("hPi0_%s%s_%s_cent%d", tName[kPtPi0].Data(), tName[kInvMassPi0].Data(), 
                                                               namePID[iPID].Data(), cent)))->Fill(vars[kPtPi0], vars[kInvMassPi0]);
          for (Int_t k=0; k<kVarsPi0-2; k++) {
            ((TH2D*)listRD->FindObject(Form("hPi0_%s%s_%s", tName[0].Data(), tName[k+1].Data(), namePID[iPID].Data())))->Fill(vars[0], vars[k+1]);
          }
        }
      }
      jCaloCluster = 0;
    }// End loop j
    iCaloCluster = 0;
  } // End loop i

  return;
}

//_____________________________________________________________________________
void AliPHOSpPbPi0Header::FillHistosMixPi0(TList *listRD, TClonesArray* const iCaloClArr, TList* const eventList, Int_t cent)
{
  // fill histograms for mixed pi0 according to evnet && pi0 candidates selection cuts

  if (!listRD) return;
                        // { kAll,  kCpv,  kDisp,  kBoth,  kCpv2,  kDisp2,  kBoth2,     kPIDs     };  // PID
  TString namePID[kPIDs] = { "All", "Cpv", "Disp", "Both", "Cpv2", "Disp2", "Both2"               };
  UInt_t  PIDBIT[kPIDs]  = { 0x0,  BIT(0), BIT(1), BIT(0)|BIT(1), BIT(2), BIT(3), BIT(2)|BIT(3)   };
                            // { kPtMixPi0, kEtaMixPi0, kPhiMixPi0, kInvMassMixPi0, kVarsMixPi0   };   // Mix pi0
  TString tName[kVarsMixPi0] = {      "Pt",      "Eta",      "Phi",      "InvMass"                };

  Int_t iEntries = iCaloClArr->GetEntriesFast();
  Int_t iMod = 0, jMod = 0, srcMod = 0;
  UInt_t iPIDBit = 0, jPIDBit = 0;
  Double_t vars[kVarsMixPi0];
  AliCaloClusterInfo *iCaloCluster = 0, *jCaloCluster = 0;
  TLorentzVector iGamma, jGamma;
  TClonesArray *jCaloClArr = 0;
  for (Int_t i=0; i<iEntries; i++) { // Loop calo cluster i
    iCaloCluster=(AliCaloClusterInfo*)iCaloClArr->At(i);
    iMod    = iCaloCluster->GetModule();
    iPIDBit = iCaloCluster->GetPIDBit();
    iGamma  = iCaloCluster->LorentzVector();

    Int_t nev = eventList->GetSize();
    for(Int_t ev=0; ev<nev; ev++){ // Loop events for mixing
      jCaloClArr     = static_cast<TClonesArray*>(eventList->At(ev));
      Int_t jEntries = jCaloClArr->GetEntriesFast();
      for(Int_t j=0; j<jEntries; j++){ // Loop calo cluster j
        jCaloCluster=(AliCaloClusterInfo*)jCaloClArr->At(j);
        jMod    = jCaloCluster->GetModule();   if (TMath::Abs(iMod-jMod)>1) { jCaloCluster = 0; continue; }
        jPIDBit = jCaloCluster->GetPIDBit();
        jGamma  = jCaloCluster->LorentzVector();

        if (iMod==1 && jMod==1 )                                srcMod = 11; // Mod11
        else if (iMod==3 && jMod==3)                            srcMod = 33; // Mod33
        else if (iMod==2 && jMod==2)                            srcMod = 22; // Mod22
        else if ((iMod==1 && jMod==2) || (iMod==2 && jMod==1))  srcMod = 12; // Mod12
        else if ((iMod==2 && jMod==3) || (iMod==3 && jMod==2))  srcMod = 23; // Mod23

        vars[kPtMixPi0]      = (iGamma+jGamma).E();
        vars[kEtaMixPi0]     = (iGamma+jGamma).Eta();
        vars[kPhiMixPi0]     = (iGamma+jGamma).Phi() + TMath::TwoPi();
        vars[kInvMassMixPi0] = (iGamma+jGamma).M();

        ((TH2D*)listRD->FindObject(Form("hMixPi0_%s%s", tName[kEtaMixPi0].Data(), tName[kPhiMixPi0].Data())))->Fill(vars[kEtaMixPi0], vars[kPhiMixPi0]);
        for (Int_t iPID=0; iPID<kPIDs; iPID++) {
          if ((iPIDBit & jPIDBit & PIDBIT[iPID])==PIDBIT[iPID]) {
            ((TH2D*)listRD->FindObject(Form("hMixPi0_%s%s_%s", tName[kEtaMixPi0].Data(), tName[kPhiMixPi0].Data(),
                                                               namePID[iPID].Data())))->Fill(vars[kEtaMixPi0], vars[kPhiMixPi0]);
            ((TH2D*)listRD->FindObject(Form("hMixPi0_%s%s_%s", tName[kPtMixPi0].Data(), tName[kInvMassMixPi0].Data(),
                                                               namePID[iPID].Data())))->Fill(vars[kPtMixPi0], vars[kInvMassMixPi0]);
            ((TH2D*)listRD->FindObject(Form("hMixPi0_%s%s_%s_Mod%d", tName[kPtMixPi0].Data(), tName[kInvMassMixPi0].Data(),
                                                                     namePID[iPID].Data(), srcMod)))->Fill(vars[kPtMixPi0], vars[kInvMassMixPi0]);
            ((TH2D*)listRD->FindObject(Form("hMixPi0_%s%s_%s_cent%d", tName[kPtMixPi0].Data(), tName[kInvMassMixPi0].Data(),
                                                                      namePID[iPID].Data(), cent)))->Fill(vars[kPtMixPi0], vars[kInvMassMixPi0]);
          }
        }
        jCaloCluster = 0;
      } // End loop j
      jCaloClArr = 0;
    } // End loop events
    iCaloCluster = 0;
  } // End loop i

  return;
}

//_____________________________________________________________________________
void AliPHOSpPbPi0Header::FillHistosMC(TList *listMC, AliStack* const stack, TClonesArray* const caloClArr, AliPHOSGeoUtils* const phosGeo, Int_t cent)
{
  // fill histograms for ESD MC
  if (!listMC)  return;
  if (!stack)   return;

                         // { kAll,  kCpv,  kDisp,  kBoth,  kCpv2,  kDisp2,  kBoth2,     kPIDs     };  // PID
  TString namePID[kPIDs]  = { "All", "Cpv", "Disp", "Both", "Cpv2", "Disp2", "Both2"               };
  UInt_t  PIDBIT[kPIDs]   = { 0x0,  BIT(0), BIT(1), BIT(0)|BIT(1), BIT(2), BIT(3), BIT(2)|BIT(3)   };

  // MC truth info
  TString pName;
  const Int_t nParticles = stack->GetNtrack();
  Int_t iMod = 0, jMod = 0;
  for(Int_t iParticle=0; iParticle<nParticles; iParticle++) {
    TParticle* pMC  = stack->Particle(iParticle);
    if (pMC->GetPdgCode() != 111)  continue;   // Pi0
    if (pMC->GetNDaughters() != 2) continue;   // Do not account Dalitz decays
    TParticle *iGamma = stack->Particle(pMC->GetFirstDaughter());
    TParticle *jGamma = stack->Particle(pMC->GetLastDaughter());
    if (!(iGamma->GetPdgCode()==22 && jGamma->GetPdgCode()==22)) continue; // Get into the branch: pi0->gamma+gamma
//  if (!(iGamma->GetPdgCode()==22 && jGamma->GetPdgCode()==22)) { Printf("PDG: P1=%d, P2=%d\n", iGamma->GetPdgCode(), jGamma->GetPdgCode()); continue; }

    pName = ClassifyMCPi0(iParticle, stack);   // Classify pi0

    //Pi0 Information
    Double_t pt       = pMC->Pt();
    Double_t radius   = pMC->R();
    Double_t rapidity = pMC->Y();
    Double_t eta      = pMC->Eta();
    Double_t phi      = pMC->Phi(); while (phi<0.) phi += TMath::TwoPi(); while (phi>TMath::TwoPi()) phi -= TMath::TwoPi();

    ((TH2D*)listMC->FindObject("hMCInclusivePi0_PtRapidity"))->Fill(pt, rapidity);
    ((TH2D*)listMC->FindObject(Form("hMCInclusivePi0_PtRapidity_cent%d", cent)))->Fill(pt, rapidity);

    ((TH2D*)listMC->FindObject(Form("hMC%s_PtRapidity", pName.Data())))->Fill(pt, rapidity);
    ((TH2D*)listMC->FindObject(Form("hMC%s_PtRapidity_cent%d", pName.Data(), cent)))->Fill(pt, rapidity);

    ((TH2D*)listMC->FindObject("hMCInclusivePi0_PtRadius_Check"))->Fill(pt, radius);
    ((TH2D*)listMC->FindObject(Form("hMC%s_PtRadius_Check", pName.Data())))->Fill(pt, radius);
    if (TMath::Abs(rapidity)<0.5) {
      ((TH2D*)listMC->FindObject("hMCInclusivePi0_PtRadius"))->Fill(pt, radius);
      ((TH2D*)listMC->FindObject(Form("hMCInclusivePi0_PtRadius_cent%d", cent)))->Fill(pt, radius);

      ((TH2D*)listMC->FindObject(Form("hMC%s_PtRadius", pName.Data())))->Fill(pt, radius);
      ((TH2D*)listMC->FindObject(Form("hMC%s_PtRadius_cent%d", pName.Data(), cent)))->Fill(pt, radius);

      if (pName.Contains("K0s") && stack->IsPhysicalPrimary(pMC->GetFirstMother()) ) {
        TParticle* pMother = stack->Particle(pMC->GetFirstMother());
        ((TH2D*)listMC->FindObject(Form("hMC%s_PtMatrix", pName.Data())))->Fill(pt, pMother->Pt());
        ((TH2D*)listMC->FindObject(Form("hMC%s_PtMatrix_cent%d", pName.Data(), cent)))->Fill(pt, pMother->Pt());
      }
    }

    if ((((phi>260.*TMath::DegToRad()) && (phi<280.*TMath::DegToRad())) || ((phi>300.*TMath::DegToRad())
           && (phi<320.*TMath::DegToRad()))) && (TMath::Abs(eta)<0.135)) {
      ((TH2D*)listMC->FindObject("hMCInclusivePi0_PtRadius_Pi0InAcc"))->Fill(pt, radius);
      ((TH2D*)listMC->FindObject(Form("hMCInclusivePi0_PtRadius_Pi0InAcc_cent%d", cent)))->Fill(pt, radius);

      ((TH2D*)listMC->FindObject(Form("hMC%s_PtRadius_Pi0InAcc", pName.Data())))->Fill(pt, radius);
      ((TH2D*)listMC->FindObject(Form("hMC%s_PtRadius_Pi0InAcc_cent%d", pName.Data(), cent)))->Fill(pt, radius);

      if (pName.Contains("K0s") && stack->IsPhysicalPrimary(pMC->GetFirstMother())) {
        TParticle* pMother = stack->Particle(pMC->GetFirstMother());
        ((TH2D*)listMC->FindObject(Form("hMC%s_PtMatrix_Pi0InAcc", pName.Data())))->Fill(pt, pMother->Pt());
        ((TH2D*)listMC->FindObject(Form("hMC%s_PtMatrix_Pi0InAcc_cent%d", pName.Data(), cent)))->Fill(pt, pMother->Pt());
      }
    }

    //Pi0's daughter particles in PHOS acceptance
    iMod = HitPHOSModule(iGamma, phosGeo);
    jMod = HitPHOSModule(jGamma, phosGeo);
    if (iMod!=-1 && iMod!=2 && jMod!=-1 && jMod!=2 && TMath::Abs(iMod-jMod)<2) { // !remove module 2
      ((TH2D*)listMC->FindObject("hMCInclusivePi0_PtRadius_GammaInAcc"))->Fill(pt, radius);
      ((TH2D*)listMC->FindObject(Form("hMCInclusivePi0_PtRadius_GammaInAcc_cent%d", cent)))->Fill(pt, radius);

      ((TH2D*)listMC->FindObject(Form("hMC%s_PtRadius_GammaInAcc", pName.Data())))->Fill(pt, radius);
      ((TH2D*)listMC->FindObject(Form("hMC%s_PtRadius_GammaInAcc_cent%d", pName.Data(), cent)))->Fill(pt, radius);

      if (pName.Contains("K0s") && stack->IsPhysicalPrimary(pMC->GetFirstMother())) {
        TParticle* pMother = stack->Particle(pMC->GetFirstMother());
        ((TH2D*)listMC->FindObject(Form("hMC%s_PtMatrix_GammaInAcc", pName.Data())))->Fill(pt, pMother->Pt());
        ((TH2D*)listMC->FindObject(Form("hMC%s_PtMatrix_GammaInAcc_cent%d", pName.Data(), cent)))->Fill(pt, pMother->Pt());
      }
    }
  }

  // Reconstruction info
  Bool_t isConverted_i = kFALSE, isConverted_j = kFALSE;
  Int_t  entries  = caloClArr->GetEntriesFast();
  Int_t  iPi0Indx =-1,  jPi0Indx   =-1;
  UInt_t iPIDBit  = 0,  jPIDBit    = 0;
  Double_t pi0Pt  = 0., pi0InvMass = 0., radius = 0.;
  AliCaloClusterInfo *iCaloCluster = 0, *jCaloCluster = 0;
  TLorentzVector iLorentz, jLorentz;
  for(Int_t i=0; i<entries; i++) { // Loop calo cluster i
    iCaloCluster = (AliCaloClusterInfo*)caloClArr->At(i);
    if (iCaloCluster->IsMergedClusterFromPi0(stack, iPi0Indx)) {
      pName  = ClassifyMCPi0(iPi0Indx, stack);
      pi0Pt  = (iCaloCluster->LorentzVector()).E();
      radius = stack->Particle(iPi0Indx)->R();
      ((TH2D*)listMC->FindObject("hMCInclusivePi0_PtRadius_MergedCluster"))->Fill(pi0Pt, radius);
      ((TH2D*)listMC->FindObject(Form("hMCInclusivePi0_PtRadius_MergedCluster_cent%d", cent)))->Fill(pi0Pt, radius);

      ((TH2D*)listMC->FindObject(Form("hMC%s_PtRadius_MergedCluster", pName.Data())))->Fill(pi0Pt, radius);
      ((TH2D*)listMC->FindObject(Form("hMC%s_PtRadius_MergedCluster_cent%d", pName.Data(), cent)))->Fill(pi0Pt, radius);
    }
    else if (!iCaloCluster->IsClusterFromCvtedPi0(stack, isConverted_i, iPi0Indx) || i==entries-1) { iCaloCluster = 0; continue; }

    for (Int_t j=i+1; j<entries; j++) { // Loop calo cluster j
      jCaloCluster = (AliCaloClusterInfo*)caloClArr->At(j);
      
      if (!jCaloCluster->IsClusterFromCvtedPi0(stack, isConverted_j, jPi0Indx)) { jCaloCluster = 0; continue; }
      if (jPi0Indx != iPi0Indx) { jCaloCluster = 0; continue; }  // coming from the same pi0
      iMod     = iCaloCluster->GetModule();
      iPIDBit  = iCaloCluster->GetPIDBit();
      iLorentz = iCaloCluster->LorentzVector();

      pName    = ClassifyMCPi0(iPi0Indx, stack);
      jMod     = jCaloCluster->GetModule();
      jPIDBit  = jCaloCluster->GetPIDBit();
      jLorentz = jCaloCluster->LorentzVector();
      if (TMath::Abs(iMod-jMod)>1) { jCaloCluster = 0; continue; }

      pi0Pt      = (iLorentz+jLorentz).E();
      pi0InvMass = (iLorentz+jLorentz).M();
      radius     = stack->Particle(iPi0Indx)->R();
      ((TH2D*)listMC->FindObject("hMCInclusivePi0_PtRadius_Reco"))->Fill(pi0Pt, radius);
      ((TH2D*)listMC->FindObject(Form("hMCInclusivePi0_PtRadius_Reco_cent%d", cent)))->Fill(pi0Pt, radius);

      ((TH2D*)listMC->FindObject(Form("hMC%s_PtRadius_Reco", pName.Data())))->Fill(pi0Pt, radius);
      ((TH2D*)listMC->FindObject(Form("hMC%s_PtRadius_Reco_cent%d", pName.Data(), cent)))->Fill(pi0Pt, radius);

      for (Int_t iPID=0; iPID<kPIDs; iPID++)
        if ((iPIDBit & jPIDBit & PIDBIT[iPID])==PIDBIT[iPID]) {
          ((TH2D*)listMC->FindObject(Form("hMCInclusivePi0_PtInvMass_%s_Reco", namePID[iPID].Data())))->Fill(pi0Pt, pi0InvMass);
          ((TH2D*)listMC->FindObject(Form("hMCInclusivePi0_PtInvMass_%s_Reco_cent%d", namePID[iPID].Data(), cent)))->Fill(pi0Pt, pi0InvMass);

          ((TH2D*)listMC->FindObject(Form("hMC%s_PtInvMass_%s_Reco", pName.Data(), namePID[iPID].Data())))->Fill(pi0Pt, pi0InvMass);
          ((TH2D*)listMC->FindObject(Form("hMC%s_PtInvMass_%s_Reco_cent%d", pName.Data(), namePID[iPID].Data(), cent)))->Fill(pi0Pt, pi0InvMass);

          if (isConverted_i || isConverted_j) {
            ((TH2D*)listMC->FindObject(Form("hMCInclusiveCvtedPi0_PtInvMass_%s_Reco", namePID[iPID].Data())))->Fill(pi0Pt, pi0InvMass);
            ((TH2D*)listMC->FindObject(Form("hMCInclusiveCvtedPi0_PtInvMass_%s_Reco_cent%d", namePID[iPID].Data(), cent)))->Fill(pi0Pt, pi0InvMass);
          } else {
            ((TH2D*)listMC->FindObject(Form("hMCInclusivePurePi0_PtInvMass_%s_Reco", namePID[iPID].Data())))->Fill(pi0Pt, pi0InvMass);
            ((TH2D*)listMC->FindObject(Form("hMCInclusivePurePi0_PtInvMass_%s_Reco_cent%d", namePID[iPID].Data(), cent)))->Fill(pi0Pt, pi0InvMass);
          }
        }
    } // End loop calo cluster j 
  } // End loop calo cluster i

  return;
}

//________________________________________________________________________
TString AliPHOSpPbPi0Header::ClassifyMCPi0(Int_t index, AliStack* const stack)
{

    TString  pName;
    TParticle* pMC  = stack->Particle(index);
    Int_t      mpdg = 0;

    if (pMC->GetFirstMother()>-1) {
      TParticle* pMother = stack->Particle(pMC->GetFirstMother());
      mpdg = TMath::Abs(pMother->GetPdgCode());
    }

    // Classify Pi0 sources
    if (index<stack->GetNprimary())                              pName = "PrimaryPi0";
    else if (mpdg==310)                                          pName = "2ndPi0FromK0s";
    else if (mpdg==321 || mpdg==211 || mpdg==2212 || mpdg==2112) pName = "2ndPi0FromMaterials";     // K+-, pi+-, p(pbar), n(nbar)
    else                                                         pName = "2ndPi0FromOtherDecays";   // all other secondary pi0s

    return pName;
}

//________________________________________________________________________
Int_t AliPHOSpPbPi0Header::HitPHOSModule(TParticle* const pMC, AliPHOSGeoUtils* const phosGeo)
{

  Int_t mod=0, relID[4]={0,0,0,0}; 
  Double_t x=0., z=0.;
  Double_t vtx[3] = { pMC->Vx(), pMC->Vy(), pMC->Vz() };
  Double_t theta = pMC->Theta();
  Double_t phi   = pMC->Phi();

  if (!phosGeo->ImpactOnEmc(vtx, theta, phi, mod, z, x)) return -1;
  phosGeo->RelPosToRelId(mod, x, z, relID);
  if (fgUseFiducialCut) {
    const Int_t edgeX = 2;
    const Int_t edgeZ = 2;
    if (relID[2] >edgeX && relID[2]<(65-edgeX) && relID[3]>edgeZ && relID[3] <(57-edgeZ)) return relID[0];
    else return -1;
  } 

  return relID[0];
}
 AliPHOSpPbPi0Header.cxx:1
 AliPHOSpPbPi0Header.cxx:2
 AliPHOSpPbPi0Header.cxx:3
 AliPHOSpPbPi0Header.cxx:4
 AliPHOSpPbPi0Header.cxx:5
 AliPHOSpPbPi0Header.cxx:6
 AliPHOSpPbPi0Header.cxx:7
 AliPHOSpPbPi0Header.cxx:8
 AliPHOSpPbPi0Header.cxx:9
 AliPHOSpPbPi0Header.cxx:10
 AliPHOSpPbPi0Header.cxx:11
 AliPHOSpPbPi0Header.cxx:12
 AliPHOSpPbPi0Header.cxx:13
 AliPHOSpPbPi0Header.cxx:14
 AliPHOSpPbPi0Header.cxx:15
 AliPHOSpPbPi0Header.cxx:16
 AliPHOSpPbPi0Header.cxx:17
 AliPHOSpPbPi0Header.cxx:18
 AliPHOSpPbPi0Header.cxx:19
 AliPHOSpPbPi0Header.cxx:20
 AliPHOSpPbPi0Header.cxx:21
 AliPHOSpPbPi0Header.cxx:22
 AliPHOSpPbPi0Header.cxx:23
 AliPHOSpPbPi0Header.cxx:24
 AliPHOSpPbPi0Header.cxx:25
 AliPHOSpPbPi0Header.cxx:26
 AliPHOSpPbPi0Header.cxx:27
 AliPHOSpPbPi0Header.cxx:28
 AliPHOSpPbPi0Header.cxx:29
 AliPHOSpPbPi0Header.cxx:30
 AliPHOSpPbPi0Header.cxx:31
 AliPHOSpPbPi0Header.cxx:32
 AliPHOSpPbPi0Header.cxx:33
 AliPHOSpPbPi0Header.cxx:34
 AliPHOSpPbPi0Header.cxx:35
 AliPHOSpPbPi0Header.cxx:36
 AliPHOSpPbPi0Header.cxx:37
 AliPHOSpPbPi0Header.cxx:38
 AliPHOSpPbPi0Header.cxx:39
 AliPHOSpPbPi0Header.cxx:40
 AliPHOSpPbPi0Header.cxx:41
 AliPHOSpPbPi0Header.cxx:42
 AliPHOSpPbPi0Header.cxx:43
 AliPHOSpPbPi0Header.cxx:44
 AliPHOSpPbPi0Header.cxx:45
 AliPHOSpPbPi0Header.cxx:46
 AliPHOSpPbPi0Header.cxx:47
 AliPHOSpPbPi0Header.cxx:48
 AliPHOSpPbPi0Header.cxx:49
 AliPHOSpPbPi0Header.cxx:50
 AliPHOSpPbPi0Header.cxx:51
 AliPHOSpPbPi0Header.cxx:52
 AliPHOSpPbPi0Header.cxx:53
 AliPHOSpPbPi0Header.cxx:54
 AliPHOSpPbPi0Header.cxx:55
 AliPHOSpPbPi0Header.cxx:56
 AliPHOSpPbPi0Header.cxx:57
 AliPHOSpPbPi0Header.cxx:58
 AliPHOSpPbPi0Header.cxx:59
 AliPHOSpPbPi0Header.cxx:60
 AliPHOSpPbPi0Header.cxx:61
 AliPHOSpPbPi0Header.cxx:62
 AliPHOSpPbPi0Header.cxx:63
 AliPHOSpPbPi0Header.cxx:64
 AliPHOSpPbPi0Header.cxx:65
 AliPHOSpPbPi0Header.cxx:66
 AliPHOSpPbPi0Header.cxx:67
 AliPHOSpPbPi0Header.cxx:68
 AliPHOSpPbPi0Header.cxx:69
 AliPHOSpPbPi0Header.cxx:70
 AliPHOSpPbPi0Header.cxx:71
 AliPHOSpPbPi0Header.cxx:72
 AliPHOSpPbPi0Header.cxx:73
 AliPHOSpPbPi0Header.cxx:74
 AliPHOSpPbPi0Header.cxx:75
 AliPHOSpPbPi0Header.cxx:76
 AliPHOSpPbPi0Header.cxx:77
 AliPHOSpPbPi0Header.cxx:78
 AliPHOSpPbPi0Header.cxx:79
 AliPHOSpPbPi0Header.cxx:80
 AliPHOSpPbPi0Header.cxx:81
 AliPHOSpPbPi0Header.cxx:82
 AliPHOSpPbPi0Header.cxx:83
 AliPHOSpPbPi0Header.cxx:84
 AliPHOSpPbPi0Header.cxx:85
 AliPHOSpPbPi0Header.cxx:86
 AliPHOSpPbPi0Header.cxx:87
 AliPHOSpPbPi0Header.cxx:88
 AliPHOSpPbPi0Header.cxx:89
 AliPHOSpPbPi0Header.cxx:90
 AliPHOSpPbPi0Header.cxx:91
 AliPHOSpPbPi0Header.cxx:92
 AliPHOSpPbPi0Header.cxx:93
 AliPHOSpPbPi0Header.cxx:94
 AliPHOSpPbPi0Header.cxx:95
 AliPHOSpPbPi0Header.cxx:96
 AliPHOSpPbPi0Header.cxx:97
 AliPHOSpPbPi0Header.cxx:98
 AliPHOSpPbPi0Header.cxx:99
 AliPHOSpPbPi0Header.cxx:100
 AliPHOSpPbPi0Header.cxx:101
 AliPHOSpPbPi0Header.cxx:102
 AliPHOSpPbPi0Header.cxx:103
 AliPHOSpPbPi0Header.cxx:104
 AliPHOSpPbPi0Header.cxx:105
 AliPHOSpPbPi0Header.cxx:106
 AliPHOSpPbPi0Header.cxx:107
 AliPHOSpPbPi0Header.cxx:108
 AliPHOSpPbPi0Header.cxx:109
 AliPHOSpPbPi0Header.cxx:110
 AliPHOSpPbPi0Header.cxx:111
 AliPHOSpPbPi0Header.cxx:112
 AliPHOSpPbPi0Header.cxx:113
 AliPHOSpPbPi0Header.cxx:114
 AliPHOSpPbPi0Header.cxx:115
 AliPHOSpPbPi0Header.cxx:116
 AliPHOSpPbPi0Header.cxx:117
 AliPHOSpPbPi0Header.cxx:118
 AliPHOSpPbPi0Header.cxx:119
 AliPHOSpPbPi0Header.cxx:120
 AliPHOSpPbPi0Header.cxx:121
 AliPHOSpPbPi0Header.cxx:122
 AliPHOSpPbPi0Header.cxx:123
 AliPHOSpPbPi0Header.cxx:124
 AliPHOSpPbPi0Header.cxx:125
 AliPHOSpPbPi0Header.cxx:126
 AliPHOSpPbPi0Header.cxx:127
 AliPHOSpPbPi0Header.cxx:128
 AliPHOSpPbPi0Header.cxx:129
 AliPHOSpPbPi0Header.cxx:130
 AliPHOSpPbPi0Header.cxx:131
 AliPHOSpPbPi0Header.cxx:132
 AliPHOSpPbPi0Header.cxx:133
 AliPHOSpPbPi0Header.cxx:134
 AliPHOSpPbPi0Header.cxx:135
 AliPHOSpPbPi0Header.cxx:136
 AliPHOSpPbPi0Header.cxx:137
 AliPHOSpPbPi0Header.cxx:138
 AliPHOSpPbPi0Header.cxx:139
 AliPHOSpPbPi0Header.cxx:140
 AliPHOSpPbPi0Header.cxx:141
 AliPHOSpPbPi0Header.cxx:142
 AliPHOSpPbPi0Header.cxx:143
 AliPHOSpPbPi0Header.cxx:144
 AliPHOSpPbPi0Header.cxx:145
 AliPHOSpPbPi0Header.cxx:146
 AliPHOSpPbPi0Header.cxx:147
 AliPHOSpPbPi0Header.cxx:148
 AliPHOSpPbPi0Header.cxx:149
 AliPHOSpPbPi0Header.cxx:150
 AliPHOSpPbPi0Header.cxx:151
 AliPHOSpPbPi0Header.cxx:152
 AliPHOSpPbPi0Header.cxx:153
 AliPHOSpPbPi0Header.cxx:154
 AliPHOSpPbPi0Header.cxx:155
 AliPHOSpPbPi0Header.cxx:156
 AliPHOSpPbPi0Header.cxx:157
 AliPHOSpPbPi0Header.cxx:158
 AliPHOSpPbPi0Header.cxx:159
 AliPHOSpPbPi0Header.cxx:160
 AliPHOSpPbPi0Header.cxx:161
 AliPHOSpPbPi0Header.cxx:162
 AliPHOSpPbPi0Header.cxx:163
 AliPHOSpPbPi0Header.cxx:164
 AliPHOSpPbPi0Header.cxx:165
 AliPHOSpPbPi0Header.cxx:166
 AliPHOSpPbPi0Header.cxx:167
 AliPHOSpPbPi0Header.cxx:168
 AliPHOSpPbPi0Header.cxx:169
 AliPHOSpPbPi0Header.cxx:170
 AliPHOSpPbPi0Header.cxx:171
 AliPHOSpPbPi0Header.cxx:172
 AliPHOSpPbPi0Header.cxx:173
 AliPHOSpPbPi0Header.cxx:174
 AliPHOSpPbPi0Header.cxx:175
 AliPHOSpPbPi0Header.cxx:176
 AliPHOSpPbPi0Header.cxx:177
 AliPHOSpPbPi0Header.cxx:178
 AliPHOSpPbPi0Header.cxx:179
 AliPHOSpPbPi0Header.cxx:180
 AliPHOSpPbPi0Header.cxx:181
 AliPHOSpPbPi0Header.cxx:182
 AliPHOSpPbPi0Header.cxx:183
 AliPHOSpPbPi0Header.cxx:184
 AliPHOSpPbPi0Header.cxx:185
 AliPHOSpPbPi0Header.cxx:186
 AliPHOSpPbPi0Header.cxx:187
 AliPHOSpPbPi0Header.cxx:188
 AliPHOSpPbPi0Header.cxx:189
 AliPHOSpPbPi0Header.cxx:190
 AliPHOSpPbPi0Header.cxx:191
 AliPHOSpPbPi0Header.cxx:192
 AliPHOSpPbPi0Header.cxx:193
 AliPHOSpPbPi0Header.cxx:194
 AliPHOSpPbPi0Header.cxx:195
 AliPHOSpPbPi0Header.cxx:196
 AliPHOSpPbPi0Header.cxx:197
 AliPHOSpPbPi0Header.cxx:198
 AliPHOSpPbPi0Header.cxx:199
 AliPHOSpPbPi0Header.cxx:200
 AliPHOSpPbPi0Header.cxx:201
 AliPHOSpPbPi0Header.cxx:202
 AliPHOSpPbPi0Header.cxx:203
 AliPHOSpPbPi0Header.cxx:204
 AliPHOSpPbPi0Header.cxx:205
 AliPHOSpPbPi0Header.cxx:206
 AliPHOSpPbPi0Header.cxx:207
 AliPHOSpPbPi0Header.cxx:208
 AliPHOSpPbPi0Header.cxx:209
 AliPHOSpPbPi0Header.cxx:210
 AliPHOSpPbPi0Header.cxx:211
 AliPHOSpPbPi0Header.cxx:212
 AliPHOSpPbPi0Header.cxx:213
 AliPHOSpPbPi0Header.cxx:214
 AliPHOSpPbPi0Header.cxx:215
 AliPHOSpPbPi0Header.cxx:216
 AliPHOSpPbPi0Header.cxx:217
 AliPHOSpPbPi0Header.cxx:218
 AliPHOSpPbPi0Header.cxx:219
 AliPHOSpPbPi0Header.cxx:220
 AliPHOSpPbPi0Header.cxx:221
 AliPHOSpPbPi0Header.cxx:222
 AliPHOSpPbPi0Header.cxx:223
 AliPHOSpPbPi0Header.cxx:224
 AliPHOSpPbPi0Header.cxx:225
 AliPHOSpPbPi0Header.cxx:226
 AliPHOSpPbPi0Header.cxx:227
 AliPHOSpPbPi0Header.cxx:228
 AliPHOSpPbPi0Header.cxx:229
 AliPHOSpPbPi0Header.cxx:230
 AliPHOSpPbPi0Header.cxx:231
 AliPHOSpPbPi0Header.cxx:232
 AliPHOSpPbPi0Header.cxx:233
 AliPHOSpPbPi0Header.cxx:234
 AliPHOSpPbPi0Header.cxx:235
 AliPHOSpPbPi0Header.cxx:236
 AliPHOSpPbPi0Header.cxx:237
 AliPHOSpPbPi0Header.cxx:238
 AliPHOSpPbPi0Header.cxx:239
 AliPHOSpPbPi0Header.cxx:240
 AliPHOSpPbPi0Header.cxx:241
 AliPHOSpPbPi0Header.cxx:242
 AliPHOSpPbPi0Header.cxx:243
 AliPHOSpPbPi0Header.cxx:244
 AliPHOSpPbPi0Header.cxx:245
 AliPHOSpPbPi0Header.cxx:246
 AliPHOSpPbPi0Header.cxx:247
 AliPHOSpPbPi0Header.cxx:248
 AliPHOSpPbPi0Header.cxx:249
 AliPHOSpPbPi0Header.cxx:250
 AliPHOSpPbPi0Header.cxx:251
 AliPHOSpPbPi0Header.cxx:252
 AliPHOSpPbPi0Header.cxx:253
 AliPHOSpPbPi0Header.cxx:254
 AliPHOSpPbPi0Header.cxx:255
 AliPHOSpPbPi0Header.cxx:256
 AliPHOSpPbPi0Header.cxx:257
 AliPHOSpPbPi0Header.cxx:258
 AliPHOSpPbPi0Header.cxx:259
 AliPHOSpPbPi0Header.cxx:260
 AliPHOSpPbPi0Header.cxx:261
 AliPHOSpPbPi0Header.cxx:262
 AliPHOSpPbPi0Header.cxx:263
 AliPHOSpPbPi0Header.cxx:264
 AliPHOSpPbPi0Header.cxx:265
 AliPHOSpPbPi0Header.cxx:266
 AliPHOSpPbPi0Header.cxx:267
 AliPHOSpPbPi0Header.cxx:268
 AliPHOSpPbPi0Header.cxx:269
 AliPHOSpPbPi0Header.cxx:270
 AliPHOSpPbPi0Header.cxx:271
 AliPHOSpPbPi0Header.cxx:272
 AliPHOSpPbPi0Header.cxx:273
 AliPHOSpPbPi0Header.cxx:274
 AliPHOSpPbPi0Header.cxx:275
 AliPHOSpPbPi0Header.cxx:276
 AliPHOSpPbPi0Header.cxx:277
 AliPHOSpPbPi0Header.cxx:278
 AliPHOSpPbPi0Header.cxx:279
 AliPHOSpPbPi0Header.cxx:280
 AliPHOSpPbPi0Header.cxx:281
 AliPHOSpPbPi0Header.cxx:282
 AliPHOSpPbPi0Header.cxx:283
 AliPHOSpPbPi0Header.cxx:284
 AliPHOSpPbPi0Header.cxx:285
 AliPHOSpPbPi0Header.cxx:286
 AliPHOSpPbPi0Header.cxx:287
 AliPHOSpPbPi0Header.cxx:288
 AliPHOSpPbPi0Header.cxx:289
 AliPHOSpPbPi0Header.cxx:290
 AliPHOSpPbPi0Header.cxx:291
 AliPHOSpPbPi0Header.cxx:292
 AliPHOSpPbPi0Header.cxx:293
 AliPHOSpPbPi0Header.cxx:294
 AliPHOSpPbPi0Header.cxx:295
 AliPHOSpPbPi0Header.cxx:296
 AliPHOSpPbPi0Header.cxx:297
 AliPHOSpPbPi0Header.cxx:298
 AliPHOSpPbPi0Header.cxx:299
 AliPHOSpPbPi0Header.cxx:300
 AliPHOSpPbPi0Header.cxx:301
 AliPHOSpPbPi0Header.cxx:302
 AliPHOSpPbPi0Header.cxx:303
 AliPHOSpPbPi0Header.cxx:304
 AliPHOSpPbPi0Header.cxx:305
 AliPHOSpPbPi0Header.cxx:306
 AliPHOSpPbPi0Header.cxx:307
 AliPHOSpPbPi0Header.cxx:308
 AliPHOSpPbPi0Header.cxx:309
 AliPHOSpPbPi0Header.cxx:310
 AliPHOSpPbPi0Header.cxx:311
 AliPHOSpPbPi0Header.cxx:312
 AliPHOSpPbPi0Header.cxx:313
 AliPHOSpPbPi0Header.cxx:314
 AliPHOSpPbPi0Header.cxx:315
 AliPHOSpPbPi0Header.cxx:316
 AliPHOSpPbPi0Header.cxx:317
 AliPHOSpPbPi0Header.cxx:318
 AliPHOSpPbPi0Header.cxx:319
 AliPHOSpPbPi0Header.cxx:320
 AliPHOSpPbPi0Header.cxx:321
 AliPHOSpPbPi0Header.cxx:322
 AliPHOSpPbPi0Header.cxx:323
 AliPHOSpPbPi0Header.cxx:324
 AliPHOSpPbPi0Header.cxx:325
 AliPHOSpPbPi0Header.cxx:326
 AliPHOSpPbPi0Header.cxx:327
 AliPHOSpPbPi0Header.cxx:328
 AliPHOSpPbPi0Header.cxx:329
 AliPHOSpPbPi0Header.cxx:330
 AliPHOSpPbPi0Header.cxx:331
 AliPHOSpPbPi0Header.cxx:332
 AliPHOSpPbPi0Header.cxx:333
 AliPHOSpPbPi0Header.cxx:334
 AliPHOSpPbPi0Header.cxx:335
 AliPHOSpPbPi0Header.cxx:336
 AliPHOSpPbPi0Header.cxx:337
 AliPHOSpPbPi0Header.cxx:338
 AliPHOSpPbPi0Header.cxx:339
 AliPHOSpPbPi0Header.cxx:340
 AliPHOSpPbPi0Header.cxx:341
 AliPHOSpPbPi0Header.cxx:342
 AliPHOSpPbPi0Header.cxx:343
 AliPHOSpPbPi0Header.cxx:344
 AliPHOSpPbPi0Header.cxx:345
 AliPHOSpPbPi0Header.cxx:346
 AliPHOSpPbPi0Header.cxx:347
 AliPHOSpPbPi0Header.cxx:348
 AliPHOSpPbPi0Header.cxx:349
 AliPHOSpPbPi0Header.cxx:350
 AliPHOSpPbPi0Header.cxx:351
 AliPHOSpPbPi0Header.cxx:352
 AliPHOSpPbPi0Header.cxx:353
 AliPHOSpPbPi0Header.cxx:354
 AliPHOSpPbPi0Header.cxx:355
 AliPHOSpPbPi0Header.cxx:356
 AliPHOSpPbPi0Header.cxx:357
 AliPHOSpPbPi0Header.cxx:358
 AliPHOSpPbPi0Header.cxx:359
 AliPHOSpPbPi0Header.cxx:360
 AliPHOSpPbPi0Header.cxx:361
 AliPHOSpPbPi0Header.cxx:362
 AliPHOSpPbPi0Header.cxx:363
 AliPHOSpPbPi0Header.cxx:364
 AliPHOSpPbPi0Header.cxx:365
 AliPHOSpPbPi0Header.cxx:366
 AliPHOSpPbPi0Header.cxx:367
 AliPHOSpPbPi0Header.cxx:368
 AliPHOSpPbPi0Header.cxx:369
 AliPHOSpPbPi0Header.cxx:370
 AliPHOSpPbPi0Header.cxx:371
 AliPHOSpPbPi0Header.cxx:372
 AliPHOSpPbPi0Header.cxx:373
 AliPHOSpPbPi0Header.cxx:374
 AliPHOSpPbPi0Header.cxx:375
 AliPHOSpPbPi0Header.cxx:376
 AliPHOSpPbPi0Header.cxx:377
 AliPHOSpPbPi0Header.cxx:378
 AliPHOSpPbPi0Header.cxx:379
 AliPHOSpPbPi0Header.cxx:380
 AliPHOSpPbPi0Header.cxx:381
 AliPHOSpPbPi0Header.cxx:382
 AliPHOSpPbPi0Header.cxx:383
 AliPHOSpPbPi0Header.cxx:384
 AliPHOSpPbPi0Header.cxx:385
 AliPHOSpPbPi0Header.cxx:386
 AliPHOSpPbPi0Header.cxx:387
 AliPHOSpPbPi0Header.cxx:388
 AliPHOSpPbPi0Header.cxx:389
 AliPHOSpPbPi0Header.cxx:390
 AliPHOSpPbPi0Header.cxx:391
 AliPHOSpPbPi0Header.cxx:392
 AliPHOSpPbPi0Header.cxx:393
 AliPHOSpPbPi0Header.cxx:394
 AliPHOSpPbPi0Header.cxx:395
 AliPHOSpPbPi0Header.cxx:396
 AliPHOSpPbPi0Header.cxx:397
 AliPHOSpPbPi0Header.cxx:398
 AliPHOSpPbPi0Header.cxx:399
 AliPHOSpPbPi0Header.cxx:400
 AliPHOSpPbPi0Header.cxx:401
 AliPHOSpPbPi0Header.cxx:402
 AliPHOSpPbPi0Header.cxx:403
 AliPHOSpPbPi0Header.cxx:404
 AliPHOSpPbPi0Header.cxx:405
 AliPHOSpPbPi0Header.cxx:406
 AliPHOSpPbPi0Header.cxx:407
 AliPHOSpPbPi0Header.cxx:408
 AliPHOSpPbPi0Header.cxx:409
 AliPHOSpPbPi0Header.cxx:410
 AliPHOSpPbPi0Header.cxx:411
 AliPHOSpPbPi0Header.cxx:412
 AliPHOSpPbPi0Header.cxx:413
 AliPHOSpPbPi0Header.cxx:414
 AliPHOSpPbPi0Header.cxx:415
 AliPHOSpPbPi0Header.cxx:416
 AliPHOSpPbPi0Header.cxx:417
 AliPHOSpPbPi0Header.cxx:418
 AliPHOSpPbPi0Header.cxx:419
 AliPHOSpPbPi0Header.cxx:420
 AliPHOSpPbPi0Header.cxx:421
 AliPHOSpPbPi0Header.cxx:422
 AliPHOSpPbPi0Header.cxx:423
 AliPHOSpPbPi0Header.cxx:424
 AliPHOSpPbPi0Header.cxx:425
 AliPHOSpPbPi0Header.cxx:426
 AliPHOSpPbPi0Header.cxx:427
 AliPHOSpPbPi0Header.cxx:428
 AliPHOSpPbPi0Header.cxx:429
 AliPHOSpPbPi0Header.cxx:430
 AliPHOSpPbPi0Header.cxx:431
 AliPHOSpPbPi0Header.cxx:432
 AliPHOSpPbPi0Header.cxx:433
 AliPHOSpPbPi0Header.cxx:434
 AliPHOSpPbPi0Header.cxx:435
 AliPHOSpPbPi0Header.cxx:436
 AliPHOSpPbPi0Header.cxx:437
 AliPHOSpPbPi0Header.cxx:438
 AliPHOSpPbPi0Header.cxx:439
 AliPHOSpPbPi0Header.cxx:440
 AliPHOSpPbPi0Header.cxx:441
 AliPHOSpPbPi0Header.cxx:442
 AliPHOSpPbPi0Header.cxx:443
 AliPHOSpPbPi0Header.cxx:444
 AliPHOSpPbPi0Header.cxx:445
 AliPHOSpPbPi0Header.cxx:446
 AliPHOSpPbPi0Header.cxx:447
 AliPHOSpPbPi0Header.cxx:448
 AliPHOSpPbPi0Header.cxx:449
 AliPHOSpPbPi0Header.cxx:450
 AliPHOSpPbPi0Header.cxx:451
 AliPHOSpPbPi0Header.cxx:452
 AliPHOSpPbPi0Header.cxx:453
 AliPHOSpPbPi0Header.cxx:454
 AliPHOSpPbPi0Header.cxx:455
 AliPHOSpPbPi0Header.cxx:456
 AliPHOSpPbPi0Header.cxx:457
 AliPHOSpPbPi0Header.cxx:458
 AliPHOSpPbPi0Header.cxx:459
 AliPHOSpPbPi0Header.cxx:460
 AliPHOSpPbPi0Header.cxx:461
 AliPHOSpPbPi0Header.cxx:462
 AliPHOSpPbPi0Header.cxx:463
 AliPHOSpPbPi0Header.cxx:464
 AliPHOSpPbPi0Header.cxx:465
 AliPHOSpPbPi0Header.cxx:466
 AliPHOSpPbPi0Header.cxx:467
 AliPHOSpPbPi0Header.cxx:468
 AliPHOSpPbPi0Header.cxx:469
 AliPHOSpPbPi0Header.cxx:470
 AliPHOSpPbPi0Header.cxx:471
 AliPHOSpPbPi0Header.cxx:472
 AliPHOSpPbPi0Header.cxx:473
 AliPHOSpPbPi0Header.cxx:474
 AliPHOSpPbPi0Header.cxx:475
 AliPHOSpPbPi0Header.cxx:476
 AliPHOSpPbPi0Header.cxx:477
 AliPHOSpPbPi0Header.cxx:478
 AliPHOSpPbPi0Header.cxx:479
 AliPHOSpPbPi0Header.cxx:480
 AliPHOSpPbPi0Header.cxx:481
 AliPHOSpPbPi0Header.cxx:482
 AliPHOSpPbPi0Header.cxx:483
 AliPHOSpPbPi0Header.cxx:484
 AliPHOSpPbPi0Header.cxx:485
 AliPHOSpPbPi0Header.cxx:486
 AliPHOSpPbPi0Header.cxx:487
 AliPHOSpPbPi0Header.cxx:488
 AliPHOSpPbPi0Header.cxx:489
 AliPHOSpPbPi0Header.cxx:490
 AliPHOSpPbPi0Header.cxx:491
 AliPHOSpPbPi0Header.cxx:492
 AliPHOSpPbPi0Header.cxx:493
 AliPHOSpPbPi0Header.cxx:494
 AliPHOSpPbPi0Header.cxx:495
 AliPHOSpPbPi0Header.cxx:496
 AliPHOSpPbPi0Header.cxx:497
 AliPHOSpPbPi0Header.cxx:498
 AliPHOSpPbPi0Header.cxx:499
 AliPHOSpPbPi0Header.cxx:500
 AliPHOSpPbPi0Header.cxx:501
 AliPHOSpPbPi0Header.cxx:502
 AliPHOSpPbPi0Header.cxx:503
 AliPHOSpPbPi0Header.cxx:504
 AliPHOSpPbPi0Header.cxx:505
 AliPHOSpPbPi0Header.cxx:506
 AliPHOSpPbPi0Header.cxx:507
 AliPHOSpPbPi0Header.cxx:508
 AliPHOSpPbPi0Header.cxx:509
 AliPHOSpPbPi0Header.cxx:510
 AliPHOSpPbPi0Header.cxx:511
 AliPHOSpPbPi0Header.cxx:512
 AliPHOSpPbPi0Header.cxx:513
 AliPHOSpPbPi0Header.cxx:514
 AliPHOSpPbPi0Header.cxx:515
 AliPHOSpPbPi0Header.cxx:516
 AliPHOSpPbPi0Header.cxx:517
 AliPHOSpPbPi0Header.cxx:518
 AliPHOSpPbPi0Header.cxx:519
 AliPHOSpPbPi0Header.cxx:520
 AliPHOSpPbPi0Header.cxx:521
 AliPHOSpPbPi0Header.cxx:522
 AliPHOSpPbPi0Header.cxx:523
 AliPHOSpPbPi0Header.cxx:524
 AliPHOSpPbPi0Header.cxx:525
 AliPHOSpPbPi0Header.cxx:526
 AliPHOSpPbPi0Header.cxx:527
 AliPHOSpPbPi0Header.cxx:528
 AliPHOSpPbPi0Header.cxx:529
 AliPHOSpPbPi0Header.cxx:530
 AliPHOSpPbPi0Header.cxx:531
 AliPHOSpPbPi0Header.cxx:532
 AliPHOSpPbPi0Header.cxx:533
 AliPHOSpPbPi0Header.cxx:534
 AliPHOSpPbPi0Header.cxx:535
 AliPHOSpPbPi0Header.cxx:536
 AliPHOSpPbPi0Header.cxx:537
 AliPHOSpPbPi0Header.cxx:538
 AliPHOSpPbPi0Header.cxx:539
 AliPHOSpPbPi0Header.cxx:540
 AliPHOSpPbPi0Header.cxx:541
 AliPHOSpPbPi0Header.cxx:542
 AliPHOSpPbPi0Header.cxx:543
 AliPHOSpPbPi0Header.cxx:544
 AliPHOSpPbPi0Header.cxx:545
 AliPHOSpPbPi0Header.cxx:546
 AliPHOSpPbPi0Header.cxx:547
 AliPHOSpPbPi0Header.cxx:548
 AliPHOSpPbPi0Header.cxx:549
 AliPHOSpPbPi0Header.cxx:550
 AliPHOSpPbPi0Header.cxx:551
 AliPHOSpPbPi0Header.cxx:552
 AliPHOSpPbPi0Header.cxx:553
 AliPHOSpPbPi0Header.cxx:554
 AliPHOSpPbPi0Header.cxx:555
 AliPHOSpPbPi0Header.cxx:556
 AliPHOSpPbPi0Header.cxx:557
 AliPHOSpPbPi0Header.cxx:558
 AliPHOSpPbPi0Header.cxx:559
 AliPHOSpPbPi0Header.cxx:560
 AliPHOSpPbPi0Header.cxx:561
 AliPHOSpPbPi0Header.cxx:562
 AliPHOSpPbPi0Header.cxx:563
 AliPHOSpPbPi0Header.cxx:564
 AliPHOSpPbPi0Header.cxx:565
 AliPHOSpPbPi0Header.cxx:566
 AliPHOSpPbPi0Header.cxx:567
 AliPHOSpPbPi0Header.cxx:568
 AliPHOSpPbPi0Header.cxx:569
 AliPHOSpPbPi0Header.cxx:570
 AliPHOSpPbPi0Header.cxx:571
 AliPHOSpPbPi0Header.cxx:572
 AliPHOSpPbPi0Header.cxx:573
 AliPHOSpPbPi0Header.cxx:574
 AliPHOSpPbPi0Header.cxx:575
 AliPHOSpPbPi0Header.cxx:576
 AliPHOSpPbPi0Header.cxx:577
 AliPHOSpPbPi0Header.cxx:578
 AliPHOSpPbPi0Header.cxx:579
 AliPHOSpPbPi0Header.cxx:580
 AliPHOSpPbPi0Header.cxx:581
 AliPHOSpPbPi0Header.cxx:582
 AliPHOSpPbPi0Header.cxx:583
 AliPHOSpPbPi0Header.cxx:584
 AliPHOSpPbPi0Header.cxx:585
 AliPHOSpPbPi0Header.cxx:586
 AliPHOSpPbPi0Header.cxx:587
 AliPHOSpPbPi0Header.cxx:588
 AliPHOSpPbPi0Header.cxx:589
 AliPHOSpPbPi0Header.cxx:590
 AliPHOSpPbPi0Header.cxx:591
 AliPHOSpPbPi0Header.cxx:592
 AliPHOSpPbPi0Header.cxx:593
 AliPHOSpPbPi0Header.cxx:594
 AliPHOSpPbPi0Header.cxx:595
 AliPHOSpPbPi0Header.cxx:596
 AliPHOSpPbPi0Header.cxx:597
 AliPHOSpPbPi0Header.cxx:598
 AliPHOSpPbPi0Header.cxx:599
 AliPHOSpPbPi0Header.cxx:600
 AliPHOSpPbPi0Header.cxx:601
 AliPHOSpPbPi0Header.cxx:602
 AliPHOSpPbPi0Header.cxx:603
 AliPHOSpPbPi0Header.cxx:604
 AliPHOSpPbPi0Header.cxx:605
 AliPHOSpPbPi0Header.cxx:606
 AliPHOSpPbPi0Header.cxx:607
 AliPHOSpPbPi0Header.cxx:608
 AliPHOSpPbPi0Header.cxx:609
 AliPHOSpPbPi0Header.cxx:610
 AliPHOSpPbPi0Header.cxx:611
 AliPHOSpPbPi0Header.cxx:612
 AliPHOSpPbPi0Header.cxx:613
 AliPHOSpPbPi0Header.cxx:614
 AliPHOSpPbPi0Header.cxx:615
 AliPHOSpPbPi0Header.cxx:616
 AliPHOSpPbPi0Header.cxx:617
 AliPHOSpPbPi0Header.cxx:618
 AliPHOSpPbPi0Header.cxx:619
 AliPHOSpPbPi0Header.cxx:620
 AliPHOSpPbPi0Header.cxx:621
 AliPHOSpPbPi0Header.cxx:622
 AliPHOSpPbPi0Header.cxx:623
 AliPHOSpPbPi0Header.cxx:624
 AliPHOSpPbPi0Header.cxx:625
 AliPHOSpPbPi0Header.cxx:626
 AliPHOSpPbPi0Header.cxx:627
 AliPHOSpPbPi0Header.cxx:628
 AliPHOSpPbPi0Header.cxx:629
 AliPHOSpPbPi0Header.cxx:630
 AliPHOSpPbPi0Header.cxx:631
 AliPHOSpPbPi0Header.cxx:632
 AliPHOSpPbPi0Header.cxx:633
 AliPHOSpPbPi0Header.cxx:634
 AliPHOSpPbPi0Header.cxx:635
 AliPHOSpPbPi0Header.cxx:636
 AliPHOSpPbPi0Header.cxx:637
 AliPHOSpPbPi0Header.cxx:638
 AliPHOSpPbPi0Header.cxx:639
 AliPHOSpPbPi0Header.cxx:640
 AliPHOSpPbPi0Header.cxx:641
 AliPHOSpPbPi0Header.cxx:642
 AliPHOSpPbPi0Header.cxx:643
 AliPHOSpPbPi0Header.cxx:644
 AliPHOSpPbPi0Header.cxx:645
 AliPHOSpPbPi0Header.cxx:646
 AliPHOSpPbPi0Header.cxx:647
 AliPHOSpPbPi0Header.cxx:648
 AliPHOSpPbPi0Header.cxx:649
 AliPHOSpPbPi0Header.cxx:650
 AliPHOSpPbPi0Header.cxx:651
 AliPHOSpPbPi0Header.cxx:652
 AliPHOSpPbPi0Header.cxx:653
 AliPHOSpPbPi0Header.cxx:654
 AliPHOSpPbPi0Header.cxx:655
 AliPHOSpPbPi0Header.cxx:656
 AliPHOSpPbPi0Header.cxx:657
 AliPHOSpPbPi0Header.cxx:658
 AliPHOSpPbPi0Header.cxx:659
 AliPHOSpPbPi0Header.cxx:660
 AliPHOSpPbPi0Header.cxx:661
 AliPHOSpPbPi0Header.cxx:662
 AliPHOSpPbPi0Header.cxx:663
 AliPHOSpPbPi0Header.cxx:664
 AliPHOSpPbPi0Header.cxx:665
 AliPHOSpPbPi0Header.cxx:666
 AliPHOSpPbPi0Header.cxx:667
 AliPHOSpPbPi0Header.cxx:668
 AliPHOSpPbPi0Header.cxx:669
 AliPHOSpPbPi0Header.cxx:670
 AliPHOSpPbPi0Header.cxx:671
 AliPHOSpPbPi0Header.cxx:672
 AliPHOSpPbPi0Header.cxx:673
 AliPHOSpPbPi0Header.cxx:674
 AliPHOSpPbPi0Header.cxx:675
 AliPHOSpPbPi0Header.cxx:676
 AliPHOSpPbPi0Header.cxx:677
 AliPHOSpPbPi0Header.cxx:678
 AliPHOSpPbPi0Header.cxx:679
 AliPHOSpPbPi0Header.cxx:680
 AliPHOSpPbPi0Header.cxx:681
 AliPHOSpPbPi0Header.cxx:682
 AliPHOSpPbPi0Header.cxx:683
 AliPHOSpPbPi0Header.cxx:684
 AliPHOSpPbPi0Header.cxx:685
 AliPHOSpPbPi0Header.cxx:686
 AliPHOSpPbPi0Header.cxx:687
 AliPHOSpPbPi0Header.cxx:688
 AliPHOSpPbPi0Header.cxx:689
 AliPHOSpPbPi0Header.cxx:690
 AliPHOSpPbPi0Header.cxx:691
 AliPHOSpPbPi0Header.cxx:692
 AliPHOSpPbPi0Header.cxx:693
 AliPHOSpPbPi0Header.cxx:694
 AliPHOSpPbPi0Header.cxx:695
 AliPHOSpPbPi0Header.cxx:696
 AliPHOSpPbPi0Header.cxx:697
 AliPHOSpPbPi0Header.cxx:698
 AliPHOSpPbPi0Header.cxx:699
 AliPHOSpPbPi0Header.cxx:700
 AliPHOSpPbPi0Header.cxx:701
 AliPHOSpPbPi0Header.cxx:702
 AliPHOSpPbPi0Header.cxx:703
 AliPHOSpPbPi0Header.cxx:704
 AliPHOSpPbPi0Header.cxx:705
 AliPHOSpPbPi0Header.cxx:706
 AliPHOSpPbPi0Header.cxx:707
 AliPHOSpPbPi0Header.cxx:708
 AliPHOSpPbPi0Header.cxx:709
 AliPHOSpPbPi0Header.cxx:710
 AliPHOSpPbPi0Header.cxx:711
 AliPHOSpPbPi0Header.cxx:712
 AliPHOSpPbPi0Header.cxx:713
 AliPHOSpPbPi0Header.cxx:714
 AliPHOSpPbPi0Header.cxx:715
 AliPHOSpPbPi0Header.cxx:716
 AliPHOSpPbPi0Header.cxx:717
 AliPHOSpPbPi0Header.cxx:718
 AliPHOSpPbPi0Header.cxx:719
 AliPHOSpPbPi0Header.cxx:720
 AliPHOSpPbPi0Header.cxx:721
 AliPHOSpPbPi0Header.cxx:722
 AliPHOSpPbPi0Header.cxx:723
 AliPHOSpPbPi0Header.cxx:724
 AliPHOSpPbPi0Header.cxx:725
 AliPHOSpPbPi0Header.cxx:726
 AliPHOSpPbPi0Header.cxx:727
 AliPHOSpPbPi0Header.cxx:728
 AliPHOSpPbPi0Header.cxx:729
 AliPHOSpPbPi0Header.cxx:730
 AliPHOSpPbPi0Header.cxx:731
 AliPHOSpPbPi0Header.cxx:732
 AliPHOSpPbPi0Header.cxx:733
 AliPHOSpPbPi0Header.cxx:734
 AliPHOSpPbPi0Header.cxx:735
 AliPHOSpPbPi0Header.cxx:736
 AliPHOSpPbPi0Header.cxx:737
 AliPHOSpPbPi0Header.cxx:738
 AliPHOSpPbPi0Header.cxx:739
 AliPHOSpPbPi0Header.cxx:740
 AliPHOSpPbPi0Header.cxx:741
 AliPHOSpPbPi0Header.cxx:742
 AliPHOSpPbPi0Header.cxx:743
 AliPHOSpPbPi0Header.cxx:744
 AliPHOSpPbPi0Header.cxx:745
 AliPHOSpPbPi0Header.cxx:746
 AliPHOSpPbPi0Header.cxx:747
 AliPHOSpPbPi0Header.cxx:748
 AliPHOSpPbPi0Header.cxx:749
 AliPHOSpPbPi0Header.cxx:750
 AliPHOSpPbPi0Header.cxx:751
 AliPHOSpPbPi0Header.cxx:752
 AliPHOSpPbPi0Header.cxx:753
 AliPHOSpPbPi0Header.cxx:754
 AliPHOSpPbPi0Header.cxx:755
 AliPHOSpPbPi0Header.cxx:756
 AliPHOSpPbPi0Header.cxx:757
 AliPHOSpPbPi0Header.cxx:758
 AliPHOSpPbPi0Header.cxx:759
 AliPHOSpPbPi0Header.cxx:760
 AliPHOSpPbPi0Header.cxx:761
 AliPHOSpPbPi0Header.cxx:762
 AliPHOSpPbPi0Header.cxx:763
 AliPHOSpPbPi0Header.cxx:764
 AliPHOSpPbPi0Header.cxx:765
 AliPHOSpPbPi0Header.cxx:766
 AliPHOSpPbPi0Header.cxx:767
 AliPHOSpPbPi0Header.cxx:768
 AliPHOSpPbPi0Header.cxx:769
 AliPHOSpPbPi0Header.cxx:770
 AliPHOSpPbPi0Header.cxx:771
 AliPHOSpPbPi0Header.cxx:772
 AliPHOSpPbPi0Header.cxx:773
 AliPHOSpPbPi0Header.cxx:774
 AliPHOSpPbPi0Header.cxx:775
 AliPHOSpPbPi0Header.cxx:776
 AliPHOSpPbPi0Header.cxx:777
 AliPHOSpPbPi0Header.cxx:778
 AliPHOSpPbPi0Header.cxx:779
 AliPHOSpPbPi0Header.cxx:780
 AliPHOSpPbPi0Header.cxx:781
 AliPHOSpPbPi0Header.cxx:782
 AliPHOSpPbPi0Header.cxx:783
 AliPHOSpPbPi0Header.cxx:784
 AliPHOSpPbPi0Header.cxx:785
 AliPHOSpPbPi0Header.cxx:786
 AliPHOSpPbPi0Header.cxx:787
 AliPHOSpPbPi0Header.cxx:788
 AliPHOSpPbPi0Header.cxx:789
 AliPHOSpPbPi0Header.cxx:790
 AliPHOSpPbPi0Header.cxx:791
 AliPHOSpPbPi0Header.cxx:792
 AliPHOSpPbPi0Header.cxx:793
 AliPHOSpPbPi0Header.cxx:794
 AliPHOSpPbPi0Header.cxx:795
 AliPHOSpPbPi0Header.cxx:796
 AliPHOSpPbPi0Header.cxx:797
 AliPHOSpPbPi0Header.cxx:798
 AliPHOSpPbPi0Header.cxx:799
 AliPHOSpPbPi0Header.cxx:800
 AliPHOSpPbPi0Header.cxx:801
 AliPHOSpPbPi0Header.cxx:802
 AliPHOSpPbPi0Header.cxx:803
 AliPHOSpPbPi0Header.cxx:804
 AliPHOSpPbPi0Header.cxx:805
 AliPHOSpPbPi0Header.cxx:806
 AliPHOSpPbPi0Header.cxx:807
 AliPHOSpPbPi0Header.cxx:808
 AliPHOSpPbPi0Header.cxx:809
 AliPHOSpPbPi0Header.cxx:810
 AliPHOSpPbPi0Header.cxx:811
 AliPHOSpPbPi0Header.cxx:812
 AliPHOSpPbPi0Header.cxx:813
 AliPHOSpPbPi0Header.cxx:814
 AliPHOSpPbPi0Header.cxx:815
 AliPHOSpPbPi0Header.cxx:816
 AliPHOSpPbPi0Header.cxx:817
 AliPHOSpPbPi0Header.cxx:818
 AliPHOSpPbPi0Header.cxx:819
 AliPHOSpPbPi0Header.cxx:820
 AliPHOSpPbPi0Header.cxx:821
 AliPHOSpPbPi0Header.cxx:822
 AliPHOSpPbPi0Header.cxx:823
 AliPHOSpPbPi0Header.cxx:824
 AliPHOSpPbPi0Header.cxx:825
 AliPHOSpPbPi0Header.cxx:826
 AliPHOSpPbPi0Header.cxx:827
 AliPHOSpPbPi0Header.cxx:828
 AliPHOSpPbPi0Header.cxx:829
 AliPHOSpPbPi0Header.cxx:830
 AliPHOSpPbPi0Header.cxx:831
 AliPHOSpPbPi0Header.cxx:832
 AliPHOSpPbPi0Header.cxx:833
 AliPHOSpPbPi0Header.cxx:834
 AliPHOSpPbPi0Header.cxx:835
 AliPHOSpPbPi0Header.cxx:836
 AliPHOSpPbPi0Header.cxx:837
 AliPHOSpPbPi0Header.cxx:838
 AliPHOSpPbPi0Header.cxx:839
 AliPHOSpPbPi0Header.cxx:840
 AliPHOSpPbPi0Header.cxx:841
 AliPHOSpPbPi0Header.cxx:842
 AliPHOSpPbPi0Header.cxx:843
 AliPHOSpPbPi0Header.cxx:844
 AliPHOSpPbPi0Header.cxx:845
 AliPHOSpPbPi0Header.cxx:846
 AliPHOSpPbPi0Header.cxx:847
 AliPHOSpPbPi0Header.cxx:848
 AliPHOSpPbPi0Header.cxx:849
 AliPHOSpPbPi0Header.cxx:850
 AliPHOSpPbPi0Header.cxx:851
 AliPHOSpPbPi0Header.cxx:852
 AliPHOSpPbPi0Header.cxx:853
 AliPHOSpPbPi0Header.cxx:854
 AliPHOSpPbPi0Header.cxx:855
 AliPHOSpPbPi0Header.cxx:856
 AliPHOSpPbPi0Header.cxx:857
 AliPHOSpPbPi0Header.cxx:858
 AliPHOSpPbPi0Header.cxx:859
 AliPHOSpPbPi0Header.cxx:860
 AliPHOSpPbPi0Header.cxx:861
 AliPHOSpPbPi0Header.cxx:862
 AliPHOSpPbPi0Header.cxx:863
 AliPHOSpPbPi0Header.cxx:864
 AliPHOSpPbPi0Header.cxx:865
 AliPHOSpPbPi0Header.cxx:866
 AliPHOSpPbPi0Header.cxx:867
 AliPHOSpPbPi0Header.cxx:868
 AliPHOSpPbPi0Header.cxx:869
 AliPHOSpPbPi0Header.cxx:870
 AliPHOSpPbPi0Header.cxx:871
 AliPHOSpPbPi0Header.cxx:872
 AliPHOSpPbPi0Header.cxx:873
 AliPHOSpPbPi0Header.cxx:874
 AliPHOSpPbPi0Header.cxx:875
 AliPHOSpPbPi0Header.cxx:876
 AliPHOSpPbPi0Header.cxx:877
 AliPHOSpPbPi0Header.cxx:878
 AliPHOSpPbPi0Header.cxx:879
 AliPHOSpPbPi0Header.cxx:880
 AliPHOSpPbPi0Header.cxx:881
 AliPHOSpPbPi0Header.cxx:882
 AliPHOSpPbPi0Header.cxx:883
 AliPHOSpPbPi0Header.cxx:884
 AliPHOSpPbPi0Header.cxx:885
 AliPHOSpPbPi0Header.cxx:886
 AliPHOSpPbPi0Header.cxx:887
 AliPHOSpPbPi0Header.cxx:888
 AliPHOSpPbPi0Header.cxx:889
 AliPHOSpPbPi0Header.cxx:890
 AliPHOSpPbPi0Header.cxx:891
 AliPHOSpPbPi0Header.cxx:892
 AliPHOSpPbPi0Header.cxx:893
 AliPHOSpPbPi0Header.cxx:894
 AliPHOSpPbPi0Header.cxx:895
 AliPHOSpPbPi0Header.cxx:896
 AliPHOSpPbPi0Header.cxx:897
 AliPHOSpPbPi0Header.cxx:898
 AliPHOSpPbPi0Header.cxx:899
 AliPHOSpPbPi0Header.cxx:900
 AliPHOSpPbPi0Header.cxx:901
 AliPHOSpPbPi0Header.cxx:902
 AliPHOSpPbPi0Header.cxx:903
 AliPHOSpPbPi0Header.cxx:904
 AliPHOSpPbPi0Header.cxx:905
 AliPHOSpPbPi0Header.cxx:906
 AliPHOSpPbPi0Header.cxx:907
 AliPHOSpPbPi0Header.cxx:908
 AliPHOSpPbPi0Header.cxx:909
 AliPHOSpPbPi0Header.cxx:910
 AliPHOSpPbPi0Header.cxx:911
 AliPHOSpPbPi0Header.cxx:912
 AliPHOSpPbPi0Header.cxx:913
 AliPHOSpPbPi0Header.cxx:914
 AliPHOSpPbPi0Header.cxx:915
 AliPHOSpPbPi0Header.cxx:916
 AliPHOSpPbPi0Header.cxx:917
 AliPHOSpPbPi0Header.cxx:918
 AliPHOSpPbPi0Header.cxx:919
 AliPHOSpPbPi0Header.cxx:920
 AliPHOSpPbPi0Header.cxx:921
 AliPHOSpPbPi0Header.cxx:922
 AliPHOSpPbPi0Header.cxx:923
 AliPHOSpPbPi0Header.cxx:924
 AliPHOSpPbPi0Header.cxx:925
 AliPHOSpPbPi0Header.cxx:926
 AliPHOSpPbPi0Header.cxx:927
 AliPHOSpPbPi0Header.cxx:928
 AliPHOSpPbPi0Header.cxx:929
 AliPHOSpPbPi0Header.cxx:930
 AliPHOSpPbPi0Header.cxx:931
 AliPHOSpPbPi0Header.cxx:932
 AliPHOSpPbPi0Header.cxx:933
 AliPHOSpPbPi0Header.cxx:934
 AliPHOSpPbPi0Header.cxx:935
 AliPHOSpPbPi0Header.cxx:936
 AliPHOSpPbPi0Header.cxx:937
 AliPHOSpPbPi0Header.cxx:938
 AliPHOSpPbPi0Header.cxx:939
 AliPHOSpPbPi0Header.cxx:940
 AliPHOSpPbPi0Header.cxx:941
 AliPHOSpPbPi0Header.cxx:942
 AliPHOSpPbPi0Header.cxx:943
 AliPHOSpPbPi0Header.cxx:944
 AliPHOSpPbPi0Header.cxx:945
 AliPHOSpPbPi0Header.cxx:946
 AliPHOSpPbPi0Header.cxx:947
 AliPHOSpPbPi0Header.cxx:948
 AliPHOSpPbPi0Header.cxx:949
 AliPHOSpPbPi0Header.cxx:950
 AliPHOSpPbPi0Header.cxx:951
 AliPHOSpPbPi0Header.cxx:952
 AliPHOSpPbPi0Header.cxx:953
 AliPHOSpPbPi0Header.cxx:954
 AliPHOSpPbPi0Header.cxx:955
 AliPHOSpPbPi0Header.cxx:956
 AliPHOSpPbPi0Header.cxx:957
 AliPHOSpPbPi0Header.cxx:958
 AliPHOSpPbPi0Header.cxx:959
 AliPHOSpPbPi0Header.cxx:960
 AliPHOSpPbPi0Header.cxx:961
 AliPHOSpPbPi0Header.cxx:962
 AliPHOSpPbPi0Header.cxx:963
 AliPHOSpPbPi0Header.cxx:964
 AliPHOSpPbPi0Header.cxx:965
 AliPHOSpPbPi0Header.cxx:966
 AliPHOSpPbPi0Header.cxx:967
 AliPHOSpPbPi0Header.cxx:968
 AliPHOSpPbPi0Header.cxx:969
 AliPHOSpPbPi0Header.cxx:970
 AliPHOSpPbPi0Header.cxx:971
 AliPHOSpPbPi0Header.cxx:972
 AliPHOSpPbPi0Header.cxx:973
 AliPHOSpPbPi0Header.cxx:974
 AliPHOSpPbPi0Header.cxx:975
 AliPHOSpPbPi0Header.cxx:976
 AliPHOSpPbPi0Header.cxx:977
 AliPHOSpPbPi0Header.cxx:978
 AliPHOSpPbPi0Header.cxx:979
 AliPHOSpPbPi0Header.cxx:980
 AliPHOSpPbPi0Header.cxx:981
 AliPHOSpPbPi0Header.cxx:982