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.                  *
 **************************************************************************/

/* $Id: AliPIDResponse.cxx 46193 2010-12-21 09:00:14Z wiechula $ */

//-----------------------------------------------------------------
//        Base class for handling the pid response               //
//        functions of all detectors                             //
//        and give access to the nsigmas                         //
//                                                               //
//   Origin: Jens Wiechula, Uni Tuebingen, jens.wiechula@cern.ch //
//-----------------------------------------------------------------

#include <TList.h>
#include <TObjArray.h>
#include <TPRegexp.h>
#include <TF1.h>
#include <TH2D.h>
#include <TSpline.h>
#include <TFile.h>
#include <TArrayI.h>
#include <TArrayF.h>
#include <TLinearFitter.h>
#include <TSystem.h>
#include <TMD5.h>

#include <AliVEvent.h>
#include <AliVTrack.h>
#include <AliLog.h>
#include <AliPID.h>
#include <AliOADBContainer.h>
#include <AliTRDPIDResponseObject.h>
#include <AliTRDdEdxParams.h>
#include <AliTOFPIDParams.h>
#include <AliHMPIDPIDParams.h>

#include "AliPIDResponse.h"
#include "AliDetectorPID.h"

#include "AliCentrality.h"

ClassImp(AliPIDResponse);

Float_t AliPIDResponse::fgTOFmismatchProb = 0.0;

AliPIDResponse::AliPIDResponse(Bool_t isMC/*=kFALSE*/) :
TNamed("PIDResponse","PIDResponse"),
fITSResponse(isMC),
fTPCResponse(),
fTRDResponse(),
fTOFResponse(),
fHMPIDResponse(),
fEMCALResponse(),
fRange(5.),
fITSPIDmethod(kITSTruncMean),
fTuneMConData(kFALSE),
fTuneMConDataMask(kDetTOF|kDetTPC),
fIsMC(isMC),
fCachePID(kFALSE),
fOADBPath(),
fCustomTPCpidResponse(),
fCustomTPCetaMaps(),
fBeamType("PP"),
fLHCperiod(),
fMCperiodTPC(),
fMCperiodUser(),
fCurrentFile(),
fCurrentAliRootRev(-1),
fRecoPass(0),
fRecoPassUser(-1),
fRun(-1),
fOldRun(-1),
fResT0A(75.),
fResT0C(65.),
fResT0AC(55.),
fArrPidResponseMaster(NULL),
fResolutionCorrection(NULL),
fOADBvoltageMaps(NULL),
fUseTPCEtaCorrection(kFALSE),
fUseTPCMultiplicityCorrection(kFALSE),
fTRDPIDResponseObject(NULL),
fTRDdEdxParams(NULL),
fTOFtail(0.9),
fTOFPIDParams(NULL),
fHMPIDPIDParams(NULL),
fEMCALPIDParams(NULL),
fCurrentEvent(NULL),
fCurrCentrality(0.0),
fBeamTypeNum(kPP),
fNoTOFmism(kFALSE)
{
  //
  // default ctor
  //
  AliLog::SetClassDebugLevel("AliPIDResponse",0);
  AliLog::SetClassDebugLevel("AliESDpid",0);
  AliLog::SetClassDebugLevel("AliAODpidUtil",0);

}

//______________________________________________________________________________
AliPIDResponse::~AliPIDResponse()
{
  //
  // dtor
  //
  delete fArrPidResponseMaster;
  delete fTRDPIDResponseObject;
  delete fTRDdEdxParams;
  delete fTOFPIDParams;
}

//______________________________________________________________________________
AliPIDResponse::AliPIDResponse(const AliPIDResponse &other) :
TNamed(other),
fITSResponse(other.fITSResponse),
fTPCResponse(other.fTPCResponse),
fTRDResponse(other.fTRDResponse),
fTOFResponse(other.fTOFResponse),
fHMPIDResponse(other.fHMPIDResponse),
fEMCALResponse(other.fEMCALResponse),
fRange(other.fRange),
fITSPIDmethod(other.fITSPIDmethod),
fTuneMConData(other.fTuneMConData),
fTuneMConDataMask(other.fTuneMConDataMask),
fIsMC(other.fIsMC),
fCachePID(other.fCachePID),
fOADBPath(other.fOADBPath),
fCustomTPCpidResponse(other.fCustomTPCpidResponse),
fCustomTPCetaMaps(other.fCustomTPCetaMaps),
fBeamType("PP"),
fLHCperiod(),
fMCperiodTPC(),
fMCperiodUser(other.fMCperiodUser),
fCurrentFile(),
fCurrentAliRootRev(other.fCurrentAliRootRev),
fRecoPass(0),
fRecoPassUser(other.fRecoPassUser),
fRun(-1),
fOldRun(-1),
fResT0A(75.),
fResT0C(65.),
fResT0AC(55.),
fArrPidResponseMaster(NULL),
fResolutionCorrection(NULL),
fOADBvoltageMaps(NULL),
fUseTPCEtaCorrection(other.fUseTPCEtaCorrection),
fUseTPCMultiplicityCorrection(other.fUseTPCMultiplicityCorrection),
fTRDPIDResponseObject(NULL),
fTRDdEdxParams(NULL),
fTOFtail(0.9),
fTOFPIDParams(NULL),
fHMPIDPIDParams(NULL),
fEMCALPIDParams(NULL),
fCurrentEvent(NULL),
fCurrCentrality(0.0),
fBeamTypeNum(kPP),
fNoTOFmism(other.fNoTOFmism)
{
  //
  // copy ctor
  //
}

//______________________________________________________________________________
AliPIDResponse& AliPIDResponse::operator=(const AliPIDResponse &other)
{
  //
  // copy ctor
  //
  if(this!=&other) {
    delete fArrPidResponseMaster;
    TNamed::operator=(other);
    fITSResponse=other.fITSResponse;
    fTPCResponse=other.fTPCResponse;
    fTRDResponse=other.fTRDResponse;
    fTOFResponse=other.fTOFResponse;
    fHMPIDResponse=other.fHMPIDResponse;
    fEMCALResponse=other.fEMCALResponse;
    fRange=other.fRange;
    fITSPIDmethod=other.fITSPIDmethod;
    fOADBPath=other.fOADBPath;
    fCustomTPCpidResponse=other.fCustomTPCpidResponse;
    fCustomTPCetaMaps=other.fCustomTPCetaMaps;
    fTuneMConData=other.fTuneMConData;
    fTuneMConDataMask=other.fTuneMConDataMask;
    fIsMC=other.fIsMC;
    fCachePID=other.fCachePID;
    fBeamType="PP";
    fBeamTypeNum=kPP;
    fLHCperiod="";
    fMCperiodTPC="";
    fMCperiodUser=other.fMCperiodUser;
    fCurrentFile="";
    fCurrentAliRootRev=other.fCurrentAliRootRev;
    fRecoPass=0;
    fRecoPassUser=other.fRecoPassUser;
    fRun=-1;
    fOldRun=-1;
    fResT0A=75.;
    fResT0C=65.;
    fResT0AC=55.;
    fArrPidResponseMaster=NULL;
    fResolutionCorrection=NULL;
    fOADBvoltageMaps=NULL;
    fUseTPCEtaCorrection=other.fUseTPCEtaCorrection;
    fUseTPCMultiplicityCorrection=other.fUseTPCMultiplicityCorrection;
    fTRDPIDResponseObject=NULL;
    fTRDdEdxParams=NULL;
    fEMCALPIDParams=NULL;
    fTOFtail=0.9;
    fTOFPIDParams=NULL;
    fHMPIDPIDParams=NULL;
    fCurrentEvent=other.fCurrentEvent;
    fNoTOFmism = other.fNoTOFmism;

  }
  return *this;
}

//______________________________________________________________________________
Float_t AliPIDResponse::NumberOfSigmas(EDetector detector, const AliVParticle *vtrack, AliPID::EParticleType type) const
{
  //
  // NumberOfSigmas for 'detCode'
  //
  
  const AliVTrack *track=static_cast<const AliVTrack*>(vtrack);
  // look for cached value first
  const AliDetectorPID *detPID=track->GetDetectorPID();
  
  if ( detPID && detPID->HasNumberOfSigmas(detector)){
    return detPID->GetNumberOfSigmas(detector, type);
  } else if (fCachePID) {
    FillTrackDetectorPID(track, detector);
    detPID=track->GetDetectorPID();
    return detPID->GetNumberOfSigmas(detector, type);
  }
  
  return GetNumberOfSigmas(detector, track, type);
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::NumberOfSigmas(EDetector detCode, const AliVParticle *track,
                                                             AliPID::EParticleType type, Double_t &val) const
{
  //
  // NumberOfSigmas with detector status as return value
  //
  
  val=NumberOfSigmas(detCode, track, type);
  return CheckPIDStatus(detCode, (AliVTrack*)track);
}

//______________________________________________________________________________
// public buffered versions of the PID calculation
//

//______________________________________________________________________________
Float_t AliPIDResponse::NumberOfSigmasITS(const AliVParticle *vtrack, AliPID::EParticleType type) const
{
  //
  // Calculate the number of sigmas in the ITS
  //
  
  return NumberOfSigmas(kITS, vtrack, type);
}

//______________________________________________________________________________
Float_t AliPIDResponse::NumberOfSigmasTPC(const AliVParticle *vtrack, AliPID::EParticleType type) const
{
  //
  // Calculate the number of sigmas in the TPC
  //
  
  return NumberOfSigmas(kTPC, vtrack, type);
}

//______________________________________________________________________________
Float_t AliPIDResponse::NumberOfSigmasTPC( const AliVParticle *vtrack, 
                                           AliPID::EParticleType type,
                                           AliTPCPIDResponse::ETPCdEdxSource dedxSource) const
{
  //get number of sigmas according the selected TPC gain configuration scenario
  const AliVTrack *track=static_cast<const AliVTrack*>(vtrack);

  Float_t nSigma=fTPCResponse.GetNumberOfSigmas(track, type, dedxSource, fUseTPCEtaCorrection, fUseTPCMultiplicityCorrection);

  return nSigma;
}

//______________________________________________________________________________
Float_t AliPIDResponse::NumberOfSigmasTRD(const AliVParticle *vtrack, AliPID::EParticleType type) const
{
  //
  // Calculate the number of sigmas in the TRD
  //
  return NumberOfSigmas(kTRD, vtrack, type);
}

//______________________________________________________________________________
Float_t AliPIDResponse::NumberOfSigmasTOF(const AliVParticle *vtrack, AliPID::EParticleType type) const
{
  //
  // Calculate the number of sigmas in the TOF
  //
  
  return NumberOfSigmas(kTOF, vtrack, type);
}

//______________________________________________________________________________
Float_t AliPIDResponse::NumberOfSigmasHMPID(const AliVParticle *vtrack, AliPID::EParticleType type) const
{
  //
  // Calculate the number of sigmas in the EMCAL
  //
  
  return NumberOfSigmas(kHMPID, vtrack, type);
}

//______________________________________________________________________________
Float_t AliPIDResponse::NumberOfSigmasEMCAL(const AliVParticle *vtrack, AliPID::EParticleType type) const
{
  //
  // Calculate the number of sigmas in the EMCAL
  //
  
  return NumberOfSigmas(kEMCAL, vtrack, type);
}

//______________________________________________________________________________
Float_t  AliPIDResponse::NumberOfSigmasEMCAL(const AliVParticle *vtrack, AliPID::EParticleType type, Double_t &eop, Double_t showershape[4])  const
{
  //
  // emcal nsigma with eop and showershape
  //
  AliVTrack *track=(AliVTrack*)vtrack;
  
  AliVCluster *matchedClus = NULL;

  Double_t mom     = -1.; 
  Double_t pt      = -1.; 
  Double_t EovP    = -1.;
  Double_t fClsE   = -1.;

  // initialize eop and shower shape parameters
  eop = -1.;
  for(Int_t i = 0; i < 4; i++){
    showershape[i] = -1.;
  }
  
  Int_t nMatchClus = -1;
  Int_t charge     = 0;
  
  // Track matching
  nMatchClus = track->GetEMCALcluster();
  if(nMatchClus > -1){

    mom    = track->P();
    pt     = track->Pt();
    charge = track->Charge();
    
    matchedClus = (AliVCluster*)fCurrentEvent->GetCaloCluster(nMatchClus);
    
    if(matchedClus){
      
      // matched cluster is EMCAL
      if(matchedClus->IsEMCAL()){
	
	fClsE       = matchedClus->E();
	EovP        = fClsE/mom;
	
	// fill used EMCAL variables here
	eop            = EovP; // E/p
	showershape[0] = matchedClus->GetNCells(); // number of cells in cluster
	showershape[1] = matchedClus->GetM02(); // long axis
	showershape[2] = matchedClus->GetM20(); // short axis
	showershape[3] = matchedClus->GetDispersion(); // dispersion

        // look for cached value first
        const AliDetectorPID *detPID=track->GetDetectorPID();
        const EDetector detector=kEMCAL;
        
        if ( detPID && detPID->HasNumberOfSigmas(detector)){
          return detPID->GetNumberOfSigmas(detector, type);
        } else if (fCachePID) {
          FillTrackDetectorPID(track, detector);
          detPID=track->GetDetectorPID();
          return detPID->GetNumberOfSigmas(detector, type);
        }
        
        // NSigma value really meaningful only for electrons!
        return fEMCALResponse.GetNumberOfSigmas(pt,EovP,type,charge);
      }
    }
  }
  return -999;
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetSignalDelta(EDetector detector, const AliVParticle *track, AliPID::EParticleType type, Double_t &val, Bool_t ratio/*=kFALSE*/) const
{
  //
  //
  //
  val=-9999.;
  switch (detector){
    case kITS:   return GetSignalDeltaITS(track,type,val,ratio); break;
    case kTPC:   return GetSignalDeltaTPC(track,type,val,ratio); break;
    case kTRD:   return GetSignalDeltaTRD(track,type,val,ratio); break;
    case kTOF:   return GetSignalDeltaTOF(track,type,val,ratio); break;
    case kHMPID: return GetSignalDeltaHMPID(track,type,val,ratio); break;
    default: return kDetNoSignal;
  }
  return kDetNoSignal;
}

//______________________________________________________________________________
Double_t AliPIDResponse::GetSignalDelta(EDetector detCode, const AliVParticle *track, AliPID::EParticleType type, Bool_t ratio/*=kFALSE*/) const
{
  //
  //
  //
  Double_t val=-9999.;
  EDetPidStatus stat=GetSignalDelta(detCode, track, type, val, ratio);
  if ( stat==kDetNoSignal ) val=-9999.;
  return val;
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::ComputePIDProbability  (EDetCode  detCode, const AliVTrack *track, Int_t nSpecies, Double_t p[]) const
{
  // Compute PID response of 'detCode'
  
  // find detector code from detector bit mask
  Int_t detector=-1;
  for (Int_t idet=0; idet<kNdetectors; ++idet) if ( (detCode&(1<<idet)) ) { detector=idet; break; }
  if (detector==-1) return kDetNoSignal;

  return ComputePIDProbability((EDetector)detector, track, nSpecies, p);
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::ComputePIDProbability  (EDetector detector,  const AliVTrack *track, Int_t nSpecies, Double_t p[]) const
{
  //
  // Compute PID response of 'detector'
  //

  const AliDetectorPID *detPID=track->GetDetectorPID();

  if ( detPID && detPID->HasRawProbability(detector)){
    return detPID->GetRawProbability(detector, p, nSpecies);
  } else if (fCachePID) {
    FillTrackDetectorPID(track, detector);
    detPID=track->GetDetectorPID();
    return detPID->GetRawProbability(detector, p, nSpecies);
  }
  
  //if no caching return values calculated from scratch
  return GetComputePIDProbability(detector, track, nSpecies, p);
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::ComputeITSProbability  (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const
{
  // Compute PID response for the ITS
  return ComputePIDProbability(kITS, track, nSpecies, p);
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::ComputeTPCProbability  (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const
{
  // Compute PID response for the TPC
  return ComputePIDProbability(kTPC, track, nSpecies, p);
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::ComputeTOFProbability  (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const
{
  // Compute PID response for the
  return ComputePIDProbability(kTOF, track, nSpecies, p);
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::ComputeTRDProbability  (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const
{
  // Compute PID response for the
  return ComputePIDProbability(kTRD, track, nSpecies, p);
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::ComputeEMCALProbability  (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const
{
  // Compute PID response for the EMCAL
  return ComputePIDProbability(kEMCAL, track, nSpecies, p);
}
//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::ComputePHOSProbability (const AliVTrack */*track*/, Int_t nSpecies, Double_t p[]) const
{
  // Compute PID response for the PHOS
  
  // set flat distribution (no decision)
  for (Int_t j=0; j<nSpecies; j++) p[j]=1./nSpecies;
  return kDetNoSignal;
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::ComputeHMPIDProbability(const AliVTrack *track, Int_t nSpecies, Double_t p[]) const
{
  // Compute PID response for the HMPID
  return ComputePIDProbability(kHMPID, track, nSpecies, p);
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::ComputeTRDProbability  (const AliVTrack *track, Int_t nSpecies, Double_t p[],AliTRDPIDResponse::ETRDPIDMethod PIDmethod) const
{
  // Compute PID response for the
  return GetComputeTRDProbability(track, nSpecies, p, PIDmethod);
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::CheckPIDStatus(EDetector detector, const AliVTrack *track) const
{
  // calculate detector pid status
  
  const Int_t iDetCode=(Int_t)detector;
  if (iDetCode<0||iDetCode>=kNdetectors) return kDetNoSignal;
  const AliDetectorPID *detPID=track->GetDetectorPID();
  
  if ( detPID ){
    return detPID->GetPIDStatus(detector);
  } else if (fCachePID) {
    FillTrackDetectorPID(track, detector);
    detPID=track->GetDetectorPID();
    return detPID->GetPIDStatus(detector);
  }
  
  // if not buffered and no buffering is requested
  return GetPIDStatus(detector, track);
}

//______________________________________________________________________________
void AliPIDResponse::InitialiseEvent(AliVEvent *event, Int_t pass, Int_t run)
{
  //
  // Apply settings for the current event
  //
  fRecoPass=pass;
  

  fCurrentEvent=NULL;
  if (!event) return;
  fCurrentEvent=event;
  if (run>0) fRun=run;
  else fRun=event->GetRunNumber();
  
  if (fRun!=fOldRun){
    ExecNewRun();
    fOldRun=fRun;
  }
  
  //TPC resolution parametrisation PbPb
  if ( fResolutionCorrection ){
    Double_t corrSigma=fResolutionCorrection->Eval(GetTPCMultiplicityBin(event));
    fTPCResponse.SetSigma(3.79301e-03*corrSigma, 2.21280e+04);
  }
  
  // Set up TPC multiplicity for PbPb
  if (fUseTPCMultiplicityCorrection) {
    Int_t numESDtracks = event->GetNumberOfESDTracks();
    if (numESDtracks < 0) {
      AliError("Cannot obtain event multiplicity (number of ESD tracks < 0). If you are using AODs, this might be a too old production. Please disable the multiplicity correction to get a reliable PID result!");
      numESDtracks = 0;
    }
    fTPCResponse.SetCurrentEventMultiplicity(numESDtracks);
  }
  else
    fTPCResponse.SetCurrentEventMultiplicity(0);
  
  //TOF resolution
  SetTOFResponse(event, (AliPIDResponse::EStartTimeType_t)fTOFPIDParams->GetStartTimeMethod());


  // Get and set centrality
  AliCentrality *centrality = event->GetCentrality();
  if(centrality){
    fCurrCentrality = centrality->GetCentralityPercentile("V0M");
  }
  else{
    fCurrCentrality = -1;
  }

  // Set centrality percentile for EMCAL
  fEMCALResponse.SetCentrality(fCurrCentrality);

  // switch off some TOF channel according to OADB to match data TOF matching eff 
  if (fTuneMConData && ((fTuneMConDataMask & kDetTOF) == kDetTOF) && fTOFPIDParams->GetTOFmatchingLossMC() > 0.01){
    Int_t ntrk = event->GetNumberOfTracks();
    for(Int_t i=0;i < ntrk;i++){
      AliVParticle *trk = event->GetTrack(i);
      Int_t channel = GetTOFResponse().GetTOFchannel(trk);
      Int_t swoffEachOfThem = Int_t(100./fTOFPIDParams->GetTOFmatchingLossMC() + 0.5);
      if(!(channel%swoffEachOfThem)) ((AliVTrack *) trk)->ResetStatus(AliVTrack::kTOFout);
    }
  }

}

//______________________________________________________________________________
void AliPIDResponse::ExecNewRun()
{
  //
  // Things to Execute upon a new run
  //
  SetRecoInfo();
  
  SetITSParametrisation();
  
  SetTPCPidResponseMaster();
  SetTPCParametrisation();
  SetTPCEtaMaps();

  SetTRDPidResponseMaster(); 
  //has to precede InitializeTRDResponse(), otherwise the read-out fTRDdEdxParams is not pased in TRDResponse!
  SetTRDdEdxParams();
  InitializeTRDResponse();

  SetEMCALPidResponseMaster(); 
  InitializeEMCALResponse();
  
  SetTOFPidResponseMaster();
  InitializeTOFResponse();

  SetHMPIDPidResponseMaster();
  InitializeHMPIDResponse();

  if (fCurrentEvent) fTPCResponse.SetMagField(fCurrentEvent->GetMagneticField());
}

//______________________________________________________________________________
Double_t AliPIDResponse::GetTPCMultiplicityBin(const AliVEvent * const event)
{
  //
  // Get TPC multiplicity in bins of 150
  //
  
  const AliVVertex* vertexTPC = event->GetPrimaryVertex();
  Double_t tpcMulti=0.;
  if(vertexTPC){
    Double_t vertexContribTPC=vertexTPC->GetNContributors();
    tpcMulti=vertexContribTPC/150.;
    if (tpcMulti>20.) tpcMulti=20.;
  }
  
  return tpcMulti;
}

//______________________________________________________________________________
void AliPIDResponse::SetRecoInfo()
{
  //
  // Set reconstruction information
  //
  
  //reset information
  fLHCperiod="";
  fMCperiodTPC="";
  
  fBeamType="";
    
  fBeamType="PP";
  fBeamTypeNum=kPP;

  Bool_t hasProdInfo=(fCurrentFile.BeginsWith("LHC"));
  
  TPRegexp reg(".*(LHC1[1-3][a-z]+[0-9]+[a-z_]*)[/_].*");
  if (hasProdInfo) reg=TPRegexp("LHC1[1-2][a-z]+[0-9]+[a-z_]*");
  TPRegexp reg12a17("LHC1[2-4][a-z]");

  //find the period by run number (UGLY, but not stored in ESD and AOD... )
  if (fRun>=114737&&fRun<=117223)      { fLHCperiod="LHC10B"; fMCperiodTPC="LHC10D1";  }
  else if (fRun>=118503&&fRun<=121040) { fLHCperiod="LHC10C"; fMCperiodTPC="LHC10D1";  }
  else if (fRun>=122195&&fRun<=126437) { fLHCperiod="LHC10D"; fMCperiodTPC="LHC10F6A"; }
  else if (fRun>=127710&&fRun<=130850) { fLHCperiod="LHC10E"; fMCperiodTPC="LHC10F6A"; }
  else if (fRun>=133004&&fRun<=135029) { fLHCperiod="LHC10F"; fMCperiodTPC="LHC10F6A"; }
  else if (fRun>=135654&&fRun<=136377) { fLHCperiod="LHC10G"; fMCperiodTPC="LHC10F6A"; }
  else if (fRun>=136851&&fRun<=139846) {
    fLHCperiod="LHC10H";
    fMCperiodTPC="LHC10H8";
    if (reg.MatchB(fCurrentFile)) fMCperiodTPC="LHC11A10";
    // exception for 13d2 and later
    if (fCurrentAliRootRev >= 62714) fMCperiodTPC="LHC13D2";
    fBeamType="PBPB";
    fBeamTypeNum=kPBPB;
  }
  else if (fRun>=139847&&fRun<=146974) { fLHCperiod="LHC11A"; fMCperiodTPC="LHC10F6A"; }
  //TODO: periods 11B (146975-150721), 11C (150722-155837) are not yet treated assume 11d for the moment
  else if (fRun>=146975&&fRun<=155837) { fLHCperiod="LHC11D"; fMCperiodTPC="LHC10F6A"; }
  else if (fRun>=155838&&fRun<=159649) { fLHCperiod="LHC11D"; fMCperiodTPC="LHC10F6A"; }
  // also for 11e (159650-162750),f(162751-165771) use 11d
  else if (fRun>=159650&&fRun<=162750) { fLHCperiod="LHC11D"; fMCperiodTPC="LHC10F6A"; }
  else if (fRun>=162751&&fRun<=165771) { fLHCperiod="LHC11D"; fMCperiodTPC="LHC10F6A"; }
  
  else if (fRun>=165772 && fRun<=170718) {
    fLHCperiod="LHC11H";
    fMCperiodTPC="LHC11A10";
    fBeamType="PBPB";
    fBeamTypeNum=kPBPB;
    if (reg12a17.MatchB(fCurrentFile)) fMCperiodTPC="LHC12A17";
  }
  if (fRun>=170719 && fRun<=177311) {
    fLHCperiod="LHC12A";
    fBeamType="PP";
    fBeamTypeNum=kPP;
    fMCperiodTPC="LHC10F6A";
    if (fCurrentAliRootRev >= 62714)
      fMCperiodTPC="LHC14E2";
  }
  // for the moment use LHC12b parameters up to LHC12d
  if (fRun>=177312 /*&& fRun<=179356*/) {
    fLHCperiod="LHC12B";
    fBeamType="PP";
    fBeamTypeNum=kPP;
    fMCperiodTPC="LHC10F6A";
    if (fCurrentAliRootRev >= 62714)
      fMCperiodTPC="LHC14E2";
  }
//   if (fRun>=179357 && fRun<=183173) { fLHCperiod="LHC12C"; fBeamType="PP"; fBeamTypeNum=kPP;/*fMCperiodTPC="";*/ }
//   if (fRun>=183174 && fRun<=186345) { fLHCperiod="LHC12D"; fBeamType="PP"; fBeamTypeNum=kPP;/*fMCperiodTPC="";*/ }
//   if (fRun>=186346 && fRun<=186635) { fLHCperiod="LHC12E"; fBeamType="PP"; fBeamTypeNum=kPP;/*fMCperiodTPC="";*/ }

//   if (fRun>=186636 && fRun<=188166) { fLHCperiod="LHC12F"; fBeamType="PP"; fBeamTypeNum=kPP;/*fMCperiodTPC="";*/ }
//   if (fRun >= 188167 && fRun <= 188355 ) { fLHCperiod="LHC12G"; fBeamType="PP"; fBeamTypeNum=kPP;/*fMCperiodTPC="";*/ }
//   if (fRun >= 188356 && fRun <= 188503 ) { fLHCperiod="LHC12G"; fBeamType="PPB"; fBeamTypeNum=kPPB;/*fMCperiodTPC="";*/ }
// for the moment use 12g parametrisation for all full gain runs (LHC12e+)
  if (fRun >= 186346 && fRun < 188719) { fLHCperiod="LHC12G"; fBeamType="PPB";fBeamTypeNum=kPPB; fMCperiodTPC="LHC12G"; }

  // Dedicated splines for periods 12g and 12i(j) (and use more appropriate MC)
  if (fRun >= 188720 && fRun <= 192738) {
    fLHCperiod="LHC12H";
    fBeamType="PP";
    fBeamTypeNum=kPP;
    fMCperiodTPC="LHC10F6A";
    if (fCurrentAliRootRev >= 62714)
      fMCperiodTPC="LHC13B2_FIXn1";
  }
  if (fRun >= 192739 && fRun <= 194479) {
    fLHCperiod="LHC12I";
    fBeamType="PP";
    fBeamTypeNum=kPP;
    fMCperiodTPC="LHC10F6A";
    if (fCurrentAliRootRev >= 62714)
      fMCperiodTPC="LHC13B2_FIXn1";
  }
  
  // New parametrisation for 2013 pPb runs
  if (fRun >= 194480) {
    fLHCperiod="LHC13B"; 
    fBeamType="PPB";
    fBeamTypeNum=kPPB;
    fMCperiodTPC="LHC12G";
  
    if (fCurrentAliRootRev >= 61605)
      fMCperiodTPC="LHC13B2_FIX";
    if (fCurrentAliRootRev >= 62714)
      fMCperiodTPC="LHC13B2_FIXn1";
    
    // High luminosity pPb runs require different parametrisations
    if (fRun >= 195875 && fRun <= 197411) {
      fLHCperiod="LHC13F"; 
    }
  }

  //exception new pp MC productions from 2011 (11a periods have 10f6a splines!)
  if (fBeamType=="PP" && reg.MatchB(fCurrentFile) && !fCurrentFile.Contains("LHC11a")) { fMCperiodTPC="LHC11B2"; fBeamType="PP";fBeamTypeNum=kPP; }
  // exception for 11f1
  if (fCurrentFile.Contains("LHC11f1")) fMCperiodTPC="LHC11F1";
  // exception for 12f1a, 12f1b and 12i3
  if (fCurrentFile.Contains("LHC12f1") || fCurrentFile.Contains("LHC12i3")) fMCperiodTPC="LHC12F1";
  // exception for 12c4
  if (fCurrentFile.Contains("LHC12c4")) fMCperiodTPC="LHC12C4";
  // exception for 13d1 11d anchored prod
  if (fLHCperiod=="LHC11D" && fCurrentFile.Contains("LHC13d1")) fMCperiodTPC="LHC13D1";
}

//______________________________________________________________________________
void AliPIDResponse::SetITSParametrisation()
{
  //
  // Set the ITS parametrisation
  //
}

 
//______________________________________________________________________________
void AliPIDResponse::AddPointToHyperplane(TH2D* h, TLinearFitter* linExtrapolation, Int_t binX, Int_t binY)
{
  if (h->GetBinContent(binX, binY) <= 1e-4)
    return; // Reject bins without content (within some numerical precision) or with strange content
    
  Double_t coord[2] = {0, 0};
  coord[0] = h->GetXaxis()->GetBinCenter(binX);
  coord[1] = h->GetYaxis()->GetBinCenter(binY);
  Double_t binError = h->GetBinError(binX, binY);
  if (binError <= 0) {
    binError = 1000; // Should not happen because bins without content are rejected for the map (TH2D* h)
    printf("ERROR: This should never happen: Trying to add bin in addPointToHyperplane with error not set....\n");
  }
  linExtrapolation->AddPoint(coord, h->GetBinContent(binX, binY, binError));
}


//______________________________________________________________________________
TH2D* AliPIDResponse::RefineHistoViaLinearInterpolation(TH2D* h, Double_t refineFactorX, Double_t refineFactorY)
{
  if (!h)
    return 0x0;
  
  // Interpolate to finer map
  TLinearFitter* linExtrapolation = new TLinearFitter(2, "hyp2", "");
  
  Double_t upperMapBoundY = h->GetYaxis()->GetBinUpEdge(h->GetYaxis()->GetNbins());
  Double_t lowerMapBoundY = h->GetYaxis()->GetBinLowEdge(1);
  Int_t nBinsX = 30;
  // Binning was find to yield good results, if 40 bins are chosen for the range 0.0016 to 0.02. For the new variable range,
  // scale the number of bins correspondingly
  Int_t nBinsY = TMath::Nint((upperMapBoundY - lowerMapBoundY) / (0.02 - 0.0016) * 40);
  Int_t nBinsXrefined = nBinsX * refineFactorX;
  Int_t nBinsYrefined = nBinsY * refineFactorY; 
  
  TH2D* hRefined = new TH2D(Form("%s_refined", h->GetName()),  Form("%s (refined)", h->GetTitle()),
                            nBinsXrefined, h->GetXaxis()->GetBinLowEdge(1), h->GetXaxis()->GetBinUpEdge(h->GetXaxis()->GetNbins()),
                            nBinsYrefined, lowerMapBoundY, upperMapBoundY);
  
  for (Int_t binX = 1; binX <= nBinsXrefined; binX++)  {
    for (Int_t binY = 1; binY <= nBinsYrefined; binY++)  {
      
      hRefined->SetBinContent(binX, binY, 1); // Default value is 1
      
      Double_t centerX = hRefined->GetXaxis()->GetBinCenter(binX);
      Double_t centerY = hRefined->GetYaxis()->GetBinCenter(binY);
      
      /*OLD
      linExtrapolation->ClearPoints();
      
      // For interpolation: Just take the corresponding bin from the old histo.
      // For extrapolation: take the last available bin from the old histo.
      // If the boundaries are to be skipped, also skip the corresponding bins
      Int_t oldBinX = h->GetXaxis()->FindBin(centerX);
      if (oldBinX < 1)  
        oldBinX = 1;
      if (oldBinX > nBinsX)
        oldBinX = nBinsX;
      
      Int_t oldBinY = h->GetYaxis()->FindBin(centerY);
      if (oldBinY < 1)  
        oldBinY = 1;
      if (oldBinY > nBinsY)
        oldBinY = nBinsY;
      
      // Neighbours left column
      if (oldBinX >= 2) {
        if (oldBinY >= 2) {
          AddPointToHyperplane(h, linExtrapolation, oldBinX - 1, oldBinY - 1);
        }
        
        AddPointToHyperplane(h, linExtrapolation, oldBinX - 1, oldBinY);
        
        if (oldBinY < nBinsY) {
          AddPointToHyperplane(h, linExtrapolation, oldBinX - 1, oldBinY + 1);
        }
      }
      
      // Neighbours (and point itself) same column
      if (oldBinY >= 2) {
        AddPointToHyperplane(h, linExtrapolation, oldBinX, oldBinY - 1);
      }
        
      AddPointToHyperplane(h, linExtrapolation, oldBinX, oldBinY);
        
      if (oldBinY < nBinsY) {
        AddPointToHyperplane(h, linExtrapolation, oldBinX, oldBinY + 1);
      }
      
      // Neighbours right column
      if (oldBinX < nBinsX) {
        if (oldBinY >= 2) {
          AddPointToHyperplane(h, linExtrapolation, oldBinX + 1, oldBinY - 1);
        }
        
        AddPointToHyperplane(h, linExtrapolation, oldBinX + 1, oldBinY);
        
        if (oldBinY < nBinsY) {
          AddPointToHyperplane(h, linExtrapolation, oldBinX + 1, oldBinY + 1);
        }
      }
      
      
      // Fit 2D-hyperplane
      if (linExtrapolation->GetNpoints() <= 0)
        continue;
        
      if (linExtrapolation->Eval() != 0)// EvalRobust -> Takes much, much, [...], much more time (~hours instead of seconds)
        continue;
      
      // Fill the bin of the refined histogram with the extrapolated value
      Double_t interpolatedValue = linExtrapolation->GetParameter(0) + linExtrapolation->GetParameter(1) * centerX
                                 + linExtrapolation->GetParameter(2) * centerY;
      */
      Double_t interpolatedValue = h->Interpolate(centerX, centerY) ;
      hRefined->SetBinContent(binX, binY, interpolatedValue);      
    }
  } 
  
  
  // Problem: Interpolation does not work before/beyond center of first/last bin (as the name suggests).
  // Therefore, for each row in dEdx: Take last bin from old map and interpolate values from center and edge.
  // Assume line through these points and extropolate to last bin of refined map
  const Double_t firstOldXbinUpEdge = h->GetXaxis()->GetBinUpEdge(1);
  const Double_t firstOldXbinCenter = h->GetXaxis()->GetBinCenter(1);
  
  const Double_t oldXbinHalfWidth = firstOldXbinUpEdge - firstOldXbinCenter;
  
  const Double_t lastOldXbinLowEdge = h->GetXaxis()->GetBinLowEdge(h->GetNbinsX());
  const Double_t lastOldXbinCenter = h->GetXaxis()->GetBinCenter(h->GetNbinsX());
  
  for (Int_t binY = 1; binY <= nBinsYrefined; binY++)  {
    Double_t centerY = hRefined->GetYaxis()->GetBinCenter(binY);
    
    const Double_t interpolatedCenterFirstXbin = h->Interpolate(firstOldXbinCenter, centerY);
    const Double_t interpolatedUpEdgeFirstXbin = h->Interpolate(firstOldXbinUpEdge, centerY);
    
    const Double_t extrapolationSlopeFirstXbin = (interpolatedUpEdgeFirstXbin - interpolatedCenterFirstXbin) / oldXbinHalfWidth;
    const Double_t extrapolationOffsetFirstXbin = interpolatedCenterFirstXbin;
    
    
    const Double_t interpolatedCenterLastXbin = h->Interpolate(lastOldXbinCenter, centerY);
    const Double_t interpolatedLowEdgeLastXbin = h->Interpolate(lastOldXbinLowEdge, centerY);
    
    const Double_t extrapolationSlopeLastXbin = (interpolatedCenterLastXbin - interpolatedLowEdgeLastXbin) / oldXbinHalfWidth;
    const Double_t extrapolationOffsetLastXbin = interpolatedCenterLastXbin;

    for (Int_t binX = 1; binX <= nBinsXrefined; binX++)  {
      Double_t centerX = hRefined->GetXaxis()->GetBinCenter(binX);
     
      if (centerX < firstOldXbinCenter) {
        Double_t extrapolatedValue = extrapolationOffsetFirstXbin + (centerX - firstOldXbinCenter) * extrapolationSlopeFirstXbin;
        hRefined->SetBinContent(binX, binY, extrapolatedValue);      
      }
      else if (centerX <= lastOldXbinCenter) {
        continue;
      }
      else {
        Double_t extrapolatedValue = extrapolationOffsetLastXbin + (centerX - lastOldXbinCenter) * extrapolationSlopeLastXbin;
        hRefined->SetBinContent(binX, binY, extrapolatedValue);     
      }
    }
  } 
  
  delete linExtrapolation;
  
  return hRefined;
}

//______________________________________________________________________________
void AliPIDResponse::SetTPCEtaMaps(Double_t refineFactorMapX, Double_t refineFactorMapY,
                                   Double_t refineFactorSigmaMapX, Double_t refineFactorSigmaMapY)
{
  //
  // Load the TPC eta correction maps from the OADB
  //
  
  if (fUseTPCEtaCorrection == kFALSE) {
    // Disable eta correction via setting no maps
    if (!fTPCResponse.SetEtaCorrMap(0x0))
      AliInfo("Request to disable TPC eta correction -> Eta correction has been disabled"); 
    else
      AliError("Request to disable TPC eta correction -> Some error occured when unloading the correction maps");
    
    if (!fTPCResponse.SetSigmaParams(0x0, 0))
      AliInfo("Request to disable TPC eta correction -> Using old parametrisation for sigma"); 
    else
      AliError("Request to disable TPC eta correction -> Some error occured when unloading the sigma maps");
    
    return;
  }
  
  TString dataType = "DATA";
  TString period = fLHCperiod.IsNull() ? "No period information" : fLHCperiod;
  
  if (fIsMC)  {
    if (!(fTuneMConData && ((fTuneMConDataMask & kDetTPC) == kDetTPC))) {
      period=fMCperiodTPC;
      dataType="MC";
    }
    fRecoPass = 1;
    
    if (!(fTuneMConData && ((fTuneMConDataMask & kDetTPC) == kDetTPC)) && fMCperiodTPC.IsNull()) {
      AliFatal("MC detected, but no MC period set -> Not changing eta maps!");
      return;
    }
  }

  Int_t recopass = fRecoPass;
  if (fTuneMConData && ((fTuneMConDataMask & kDetTPC) == kDetTPC) )
    recopass = fRecoPassUser;
  
  TString defaultObj = Form("Default_%s_pass%d", dataType.Data(), recopass);
  
  AliInfo(Form("Current period and reco pass: %s.pass%d", period.Data(), recopass));
  
  // Invalidate old maps
  fTPCResponse.SetEtaCorrMap(0x0);
  fTPCResponse.SetSigmaParams(0x0, 0);
  
  
  TString fileNameMaps(Form("%s/COMMON/PID/data/TPCetaMaps.root", fOADBPath.Data()));
  if (!fCustomTPCetaMaps.IsNull()) fileNameMaps=fCustomTPCetaMaps;
  
  // Load the eta correction maps
  AliOADBContainer etaMapsCont(Form("TPCetaMaps_%s_pass%d", dataType.Data(), recopass)); 
  
  Int_t statusCont = etaMapsCont.InitFromFile(fileNameMaps.Data(), Form("TPCetaMaps_%s_pass%d", dataType.Data(), recopass));
  if (statusCont) {
    AliError("Failed initializing TPC eta correction maps from OADB -> Disabled eta correction");
    fUseTPCEtaCorrection = kFALSE;
  }
  else {
    AliInfo(Form("Loading TPC eta correction map from %s", fileNameMaps.Data()));
    
    TH2D* etaMap = 0x0;
    
    if (fIsMC && !(fTuneMConData && ((fTuneMConDataMask & kDetTPC) == kDetTPC))) {
      TString searchMap = Form("TPCetaMaps_%s_%s_pass%d", dataType.Data(), period.Data(), recopass);
      etaMap = dynamic_cast<TH2D *>(etaMapsCont.GetDefaultObject(searchMap.Data()));
      if (!etaMap) {
        // Try default object
        etaMap = dynamic_cast<TH2D *>(etaMapsCont.GetDefaultObject(defaultObj.Data()));
      }
    }
    else {
      etaMap = dynamic_cast<TH2D *>(etaMapsCont.GetObject(fRun, defaultObj.Data()));
    }
    
        
    if (!etaMap) {
      AliError(Form("TPC eta correction map not found for run %d and also no default map found -> Disabled eta correction!!!", fRun));
      fUseTPCEtaCorrection = kFALSE;
    }
    else {
      TH2D* etaMapRefined = RefineHistoViaLinearInterpolation(etaMap, refineFactorMapX, refineFactorMapY);
      
      if (etaMapRefined) {
        if (!fTPCResponse.SetEtaCorrMap(etaMapRefined)) {
          AliError(Form("Failed to set TPC eta correction map for run %d -> Disabled eta correction!!!", fRun));
          fTPCResponse.SetEtaCorrMap(0x0);
          fUseTPCEtaCorrection = kFALSE;
        }
        else {
          AliInfo(Form("Loaded TPC eta correction map (refine factors %.2f/%.2f) from %s: %s (MD5(map) = %s)", 
                       refineFactorMapX, refineFactorMapY, fileNameMaps.Data(), fTPCResponse.GetEtaCorrMap()->GetTitle(),
                       GetChecksum(fTPCResponse.GetEtaCorrMap()).Data()));
        }
        
        delete etaMapRefined;
      }
      else {
        AliError(Form("Failed to set TPC eta correction map for run %d (map was loaded, but couldn't be refined) -> Disabled eta correction!!!", fRun));
        fUseTPCEtaCorrection = kFALSE;
      }
    }
  }
  
  // If there was some problem loading the eta maps, it makes no sense to load the sigma maps (that require eta corrected data)
  if (fUseTPCEtaCorrection == kFALSE) {
    AliError("Failed to load TPC eta correction map required by sigma maps -> Using old parametrisation for sigma"); 
    return;
  }
  
  // Load the sigma parametrisation (1/dEdx vs tanTheta_local (~eta))
  AliOADBContainer etaSigmaMapsCont(Form("TPCetaSigmaMaps_%s_pass%d", dataType.Data(), recopass)); 
  
  statusCont = etaSigmaMapsCont.InitFromFile(fileNameMaps.Data(), Form("TPCetaSigmaMaps_%s_pass%d", dataType.Data(), recopass));
  if (statusCont) {
    AliError("Failed initializing TPC eta sigma maps from OADB -> Using old sigma parametrisation");
  }
  else {
    AliInfo(Form("Loading TPC eta sigma map from %s", fileNameMaps.Data()));
    
    TObjArray* etaSigmaPars = 0x0;
    
    if (fIsMC && !(fTuneMConData && ((fTuneMConDataMask & kDetTPC) == kDetTPC))) {
      TString searchMap = Form("TPCetaSigmaMaps_%s_%s_pass%d", dataType.Data(), period.Data(), recopass);
      etaSigmaPars = dynamic_cast<TObjArray *>(etaSigmaMapsCont.GetDefaultObject(searchMap.Data()));
      if (!etaSigmaPars) {
        // Try default object
        etaSigmaPars = dynamic_cast<TObjArray *>(etaSigmaMapsCont.GetDefaultObject(defaultObj.Data()));
      }
    }
    else {
      etaSigmaPars = dynamic_cast<TObjArray *>(etaSigmaMapsCont.GetObject(fRun, defaultObj.Data()));
    }
    
    if (!etaSigmaPars) {
      AliError(Form("TPC eta sigma parametrisation not found for run %d -> Using old sigma parametrisation!!!", fRun));
    }
    else {
      TH2D* etaSigmaPar1Map = dynamic_cast<TH2D *>(etaSigmaPars->FindObject("sigmaPar1Map"));
      TNamed* sigmaPar0Info = dynamic_cast<TNamed *>(etaSigmaPars->FindObject("sigmaPar0"));
      Double_t sigmaPar0 = 0.0;
      
      if (sigmaPar0Info) {
        TString sigmaPar0String = sigmaPar0Info->GetTitle();
        sigmaPar0 = sigmaPar0String.Atof();
      }
      else {
        // Something is weired because the object for parameter 0 could not be loaded -> New sigma parametrisation can not be used!
        etaSigmaPar1Map = 0x0;
      }
      
      TH2D* etaSigmaPar1MapRefined = RefineHistoViaLinearInterpolation(etaSigmaPar1Map, refineFactorSigmaMapX, refineFactorSigmaMapY);
      
      
      if (etaSigmaPar1MapRefined) {
        if (!fTPCResponse.SetSigmaParams(etaSigmaPar1MapRefined, sigmaPar0)) {
          AliError(Form("Failed to set TPC eta sigma map for run %d -> Using old sigma parametrisation!!!", fRun));
          fTPCResponse.SetSigmaParams(0x0, 0);
        }
        else {
          AliInfo(Form("Loaded TPC sigma correction map (refine factors %.2f/%.2f) from %s: %s (MD5(map) = %s, sigmaPar0 = %f)", 
                       refineFactorSigmaMapX, refineFactorSigmaMapY, fileNameMaps.Data(), fTPCResponse.GetSigmaPar1Map()->GetTitle(),
                       GetChecksum(fTPCResponse.GetSigmaPar1Map()).Data(), sigmaPar0));
        }
        
        delete etaSigmaPar1MapRefined;
      }
      else {
        AliError(Form("Failed to set TPC eta sigma map for run %d (map was loaded, but couldn't be refined) -> Using old sigma parametrisation!!!",
                      fRun));
      }
    }
  }
}

//______________________________________________________________________________
void AliPIDResponse::SetTPCPidResponseMaster()
{
  //
  // Load the TPC pid response functions from the OADB
  // Load the TPC voltage maps from OADB
  //
  //don't load twice for the moment
   if (fArrPidResponseMaster) return;
 

  //reset the PID response functions
  delete fArrPidResponseMaster;
  fArrPidResponseMaster=NULL;
  
  TFile *f=NULL;
  
  TString fileNamePIDresponse(Form("%s/COMMON/PID/data/TPCPIDResponse.root", fOADBPath.Data()));
  if (!fCustomTPCpidResponse.IsNull()) fileNamePIDresponse=fCustomTPCpidResponse;
  
  f=TFile::Open(fileNamePIDresponse.Data());
  if (f && f->IsOpen() && !f->IsZombie()){
    fArrPidResponseMaster=dynamic_cast<TObjArray*>(f->Get("TPCPIDResponse"));
  }
  delete f;

  TString fileNameVoltageMaps(Form("%s/COMMON/PID/data/TPCvoltageSettings.root", fOADBPath.Data()));
  f=TFile::Open(fileNameVoltageMaps.Data());
  if (f && f->IsOpen() && !f->IsZombie()){
    fOADBvoltageMaps=dynamic_cast<AliOADBContainer*>(f->Get("TPCvoltageSettings"));
  }
  delete f;
  
  if (!fArrPidResponseMaster){
    AliFatal(Form("Could not retrieve the TPC pid response from: %s",fileNamePIDresponse.Data()));
    return;
  }
  fArrPidResponseMaster->SetOwner();

  if (!fOADBvoltageMaps)
  {
    AliFatal(Form("Could not retrieve the TPC voltage maps from: %s",fileNameVoltageMaps.Data()));
  }
  fArrPidResponseMaster->SetOwner();
}

//______________________________________________________________________________
void AliPIDResponse::SetTPCParametrisation()
{
  //
  // Change BB parametrisation for current run
  //
  
  //
  //reset old splines
  //
  fTPCResponse.ResetSplines();
  
  if (fLHCperiod.IsNull()) {
    AliError("No period set, not changing parametrisation");
    return;
  }
  
  //
  // Set default parametrisations for data and MC
  //
  
  //data type
  TString datatype="DATA";
  //in case of mc fRecoPass is per default 1
  if (fIsMC) {
      if(!(fTuneMConData && ((fTuneMConDataMask & kDetTPC) == kDetTPC))) datatype="MC";
      fRecoPass=1;
  }

  // period
  TString period=fLHCperiod;
  if (fIsMC && !(fTuneMConData && ((fTuneMConDataMask & kDetTPC) == kDetTPC))) period=fMCperiodTPC;

  Int_t recopass = fRecoPass;
  if(fTuneMConData && ((fTuneMConDataMask & kDetTPC) == kDetTPC)) recopass = fRecoPassUser;
    
  AliInfo(Form("Searching splines for: %s %s PASS%d %s",datatype.Data(),period.Data(),recopass,fBeamType.Data()));
  Bool_t found=kFALSE;
  //
  //set the new PID splines
  //
  if (fArrPidResponseMaster){
    //for MC don't use period information
    //if (fIsMC) period="[A-Z0-9]*";
    //for MC use MC period information
    //pattern for the default entry (valid for all particles)
    TPRegexp reg(Form("TSPLINE3_%s_([A-Z]*)_%s_PASS%d_%s_MEAN(_*)([A-Z1-9]*)",datatype.Data(),period.Data(),recopass,fBeamType.Data()));

    //find particle id and gain scenario
    for (Int_t igainScenario=0; igainScenario<AliTPCPIDResponse::fgkNumberOfGainScenarios; igainScenario++)
    {
      TObject *grAll=NULL;
      TString gainScenario = AliTPCPIDResponse::GainScenarioName(igainScenario);
      gainScenario.ToUpper();
      //loop over entries and filter them
      for (Int_t iresp=0; iresp<fArrPidResponseMaster->GetEntriesFast();++iresp)
      {
        TObject *responseFunction=fArrPidResponseMaster->At(iresp);
        if (responseFunction==NULL) continue;
        TString responseName=responseFunction->GetName();
         
        if (!reg.MatchB(responseName)) continue;

        TObjArray *arr=reg.MatchS(responseName); if (!arr) continue;
        TObject* tmp=NULL;
        tmp=arr->At(1); if (!tmp) continue;
        TString particleName=tmp->GetName();
        tmp=arr->At(3); if (!tmp) continue;
        TString gainScenarioName=tmp->GetName();
        delete arr;
        if (particleName.IsNull()) continue;
        if (!grAll && particleName=="ALL" && gainScenarioName==gainScenario) grAll=responseFunction;
        else 
        {
          for (Int_t ispec=0; ispec<(AliTPCPIDResponse::fgkNumberOfParticleSpecies); ++ispec)
          {
            TString particle=AliPID::ParticleName(ispec);
            particle.ToUpper();
            //std::cout<<responseName<<" "<<particle<<" "<<particleName<<" "<<gainScenario<<" "<<gainScenarioName<<std::endl;
            if ( particle == particleName && gainScenario == gainScenarioName )
            {
              fTPCResponse.SetResponseFunction( responseFunction,
                                                (AliPID::EParticleType)ispec,
                                                (AliTPCPIDResponse::ETPCgainScenario)igainScenario );
              fTPCResponse.SetUseDatabase(kTRUE);
              AliInfo(Form("Adding graph: %d %d - %s (MD5(spline) = %s)",ispec,igainScenario,responseFunction->GetName(),
                           GetChecksum((TSpline3*)responseFunction).Data()));
              found=kTRUE;
              break;
            }
          }
        }
      }
      
      // Retrieve responsefunction for pions - will (if available) be used for muons if there are no dedicated muon splines.
      // For light nuclei, try to set the proton spline, if no dedicated splines are available.
      // In both cases: Use default splines, if no dedicated splines and no pion/proton splines are available.
      TObject* responseFunctionPion = fTPCResponse.GetResponseFunction( (AliPID::EParticleType)AliPID::kPion,                             
                                                                        (AliTPCPIDResponse::ETPCgainScenario)igainScenario);
      TObject* responseFunctionProton = fTPCResponse.GetResponseFunction( (AliPID::EParticleType)AliPID::kProton,                             
                                                                          (AliTPCPIDResponse::ETPCgainScenario)igainScenario);
      
      for (Int_t ispec=0; ispec<(AliTPCPIDResponse::fgkNumberOfParticleSpecies); ++ispec)
      {
        if (!fTPCResponse.GetResponseFunction( (AliPID::EParticleType)ispec,
          (AliTPCPIDResponse::ETPCgainScenario)igainScenario))
        {
          if (ispec == AliPID::kMuon) { // Muons
            if (responseFunctionPion) {
              fTPCResponse.SetResponseFunction( responseFunctionPion,
                                                (AliPID::EParticleType)ispec,
                                                (AliTPCPIDResponse::ETPCgainScenario)igainScenario );
              fTPCResponse.SetUseDatabase(kTRUE);
              AliInfo(Form("Adding graph: %d %d - %s (MD5(spline) = %s)",ispec,igainScenario,responseFunctionPion->GetName(),
                           GetChecksum((TSpline3*)responseFunctionPion).Data()));
              found=kTRUE;  
            }
            else if (grAll) {
              fTPCResponse.SetResponseFunction( grAll,
                                                (AliPID::EParticleType)ispec,
                                                (AliTPCPIDResponse::ETPCgainScenario)igainScenario );
              fTPCResponse.SetUseDatabase(kTRUE);
              AliInfo(Form("Adding graph: %d %d - %s (MD5(spline) = %s)",ispec,igainScenario,grAll->GetName(),
                           GetChecksum((TSpline3*)grAll).Data()));
              found=kTRUE;
            }
            //else
            //  AliError(Form("No splines found for muons (also no pion splines and no default splines) for gain scenario %d!", igainScenario));
          }
          else if (ispec >= AliPID::kSPECIES) { // Light nuclei
            if (responseFunctionProton) {
              fTPCResponse.SetResponseFunction( responseFunctionProton,
                                                (AliPID::EParticleType)ispec,
                                                (AliTPCPIDResponse::ETPCgainScenario)igainScenario );
              fTPCResponse.SetUseDatabase(kTRUE);
              AliInfo(Form("Adding graph: %d %d - %s (MD5(spline) = %s)",ispec,igainScenario,responseFunctionProton->GetName(),
                           GetChecksum((TSpline3*)responseFunctionProton).Data()));
              found=kTRUE;  
            }
            else if (grAll) {
              fTPCResponse.SetResponseFunction( grAll,
                                                (AliPID::EParticleType)ispec,
                                                (AliTPCPIDResponse::ETPCgainScenario)igainScenario );
              fTPCResponse.SetUseDatabase(kTRUE);
              AliInfo(Form("Adding graph: %d %d - %s (MD5(spline) = %s)",ispec,igainScenario,grAll->GetName(),
                           GetChecksum((TSpline3*)grAll).Data()));
              found=kTRUE;
            }
            //else
            //  AliError(Form("No splines found for species %d (also no proton splines and no default splines) for gain scenario %d!",
            //                ispec, igainScenario));
          }
        }
      }
    }
  }
  else AliInfo("no fArrPidResponseMaster");

  if (!found){
    AliError(Form("No splines found for: %s %s PASS%d %s",datatype.Data(),period.Data(),recopass,fBeamType.Data()));
  }


  //
  // Setup multiplicity correction (only used for non-pp collisions)
  //
  
  const Bool_t isPP = (fBeamType.CompareTo("PP") == 0);
  
  // 2013 pPb data taking at low luminosity
  const Bool_t isPPb2013LowLuminosity = period.Contains("LHC13B") || period.Contains("LHC13C") || period.Contains("LHC13D");
  // PbPb 2010, period 10h.pass2
  //TODO Needs further development const Bool_t is10hpass2 = period.Contains("LHC10H") && recopass == 2;
  
  
  // In case of MC without(!) tune on data activated for the TPC, don't use the multiplicity correction for the moment
  Bool_t isMCandNotTPCtuneOnData = fIsMC && !(fTuneMConData && ((fTuneMConDataMask & kDetTPC) == kDetTPC));
  
  // If correction is available, but disabled (highly NOT recommended!), print warning
  if (!fUseTPCMultiplicityCorrection && !isPP && !isMCandNotTPCtuneOnData) {
    //TODO: Needs further development if (is10hpass2 || isPPb2013LowLuminosity) {
    if (isPPb2013LowLuminosity) {
      AliWarning("Mulitplicity correction disabled, but correction parameters for this period exist. It is highly recommended to use enable the correction. Otherwise the splines might be off!");
    }
  }
  
  if (fUseTPCMultiplicityCorrection && !isPP && !isMCandNotTPCtuneOnData) {
    AliInfo("Multiplicity correction enabled!");
    
    //TODO After testing, load parameters from outside       
    /*TODO no correction for MC
    if (period.Contains("LHC11A10"))  {//LHC11A10A
      AliInfo("Using multiplicity correction parameters for 11a10!");
      fTPCResponse.SetParameterMultiplicityCorrection(0, 6.90133e-06);
      fTPCResponse.SetParameterMultiplicityCorrection(1, -1.22123e-03);
      fTPCResponse.SetParameterMultiplicityCorrection(2, 1.80220e-02);
      fTPCResponse.SetParameterMultiplicityCorrection(3, 0.1);
      fTPCResponse.SetParameterMultiplicityCorrection(4, 6.45306e-03);
      
      fTPCResponse.SetParameterMultiplicityCorrectionTanTheta(0, -2.85505e-07);
      fTPCResponse.SetParameterMultiplicityCorrectionTanTheta(1, -1.31911e-06);
      fTPCResponse.SetParameterMultiplicityCorrectionTanTheta(2, -0.5);

      fTPCResponse.SetParameterMultiplicitySigmaCorrection(0, -4.29665e-05);
      fTPCResponse.SetParameterMultiplicitySigmaCorrection(1, 1.37023e-02);
      fTPCResponse.SetParameterMultiplicitySigmaCorrection(2, -6.36337e-01);
      fTPCResponse.SetParameterMultiplicitySigmaCorrection(3, 1.13479e-02);
    }
    else*/ if (isPPb2013LowLuminosity)  {// 2013 pPb data taking at low luminosity
      AliInfo("Using multiplicity correction parameters for 13b.pass2 (at least also valid for 13{c,d} and pass 3)!");
      
      fTPCResponse.SetParameterMultiplicityCorrection(0, -5.906e-06);
      fTPCResponse.SetParameterMultiplicityCorrection(1, -5.064e-04);
      fTPCResponse.SetParameterMultiplicityCorrection(2, -3.521e-02);
      fTPCResponse.SetParameterMultiplicityCorrection(3, 2.469e-02);
      fTPCResponse.SetParameterMultiplicityCorrection(4, 0);
      
      fTPCResponse.SetParameterMultiplicityCorrectionTanTheta(0, -5.32e-06);
      fTPCResponse.SetParameterMultiplicityCorrectionTanTheta(1, 1.177e-05);
      fTPCResponse.SetParameterMultiplicityCorrectionTanTheta(2, -0.5);
      
      fTPCResponse.SetParameterMultiplicitySigmaCorrection(0, 0.);
      fTPCResponse.SetParameterMultiplicitySigmaCorrection(1, 0.);
      fTPCResponse.SetParameterMultiplicitySigmaCorrection(2, 0.);
      fTPCResponse.SetParameterMultiplicitySigmaCorrection(3, 0.);
      
      /* Not too bad, but far from perfect in the details
      fTPCResponse.SetParameterMultiplicityCorrection(0, -6.27187e-06);
      fTPCResponse.SetParameterMultiplicityCorrection(1, -4.60649e-04);
      fTPCResponse.SetParameterMultiplicityCorrection(2, -4.26450e-02);
      fTPCResponse.SetParameterMultiplicityCorrection(3, 2.40590e-02);
      fTPCResponse.SetParameterMultiplicityCorrection(4, 0);
      
      fTPCResponse.SetParameterMultiplicityCorrectionTanTheta(0, -5.338e-06);
      fTPCResponse.SetParameterMultiplicityCorrectionTanTheta(1, 1.220e-05);
      fTPCResponse.SetParameterMultiplicityCorrectionTanTheta(2, -0.5);
      
      fTPCResponse.SetParameterMultiplicitySigmaCorrection(0, 7.89237e-05);
      fTPCResponse.SetParameterMultiplicitySigmaCorrection(1, -1.30662e-02);
      fTPCResponse.SetParameterMultiplicitySigmaCorrection(2, 8.91548e-01);
      fTPCResponse.SetParameterMultiplicitySigmaCorrection(3, 1.47931e-02);
      */
    }
    /*TODO: Needs further development
    else if (is10hpass2) {    
      AliInfo("Using multiplicity correction parameters for 10h.pass2!");
      fTPCResponse.SetParameterMultiplicityCorrection(0, 3.21636e-07);
      fTPCResponse.SetParameterMultiplicityCorrection(1, -6.65876e-04);
      fTPCResponse.SetParameterMultiplicityCorrection(2, 1.28786e-03);
      fTPCResponse.SetParameterMultiplicityCorrection(3, 1.47677e-02);
      fTPCResponse.SetParameterMultiplicityCorrection(4, 0);
      
      fTPCResponse.SetParameterMultiplicityCorrectionTanTheta(0, 7.23591e-08);
      fTPCResponse.SetParameterMultiplicityCorrectionTanTheta(1, 2.7469e-06);
      fTPCResponse.SetParameterMultiplicityCorrectionTanTheta(2, -0.5);
      
      fTPCResponse.SetParameterMultiplicitySigmaCorrection(0, -1.22590e-05);
      fTPCResponse.SetParameterMultiplicitySigmaCorrection(1, 6.88888e-03);
      fTPCResponse.SetParameterMultiplicitySigmaCorrection(2, -3.20788e-01);
      fTPCResponse.SetParameterMultiplicitySigmaCorrection(3, 1.07345e-02);
    }
    */
    else {
      AliError(Form("Multiplicity correction is enabled, but no multiplicity correction parameters have been found for period %s.pass%d -> Mulitplicity correction DISABLED!", period.Data(), recopass));
      fUseTPCMultiplicityCorrection = kFALSE;
      fTPCResponse.ResetMultiplicityCorrectionFunctions();
    }
  }
  else {
    // Just set parameters such that overall correction factor is 1, i.e. no correction.
    // This is just a reasonable choice for the parameters for safety reasons. Disabling
    // the multiplicity correction will anyhow skip the calculation of the corresponding
    // correction factor inside THIS class. Nevertheless, experts can access the TPCPIDResponse
    // directly and use it for calculations - which should still give valid results, even if
    // the multiplicity correction is explicitely enabled in such expert calls.
    
    TString reasonForDisabling = "requested by user";
    if (fUseTPCMultiplicityCorrection) {
      if (isPP)
        reasonForDisabling = "pp collisions";
      else
        reasonForDisabling = "MC w/o tune on data";
    }
    
    AliInfo(Form("Multiplicity correction %sdisabled (%s)!", fUseTPCMultiplicityCorrection ? "automatically " : "",
                 reasonForDisabling.Data()));
    
    fUseTPCMultiplicityCorrection = kFALSE;
    fTPCResponse.ResetMultiplicityCorrectionFunctions();
  }
  
  if (fUseTPCMultiplicityCorrection) {
    for (Int_t i = 0; i <= 4 + 1; i++) {
      AliInfo(Form("parMultCorr: %d, %e", i, fTPCResponse.GetMultiplicityCorrectionFunction()->GetParameter(i)));
    }
    for (Int_t j = 0; j <= 2 + 1; j++) {
      AliInfo(Form("parMultCorrTanTheta: %d, %e", j, fTPCResponse.GetMultiplicityCorrectionFunctionTanTheta()->GetParameter(j)));
    }
    for (Int_t j = 0; j <= 3 + 1; j++) {
      AliInfo(Form("parMultSigmaCorr: %d, %e", j, fTPCResponse.GetMultiplicitySigmaCorrectionFunction()->GetParameter(j)));
    }
  }
  
  //
  // Setup old resolution parametrisation
  //
  
  //default
  fTPCResponse.SetSigma(3.79301e-03, 2.21280e+04);
  
  if (fRun>=122195){ //LHC10d
    fTPCResponse.SetSigma(2.30176e-02, 5.60422e+02);
  }
  
  if (fRun>=170719){ // LHC12a
    fTPCResponse.SetSigma(2.95714e-03, 1.01953e+05);
  }
  
  if (fRun>=177312){ // LHC12b
    fTPCResponse.SetSigma(3.74633e-03, 7.11829e+04 );
  }
  
  if (fRun>=186346){ // LHC12e
    fTPCResponse.SetSigma(8.62022e-04, 9.08156e+05);
  }
  
  if (fArrPidResponseMaster)
  fResolutionCorrection=(TF1*)fArrPidResponseMaster->FindObject(Form("TF1_%s_ALL_%s_PASS%d_%s_SIGMA",datatype.Data(),period.Data(),recopass,fBeamType.Data()));
  
  if (fResolutionCorrection) AliInfo(Form("Setting multiplicity correction function: %s  (MD5(corr function) = %s)",
                                          fResolutionCorrection->GetName(), GetChecksum(fResolutionCorrection).Data()));

  //read in the voltage map
  TVectorF* gsm = 0x0;
  if (fOADBvoltageMaps) gsm=dynamic_cast<TVectorF*>(fOADBvoltageMaps->GetObject(fRun));
  if (gsm) 
  {
    fTPCResponse.SetVoltageMap(*gsm);
    TString vals;
    AliInfo(Form("Reading the voltage map for run %d\n",fRun));
    vals="IROC A: "; for (Int_t i=0; i<18; i++){vals+=Form("%.2f ",(*gsm)[i]);}
    AliInfo(vals.Data());
    vals="IROC C: "; for (Int_t i=18; i<36; i++){vals+=Form("%.2f ",(*gsm)[i]);}
    AliInfo(vals.Data());
    vals="OROC A: "; for (Int_t i=36; i<54; i++){vals+=Form("%.2f ",(*gsm)[i]);}
    AliInfo(vals.Data());
    vals="OROC C: "; for (Int_t i=54; i<72; i++){vals+=Form("%.2f ",(*gsm)[i]);}
    AliInfo(vals.Data());
  }
  else AliInfo("no voltage map, ideal default assumed");
}

//______________________________________________________________________________
void AliPIDResponse::SetTRDPidResponseMaster()
{
  //
  // Load the TRD pid params and references from the OADB
  //
  if(fTRDPIDResponseObject) return;
  AliOADBContainer contParams("contParams"); 

  Int_t statusResponse = contParams.InitFromFile(Form("%s/COMMON/PID/data/TRDPIDResponse.root", fOADBPath.Data()), "AliTRDPIDResponseObject");
  if(statusResponse){
    AliError("Failed initializing PID Response Object from OADB");
  } else {
    AliInfo(Form("Loading TRD Response from %s/COMMON/PID/data/TRDPIDResponse.root", fOADBPath.Data()));
    fTRDPIDResponseObject = dynamic_cast<AliTRDPIDResponseObject *>(contParams.GetObject(fRun));
    if(!fTRDPIDResponseObject){
      AliError(Form("TRD Response not found in run %d", fRun));
    }
  }
}

//______________________________________________________________________________
void AliPIDResponse::InitializeTRDResponse(){
  //
  // Set PID Params and references to the TRD PID response
  // 
    fTRDResponse.SetPIDResponseObject(fTRDPIDResponseObject);
    fTRDResponse.SetdEdxParams(fTRDdEdxParams);
}

//______________________________________________________________________________
void AliPIDResponse::SetTRDSlices(UInt_t TRDslicesForPID[2],AliTRDPIDResponse::ETRDPIDMethod method) const{

    if(fLHCperiod.Contains("LHC10D") || fLHCperiod.Contains("LHC10E")){
	// backward compatibility for setting with 8 slices
	TRDslicesForPID[0] = 0;
	TRDslicesForPID[1] = 7;
    }
    else{
	if(method==AliTRDPIDResponse::kLQ1D){
	    TRDslicesForPID[0] = 0; // first Slice contains normalized dEdx
	    TRDslicesForPID[1] = 0;
	}
	if(method==AliTRDPIDResponse::kLQ2D){
	    TRDslicesForPID[0] = 1;
	    TRDslicesForPID[1] = 7;
	}
    }
    AliDebug(1,Form("Slice Range set to %d - %d",TRDslicesForPID[0],TRDslicesForPID[1]));
}
//______________________________________________________________________________ 
void AliPIDResponse::SetTRDdEdxParams()
{
  if(fTRDdEdxParams) return;

  const TString containerName = "TRDdEdxParamsContainer";
  AliOADBContainer cont(containerName.Data()); 
  
  const TString filePathNamePackage=Form("%s/COMMON/PID/data/TRDdEdxParams.root", fOADBPath.Data());

  const Int_t statusCont = cont.InitFromFile(filePathNamePackage.Data(), cont.GetName());
  if (statusCont){
    AliFatal("Failed initializing settings from OADB"); 
  }
  else{
    AliInfo(Form("Loading %s from %s\n", cont.GetName(), filePathNamePackage.Data()));

    fTRDdEdxParams = (AliTRDdEdxParams*)(cont.GetObject(fRun, "default"));
    //fTRDdEdxParams->Print();

    if(!fTRDdEdxParams){
      AliError(Form("TRD dEdx Params default not found"));
    }
  }
}

//______________________________________________________________________________
void AliPIDResponse::SetTOFPidResponseMaster()
{
  //
  // Load the TOF pid params from the OADB
  //

  if (fTOFPIDParams) delete fTOFPIDParams;
  fTOFPIDParams=NULL;

  TFile *oadbf = new TFile(Form("%s/COMMON/PID/data/TOFPIDParams.root",fOADBPath.Data()));
  if (oadbf && oadbf->IsOpen()) {
    AliInfo(Form("Loading TOF Params from %s/COMMON/PID/data/TOFPIDParams.root", fOADBPath.Data()));
    AliOADBContainer *oadbc = (AliOADBContainer *)oadbf->Get("TOFoadb");
    if (oadbc) fTOFPIDParams = dynamic_cast<AliTOFPIDParams *>(oadbc->GetObject(fRun,"TOFparams"));
    oadbf->Close();
    delete oadbc;
  }
  delete oadbf;

  if (!fTOFPIDParams) AliFatal("TOFPIDParams could not be retrieved");
}

//______________________________________________________________________________
void AliPIDResponse::InitializeTOFResponse(){
  //
  // Set PID Params to the TOF PID response
  //

  AliInfo("TOF PID Params loaded from OADB");
  AliInfo(Form("  TOF resolution %5.2f [ps]",fTOFPIDParams->GetTOFresolution()));
  AliInfo(Form("  StartTime method %d",fTOFPIDParams->GetStartTimeMethod()));
  AliInfo(Form("  TOF res. mom. params: %5.2f %5.2f %5.2f %5.2f",
               fTOFPIDParams->GetSigParams(0),fTOFPIDParams->GetSigParams(1),fTOFPIDParams->GetSigParams(2),fTOFPIDParams->GetSigParams(3)));
  AliInfo(Form("  Fraction of tracks within gaussian behaviour: %6.4f",fTOFPIDParams->GetTOFtail()));
  AliInfo(Form("  MC: Fraction of tracks (percentage) to cut to fit matching in data: %6.2f%%",fTOFPIDParams->GetTOFmatchingLossMC()));
  AliInfo(Form("  MC: Fraction of random hits (percentage) to add to fit mismatch in data: %6.2f%%",fTOFPIDParams->GetTOFadditionalMismForMC()));
  AliInfo(Form("  Start Time Offset %6.2f ps",fTOFPIDParams->GetTOFtimeOffset()));

  for (Int_t i=0;i<4;i++) {
    fTOFResponse.SetTrackParameter(i,fTOFPIDParams->GetSigParams(i));
  }
  fTOFResponse.SetTimeResolution(fTOFPIDParams->GetTOFresolution());

  AliInfo("TZERO resolution loaded from ESDrun/AODheader");
  Float_t t0Spread[4];
  for (Int_t i=0;i<4;i++) t0Spread[i]=fCurrentEvent->GetT0spread(i);
  AliInfo(Form("  TZERO spreads from data: (A+C)/2 %f A %f C %f (A'-C')/2: %f",t0Spread[0],t0Spread[1],t0Spread[2],t0Spread[3]));
  Float_t a = t0Spread[1]*t0Spread[1]-t0Spread[0]*t0Spread[0]+t0Spread[3]*t0Spread[3];
  Float_t c = t0Spread[2]*t0Spread[2]-t0Spread[0]*t0Spread[0]+t0Spread[3]*t0Spread[3];
  if ( (t0Spread[0] > 50. && t0Spread[0] < 400.) && (a > 0.) && (c>0.)) {
    fResT0AC=t0Spread[3];
    fResT0A=TMath::Sqrt(a);
    fResT0C=TMath::Sqrt(c);
  } else {
    AliInfo("  TZERO spreads not present or inconsistent, loading default");
    fResT0A=75.;
    fResT0C=65.;
    fResT0AC=55.;
  }
  AliInfo(Form("  TZERO resolution set to: T0A: %f [ps] T0C: %f [ps] T0AC %f [ps]",fResT0A,fResT0C,fResT0AC));

}

//______________________________________________________________________________
void AliPIDResponse::SetHMPIDPidResponseMaster()
{
  //
  // Load the HMPID pid params from the OADB
  //

  if (fHMPIDPIDParams) delete fHMPIDPIDParams;
  fHMPIDPIDParams=NULL;

  TFile *oadbf; 
  if(!fIsMC) oadbf = new TFile(Form("%s/COMMON/PID/data/HMPIDPIDParams.root",fOADBPath.Data()));
  else       oadbf = new TFile(Form("%s/COMMON/PID/MC/HMPIDPIDParams.root",fOADBPath.Data()));
  if (oadbf && oadbf->IsOpen()) {
    AliInfo(Form("Loading HMPID Params from %s/COMMON/PID/data/HMPIDPIDParams.root", fOADBPath.Data()));
    AliOADBContainer *oadbc = (AliOADBContainer *)oadbf->Get("HMPoadb");
    if (oadbc) fHMPIDPIDParams = dynamic_cast<AliHMPIDPIDParams *>(oadbc->GetObject(fRun,"HMPparams"));
    oadbf->Close();
    delete oadbc;
  }
  delete oadbf;

  if (!fHMPIDPIDParams) AliFatal("HMPIDPIDParams could not be retrieved");
}

//______________________________________________________________________________
void AliPIDResponse::InitializeHMPIDResponse(){
  //
  // Set PID Params to the HMPID PID response
  //

  fHMPIDResponse.SetRefIndexArray(fHMPIDPIDParams->GetHMPIDrefIndex());
}

//______________________________________________________________________________
Bool_t AliPIDResponse::IdentifiedAsElectronTRD(const AliVTrack *vtrack,Double_t efficiencyLevel,Double_t centrality,AliTRDPIDResponse::ETRDPIDMethod PIDmethod) const {
    // old function for compatibility
    Int_t ntracklets=0;
    return IdentifiedAsElectronTRD(vtrack,ntracklets,efficiencyLevel,centrality,PIDmethod);
}

//______________________________________________________________________________
Bool_t AliPIDResponse::IdentifiedAsElectronTRD(const AliVTrack *vtrack, Int_t &ntracklets,Double_t efficiencyLevel,Double_t centrality,AliTRDPIDResponse::ETRDPIDMethod PIDmethod) const {
  //
  // Check whether track is identified as electron under a given electron efficiency hypothesis
    //
    // ntracklets is the number of tracklets that has been used to calculate the PID signal

  Double_t probs[AliPID::kSPECIES];

  ntracklets =CalculateTRDResponse(vtrack,probs,PIDmethod);

  // Take mean of the TRD momenta in the given tracklets
  Float_t p = 0, trdmomenta[AliVTrack::kTRDnPlanes];
  Int_t nmomenta = 0;
  for(Int_t iPl=0;iPl<AliVTrack::kTRDnPlanes;iPl++){
    if(vtrack->GetTRDmomentum(iPl) > 0.){
      trdmomenta[nmomenta++] = vtrack->GetTRDmomentum(iPl); 
    }
  }
  p = TMath::Mean(nmomenta, trdmomenta);

  return fTRDResponse.IdentifiedAsElectron(ntracklets, probs, p, efficiencyLevel,centrality,PIDmethod);
}

//______________________________________________________________________________
void AliPIDResponse::SetEMCALPidResponseMaster()
{
  //
  // Load the EMCAL pid response functions from the OADB
  //
  TObjArray* fEMCALPIDParamsRun      = NULL;
  TObjArray* fEMCALPIDParamsPass     = NULL;

  if(fEMCALPIDParams) return;
  AliOADBContainer contParams("contParams"); 

  Int_t statusPars = contParams.InitFromFile(Form("%s/COMMON/PID/data/EMCALPIDParams.root", fOADBPath.Data()), "AliEMCALPIDParams");
  if(statusPars){
    AliError("Failed initializing PID Params from OADB");
  } 
  else {
    AliInfo(Form("Loading EMCAL Params from %s/COMMON/PID/data/EMCALPIDParams.root", fOADBPath.Data()));

    fEMCALPIDParamsRun = dynamic_cast<TObjArray *>(contParams.GetObject(fRun));
    if(fEMCALPIDParamsRun)  fEMCALPIDParamsPass = dynamic_cast<TObjArray *>(fEMCALPIDParamsRun->FindObject(Form("pass%d",fRecoPass)));
    if(fEMCALPIDParamsPass) fEMCALPIDParams     = dynamic_cast<TObjArray *>(fEMCALPIDParamsPass->FindObject(Form("EMCALPIDParams_Particles")));

    if(!fEMCALPIDParams){
      AliInfo(Form("EMCAL Params not found in run %d pass %d", fRun, fRecoPass));
      AliInfo("Will take the standard LHC11d instead ...");

      fEMCALPIDParamsRun = dynamic_cast<TObjArray *>(contParams.GetObject(156477));
      if(fEMCALPIDParamsRun)  fEMCALPIDParamsPass = dynamic_cast<TObjArray *>(fEMCALPIDParamsRun->FindObject(Form("pass%d",1)));
      if(fEMCALPIDParamsPass) fEMCALPIDParams     = dynamic_cast<TObjArray *>(fEMCALPIDParamsPass->FindObject(Form("EMCALPIDParams_Particles")));

      if(!fEMCALPIDParams){
	AliError(Form("DEFAULT EMCAL Params (LHC11d) not found in file %s/COMMON/PID/data/EMCALPIDParams.root", fOADBPath.Data()));	
      }
    }
  }
}

//______________________________________________________________________________
void AliPIDResponse::InitializeEMCALResponse(){
  //
  // Set PID Params to the EMCAL PID response
  // 
  fEMCALResponse.SetPIDParams(fEMCALPIDParams);

}

//______________________________________________________________________________
void AliPIDResponse::FillTrackDetectorPID(const AliVTrack *track, EDetector detector) const
{
  //
  // create detector PID information and setup the transient pointer in the track
  //
  
  // check if detector number is inside accepted range
  if (detector == kNdetectors) return;
  
  // get detector pid
  AliDetectorPID *detPID=const_cast<AliDetectorPID*>(track->GetDetectorPID());
  if (!detPID) {
    detPID=new AliDetectorPID;
    (const_cast<AliVTrack*>(track))->SetDetectorPID(detPID);
  }
  
  //check if values exist
  if (detPID->HasRawProbability(detector) && detPID->HasNumberOfSigmas(detector)) return;
  
  //TODO: which particles to include? See also the loops below...
  Double_t values[AliPID::kSPECIESC]={0};

  //probabilities
  EDetPidStatus status=GetComputePIDProbability(detector,track,AliPID::kSPECIESC,values);
  detPID->SetRawProbability(detector, values, (Int_t)AliPID::kSPECIESC, status);
  
  //nsigmas
  for (Int_t ipart=0; ipart<AliPID::kSPECIESC; ++ipart)
    values[ipart]=GetNumberOfSigmas(detector,track,(AliPID::EParticleType)ipart);
  // the pid status is the same for probabilities and nSigmas, so it is
  // fine to use the one from the probabilities also here
  detPID->SetNumberOfSigmas(detector, values, (Int_t)AliPID::kSPECIESC, status);
  
}

//______________________________________________________________________________
void AliPIDResponse::FillTrackDetectorPID()
{
  //
  // create detector PID information and setup the transient pointer in the track
  //

  if (!fCurrentEvent) return;
  
  for (Int_t itrack=0; itrack<fCurrentEvent->GetNumberOfTracks(); ++itrack){
    AliVTrack *track=dynamic_cast<AliVTrack*>(fCurrentEvent->GetTrack(itrack));
    if (!track) continue;

    for (Int_t idet=0; idet<kNdetectors; ++idet){
      FillTrackDetectorPID(track, (EDetector)idet);
    }
  }
}

//______________________________________________________________________________
void AliPIDResponse::SetTOFResponse(AliVEvent *vevent,EStartTimeType_t option){
  //
  // Set TOF response function
  // Input option for event_time used
  //

    Float_t t0spread = 0.; //vevent->GetEventTimeSpread();
    if(t0spread < 10) t0spread = 80;

    // T0-FILL and T0-TO offset (because of TOF misallignment
    Float_t starttimeoffset = 0;
    if(fTOFPIDParams && !(fIsMC)) starttimeoffset=fTOFPIDParams->GetTOFtimeOffset();
    if(fTOFPIDParams){
      fTOFtail = fTOFPIDParams->GetTOFtail();
      GetTOFResponse().SetTOFtail(fTOFtail);
    }

    // T0 from TOF algorithm
    Bool_t flagT0TOF=kFALSE;
    Bool_t flagT0T0=kFALSE;
    Float_t *startTime = new Float_t[fTOFResponse.GetNmomBins()];
    Float_t *startTimeRes = new Float_t[fTOFResponse.GetNmomBins()];
    Int_t *startTimeMask = new Int_t[fTOFResponse.GetNmomBins()];

    // T0-TOF arrays
    Float_t *estimatedT0event = new Float_t[fTOFResponse.GetNmomBins()];
    Float_t *estimatedT0resolution = new Float_t[fTOFResponse.GetNmomBins()];
    for(Int_t i=0;i<fTOFResponse.GetNmomBins();i++){
      estimatedT0event[i]=0.0;
      estimatedT0resolution[i]=0.0;
      startTimeMask[i] = 0;
    }

    Float_t resT0A=fResT0A;
    Float_t resT0C=fResT0C;
    Float_t resT0AC=fResT0AC;
    if(vevent->GetT0TOF()){ // check if T0 detector information is available
	flagT0T0=kTRUE;
    }


    AliTOFHeader *tofHeader = (AliTOFHeader*)vevent->GetTOFHeader();

    if (tofHeader) { // read global info and T0-TOF
      //      fTOFResponse.SetTimeResolution(tofHeader->GetTOFResolution()); // read from OADB in the initialization
      t0spread = tofHeader->GetT0spread(); // read t0 sprad
      if(t0spread < 10) t0spread = 80;

      flagT0TOF=kTRUE;
      for(Int_t i=0;i<fTOFResponse.GetNmomBins();i++){ // read T0-TOF default value
	startTime[i]=tofHeader->GetDefaultEventTimeVal();
	startTimeRes[i]=tofHeader->GetDefaultEventTimeRes();
	if(startTimeRes[i] < 1.e-5) startTimeRes[i] = t0spread;

	if(startTimeRes[i] > t0spread - 10 && TMath::Abs(startTime[i]) < 0.001) startTime[i] = -starttimeoffset; // apply offset for T0-fill
      }

      TArrayI *ibin=(TArrayI*)tofHeader->GetNvalues();
      TArrayF *t0Bin=(TArrayF*)tofHeader->GetEventTimeValues();
      TArrayF *t0ResBin=(TArrayF*)tofHeader->GetEventTimeRes();
      for(Int_t j=0;j < tofHeader->GetNbins();j++){ // fill T0-TOF in p-bins
	Int_t icurrent = (Int_t)ibin->GetAt(j);
	startTime[icurrent]=t0Bin->GetAt(j);
	startTimeRes[icurrent]=t0ResBin->GetAt(j);
	if(startTimeRes[icurrent] < 1.e-5) startTimeRes[icurrent] = t0spread;
	if(startTimeRes[icurrent] > t0spread - 10 && TMath::Abs(startTime[icurrent]) < 0.001) startTime[icurrent] = -starttimeoffset; // apply offset for T0-fill
      }
    }

    // for cut of 3 sigma on t0 spread
    Float_t t0cut = 3 * t0spread;
    if(t0cut < 500) t0cut = 500;

    if(option == kFILL_T0){ // T0-FILL is used
	for(Int_t i=0;i<fTOFResponse.GetNmomBins();i++){
	  estimatedT0event[i]=0.0-starttimeoffset;
	  estimatedT0resolution[i]=t0spread;
	}
	fTOFResponse.SetT0event(estimatedT0event);
	fTOFResponse.SetT0resolution(estimatedT0resolution);
    }

    if(option == kTOF_T0){ // T0-TOF is used when available (T0-FILL otherwise) from ESD
	if(flagT0TOF){
	    fTOFResponse.SetT0event(startTime);
	    fTOFResponse.SetT0resolution(startTimeRes);
	    for(Int_t i=0;i<fTOFResponse.GetNmomBins();i++){
	      if(startTimeRes[i]<t0spread) startTimeMask[i]=1;
	      fTOFResponse.SetT0binMask(i,startTimeMask[i]);
	    }
	}
	else{
	    for(Int_t i=0;i<fTOFResponse.GetNmomBins();i++){
	      estimatedT0event[i]=0.0-starttimeoffset;
	      estimatedT0resolution[i]=t0spread;
	      fTOFResponse.SetT0binMask(i,startTimeMask[i]);
	    }
	    fTOFResponse.SetT0event(estimatedT0event);
	    fTOFResponse.SetT0resolution(estimatedT0resolution);
	}
    }
    else if(option == kBest_T0){ // T0-T0 or T0-TOF are used when available (T0-FILL otherwise) from ESD
	Float_t t0AC=-10000;
	Float_t t0A=-10000;
	Float_t t0C=-10000;
	if(flagT0T0){
	    t0A= vevent->GetT0TOF()[1] - starttimeoffset;
	    t0C= vevent->GetT0TOF()[2] - starttimeoffset;
        //      t0AC= vevent->GetT0TOF()[0];
	    t0AC= t0A/resT0A/resT0A + t0C/resT0C/resT0C;
	    resT0AC= 1./TMath::Sqrt(1./resT0A/resT0A + 1./resT0C/resT0C);
	    t0AC *= resT0AC*resT0AC;
	}

	Float_t t0t0Best = 0;
	Float_t t0t0BestRes = 9999;
	Int_t t0used=0;
	if(TMath::Abs(t0A) < t0cut && TMath::Abs(t0C) < t0cut && TMath::Abs(t0C-t0A) < 500){
	    t0t0Best = t0AC;
	    t0t0BestRes = resT0AC;
	    t0used=6;
	}
	else if(TMath::Abs(t0C) < t0cut){
	    t0t0Best = t0C;
	    t0t0BestRes = resT0C;
	    t0used=4;
	}
	else if(TMath::Abs(t0A) < t0cut){
	    t0t0Best = t0A;
	    t0t0BestRes = resT0A;
	    t0used=2;
	}

	if(flagT0TOF){ // if T0-TOF info is available
	    for(Int_t i=0;i<fTOFResponse.GetNmomBins();i++){
		if(t0t0BestRes < 999){
		  if(startTimeRes[i] < t0spread){
		    Double_t wtot = 1./startTimeRes[i]/startTimeRes[i] + 1./t0t0BestRes/t0t0BestRes;
		    Double_t t0best = startTime[i]/startTimeRes[i]/startTimeRes[i] + t0t0Best/t0t0BestRes/t0t0BestRes;
		    estimatedT0event[i]=t0best / wtot;
		    estimatedT0resolution[i]=1./TMath::Sqrt(wtot);
		    startTimeMask[i] = t0used+1;
		  }
		  else {
		    estimatedT0event[i]=t0t0Best;
		    estimatedT0resolution[i]=t0t0BestRes;
		    startTimeMask[i] = t0used;
		  }
		}
		else{
		  estimatedT0event[i]=startTime[i];
		  estimatedT0resolution[i]=startTimeRes[i];
		  if(startTimeRes[i]<t0spread) startTimeMask[i]=1;
		}
		fTOFResponse.SetT0binMask(i,startTimeMask[i]);
	    }
	    fTOFResponse.SetT0event(estimatedT0event);
	    fTOFResponse.SetT0resolution(estimatedT0resolution);
	}
	else{ // if no T0-TOF info is available
	    for(Int_t i=0;i<fTOFResponse.GetNmomBins();i++){
	      fTOFResponse.SetT0binMask(i,t0used);
	      if(t0t0BestRes < 999){
		estimatedT0event[i]=t0t0Best;
		estimatedT0resolution[i]=t0t0BestRes;
	      }
	      else{
		estimatedT0event[i]=0.0-starttimeoffset;
		estimatedT0resolution[i]=t0spread;
	      }
	    }
	    fTOFResponse.SetT0event(estimatedT0event);
	    fTOFResponse.SetT0resolution(estimatedT0resolution);
	}
    }

    else if(option == kT0_T0){ // T0-T0 is used when available (T0-FILL otherwise)
	Float_t t0AC=-10000;
	Float_t t0A=-10000;
	Float_t t0C=-10000;
	if(flagT0T0){
	    t0A= vevent->GetT0TOF()[1] - starttimeoffset;
	    t0C= vevent->GetT0TOF()[2] - starttimeoffset;
        //      t0AC= vevent->GetT0TOF()[0];
	    t0AC= t0A/resT0A/resT0A + t0C/resT0C/resT0C;
	    resT0AC= 1./TMath::Sqrt(1./resT0A/resT0A + 1./resT0C/resT0C);
	    t0AC *= resT0AC*resT0AC;
	}

	if(TMath::Abs(t0A) < t0cut && TMath::Abs(t0C) < t0cut && TMath::Abs(t0C-t0A) < 500){
	    for(Int_t i=0;i<fTOFResponse.GetNmomBins();i++){
	      estimatedT0event[i]=t0AC;
	      estimatedT0resolution[i]=resT0AC;
	      fTOFResponse.SetT0binMask(i,6);
	    }
	}
	else if(TMath::Abs(t0C) < t0cut){
	    for(Int_t i=0;i<fTOFResponse.GetNmomBins();i++){
	      estimatedT0event[i]=t0C;
	      estimatedT0resolution[i]=resT0C;
	      fTOFResponse.SetT0binMask(i,4);
	    }
	}
	else if(TMath::Abs(t0A) < t0cut){
	    for(Int_t i=0;i<fTOFResponse.GetNmomBins();i++){
	      estimatedT0event[i]=t0A;
	      estimatedT0resolution[i]=resT0A;
	      fTOFResponse.SetT0binMask(i,2);
	    }
	}
	else{
	    for(Int_t i=0;i<fTOFResponse.GetNmomBins();i++){
	      estimatedT0event[i]= 0.0 - starttimeoffset;
	      estimatedT0resolution[i]=t0spread;
	      fTOFResponse.SetT0binMask(i,0);
	    }
	}
	fTOFResponse.SetT0event(estimatedT0event);
	fTOFResponse.SetT0resolution(estimatedT0resolution);
    }

    delete [] startTime;
    delete [] startTimeRes;
    delete [] startTimeMask;
    delete [] estimatedT0event;
    delete [] estimatedT0resolution;
}

//______________________________________________________________________________
// private non cached versions of the PID calculation
//


//______________________________________________________________________________
Float_t AliPIDResponse::GetNumberOfSigmas(EDetector detector, const AliVParticle *vtrack, AliPID::EParticleType type) const
{
  //
  // NumberOfSigmas for 'detCode'
  //

  const AliVTrack *track=static_cast<const AliVTrack*>(vtrack);
  
  switch (detector){
    case kITS:   return GetNumberOfSigmasITS(track, type);   break;
    case kTPC:   return GetNumberOfSigmasTPC(track, type);   break;
    case kTRD:   return GetNumberOfSigmasTRD(track, type);   break;
    case kTOF:   return GetNumberOfSigmasTOF(track, type);   break;
    case kHMPID: return GetNumberOfSigmasHMPID(track, type); break;
    case kEMCAL: return GetNumberOfSigmasEMCAL(track, type); break;
    default: return -999.;
  }

  return -999.;
}

//______________________________________________________________________________
Float_t AliPIDResponse::GetNumberOfSigmasITS(const AliVParticle *vtrack, AliPID::EParticleType type) const
{
  //
  // Calculate the number of sigmas in the ITS
  //
  
  AliVTrack *track=(AliVTrack*)vtrack;

  const EDetPidStatus pidStatus=GetITSPIDStatus(track);
  if (pidStatus!=kDetPidOk) return -999.;

  return fITSResponse.GetNumberOfSigmas(track,type);
}

//______________________________________________________________________________
Float_t AliPIDResponse::GetNumberOfSigmasTPC(const AliVParticle *vtrack, AliPID::EParticleType type) const
{
  //
  // Calculate the number of sigmas in the TPC
  //
  
  AliVTrack *track=(AliVTrack*)vtrack;

  const EDetPidStatus pidStatus=GetTPCPIDStatus(track);
  if (pidStatus==kDetNoSignal) return -999.;

  // the following call is needed in order to fill the transient data member
  // fTPCsignalTuned which is used in the TPCPIDResponse to judge
  // if using tuned on data
  if (fTuneMConData && ((fTuneMConDataMask & kDetTPC) == kDetTPC))
    this->GetTPCsignalTunedOnData(track);
  
  return fTPCResponse.GetNumberOfSigmas(track, type, AliTPCPIDResponse::kdEdxDefault, fUseTPCEtaCorrection, fUseTPCMultiplicityCorrection);
}

//______________________________________________________________________________
Float_t AliPIDResponse::GetNumberOfSigmasTRD(const AliVParticle *vtrack, AliPID::EParticleType type) const
{
  //
  // Calculate the number of sigmas in the TRD
  //
  
  AliVTrack *track=(AliVTrack*)vtrack;
  
  const EDetPidStatus pidStatus=GetTRDPIDStatus(track);
  if (pidStatus!=kDetPidOk) return -999.;
  
  return fTRDResponse.GetNumberOfSigmas(track,type);
}

//______________________________________________________________________________
Float_t AliPIDResponse::GetNumberOfSigmasTOF(const AliVParticle *vtrack, AliPID::EParticleType type) const
{
  //
  // Calculate the number of sigmas in the TOF
  //
  
  AliVTrack *track=(AliVTrack*)vtrack;

  const EDetPidStatus pidStatus=GetTOFPIDStatus(track);
  if (pidStatus!=kDetPidOk) return -999.;
  
  return GetNumberOfSigmasTOFold(vtrack, type);
}
//______________________________________________________________________________

Float_t AliPIDResponse::GetNumberOfSigmasHMPID(const AliVParticle *vtrack, AliPID::EParticleType type) const
{
  //
  // Calculate the number of sigmas in the HMPID
  //  
  AliVTrack *track=(AliVTrack*)vtrack;
    
  const EDetPidStatus pidStatus=GetHMPIDPIDStatus(track);
  if (pidStatus!=kDetPidOk) return -999.; 
  
  return fHMPIDResponse.GetNumberOfSigmas(track, type);
}

//______________________________________________________________________________
Float_t AliPIDResponse::GetNumberOfSigmasEMCAL(const AliVParticle *vtrack, AliPID::EParticleType type) const
{
  //
  // Calculate the number of sigmas in the EMCAL
  //
  
  AliVTrack *track=(AliVTrack*)vtrack;

  const EDetPidStatus pidStatus=GetEMCALPIDStatus(track);
  if (pidStatus!=kDetPidOk) return -999.;

  const Int_t nMatchClus = track->GetEMCALcluster();
  AliVCluster *matchedClus = (AliVCluster*)fCurrentEvent->GetCaloCluster(nMatchClus);
  
  const Double_t mom    = track->P();
  const Double_t pt     = track->Pt();
  const Int_t    charge = track->Charge();
  const Double_t fClsE  = matchedClus->E();
  const Double_t EovP   = fClsE/mom;
  
  return fEMCALResponse.GetNumberOfSigmas(pt,EovP,type,charge);
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetSignalDeltaITS(const AliVParticle *vtrack, AliPID::EParticleType type, Double_t &val, Bool_t ratio/*=kFALSE*/) const
{
  //
  // Signal minus expected Signal for ITS
  //
  AliVTrack *track=(AliVTrack*)vtrack;
  val=fITSResponse.GetSignalDelta(track,type,ratio);
  
  return GetITSPIDStatus(track);
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetSignalDeltaTPC(const AliVParticle *vtrack, AliPID::EParticleType type, Double_t &val, Bool_t ratio/*=kFALSE*/) const
{
  //
  // Signal minus expected Signal for TPC
  //
  AliVTrack *track=(AliVTrack*)vtrack;
  
  // the following call is needed in order to fill the transient data member
  // fTPCsignalTuned which is used in the TPCPIDResponse to judge
  // if using tuned on data
  if (fTuneMConData && ((fTuneMConDataMask & kDetTPC) == kDetTPC))
    this->GetTPCsignalTunedOnData(track);
  
  val=fTPCResponse.GetSignalDelta(track, type, AliTPCPIDResponse::kdEdxDefault, fUseTPCEtaCorrection, fUseTPCMultiplicityCorrection, ratio);
  
  return GetTPCPIDStatus(track);
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetSignalDeltaTRD(const AliVParticle *vtrack, AliPID::EParticleType type, Double_t &val, Bool_t ratio/*=kFALSE*/) const
{
  //
  // Signal minus expected Signal for TRD
  //
  AliVTrack *track=(AliVTrack*)vtrack;
  val=fTRDResponse.GetSignalDelta(track,type,ratio);
  
  return GetTRDPIDStatus(track);
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetSignalDeltaTOF(const AliVParticle *vtrack, AliPID::EParticleType type, Double_t &val, Bool_t ratio/*=kFALSE*/) const
{
  //
  // Signal minus expected Signal for TOF
  //
  AliVTrack *track=(AliVTrack*)vtrack;
  val=GetSignalDeltaTOFold(track, type, ratio);
  
  return GetTOFPIDStatus(track);
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetSignalDeltaHMPID(const AliVParticle *vtrack, AliPID::EParticleType type, Double_t &val, Bool_t ratio/*=kFALSE*/) const
{
  //
  // Signal minus expected Signal for HMPID
  //
  AliVTrack *track=(AliVTrack*)vtrack;
  val=fHMPIDResponse.GetSignalDelta(track, type, ratio);
  
  return GetHMPIDPIDStatus(track);
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetComputePIDProbability  (EDetector detCode,  const AliVTrack *track, Int_t nSpecies, Double_t p[]) const
{
  //
  // Compute PID response of 'detCode'
  //

  switch (detCode){
    case kITS: return GetComputeITSProbability(track, nSpecies, p); break;
    case kTPC: return GetComputeTPCProbability(track, nSpecies, p); break;
    case kTRD: return GetComputeTRDProbability(track, nSpecies, p); break;
    case kTOF: return GetComputeTOFProbability(track, nSpecies, p); break;
    case kPHOS: return GetComputePHOSProbability(track, nSpecies, p); break;
    case kEMCAL: return GetComputeEMCALProbability(track, nSpecies, p); break;
    case kHMPID: return GetComputeHMPIDProbability(track, nSpecies, p); break;
    default: return kDetNoSignal;
  }
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetComputeITSProbability  (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const
{
  //
  // Compute PID response for the ITS
  //
  
  // set flat distribution (no decision)
  for (Int_t j=0; j<nSpecies; j++) p[j]=1./nSpecies;
  
  const EDetPidStatus pidStatus=GetITSPIDStatus(track);
  if (pidStatus!=kDetPidOk) return pidStatus;
  
  if (track->GetDetectorPID()){
    return track->GetDetectorPID()->GetRawProbability(kITS, p, nSpecies);
  }
  
  //check for ITS standalone tracks
  Bool_t isSA=kTRUE;
  if( track->GetStatus() & AliVTrack::kTPCin ) isSA=kFALSE;

  Double_t mom=track->P();
  Double_t dedx=track->GetITSsignal();
  Double_t momITS=mom;
  UChar_t clumap=track->GetITSClusterMap();
  Int_t nPointsForPid=0;
  for(Int_t i=2; i<6; i++){
    if(clumap&(1<<i)) ++nPointsForPid;
  }

  Bool_t mismatch=kTRUE/*, heavy=kTRUE*/;
  for (Int_t j=0; j<nSpecies; j++) {
    Double_t mass=AliPID::ParticleMassZ(j);//GeV/c^2
    const Double_t chargeFactor = TMath::Power(AliPID::ParticleCharge(j),2.);
    Double_t bethe=fITSResponse.Bethe(momITS,mass)*chargeFactor;
    //TODO: in case of the electron, use the SA parametrisation,
    //      this needs to be changed if ITS provides a parametrisation
    //      for electrons also for ITS+TPC tracks
    Double_t sigma=fITSResponse.GetResolution(bethe,nPointsForPid,isSA || (j==(Int_t)AliPID::kElectron));
    if (TMath::Abs(dedx-bethe) > fRange*sigma) {
      p[j]=TMath::Exp(-0.5*fRange*fRange)/sigma;
    } else {
      p[j]=TMath::Exp(-0.5*(dedx-bethe)*(dedx-bethe)/(sigma*sigma))/sigma;
      mismatch=kFALSE;
    }
  }

  if (mismatch){
    for (Int_t j=0; j<nSpecies; j++) p[j]=1./nSpecies;
  }

  return kDetPidOk;
}
//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetComputeTPCProbability  (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const
{
  //
  // Compute PID response for the TPC
  //
  
  // set flat distribution (no decision)
  for (Int_t j=0; j<nSpecies; j++) p[j]=1./nSpecies;
  
  const EDetPidStatus pidStatus=GetTPCPIDStatus(track);
  if (pidStatus==kDetNoSignal) return pidStatus;
  
  Double_t dedx=track->GetTPCsignal();
  Bool_t mismatch=kTRUE/*, heavy=kTRUE*/;
  
  if (fTuneMConData && ((fTuneMConDataMask & kDetTPC) == kDetTPC)) dedx = this->GetTPCsignalTunedOnData(track);
  
  Double_t bethe = 0.;
  Double_t sigma = 0.;
  
  for (Int_t j=0; j<nSpecies; j++) {
    AliPID::EParticleType type=AliPID::EParticleType(j);
    
    bethe=fTPCResponse.GetExpectedSignal(track, type, AliTPCPIDResponse::kdEdxDefault, fUseTPCEtaCorrection, fUseTPCMultiplicityCorrection);
    sigma=fTPCResponse.GetExpectedSigma(track, type, AliTPCPIDResponse::kdEdxDefault, fUseTPCEtaCorrection, fUseTPCMultiplicityCorrection);
    
    if (TMath::Abs(dedx-bethe) > fRange*sigma) {
      p[j]=TMath::Exp(-0.5*fRange*fRange)/sigma;
    } else {
      p[j]=TMath::Exp(-0.5*(dedx-bethe)*(dedx-bethe)/(sigma*sigma))/sigma;
      mismatch=kFALSE;
    }
  }
  
  if (mismatch){
    for (Int_t j=0; j<nSpecies; j++) p[j]=1./nSpecies;
  }
  
  return pidStatus;
}
//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetComputeTOFProbability  (const AliVTrack *track, Int_t nSpecies, Double_t p[],Bool_t kNoMism) const
{
  //
  // Compute PID probabilities for TOF
  //

  fgTOFmismatchProb = 1E-8;

  // centrality --> fCurrCentrality
  // Beam type --> fBeamTypeNum
  // N TOF cluster --> TOF header --> to get the TOF header we need to add a virtual method in AliVTrack extended to ESD and AOD tracks
  // isMC --> fIsMC
  Float_t pt = track->Pt();
  Float_t mismPropagationFactor[10] = {1.,1.,1.,1.,1.,1.,1.,1.,1.,1.};
  if(! (kNoMism | fNoTOFmism)){ // this flag allows to disable mismatch for iterative procedure to get priors
    mismPropagationFactor[3] = 1 + TMath::Exp(1 - 1.12*pt);// it has to be alligned with the one in AliPIDCombined
    mismPropagationFactor[4] = 1 + 1./(4.71114 - 5.72372*pt + 2.94715*pt*pt);// it has to be alligned with the one in AliPIDCombined
    
  Int_t nTOFcluster = 0;
  if(track->GetTOFHeader() && track->GetTOFHeader()->GetTriggerMask() && track->GetTOFHeader()->GetNumberOfTOFclusters() > -1){ // N TOF clusters available
    nTOFcluster = track->GetTOFHeader()->GetNumberOfTOFclusters();
    if(fIsMC) nTOFcluster = Int_t(nTOFcluster * 1.5); // +50% in MC
  }
  else{
    switch(fBeamTypeNum){
      case kPP: // pp
	nTOFcluster = 80;
	break;
      case kPPB: // pPb 5.05 ATeV
	nTOFcluster = Int_t(308 - 2.12*fCurrCentrality + TMath::Exp(4.917 -0.1604*fCurrCentrality));
	break;
      case kPBPB: // PbPb 2.76 ATeV
	nTOFcluster = Int_t(TMath::Exp(9.4 - 0.022*fCurrCentrality));
	break;
    }
  }

    switch(fBeamTypeNum){ // matching window factors for 3 cm and 10 cm (about (10/3)^2)
    case kPP: // pp 7 TeV
      nTOFcluster *= 10;
      break;
    case kPPB: // pPb 5.05 ATeV
      nTOFcluster *= 10;
      break;
    case kPBPB: // pPb 5.05 ATeV
      //       nTOFcluster *= 1;
      break;
    }
    
    if(nTOFcluster < 0) nTOFcluster = 10;

    
    fgTOFmismatchProb=fTOFResponse.GetMismatchProbability(track->GetTOFsignal(),track->Eta()) * nTOFcluster *6E-6 * (1 + 2.90505e-01/pt/pt); // mism weight * tof occupancy (including matching window factor) * pt dependence
    
  }

  // set flat distribution (no decision)
  for (Int_t j=0; j<nSpecies; j++) p[j]=1./nSpecies;
  
  const EDetPidStatus pidStatus=GetTOFPIDStatus(track);
  if (pidStatus!=kDetPidOk) return pidStatus;

  const Double_t meanCorrFactor = 0.07/fTOFtail; // Correction factor on the mean because of the tail (should be ~ 0.1 with tail = 1.1)
  
  for (Int_t j=0; j<nSpecies; j++) {
    AliPID::EParticleType type=AliPID::EParticleType(j);
    const Double_t nsigmas=GetNumberOfSigmasTOFold(track,type) + meanCorrFactor;
    
    const Double_t expTime = fTOFResponse.GetExpectedSignal(track,type);
    const Double_t sig     = fTOFResponse.GetExpectedSigma(track->P(),expTime,AliPID::ParticleMassZ(type));

    if(nsigmas < fTOFtail)
      p[j] = TMath::Exp(-0.5*nsigmas*nsigmas)/sig;
    else
      p[j] = TMath::Exp(-(nsigmas - fTOFtail*0.5)*fTOFtail)/sig;
    
    p[j] += fgTOFmismatchProb*mismPropagationFactor[j];
  }
  
  return kDetPidOk;
}

Int_t AliPIDResponse::CalculateTRDResponse(const AliVTrack *track,Double_t p[],AliTRDPIDResponse::ETRDPIDMethod PIDmethod) const
{
    // new function for backward compatibility
    // returns number of tracklets PID

    UInt_t TRDslicesForPID[2];
    SetTRDSlices(TRDslicesForPID,PIDmethod);

    Float_t mom[6]={0.};
    Double_t dedx[48]={0.};  // Allocate space for the maximum number of TRD slices
    Int_t nslices = TRDslicesForPID[1] - TRDslicesForPID[0] + 1;
    AliDebug(1, Form("First Slice: %d, Last Slice: %d, Number of slices: %d",  TRDslicesForPID[0], TRDslicesForPID[1], nslices));
    for(UInt_t ilayer = 0; ilayer < 6; ilayer++){
	mom[ilayer] = track->GetTRDmomentum(ilayer);
	for(UInt_t islice = TRDslicesForPID[0]; islice <= TRDslicesForPID[1]; islice++){
	    dedx[ilayer*nslices+islice-TRDslicesForPID[0]] = track->GetTRDslice(ilayer, islice);
	}
    }

    return fTRDResponse.GetResponse(nslices, dedx, mom, p,PIDmethod);

}
//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetComputeTRDProbability  (const AliVTrack *track, Int_t nSpecies, Double_t p[],AliTRDPIDResponse::ETRDPIDMethod PIDmethod) const
{
  //
  // Compute PID probabilities for the TRD
  //
  
  // set flat distribution (no decision)
  for (Int_t j=0; j<nSpecies; j++) p[j]=1./nSpecies;
  
  const EDetPidStatus pidStatus=GetTRDPIDStatus(track);
  if (pidStatus!=kDetPidOk) return pidStatus;

  CalculateTRDResponse(track,p,PIDmethod);

  return kDetPidOk;
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetComputeEMCALProbability  (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const
{
  //
  // Compute PID response for the EMCAL
  //
  
  for (Int_t j=0; j<nSpecies; j++) p[j]=1./nSpecies;

  const EDetPidStatus pidStatus=GetEMCALPIDStatus(track);
  if (pidStatus!=kDetPidOk) return pidStatus;

  const Int_t nMatchClus = track->GetEMCALcluster();
  AliVCluster *matchedClus = (AliVCluster*)fCurrentEvent->GetCaloCluster(nMatchClus);
  
  const Double_t mom    = track->P();
  const Double_t pt     = track->Pt();
  const Int_t    charge = track->Charge();
  const Double_t fClsE  = matchedClus->E();
  const Double_t EovP   = fClsE/mom;
  
  // compute the probabilities
  fEMCALResponse.ComputeEMCALProbability(nSpecies,pt,EovP,charge,p);
  return kDetPidOk;
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetComputePHOSProbability (const AliVTrack */*track*/, Int_t nSpecies, Double_t p[]) const
{
  //
  // Compute PID response for the PHOS
  //
  
  // set flat distribution (no decision)
  for (Int_t j=0; j<nSpecies; j++) p[j]=1./nSpecies;
  return kDetNoSignal;
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetComputeHMPIDProbability(const AliVTrack *track, Int_t nSpecies, Double_t p[]) const
{
  //
  // Compute PID response for the HMPID
  //
  
  // set flat distribution (no decision)
  for (Int_t j=0; j<nSpecies; j++) p[j]=1./nSpecies;
  
  const EDetPidStatus pidStatus=GetHMPIDPIDStatus(track);
  if (pidStatus!=kDetPidOk) return pidStatus;
  
  fHMPIDResponse.GetProbability(track,nSpecies,p);
    
  return kDetPidOk;
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetITSPIDStatus(const AliVTrack *track) const
{
  // compute ITS pid status

  // check status bits
  if ((track->GetStatus()&AliVTrack::kITSin)==0 &&
    (track->GetStatus()&AliVTrack::kITSout)==0) return kDetNoSignal;

  const Float_t dEdx=track->GetITSsignal();
  if (dEdx<=0) return kDetNoSignal;
  
  // requite at least 3 pid clusters
  const UChar_t clumap=track->GetITSClusterMap();
  Int_t nPointsForPid=0;
  for(Int_t i=2; i<6; i++){
    if(clumap&(1<<i)) ++nPointsForPid;
  }
  
  if(nPointsForPid<3) { 
    return kDetNoSignal;
  }
  
  return kDetPidOk;
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse:: GetTPCPIDStatus(const AliVTrack *track) const
{
  // compute TPC pid status
  
  // check quality of the track
  if ( (track->GetStatus()&AliVTrack::kTPCin )==0 && (track->GetStatus()&AliVTrack::kTPCout)==0 ) return kDetNoSignal;

  // check pid values
  const Double_t dedx=track->GetTPCsignal();
  const UShort_t signalN=track->GetTPCsignalN();
  if (signalN<10 || dedx<10) return kDetNoSignal;

  if (!(fArrPidResponseMaster && fArrPidResponseMaster->At(AliPID::kPion))) return kDetNoParams;
  
  return kDetPidOk;
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetTRDPIDStatus(const AliVTrack *track) const
{
  // compute TRD pid status

  if((track->GetStatus()&AliVTrack::kTRDout)==0) return kDetNoSignal;
  return kDetPidOk;
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetTOFPIDStatus(const AliVTrack *track) const
{
  // compute TOF pid status

  if ((track->GetStatus()&AliVTrack::kTOFout)==0) return kDetNoSignal;
  if ((track->GetStatus()&AliVTrack::kTIME)==0) return kDetNoSignal;

  return kDetPidOk;
}

//______________________________________________________________________________
Float_t AliPIDResponse::GetTOFMismatchProbability(const AliVTrack *track) const
{
  // compute mismatch probability cross-checking at 5 sigmas with TPC
  // currently just implemented as a 5 sigma compatibility cut

  if(!track) return fgTOFmismatchProb;

  // check pid status
  const EDetPidStatus tofStatus=GetTOFPIDStatus(track);
  if (tofStatus!=kDetPidOk) return 0.;

  //mismatch
  const EDetPidStatus tpcStatus=GetTPCPIDStatus(track);
  if (tpcStatus==kDetNoSignal) return 0.;
  
  const Double_t meanCorrFactor = 0.11/fTOFtail; // Correction factor on the mean because of the tail (should be ~ 0.1 with tail = 1.1)
  Bool_t mismatch = kTRUE/*, heavy = kTRUE*/;
  for (Int_t j=0; j<AliPID::kSPECIESC; j++) {
    AliPID::EParticleType type=AliPID::EParticleType(j);
    const Double_t nsigmas=GetNumberOfSigmasTOFold(track,type) + meanCorrFactor;
    
    if (TMath::Abs(nsigmas)<5.){
      const Double_t nsigmasTPC=GetNumberOfSigmasTPC(track,type);
      if (TMath::Abs(nsigmasTPC)<5.) mismatch=kFALSE;
    }
  }
  
  if (mismatch){
    return 1.;
  }
  
  return 0.;
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse:: GetHMPIDPIDStatus(const AliVTrack *track) const
{
  // compute HMPID pid status
  
  Int_t ch = track->GetHMPIDcluIdx()/1000000;
  Double_t HMPIDsignal = track->GetHMPIDsignal(); 
  
  if((track->GetStatus()&AliVTrack::kHMPIDpid)==0 || ch<0 || ch>6 || HMPIDsignal<0) return kDetNoSignal;
  
  return kDetPidOk;
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse:: GetPHOSPIDStatus(const AliVTrack */*track*/) const
{
  // compute PHOS pid status
  return kDetNoSignal;  
}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse:: GetEMCALPIDStatus(const AliVTrack *track) const
{
  // compute EMCAL pid status


  // Track matching
  const Int_t nMatchClus = track->GetEMCALcluster();
  if (nMatchClus<0) return kDetNoSignal;

  AliVCluster *matchedClus = (AliVCluster*)fCurrentEvent->GetCaloCluster(nMatchClus);

  if (!(matchedClus && matchedClus->IsEMCAL())) return kDetNoSignal;

  const Int_t charge = track->Charge();
  if (TMath::Abs(charge)!=1) return kDetNoSignal;

  if (!(fEMCALPIDParams && fEMCALPIDParams->At(AliPID::kElectron))) return kDetNoParams;
  
  return kDetPidOk;

}

//______________________________________________________________________________
AliPIDResponse::EDetPidStatus AliPIDResponse::GetPIDStatus(EDetector detector, const AliVTrack *track) const
{
  //
  // check pid status for a track
  //

  switch (detector){
    case kITS:   return GetITSPIDStatus(track);   break;
    case kTPC:   return GetTPCPIDStatus(track);   break;
    case kTRD:   return GetTRDPIDStatus(track);   break;
    case kTOF:   return GetTOFPIDStatus(track);   break;
    case kPHOS:  return GetPHOSPIDStatus(track);  break;
    case kEMCAL: return GetEMCALPIDStatus(track); break;
    case kHMPID: return GetHMPIDPIDStatus(track); break;
    default: return kDetNoSignal;
  }
  return kDetNoSignal;
  
}

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