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 for TRD PID
// Plot Pion Efficiency at x electron efficiency
// Calculate the threshold parametrisation and save
// them in a root file
//
// Author:
//   Markus Fasel <M.Fasel@gsi.de>
//
#include <TAxis.h>
#include <TBrowser.h>
#include <TClass.h>
#include <TCanvas.h>
#include <TF1.h>
#include <TFile.h>
#include <TGraph.h>
#include <TGraphErrors.h>
#include <THnSparse.h>
#include <TH1.h>
#include <TH2.h>
#include <TIterator.h>
#include <TLegend.h>
#include <TList.h>
#include <TMath.h>
#include <TObjArray.h>
#include <TString.h>

#include "AliAODTrack.h"
#include "AliAODPid.h"
#include "AliESDtrack.h"
#include "AliHFEtrdPIDqa.h"
#include "AliHFEtools.h"
#include "AliHFEpidTRD.h"
#include "AliLog.h"

ClassImp(AliHFEtrdPIDqa)

const Double_t AliHFEtrdPIDqa::fgkElectronEff[kNElectronEffs] = {0.7,0.75, 0.8, 0.85, 0.9, 0.95};
//_______________________________________________________________
// Definition of the common binning 
const Int_t AliHFEtrdPIDqa::fgkNBinsCommon[kQuantitiesCommon] = {
  AliPID::kSPECIES + 1,         // species
  40,                           // p-bins
  AliESDtrack::kTRDnPlanes + 1 // tracklets including 0
};
const Double_t AliHFEtrdPIDqa::fgkMinBinCommon[kQuantitiesCommon] = {
  -1,      // species
  0.1,     // p-bins:
  0        // tracklets including 0
};

const Double_t AliHFEtrdPIDqa::fgkMaxBinCommon[kQuantitiesCommon] = {
  AliPID::kSPECIES,               // species
  10.,                            // p-bins
  AliESDtrack::kTRDnPlanes + 1    // tracklets including 0
};
//_______________________________________________________________

//__________________________________________________________________
AliHFEtrdPIDqa::AliHFEtrdPIDqa():
  TNamed("trdPIDqa", ""),
  fTRDpid(NULL),
  fHistos(NULL),
  fPionEfficiencies(NULL),
  fProtonEfficiencies(NULL),
  fKaonEfficiencies(NULL),
  fThresholds(NULL),
  fShowMessage(kFALSE),
  fTotalChargeInSlice0(kFALSE),
  fCentralityBin(-1)
{
  //
  // Default Constructor
  //
}

//__________________________________________________________________
AliHFEtrdPIDqa::AliHFEtrdPIDqa(const Char_t *name):
  TNamed(name, ""),
  fTRDpid(NULL),
  fHistos(NULL),
  fPionEfficiencies(NULL),
  fProtonEfficiencies(NULL),
  fKaonEfficiencies(NULL),
  fThresholds(NULL),
  fShowMessage(kFALSE),
  fTotalChargeInSlice0(kFALSE),
  fCentralityBin(-1)
{
  //
  // Main Constructor
  //
}

//__________________________________________________________________
AliHFEtrdPIDqa::AliHFEtrdPIDqa(const AliHFEtrdPIDqa &ref):
  TNamed(ref),
  fTRDpid(NULL),
  fHistos(NULL),
  fPionEfficiencies(NULL),
  fProtonEfficiencies(NULL),
  fKaonEfficiencies(NULL),
  fThresholds(NULL),
  fShowMessage(kFALSE),
  fTotalChargeInSlice0(ref.fTotalChargeInSlice0),
  fCentralityBin(ref.fCentralityBin)
{
  //
  // Copy constructor
  //
  ref.Copy(*this);
}

//__________________________________________________________________
AliHFEtrdPIDqa &AliHFEtrdPIDqa::operator=(const AliHFEtrdPIDqa &ref){
  //
  // Assignment operator
  //
  if(this != &ref)
    ref.Copy(*this);
  return *this;
}

//__________________________________________________________________
AliHFEtrdPIDqa::~AliHFEtrdPIDqa(){
  //
  // Destructor
  //
  if(fTRDpid) delete fTRDpid;
  if(fHistos) delete fHistos;
  if(fPionEfficiencies) delete fPionEfficiencies;
  if(fProtonEfficiencies) delete fProtonEfficiencies;
  if(fKaonEfficiencies) delete fKaonEfficiencies;
}

//__________________________________________________________________
void AliHFEtrdPIDqa::Copy(TObject &ref) const{
  //
  // Copies content of this object into object ref
  //
  TNamed::Copy(ref);

  AliHFEtrdPIDqa &target = dynamic_cast<AliHFEtrdPIDqa &>(ref);
  target.fTRDpid = fTRDpid;
  target.fHistos = dynamic_cast<AliHFEcollection *>(fHistos->Clone());  
  target.fTotalChargeInSlice0 = fTotalChargeInSlice0;
  target.fCentralityBin = fCentralityBin;
}

//__________________________________________________________________
Long64_t AliHFEtrdPIDqa::Merge(TCollection *coll){
  //
  // Merge objects
  //
  if(!coll) return 0;
  if(coll->IsEmpty()) return 1;
  
  AliHFEtrdPIDqa *refQA = NULL;
  TIter it(coll);
  TObject *o = NULL;
  Long64_t count = 0;
  TList listHistos;
  while((o = it())){
    refQA = dynamic_cast<AliHFEtrdPIDqa *>(o);
    if(!refQA) continue;

    listHistos.Add(refQA->fHistos);
    count++; 
  }
  fHistos->Merge(&listHistos);
  return count+1;
}

//__________________________________________________________________
void AliHFEtrdPIDqa::Browse(TBrowser *b){
  //
  // Enable Browser functionality
  //
  if(b){
    // Add objects to the browser
    if(fHistos) b->Add(fHistos, fHistos->GetName());
    if(fPionEfficiencies) b->Add(fPionEfficiencies, "Pion Efficiencies");
    if(fProtonEfficiencies) b->Add(fProtonEfficiencies, "Proton Efficiencies");  
    if(fKaonEfficiencies) b->Add(fKaonEfficiencies, "Kaon Efficiencies");
    if(fThresholds) b->Add(fThresholds, "Thresholds");
  }
}

//__________________________________________________________________
void AliHFEtrdPIDqa::Init(){
  //
  // Initialize Object
  //
  
  fHistos = new AliHFEcollection("TRDqa", "Histos for TRD QA");

  CreateLikelihoodHistogram();
  CreateQAHistogram();
  CreatedEdxHistogram();
  CreateHistoTruncatedMean();

  fTRDpid = new AliHFEpidTRD("QAtrdPID");
  if(fTotalChargeInSlice0) fTRDpid->SetTotalChargeInSlice0();
}

//__________________________________________________________________
void AliHFEtrdPIDqa::CreateLikelihoodHistogram(){
  //
  // Create Histogram for TRD Likelihood Studies
  //
  Int_t nbins[kQuantitiesLike]; memcpy(nbins, fgkNBinsCommon, sizeof(Int_t) * kQuantitiesCommon);
  nbins[kElectronLike] = 100;
  nbins[kNClustersLike] = 200;
  nbins[kCentralityBinLike] = 12;
  Double_t binMin[kQuantitiesLike]; memcpy(binMin, fgkMinBinCommon, sizeof(Double_t) * kQuantitiesCommon);
  Double_t binMax[kQuantitiesLike]; memcpy(binMax, fgkMaxBinCommon, sizeof(Double_t) * kQuantitiesCommon);
  binMin[kElectronLike] = 0.;      
  binMin[kNClustersLike] = 0.;
  binMin[kCentralityBinLike] = -1.;
  binMax[kElectronLike] = 1.;
  binMax[kNClustersLike] = 200.;
  binMax[kCentralityBinLike] = 11.;

  fHistos->CreateTHnSparse("fLikeTRD","TRD Likelihood Studies", kQuantitiesLike, nbins, binMin, binMax);
  fHistos->BinLogAxis("fLikeTRD", kP);
}

//__________________________________________________________________
void AliHFEtrdPIDqa::CreateQAHistogram(){
  //
  // Create Histogram for Basic TRD PID QA
  //
  AliDebug(1, "Called");
  Int_t nbins[kQuantitiesQA]; memcpy(nbins, fgkNBinsCommon, sizeof(Int_t) * kQuantitiesCommon);
  nbins[kNonZeroTrackletCharge] = AliESDtrack::kTRDnPlanes + 1;
  nbins[kNClusters] = 200;
  nbins[kCentralityBinQA] = 12;
  Double_t binMin[kQuantitiesQA]; memcpy(binMin, fgkMinBinCommon, sizeof(Double_t) * kQuantitiesCommon);
  binMin[kNonZeroTrackletCharge] = 0.;      
  binMin[kNClusters] = 0.;
  binMin[kCentralityBinQA] = -1.;
  Double_t binMax[kQuantitiesQA]; memcpy(binMax, fgkMaxBinCommon, sizeof(Double_t) * kQuantitiesCommon);
  binMax[kNonZeroTrackletCharge] = AliESDtrack::kTRDnPlanes + 1.;
  binMax[kNClusters] = 200.;
  binMax[kCentralityBinQA] = 11.;
  fHistos->CreateTHnSparse("fQAtrack","TRD QA Histogram", kQuantitiesQA, nbins, binMin, binMax);
  fHistos->BinLogAxis("fQAtrack", kP);
}

//__________________________________________________________________
void AliHFEtrdPIDqa::CreatedEdxHistogram(){
  //
  // Create QA histogram for dEdx investigations
  //
  AliDebug(1, "Called");
  Int_t nbins[kQuantitiesdEdx]; memcpy(nbins, fgkNBinsCommon, sizeof(Int_t) * kQuantitiesCommon);
  nbins[kdEdx] = 100;
  nbins[kNclusters] = 261;
  nbins[kNonZeroSlices] = 9;
  nbins[kCentralityBindEdx] = 12;
  Double_t binMin[kQuantitiesdEdx]; memcpy(binMin, fgkMinBinCommon, sizeof(Double_t) * kQuantitiesCommon);
  binMin[kdEdx] = 0.;     
  binMin[kNclusters] = 0;
  binMin[kNonZeroSlices] = 0.;
  binMin[kCentralityBindEdx] = -1.;
  Double_t binMax[kQuantitiesdEdx]; memcpy(binMax, fgkMaxBinCommon, sizeof(Double_t) * kQuantitiesCommon);
  binMax[kdEdx] = 10000.;
  binMax[kNclusters] = 260.;
  binMax[kNonZeroSlices] = 8.;
  binMax[kCentralityBindEdx] = 11.;

  fHistos->CreateTHnSparse("fQAdEdx","TRD summed dEdx", kQuantitiesdEdx, nbins, binMin, binMax);
  fHistos->BinLogAxis("fQAdEdx", kP);
  fHistos->Sumw2("fQAdEdx");
}

//__________________________________________________________________
void AliHFEtrdPIDqa::CreateHistoTruncatedMean(){
  //
  // Create Histogram for Basic TRD PID QA:
  //
  AliDebug(1, "Called");
  Int_t nbins[kQuantitiesTruncMean]; memcpy(nbins, fgkNBinsCommon, sizeof(Int_t) * kQuantitiesCommon);
  nbins[kTPCdEdx] = 600;
  nbins[kTRDdEdxMethod1] = 1000;
  nbins[kTRDdEdxMethod2] = 1000;
  nbins[kCentralityBinTruncMean] = 12;
  Double_t binMin[kQuantitiesTruncMean]; memcpy(binMin, fgkMinBinCommon, sizeof(Double_t) * kQuantitiesCommon);
  binMin[kTPCdEdx] = 0.;      
  binMin[kTRDdEdxMethod1] = 0.;      
  binMin[kTRDdEdxMethod2] = 0.;
  binMin[kCentralityBinTruncMean] = -1.;
  Double_t binMax[kQuantitiesTruncMean]; memcpy(binMax, fgkMaxBinCommon, sizeof(Double_t) * kQuantitiesCommon);
  binMax[kTPCdEdx] = 600;
  binMax[kTRDdEdxMethod1] = 20000.;
  binMax[kTRDdEdxMethod2] = 20000.;
  binMax[kCentralityBinTruncMean] = 11.;

  fHistos->CreateTHnSparse("fTRDtruncMean","TRD TruncatedMean studies", kQuantitiesTruncMean, nbins, binMin, binMax);
  fHistos->BinLogAxis("fTRDtruncMean", kP);
  fHistos->CreateTH2F("fTRDslicesPions","TRD dEdx per slice for Pions", 8, 0, 8, 2000, 0, 8000);
  fHistos->CreateTH2F("fTRDslicesElectrons","TRD dEdx per slice for Electrons", 8, 0, 8, 2000, 0, 8000);
}


//__________________________________________________________________
void AliHFEtrdPIDqa::ProcessTracks(const TObjArray * const tracks, Int_t species){
  //
  // Process Electron Tracks
  //
  if(species < -1 || species >= AliPID::kSPECIES) return;
  TIter it(tracks);
  const AliVTrack *track = NULL;
  while((track = dynamic_cast<const AliVTrack *>(it()))){
    if(track) ProcessTrack(track, species);
  }
}

//__________________________________________________________________
void AliHFEtrdPIDqa::ProcessTrack(const AliVTrack * const track, Int_t species){
  //
  // Process Single Track
  //
  if(TString(track->IsA()->GetName()).CompareTo("AliESDtrack") == 0)
    ProcessTrackESD(dynamic_cast<const AliESDtrack *>(track), species);
  else if(TString(track->IsA()->GetName()).CompareTo("AliAODTrack") == 0)
    ProcessTrackAOD(dynamic_cast<const AliAODTrack *>(track), species);
}


//__________________________________________________________________
void AliHFEtrdPIDqa::ProcessTrackESD(const AliESDtrack *track, Int_t species){
  //
  // Process single ESD track
  //
  if(!track) return;
  if((track->GetStatus() & AliESDtrack::kTRDout) == 0) return;  // require TRD track
  FillTRDLikelihoods(track, species);
  FillTRDQAplots(track, species);
}

//__________________________________________________________________
void AliHFEtrdPIDqa::ProcessTrackAOD(const AliAODTrack * const track, Int_t /*species*/){
  //
  // Process single AOD track
  // AOD PID object required
  //
  if(!track) return;
  AliAODPid *trackPID = track->GetDetPid();
  if(!trackPID) return;

}

//__________________________________________________________________
void AliHFEtrdPIDqa::FillTRDLikelihoods(const AliESDtrack * const track, Int_t species){
  //
  // Fill TRD Likelihood Histogram
  //
  Double_t trdLike[AliPID::kSPECIES];
  track->GetTRDpid(trdLike);
  // Renormalize 
  Double_t norm =trdLike[AliPID::kElectron]+trdLike[AliPID::kPion];
  Double_t likeEle = norm == 0. ? 0. : trdLike[AliPID::kElectron]/norm;
  const AliExternalTrackParam *outerPars = track->GetOuterParam();

  //Int_t kQuantitiesLike;
  Double_t quantities[kQuantitiesLike]; memset(quantities, 0, sizeof(Double_t) * kQuantitiesLike);
  // we store:
  // species
  // p
  // ntracklets
  // Electron Likelihood
  // Centrality
  quantities[kSpecies] = species;
  quantities[kP] = outerPars ? outerPars->P() : track->P();
  quantities[kNTracklets] = track->GetTRDntrackletsPID();
  quantities[kElectronLike] = likeEle;
  quantities[kNClustersLike] =  track->GetTRDncls();
  quantities[kCentralityBinLike] = fCentralityBin;
  fHistos->Fill("fLikeTRD", quantities);

}

//__________________________________________________________________
void AliHFEtrdPIDqa::FillTRDQAplots(const AliESDtrack * const track, Int_t species){
  //
  // Fill QA Plots containing further information
  //
  const AliExternalTrackParam *outerPars = track->GetOuterParam();

  Double_t quantitiesQA[kQuantitiesQA], quantitiesdEdx[kQuantitiesdEdx], quantitiesTruncMean[kQuantitiesTruncMean];
  // we store:
  // 1. QA
  // species
  // p
  // ntracklets
  // Non-zero tracklet charges
  // Number of clusters / full track
  // 2. dEdx
  // species
  // p
  // ntracklets
  // dEdx
  // 3. Truncated Mean
  // ...
  // TPC dEdx
  // TRD dEdx Method 1
  // TRD dEdx Method 2
  quantitiesQA[kSpecies]  = quantitiesdEdx[kSpecies] 
                          = quantitiesTruncMean[kSpecies] 
                          = species;
  quantitiesQA[kP]  = quantitiesTruncMean[kP]
                    = outerPars ? outerPars->P() : track->P();
  quantitiesQA[kNTracklets] = quantitiesdEdx[kNTracklets] 
                            = quantitiesTruncMean[kNTracklets]
                            = track->GetTRDntrackletsPID();
  quantitiesQA[kNClusters] = quantitiesdEdx[kNclusters] = track->GetTRDncls();
  

  Double_t dEdxSum = 0., qSlice = 0.;
  // remove the last slice from the histogram
  Int_t ntrackletsNonZero = 0, nSlices = track->GetNumberOfTRDslices(), nSlicesNonZero = 0;
  TString speciesname = "pions";
  Bool_t selectedForSlicemon = kFALSE;
  
  switch(species){
    case AliPID::kElectron: speciesname = "Electrons"; selectedForSlicemon = kTRUE; break;
    case AliPID::kPion: speciesname = "Pions"; selectedForSlicemon = kTRUE; break;
    default: speciesname = "undefined"; selectedForSlicemon = kFALSE; break;
  };
  AliDebug(1, Form("species %d, speciesname %s, momentum %f, selected %s", species, speciesname.Data(), track->P(), selectedForSlicemon ? "yes" : "no"));
  for(Int_t iplane = 0; iplane < AliESDtrack::kTRDnPlanes; iplane++){
    quantitiesdEdx[kP] = track->GetTRDmomentum(iplane);
    dEdxSum = 0.;
    for(Int_t islice = 0; islice < nSlices; islice++){
      if(fTotalChargeInSlice0 && islice >= 7) break;
      qSlice = track->GetTRDslice(iplane, fTotalChargeInSlice0 ? islice + 1 : islice);  // hack by mfasel: For data with the new reconstruction, slice 0 is used to store the total charge, the total number of slices is 7 instead of 8
      if(qSlice > 1e-1){
        // cut out 0 slices
        nSlicesNonZero++;
        dEdxSum += qSlice;
        // Reweighting of the slices for the truncated mean: select all pion tracks above
        // 1.5 GeV and monitor the dEdx as function of slice
        if(selectedForSlicemon && track->P() > 1.5){
          AliDebug(2, Form("Filling Histogram fTRDslices%s", speciesname.Data()));
          fHistos->Fill(Form("fTRDslices%s", speciesname.Data()), static_cast<Double_t>(islice), qSlice);
        }
      }
    }
    quantitiesdEdx[kNonZeroSlices] = nSlicesNonZero;
    quantitiesdEdx[kdEdx] = fTotalChargeInSlice0 ? track->GetTRDslice(iplane, 0) : dEdxSum; // hack by mfasel: In the new reconstruction, the total charge is stored in the first slice, in the old reconstruction it has to be calculated from the slice charges.     
    if(dEdxSum) ntrackletsNonZero++;
    // Fill dEdx histogram
    quantitiesdEdx[kCentralityBindEdx] = fCentralityBin;
    if(dEdxSum > 1e-1) fHistos->Fill("fQAdEdx", quantitiesdEdx); // Cut out 0 entries
  }
  quantitiesQA[kNonZeroTrackletCharge] = ntrackletsNonZero;
  quantitiesQA[kCentralityBinQA] = fCentralityBin;
  fHistos->Fill("fQAtrack", quantitiesQA);

  quantitiesTruncMean[kTPCdEdx] = track->GetTPCsignal();
  quantitiesTruncMean[kTRDdEdxMethod1] = fTRDpid->GetTRDSignalV1(track, 0.6);
  quantitiesTruncMean[kTRDdEdxMethod2] = fTRDpid->GetTRDSignalV2(track, 0.6);
  quantitiesTruncMean[kCentralityBinTruncMean] = fCentralityBin;
  fHistos->Fill("fTRDtruncMean", quantitiesTruncMean);
}

/////////////////////////////////////////////////////////
//
// Code for Post Processing
//
// //////////////////////////////////////////////////////

//__________________________________________________________________
void AliHFEtrdPIDqa::FinishAnalysis(Int_t fCentrality, Bool_t isGreaterEqual){
  //
  // Finish Analysis:
  // Calculate Electron Efficiency for ntracklets = 4...6
  // Calculate thresholds for ntracklets = 4...6
  //
  
  if(!fPionEfficiencies){ 
    fPionEfficiencies = new TList;
    fPionEfficiencies->SetName("pionEfficiencies");
    fPionEfficiencies->SetOwner();
  }
  if(!fProtonEfficiencies){
    fProtonEfficiencies = new TList;
    fProtonEfficiencies->SetName("protonEfficiencies");
    fProtonEfficiencies->SetOwner();
  }
  if(!fThresholds){
    fThresholds = new TList;
    fThresholds->SetName("thresholds");
    fThresholds->SetOwner();
  }

  for(Int_t itr = 4; itr <= 6; itr++){
    if(fShowMessage){
      printf("========================================\n");
      printf("Analysing %d trackltes centrality %i \n", itr, fCentrality);
      printf("========================================\n");
    }
    AnalyseNTracklets(itr, fCentrality, isGreaterEqual);
  }
}

//__________________________________________________________________
void AliHFEtrdPIDqa::StoreResults(const Char_t *filename){
  //
  // Store histos into a root file
  //
  TFile *outfile = new TFile(filename, "RECREATE");
  outfile->cd();
  fPionEfficiencies->Clone()->Write(fPionEfficiencies->GetName(), kSingleKey);
  fProtonEfficiencies->Clone()->Write(fProtonEfficiencies->GetName(), kSingleKey);
  fThresholds->Clone()->Write(fThresholds->GetName(), kSingleKey);
  outfile->Close();
  delete outfile;
}

//__________________________________________________________________
void AliHFEtrdPIDqa::SaveThresholdParameters(const Char_t *name, Double_t lowerLimit, Double_t upperLimit, Int_t icentrality){
  //
  // Fit the threshold histograms with the given parametrisation
  // and store the TF1 in the file
  //

  if(!fThresholds){
    AliError("Threshold histograms have to be created first");
    return;
  }

    if(fShowMessage){
    printf("========================================\n");
    printf("Calculating threshold parameters\n");
    printf("========================================\n");
  }

  TList *outlist = new TList;
  outlist->SetName("thresholdTRD");
  
  TGraph *threshhist = NULL;
  TF1 *threshparam = NULL;
  TList *lHistos = NULL, *lFormulas = NULL;
  for(Int_t itracklet = 4; itracklet <= 6; itracklet++){
  
    if(fShowMessage){
      printf("-------------------------------\n");
      printf("Processing %d tracklets\n", itracklet);
      printf("-------------------------------\n");
    }

    Char_t *listname=Form("%dTracklets", itracklet);
    if(icentrality!=-1) listname=Form("%dTracklets%dCentrality", itracklet, icentrality);
    lHistos = dynamic_cast<TList *>(fThresholds->FindObject(listname));
    if(!lHistos){
      AliError(Form("Threshold histograms for the case %s not found", listname));
      continue;
    }
    lFormulas = new TList;
    lFormulas->SetName(listname);
    outlist->Add(lFormulas);
    
    for(Int_t ieff = 0; ieff <  kNElectronEffs; ieff++){
      
      if(fShowMessage){
        printf("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
        printf("Processing Electron Efficiency %f\n", fgkElectronEff[ieff]);
        printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
      }

      threshhist = dynamic_cast<TGraph *>(lHistos->FindObject(Form("eff%d", static_cast<Int_t>(fgkElectronEff[ieff] * 100))));
      if(!threshhist) continue;
      threshparam = MakeThresholds(threshhist, lowerLimit, upperLimit);
      threshparam->SetName(Form("thresh_%d_%d", itracklet, static_cast<Int_t>(fgkElectronEff[ieff] * 100)));
      if(icentrality!=-1) threshparam->SetName(Form("thresh_%d_%d_%d", itracklet, icentrality, static_cast<Int_t>(fgkElectronEff[ieff] * 100)));
      lFormulas->Add(threshparam);
    }
  }

  // store the output
  TFile *outfile = new TFile(name, "RECREATE");
  outfile->cd();
  outlist->Write(outlist->GetName(), kSingleKey);
  outfile->Close();
  delete outfile;
}

//__________________________________________________________________
void AliHFEtrdPIDqa::AnalyseNTracklets(Int_t nTracklets, Int_t nCentrality, Bool_t isGreaterEqual){
  //
  // Calculate Pion Efficiency, Proton Efficiency and Kaon Efficiency at discrete
  // elPion Efficiency, Proton Efficiency and Kaon Efficiency at discrete
  // electron efficiencies
  //
  THnSparse *hLikeTRD = dynamic_cast<THnSparseF *>(fHistos->Get("fLikeTRD"));
  if(!hLikeTRD){
    AliError("Likelihood Histogram not available");
    return;
  }

  Bool_t isPbPb = kFALSE;
  if(nCentrality==-1)  isPbPb = kFALSE;
  if(nCentrality!=-1)  isPbPb = kTRUE;

  Int_t binTracklets = hLikeTRD->GetAxis(kNTracklets)->FindBin(nTracklets);
  hLikeTRD->GetAxis(kNTracklets)->SetRange(binTracklets, isGreaterEqual ? 7 : binTracklets);

  if(isPbPb){
      Int_t binCentrality = hLikeTRD->GetAxis(kCentralityBinLike)->FindBin(nCentrality);
      hLikeTRD->GetAxis(kCentralityBinLike)->SetRange(binCentrality, isGreaterEqual ? 11 : binCentrality);
      /*
       new TCanvas;
       TH2 *test = hLikeTRD->Projection(kCentralityBin, kP);
       test->Draw("colz");
       */
  }

  Int_t binElectrons = hLikeTRD->GetAxis(kSpecies)->FindBin(AliPID::kElectron); 
  AliDebug(1, Form("BinElectrons %d", binElectrons));
  Int_t binPions = hLikeTRD->GetAxis(kSpecies)->FindBin(AliPID::kPion);
  AliDebug(1, Form("BinPions %d", binPions));
  Int_t binProtons =  hLikeTRD->GetAxis(kSpecies)->FindBin(AliPID::kProton);
  AliDebug(1, Form("BinProtons %d", binProtons));
  hLikeTRD->GetAxis(kSpecies)->SetRange(binElectrons, binElectrons);
  TH2 *likeElectron = hLikeTRD->Projection(kElectronLike, kP);
  likeElectron->SetName("likeElectron");
  hLikeTRD->GetAxis(kSpecies)->SetRange(binPions, binPions);
  TH2 *likePion = hLikeTRD->Projection(kElectronLike, kP);
  likePion->SetName("likePion");
  hLikeTRD->GetAxis(kSpecies)->SetRange(binProtons, binProtons);
  TH2 *likeProton = hLikeTRD->Projection(kElectronLike, kP);
  likeProton->SetName("likeProton");
  
  // Undo ranges
  hLikeTRD->GetAxis(kSpecies)->SetRange(0, hLikeTRD->GetAxis(kSpecies)->GetNbins());
  hLikeTRD->GetAxis(kNTracklets)->SetRange(0, hLikeTRD->GetAxis(kNTracklets)->GetNbins());
  hLikeTRD->GetAxis(kNTracklets)->SetRange(0, hLikeTRD->GetAxis(kCentralityBinLike)->GetNbins());

  // Prepare List for output
  Char_t *listname=Form("%dTracklets", nTracklets);
  if(isPbPb) listname=Form("%dTracklets%dCentrality", nTracklets, nCentrality);


  TList *listPions = new TList; listPions->SetName(listname); listPions->SetOwner();
  TList *listProtons = new TList; listProtons->SetName(listname); listProtons->SetOwner();
  TList *listThresholds = new TList; listThresholds->SetName(listname); listThresholds->SetOwner();
  fPionEfficiencies->Add(listPions);
  fProtonEfficiencies->Add(listProtons);
  fThresholds->Add(listThresholds);

  TH1 *probsEl = NULL, *probsPi = NULL, *probsPr = NULL;
  TGraphErrors *effPi = NULL, *effPr = NULL, *thresholds = NULL;
  Double_t p = 0, dp = 0;
  Int_t threshbin = 0;
  Double_t eff, error; // value and error
  for(Int_t ieff = 0; ieff < kNElectronEffs; ieff++){
    
    if(fShowMessage){
      printf("-----------------------------------------\n");
      printf("Doing Electron Efficiency %f\n", fgkElectronEff[ieff]);
      printf("-----------------------------------------\n");
    }
    effPi = new TGraphErrors(likeElectron->GetXaxis()->GetNbins());
    effPi->SetName(Form("eff%d", static_cast<Int_t >(fgkElectronEff[ieff] * 100)));
    effPr = new TGraphErrors(likeElectron->GetXaxis()->GetNbins());
    effPr->SetName(Form("eff%d", static_cast<Int_t >(fgkElectronEff[ieff] * 100)));
    thresholds = new TGraphErrors(likeElectron->GetXaxis()->GetNbins());
    thresholds->SetName(Form("eff%d", static_cast<Int_t >(fgkElectronEff[ieff] * 100)));
  
    // Add to lists
    listPions->Add(effPi);
    listProtons->Add(effPr);
    listThresholds->Add(thresholds);

    for(Int_t imom = 1; imom <= likeElectron->GetXaxis()->GetLast(); imom++){
      p = likeElectron->GetXaxis()->GetBinCenter(imom);
      dp = likeElectron->GetXaxis()->GetBinWidth(imom)/2;

      probsEl = likeElectron->ProjectionY("el", imom, imom);
      if(!probsEl->GetEntries()) continue;
      probsPi = likePion->ProjectionY("pi", imom, imom);
      if(!probsPi->GetEntries()) continue;
      probsPr = likeProton->ProjectionY("pr", imom, imom);
      if(!probsPr->GetEntries()) continue;
      AliDebug(1, Form("Calculating Values for p = %f", p));

      // Calculate non-electronEfficiency and error
      eff = CalculateHadronEfficiency(probsPi, probsEl, fgkElectronEff[ieff], threshbin, error);
      thresholds->SetPoint(imom - 1, p, probsEl->GetXaxis()->GetBinCenter(threshbin));
      thresholds->SetPointError(imom - 1, dp, EstimateThresholdError(probsEl, threshbin));
      AliDebug(1, Form("threshold %d|%f", threshbin, probsEl->GetXaxis()->GetBinCenter(threshbin)));
      AliDebug(1, Form("Pion Efficiency %f +- %f", eff, error));
      effPi->SetPoint(imom - 1, p, eff);
      effPi->SetPointError(imom - 1, dp, error);
      eff = CalculateHadronEfficiency(probsPr, probsEl, fgkElectronEff[ieff] , threshbin, error);
      AliDebug(1, Form("Proton Efficiency %f", eff));
      effPr->SetPoint(imom - 1, p, eff);
      effPr->SetPointError(imom - 1, dp, error);
 
      // cleanup
      delete probsEl;
      delete probsPi;
      delete probsPr;
    }
  }

  // remove temporary histograms
  delete likeElectron;
  delete likePion;
  delete likeProton;
}

//__________________________________________________________________
Double_t AliHFEtrdPIDqa::CalculateHadronEfficiency(const TH1 * const hadron, const TH1 *const electron, Double_t eff, Int_t &threshbin, Double_t &error){
  // 
  // Calculate non-electron efficiency
  // optionally returns sums as second parameter
  //

  TH1D eleWorking(*((const TH1D *)electron)), hadronWorking(*((const TH1D *)hadron)); // Leave the original histograms untouched and do calculation including scale on copy
  eleWorking.Scale(1./eleWorking.Integral());
  hadronWorking.Scale(1./hadronWorking.Integral());

  TArrayD sumsEl(eleWorking.GetNbinsX()), sumsHd(eleWorking.GetNbinsX());

  // calculate threshold and estimated electron efficiency the threshold was taken
  Double_t elEff = 0.;  // estimated electron efficiency at the end
  Int_t currentBin = 0, nbins = 0;
  for(Int_t ibin = eleWorking.GetXaxis()->GetLast(); ibin >= eleWorking.GetXaxis()->GetFirst(); ibin--){
    currentBin = ibin;
    nbins++;
    elEff += eleWorking.GetBinContent(ibin);
    sumsEl[eleWorking.GetXaxis()->GetLast() - ibin] = elEff;
    if(elEff >= eff){
      // we found the matching bin, break the loop
      break;
    }
  }
  threshbin = currentBin;

  Double_t hdEff = 0; 
  for(Int_t ibin = hadronWorking.GetXaxis()->GetLast(); ibin >= threshbin; ibin--) {
    hdEff += hadronWorking.GetBinContent(ibin);
    sumsHd[hadronWorking.GetXaxis()->GetLast() - ibin] = hdEff;
  }

  // search sums of electron efficiency for double counts, eliminate in electron and hadron array
  TArrayD newsumsEl(100), newsumsHd(100);
  Int_t nusable = 0;
  for(Int_t ien = 0; ien < nbins; ien++){
    if(ien==0){
      newsumsEl[0] = sumsEl[0];
      nusable++;
      continue;
    }
    Int_t index = TMath::BinarySearch(nusable, newsumsEl.GetArray(), sumsEl[ien]);
    if(TMath::Abs(sumsEl[ien] - newsumsEl[index]) < 1e-13){
      // element already counted, don't add to the new arrays
      continue; 
    }
    newsumsEl[nusable] = sumsEl[ien];
    newsumsHd[nusable] = sumsHd[ien];
    nusable++;
  }

  //printf("New array\n");
  //for(Int_t ib = 0; ib < nusable; ib++){
  //  printf("Electron Efficiency %f, Pion Efficiency %f\n", newsumsEl[ib], newsumsHd[ib]);
  //}
  //printf("Do Fit\n");

  // Calculate error
  error = 0;
  if(hadronWorking.GetEntries() > 0 && eleWorking.GetEntries() > 0 && nusable > 2){
    // Do error calculation in case the bins have enough statistics
    TGraph gevh(nusable, newsumsEl.GetArray(), newsumsHd.GetArray()); 
    TF1 evh("evh","pol2", eff-.05, eff+.05);
    gevh.Fit(&evh, "Q", "", eff-.05, eff+.05);
  
    // return the error of the pion efficiency
    if(((1.-hdEff) < 0) || ((1.- elEff) < 0)){
      AliError(" ElEffi or HdEffi > 1. Error can not be calculated. Please increase statistics!");
    }   else {
      error = TMath::Sqrt(hdEff*(1-hdEff)/hadronWorking.GetEntries()+TMath::Power(evh.Derivative(eff), 2)*elEff*(1-elEff)/eleWorking.GetEntries());
    }
    AliDebug(2, Form("Pion Effi at [%f] : [%f +/- %f], Threshold[%f]", elEff, hdEff, error, eleWorking.GetBinCenter(threshbin)));
    AliDebug(2, Form("Derivative at %4.2f : %f\n", eff, evh.Derivative(eff)));
  }

  return hdEff;
}

//__________________________________________________________________
Double_t AliHFEtrdPIDqa::EstimateThresholdError(const TH1 * const electron, Int_t threshbin){
  //
  // Estimate threshold error as sqrt(N_int)/N_ent
  // where N_int are the counts integrated under the electron selection band
  // and N_ent are all entries in the histogram
  //
  Int_t nInt = 0;
  for(Int_t ibin = threshbin; ibin <= electron->GetXaxis()->GetNbins(); ibin++){
    nInt += (Int_t) electron->GetBinContent(ibin);
  }
  Int_t nEnt = (Int_t) electron->Integral();
  if(nEnt == 0) return 1.;
  return TMath::Sqrt(static_cast<Double_t>(nInt))/static_cast<Double_t>(nEnt);
}

//__________________________________________________________________
Double_t AliHFEtrdPIDqa::CalculateIntegratedPionEfficiency(UInt_t nTracklets, Double_t electronEff, Double_t pmin, Double_t pmax, Int_t icentrality, Double_t *error){
  //
  // Calculate Pion Efficiency for a given electron efficiency in the specified momentum range
  //
  if(nTracklets < 4 || nTracklets > 6){
    AliError("Pion Efficiency calculation only available for 4, 5, and 6 tracklets");
    return 0.;
  }
  if(electronEff < 0.6 || electronEff > 1.){
    AliError("Pion Efficiency calculation only available in the electron efficiency range 0.6 to 1");
    return 0.;
  }
  if(pmin < 0.1 || pmin > 10 || pmax < 0.1 || pmax > 10.){
    AliError("Pion Efficiency calculation only available in the momentum range 0.1 to 10 GeV/c");
    return 0.;
  }
  if(pmax < pmin){
    AliError("pmin is expected to be >= pmax");
    return 0.;
  }

  // prerequierements fullfiled
  // prepare histos
  THnSparse *hLikeTRD = dynamic_cast<THnSparseF *>(fHistos->Get("fLikeTRD"));
  if(!hLikeTRD){
    AliError("Likelihood Histogram not available");
    return 0;
  }
  Int_t binTracklets = hLikeTRD->GetAxis(kNTracklets)->FindBin(nTracklets);
  hLikeTRD->GetAxis(kNTracklets)->SetRange(binTracklets, binTracklets);

  if(icentrality!=1){
      Int_t binCentrality = hLikeTRD->GetAxis(kCentralityBinLike)->FindBin(icentrality);
      hLikeTRD->GetAxis(kCentralityBinLike)->SetRange(binCentrality, binCentrality);
  }

  Int_t pbinMin = hLikeTRD->GetAxis(kP)->FindBin(pmax),
        pbinMax = hLikeTRD->GetAxis(kP)->FindBin(pmax);
  hLikeTRD->GetAxis(kP)->SetRange(pbinMin, pbinMax);
  Int_t binElectrons = hLikeTRD->GetAxis(kSpecies)->FindBin(AliPID::kElectron); 
  Int_t binPions = hLikeTRD->GetAxis(kSpecies)->FindBin(AliPID::kPion);
  hLikeTRD->GetAxis(kSpecies)->SetRange(binElectrons, binElectrons);
  TH1 *likeElectron = hLikeTRD->Projection(kElectronLike);
  likeElectron->Scale(1./likeElectron->Integral());
  likeElectron->SetName("likeElectron");
  hLikeTRD->GetAxis(kSpecies)->SetRange(binPions, binPions);
  TH1 *likePion = hLikeTRD->Projection(kElectronLike);
  likePion->Scale(1./likePion->Integral());
  likePion->SetName("likePion");
  
  // Undo ranges
  hLikeTRD->GetAxis(kSpecies)->SetRange(0, hLikeTRD->GetAxis(kSpecies)->GetNbins());
  hLikeTRD->GetAxis(kNTracklets)->SetRange(0, hLikeTRD->GetAxis(kNTracklets)->GetNbins());
  hLikeTRD->GetAxis(kP)->SetRange(0, hLikeTRD->GetAxis(kP)->GetNbins());

  // Do Calculation
  Int_t thresh; Double_t err;
  Double_t effpi = CalculateHadronEfficiency(likePion, likeElectron, electronEff, thresh, err);
  delete likePion; delete likeElectron;
  if(error) *error = err;
  return effpi;
}

//__________________________________________________________________
void AliHFEtrdPIDqa::DrawTracklet(Int_t itracklet, Double_t pmin, Double_t pmax, Int_t icentrality, Bool_t doFit){
  //
  // Draw efficiencies and threshold as function of p
  //
  if(!(fPionEfficiencies && fProtonEfficiencies && fThresholds)){
    AliError("No graphs to draw available");  
    return;
  }

  Char_t *listname=Form("%dTracklets", itracklet);
  if(icentrality!=-1) listname=Form("%dTracklets%dCentrality", itracklet, icentrality);

  TList *lpions = dynamic_cast<TList *>(fPionEfficiencies->FindObject(listname));
  TList *lprotons = dynamic_cast<TList *>(fProtonEfficiencies->FindObject(listname));
  
  TList *lthresholds = dynamic_cast<TList *>(fThresholds->FindObject(listname));
  if(!(lpions && lprotons && lthresholds)){
    AliDebug(1, "Relevant lists not found. Did you forget to run FinishAnalysis()?");
    return;
  }

  TGraphErrors *pi, *pr;
  TGraph *tr;
  TLegend *leg;
  Char_t *canvasname=Form("tracklet%d", itracklet);
  if(icentrality!=-1) canvasname=Form("tracklet%dcentrality%d", itracklet, icentrality);
  TCanvas *c1 = new TCanvas(canvasname, canvasname, 1024, 768);
  c1->Divide(3,2);
  TF1 *threshfit = NULL;
  for(Int_t ieff = 0; ieff < kNElectronEffs; ieff++){
    c1->cd(ieff + 1);
    gPad->SetGrid(0,0);
    gPad->SetLeftMargin(0.12);
    gPad->SetRightMargin(0.08);
    pi = dynamic_cast<TGraphErrors *>(lpions->FindObject(Form("eff%d", static_cast<Int_t>(fgkElectronEff[ieff] * 100))));
    pr = dynamic_cast<TGraphErrors *>(lprotons->FindObject(Form("eff%d", static_cast<Int_t>(fgkElectronEff[ieff] * 100))));
    tr = dynamic_cast<TGraph *>(lthresholds->FindObject(Form("eff%d", static_cast<Int_t>(fgkElectronEff[ieff] * 100))));
    if(!(pi && pr && tr)) continue;

    // Define nice plot, draw
    // Axis Title
    pi->GetXaxis()->SetTitle("p / GeV/c");
    pi->GetYaxis()->SetTitle("Efficiency");
    pr->GetXaxis()->SetTitle("p / GeV/c");
    pr->GetYaxis()->SetTitle("Efficiency");
    tr->GetXaxis()->SetTitle("p / GeV/c");
    tr->GetYaxis()->SetTitle("Efficiency");
    pi->GetYaxis()->SetTitleOffset(1.2);
    pr->GetYaxis()->SetTitleOffset(1.2);
    tr->GetYaxis()->SetTitleOffset(1.2);
    pi->GetXaxis()->SetTitleSize(0.045);
    pi->GetYaxis()->SetTitleSize(0.045);
    pr->GetXaxis()->SetTitleSize(0.045);
    pr->GetYaxis()->SetTitleSize(0.045);
    tr->GetXaxis()->SetTitleSize(0.045);
    tr->GetYaxis()->SetTitleSize(0.045);
    // Axis Range
    pi->GetYaxis()->SetRangeUser(1e-3, 1.);
    pr->GetYaxis()->SetRangeUser(1e-3, 1.);
    tr->GetYaxis()->SetRangeUser(1e-3, 1.);
    if(pmin >= 0 && pmax >= 0.){
      pi->GetXaxis()->SetRangeUser(pmin, pmax);
      pr->GetXaxis()->SetRangeUser(pmin, pmax);
      tr->GetXaxis()->SetRangeUser(pmin, pmax);
    }
    // Marker
    pi->SetMarkerColor(kRed);
    pi->SetMarkerStyle(20);
    pr->SetMarkerColor(kBlue);
    pr->SetMarkerStyle(21);
    tr->SetMarkerColor(kBlack);
    tr->SetMarkerStyle(22);
    // Title
    pi->SetTitle(Form ("%.2f Electron Efficiency", fgkElectronEff[ieff]));
    pr->SetTitle(Form ("%.2f Electron Efficiency", fgkElectronEff[ieff]));
    tr->SetTitle(Form ("%.2f Electron Efficiency", fgkElectronEff[ieff]));
    // Draw
    pi->Draw("ape"); pr->Draw("pesame"); tr->Draw("pesame");

    // Optionally do Fit
    if(doFit){
      threshfit = MakeThresholds(tr, pmin, pmax);
      threshfit->SetLineColor(kBlack);
      threshfit->Draw("same");
    }

    // Add entries to legend
    if(ieff==0){
      leg = new TLegend(0.5, 0.65, 0.89, 0.85);
      leg->SetBorderSize(0);
      leg->SetFillStyle(0);
      leg->AddEntry(pi, "Pion Efficiency", "lp");
      leg->AddEntry(pr, "Proton Efficiency", "lp");
      leg->AddEntry(tr, "Thresholds", "lp");
      leg->Draw();
      gPad->Update();
    }
  }
  c1->cd();
}

//__________________________________________________________________
TF1 *AliHFEtrdPIDqa::MakeThresholds(TGraph *threshist, Double_t lowerLimit, Double_t upperLimit){
  //
  // Create TF1 containing the threshold parametrisation
  //

  TF1 *threshparam = new TF1("thresh", "1-[0]-[1]*x-[2]*TMath::Exp(-[3]*x)", 0.1, 10);
  threshist->Fit(threshparam, "NE", "", lowerLimit, upperLimit);
  return threshparam;
}

//__________________________________________________________________
void AliHFEtrdPIDqa::ClearLists(){
  //
  // Clear lists for particle efficiencies and thresholds
  //
  if(fPionEfficiencies){
    fPionEfficiencies->Delete();
    delete fPionEfficiencies;
    fPionEfficiencies = NULL;
  }
  if(fProtonEfficiencies){
    fProtonEfficiencies->Delete();
    delete fProtonEfficiencies;
    fProtonEfficiencies = NULL;
  }
  if(fThresholds){
    fThresholds->Delete();
    delete fThresholds;
    fThresholds = NULL;
  }
}

//__________________________________________________________________
Double_t AliHFEtrdPIDqa::EvalPionEfficiency(Int_t ntls, Int_t eEff, Double_t p, Int_t icentrality){
  //
  // calculate pion efficiency
  // Arguments:
  //   Number of tracklets
  //   Electron Efficiency
  //   Momentum
  //
  TGraphErrors *measurement = GetPionEfficiency(ntls, eEff, icentrality);
  if(!measurement) return -1.;
  return measurement->Eval(p);
}

//__________________________________________________________________
Double_t AliHFEtrdPIDqa::EvalProtonEfficiency(Int_t ntls, Int_t eEff, Double_t p, Int_t icentrality){
  //
  // calculate proton efficiency
  // Arguments:
  //   Number of tracklets
  //   Electron Efficiency
  //   Momentum
  //
  TGraphErrors *measurement = GetProtonEfficiency(ntls, eEff, icentrality);
  if(!measurement) return -1.;
  return measurement->Eval(p);
}

//__________________________________________________________________
Double_t AliHFEtrdPIDqa::EvalThreshold(Int_t ntls, Int_t eEff, Double_t p, Int_t icentrality){
  //
  // Get the threshold to reach a certain electron efficiency
  // Arguments:
  //   Number of tracklets
  //   Electron Efficiency
  //   Momentum
  //
  TGraph *measurement = GetThreshold(ntls, eEff, icentrality);
  if(!measurement) return -1.;
  return measurement->Eval(p);
}

//__________________________________________________________________
TGraphErrors *AliHFEtrdPIDqa::GetPionEfficiency(Int_t ntracklets, Int_t eleffpercent, Int_t icentrality){
  //
  // Get Graph with pion efficiencies
  //
  Char_t *listname=Form("%dTracklets", ntracklets);
  if(icentrality!=-1) listname=Form("%dTracklets%dCentrality", ntracklets, icentrality);
  TList *graphs = dynamic_cast<TList *>(fPionEfficiencies->FindObject(listname));
  if(!graphs) return NULL;
  return dynamic_cast<TGraphErrors *>(graphs->FindObject(Form("eff%d", eleffpercent)));
}

//__________________________________________________________________
TGraphErrors *AliHFEtrdPIDqa::GetProtonEfficiency(Int_t ntracklets, Int_t eleffpercent, Int_t icentrality){
  // 
  // Get Graph with proton efficiencies
  //
  Char_t *listname=Form("%dTracklets", ntracklets);
  if(icentrality!=-1) listname=Form("%dTracklets%dCentrality", ntracklets, icentrality);
  TList *graphs = dynamic_cast<TList *>(fProtonEfficiencies->FindObject(listname));
  if(!graphs) return NULL;
  return dynamic_cast<TGraphErrors *>(graphs->FindObject(Form("eff%d", eleffpercent)));
}

//__________________________________________________________________
TGraph *AliHFEtrdPIDqa::GetThreshold(Int_t ntracklets, Int_t eleffpercent, Int_t icentrality){
  //
  // Get Graph with threshols
  //
  Char_t *listname=Form("%dTracklets", ntracklets);
  if(icentrality!=-1) listname=Form("%dTracklets%dCentrality", ntracklets, icentrality);
  TList *graphs = dynamic_cast<TList *>(fThresholds->FindObject(listname));
  if(!graphs) return NULL;
  return dynamic_cast<TGraph *>(graphs->FindObject(Form("eff%d", eleffpercent)));
}

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