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.                  *
**************************************************************************/
//
// Class AliHFEtrdPIDqaV1
// Monitoring TRD PID in the HFE PID montioring framework. The following
// quantities are monitored:
//   TRD electron likelihood
//   TRD dE/dx (Absolute values)
//   TPC dE/dx (Number of sigmas, control histogram)
// (Always as function of momentum, particle species and centrality 
// before and after cut)
// More information about the PID monitoring framework can be found in
// AliHFEpidQAmanager.cxx and AliHFEdetPIDqa.cxx
//
// Author:
//    Markus Fasel <M.Fasel@gsi.de>
//

#include <TAxis.h>
#include <TBrowser.h>
#include <TH2.h>
#include <THnSparse.h>
#include <TString.h>

#include "AliESDtrack.h"
#include "AliLog.h"
#include "AliPID.h"
#include "AliPIDResponse.h"

#include "AliHFEcollection.h"
#include "AliHFEpidBase.h"
#include "AliHFEpidQAmanager.h"
#include "AliHFEpidTPC.h"
#include "AliHFEpidTRD.h"
#include "AliHFEtrdPIDqaV1.h"

ClassImp(AliHFEtrdPIDqaV1)

//____________________________________________________________
AliHFEtrdPIDqaV1::AliHFEtrdPIDqaV1():
    AliHFEdetPIDqa(),
    fHistos(NULL)
{
  //
  // Dummy constructor
  //
}

//____________________________________________________________
AliHFEtrdPIDqaV1::AliHFEtrdPIDqaV1(const Char_t *name):
    AliHFEdetPIDqa(name, "QA for TRD"),
    fHistos(NULL)
{
  //
  // Default constructor
  //
}

//____________________________________________________________
AliHFEtrdPIDqaV1::AliHFEtrdPIDqaV1(const AliHFEtrdPIDqaV1 &o):
    AliHFEdetPIDqa(o),
    fHistos(NULL)
{
  //
  // Copy constructor
  //
}

//____________________________________________________________
AliHFEtrdPIDqaV1 &AliHFEtrdPIDqaV1::operator=(const AliHFEtrdPIDqaV1 &o){
  //
  // Make assignment
  //
  if(this == &o) return *this;
  AliHFEdetPIDqa::operator=(o);
  fHistos = o.fHistos;
  
  return *this;
}
//____________________________________________________________
AliHFEtrdPIDqaV1::~AliHFEtrdPIDqaV1(){
  //
  // Deconstructor
  //
  if(fHistos) delete fHistos;

}
//_________________________________________________________
Long64_t AliHFEtrdPIDqaV1::Merge(TCollection *coll){
  //
  // Merge with other objects
  //
  if(!coll) return 0;
  if(coll->IsEmpty()) return 1;

  TIter it(coll);
  AliHFEtrdPIDqaV1 *refQA = NULL;
  TObject *o = NULL;
  Long64_t count = 0;
  TList listHistos;
  while((o = it())){
    refQA = dynamic_cast<AliHFEtrdPIDqaV1 *>(o);
    if(!refQA) continue;

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

//_________________________________________________________
void AliHFEtrdPIDqaV1::Browse(TBrowser *b){
  //
  // Browse the PID QA
  //
  if(b){
    if(fHistos){
      b->Add(fHistos, fHistos->GetName());

      // Make Projections of the dE/dx Spectra and add them to a new Folder
      TString specnames[4] = {"All", "Electrons", "Pions", "Protons"};
      Int_t specind[4] = {-1, AliPID::kElectron, AliPID::kPion, AliPID::kProton};
      TList *listTM = new TList;
      listTM->SetOwner();
      TList *listLike = new TList;
      listLike->SetOwner();
      TList *listCharge = new TList;
      listCharge->SetOwner();
      TList *listTPCnsigma = new TList;
      listTPCnsigma->SetOwner();

      TH2 *hptr = NULL; 
      TList *lctm, *lclike, *lccharge, *lcTPCsig;
      for(Int_t icent = -1; icent < 11; icent++){
        lctm = new TList;
        lctm->SetName(icent < 0 ? "MinBias" : Form("Centrality%d", icent));
        lctm->SetOwner();
        listTM->Add(lctm);
        lclike = new TList;
        lclike->SetName(icent < 0 ? "MinBias" : Form("Centrality%d", icent));
        lclike->SetOwner();
        listLike->Add(lclike);
        lccharge = new TList;
        lccharge->SetName(icent < 0 ? "MinBias" : Form("Centrality%d", icent));
        lccharge->SetOwner();
        listCharge->Add(lccharge);
        lcTPCsig = new TList;
        lcTPCsig->SetName(icent < 0 ? "MinBias" : Form("Centrality%d", icent));
        lcTPCsig->SetOwner();
        listTPCnsigma->Add(lcTPCsig);
        for(Int_t ispec = 0; ispec < 4; ispec++){
          for(Int_t istep = 0; istep < 2; istep++){
            hptr = MakeTRDspectrumTM(static_cast<AliHFEdetPIDqa::EStep_t>(istep), specind[ispec], icent);
            if(hptr){
              hptr->SetName(Form("hTRDtm%s%s", specnames[ispec].Data(), istep == 0 ? "Before" : "After"));
              lctm->Add(hptr);
            }
            hptr = MakeTRDlikelihoodDistribution(static_cast<AliHFEdetPIDqa::EStep_t>(istep), specind[ispec], icent);
            hptr->SetName(Form("hTRDlike%s%s", specnames[ispec].Data(), istep == 0 ? "Before" : "After"));
            lclike->Add(hptr);
            hptr = MakeTRDchargeDistribution(static_cast<AliHFEdetPIDqa::EStep_t>(istep), specind[ispec], icent);
            hptr->SetName(Form("hTRDcharge%s%s", specnames[ispec].Data(), istep == 0 ? "Before" : "After"));
            lccharge->Add(hptr);
            hptr = MakeTPCspectrumNsigma(static_cast<AliHFEdetPIDqa::EStep_t>(istep), specind[ispec], icent);
            hptr->SetName(Form("hTPCspectrum%s%s", specnames[ispec].Data(), istep == 0 ? "Before" : "After"));
            lcTPCsig->Add(hptr);
          }
        }
      }
        
      b->Add(listTM, "Projections Truncated Mean");
      b->Add(listLike, "Projections Likelihood distribution");
      b->Add(listCharge, "Projections Tracklet Charge");
      b->Add(listTPCnsigma, "Projections TPC spectra");
    }
  }
}

//____________________________________________________________
void AliHFEtrdPIDqaV1::Initialize(){
  //
  // Initialize QA histos for TRD PID
  //

  AliDebug(1, "Initializing PID QA for TRD");
  // Make common binning
  const Int_t kPIDbins = AliPID::kSPECIES + 1;
  const Int_t kSteps = 2;
  const Double_t kMinPID = -1;
  const Double_t kMinP = 0.;
  const Double_t kMaxPID = (Double_t)AliPID::kSPECIES;
  const Double_t kMaxP = 20.;
  const Int_t kCentralityBins = 11;

  // Define number of bins 
  Int_t kPbins = fQAmanager->HasHighResolutionHistos() ? 1000 : 100;
  Int_t tpcSigmaBins = fQAmanager->HasHighResolutionHistos() ? 1400 : 140;
  Int_t trdLikelihoodBins = fQAmanager->HasHighResolutionHistos() ? 200 : 100;

  fHistos = new AliHFEcollection("trdqahistos", "Collection of TRD QA histograms");
  
  // Create Control Histogram monitoring the TPC sigma between the selection steps
  Int_t nBinsTPCSigma[5] = {kPIDbins, kPbins, tpcSigmaBins, kSteps, kCentralityBins};
  Double_t minTPCSigma[5] = {kMinPID, kMinP, -12., 0., 0.};
  Double_t maxTPCSigma[5] = {kMaxPID, kMaxP, 12., 2., 11.};
  fHistos->CreateTHnSparse("hTPCsigma", "TPC sigma; species p [GeV/c]; TPC dEdx - <dE/dx>|_{el} [#sigma]; selection step", 5, nBinsTPCSigma, minTPCSigma, maxTPCSigma);
  fHistos->Sumw2("hTPCsigma");
  // Create Monitoring histogram for the Likelihood distribution
  Int_t nBinsTRDlike[5] = {kPIDbins, kPbins, trdLikelihoodBins, kSteps, kCentralityBins};
  Double_t minTRDlike[5] = {kMinPID, kMinP, 0., 0., 0.};
  Double_t maxTRDlike[5] = {kMaxPID, kMaxP, 1., 2., 11.};
  fHistos->CreateTHnSparse("hTRDlikelihood", "TRD Likelihood Distribution; species; p [GeV/c]; TRD electron Likelihood; selection step", 5, nBinsTRDlike, minTRDlike, maxTRDlike);
  fHistos->Sumw2("hTRDlikelihood");
  // Create Monitoring histogram for the TRD total charge
  const Int_t kTRDchargeBins = 1000;
  Int_t nBinsTRDcharge[5] = {kPIDbins, kPbins, kTRDchargeBins, kSteps, kCentralityBins};
  Double_t minTRDcharge[5] = {kMinPID, kMinP, 0., 0., 0.};
  Double_t maxTRDcharge[5] = {kMaxPID, kMaxP, 100000., 2., 11.};
  fHistos->CreateTHnSparse("hTRDcharge", "Total TRD charge; species; p [GeV/c]; TRD charge [a.u.]; selection step", 5, nBinsTRDcharge, minTRDcharge, maxTRDcharge);
  fHistos->Sumw2("hTRDcharge");
  // Monitoring of the TRD truncated mean according to version 1
  const Int_t kTRDtmBins = 1000;
  Int_t nBinsTRDtm[5] = {kPIDbins, kPbins, kTRDtmBins, kSteps, kCentralityBins};
  Double_t minTRDtm[5] = {kMinPID, kMinP, 0., 0., 0.};
  Double_t maxTRDtm[5] = {kMaxPID, kMaxP, 20000., 2., 11.};
  fHistos->CreateTHnSparse("hTRDtruncatedMean", "TRD truncated Mean; species; p [GeV/c]; TRD signal [a.u.]; selection step", 5, nBinsTRDtm, minTRDtm, maxTRDtm);
  fHistos->Sumw2("hTRDtruncatedMean");

  // Monitoring of the number of tracklets
  fHistos->CreateTH2F("hNtrackletsBefore", "Number of tracklets before PID; species; p (GeV/c), Number of Tracklets", kPbins, kMinP, kMaxP, 7, 0., 7.);
  fHistos->Sumw2("hNtrackletsBefore");
  fHistos->CreateTH2F("hNtrackletsAfter", "Number of tracklets after PID; species; p (GeV/c), Number of Tracklets", kPbins, kMinP, kMaxP, 7, 0., 7.);
  fHistos->Sumw2("hNtrackletsAfter");
}

//____________________________________________________________
void AliHFEtrdPIDqaV1::ProcessTrack(const AliHFEpidObject *track, AliHFEdetPIDqa::EStep_t step){
  //
  // Process the track, fill the containers 
  //
  AliDebug(1, Form("QA started for TRD PID for step %d", (Int_t)step));
  Int_t species = track->GetAbInitioPID();
  if(species >= AliPID::kSPECIES) species = -1;
  AliHFEpidObject::AnalysisType_t anatype = track->IsESDanalysis() ? AliHFEpidObject::kESDanalysis : AliHFEpidObject::kAODanalysis;

  AliHFEpidTRD *trdpid = dynamic_cast<AliHFEpidTRD *>(fQAmanager->GetDetectorPID(AliHFEpid::kTRDpid));
  const AliPIDResponse *pidResponse = trdpid ? trdpid->GetPIDResponse() : NULL;
 
  Double_t container[5];
  container[0] = species;
  container[1] = trdpid ? trdpid->GetP(track->GetRecTrack(), anatype) : 0.;
  container[2] = pidResponse ? pidResponse->NumberOfSigmasTPC(track->GetRecTrack(), AliPID::kElectron) : 0.;
  container[3] = step;
  container[4] = track->GetCentrality();
  AliDebug(1, Form("Species %d, p %f, number of sigma TPC %f, step %f, centrality %f", (Int_t)species,(Float_t) container[1],(Float_t) container[2],(Float_t) container[3],(Float_t) container[4]));
  fHistos->Fill("hTPCsigma", container);
  AliDebug(1, "Filled  TPC sigma\n");



  container[2] = trdpid ? trdpid->GetElectronLikelihood(static_cast<const AliVTrack*>(track->GetRecTrack()), anatype) : 0;
  fHistos->Fill("hTRDlikelihood", container);
  AliDebug(1, "Filled likelihood\n");

  if(track->IsESDanalysis()){
    const AliESDtrack *esdtrack = dynamic_cast<const AliESDtrack *>(track->GetRecTrack());
    if(esdtrack){
      container[2] = trdpid ? trdpid->GetTRDSignalV1(esdtrack) : 0;
      fHistos->Fill("hTRDtruncatedMean", container);
    }
  }
  for(UInt_t ily = 0; ily < 6; ily++){
    container[2] = trdpid ? trdpid->GetChargeLayer(track->GetRecTrack(), ily, anatype) : 0;
    if(container[2] < 1e-3) continue; // Filter out 0 entries
    fHistos->Fill("hTRDcharge", container);
    AliDebug(1, "Filled TRD charge\n");
  }

  Int_t ntracklets = track->GetRecTrack()->GetTRDntrackletsPID();
  if(step == AliHFEdetPIDqa::kBeforePID)
    fHistos->Fill("hNtrackletsBefore", trdpid ? trdpid->GetP(track->GetRecTrack(), anatype) : 0., ntracklets);
  else
    fHistos->Fill("hNtrackletsAfter", trdpid ? trdpid->GetP(track->GetRecTrack(), anatype) : 0., ntracklets);
  AliDebug(1, "Filled tracklet\n");
}

//_________________________________________________________
TH2 *AliHFEtrdPIDqaV1::MakeTPCspectrumNsigma(AliHFEdetPIDqa::EStep_t step, Int_t species, Int_t centralityClass){
  //
  // Get the TPC control histogram for the TRD selection step (either before or after PID)
  //
  THnSparseF *histo = dynamic_cast<THnSparseF *>(fHistos->Get("hTPCsigma"));
  if(!histo){
    AliError("QA histogram monitoring TPC nSigma not available");
    return NULL;
  }
  if(species > -1 && species < AliPID::kSPECIES){
    // cut on species (if available)
    histo->GetAxis(0)->SetRange(species + 2, species + 2); // undef + underflow
  }
  TString centname, centtitle;
  Bool_t hasCentralityInfo = kTRUE;
  if(centralityClass > -1){
    if(histo->GetNdimensions() < 5){
      AliError("Centrality Information not available");
      centname = centtitle = "MinBias";
      hasCentralityInfo = kFALSE;
    } else {
      // Project centrality classes
      // -1 is Min. Bias
      histo->GetAxis(4)->SetRange(centralityClass+1, centralityClass+1);
      centname = Form("Cent%d", centralityClass);
      centtitle = Form("Centrality %d", centralityClass);
    }
  } else {
    histo->GetAxis(4)->SetRange(1, histo->GetAxis(4)->GetNbins()-1);
    centname = centtitle = "MinBias";
    hasCentralityInfo = kTRUE;
  }
  histo->GetAxis(3)->SetRange(step + 1, step + 1); 

  TH2 *hSpec = histo->Projection(2, 1);
  // construct title and name
  TString stepname = step == AliHFEdetPIDqa::kBeforePID ? "before" : "after";
  TString speciesname = species > -1 && species < AliPID::kSPECIES ? AliPID::ParticleName(species) : "all Particles";
  TString specID = species > -1 && species < AliPID::kSPECIES ? AliPID::ParticleName(species) : "unid";
  TString histname = Form("hSigmaTPC%s%s%s", specID.Data(), stepname.Data(), centname.Data());
  TString histtitle = Form("TPC Sigma for %s %s PID %s", speciesname.Data(), stepname.Data(), centtitle.Data());
  hSpec->SetName(histname.Data());
  hSpec->SetTitle(histtitle.Data());

  // Unset range on the original histogram
  histo->GetAxis(0)->SetRange(0, histo->GetAxis(0)->GetNbins());
  histo->GetAxis(3)->SetRange(0, histo->GetAxis(3)->GetNbins());
  if(hasCentralityInfo)histo->GetAxis(4)->SetRange(0, histo->GetAxis(4)->GetNbins());
  return hSpec; 
}

//_________________________________________________________
TH2 *AliHFEtrdPIDqaV1::MakeTRDspectrumTM(AliHFEdetPIDqa::EStep_t step, Int_t species, Int_t centralityClass){
  //
  // Get the TPC control histogram for the TRD selection step (either before or after PID)
  //
  THnSparseF *histo = dynamic_cast<THnSparseF *>(fHistos->Get("hTRDtruncatedMean"));
  if(!histo){
    AliError("QA histogram monitoring TPC nSigma not available");
    return NULL;
  }
  if(species > -1 && species < AliPID::kSPECIES){
    // cut on species (if available)
    histo->GetAxis(0)->SetRange(species + 2, species + 2); // undef + underflow
  }
  TString centname, centtitle;
  Bool_t hasCentralityInfo = kTRUE;
  if(centralityClass > -1){
     if(histo->GetNdimensions() < 5){
      AliError("Centrality Information not available");
      centname = centtitle = "MinBias";
      hasCentralityInfo= kFALSE;
    } else {
      // Project centrality classes
      // -1 is Min. Bias
      histo->GetAxis(4)->SetRange(centralityClass+1, centralityClass+1);
      centname = Form("Cent%d", centralityClass);
      centtitle = Form("Centrality %d", centralityClass);
    }
  } else {
    histo->GetAxis(4)->SetRange(1, histo->GetAxis(4)->GetNbins()-1);
    centname = centtitle = "MinBias";
    hasCentralityInfo= kFALSE;
  }
  histo->GetAxis(3)->SetRange(step + 1, step + 1); 

  TH2 *hSpec = histo->Projection(2, 1);
  // construct title and name
  TString stepname = step == AliHFEdetPIDqa::kBeforePID ? "before" : "after";
  TString speciesname = species > -1 && species < AliPID::kSPECIES ? AliPID::ParticleName(species) : "all Particles";
  TString specID = species > -1 && species < AliPID::kSPECIES ? AliPID::ParticleName(species) : "unid";
  TString histname = Form("hTMTRD%s%s%s", specID.Data(), stepname.Data(), centname.Data());
  TString histtitle = Form("TRD Truncated Mean for %s %s PID %s", speciesname.Data(), stepname.Data(), centtitle.Data());
  hSpec->SetName(histname.Data());
  hSpec->SetTitle(histtitle.Data());

  // Unset range on the original histogram
  histo->GetAxis(0)->SetRange(0, histo->GetAxis(0)->GetNbins());
  histo->GetAxis(2)->SetRange(0, histo->GetAxis(2)->GetNbins());
  if(hasCentralityInfo)histo->GetAxis(4)->SetRange(0, histo->GetAxis(4)->GetNbins());
  return hSpec; 
}

//_________________________________________________________
TH2 *AliHFEtrdPIDqaV1::MakeTRDlikelihoodDistribution(AliHFEdetPIDqa::EStep_t step, Int_t species, Int_t centralityClass){
  //
  // Make Histogram for TRD Likelihood distribution
  //
  THnSparseF *histo = dynamic_cast<THnSparseF *>(fHistos->Get("hTRDlikelihood"));
  if(!histo){
    AliError("QA histogram monitoring TRD Electron Likelihood not available");
    return NULL;
  }
  if(species > -1 && species < AliPID::kSPECIES){
    // cut on species (if available)
    histo->GetAxis(0)->SetRange(species + 2, species + 2); // undef + underflow
  }
  TString centname, centtitle;
  Bool_t hasCentralityInfo = kTRUE;
  if(centralityClass > -1){
    if(histo->GetNdimensions() < 5){
      AliError("Centrality Information not available");
      centname = centtitle = "MinBias";
      hasCentralityInfo= kFALSE;
    } else {
      // Project centrality classes
      // -1 is Min. Bias
      histo->GetAxis(4)->SetRange(centralityClass+1, centralityClass+1);
      centname = Form("Cent%d", centralityClass);
      centtitle = Form("Centrality %d", centralityClass);
    }
  } else {
    histo->GetAxis(4)->SetRange(1, histo->GetAxis(4)->GetNbins()-1);
    centname = centtitle = "MinBias";
    hasCentralityInfo= kTRUE;
  }
  histo->GetAxis(3)->SetRange(step + 1, step + 1);

  TH2 *hSpec = histo->Projection(2, 1);
  // construct title and name
  TString stepname = step == AliHFEdetPIDqa::kBeforePID ? "before" : "after";
  TString speciesname = species > -1 && species < AliPID::kSPECIES ? AliPID::ParticleName(species) : "all Particles";
  TString specID = species > -1 && species < AliPID::kSPECIES ? AliPID::ParticleName(species) : "unid";
  TString histname = Form("hLikeElTRD%s%s%s", specID.Data(), stepname.Data(),centname.Data());
  TString histtitle = Form("TRD electron Likelihood for %s %s PID %s", speciesname.Data(), stepname.Data(),centtitle.Data());
  hSpec->SetName(histname.Data());
  hSpec->SetTitle(histtitle.Data());

  // Unset range on the original histogram
  histo->GetAxis(0)->SetRange(0, histo->GetAxis(0)->GetNbins());
  histo->GetAxis(2)->SetRange(0, histo->GetAxis(2)->GetNbins());
  if(hasCentralityInfo)histo->GetAxis(4)->SetRange(0, histo->GetAxis(4)->GetNbins());
  return hSpec; 
}

//_________________________________________________________
TH2 *AliHFEtrdPIDqaV1::MakeTRDchargeDistribution(AliHFEdetPIDqa::EStep_t step, Int_t species, Int_t centralityClass){
  //
  // Make Histogram for TRD Likelihood distribution
  //
  THnSparseF *histo = dynamic_cast<THnSparseF *>(fHistos->Get("hTRDcharge"));
  if(!histo){
    AliError("QA histogram monitoring TRD total charge not available");
    return NULL;
  }
  if(species > -1 && species < AliPID::kSPECIES){
    // cut on species (if available)
    histo->GetAxis(0)->SetRange(species + 2, species + 2); // undef + underflow
  }
  TString centname, centtitle;
  Bool_t hasCentralityInfo = kTRUE;
  if(centralityClass > -1){
    if(histo->GetNdimensions() < 5){
      AliError("Centrality Information not available");
      centname = centtitle = "MinBias";
      hasCentralityInfo= kFALSE;
    } else {
      // Project centrality classes
      // -1 is Min. Bias
      histo->GetAxis(4)->SetRange(centralityClass+1, centralityClass+1);
      centname = Form("Cent%d", centralityClass);
      centtitle = Form("Centrality %d", centralityClass);
    }
  } else {
    histo->GetAxis(4)->SetRange(1, histo->GetAxis(4)->GetNbins()-1);
    centname = centtitle = "MinBias";
    hasCentralityInfo= kTRUE;
  }
  histo->GetAxis(3)->SetRange(step + 1, step + 1);

  TH2 *hSpec = histo->Projection(2, 1);
  // construct title and name
  TString stepname = step == AliHFEdetPIDqa::kBeforePID ? "before" : "after";
  TString speciesname = species > -1 && species < AliPID::kSPECIES ? AliPID::ParticleName(species) : "all Particles";
  TString specID = species > -1 && species < AliPID::kSPECIES ? AliPID::ParticleName(species) : "unid";
  TString histname = Form("hChargeTRD%s%s%s", specID.Data(), stepname.Data(), centname.Data());
  TString histtitle = Form("TRD total charge for %s %s PID %s", speciesname.Data(), stepname.Data(), centtitle.Data());
  hSpec->SetName(histname.Data());
  hSpec->SetTitle(histtitle.Data());

  // Unset range on the original histogram
  histo->GetAxis(0)->SetRange(0, histo->GetAxis(0)->GetNbins());
  histo->GetAxis(2)->SetRange(0, histo->GetAxis(2)->GetNbins());
  if(hasCentralityInfo)histo->GetAxis(4)->SetRange(0, histo->GetAxis(4)->GetNbins());
  return hSpec; 
}

 AliHFEtrdPIDqaV1.cxx:1
 AliHFEtrdPIDqaV1.cxx:2
 AliHFEtrdPIDqaV1.cxx:3
 AliHFEtrdPIDqaV1.cxx:4
 AliHFEtrdPIDqaV1.cxx:5
 AliHFEtrdPIDqaV1.cxx:6
 AliHFEtrdPIDqaV1.cxx:7
 AliHFEtrdPIDqaV1.cxx:8
 AliHFEtrdPIDqaV1.cxx:9
 AliHFEtrdPIDqaV1.cxx:10
 AliHFEtrdPIDqaV1.cxx:11
 AliHFEtrdPIDqaV1.cxx:12
 AliHFEtrdPIDqaV1.cxx:13
 AliHFEtrdPIDqaV1.cxx:14
 AliHFEtrdPIDqaV1.cxx:15
 AliHFEtrdPIDqaV1.cxx:16
 AliHFEtrdPIDqaV1.cxx:17
 AliHFEtrdPIDqaV1.cxx:18
 AliHFEtrdPIDqaV1.cxx:19
 AliHFEtrdPIDqaV1.cxx:20
 AliHFEtrdPIDqaV1.cxx:21
 AliHFEtrdPIDqaV1.cxx:22
 AliHFEtrdPIDqaV1.cxx:23
 AliHFEtrdPIDqaV1.cxx:24
 AliHFEtrdPIDqaV1.cxx:25
 AliHFEtrdPIDqaV1.cxx:26
 AliHFEtrdPIDqaV1.cxx:27
 AliHFEtrdPIDqaV1.cxx:28
 AliHFEtrdPIDqaV1.cxx:29
 AliHFEtrdPIDqaV1.cxx:30
 AliHFEtrdPIDqaV1.cxx:31
 AliHFEtrdPIDqaV1.cxx:32
 AliHFEtrdPIDqaV1.cxx:33
 AliHFEtrdPIDqaV1.cxx:34
 AliHFEtrdPIDqaV1.cxx:35
 AliHFEtrdPIDqaV1.cxx:36
 AliHFEtrdPIDqaV1.cxx:37
 AliHFEtrdPIDqaV1.cxx:38
 AliHFEtrdPIDqaV1.cxx:39
 AliHFEtrdPIDqaV1.cxx:40
 AliHFEtrdPIDqaV1.cxx:41
 AliHFEtrdPIDqaV1.cxx:42
 AliHFEtrdPIDqaV1.cxx:43
 AliHFEtrdPIDqaV1.cxx:44
 AliHFEtrdPIDqaV1.cxx:45
 AliHFEtrdPIDqaV1.cxx:46
 AliHFEtrdPIDqaV1.cxx:47
 AliHFEtrdPIDqaV1.cxx:48
 AliHFEtrdPIDqaV1.cxx:49
 AliHFEtrdPIDqaV1.cxx:50
 AliHFEtrdPIDqaV1.cxx:51
 AliHFEtrdPIDqaV1.cxx:52
 AliHFEtrdPIDqaV1.cxx:53
 AliHFEtrdPIDqaV1.cxx:54
 AliHFEtrdPIDqaV1.cxx:55
 AliHFEtrdPIDqaV1.cxx:56
 AliHFEtrdPIDqaV1.cxx:57
 AliHFEtrdPIDqaV1.cxx:58
 AliHFEtrdPIDqaV1.cxx:59
 AliHFEtrdPIDqaV1.cxx:60
 AliHFEtrdPIDqaV1.cxx:61
 AliHFEtrdPIDqaV1.cxx:62
 AliHFEtrdPIDqaV1.cxx:63
 AliHFEtrdPIDqaV1.cxx:64
 AliHFEtrdPIDqaV1.cxx:65
 AliHFEtrdPIDqaV1.cxx:66
 AliHFEtrdPIDqaV1.cxx:67
 AliHFEtrdPIDqaV1.cxx:68
 AliHFEtrdPIDqaV1.cxx:69
 AliHFEtrdPIDqaV1.cxx:70
 AliHFEtrdPIDqaV1.cxx:71
 AliHFEtrdPIDqaV1.cxx:72
 AliHFEtrdPIDqaV1.cxx:73
 AliHFEtrdPIDqaV1.cxx:74
 AliHFEtrdPIDqaV1.cxx:75
 AliHFEtrdPIDqaV1.cxx:76
 AliHFEtrdPIDqaV1.cxx:77
 AliHFEtrdPIDqaV1.cxx:78
 AliHFEtrdPIDqaV1.cxx:79
 AliHFEtrdPIDqaV1.cxx:80
 AliHFEtrdPIDqaV1.cxx:81
 AliHFEtrdPIDqaV1.cxx:82
 AliHFEtrdPIDqaV1.cxx:83
 AliHFEtrdPIDqaV1.cxx:84
 AliHFEtrdPIDqaV1.cxx:85
 AliHFEtrdPIDqaV1.cxx:86
 AliHFEtrdPIDqaV1.cxx:87
 AliHFEtrdPIDqaV1.cxx:88
 AliHFEtrdPIDqaV1.cxx:89
 AliHFEtrdPIDqaV1.cxx:90
 AliHFEtrdPIDqaV1.cxx:91
 AliHFEtrdPIDqaV1.cxx:92
 AliHFEtrdPIDqaV1.cxx:93
 AliHFEtrdPIDqaV1.cxx:94
 AliHFEtrdPIDqaV1.cxx:95
 AliHFEtrdPIDqaV1.cxx:96
 AliHFEtrdPIDqaV1.cxx:97
 AliHFEtrdPIDqaV1.cxx:98
 AliHFEtrdPIDqaV1.cxx:99
 AliHFEtrdPIDqaV1.cxx:100
 AliHFEtrdPIDqaV1.cxx:101
 AliHFEtrdPIDqaV1.cxx:102
 AliHFEtrdPIDqaV1.cxx:103
 AliHFEtrdPIDqaV1.cxx:104
 AliHFEtrdPIDqaV1.cxx:105
 AliHFEtrdPIDqaV1.cxx:106
 AliHFEtrdPIDqaV1.cxx:107
 AliHFEtrdPIDqaV1.cxx:108
 AliHFEtrdPIDqaV1.cxx:109
 AliHFEtrdPIDqaV1.cxx:110
 AliHFEtrdPIDqaV1.cxx:111
 AliHFEtrdPIDqaV1.cxx:112
 AliHFEtrdPIDqaV1.cxx:113
 AliHFEtrdPIDqaV1.cxx:114
 AliHFEtrdPIDqaV1.cxx:115
 AliHFEtrdPIDqaV1.cxx:116
 AliHFEtrdPIDqaV1.cxx:117
 AliHFEtrdPIDqaV1.cxx:118
 AliHFEtrdPIDqaV1.cxx:119
 AliHFEtrdPIDqaV1.cxx:120
 AliHFEtrdPIDqaV1.cxx:121
 AliHFEtrdPIDqaV1.cxx:122
 AliHFEtrdPIDqaV1.cxx:123
 AliHFEtrdPIDqaV1.cxx:124
 AliHFEtrdPIDqaV1.cxx:125
 AliHFEtrdPIDqaV1.cxx:126
 AliHFEtrdPIDqaV1.cxx:127
 AliHFEtrdPIDqaV1.cxx:128
 AliHFEtrdPIDqaV1.cxx:129
 AliHFEtrdPIDqaV1.cxx:130
 AliHFEtrdPIDqaV1.cxx:131
 AliHFEtrdPIDqaV1.cxx:132
 AliHFEtrdPIDqaV1.cxx:133
 AliHFEtrdPIDqaV1.cxx:134
 AliHFEtrdPIDqaV1.cxx:135
 AliHFEtrdPIDqaV1.cxx:136
 AliHFEtrdPIDqaV1.cxx:137
 AliHFEtrdPIDqaV1.cxx:138
 AliHFEtrdPIDqaV1.cxx:139
 AliHFEtrdPIDqaV1.cxx:140
 AliHFEtrdPIDqaV1.cxx:141
 AliHFEtrdPIDqaV1.cxx:142
 AliHFEtrdPIDqaV1.cxx:143
 AliHFEtrdPIDqaV1.cxx:144
 AliHFEtrdPIDqaV1.cxx:145
 AliHFEtrdPIDqaV1.cxx:146
 AliHFEtrdPIDqaV1.cxx:147
 AliHFEtrdPIDqaV1.cxx:148
 AliHFEtrdPIDqaV1.cxx:149
 AliHFEtrdPIDqaV1.cxx:150
 AliHFEtrdPIDqaV1.cxx:151
 AliHFEtrdPIDqaV1.cxx:152
 AliHFEtrdPIDqaV1.cxx:153
 AliHFEtrdPIDqaV1.cxx:154
 AliHFEtrdPIDqaV1.cxx:155
 AliHFEtrdPIDqaV1.cxx:156
 AliHFEtrdPIDqaV1.cxx:157
 AliHFEtrdPIDqaV1.cxx:158
 AliHFEtrdPIDqaV1.cxx:159
 AliHFEtrdPIDqaV1.cxx:160
 AliHFEtrdPIDqaV1.cxx:161
 AliHFEtrdPIDqaV1.cxx:162
 AliHFEtrdPIDqaV1.cxx:163
 AliHFEtrdPIDqaV1.cxx:164
 AliHFEtrdPIDqaV1.cxx:165
 AliHFEtrdPIDqaV1.cxx:166
 AliHFEtrdPIDqaV1.cxx:167
 AliHFEtrdPIDqaV1.cxx:168
 AliHFEtrdPIDqaV1.cxx:169
 AliHFEtrdPIDqaV1.cxx:170
 AliHFEtrdPIDqaV1.cxx:171
 AliHFEtrdPIDqaV1.cxx:172
 AliHFEtrdPIDqaV1.cxx:173
 AliHFEtrdPIDqaV1.cxx:174
 AliHFEtrdPIDqaV1.cxx:175
 AliHFEtrdPIDqaV1.cxx:176
 AliHFEtrdPIDqaV1.cxx:177
 AliHFEtrdPIDqaV1.cxx:178
 AliHFEtrdPIDqaV1.cxx:179
 AliHFEtrdPIDqaV1.cxx:180
 AliHFEtrdPIDqaV1.cxx:181
 AliHFEtrdPIDqaV1.cxx:182
 AliHFEtrdPIDqaV1.cxx:183
 AliHFEtrdPIDqaV1.cxx:184
 AliHFEtrdPIDqaV1.cxx:185
 AliHFEtrdPIDqaV1.cxx:186
 AliHFEtrdPIDqaV1.cxx:187
 AliHFEtrdPIDqaV1.cxx:188
 AliHFEtrdPIDqaV1.cxx:189
 AliHFEtrdPIDqaV1.cxx:190
 AliHFEtrdPIDqaV1.cxx:191
 AliHFEtrdPIDqaV1.cxx:192
 AliHFEtrdPIDqaV1.cxx:193
 AliHFEtrdPIDqaV1.cxx:194
 AliHFEtrdPIDqaV1.cxx:195
 AliHFEtrdPIDqaV1.cxx:196
 AliHFEtrdPIDqaV1.cxx:197
 AliHFEtrdPIDqaV1.cxx:198
 AliHFEtrdPIDqaV1.cxx:199
 AliHFEtrdPIDqaV1.cxx:200
 AliHFEtrdPIDqaV1.cxx:201
 AliHFEtrdPIDqaV1.cxx:202
 AliHFEtrdPIDqaV1.cxx:203
 AliHFEtrdPIDqaV1.cxx:204
 AliHFEtrdPIDqaV1.cxx:205
 AliHFEtrdPIDqaV1.cxx:206
 AliHFEtrdPIDqaV1.cxx:207
 AliHFEtrdPIDqaV1.cxx:208
 AliHFEtrdPIDqaV1.cxx:209
 AliHFEtrdPIDqaV1.cxx:210
 AliHFEtrdPIDqaV1.cxx:211
 AliHFEtrdPIDqaV1.cxx:212
 AliHFEtrdPIDqaV1.cxx:213
 AliHFEtrdPIDqaV1.cxx:214
 AliHFEtrdPIDqaV1.cxx:215
 AliHFEtrdPIDqaV1.cxx:216
 AliHFEtrdPIDqaV1.cxx:217
 AliHFEtrdPIDqaV1.cxx:218
 AliHFEtrdPIDqaV1.cxx:219
 AliHFEtrdPIDqaV1.cxx:220
 AliHFEtrdPIDqaV1.cxx:221
 AliHFEtrdPIDqaV1.cxx:222
 AliHFEtrdPIDqaV1.cxx:223
 AliHFEtrdPIDqaV1.cxx:224
 AliHFEtrdPIDqaV1.cxx:225
 AliHFEtrdPIDqaV1.cxx:226
 AliHFEtrdPIDqaV1.cxx:227
 AliHFEtrdPIDqaV1.cxx:228
 AliHFEtrdPIDqaV1.cxx:229
 AliHFEtrdPIDqaV1.cxx:230
 AliHFEtrdPIDqaV1.cxx:231
 AliHFEtrdPIDqaV1.cxx:232
 AliHFEtrdPIDqaV1.cxx:233
 AliHFEtrdPIDqaV1.cxx:234
 AliHFEtrdPIDqaV1.cxx:235
 AliHFEtrdPIDqaV1.cxx:236
 AliHFEtrdPIDqaV1.cxx:237
 AliHFEtrdPIDqaV1.cxx:238
 AliHFEtrdPIDqaV1.cxx:239
 AliHFEtrdPIDqaV1.cxx:240
 AliHFEtrdPIDqaV1.cxx:241
 AliHFEtrdPIDqaV1.cxx:242
 AliHFEtrdPIDqaV1.cxx:243
 AliHFEtrdPIDqaV1.cxx:244
 AliHFEtrdPIDqaV1.cxx:245
 AliHFEtrdPIDqaV1.cxx:246
 AliHFEtrdPIDqaV1.cxx:247
 AliHFEtrdPIDqaV1.cxx:248
 AliHFEtrdPIDqaV1.cxx:249
 AliHFEtrdPIDqaV1.cxx:250
 AliHFEtrdPIDqaV1.cxx:251
 AliHFEtrdPIDqaV1.cxx:252
 AliHFEtrdPIDqaV1.cxx:253
 AliHFEtrdPIDqaV1.cxx:254
 AliHFEtrdPIDqaV1.cxx:255
 AliHFEtrdPIDqaV1.cxx:256
 AliHFEtrdPIDqaV1.cxx:257
 AliHFEtrdPIDqaV1.cxx:258
 AliHFEtrdPIDqaV1.cxx:259
 AliHFEtrdPIDqaV1.cxx:260
 AliHFEtrdPIDqaV1.cxx:261
 AliHFEtrdPIDqaV1.cxx:262
 AliHFEtrdPIDqaV1.cxx:263
 AliHFEtrdPIDqaV1.cxx:264
 AliHFEtrdPIDqaV1.cxx:265
 AliHFEtrdPIDqaV1.cxx:266
 AliHFEtrdPIDqaV1.cxx:267
 AliHFEtrdPIDqaV1.cxx:268
 AliHFEtrdPIDqaV1.cxx:269
 AliHFEtrdPIDqaV1.cxx:270
 AliHFEtrdPIDqaV1.cxx:271
 AliHFEtrdPIDqaV1.cxx:272
 AliHFEtrdPIDqaV1.cxx:273
 AliHFEtrdPIDqaV1.cxx:274
 AliHFEtrdPIDqaV1.cxx:275
 AliHFEtrdPIDqaV1.cxx:276
 AliHFEtrdPIDqaV1.cxx:277
 AliHFEtrdPIDqaV1.cxx:278
 AliHFEtrdPIDqaV1.cxx:279
 AliHFEtrdPIDqaV1.cxx:280
 AliHFEtrdPIDqaV1.cxx:281
 AliHFEtrdPIDqaV1.cxx:282
 AliHFEtrdPIDqaV1.cxx:283
 AliHFEtrdPIDqaV1.cxx:284
 AliHFEtrdPIDqaV1.cxx:285
 AliHFEtrdPIDqaV1.cxx:286
 AliHFEtrdPIDqaV1.cxx:287
 AliHFEtrdPIDqaV1.cxx:288
 AliHFEtrdPIDqaV1.cxx:289
 AliHFEtrdPIDqaV1.cxx:290
 AliHFEtrdPIDqaV1.cxx:291
 AliHFEtrdPIDqaV1.cxx:292
 AliHFEtrdPIDqaV1.cxx:293
 AliHFEtrdPIDqaV1.cxx:294
 AliHFEtrdPIDqaV1.cxx:295
 AliHFEtrdPIDqaV1.cxx:296
 AliHFEtrdPIDqaV1.cxx:297
 AliHFEtrdPIDqaV1.cxx:298
 AliHFEtrdPIDqaV1.cxx:299
 AliHFEtrdPIDqaV1.cxx:300
 AliHFEtrdPIDqaV1.cxx:301
 AliHFEtrdPIDqaV1.cxx:302
 AliHFEtrdPIDqaV1.cxx:303
 AliHFEtrdPIDqaV1.cxx:304
 AliHFEtrdPIDqaV1.cxx:305
 AliHFEtrdPIDqaV1.cxx:306
 AliHFEtrdPIDqaV1.cxx:307
 AliHFEtrdPIDqaV1.cxx:308
 AliHFEtrdPIDqaV1.cxx:309
 AliHFEtrdPIDqaV1.cxx:310
 AliHFEtrdPIDqaV1.cxx:311
 AliHFEtrdPIDqaV1.cxx:312
 AliHFEtrdPIDqaV1.cxx:313
 AliHFEtrdPIDqaV1.cxx:314
 AliHFEtrdPIDqaV1.cxx:315
 AliHFEtrdPIDqaV1.cxx:316
 AliHFEtrdPIDqaV1.cxx:317
 AliHFEtrdPIDqaV1.cxx:318
 AliHFEtrdPIDqaV1.cxx:319
 AliHFEtrdPIDqaV1.cxx:320
 AliHFEtrdPIDqaV1.cxx:321
 AliHFEtrdPIDqaV1.cxx:322
 AliHFEtrdPIDqaV1.cxx:323
 AliHFEtrdPIDqaV1.cxx:324
 AliHFEtrdPIDqaV1.cxx:325
 AliHFEtrdPIDqaV1.cxx:326
 AliHFEtrdPIDqaV1.cxx:327
 AliHFEtrdPIDqaV1.cxx:328
 AliHFEtrdPIDqaV1.cxx:329
 AliHFEtrdPIDqaV1.cxx:330
 AliHFEtrdPIDqaV1.cxx:331
 AliHFEtrdPIDqaV1.cxx:332
 AliHFEtrdPIDqaV1.cxx:333
 AliHFEtrdPIDqaV1.cxx:334
 AliHFEtrdPIDqaV1.cxx:335
 AliHFEtrdPIDqaV1.cxx:336
 AliHFEtrdPIDqaV1.cxx:337
 AliHFEtrdPIDqaV1.cxx:338
 AliHFEtrdPIDqaV1.cxx:339
 AliHFEtrdPIDqaV1.cxx:340
 AliHFEtrdPIDqaV1.cxx:341
 AliHFEtrdPIDqaV1.cxx:342
 AliHFEtrdPIDqaV1.cxx:343
 AliHFEtrdPIDqaV1.cxx:344
 AliHFEtrdPIDqaV1.cxx:345
 AliHFEtrdPIDqaV1.cxx:346
 AliHFEtrdPIDqaV1.cxx:347
 AliHFEtrdPIDqaV1.cxx:348
 AliHFEtrdPIDqaV1.cxx:349
 AliHFEtrdPIDqaV1.cxx:350
 AliHFEtrdPIDqaV1.cxx:351
 AliHFEtrdPIDqaV1.cxx:352
 AliHFEtrdPIDqaV1.cxx:353
 AliHFEtrdPIDqaV1.cxx:354
 AliHFEtrdPIDqaV1.cxx:355
 AliHFEtrdPIDqaV1.cxx:356
 AliHFEtrdPIDqaV1.cxx:357
 AliHFEtrdPIDqaV1.cxx:358
 AliHFEtrdPIDqaV1.cxx:359
 AliHFEtrdPIDqaV1.cxx:360
 AliHFEtrdPIDqaV1.cxx:361
 AliHFEtrdPIDqaV1.cxx:362
 AliHFEtrdPIDqaV1.cxx:363
 AliHFEtrdPIDqaV1.cxx:364
 AliHFEtrdPIDqaV1.cxx:365
 AliHFEtrdPIDqaV1.cxx:366
 AliHFEtrdPIDqaV1.cxx:367
 AliHFEtrdPIDqaV1.cxx:368
 AliHFEtrdPIDqaV1.cxx:369
 AliHFEtrdPIDqaV1.cxx:370
 AliHFEtrdPIDqaV1.cxx:371
 AliHFEtrdPIDqaV1.cxx:372
 AliHFEtrdPIDqaV1.cxx:373
 AliHFEtrdPIDqaV1.cxx:374
 AliHFEtrdPIDqaV1.cxx:375
 AliHFEtrdPIDqaV1.cxx:376
 AliHFEtrdPIDqaV1.cxx:377
 AliHFEtrdPIDqaV1.cxx:378
 AliHFEtrdPIDqaV1.cxx:379
 AliHFEtrdPIDqaV1.cxx:380
 AliHFEtrdPIDqaV1.cxx:381
 AliHFEtrdPIDqaV1.cxx:382
 AliHFEtrdPIDqaV1.cxx:383
 AliHFEtrdPIDqaV1.cxx:384
 AliHFEtrdPIDqaV1.cxx:385
 AliHFEtrdPIDqaV1.cxx:386
 AliHFEtrdPIDqaV1.cxx:387
 AliHFEtrdPIDqaV1.cxx:388
 AliHFEtrdPIDqaV1.cxx:389
 AliHFEtrdPIDqaV1.cxx:390
 AliHFEtrdPIDqaV1.cxx:391
 AliHFEtrdPIDqaV1.cxx:392
 AliHFEtrdPIDqaV1.cxx:393
 AliHFEtrdPIDqaV1.cxx:394
 AliHFEtrdPIDqaV1.cxx:395
 AliHFEtrdPIDqaV1.cxx:396
 AliHFEtrdPIDqaV1.cxx:397
 AliHFEtrdPIDqaV1.cxx:398
 AliHFEtrdPIDqaV1.cxx:399
 AliHFEtrdPIDqaV1.cxx:400
 AliHFEtrdPIDqaV1.cxx:401
 AliHFEtrdPIDqaV1.cxx:402
 AliHFEtrdPIDqaV1.cxx:403
 AliHFEtrdPIDqaV1.cxx:404
 AliHFEtrdPIDqaV1.cxx:405
 AliHFEtrdPIDqaV1.cxx:406
 AliHFEtrdPIDqaV1.cxx:407
 AliHFEtrdPIDqaV1.cxx:408
 AliHFEtrdPIDqaV1.cxx:409
 AliHFEtrdPIDqaV1.cxx:410
 AliHFEtrdPIDqaV1.cxx:411
 AliHFEtrdPIDqaV1.cxx:412
 AliHFEtrdPIDqaV1.cxx:413
 AliHFEtrdPIDqaV1.cxx:414
 AliHFEtrdPIDqaV1.cxx:415
 AliHFEtrdPIDqaV1.cxx:416
 AliHFEtrdPIDqaV1.cxx:417
 AliHFEtrdPIDqaV1.cxx:418
 AliHFEtrdPIDqaV1.cxx:419
 AliHFEtrdPIDqaV1.cxx:420
 AliHFEtrdPIDqaV1.cxx:421
 AliHFEtrdPIDqaV1.cxx:422
 AliHFEtrdPIDqaV1.cxx:423
 AliHFEtrdPIDqaV1.cxx:424
 AliHFEtrdPIDqaV1.cxx:425
 AliHFEtrdPIDqaV1.cxx:426
 AliHFEtrdPIDqaV1.cxx:427
 AliHFEtrdPIDqaV1.cxx:428
 AliHFEtrdPIDqaV1.cxx:429
 AliHFEtrdPIDqaV1.cxx:430
 AliHFEtrdPIDqaV1.cxx:431
 AliHFEtrdPIDqaV1.cxx:432
 AliHFEtrdPIDqaV1.cxx:433
 AliHFEtrdPIDqaV1.cxx:434
 AliHFEtrdPIDqaV1.cxx:435
 AliHFEtrdPIDqaV1.cxx:436
 AliHFEtrdPIDqaV1.cxx:437
 AliHFEtrdPIDqaV1.cxx:438
 AliHFEtrdPIDqaV1.cxx:439
 AliHFEtrdPIDqaV1.cxx:440
 AliHFEtrdPIDqaV1.cxx:441
 AliHFEtrdPIDqaV1.cxx:442
 AliHFEtrdPIDqaV1.cxx:443
 AliHFEtrdPIDqaV1.cxx:444
 AliHFEtrdPIDqaV1.cxx:445
 AliHFEtrdPIDqaV1.cxx:446
 AliHFEtrdPIDqaV1.cxx:447
 AliHFEtrdPIDqaV1.cxx:448
 AliHFEtrdPIDqaV1.cxx:449
 AliHFEtrdPIDqaV1.cxx:450
 AliHFEtrdPIDqaV1.cxx:451
 AliHFEtrdPIDqaV1.cxx:452
 AliHFEtrdPIDqaV1.cxx:453
 AliHFEtrdPIDqaV1.cxx:454
 AliHFEtrdPIDqaV1.cxx:455
 AliHFEtrdPIDqaV1.cxx:456
 AliHFEtrdPIDqaV1.cxx:457
 AliHFEtrdPIDqaV1.cxx:458
 AliHFEtrdPIDqaV1.cxx:459
 AliHFEtrdPIDqaV1.cxx:460
 AliHFEtrdPIDqaV1.cxx:461
 AliHFEtrdPIDqaV1.cxx:462
 AliHFEtrdPIDqaV1.cxx:463
 AliHFEtrdPIDqaV1.cxx:464
 AliHFEtrdPIDqaV1.cxx:465
 AliHFEtrdPIDqaV1.cxx:466
 AliHFEtrdPIDqaV1.cxx:467
 AliHFEtrdPIDqaV1.cxx:468
 AliHFEtrdPIDqaV1.cxx:469
 AliHFEtrdPIDqaV1.cxx:470
 AliHFEtrdPIDqaV1.cxx:471
 AliHFEtrdPIDqaV1.cxx:472
 AliHFEtrdPIDqaV1.cxx:473
 AliHFEtrdPIDqaV1.cxx:474
 AliHFEtrdPIDqaV1.cxx:475
 AliHFEtrdPIDqaV1.cxx:476
 AliHFEtrdPIDqaV1.cxx:477
 AliHFEtrdPIDqaV1.cxx:478
 AliHFEtrdPIDqaV1.cxx:479
 AliHFEtrdPIDqaV1.cxx:480
 AliHFEtrdPIDqaV1.cxx:481
 AliHFEtrdPIDqaV1.cxx:482
 AliHFEtrdPIDqaV1.cxx:483
 AliHFEtrdPIDqaV1.cxx:484
 AliHFEtrdPIDqaV1.cxx:485
 AliHFEtrdPIDqaV1.cxx:486
 AliHFEtrdPIDqaV1.cxx:487
 AliHFEtrdPIDqaV1.cxx:488
 AliHFEtrdPIDqaV1.cxx:489
 AliHFEtrdPIDqaV1.cxx:490
 AliHFEtrdPIDqaV1.cxx:491
 AliHFEtrdPIDqaV1.cxx:492
 AliHFEtrdPIDqaV1.cxx:493
 AliHFEtrdPIDqaV1.cxx:494
 AliHFEtrdPIDqaV1.cxx:495
 AliHFEtrdPIDqaV1.cxx:496
 AliHFEtrdPIDqaV1.cxx:497
 AliHFEtrdPIDqaV1.cxx:498
 AliHFEtrdPIDqaV1.cxx:499
 AliHFEtrdPIDqaV1.cxx:500
 AliHFEtrdPIDqaV1.cxx:501
 AliHFEtrdPIDqaV1.cxx:502
 AliHFEtrdPIDqaV1.cxx:503
 AliHFEtrdPIDqaV1.cxx:504
 AliHFEtrdPIDqaV1.cxx:505
 AliHFEtrdPIDqaV1.cxx:506
 AliHFEtrdPIDqaV1.cxx:507